summaryrefslogtreecommitdiffstats
path: root/src/VBox/Devices/PC/BIOS
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Devices/PC/BIOS')
-rw-r--r--src/VBox/Devices/PC/BIOS/Makefile.kmk214
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm19432
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum1
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm19198
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum1
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm19909
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum1
-rw-r--r--src/VBox/Devices/PC/BIOS/ahci.c1029
-rw-r--r--src/VBox/Devices/PC/BIOS/apm.c234
-rw-r--r--src/VBox/Devices/PC/BIOS/apm_pm.asm229
-rw-r--r--src/VBox/Devices/PC/BIOS/ata.c1233
-rw-r--r--src/VBox/Devices/PC/BIOS/ata.h200
-rw-r--r--src/VBox/Devices/PC/BIOS/bios.c212
-rw-r--r--src/VBox/Devices/PC/BIOS/biosint.h325
-rw-r--r--src/VBox/Devices/PC/BIOS/boot.c365
-rw-r--r--src/VBox/Devices/PC/BIOS/buslogic.c313
-rw-r--r--src/VBox/Devices/PC/BIOS/disk.c664
-rw-r--r--src/VBox/Devices/PC/BIOS/ebda.h405
-rw-r--r--src/VBox/Devices/PC/BIOS/eltorito.c1048
-rw-r--r--src/VBox/Devices/PC/BIOS/floppy.c1370
-rw-r--r--src/VBox/Devices/PC/BIOS/floppyt.c114
-rw-r--r--src/VBox/Devices/PC/BIOS/font8x8.inc133
-rw-r--r--src/VBox/Devices/PC/BIOS/inlines.h271
-rw-r--r--src/VBox/Devices/PC/BIOS/invop.c360
-rw-r--r--src/VBox/Devices/PC/BIOS/keyboard.c832
-rw-r--r--src/VBox/Devices/PC/BIOS/logo.c568
-rw-r--r--src/VBox/Devices/PC/BIOS/lsilogic.c537
-rw-r--r--src/VBox/Devices/PC/BIOS/makefile72
-rw-r--r--src/VBox/Devices/PC/BIOS/notes.txt211
-rw-r--r--src/VBox/Devices/PC/BIOS/orgs.asm2128
-rw-r--r--src/VBox/Devices/PC/BIOS/parallel.c101
-rw-r--r--src/VBox/Devices/PC/BIOS/pci32.c32
-rw-r--r--src/VBox/Devices/PC/BIOS/pcibio32.asm108
-rw-r--r--src/VBox/Devices/PC/BIOS/pcibios.c423
-rw-r--r--src/VBox/Devices/PC/BIOS/pcibios.inc372
-rw-r--r--src/VBox/Devices/PC/BIOS/pcicfg.inc6
-rw-r--r--src/VBox/Devices/PC/BIOS/pciutil.c220
-rw-r--r--src/VBox/Devices/PC/BIOS/pciutil.h48
-rw-r--r--src/VBox/Devices/PC/BIOS/pirq.inc487
-rw-r--r--src/VBox/Devices/PC/BIOS/pmode.inc91
-rw-r--r--src/VBox/Devices/PC/BIOS/pmsetup.inc75
-rw-r--r--src/VBox/Devices/PC/BIOS/post.c218
-rw-r--r--src/VBox/Devices/PC/BIOS/print.c306
-rw-r--r--src/VBox/Devices/PC/BIOS/ps2mouse.c462
-rw-r--r--src/VBox/Devices/PC/BIOS/scsi.c560
-rw-r--r--src/VBox/Devices/PC/BIOS/scsi.h91
-rw-r--r--src/VBox/Devices/PC/BIOS/serial.c138
-rw-r--r--src/VBox/Devices/PC/BIOS/smidmi.inc84
-rw-r--r--src/VBox/Devices/PC/BIOS/system.c897
-rw-r--r--src/VBox/Devices/PC/BIOS/timepci.c334
-rw-r--r--src/VBox/Devices/PC/BIOS/vbdmismi.inc37
-rw-r--r--src/VBox/Devices/PC/BIOS/vds.c128
-rw-r--r--src/VBox/Devices/PC/BIOS/vds.h132
-rw-r--r--src/VBox/Devices/PC/BIOS/virtio.c701
54 files changed, 77660 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..430af217
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/Makefile.kmk
@@ -0,0 +1,214 @@
+# $Id: Makefile.kmk $
+## @file
+# Sub-Makefile for the New BIOS ROM.
+#
+
+#
+# Copyright (C) 2012-2023 Oracle and/or its affiliates.
+#
+# This file is part of VirtualBox base platform packages, as
+# available from https://www.virtualbox.org.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation, in version 3 of the
+# License.
+#
+# This program 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <https://www.gnu.org/licenses>.
+#
+# SPDX-License-Identifier: GPL-3.0-only
+#
+
+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_WITH_VIRTIO_SCSI \
+ 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 \
+ virtio.c \
+ buslogic.c \
+ lsilogic.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)$$(TOOL_YASM_AS) -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 = VBoxR3Dll
+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)$$(TOOL_YASM_AS) -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..050ae0c2
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
@@ -0,0 +1,19432 @@
+; $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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: bios.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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 - ATA disk support.
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: eltorito.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: timepci.c
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: scsi.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; SCSI host adapter driver to boot from SCSI disks
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: ahci.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: virtio.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; VirtIO-SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2019-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: buslogic.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; BusLogic SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2021-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: lsilogic.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; LsiLogic SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2021-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: apm.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; APM BIOS support. Implements APM version 1.2.
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: pcibios.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PCI BIOS support.
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: pciutil.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Utility routines for calling the PCI BIOS.
+;
+;
+;
+; Copyright (C) 2011-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: vds.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Utility routines for calling the Virtual DMA Services.
+;
+;
+;
+; Copyright (C) 2011-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: __U4M.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: __U4D.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: __U8RS.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: __U8LS.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: fmemset.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: fmemcpy.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: pcibio32.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+
+;
+; Source file: apm_pm.asm
+;
+; $Id:
+; Protected-mode APM implementation.
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: orgs.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; ???
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: ASMBitLastSetU16.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; BiosCommonCode - ASMBitLastSetU16() - borrowed from IPRT.
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: pci32.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; 32-bit PCI BIOS wrapper.
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+
+
+
+section _DATA progbits vstart=0x0 align=1 ; size=0xf0 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0000 LB 0xf0 -> 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 0x95 -> 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 0x86 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc'
+_pktacc: ; 0xf006a LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 030h, 02bh, 0c1h, 079h, 0a1h, 088h
+ ; disGetNextSymbol 0xf0076 LB 0x7a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst'
+_softrst: ; 0xf0076 LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 03fh, 02dh, 001h, 03bh, 001h, 03bh
+ ; disGetNextSymbol 0xf0082 LB 0x6e -> off=0x0 cb=0000000000000018 uValue=00000000000f0082 '_dskacc'
+_dskacc: ; 0xf0082 LB 0x18
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 020h, 02ah, 0d5h, 02ah, 000h, 000h, 000h, 000h
+ db 0b5h, 077h, 0bbh, 078h, 073h, 087h, 01bh, 088h
+ ; disGetNextSymbol 0xf009a LB 0x56 -> off=0x0 cb=0000000000000056 uValue=00000000000f009a '_hbaacc'
+_hbaacc: ; 0xf009a LB 0x56
+ db 000h, 010h, 030h, 000h, 000h, 000h, 089h, 0a3h, 0d8h, 0a0h, 0b8h, 0a1h, 000h, 010h, 054h, 000h
+ db 000h, 000h, 089h, 0a3h, 0d8h, 0a0h, 0b8h, 0a1h, 04bh, 010h, 040h, 010h, 000h, 000h, 01ah, 09eh
+ db 094h, 09ch, 046h, 09dh, 0f4h, 01ah, 048h, 010h, 000h, 000h, 0f9h, 09ah, 0e0h, 094h, 052h, 096h
+ db 0ffh, 0ffh, 0ffh, 0ffh, 098h, 09eh, 072h, 09eh, 094h, 09ch, 046h, 09dh, 030h, 003h, 034h, 003h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h, 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h
+ db 0f3h, 000h, 000h, 000h, 000h, 000h
+
+section CONST progbits vstart=0xf0 align=1 ; size=0xcda class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf00f0 LB 0xcda -> off=0xcda cb=0000000000000000 uValue=00000000000f0dca 'bios_cvs_version_string'
+ db 'NMI Handler called', 00ah, 000h
+ db 'INT18: BOOT FAILURE', 00ah, 000h
+ db 'Bootfail', 000h
+ db '%s', 00ah, 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!', 00ah, 000h
+ db 'Could not read from the boot medium!', 00ah, 000h
+ db 'Please insert a bootable medium and reboot.', 00ah, 000h
+ db 'CDROM boot failure code : %04x', 00ah, 000h
+ db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 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_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
+ 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=0xdca align=1 ; size=0x3fa class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0dca LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0dca 'bios_cvs_version_string'
+bios_cvs_version_string: ; 0xf0dca LB 0x12
+ db 'VirtualBox 7.0.14', 000h
+ ; disGetNextSymbol 0xf0ddc LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0ddc '_bios_prefix_string'
+_bios_prefix_string: ; 0xf0ddc LB 0x8
+ db 'BIOS: ', 000h, 000h
+ ; disGetNextSymbol 0xf0de4 LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0de4 'isotag'
+isotag: ; 0xf0de4 LB 0x6
+ db 'CD001', 000h
+ ; disGetNextSymbol 0xf0dea LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0dea 'eltorito'
+eltorito: ; 0xf0dea LB 0x18
+ db 'EL TORITO SPECIFICATION', 000h
+ ; disGetNextSymbol 0xf0e02 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0e02 'drivetypes'
+drivetypes: ; 0xf0e02 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 0xf0e2a LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0e2a 'scan_to_scanascii'
+scan_to_scanascii: ; 0xf0e2a 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 0xf11a4 LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f11a4 'panic_msg_keyb_buffer_full'
+panic_msg_keyb_buffer_full: ; 0xf11a4 LB 0x20
+ db '%s: keyboard input buffer full', 00ah, 000h
+
+ ; Padding 0x43c bytes at 0xf11c4
+ times 1084 db 0
+
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x97d8 class=CODE group=AUTO
+ ; disGetNextSymbol 0xf1600 LB 0x97d8 -> off=0x0 cb=0000000000000064 uValue=00000000000f0000 'rom_scan'
+rom_scan: ; 0xf1600 LB 0x64
+ push bp ; 55 ; 0xf1600 post.c:106
+ mov bp, sp ; 89 e5 ; 0xf1601
+ push bx ; 53 ; 0xf1603
+ push cx ; 51 ; 0xf1604
+ push si ; 56 ; 0xf1605
+ push di ; 57 ; 0xf1606
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf1607
+ push ax ; 50 ; 0xf160a
+ push dx ; 52 ; 0xf160b
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf160c post.c:113
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf160f
+ jnc short 0165bh ; 73 47 ; 0xf1612
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf1614 post.c:114
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1619
+ mov es, ax ; 8e c0 ; 0xf161c post.c:116
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf161e
+ cmp word [es:bx], 0aa55h ; 26 81 3f 55 aa ; 0xf1621
+ jne short 01654h ; 75 2c ; 0xf1626
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1628 post.c:122
+ mov word [bp-010h], strict word 00003h ; c7 46 f0 03 00 ; 0xf162b
+ call far [bp-010h] ; ff 5e f0 ; 0xf1630 post.c:123
+ cli ; fa ; 0xf1633 post.c:124
+ mov ax, 0f000h ; b8 00 f0 ; 0xf1634 post.c:125
+ mov ds, ax ; 8e d8 ; 0xf1637
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf1639 post.c:130
+ mov al, byte [es:bx+002h] ; 26 8a 47 02 ; 0xf163c
+ add AL, strict byte 003h ; 04 03 ; 0xf1640
+ and AL, strict byte 0fch ; 24 fc ; 0xf1642
+ xor ah, ah ; 30 e4 ; 0xf1644 post.c:131
+ cwd ; 99 ; 0xf1646
+ sal dx, 002h ; c1 e2 02 ; 0xf1647
+ db 01bh, 0c2h
+ ; sbb ax, dx ; 1b c2 ; 0xf164a
+ sar ax, 002h ; c1 f8 02 ; 0xf164c
+ add word [bp-012h], ax ; 01 46 ee ; 0xf164f
+ jmp short 0160ch ; eb b8 ; 0xf1652 post.c:133
+ add word [bp-012h], 00080h ; 81 46 ee 80 00 ; 0xf1654 post.c:135
+ jmp short 0160ch ; eb b1 ; 0xf1659 post.c:137
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf165b post.c:138
+ pop di ; 5f ; 0xf165e
+ pop si ; 5e ; 0xf165f
+ pop cx ; 59 ; 0xf1660
+ pop bx ; 5b ; 0xf1661
+ pop bp ; 5d ; 0xf1662
+ retn ; c3 ; 0xf1663
+ ; disGetNextSymbol 0xf1664 LB 0x9774 -> off=0x0 cb=000000000000001b uValue=00000000000f0064 'inb_cmos'
+inb_cmos: ; 0xf1664 LB 0x1b
+ push bp ; 55 ; 0xf1664 bios.c:76
+ mov bp, sp ; 89 e5 ; 0xf1665
+ push dx ; 52 ; 0xf1667
+ mov AH, strict byte 070h ; b4 70 ; 0xf1668 bios.c:78
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf166a bios.c:80
+ jc short 01670h ; 72 02 ; 0xf166c
+ mov AH, strict byte 072h ; b4 72 ; 0xf166e bios.c:81
+ mov dl, ah ; 88 e2 ; 0xf1670 bios.c:82
+ xor dh, dh ; 30 f6 ; 0xf1672
+ out DX, AL ; ee ; 0xf1674
+ inc dx ; 42 ; 0xf1675 bios.c:83
+ in AL, DX ; ec ; 0xf1676
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1677
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1679 bios.c:84
+ pop dx ; 5a ; 0xf167c
+ pop bp ; 5d ; 0xf167d
+ retn ; c3 ; 0xf167e
+ ; disGetNextSymbol 0xf167f LB 0x9759 -> off=0x0 cb=000000000000001d uValue=00000000000f007f 'outb_cmos'
+outb_cmos: ; 0xf167f LB 0x1d
+ push bp ; 55 ; 0xf167f bios.c:86
+ mov bp, sp ; 89 e5 ; 0xf1680
+ push bx ; 53 ; 0xf1682
+ mov bl, dl ; 88 d3 ; 0xf1683
+ mov AH, strict byte 070h ; b4 70 ; 0xf1685 bios.c:88
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1687 bios.c:90
+ jc short 0168dh ; 72 02 ; 0xf1689
+ mov AH, strict byte 072h ; b4 72 ; 0xf168b bios.c:91
+ mov dl, ah ; 88 e2 ; 0xf168d bios.c:92
+ xor dh, dh ; 30 f6 ; 0xf168f
+ out DX, AL ; ee ; 0xf1691
+ inc dx ; 42 ; 0xf1692 bios.c:93
+ mov al, bl ; 88 d8 ; 0xf1693
+ out DX, AL ; ee ; 0xf1695
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1696 bios.c:94
+ pop bx ; 5b ; 0xf1699
+ pop bp ; 5d ; 0xf169a
+ retn ; c3 ; 0xf169b
+ ; disGetNextSymbol 0xf169c LB 0x973c -> off=0x0 cb=0000000000000025 uValue=00000000000f009c 'get_cmos_word'
+get_cmos_word: ; 0xf169c LB 0x25
+ push bp ; 55 ; 0xf169c bios.c:99
+ mov bp, sp ; 89 e5 ; 0xf169d
+ push bx ; 53 ; 0xf169f
+ push dx ; 52 ; 0xf16a0
+ mov dl, al ; 88 c2 ; 0xf16a1
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf16a3 bios.c:101
+ xor ah, ah ; 30 e4 ; 0xf16a5
+ call 01664h ; e8 ba ff ; 0xf16a7
+ xor ah, ah ; 30 e4 ; 0xf16aa
+ mov bx, ax ; 89 c3 ; 0xf16ac
+ sal bx, 008h ; c1 e3 08 ; 0xf16ae
+ mov al, dl ; 88 d0 ; 0xf16b1
+ call 01664h ; e8 ae ff ; 0xf16b3
+ xor ah, ah ; 30 e4 ; 0xf16b6
+ or ax, bx ; 09 d8 ; 0xf16b8
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf16ba bios.c:103
+ pop dx ; 5a ; 0xf16bd
+ pop bx ; 5b ; 0xf16be
+ pop bp ; 5d ; 0xf16bf
+ retn ; c3 ; 0xf16c0
+ ; disGetNextSymbol 0xf16c1 LB 0x9717 -> off=0x0 cb=0000000000000061 uValue=00000000000f00c1 'dummy_isr_function'
+dummy_isr_function: ; 0xf16c1 LB 0x61
+ push bp ; 55 ; 0xf16c1 bios.c:105
+ mov bp, sp ; 89 e5 ; 0xf16c2
+ push ax ; 50 ; 0xf16c4
+ mov CL, strict byte 0ffh ; b1 ff ; 0xf16c5 bios.c:113
+ mov AL, strict byte 00bh ; b0 0b ; 0xf16c7 bios.c:115
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf16c9
+ out DX, AL ; ee ; 0xf16cc
+ in AL, DX ; ec ; 0xf16cd bios.c:116
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16ce
+ mov bx, ax ; 89 c3 ; 0xf16d0
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf16d2
+ test al, al ; 84 c0 ; 0xf16d5 bios.c:117
+ je short 01713h ; 74 3a ; 0xf16d7
+ mov AL, strict byte 00bh ; b0 0b ; 0xf16d9 bios.c:118
+ mov dx, 000a0h ; ba a0 00 ; 0xf16db
+ out DX, AL ; ee ; 0xf16de
+ in AL, DX ; ec ; 0xf16df bios.c:119
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16e0
+ mov cx, ax ; 89 c1 ; 0xf16e2
+ test al, al ; 84 c0 ; 0xf16e4 bios.c:120
+ je short 016fbh ; 74 13 ; 0xf16e6
+ mov dx, 000a1h ; ba a1 00 ; 0xf16e8 bios.c:121
+ in AL, DX ; ec ; 0xf16eb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16ec
+ mov bl, cl ; 88 cb ; 0xf16ee bios.c:122
+ or al, bl ; 08 d8 ; 0xf16f0
+ out DX, AL ; ee ; 0xf16f2
+ mov AL, strict byte 020h ; b0 20 ; 0xf16f3 bios.c:123
+ mov dx, 000a0h ; ba a0 00 ; 0xf16f5
+ out DX, AL ; ee ; 0xf16f8
+ jmp short 0170ah ; eb 0f ; 0xf16f9 bios.c:124
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf16fb bios.c:125
+ in AL, DX ; ec ; 0xf16fe
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16ff
+ and bl, 0fbh ; 80 e3 fb ; 0xf1701 bios.c:126
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf1704
+ or al, bl ; 08 d8 ; 0xf1707 bios.c:127
+ out DX, AL ; ee ; 0xf1709
+ mov AL, strict byte 020h ; b0 20 ; 0xf170a bios.c:129
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf170c
+ out DX, AL ; ee ; 0xf170f
+ mov cl, byte [bp-002h] ; 8a 4e fe ; 0xf1710 bios.c:130
+ mov bx, strict word 0006bh ; bb 6b 00 ; 0xf1713 bios.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1716
+ mov es, ax ; 8e c0 ; 0xf1719
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf171b
+ mov sp, bp ; 89 ec ; 0xf171e bios.c:133
+ pop bp ; 5d ; 0xf1720
+ retn ; c3 ; 0xf1721
+ ; disGetNextSymbol 0xf1722 LB 0x96b6 -> off=0x0 cb=0000000000000012 uValue=00000000000f0122 'nmi_handler_msg'
+nmi_handler_msg: ; 0xf1722 LB 0x12
+ push bp ; 55 ; 0xf1722 bios.c:136
+ mov bp, sp ; 89 e5 ; 0xf1723
+ push 000f0h ; 68 f0 00 ; 0xf1725 bios.c:138
+ push strict byte 00007h ; 6a 07 ; 0xf1728
+ call 01953h ; e8 26 02 ; 0xf172a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf172d
+ mov sp, bp ; 89 ec ; 0xf1730 bios.c:139
+ pop bp ; 5d ; 0xf1732
+ retn ; c3 ; 0xf1733
+ ; disGetNextSymbol 0xf1734 LB 0x96a4 -> off=0x0 cb=000000000000002d uValue=00000000000f0134 'int18_panic_msg'
+int18_panic_msg: ; 0xf1734 LB 0x2d
+ push bp ; 55 ; 0xf1734 bios.c:141
+ mov bp, sp ; 89 e5 ; 0xf1735
+ mov bx, 00ddch ; bb dc 0d ; 0xf1737 bios.c:143
+ mov cx, ds ; 8c d9 ; 0xf173a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf173c
+ call 01910h ; e8 ce 01 ; 0xf173f
+ push 00104h ; 68 04 01 ; 0xf1742
+ push strict byte 00004h ; 6a 04 ; 0xf1745
+ call 01953h ; e8 09 02 ; 0xf1747
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf174a
+ mov bx, 00119h ; bb 19 01 ; 0xf174d bios.c:144
+ mov dx, 0040fh ; ba 0f 04 ; 0xf1750
+ mov al, byte [bx] ; 8a 07 ; 0xf1753
+ out DX, AL ; ee ; 0xf1755
+ inc bx ; 43 ; 0xf1756
+ mov al, byte [bx] ; 8a 07 ; 0xf1757
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xf1759
+ jne short 01755h ; 75 f8 ; 0xf175b
+ mov sp, bp ; 89 ec ; 0xf175d bios.c:145
+ pop bp ; 5d ; 0xf175f
+ retn ; c3 ; 0xf1760
+ ; disGetNextSymbol 0xf1761 LB 0x9677 -> off=0x0 cb=0000000000000020 uValue=00000000000f0161 'log_bios_start'
+log_bios_start: ; 0xf1761 LB 0x20
+ push bp ; 55 ; 0xf1761 bios.c:147
+ mov bp, sp ; 89 e5 ; 0xf1762
+ mov bx, 00ddch ; bb dc 0d ; 0xf1764 bios.c:152
+ mov cx, ds ; 8c d9 ; 0xf1767
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf1769
+ call 01910h ; e8 a1 01 ; 0xf176c
+ push 00dcah ; 68 ca 0d ; 0xf176f
+ push 00122h ; 68 22 01 ; 0xf1772
+ push strict byte 00004h ; 6a 04 ; 0xf1775
+ call 01953h ; e8 d9 01 ; 0xf1777
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf177a
+ mov sp, bp ; 89 ec ; 0xf177d bios.c:153
+ pop bp ; 5d ; 0xf177f
+ retn ; c3 ; 0xf1780
+ ; disGetNextSymbol 0xf1781 LB 0x9657 -> off=0x0 cb=0000000000000027 uValue=00000000000f0181 'print_bios_banner'
+print_bios_banner: ; 0xf1781 LB 0x27
+ push bp ; 55 ; 0xf1781 bios.c:172
+ mov bp, sp ; 89 e5 ; 0xf1782
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf1784 bios.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1787
+ mov es, ax ; 8e c0 ; 0xf178a
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf178c
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf178f bios.c:63
+ cmp ax, 01234h ; 3d 34 12 ; 0xf1794 bios.c:178
+ jne short 017a1h ; 75 08 ; 0xf1797
+ mov AL, strict byte 003h ; b0 03 ; 0xf1799 bios.c:181
+ mov AH, strict byte 000h ; b4 00 ; 0xf179b
+ int 010h ; cd 10 ; 0xf179d
+ jmp short 017a4h ; eb 03 ; 0xf179f bios.c:182
+ call 074beh ; e8 1a 5d ; 0xf17a1 bios.c:185
+ mov sp, bp ; 89 ec ; 0xf17a4 bios.c:212
+ pop bp ; 5d ; 0xf17a6
+ retn ; c3 ; 0xf17a7
+ ; disGetNextSymbol 0xf17a8 LB 0x9630 -> off=0x0 cb=000000000000003b uValue=00000000000f01a8 'send'
+send: ; 0xf17a8 LB 0x3b
+ push bp ; 55 ; 0xf17a8 print.c:82
+ mov bp, sp ; 89 e5 ; 0xf17a9
+ push bx ; 53 ; 0xf17ab
+ push cx ; 51 ; 0xf17ac
+ mov bx, ax ; 89 c3 ; 0xf17ad
+ mov cl, dl ; 88 d1 ; 0xf17af
+ test AL, strict byte 008h ; a8 08 ; 0xf17b1 print.c:90
+ je short 017bbh ; 74 06 ; 0xf17b3
+ mov al, dl ; 88 d0 ; 0xf17b5 print.c:91
+ mov dx, 00403h ; ba 03 04 ; 0xf17b7
+ out DX, AL ; ee ; 0xf17ba
+ test bl, 004h ; f6 c3 04 ; 0xf17bb print.c:92
+ je short 017c6h ; 74 06 ; 0xf17be
+ mov al, cl ; 88 c8 ; 0xf17c0 print.c:93
+ mov dx, 00504h ; ba 04 05 ; 0xf17c2
+ out DX, AL ; ee ; 0xf17c5
+ test bl, 002h ; f6 c3 02 ; 0xf17c6 print.c:95
+ je short 017dch ; 74 11 ; 0xf17c9
+ cmp cl, 00ah ; 80 f9 0a ; 0xf17cb print.c:96
+ jne short 017d6h ; 75 06 ; 0xf17ce
+ mov AL, strict byte 00dh ; b0 0d ; 0xf17d0 print.c:97
+ mov AH, strict byte 00eh ; b4 0e ; 0xf17d2
+ int 010h ; cd 10 ; 0xf17d4
+ mov al, cl ; 88 c8 ; 0xf17d6 print.c:98
+ mov AH, strict byte 00eh ; b4 0e ; 0xf17d8
+ int 010h ; cd 10 ; 0xf17da
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf17dc print.c:100
+ pop cx ; 59 ; 0xf17df
+ pop bx ; 5b ; 0xf17e0
+ pop bp ; 5d ; 0xf17e1
+ retn ; c3 ; 0xf17e2
+ ; disGetNextSymbol 0xf17e3 LB 0x95f5 -> off=0x0 cb=000000000000005f uValue=00000000000f01e3 'put_int'
+put_int: ; 0xf17e3 LB 0x5f
+ push bp ; 55 ; 0xf17e3 print.c:102
+ mov bp, sp ; 89 e5 ; 0xf17e4
+ push si ; 56 ; 0xf17e6
+ push di ; 57 ; 0xf17e7
+ push ax ; 50 ; 0xf17e8
+ push ax ; 50 ; 0xf17e9
+ mov si, ax ; 89 c6 ; 0xf17ea
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf17ec
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf17ef print.c:104
+ mov ax, dx ; 89 d0 ; 0xf17f2
+ cwd ; 99 ; 0xf17f4
+ idiv di ; f7 ff ; 0xf17f5
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf17f7
+ test ax, ax ; 85 c0 ; 0xf17fa print.c:105
+ je short 01808h ; 74 0a ; 0xf17fc
+ dec bx ; 4b ; 0xf17fe print.c:106
+ mov dx, ax ; 89 c2 ; 0xf17ff
+ mov ax, si ; 89 f0 ; 0xf1801
+ call 017e3h ; e8 dd ff ; 0xf1803
+ jmp short 01823h ; eb 1b ; 0xf1806 print.c:107
+ dec bx ; 4b ; 0xf1808 print.c:108
+ test bx, bx ; 85 db ; 0xf1809
+ jle short 01817h ; 7e 0a ; 0xf180b
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf180d print.c:109
+ mov ax, si ; 89 f0 ; 0xf1810
+ call 017a8h ; e8 93 ff ; 0xf1812
+ jmp short 01808h ; eb f1 ; 0xf1815
+ test cx, cx ; 85 c9 ; 0xf1817 print.c:110
+ je short 01823h ; 74 08 ; 0xf1819
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf181b print.c:111
+ mov ax, si ; 89 f0 ; 0xf181e
+ call 017a8h ; e8 85 ff ; 0xf1820
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1823 print.c:113
+ mov BL, strict byte 00ah ; b3 0a ; 0xf1826
+ mul bl ; f6 e3 ; 0xf1828
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf182a
+ sub bl, al ; 28 c3 ; 0xf182d
+ add bl, 030h ; 80 c3 30 ; 0xf182f
+ xor bh, bh ; 30 ff ; 0xf1832
+ mov dx, bx ; 89 da ; 0xf1834
+ mov ax, si ; 89 f0 ; 0xf1836
+ call 017a8h ; e8 6d ff ; 0xf1838
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf183b print.c:114
+ pop di ; 5f ; 0xf183e
+ pop si ; 5e ; 0xf183f
+ pop bp ; 5d ; 0xf1840
+ retn ; c3 ; 0xf1841
+ ; disGetNextSymbol 0xf1842 LB 0x9596 -> off=0x0 cb=000000000000005e uValue=00000000000f0242 'put_uint'
+put_uint: ; 0xf1842 LB 0x5e
+ push bp ; 55 ; 0xf1842 print.c:116
+ mov bp, sp ; 89 e5 ; 0xf1843
+ push si ; 56 ; 0xf1845
+ push di ; 57 ; 0xf1846
+ push ax ; 50 ; 0xf1847
+ push ax ; 50 ; 0xf1848
+ mov si, ax ; 89 c6 ; 0xf1849
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf184b
+ mov ax, dx ; 89 d0 ; 0xf184e print.c:118
+ xor dx, dx ; 31 d2 ; 0xf1850
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf1852
+ div di ; f7 f7 ; 0xf1855
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf1857
+ test ax, ax ; 85 c0 ; 0xf185a print.c:119
+ je short 01868h ; 74 0a ; 0xf185c
+ dec bx ; 4b ; 0xf185e print.c:120
+ mov dx, ax ; 89 c2 ; 0xf185f
+ mov ax, si ; 89 f0 ; 0xf1861
+ call 01842h ; e8 dc ff ; 0xf1863
+ jmp short 01883h ; eb 1b ; 0xf1866 print.c:121
+ dec bx ; 4b ; 0xf1868 print.c:122
+ test bx, bx ; 85 db ; 0xf1869
+ jle short 01877h ; 7e 0a ; 0xf186b
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf186d print.c:123
+ mov ax, si ; 89 f0 ; 0xf1870
+ call 017a8h ; e8 33 ff ; 0xf1872
+ jmp short 01868h ; eb f1 ; 0xf1875
+ test cx, cx ; 85 c9 ; 0xf1877 print.c:124
+ je short 01883h ; 74 08 ; 0xf1879
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf187b print.c:125
+ mov ax, si ; 89 f0 ; 0xf187e
+ call 017a8h ; e8 25 ff ; 0xf1880
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1883 print.c:127
+ mov DL, strict byte 00ah ; b2 0a ; 0xf1886
+ mul dl ; f6 e2 ; 0xf1888
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf188a
+ sub dl, al ; 28 c2 ; 0xf188d
+ add dl, 030h ; 80 c2 30 ; 0xf188f
+ xor dh, dh ; 30 f6 ; 0xf1892
+ mov ax, si ; 89 f0 ; 0xf1894
+ call 017a8h ; e8 0f ff ; 0xf1896
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1899 print.c:128
+ pop di ; 5f ; 0xf189c
+ pop si ; 5e ; 0xf189d
+ pop bp ; 5d ; 0xf189e
+ retn ; c3 ; 0xf189f
+ ; disGetNextSymbol 0xf18a0 LB 0x9538 -> off=0x0 cb=0000000000000070 uValue=00000000000f02a0 'put_luint'
+put_luint: ; 0xf18a0 LB 0x70
+ push bp ; 55 ; 0xf18a0 print.c:130
+ mov bp, sp ; 89 e5 ; 0xf18a1
+ push si ; 56 ; 0xf18a3
+ push di ; 57 ; 0xf18a4
+ push ax ; 50 ; 0xf18a5
+ push ax ; 50 ; 0xf18a6
+ mov si, ax ; 89 c6 ; 0xf18a7
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf18a9
+ mov di, dx ; 89 d7 ; 0xf18ac
+ mov ax, bx ; 89 d8 ; 0xf18ae print.c:132
+ mov dx, cx ; 89 ca ; 0xf18b0
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf18b2
+ xor cx, cx ; 31 c9 ; 0xf18b5
+ call 0aa60h ; e8 a6 91 ; 0xf18b7
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf18ba
+ mov cx, dx ; 89 d1 ; 0xf18bd
+ mov dx, ax ; 89 c2 ; 0xf18bf print.c:133
+ or dx, cx ; 09 ca ; 0xf18c1
+ je short 018d4h ; 74 0f ; 0xf18c3
+ push word [bp+004h] ; ff 76 04 ; 0xf18c5 print.c:134
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf18c8
+ mov bx, ax ; 89 c3 ; 0xf18cb
+ mov ax, si ; 89 f0 ; 0xf18cd
+ call 018a0h ; e8 ce ff ; 0xf18cf
+ jmp short 018f1h ; eb 1d ; 0xf18d2 print.c:135
+ dec di ; 4f ; 0xf18d4 print.c:136
+ test di, di ; 85 ff ; 0xf18d5
+ jle short 018e3h ; 7e 0a ; 0xf18d7
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf18d9 print.c:137
+ mov ax, si ; 89 f0 ; 0xf18dc
+ call 017a8h ; e8 c7 fe ; 0xf18de
+ jmp short 018d4h ; eb f1 ; 0xf18e1
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf18e3 print.c:138
+ je short 018f1h ; 74 08 ; 0xf18e7
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18e9 print.c:139
+ mov ax, si ; 89 f0 ; 0xf18ec
+ call 017a8h ; e8 b7 fe ; 0xf18ee
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf18f1 print.c:141
+ mov DL, strict byte 00ah ; b2 0a ; 0xf18f4
+ mul dl ; f6 e2 ; 0xf18f6
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf18f8
+ sub dl, al ; 28 c2 ; 0xf18fb
+ add dl, 030h ; 80 c2 30 ; 0xf18fd
+ xor dh, dh ; 30 f6 ; 0xf1900
+ mov ax, si ; 89 f0 ; 0xf1902
+ call 017a8h ; e8 a1 fe ; 0xf1904
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1907 print.c:142
+ pop di ; 5f ; 0xf190a
+ pop si ; 5e ; 0xf190b
+ pop bp ; 5d ; 0xf190c
+ retn 00002h ; c2 02 00 ; 0xf190d
+ ; disGetNextSymbol 0xf1910 LB 0x94c8 -> off=0x0 cb=0000000000000021 uValue=00000000000f0310 'put_str'
+put_str: ; 0xf1910 LB 0x21
+ push bp ; 55 ; 0xf1910 print.c:144
+ mov bp, sp ; 89 e5 ; 0xf1911
+ push dx ; 52 ; 0xf1913
+ push si ; 56 ; 0xf1914
+ mov si, ax ; 89 c6 ; 0xf1915
+ mov es, cx ; 8e c1 ; 0xf1917 print.c:148
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf1919
+ test dl, dl ; 84 d2 ; 0xf191c
+ je short 0192ah ; 74 0a ; 0xf191e
+ xor dh, dh ; 30 f6 ; 0xf1920 print.c:149
+ mov ax, si ; 89 f0 ; 0xf1922
+ call 017a8h ; e8 81 fe ; 0xf1924
+ inc bx ; 43 ; 0xf1927 print.c:150
+ jmp short 01917h ; eb ed ; 0xf1928 print.c:151
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf192a print.c:152
+ pop si ; 5e ; 0xf192d
+ pop dx ; 5a ; 0xf192e
+ pop bp ; 5d ; 0xf192f
+ retn ; c3 ; 0xf1930
+ ; disGetNextSymbol 0xf1931 LB 0x94a7 -> off=0x0 cb=0000000000000022 uValue=00000000000f0331 'put_str_near'
+put_str_near: ; 0xf1931 LB 0x22
+ push bp ; 55 ; 0xf1931 print.c:154
+ mov bp, sp ; 89 e5 ; 0xf1932
+ push bx ; 53 ; 0xf1934
+ push cx ; 51 ; 0xf1935
+ mov cx, ax ; 89 c1 ; 0xf1936
+ mov bx, dx ; 89 d3 ; 0xf1938
+ mov al, byte [bx] ; 8a 07 ; 0xf193a print.c:158
+ test al, al ; 84 c0 ; 0xf193c
+ je short 0194ch ; 74 0c ; 0xf193e
+ xor ah, ah ; 30 e4 ; 0xf1940 print.c:159
+ mov dx, ax ; 89 c2 ; 0xf1942
+ mov ax, cx ; 89 c8 ; 0xf1944
+ call 017a8h ; e8 5f fe ; 0xf1946
+ inc bx ; 43 ; 0xf1949 print.c:160
+ jmp short 0193ah ; eb ee ; 0xf194a print.c:161
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf194c print.c:162
+ pop cx ; 59 ; 0xf194f
+ pop bx ; 5b ; 0xf1950
+ pop bp ; 5d ; 0xf1951
+ retn ; c3 ; 0xf1952
+ ; disGetNextSymbol 0xf1953 LB 0x9485 -> off=0x0 cb=0000000000000339 uValue=00000000000f0353 'bios_printf'
+bios_printf: ; 0xf1953 LB 0x339
+ push bp ; 55 ; 0xf1953 print.c:175
+ mov bp, sp ; 89 e5 ; 0xf1954
+ push bx ; 53 ; 0xf1956
+ push cx ; 51 ; 0xf1957
+ push dx ; 52 ; 0xf1958
+ push si ; 56 ; 0xf1959
+ push di ; 57 ; 0xf195a
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf195b
+ lea bx, [bp+008h] ; 8d 5e 08 ; 0xf195e print.c:183
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf1961
+ mov [bp-014h], ss ; 8c 56 ec ; 0xf1964
+ xor cx, cx ; 31 c9 ; 0xf1967 print.c:185
+ xor di, di ; 31 ff ; 0xf1969 print.c:186
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf196b print.c:188
+ and ax, strict word 00007h ; 25 07 00 ; 0xf196e
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf1971
+ jne short 01981h ; 75 0b ; 0xf1974
+ push 00126h ; 68 26 01 ; 0xf1976 print.c:189
+ push strict byte 00002h ; 6a 02 ; 0xf1979
+ call 01953h ; e8 d5 ff ; 0xf197b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf197e
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1981 print.c:192
+ mov dl, byte [bx] ; 8a 17 ; 0xf1984
+ test dl, dl ; 84 d2 ; 0xf1986
+ je short 019e5h ; 74 5b ; 0xf1988
+ cmp dl, 025h ; 80 fa 25 ; 0xf198a print.c:193
+ jne short 01997h ; 75 08 ; 0xf198d
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf198f print.c:194
+ xor di, di ; 31 ff ; 0xf1992 print.c:195
+ jmp near 01c6ah ; e9 d3 02 ; 0xf1994 print.c:197
+ test cx, cx ; 85 c9 ; 0xf1997
+ je short 019e8h ; 74 4d ; 0xf1999
+ cmp dl, 030h ; 80 fa 30 ; 0xf199b print.c:198
+ jc short 019b4h ; 72 14 ; 0xf199e
+ cmp dl, 039h ; 80 fa 39 ; 0xf19a0
+ jnbe short 019b4h ; 77 0f ; 0xf19a3
+ mov al, dl ; 88 d0 ; 0xf19a5 print.c:199
+ xor ah, ah ; 30 e4 ; 0xf19a7
+ imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf19a9
+ sub ax, strict word 00030h ; 2d 30 00 ; 0xf19ac
+ add di, ax ; 01 c7 ; 0xf19af
+ jmp near 01c6ah ; e9 b6 02 ; 0xf19b1 print.c:201
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf19b4 print.c:202
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf19b7
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf19ba
+ les bx, [bp-016h] ; c4 5e ea ; 0xf19be
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf19c1
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf19c5
+ cmp dl, 078h ; 80 fa 78 ; 0xf19c8 print.c:203
+ je short 019d2h ; 74 05 ; 0xf19cb
+ cmp dl, 058h ; 80 fa 58 ; 0xf19cd
+ jne short 01a2ch ; 75 5a ; 0xf19d0
+ test di, di ; 85 ff ; 0xf19d2 print.c:204
+ jne short 019d9h ; 75 03 ; 0xf19d4
+ mov di, strict word 00004h ; bf 04 00 ; 0xf19d6 print.c:205
+ cmp dl, 078h ; 80 fa 78 ; 0xf19d9 print.c:206
+ jne short 019ebh ; 75 0d ; 0xf19dc
+ mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf19de print.c:207
+ jmp short 019f0h ; eb 0b ; 0xf19e3 print.c:208
+ jmp near 01c70h ; e9 88 02 ; 0xf19e5
+ jmp near 01c62h ; e9 77 02 ; 0xf19e8
+ mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf19eb print.c:209
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf19f0 print.c:210
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf19f3
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf19f6
+ test ax, ax ; 85 c0 ; 0xf19f9
+ jl short 01a3dh ; 7c 40 ; 0xf19fb
+ mov cx, ax ; 89 c1 ; 0xf19fd print.c:211
+ sal cx, 002h ; c1 e1 02 ; 0xf19ff
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1a02
+ shr ax, CL ; d3 e8 ; 0xf1a05
+ xor ah, ah ; 30 e4 ; 0xf1a07
+ and AL, strict byte 00fh ; 24 0f ; 0xf1a09
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1a0b print.c:212
+ jnbe short 01a17h ; 77 07 ; 0xf1a0e
+ mov dx, ax ; 89 c2 ; 0xf1a10
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1a12
+ jmp short 01a1fh ; eb 08 ; 0xf1a15
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1a17
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1a1a
+ add dx, ax ; 01 c2 ; 0xf1a1d
+ xor dh, dh ; 30 f6 ; 0xf1a1f
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a21
+ call 017a8h ; e8 81 fd ; 0xf1a24
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1a27 print.c:213
+ jmp short 019f6h ; eb ca ; 0xf1a2a
+ cmp dl, 075h ; 80 fa 75 ; 0xf1a2c print.c:215
+ jne short 01a40h ; 75 0f ; 0xf1a2f
+ xor cx, cx ; 31 c9 ; 0xf1a31 print.c:216
+ mov bx, di ; 89 fb ; 0xf1a33
+ mov dx, ax ; 89 c2 ; 0xf1a35
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a37
+ call 01842h ; e8 05 fe ; 0xf1a3a
+ jmp near 01c5eh ; e9 1e 02 ; 0xf1a3d print.c:218
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1a40
+ jne short 01a4dh ; 75 08 ; 0xf1a43
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a45
+ cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1a48
+ je short 01a50h ; 74 03 ; 0xf1a4b
+ jmp near 01b21h ; e9 d1 00 ; 0xf1a4d
+ add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1a50 print.c:222
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a54 print.c:223
+ mov dl, byte [bx] ; 8a 17 ; 0xf1a57
+ mov word [bp-026h], ax ; 89 46 da ; 0xf1a59 print.c:225
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a5c print.c:226
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a5f
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a62
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a66
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a69
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf1a6d
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a70 print.c:227
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a73
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a76
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a7a
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a7d
+ mov word [bp-022h], ax ; 89 46 de ; 0xf1a81
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a84 print.c:228
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a87
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a8a
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a8e
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a91
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf1a95
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a98 print.c:229
+ je short 01aa2h ; 74 05 ; 0xf1a9b
+ cmp dl, 058h ; 80 fa 58 ; 0xf1a9d
+ jne short 01afch ; 75 5a ; 0xf1aa0
+ test di, di ; 85 ff ; 0xf1aa2 print.c:230
+ jne short 01aa9h ; 75 03 ; 0xf1aa4
+ mov di, strict word 00010h ; bf 10 00 ; 0xf1aa6 print.c:231
+ cmp dl, 078h ; 80 fa 78 ; 0xf1aa9 print.c:232
+ jne short 01ab5h ; 75 07 ; 0xf1aac
+ mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1aae print.c:233
+ jmp short 01abah ; eb 05 ; 0xf1ab3 print.c:234
+ mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1ab5 print.c:235
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1aba print.c:236
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1abd
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1ac0
+ test ax, ax ; 85 c0 ; 0xf1ac3
+ jl short 01b1eh ; 7c 57 ; 0xf1ac5
+ sal ax, 002h ; c1 e0 02 ; 0xf1ac7 print.c:237
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1aca
+ xor ax, ax ; 31 c0 ; 0xf1acd
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1acf
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1ad2
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf1ad5
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1ad8
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf1adb
+ mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1ade
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf1ae1
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1ae4
+ call 0aa90h ; e8 a6 8f ; 0xf1ae7
+ mov ax, dx ; 89 d0 ; 0xf1aea
+ xor ah, dh ; 30 f4 ; 0xf1aec
+ and AL, strict byte 00fh ; 24 0f ; 0xf1aee
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1af0 print.c:238
+ jnbe short 01afeh ; 77 09 ; 0xf1af3
+ mov dx, ax ; 89 c2 ; 0xf1af5
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1af7
+ jmp short 01b06h ; eb 0a ; 0xf1afa
+ jmp short 01b13h ; eb 15 ; 0xf1afc
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1afe
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1b01
+ add dx, ax ; 01 c2 ; 0xf1b04
+ xor dh, dh ; 30 f6 ; 0xf1b06
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b08
+ call 017a8h ; e8 9a fc ; 0xf1b0b
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1b0e print.c:239
+ jmp short 01ac0h ; eb ad ; 0xf1b11
+ push 0012eh ; 68 2e 01 ; 0xf1b13 print.c:241
+ push strict byte 00007h ; 6a 07 ; 0xf1b16
+ call 01953h ; e8 38 fe ; 0xf1b18
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1b1b
+ jmp near 01c5eh ; e9 3d 01 ; 0xf1b1e print.c:244
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf1b21
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1b24
+ jne short 01b7dh ; 75 54 ; 0xf1b27
+ inc word [bp+006h] ; ff 46 06 ; 0xf1b29 print.c:245
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1b2c print.c:246
+ mov dl, byte [si] ; 8a 14 ; 0xf1b2f
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b31 print.c:247
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b34
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b37
+ les si, [bp-016h] ; c4 76 ea ; 0xf1b3b
+ mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1b3e
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1b42
+ cmp dl, 064h ; 80 fa 64 ; 0xf1b45 print.c:248
+ jne short 01b76h ; 75 2c ; 0xf1b48
+ test byte [bp-00dh], 080h ; f6 46 f3 80 ; 0xf1b4a print.c:249
+ je short 01b65h ; 74 15 ; 0xf1b4e
+ push strict byte 00001h ; 6a 01 ; 0xf1b50 print.c:250
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1b52
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf1b55
+ neg cx ; f7 d9 ; 0xf1b58
+ neg ax ; f7 d8 ; 0xf1b5a
+ sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1b5c
+ mov dx, bx ; 89 da ; 0xf1b5f
+ mov bx, ax ; 89 c3 ; 0xf1b61
+ jmp short 01b6eh ; eb 09 ; 0xf1b63 print.c:251
+ push strict byte 00000h ; 6a 00 ; 0xf1b65 print.c:252
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf1b67
+ mov dx, di ; 89 fa ; 0xf1b6a
+ mov cx, ax ; 89 c1 ; 0xf1b6c
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b6e
+ call 018a0h ; e8 2c fd ; 0xf1b71
+ jmp short 01b1eh ; eb a8 ; 0xf1b74 print.c:254
+ cmp dl, 075h ; 80 fa 75 ; 0xf1b76
+ jne short 01b7fh ; 75 04 ; 0xf1b79
+ jmp short 01b65h ; eb e8 ; 0xf1b7b
+ jmp short 01be5h ; eb 66 ; 0xf1b7d
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b7f print.c:257
+ je short 01b89h ; 74 05 ; 0xf1b82
+ cmp dl, 058h ; 80 fa 58 ; 0xf1b84
+ jne short 01b1eh ; 75 95 ; 0xf1b87
+ test di, di ; 85 ff ; 0xf1b89 print.c:259
+ jne short 01b90h ; 75 03 ; 0xf1b8b
+ mov di, strict word 00008h ; bf 08 00 ; 0xf1b8d print.c:260
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b90 print.c:261
+ jne short 01b9ch ; 75 07 ; 0xf1b93
+ mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1b95 print.c:262
+ jmp short 01ba1h ; eb 05 ; 0xf1b9a print.c:263
+ mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1b9c print.c:264
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1ba1 print.c:265
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1ba4
+ cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf1ba7
+ jl short 01c07h ; 7c 5a ; 0xf1bab
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1bad print.c:266
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf1bb0
+ sal cx, 002h ; c1 e1 02 ; 0xf1bb3
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1bb6
+ jcxz 01bc1h ; e3 06 ; 0xf1bb9
+ shr dx, 1 ; d1 ea ; 0xf1bbb
+ rcr ax, 1 ; d1 d8 ; 0xf1bbd
+ loop 01bbbh ; e2 fa ; 0xf1bbf
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf1bc1
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1bc4 print.c:267
+ jnbe short 01bd0h ; 77 07 ; 0xf1bc7
+ mov dx, ax ; 89 c2 ; 0xf1bc9
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1bcb
+ jmp short 01bd8h ; eb 08 ; 0xf1bce
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1bd0
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1bd3
+ add dx, ax ; 01 c2 ; 0xf1bd6
+ xor dh, dh ; 30 f6 ; 0xf1bd8
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bda
+ call 017a8h ; e8 c8 fb ; 0xf1bdd
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1be0 print.c:268
+ jmp short 01ba7h ; eb c2 ; 0xf1be3
+ cmp dl, 064h ; 80 fa 64 ; 0xf1be5 print.c:271
+ jne short 01c09h ; 75 1f ; 0xf1be8
+ test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1bea print.c:272
+ je short 01bfah ; 74 0a ; 0xf1bee
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1bf0 print.c:273
+ neg dx ; f7 da ; 0xf1bf3
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf1bf5
+ jmp short 01c01h ; eb 07 ; 0xf1bf8 print.c:274
+ xor cx, cx ; 31 c9 ; 0xf1bfa print.c:275
+ mov bx, di ; 89 fb ; 0xf1bfc
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1bfe
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c01
+ call 017e3h ; e8 dc fb ; 0xf1c04
+ jmp short 01c5eh ; eb 55 ; 0xf1c07 print.c:277
+ cmp dl, 073h ; 80 fa 73 ; 0xf1c09
+ jne short 01c1bh ; 75 0d ; 0xf1c0c
+ mov cx, ds ; 8c d9 ; 0xf1c0e print.c:278
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf1c10
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c13
+ call 01910h ; e8 f7 fc ; 0xf1c16
+ jmp short 01c5eh ; eb 43 ; 0xf1c19 print.c:280
+ cmp dl, 053h ; 80 fa 53 ; 0xf1c1b
+ jne short 01c41h ; 75 21 ; 0xf1c1e
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1c20 print.c:281
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1c23
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1c26 print.c:282
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c29
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1c2c
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1c30
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1c33
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1c37
+ mov bx, ax ; 89 c3 ; 0xf1c3a print.c:283
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf1c3c
+ jmp short 01c13h ; eb d2 ; 0xf1c3f
+ cmp dl, 063h ; 80 fa 63 ; 0xf1c41 print.c:285
+ jne short 01c53h ; 75 0d ; 0xf1c44
+ mov dl, byte [bp-010h] ; 8a 56 f0 ; 0xf1c46 print.c:286
+ xor dh, dh ; 30 f6 ; 0xf1c49
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c4b
+ call 017a8h ; e8 57 fb ; 0xf1c4e
+ jmp short 01c5eh ; eb 0b ; 0xf1c51 print.c:288
+ push 0014fh ; 68 4f 01 ; 0xf1c53 print.c:289
+ push strict byte 00007h ; 6a 07 ; 0xf1c56
+ call 01953h ; e8 f8 fc ; 0xf1c58
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c5b
+ xor cx, cx ; 31 c9 ; 0xf1c5e print.c:290
+ jmp short 01c6ah ; eb 08 ; 0xf1c60 print.c:293
+ xor dh, dh ; 30 f6 ; 0xf1c62 print.c:294
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c64
+ call 017a8h ; e8 3e fb ; 0xf1c67
+ inc word [bp+006h] ; ff 46 06 ; 0xf1c6a print.c:296
+ jmp near 01981h ; e9 11 fd ; 0xf1c6d print.c:297
+ xor ax, ax ; 31 c0 ; 0xf1c70 print.c:298
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1c72
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c75
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1c78 print.c:299
+ je short 01c82h ; 74 04 ; 0xf1c7c
+ cli ; fa ; 0xf1c7e print.c:301
+ hlt ; f4 ; 0xf1c7f print.c:302
+ jmp short 01c7fh ; eb fd ; 0xf1c80
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1c82 print.c:304
+ pop di ; 5f ; 0xf1c85
+ pop si ; 5e ; 0xf1c86
+ pop dx ; 5a ; 0xf1c87
+ pop cx ; 59 ; 0xf1c88
+ pop bx ; 5b ; 0xf1c89
+ pop bp ; 5d ; 0xf1c8a
+ retn ; c3 ; 0xf1c8b
+ ; disGetNextSymbol 0xf1c8c LB 0x914c -> off=0x0 cb=00000000000000e5 uValue=00000000000f068c 'ata_init'
+ata_init: ; 0xf1c8c LB 0xe5
+ push si ; 56 ; 0xf1c8c ata.c:89
+ push bp ; 55 ; 0xf1c8d
+ mov bp, sp ; 89 e5 ; 0xf1c8e
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1c90 ata.c:58
+ mov si, strict word 00040h ; be 40 00 ; 0xf1c93
+ mov es, si ; 8e c6 ; 0xf1c96
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf1c98
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf1c9b ata.c:59
+ mov dx, bx ; 89 da ; 0xf1c9e
+ xor al, al ; 30 c0 ; 0xf1ca0 ata.c:97
+ jmp short 01ca8h ; eb 04 ; 0xf1ca2
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf1ca4
+ jnc short 01cd1h ; 73 29 ; 0xf1ca6
+ mov bl, al ; 88 c3 ; 0xf1ca8 ata.c:98
+ xor bh, bh ; 30 ff ; 0xf1caa
+ imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf1cac
+ mov es, dx ; 8e c2 ; 0xf1caf
+ add bx, si ; 01 f3 ; 0xf1cb1
+ mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf1cb3
+ mov word [es:bx+0027ah], strict word 00000h ; 26 c7 87 7a 02 00 00 ; 0xf1cb9 ata.c:99
+ mov word [es:bx+0027ch], strict word 00000h ; 26 c7 87 7c 02 00 00 ; 0xf1cc0 ata.c:100
+ mov byte [es:bx+00279h], 000h ; 26 c6 87 79 02 00 ; 0xf1cc7 ata.c:101
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1ccd ata.c:102
+ jmp short 01ca4h ; eb d3 ; 0xf1ccf
+ xor al, al ; 30 c0 ; 0xf1cd1 ata.c:105
+ jmp short 01cd9h ; eb 04 ; 0xf1cd3
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf1cd5
+ jnc short 01d40h ; 73 67 ; 0xf1cd7
+ mov bl, al ; 88 c3 ; 0xf1cd9 ata.c:106
+ xor bh, bh ; 30 ff ; 0xf1cdb
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1cdd
+ mov es, dx ; 8e c2 ; 0xf1ce0
+ add bx, si ; 01 f3 ; 0xf1ce2
+ mov word [es:bx+01eh], strict word 00000h ; 26 c7 47 1e 00 00 ; 0xf1ce4
+ mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf1cea ata.c:108
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf1cf0 ata.c:110
+ mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf1cf5 ata.c:111
+ mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf1cfb ata.c:112
+ mov word [es:bx+026h], strict word 00000h ; 26 c7 47 26 00 00 ; 0xf1d00 ata.c:113
+ mov word [es:bx+028h], strict word 00000h ; 26 c7 47 28 00 00 ; 0xf1d06 ata.c:114
+ mov word [es:bx+02ah], strict word 00000h ; 26 c7 47 2a 00 00 ; 0xf1d0c ata.c:115
+ mov word [es:bx+02ch], strict word 00000h ; 26 c7 47 2c 00 00 ; 0xf1d12 ata.c:116
+ mov word [es:bx+02eh], strict word 00000h ; 26 c7 47 2e 00 00 ; 0xf1d18 ata.c:117
+ mov word [es:bx+030h], strict word 00000h ; 26 c7 47 30 00 00 ; 0xf1d1e ata.c:118
+ mov word [es:bx+038h], strict word 00000h ; 26 c7 47 38 00 00 ; 0xf1d24 ata.c:119
+ mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00 ; 0xf1d2a
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf1d30
+ mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00 ; 0xf1d36
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1d3c ata.c:120
+ jmp short 01cd5h ; eb 95 ; 0xf1d3e
+ xor al, al ; 30 c0 ; 0xf1d40 ata.c:123
+ jmp short 01d48h ; eb 04 ; 0xf1d42
+ cmp AL, strict byte 014h ; 3c 14 ; 0xf1d44
+ jnc short 01d60h ; 73 18 ; 0xf1d46
+ mov bl, al ; 88 c3 ; 0xf1d48 ata.c:124
+ xor bh, bh ; 30 ff ; 0xf1d4a
+ mov es, dx ; 8e c2 ; 0xf1d4c
+ add bx, si ; 01 f3 ; 0xf1d4e
+ mov byte [es:bx+0024fh], 014h ; 26 c6 87 4f 02 14 ; 0xf1d50
+ mov byte [es:bx+00264h], 014h ; 26 c6 87 64 02 14 ; 0xf1d56 ata.c:125
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1d5c ata.c:126
+ jmp short 01d44h ; eb e4 ; 0xf1d5e
+ mov es, dx ; 8e c2 ; 0xf1d60 ata.c:128
+ mov byte [es:si+0024eh], 000h ; 26 c6 84 4e 02 00 ; 0xf1d62
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf1d68 ata.c:129
+ pop bp ; 5d ; 0xf1d6e ata.c:130
+ pop si ; 5e ; 0xf1d6f
+ retn ; c3 ; 0xf1d70
+ ; disGetNextSymbol 0xf1d71 LB 0x9067 -> off=0x0 cb=00000000000000dd uValue=00000000000f0771 'ata_reset'
+ata_reset: ; 0xf1d71 LB 0xdd
+ push bp ; 55 ; 0xf1d71 ata.c:138
+ mov bp, sp ; 89 e5 ; 0xf1d72
+ push bx ; 53 ; 0xf1d74
+ push cx ; 51 ; 0xf1d75
+ push dx ; 52 ; 0xf1d76
+ push si ; 56 ; 0xf1d77
+ push di ; 57 ; 0xf1d78
+ push ax ; 50 ; 0xf1d79
+ push ax ; 50 ; 0xf1d7a
+ push ax ; 50 ; 0xf1d7b
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d7c ata.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1d7f
+ mov es, ax ; 8e c0 ; 0xf1d82
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf1d84
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf1d87 ata.c:59
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf1d8a
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1d8d ata.c:147
+ shr ax, 1 ; d1 e8 ; 0xf1d90
+ mov ah, byte [bp-010h] ; 8a 66 f0 ; 0xf1d92 ata.c:148
+ and ah, 001h ; 80 e4 01 ; 0xf1d95
+ mov byte [bp-00ch], ah ; 88 66 f4 ; 0xf1d98
+ xor ah, ah ; 30 e4 ; 0xf1d9b ata.c:150
+ imul bx, ax, strict byte 00006h ; 6b d8 06 ; 0xf1d9d
+ mov es, dx ; 8e c2 ; 0xf1da0
+ add bx, di ; 01 fb ; 0xf1da2
+ mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf1da4
+ mov si, word [es:bx+0027ch] ; 26 8b b7 7c 02 ; 0xf1da9 ata.c:151
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1dae ata.c:156
+ mov AL, strict byte 00eh ; b0 0e ; 0xf1db1
+ out DX, AL ; ee ; 0xf1db3
+ mov bx, 000ffh ; bb ff 00 ; 0xf1db4 ata.c:159
+ dec bx ; 4b ; 0xf1db7 ata.c:160
+ test bx, bx ; 85 db ; 0xf1db8
+ jbe short 01dc8h ; 76 0c ; 0xf1dba
+ mov dx, cx ; 89 ca ; 0xf1dbc ata.c:161
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1dbe
+ in AL, DX ; ec ; 0xf1dc1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1dc2
+ test AL, strict byte 080h ; a8 80 ; 0xf1dc4 ata.c:162
+ je short 01db7h ; 74 ef ; 0xf1dc6
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1dc8 ata.c:167
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1dcb
+ out DX, AL ; ee ; 0xf1dcd
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf1dce ata.c:170
+ dec bx ; 4b ; 0xf1dd1 ata.c:171
+ test bx, bx ; 85 db ; 0xf1dd2
+ jbe short 01dech ; 76 16 ; 0xf1dd4
+ mov dx, cx ; 89 ca ; 0xf1dd6 ata.c:172
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1dd8
+ in AL, DX ; ec ; 0xf1ddb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1ddc
+ test AL, strict byte 080h ; a8 80 ; 0xf1dde ata.c:173
+ je short 01dech ; 74 0a ; 0xf1de0
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1de2 ata.c:175
+ dec ax ; 48 ; 0xf1de5 ata.c:176
+ test ax, ax ; 85 c0 ; 0xf1de6
+ jnbe short 01de5h ; 77 fb ; 0xf1de8
+ jmp short 01dd1h ; eb e5 ; 0xf1dea ata.c:179
+ imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c ; 0xf1dec ata.c:181
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf1df0
+ add bx, di ; 01 fb ; 0xf1df3
+ cmp byte [es:bx+01eh], 000h ; 26 80 7f 1e 00 ; 0xf1df5
+ je short 01e3eh ; 74 42 ; 0xf1dfa
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1dfc ata.c:184
+ je short 01e07h ; 74 05 ; 0xf1e00
+ mov ax, 000b0h ; b8 b0 00 ; 0xf1e02
+ jmp short 01e0ah ; eb 03 ; 0xf1e05
+ mov ax, 000a0h ; b8 a0 00 ; 0xf1e07
+ mov dx, cx ; 89 ca ; 0xf1e0a
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1e0c
+ out DX, AL ; ee ; 0xf1e0f
+ mov dx, cx ; 89 ca ; 0xf1e10 ata.c:185
+ inc dx ; 42 ; 0xf1e12
+ inc dx ; 42 ; 0xf1e13
+ in AL, DX ; ec ; 0xf1e14
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e15
+ mov bx, ax ; 89 c3 ; 0xf1e17
+ mov dx, cx ; 89 ca ; 0xf1e19 ata.c:186
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1e1b
+ in AL, DX ; ec ; 0xf1e1e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e1f
+ cmp bl, 001h ; 80 fb 01 ; 0xf1e21 ata.c:188
+ jne short 01e3eh ; 75 18 ; 0xf1e24
+ cmp al, bl ; 38 d8 ; 0xf1e26
+ jne short 01e3eh ; 75 14 ; 0xf1e28
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf1e2a ata.c:190
+ dec bx ; 4b ; 0xf1e2d ata.c:191
+ test bx, bx ; 85 db ; 0xf1e2e
+ jbe short 01e3eh ; 76 0c ; 0xf1e30
+ mov dx, cx ; 89 ca ; 0xf1e32 ata.c:192
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e34
+ in AL, DX ; ec ; 0xf1e37
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e38
+ test AL, strict byte 040h ; a8 40 ; 0xf1e3a ata.c:193
+ je short 01e2dh ; 74 ef ; 0xf1e3c
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1e3e ata.c:200
+ mov AL, strict byte 008h ; b0 08 ; 0xf1e41
+ out DX, AL ; ee ; 0xf1e43
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1e44 ata.c:201
+ pop di ; 5f ; 0xf1e47
+ pop si ; 5e ; 0xf1e48
+ pop dx ; 5a ; 0xf1e49
+ pop cx ; 59 ; 0xf1e4a
+ pop bx ; 5b ; 0xf1e4b
+ pop bp ; 5d ; 0xf1e4c
+ retn ; c3 ; 0xf1e4d
+ ; disGetNextSymbol 0xf1e4e LB 0x8f8a -> off=0x0 cb=00000000000002b5 uValue=00000000000f084e 'ata_cmd_data_in'
+ata_cmd_data_in: ; 0xf1e4e LB 0x2b5
+ push bp ; 55 ; 0xf1e4e ata.c:215
+ mov bp, sp ; 89 e5 ; 0xf1e4f
+ push si ; 56 ; 0xf1e51
+ push di ; 57 ; 0xf1e52
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf1e53
+ push ax ; 50 ; 0xf1e56
+ push dx ; 52 ; 0xf1e57
+ push bx ; 53 ; 0xf1e58
+ push cx ; 51 ; 0xf1e59
+ mov es, dx ; 8e c2 ; 0xf1e5a ata.c:225
+ mov bx, ax ; 89 c3 ; 0xf1e5c
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1e5e
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf1e62
+ mov bl, al ; 88 c3 ; 0xf1e65 ata.c:227
+ xor bh, ah ; 30 e7 ; 0xf1e67
+ mov ax, bx ; 89 d8 ; 0xf1e69
+ cwd ; 99 ; 0xf1e6b
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf1e6c
+ sar ax, 1 ; d1 f8 ; 0xf1e6e
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf1e70
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e73
+ add di, ax ; 01 c7 ; 0xf1e76
+ mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf1e78
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1e7d
+ mov ax, word [es:di+0027ch] ; 26 8b 85 7c 02 ; 0xf1e80 ata.c:228
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1e85
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1e88 ata.c:230
+ add bx, word [bp-016h] ; 03 5e ea ; 0xf1e8b
+ mov ax, word [es:bx+024h] ; 26 8b 47 24 ; 0xf1e8e
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e92
+ test ax, ax ; 85 c0 ; 0xf1e95 ata.c:231
+ jne short 01ea0h ; 75 07 ; 0xf1e97
+ mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1e99 ata.c:237
+ jmp short 01ea3h ; eb 03 ; 0xf1e9e ata.c:238
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1ea0 ata.c:244
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ea3 ata.c:247
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ea6
+ in AL, DX ; ec ; 0xf1ea9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1eaa
+ test AL, strict byte 080h ; a8 80 ; 0xf1eac ata.c:248
+ je short 01ebfh ; 74 0f ; 0xf1eae
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1eb0 ata.c:252
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1eb3
+ mov AL, strict byte 008h ; b0 08 ; 0xf1eb6
+ out DX, AL ; ee ; 0xf1eb8
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1eb9 ata.c:253
+ jmp near 020fch ; e9 3d 02 ; 0xf1ebc
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1ebf ata.c:256
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1ec2
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1ec5
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1ec9
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1ecc
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1ed0
+ mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1ed3 ata.c:257
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1ed7
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1eda ata.c:258
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1ede
+ mov ah, byte [es:bx+014h] ; 26 8a 67 14 ; 0xf1ee1 ata.c:259
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1ee5 ata.c:262
+ test al, al ; 84 c0 ; 0xf1ee8
+ je short 01eefh ; 74 03 ; 0xf1eea
+ jmp near 01fd2h ; e9 e3 00 ; 0xf1eec
+ xor bx, bx ; 31 db ; 0xf1eef ata.c:263
+ xor dx, dx ; 31 d2 ; 0xf1ef1
+ xor ah, ah ; 30 e4 ; 0xf1ef3
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ef5
+ mov cx, word [es:si] ; 26 8b 0c ; 0xf1ef8
+ add cx, word [bp-01ch] ; 03 4e e4 ; 0xf1efb
+ mov word [bp-014h], cx ; 89 4e ec ; 0xf1efe
+ adc bx, word [es:si+002h] ; 26 13 5c 02 ; 0xf1f01
+ adc dx, word [es:si+004h] ; 26 13 54 04 ; 0xf1f05
+ adc ax, word [es:si+006h] ; 26 13 44 06 ; 0xf1f09
+ test ax, ax ; 85 c0 ; 0xf1f0d
+ jnbe short 01f24h ; 77 13 ; 0xf1f0f
+ je short 01f16h ; 74 03 ; 0xf1f11
+ jmp near 01f88h ; e9 72 00 ; 0xf1f13
+ test dx, dx ; 85 d2 ; 0xf1f16
+ jnbe short 01f24h ; 77 0a ; 0xf1f18
+ jne short 01f88h ; 75 6c ; 0xf1f1a
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf1f1c
+ jnbe short 01f24h ; 77 02 ; 0xf1f20
+ jne short 01f88h ; 75 64 ; 0xf1f22
+ mov bx, si ; 89 f3 ; 0xf1f24 ata.c:265
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f26
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f2a
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f2e
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f32
+ mov si, strict word 00018h ; be 18 00 ; 0xf1f35
+ call 0aa90h ; e8 55 8b ; 0xf1f38
+ xor dh, dh ; 30 f6 ; 0xf1f3b
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf1f3d
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f40 ata.c:266
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f43
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f47
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f4b
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f4e
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f52
+ mov si, strict word 00020h ; be 20 00 ; 0xf1f55
+ call 0aa90h ; e8 35 8b ; 0xf1f58
+ mov bx, dx ; 89 d3 ; 0xf1f5b
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf1f5d ata.c:267
+ xor al, al ; 30 c0 ; 0xf1f60
+ shr ax, 008h ; c1 e8 08 ; 0xf1f62
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f65
+ inc dx ; 42 ; 0xf1f68
+ inc dx ; 42 ; 0xf1f69
+ out DX, AL ; ee ; 0xf1f6a
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f6b ata.c:268
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f6e
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf1f71
+ out DX, AL ; ee ; 0xf1f74
+ mov ax, bx ; 89 d8 ; 0xf1f75 ata.c:269
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f77
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1f7a
+ out DX, AL ; ee ; 0xf1f7d
+ shr ax, 008h ; c1 e8 08 ; 0xf1f7e ata.c:270
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f81
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf1f84
+ out DX, AL ; ee ; 0xf1f87
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1f88 ata.c:274
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f8b
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1f8e
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1f91
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f94 ata.c:275
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f98
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f9c
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f9f
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1fa3
+ mov si, strict word 00008h ; be 08 00 ; 0xf1fa6
+ call 0aa90h ; e8 e4 8a ; 0xf1fa9
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf1fac
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1faf ata.c:276
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1fb2
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1fb6
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1fba
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1fbd
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1fc1
+ mov si, strict word 00018h ; be 18 00 ; 0xf1fc4
+ call 0aa90h ; e8 c6 8a ; 0xf1fc7
+ mov ah, dl ; 88 d4 ; 0xf1fca
+ and ah, 00fh ; 80 e4 0f ; 0xf1fcc
+ or ah, 040h ; 80 cc 40 ; 0xf1fcf
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1fd2 ata.c:279
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1fd5
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1fd8
+ out DX, AL ; ee ; 0xf1fda
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fdb ata.c:280
+ inc dx ; 42 ; 0xf1fde
+ xor al, al ; 30 c0 ; 0xf1fdf
+ out DX, AL ; ee ; 0xf1fe1
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fe2 ata.c:281
+ inc dx ; 42 ; 0xf1fe5
+ inc dx ; 42 ; 0xf1fe6
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf1fe7
+ out DX, AL ; ee ; 0xf1fea
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1feb ata.c:282
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1fee
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1ff1
+ out DX, AL ; ee ; 0xf1ff4
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1ff5 ata.c:283
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ff8
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1ffb
+ mov al, bl ; 88 d8 ; 0xf1ffe
+ out DX, AL ; ee ; 0xf2000
+ mov dx, bx ; 89 da ; 0xf2001 ata.c:284
+ shr dx, 008h ; c1 ea 08 ; 0xf2003
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2006
+ add bx, strict byte 00005h ; 83 c3 05 ; 0xf2009
+ mov al, dl ; 88 d0 ; 0xf200c
+ mov dx, bx ; 89 da ; 0xf200e
+ out DX, AL ; ee ; 0xf2010
+ test byte [bp-008h], 001h ; f6 46 f8 01 ; 0xf2011 ata.c:285
+ je short 0201ch ; 74 05 ; 0xf2015
+ mov dx, 000b0h ; ba b0 00 ; 0xf2017
+ jmp short 0201fh ; eb 03 ; 0xf201a
+ mov dx, 000a0h ; ba a0 00 ; 0xf201c
+ mov al, ah ; 88 e0 ; 0xf201f
+ xor ah, ah ; 30 e4 ; 0xf2021
+ or ax, dx ; 09 d0 ; 0xf2023
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2025
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2028
+ out DX, AL ; ee ; 0xf202b
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf202c ata.c:286
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf202f
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2032
+ out DX, AL ; ee ; 0xf2035
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf2036 ata.c:288
+ cmp ax, 000c4h ; 3d c4 00 ; 0xf2039
+ je short 02043h ; 74 05 ; 0xf203c
+ cmp ax, strict word 00029h ; 3d 29 00 ; 0xf203e
+ jne short 0204dh ; 75 0a ; 0xf2041
+ mov si, word [bp-01ch] ; 8b 76 e4 ; 0xf2043 ata.c:289
+ mov word [bp-01ch], strict word 00001h ; c7 46 e4 01 00 ; 0xf2046 ata.c:290
+ jmp short 02050h ; eb 03 ; 0xf204b ata.c:291
+ mov si, strict word 00001h ; be 01 00 ; 0xf204d ata.c:292
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2050 ata.c:296
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2053
+ in AL, DX ; ec ; 0xf2056
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2057
+ mov bl, al ; 88 c3 ; 0xf2059
+ test AL, strict byte 080h ; a8 80 ; 0xf205b ata.c:297
+ jne short 02050h ; 75 f1 ; 0xf205d
+ test AL, strict byte 001h ; a8 01 ; 0xf205f ata.c:301
+ je short 02072h ; 74 0f ; 0xf2061
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2063 ata.c:304
+ 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 00002h ; b8 02 00 ; 0xf206c ata.c:305
+ jmp near 020fch ; e9 8a 00 ; 0xf206f
+ test bl, 008h ; f6 c3 08 ; 0xf2072 ata.c:306
+ jne short 02086h ; 75 0f ; 0xf2075
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2077 ata.c:309
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf207a
+ mov AL, strict byte 008h ; b0 08 ; 0xf207d
+ out DX, AL ; ee ; 0xf207f
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2080 ata.c:310
+ jmp near 020fch ; e9 76 00 ; 0xf2083
+ sti ; fb ; 0xf2086 ata.c:315
+ cmp di, 0f800h ; 81 ff 00 f8 ; 0xf2087 ata.c:320
+ jc short 0209ah ; 72 0d ; 0xf208b
+ sub di, 00800h ; 81 ef 00 08 ; 0xf208d ata.c:321
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2091
+ add ax, 00080h ; 05 80 00 ; 0xf2094
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf2097
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf209a ata.c:328
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf209d
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf20a0
+ rep insw ; f3 6d ; 0xf20a3
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf20a5 ata.c:329
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf20a8
+ add word [es:bx+018h], si ; 26 01 77 18 ; 0xf20ab
+ dec word [bp-01ch] ; ff 4e e4 ; 0xf20af ata.c:330
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf20b2 ata.c:332
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf20b5
+ in AL, DX ; ec ; 0xf20b8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf20b9
+ mov bl, al ; 88 c3 ; 0xf20bb
+ test AL, strict byte 080h ; a8 80 ; 0xf20bd ata.c:333
+ jne short 020b2h ; 75 f1 ; 0xf20bf
+ cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf20c1 ata.c:336
+ jne short 020dbh ; 75 14 ; 0xf20c5
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf20c7 ata.c:337
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf20c9
+ je short 020f1h ; 74 24 ; 0xf20cb
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20cd ata.c:341
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20d0
+ mov AL, strict byte 008h ; b0 08 ; 0xf20d3
+ out DX, AL ; ee ; 0xf20d5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf20d6 ata.c:342
+ jmp short 020fch ; eb 21 ; 0xf20d9
+ mov al, bl ; 88 d8 ; 0xf20db ata.c:347
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf20dd
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf20df
+ je short 02087h ; 74 a4 ; 0xf20e1
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20e3 ata.c:351
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20e6
+ mov AL, strict byte 008h ; b0 08 ; 0xf20e9
+ out DX, AL ; ee ; 0xf20eb
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf20ec ata.c:352
+ jmp short 020fch ; eb 0b ; 0xf20ef
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20f1 ata.c:358
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20f4
+ mov AL, strict byte 008h ; b0 08 ; 0xf20f7
+ out DX, AL ; ee ; 0xf20f9
+ xor ax, ax ; 31 c0 ; 0xf20fa ata.c:359
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf20fc ata.c:360
+ pop di ; 5f ; 0xf20ff
+ pop si ; 5e ; 0xf2100
+ pop bp ; 5d ; 0xf2101
+ retn ; c3 ; 0xf2102
+ ; disGetNextSymbol 0xf2103 LB 0x8cd5 -> off=0x0 cb=0000000000000094 uValue=00000000000f0b03 'ata_signature'
+ata_signature: ; 0xf2103 LB 0x94
+ push bp ; 55 ; 0xf2103 ata.c:366
+ mov bp, sp ; 89 e5 ; 0xf2104
+ push cx ; 51 ; 0xf2106
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf2107
+ mov cx, ax ; 89 c1 ; 0xf210a
+ mov al, bl ; 88 d8 ; 0xf210c
+ xor bx, bx ; 31 db ; 0xf210e ata.c:368
+ test al, al ; 84 c0 ; 0xf2110 ata.c:376
+ je short 02119h ; 74 05 ; 0xf2112
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2114
+ jmp short 0211ch ; eb 03 ; 0xf2117
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2119
+ mov dx, cx ; 89 ca ; 0xf211c
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf211e
+ out DX, AL ; ee ; 0xf2121
+ mov dx, cx ; 89 ca ; 0xf2122 ata.c:378
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2124
+ in AL, DX ; ec ; 0xf2127
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2128
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf212a
+ test AL, strict byte 080h ; a8 80 ; 0xf212d ata.c:379
+ jne short 02122h ; 75 f1 ; 0xf212f
+ mov dx, cx ; 89 ca ; 0xf2131 ata.c:387
+ inc dx ; 42 ; 0xf2133
+ inc dx ; 42 ; 0xf2134
+ in AL, DX ; ec ; 0xf2135
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2136
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2138
+ mov dx, cx ; 89 ca ; 0xf213b ata.c:388
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf213d
+ in AL, DX ; ec ; 0xf2140
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2141
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf2143 ata.c:389
+ jne short 0218fh ; 75 46 ; 0xf2147
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2149
+ jne short 0218fh ; 75 42 ; 0xf214b
+ mov dx, cx ; 89 ca ; 0xf214d ata.c:390
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf214f
+ in AL, DX ; ec ; 0xf2152
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2153
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2155
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2158
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf215b
+ mov dx, cx ; 89 ca ; 0xf215e ata.c:391
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2160
+ in AL, DX ; ec ; 0xf2163
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2164
+ mov dl, al ; 88 c2 ; 0xf2166
+ cmp byte [bp-008h], 014h ; 80 7e f8 14 ; 0xf2168 ata.c:398
+ jne short 02177h ; 75 09 ; 0xf216c
+ cmp AL, strict byte 0ebh ; 3c eb ; 0xf216e
+ jne short 02177h ; 75 05 ; 0xf2170
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf2172 ata.c:399
+ jmp short 0218fh ; eb 18 ; 0xf2175 ata.c:401
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf2177
+ jne short 0218ch ; 75 0f ; 0xf217b
+ test dl, dl ; 84 d2 ; 0xf217d
+ jne short 0218ch ; 75 0b ; 0xf217f
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2181 ata.c:402
+ je short 0218fh ; 74 08 ; 0xf2185
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf2187 ata.c:403
+ jmp short 0218fh ; eb 03 ; 0xf218a ata.c:408
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf218c ata.c:409
+ mov ax, bx ; 89 d8 ; 0xf218f ata.c:416
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2191
+ pop cx ; 59 ; 0xf2194
+ pop bp ; 5d ; 0xf2195
+ retn ; c3 ; 0xf2196
+ ; disGetNextSymbol 0xf2197 LB 0x8c41 -> off=0x0 cb=00000000000005ff uValue=00000000000f0b97 'ata_detect'
+ata_detect: ; 0xf2197 LB 0x5ff
+ push bp ; 55 ; 0xf2197 ata.c:418
+ mov bp, sp ; 89 e5 ; 0xf2198
+ push si ; 56 ; 0xf219a
+ push di ; 57 ; 0xf219b
+ sub sp, 0025ch ; 81 ec 5c 02 ; 0xf219c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf21a0 ata.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf21a3
+ mov es, ax ; 8e c0 ; 0xf21a6
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf21a8
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf21ab ata.c:59
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf21ae ata.c:441
+ mov es, ax ; 8e c0 ; 0xf21b1
+ mov word [bp-028h], bx ; 89 5e d8 ; 0xf21b3
+ mov word [bp-026h], ax ; 89 46 da ; 0xf21b6
+ mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf21b9 ata.c:444
+ mov word [es:bx+0027ah], 001f0h ; 26 c7 87 7a 02 f0 01 ; 0xf21bf ata.c:445
+ mov word [es:bx+0027ch], 003f0h ; 26 c7 87 7c 02 f0 03 ; 0xf21c6 ata.c:446
+ mov byte [es:bx+00279h], 00eh ; 26 c6 87 79 02 0e ; 0xf21cd ata.c:447
+ mov byte [es:bx+0027eh], 000h ; 26 c6 87 7e 02 00 ; 0xf21d3 ata.c:450
+ mov word [es:bx+00280h], 00170h ; 26 c7 87 80 02 70 01 ; 0xf21d9 ata.c:451
+ mov word [es:bx+00282h], 00370h ; 26 c7 87 82 02 70 03 ; 0xf21e0 ata.c:452
+ mov byte [es:bx+0027fh], 00fh ; 26 c6 87 7f 02 0f ; 0xf21e7 ata.c:453
+ mov byte [es:bx+00284h], 000h ; 26 c6 87 84 02 00 ; 0xf21ed ata.c:456
+ mov word [es:bx+00286h], 001e8h ; 26 c7 87 86 02 e8 01 ; 0xf21f3 ata.c:457
+ mov word [es:bx+00288h], 003e0h ; 26 c7 87 88 02 e0 03 ; 0xf21fa ata.c:458
+ mov byte [es:bx+00285h], 00ch ; 26 c6 87 85 02 0c ; 0xf2201 ata.c:459
+ mov byte [es:bx+0028ah], 000h ; 26 c6 87 8a 02 00 ; 0xf2207 ata.c:462
+ mov word [es:bx+0028ch], 00168h ; 26 c7 87 8c 02 68 01 ; 0xf220d ata.c:463
+ mov word [es:bx+0028eh], 00360h ; 26 c7 87 8e 02 60 03 ; 0xf2214 ata.c:464
+ mov byte [es:bx+0028bh], 00bh ; 26 c6 87 8b 02 0b ; 0xf221b ata.c:465
+ xor al, al ; 30 c0 ; 0xf2221 ata.c:472
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf2223
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf2226
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2229 ata.c:474
+ jmp near 02726h ; e9 f7 04 ; 0xf222c
+ test cl, cl ; 84 c9 ; 0xf222f ata.c:519
+ jne short 02290h ; 75 5d ; 0xf2231
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf2233 ata.c:520
+ mov AL, strict byte 00eh ; b0 0e ; 0xf2236
+ out DX, AL ; ee ; 0xf2238
+ mov bx, strict word 00020h ; bb 20 00 ; 0xf2239 ata.c:526
+ dec bx ; 4b ; 0xf223c ata.c:527
+ test bx, bx ; 85 db ; 0xf223d
+ jbe short 0224bh ; 76 0a ; 0xf223f
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf2241 ata.c:528
+ in AL, DX ; ec ; 0xf2244
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2245
+ test AL, strict byte 080h ; a8 80 ; 0xf2247 ata.c:529
+ je short 0223ch ; 74 f1 ; 0xf2249
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf224b ata.c:533
+ mov AL, strict byte 00ah ; b0 0a ; 0xf224e
+ out DX, AL ; ee ; 0xf2250
+ mov cl, byte [bp-00ah] ; 8a 4e f6 ; 0xf2251 ata.c:540
+ xor ch, ch ; 30 ed ; 0xf2254
+ xor bx, bx ; 31 db ; 0xf2256
+ mov dx, cx ; 89 ca ; 0xf2258
+ mov ax, si ; 89 f0 ; 0xf225a
+ call 02103h ; e8 a4 fe ; 0xf225c
+ mov ah, byte [bp-008h] ; 8a 66 f8 ; 0xf225f
+ mov byte [bp-02eh], ah ; 88 66 d2 ; 0xf2262
+ mov byte [bp-02dh], ch ; 88 6e d3 ; 0xf2265
+ imul bx, word [bp-02eh], strict byte 0001ch ; 6b 5e d2 1c ; 0xf2268
+ mov es, [bp-026h] ; 8e 46 da ; 0xf226c
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf226f
+ mov byte [es:bx+01eh], al ; 26 88 47 1e ; 0xf2272
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2276 ata.c:541
+ mov dx, cx ; 89 ca ; 0xf2279
+ mov ax, si ; 89 f0 ; 0xf227b
+ call 02103h ; e8 83 fe ; 0xf227d
+ mov dx, word [bp-02eh] ; 8b 56 d2 ; 0xf2280
+ inc dx ; 42 ; 0xf2283
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf2284
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf2287
+ add bx, dx ; 01 d3 ; 0xf228a
+ mov byte [es:bx+01eh], al ; 26 88 47 1e ; 0xf228c
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf2290 ata.c:545
+ mov AL, strict byte 008h ; b0 08 ; 0xf2293
+ out DX, AL ; ee ; 0xf2295
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2296 ata.c:547
+ xor ah, ah ; 30 e4 ; 0xf2299
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf229b
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf229e
+ add bx, ax ; 01 c3 ; 0xf22a1
+ mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf22a3
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf22a7
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf22aa ata.c:550
+ jne short 022f7h ; 75 49 ; 0xf22ac
+ mov byte [es:bx+01fh], 0ffh ; 26 c6 47 1f ff ; 0xf22ae ata.c:558
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf22b3 ata.c:559
+ lea dx, [bp-00260h] ; 8d 96 a0 fd ; 0xf22b8 ata.c:560
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf22bc
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf22bf
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf22c3
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf22c7 ata.c:561
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf22ca
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf22ce ata.c:563
+ mov bx, 000ech ; bb ec 00 ; 0xf22d1
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf22d4
+ mov dx, es ; 8c c2 ; 0xf22d7
+ call 01e4eh ; e8 72 fb ; 0xf22d9
+ test ax, ax ; 85 c0 ; 0xf22dc
+ je short 022ebh ; 74 0b ; 0xf22de
+ push 0016ch ; 68 6c 01 ; 0xf22e0 ata.c:564
+ push strict byte 00007h ; 6a 07 ; 0xf22e3
+ call 01953h ; e8 6b f6 ; 0xf22e5
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf22e8
+ test byte [bp-00260h], 080h ; f6 86 a0 fd 80 ; 0xf22eb ata.c:566
+ je short 022fah ; 74 08 ; 0xf22f0
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf22f2
+ jmp short 022fch ; eb 05 ; 0xf22f5
+ jmp near 024f9h ; e9 ff 01 ; 0xf22f7
+ xor ax, ax ; 31 c0 ; 0xf22fa
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf22fc
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf22ff ata.c:570
+ mov word [bp-030h], 00200h ; c7 46 d0 00 02 ; 0xf2303 ata.c:572
+ mov ax, word [bp-0025eh] ; 8b 86 a2 fd ; 0xf2308 ata.c:574
+ mov word [bp-022h], ax ; 89 46 de ; 0xf230c
+ mov ax, word [bp-0025ah] ; 8b 86 a6 fd ; 0xf230f ata.c:575
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf2313
+ mov ax, word [bp-00254h] ; 8b 86 ac fd ; 0xf2316 ata.c:576
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf231a
+ mov si, word [bp-001e8h] ; 8b b6 18 fe ; 0xf231d ata.c:578
+ mov ax, word [bp-001e6h] ; 8b 86 1a fe ; 0xf2321
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf2325
+ xor ax, ax ; 31 c0 ; 0xf2328
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf232a
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf232d
+ cmp word [bp-02ah], 00fffh ; 81 7e d6 ff 0f ; 0xf2330 ata.c:579
+ jne short 02355h ; 75 1e ; 0xf2335
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf2337
+ jne short 02355h ; 75 19 ; 0xf233a
+ mov ax, word [bp-00192h] ; 8b 86 6e fe ; 0xf233c ata.c:580
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf2340
+ mov ax, word [bp-00194h] ; 8b 86 6c fe ; 0xf2343
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2347
+ mov ax, word [bp-00196h] ; 8b 86 6a fe ; 0xf234a
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf234e
+ mov si, word [bp-00198h] ; 8b b6 68 fe ; 0xf2351
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2355 ata.c:581
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2358
+ jc short 02368h ; 72 0c ; 0xf235a
+ jbe short 02370h ; 76 12 ; 0xf235c
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf235e
+ je short 02378h ; 74 16 ; 0xf2360
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2362
+ je short 02374h ; 74 0e ; 0xf2364
+ jmp short 023a0h ; eb 38 ; 0xf2366
+ test al, al ; 84 c0 ; 0xf2368
+ jne short 023a0h ; 75 34 ; 0xf236a
+ mov BL, strict byte 01eh ; b3 1e ; 0xf236c ata.c:584
+ jmp short 0237ah ; eb 0a ; 0xf236e ata.c:585
+ mov BL, strict byte 026h ; b3 26 ; 0xf2370 ata.c:587
+ jmp short 0237ah ; eb 06 ; 0xf2372 ata.c:588
+ mov BL, strict byte 067h ; b3 67 ; 0xf2374 ata.c:590
+ jmp short 0237ah ; eb 02 ; 0xf2376 ata.c:591
+ mov BL, strict byte 070h ; b3 70 ; 0xf2378 ata.c:593
+ mov al, bl ; 88 d8 ; 0xf237a ata.c:600
+ xor ah, ah ; 30 e4 ; 0xf237c
+ call 0169ch ; e8 1b f3 ; 0xf237e
+ mov word [bp-034h], ax ; 89 46 cc ; 0xf2381
+ mov al, bl ; 88 d8 ; 0xf2384 ata.c:601
+ add AL, strict byte 002h ; 04 02 ; 0xf2386
+ xor ah, ah ; 30 e4 ; 0xf2388
+ call 01664h ; e8 d7 f2 ; 0xf238a
+ xor ah, ah ; 30 e4 ; 0xf238d
+ mov word [bp-036h], ax ; 89 46 ca ; 0xf238f
+ mov al, bl ; 88 d8 ; 0xf2392 ata.c:602
+ add AL, strict byte 007h ; 04 07 ; 0xf2394
+ call 01664h ; e8 cb f2 ; 0xf2396
+ xor ah, ah ; 30 e4 ; 0xf2399
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf239b
+ jmp short 023b2h ; eb 12 ; 0xf239e ata.c:604
+ push word [bp-020h] ; ff 76 e0 ; 0xf23a0 ata.c:605
+ push word [bp-01ch] ; ff 76 e4 ; 0xf23a3
+ push word [bp-02ah] ; ff 76 d6 ; 0xf23a6
+ push si ; 56 ; 0xf23a9
+ mov dx, ss ; 8c d2 ; 0xf23aa
+ lea ax, [bp-036h] ; 8d 46 ca ; 0xf23ac
+ call 05746h ; e8 94 33 ; 0xf23af
+ mov bx, 00ddch ; bb dc 0d ; 0xf23b2 ata.c:608
+ mov cx, ds ; 8c d9 ; 0xf23b5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf23b7
+ call 01910h ; e8 53 f5 ; 0xf23ba
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf23bd
+ push ax ; 50 ; 0xf23c0
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf23c1
+ push ax ; 50 ; 0xf23c4
+ mov ax, word [bp-034h] ; 8b 46 cc ; 0xf23c5
+ push ax ; 50 ; 0xf23c8
+ push word [bp-01ah] ; ff 76 e6 ; 0xf23c9
+ push word [bp-018h] ; ff 76 e8 ; 0xf23cc
+ push word [bp-022h] ; ff 76 de ; 0xf23cf
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf23d2
+ xor ah, ah ; 30 e4 ; 0xf23d5
+ push ax ; 50 ; 0xf23d7
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf23d8
+ push ax ; 50 ; 0xf23db
+ push 00195h ; 68 95 01 ; 0xf23dc
+ push strict byte 00004h ; 6a 04 ; 0xf23df
+ call 01953h ; e8 6f f5 ; 0xf23e1
+ add sp, strict byte 00014h ; 83 c4 14 ; 0xf23e4
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf23e7 ata.c:610
+ xor ah, ah ; 30 e4 ; 0xf23ea
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf23ec
+ les di, [bp-028h] ; c4 7e d8 ; 0xf23ef
+ add di, ax ; 01 c7 ; 0xf23f2
+ mov byte [es:di+01fh], 0ffh ; 26 c6 45 1f ff ; 0xf23f4
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf23f9 ata.c:611
+ mov byte [es:di+020h], al ; 26 88 45 20 ; 0xf23fc
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2400 ata.c:612
+ mov byte [es:di+022h], al ; 26 88 45 22 ; 0xf2403
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf2407 ata.c:613
+ mov word [es:di+024h], ax ; 26 89 45 24 ; 0xf240a
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf240e ata.c:614
+ mov word [es:di+02ch], ax ; 26 89 45 2c ; 0xf2411
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf2415 ata.c:615
+ mov word [es:di+02eh], ax ; 26 89 45 2e ; 0xf2418
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf241c ata.c:616
+ mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf241f
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf2423 ata.c:617
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf2426
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf242a
+ mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf242d
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf2431
+ mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf2434
+ mov word [es:di+032h], si ; 26 89 75 32 ; 0xf2438
+ lea di, [di+026h] ; 8d 7d 26 ; 0xf243c ata.c:618
+ push DS ; 1e ; 0xf243f
+ push SS ; 16 ; 0xf2440
+ pop DS ; 1f ; 0xf2441
+ lea si, [bp-036h] ; 8d 76 ca ; 0xf2442
+ movsw ; a5 ; 0xf2445
+ movsw ; a5 ; 0xf2446
+ movsw ; a5 ; 0xf2447
+ pop DS ; 1f ; 0xf2448
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2449 ata.c:619
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf244c
+ jnc short 024c3h ; 73 73 ; 0xf244e
+ test al, al ; 84 c0 ; 0xf2450 ata.c:625
+ jne short 02459h ; 75 05 ; 0xf2452
+ mov bx, strict word 0003dh ; bb 3d 00 ; 0xf2454 ata.c:626
+ jmp short 0245ch ; eb 03 ; 0xf2457 ata.c:627
+ mov bx, strict word 0004dh ; bb 4d 00 ; 0xf2459 ata.c:628
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf245c
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf245f ata.c:640
+ xor ah, ah ; 30 e4 ; 0xf2462
+ imul si, ax, strict byte 00005h ; 6b f0 05 ; 0xf2464
+ sal si, 002h ; c1 e6 02 ; 0xf2467
+ add si, 00104h ; 81 c6 04 01 ; 0xf246a
+ xor al, al ; 30 c0 ; 0xf246e
+ mov es, ax ; 8e c0 ; 0xf2470
+ mov word [es:si], bx ; 26 89 1c ; 0xf2472 ata.c:641
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf2475
+ mov es, cx ; 8e c1 ; 0xf2479 ata.c:647
+ mov word [es:bx+00ch], strict word 00000h ; 26 c7 47 0c 00 00 ; 0xf247b
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf2481
+ mov word [es:bx+005h], ax ; 26 89 47 05 ; 0xf2485
+ mov word [es:bx+007h], strict word 00000h ; 26 c7 47 07 00 00 ; 0xf2489
+ mov ax, word [bp-034h] ; 8b 46 cc ; 0xf248f ata.c:649
+ mov word [es:bx], ax ; 26 89 07 ; 0xf2492
+ mov al, byte [bp-036h] ; 8a 46 ca ; 0xf2495 ata.c:650
+ mov byte [es:bx+002h], al ; 26 88 47 02 ; 0xf2498
+ mov byte [es:bx+003h], 0a0h ; 26 c6 47 03 a0 ; 0xf249c ata.c:651
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf24a1 ata.c:652
+ mov byte [es:bx+004h], al ; 26 88 47 04 ; 0xf24a4
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf24a8 ata.c:653
+ mov word [es:bx+009h], ax ; 26 89 47 09 ; 0xf24ab
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf24af ata.c:654
+ mov byte [es:bx+00bh], al ; 26 88 47 0b ; 0xf24b2
+ mov al, byte [bp-032h] ; 8a 46 ce ; 0xf24b6 ata.c:655
+ mov byte [es:bx+00eh], al ; 26 88 47 0e ; 0xf24b9
+ xor al, al ; 30 c0 ; 0xf24bd ata.c:656
+ xor ah, ah ; 30 e4 ; 0xf24bf ata.c:657
+ jmp short 024cah ; eb 07 ; 0xf24c1
+ jmp short 024e3h ; eb 1e ; 0xf24c3
+ cmp ah, 00fh ; 80 fc 0f ; 0xf24c5
+ jnc short 024dbh ; 73 11 ; 0xf24c8
+ mov dl, ah ; 88 e2 ; 0xf24ca ata.c:658
+ xor dh, dh ; 30 f6 ; 0xf24cc
+ mov es, cx ; 8e c1 ; 0xf24ce
+ mov si, bx ; 89 de ; 0xf24d0
+ add si, dx ; 01 d6 ; 0xf24d2
+ add al, byte [es:si] ; 26 02 04 ; 0xf24d4
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf24d7
+ jmp short 024c5h ; eb ea ; 0xf24d9
+ neg al ; f6 d8 ; 0xf24db ata.c:659
+ mov es, cx ; 8e c1 ; 0xf24dd ata.c:660
+ mov byte [es:bx+00fh], al ; 26 88 47 0f ; 0xf24df
+ mov bl, byte [bp-010h] ; 8a 5e f0 ; 0xf24e3 ata.c:664
+ xor bh, bh ; 30 ff ; 0xf24e6
+ mov es, [bp-026h] ; 8e 46 da ; 0xf24e8
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf24eb
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf24ee
+ mov byte [es:bx+0024fh], al ; 26 88 87 4f 02 ; 0xf24f1
+ inc byte [bp-010h] ; fe 46 f0 ; 0xf24f6 ata.c:665
+ cmp byte [bp-00eh], 003h ; 80 7e f2 03 ; 0xf24f9 ata.c:669
+ jne short 0255ch ; 75 5d ; 0xf24fd
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf24ff ata.c:674
+ xor ah, ah ; 30 e4 ; 0xf2502
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2504
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf2507
+ add bx, ax ; 01 c3 ; 0xf250a
+ mov byte [es:bx+01fh], 005h ; 26 c6 47 1f 05 ; 0xf250c
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf2511 ata.c:675
+ lea dx, [bp-00260h] ; 8d 96 a0 fd ; 0xf2516 ata.c:676
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf251a
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf251d
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf2521
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2525 ata.c:677
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2528
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf252c ata.c:679
+ mov bx, 000a1h ; bb a1 00 ; 0xf252f
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf2532
+ mov dx, es ; 8c c2 ; 0xf2535
+ call 01e4eh ; e8 14 f9 ; 0xf2537
+ test ax, ax ; 85 c0 ; 0xf253a
+ je short 02549h ; 74 0b ; 0xf253c
+ push 001bch ; 68 bc 01 ; 0xf253e ata.c:680
+ push strict byte 00007h ; 6a 07 ; 0xf2541
+ call 01953h ; e8 0d f4 ; 0xf2543
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2546
+ mov cl, byte [bp-0025fh] ; 8a 8e a1 fd ; 0xf2549 ata.c:682
+ and cl, 01fh ; 80 e1 1f ; 0xf254d
+ test byte [bp-00260h], 080h ; f6 86 a0 fd 80 ; 0xf2550 ata.c:683
+ je short 0255eh ; 74 07 ; 0xf2555
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2557
+ jmp short 02560h ; eb 04 ; 0xf255a
+ jmp short 02593h ; eb 35 ; 0xf255c
+ xor ax, ax ; 31 c0 ; 0xf255e
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf2560 ata.c:691
+ xor dh, dh ; 30 f6 ; 0xf2563
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf2565
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf2568
+ add bx, dx ; 01 d3 ; 0xf256b
+ mov byte [es:bx+01fh], cl ; 26 88 4f 1f ; 0xf256d
+ mov byte [es:bx+020h], al ; 26 88 47 20 ; 0xf2571 ata.c:692
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf2575 ata.c:693
+ mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf257a ata.c:694
+ mov bl, byte [bp-012h] ; 8a 5e ee ; 0xf2580 ata.c:697
+ xor bh, bh ; 30 ff ; 0xf2583
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf2585
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2588
+ mov byte [es:bx+00264h], al ; 26 88 87 64 02 ; 0xf258b
+ inc byte [bp-012h] ; fe 46 ee ; 0xf2590 ata.c:698
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2593 ata.c:707
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2596
+ je short 025c7h ; 74 2d ; 0xf2598
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf259a
+ jne short 025f7h ; 75 59 ; 0xf259c
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf259e ata.c:709
+ xor ah, ah ; 30 e4 ; 0xf25a1
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf25a3
+ les di, [bp-028h] ; c4 7e d8 ; 0xf25a6
+ add di, ax ; 01 c7 ; 0xf25a9
+ mov ax, word [es:di+038h] ; 26 8b 45 38 ; 0xf25ab
+ mov bx, word [es:di+036h] ; 26 8b 5d 36 ; 0xf25af
+ mov cx, word [es:di+034h] ; 26 8b 4d 34 ; 0xf25b3
+ mov dx, word [es:di+032h] ; 26 8b 55 32 ; 0xf25b7
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf25bb
+ call 0aa90h ; e8 cf 84 ; 0xf25be
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf25c1
+ mov word [bp-024h], cx ; 89 4e dc ; 0xf25c4
+ mov al, byte [bp-001bfh] ; 8a 86 41 fe ; 0xf25c7 ata.c:712
+ xor ah, ah ; 30 e4 ; 0xf25cb
+ mov dx, ax ; 89 c2 ; 0xf25cd
+ sal dx, 008h ; c1 e2 08 ; 0xf25cf
+ mov al, byte [bp-001c0h] ; 8a 86 40 fe ; 0xf25d2
+ or dx, ax ; 09 c2 ; 0xf25d6
+ mov byte [bp-00ch], 00fh ; c6 46 f4 0f ; 0xf25d8 ata.c:713
+ jmp short 025e7h ; eb 09 ; 0xf25dc
+ dec byte [bp-00ch] ; fe 4e f4 ; 0xf25de ata.c:716
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf25e1
+ jbe short 025f3h ; 76 0c ; 0xf25e5
+ mov cl, byte [bp-00ch] ; 8a 4e f4 ; 0xf25e7
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf25ea
+ sal ax, CL ; d3 e0 ; 0xf25ed
+ test dx, ax ; 85 c2 ; 0xf25ef
+ je short 025deh ; 74 eb ; 0xf25f1
+ xor di, di ; 31 ff ; 0xf25f3 ata.c:719
+ jmp short 025feh ; eb 07 ; 0xf25f5
+ jmp short 0262dh ; eb 34 ; 0xf25f7
+ cmp di, strict byte 00014h ; 83 ff 14 ; 0xf25f9
+ jnl short 02613h ; 7d 15 ; 0xf25fc
+ mov si, di ; 89 fe ; 0xf25fe ata.c:720
+ add si, di ; 01 fe ; 0xf2600
+ mov al, byte [bp+si-00229h] ; 8a 82 d7 fd ; 0xf2602
+ mov byte [bp+si-060h], al ; 88 42 a0 ; 0xf2606
+ mov al, byte [bp+si-0022ah] ; 8a 82 d6 fd ; 0xf2609 ata.c:721
+ mov byte [bp+si-05fh], al ; 88 42 a1 ; 0xf260d
+ inc di ; 47 ; 0xf2610 ata.c:722
+ jmp short 025f9h ; eb e6 ; 0xf2611
+ mov byte [bp-038h], 000h ; c6 46 c8 00 ; 0xf2613 ata.c:725
+ mov di, strict word 00027h ; bf 27 00 ; 0xf2617 ata.c:726
+ jmp short 02621h ; eb 05 ; 0xf261a
+ dec di ; 4f ; 0xf261c ata.c:731
+ test di, di ; 85 ff ; 0xf261d
+ jle short 0262dh ; 7e 0c ; 0xf261f
+ cmp byte [bp+di-060h], 020h ; 80 7b a0 20 ; 0xf2621
+ jne short 0262dh ; 75 06 ; 0xf2625
+ mov byte [bp+di-060h], 000h ; c6 43 a0 00 ; 0xf2627
+ jmp short 0261ch ; eb ef ; 0xf262b
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf262d ata.c:738
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2630
+ je short 02691h ; 74 5d ; 0xf2632
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2634
+ je short 0263fh ; 74 07 ; 0xf2636
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2638
+ je short 0269ch ; 74 60 ; 0xf263a
+ jmp near 0271dh ; e9 de 00 ; 0xf263c
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf263f ata.c:741
+ je short 0264ah ; 74 05 ; 0xf2643
+ mov ax, 001e7h ; b8 e7 01 ; 0xf2645
+ jmp short 0264dh ; eb 03 ; 0xf2648
+ mov ax, 001eeh ; b8 ee 01 ; 0xf264a
+ push ax ; 50 ; 0xf264d
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf264e
+ xor ah, ah ; 30 e4 ; 0xf2651
+ push ax ; 50 ; 0xf2653
+ push 001f5h ; 68 f5 01 ; 0xf2654
+ push strict byte 00002h ; 6a 02 ; 0xf2657
+ call 01953h ; e8 f7 f2 ; 0xf2659
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf265c
+ xor di, di ; 31 ff ; 0xf265f ata.c:742
+ mov al, byte [bp+di-060h] ; 8a 43 a0 ; 0xf2661 ata.c:743
+ xor ah, ah ; 30 e4 ; 0xf2664
+ inc di ; 47 ; 0xf2666
+ test ax, ax ; 85 c0 ; 0xf2667
+ je short 02679h ; 74 0e ; 0xf2669
+ push ax ; 50 ; 0xf266b ata.c:744
+ push 00200h ; 68 00 02 ; 0xf266c
+ push strict byte 00002h ; 6a 02 ; 0xf266f
+ call 01953h ; e8 df f2 ; 0xf2671
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2674
+ jmp short 02661h ; eb e8 ; 0xf2677
+ push word [bp-024h] ; ff 76 dc ; 0xf2679 ata.c:745
+ push word [bp-01eh] ; ff 76 e2 ; 0xf267c
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf267f
+ push ax ; 50 ; 0xf2682
+ push 00203h ; 68 03 02 ; 0xf2683
+ push strict byte 00002h ; 6a 02 ; 0xf2686
+ call 01953h ; e8 c8 f2 ; 0xf2688
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf268b
+ jmp near 0271dh ; e9 8c 00 ; 0xf268e ata.c:746
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf2691 ata.c:748
+ je short 0269eh ; 74 07 ; 0xf2695
+ mov ax, 001e7h ; b8 e7 01 ; 0xf2697
+ jmp short 026a1h ; eb 05 ; 0xf269a
+ jmp short 026fdh ; eb 5f ; 0xf269c
+ mov ax, 001eeh ; b8 ee 01 ; 0xf269e
+ push ax ; 50 ; 0xf26a1
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf26a2
+ xor ah, ah ; 30 e4 ; 0xf26a5
+ push ax ; 50 ; 0xf26a7
+ push 001f5h ; 68 f5 01 ; 0xf26a8
+ push strict byte 00002h ; 6a 02 ; 0xf26ab
+ call 01953h ; e8 a3 f2 ; 0xf26ad
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf26b0
+ xor di, di ; 31 ff ; 0xf26b3 ata.c:749
+ mov al, byte [bp+di-060h] ; 8a 43 a0 ; 0xf26b5 ata.c:750
+ xor ah, ah ; 30 e4 ; 0xf26b8
+ inc di ; 47 ; 0xf26ba
+ test ax, ax ; 85 c0 ; 0xf26bb
+ je short 026cdh ; 74 0e ; 0xf26bd
+ push ax ; 50 ; 0xf26bf ata.c:751
+ push 00200h ; 68 00 02 ; 0xf26c0
+ push strict byte 00002h ; 6a 02 ; 0xf26c3
+ call 01953h ; e8 8b f2 ; 0xf26c5
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf26c8
+ jmp short 026b5h ; eb e8 ; 0xf26cb
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf26cd ata.c:752
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf26d0
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf26d3
+ add bx, ax ; 01 c3 ; 0xf26d6
+ cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf26d8
+ jne short 026eah ; 75 0b ; 0xf26dd
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf26df ata.c:753
+ xor ah, ah ; 30 e4 ; 0xf26e2
+ push ax ; 50 ; 0xf26e4
+ push 00223h ; 68 23 02 ; 0xf26e5
+ jmp short 026f3h ; eb 09 ; 0xf26e8 ata.c:754
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf26ea ata.c:755
+ xor ah, ah ; 30 e4 ; 0xf26ed
+ push ax ; 50 ; 0xf26ef
+ push 0023dh ; 68 3d 02 ; 0xf26f0
+ push strict byte 00002h ; 6a 02 ; 0xf26f3
+ call 01953h ; e8 5b f2 ; 0xf26f5
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf26f8
+ jmp short 0271dh ; eb 20 ; 0xf26fb ata.c:756
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf26fd ata.c:758
+ je short 02708h ; 74 05 ; 0xf2701
+ mov ax, 001e7h ; b8 e7 01 ; 0xf2703
+ jmp short 0270bh ; eb 03 ; 0xf2706
+ mov ax, 001eeh ; b8 ee 01 ; 0xf2708
+ push ax ; 50 ; 0xf270b
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf270c
+ xor ah, ah ; 30 e4 ; 0xf270f
+ push ax ; 50 ; 0xf2711
+ push 0024fh ; 68 4f 02 ; 0xf2712
+ push strict byte 00002h ; 6a 02 ; 0xf2715
+ call 01953h ; e8 39 f2 ; 0xf2717
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf271a
+ inc byte [bp-008h] ; fe 46 f8 ; 0xf271d ata.c:763
+ cmp byte [bp-008h], 008h ; 80 7e f8 08 ; 0xf2720
+ jnc short 0276eh ; 73 48 ; 0xf2724
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf2726
+ xor bh, bh ; 30 ff ; 0xf2729
+ mov ax, bx ; 89 d8 ; 0xf272b
+ cwd ; 99 ; 0xf272d
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf272e
+ sar ax, 1 ; d1 f8 ; 0xf2730
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf2732
+ mov al, byte [bp-02eh] ; 8a 46 d2 ; 0xf2735
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf2738
+ mov ax, bx ; 89 d8 ; 0xf273b
+ cwd ; 99 ; 0xf273d
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf273e
+ idiv bx ; f7 fb ; 0xf2741
+ mov cx, dx ; 89 d1 ; 0xf2743
+ mov byte [bp-014h], dl ; 88 56 ec ; 0xf2745
+ mov al, byte [bp-02eh] ; 8a 46 d2 ; 0xf2748
+ xor ah, ah ; 30 e4 ; 0xf274b
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf274d
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf2750
+ add bx, ax ; 01 c3 ; 0xf2753
+ mov si, word [es:bx+0027ah] ; 26 8b b7 7a 02 ; 0xf2755
+ mov di, word [es:bx+0027ch] ; 26 8b bf 7c 02 ; 0xf275a
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf275f
+ in AL, DX ; ec ; 0xf2762
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2763
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf2765
+ je short 0276ch ; 74 03 ; 0xf2767
+ jmp near 0222fh ; e9 c3 fa ; 0xf2769
+ jmp short 0271dh ; eb af ; 0xf276c
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf276e ata.c:766
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf2771
+ mov byte [es:bx+0024eh], al ; 26 88 87 4e 02 ; 0xf2774
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf2779 ata.c:767
+ mov byte [es:bx+00263h], al ; 26 88 87 63 02 ; 0xf277c
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf2781 ata.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2784
+ mov es, ax ; 8e c0 ; 0xf2787
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2789
+ mov byte [es:bx], al ; 26 88 07 ; 0xf278c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf278f ata.c:780
+ pop di ; 5f ; 0xf2792
+ pop si ; 5e ; 0xf2793
+ pop bp ; 5d ; 0xf2794
+ retn ; c3 ; 0xf2795
+ ; disGetNextSymbol 0xf2796 LB 0x8642 -> off=0x0 cb=000000000000028a uValue=00000000000f1196 'ata_cmd_data_out'
+ata_cmd_data_out: ; 0xf2796 LB 0x28a
+ push bp ; 55 ; 0xf2796 ata.c:794
+ mov bp, sp ; 89 e5 ; 0xf2797
+ push si ; 56 ; 0xf2799
+ push di ; 57 ; 0xf279a
+ sub sp, strict byte 00020h ; 83 ec 20 ; 0xf279b
+ mov di, ax ; 89 c7 ; 0xf279e
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf27a0
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf27a3
+ mov word [bp-022h], cx ; 89 4e de ; 0xf27a6
+ mov es, dx ; 8e c2 ; 0xf27a9 ata.c:806
+ mov al, byte [es:di+00ch] ; 26 8a 45 0c ; 0xf27ab
+ xor ah, ah ; 30 e4 ; 0xf27af
+ mov dx, ax ; 89 c2 ; 0xf27b1
+ shr ax, 1 ; d1 e8 ; 0xf27b3 ata.c:807
+ and dl, 001h ; 80 e2 01 ; 0xf27b5 ata.c:808
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf27b8
+ xor ah, ah ; 30 e4 ; 0xf27bb ata.c:810
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf27bd
+ mov bx, di ; 89 fb ; 0xf27c0
+ add bx, ax ; 01 c3 ; 0xf27c2
+ mov ax, word [es:bx+0027ah] ; 26 8b 87 7a 02 ; 0xf27c4
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf27c9
+ mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf27cc ata.c:811
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf27d1
+ mov word [bp-020h], 00100h ; c7 46 e0 00 01 ; 0xf27d4 ata.c:819
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf27d9 ata.c:821
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf27dc
+ in AL, DX ; ec ; 0xf27df
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf27e0
+ test AL, strict byte 080h ; a8 80 ; 0xf27e2 ata.c:822
+ je short 027f5h ; 74 0f ; 0xf27e4
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf27e6 ata.c:825
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf27e9
+ mov AL, strict byte 008h ; b0 08 ; 0xf27ec
+ out DX, AL ; ee ; 0xf27ee
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf27ef ata.c:826
+ jmp near 02a19h ; e9 24 02 ; 0xf27f2
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf27f5 ata.c:829
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf27f8
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf27fc
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf27ff
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2803
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf2806
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf280a
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf280d
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf2810
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf2813 ata.c:830
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf2817
+ mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf281a
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf281e
+ mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf2821 ata.c:831
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2825
+ mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf2828 ata.c:832
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf282c
+ mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf282f ata.c:833
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2833
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2836 ata.c:836
+ test ax, ax ; 85 c0 ; 0xf2839
+ je short 02840h ; 74 03 ; 0xf283b
+ jmp near 02907h ; e9 c7 00 ; 0xf283d
+ xor bx, bx ; 31 db ; 0xf2840 ata.c:837
+ xor dx, dx ; 31 d2 ; 0xf2842
+ mov si, word [bp-024h] ; 8b 76 dc ; 0xf2844
+ add si, word [bp-022h] ; 03 76 de ; 0xf2847
+ adc bx, word [bp-010h] ; 13 5e f0 ; 0xf284a
+ adc ax, word [bp-00eh] ; 13 46 f2 ; 0xf284d
+ adc dx, word [bp-00ch] ; 13 56 f4 ; 0xf2850
+ test dx, dx ; 85 d2 ; 0xf2853
+ jnbe short 02867h ; 77 10 ; 0xf2855
+ jne short 028cah ; 75 71 ; 0xf2857
+ test ax, ax ; 85 c0 ; 0xf2859
+ jnbe short 02867h ; 77 0a ; 0xf285b
+ jne short 028cah ; 75 6b ; 0xf285d
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf285f
+ jnbe short 02867h ; 77 02 ; 0xf2863
+ jne short 028cah ; 75 63 ; 0xf2865
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2867 ata.c:839
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf286a
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf286d
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf2870
+ mov si, strict word 00018h ; be 18 00 ; 0xf2873
+ call 0aa90h ; e8 17 82 ; 0xf2876
+ xor dh, dh ; 30 f6 ; 0xf2879
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf287b
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf287e ata.c:840
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf2881
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2884
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf2887
+ mov si, strict word 00020h ; be 20 00 ; 0xf288a
+ call 0aa90h ; e8 00 82 ; 0xf288d
+ mov bx, dx ; 89 d3 ; 0xf2890
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf2892 ata.c:841
+ xor al, al ; 30 c0 ; 0xf2895
+ shr ax, 008h ; c1 e8 08 ; 0xf2897
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf289a
+ inc dx ; 42 ; 0xf289d
+ inc dx ; 42 ; 0xf289e
+ out DX, AL ; ee ; 0xf289f
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28a0 ata.c:842
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf28a3
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf28a6
+ out DX, AL ; ee ; 0xf28a9
+ mov ax, bx ; 89 d8 ; 0xf28aa ata.c:843
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28ac
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf28af
+ out DX, AL ; ee ; 0xf28b2
+ shr ax, 008h ; c1 e8 08 ; 0xf28b3 ata.c:844
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28b6
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf28b9
+ out DX, AL ; ee ; 0xf28bc
+ xor al, al ; 30 c0 ; 0xf28bd ata.c:847
+ mov byte [bp-00fh], al ; 88 46 f1 ; 0xf28bf
+ xor ah, ah ; 30 e4 ; 0xf28c2
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf28c4
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28c7
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf28ca ata.c:849
+ xor ah, ah ; 30 e4 ; 0xf28cd
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf28cf
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28d2 ata.c:850
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf28d5
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28d8
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf28db
+ mov si, strict word 00008h ; be 08 00 ; 0xf28de
+ call 0aa90h ; e8 ac 81 ; 0xf28e1
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28e4
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf28e7
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf28ea
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf28ed
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf28f0 ata.c:851
+ mov si, strict word 00010h ; be 10 00 ; 0xf28f3 ata.c:852
+ call 0aa90h ; e8 97 81 ; 0xf28f6
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf28f9
+ mov ax, dx ; 89 d0 ; 0xf28fc ata.c:853
+ xor ah, dh ; 30 f4 ; 0xf28fe
+ and AL, strict byte 00fh ; 24 0f ; 0xf2900
+ or AL, strict byte 040h ; 0c 40 ; 0xf2902
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2904
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf2907 ata.c:856
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf290a
+ mov AL, strict byte 00ah ; b0 0a ; 0xf290d
+ out DX, AL ; ee ; 0xf290f
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2910 ata.c:857
+ inc dx ; 42 ; 0xf2913
+ xor al, al ; 30 c0 ; 0xf2914
+ out DX, AL ; ee ; 0xf2916
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2917 ata.c:858
+ inc dx ; 42 ; 0xf291a
+ inc dx ; 42 ; 0xf291b
+ mov al, byte [bp-022h] ; 8a 46 de ; 0xf291c
+ out DX, AL ; ee ; 0xf291f
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2920 ata.c:859
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2923
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2926
+ out DX, AL ; ee ; 0xf2929
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf292a ata.c:860
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf292d
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2930
+ out DX, AL ; ee ; 0xf2933
+ shr ax, 008h ; c1 e8 08 ; 0xf2934 ata.c:861
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2937
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf293a
+ out DX, AL ; ee ; 0xf293d
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf293e ata.c:862
+ je short 02949h ; 74 05 ; 0xf2942
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2944
+ jmp short 0294ch ; eb 03 ; 0xf2947
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2949
+ mov dl, byte [bp-01ch] ; 8a 56 e4 ; 0xf294c
+ xor dh, dh ; 30 f6 ; 0xf294f
+ or ax, dx ; 09 d0 ; 0xf2951
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2953
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2956
+ out DX, AL ; ee ; 0xf2959
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf295a ata.c:863
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf295d
+ mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf2960
+ out DX, AL ; ee ; 0xf2963
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2964 ata.c:866
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2967
+ in AL, DX ; ec ; 0xf296a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf296b
+ mov bl, al ; 88 c3 ; 0xf296d
+ test AL, strict byte 080h ; a8 80 ; 0xf296f ata.c:867
+ jne short 02964h ; 75 f1 ; 0xf2971
+ test AL, strict byte 001h ; a8 01 ; 0xf2973 ata.c:871
+ je short 02986h ; 74 0f ; 0xf2975
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf2977 ata.c:874
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf297a
+ mov AL, strict byte 008h ; b0 08 ; 0xf297d
+ out DX, AL ; ee ; 0xf297f
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2980 ata.c:875
+ jmp near 02a19h ; e9 93 00 ; 0xf2983
+ test bl, 008h ; f6 c3 08 ; 0xf2986 ata.c:876
+ jne short 0299ah ; 75 0f ; 0xf2989
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf298b ata.c:879
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf298e
+ mov AL, strict byte 008h ; b0 08 ; 0xf2991
+ out DX, AL ; ee ; 0xf2993
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2994 ata.c:880
+ jmp near 02a19h ; e9 7f 00 ; 0xf2997
+ sti ; fb ; 0xf299a ata.c:885
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf299b ata.c:890
+ cmp ax, 0f800h ; 3d 00 f8 ; 0xf299e
+ jc short 029b3h ; 72 10 ; 0xf29a1
+ sub ax, 00800h ; 2d 00 08 ; 0xf29a3 ata.c:891
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf29a6
+ add dx, 00080h ; 81 c2 80 00 ; 0xf29a9
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf29ad
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf29b0
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29b3 ata.c:898
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf29b6
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf29b9
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf29bc
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf29bf
+ mov word [bp-016h], si ; 89 76 ea ; 0xf29c2
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf29c5 ata.c:900
+ inc word [es:di+018h] ; 26 ff 45 18 ; 0xf29c8
+ dec word [bp-022h] ; ff 4e de ; 0xf29cc ata.c:901
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29cf ata.c:903
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf29d2
+ in AL, DX ; ec ; 0xf29d5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf29d6
+ mov bl, al ; 88 c3 ; 0xf29d8
+ test AL, strict byte 080h ; a8 80 ; 0xf29da ata.c:904
+ jne short 029cfh ; 75 f1 ; 0xf29dc
+ cmp word [bp-022h], strict byte 00000h ; 83 7e de 00 ; 0xf29de ata.c:907
+ jne short 029f8h ; 75 14 ; 0xf29e2
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf29e4 ata.c:908
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf29e6
+ je short 02a0eh ; 74 24 ; 0xf29e8
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29ea ata.c:912
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29ed
+ mov AL, strict byte 008h ; b0 08 ; 0xf29f0
+ out DX, AL ; ee ; 0xf29f2
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf29f3 ata.c:913
+ jmp short 02a19h ; eb 21 ; 0xf29f6
+ mov al, bl ; 88 d8 ; 0xf29f8 ata.c:918
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf29fa
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf29fc
+ je short 0299bh ; 74 9b ; 0xf29fe
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf2a00 ata.c:922
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a03
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a06
+ out DX, AL ; ee ; 0xf2a08
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf2a09 ata.c:923
+ jmp short 02a19h ; eb 0b ; 0xf2a0c
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf2a0e ata.c:929
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a11
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a14
+ out DX, AL ; ee ; 0xf2a16
+ xor ax, ax ; 31 c0 ; 0xf2a17 ata.c:930
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2a19 ata.c:931
+ pop di ; 5f ; 0xf2a1c
+ pop si ; 5e ; 0xf2a1d
+ pop bp ; 5d ; 0xf2a1e
+ retn ; c3 ; 0xf2a1f
+ ; disGetNextSymbol 0xf2a20 LB 0x83b8 -> off=0x0 cb=00000000000000b5 uValue=00000000000f1420 'ata_read_sectors'
+ata_read_sectors: ; 0xf2a20 LB 0xb5
+ push bp ; 55 ; 0xf2a20 ata.c:941
+ mov bp, sp ; 89 e5 ; 0xf2a21
+ push si ; 56 ; 0xf2a23
+ push di ; 57 ; 0xf2a24
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf2a25
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf2a28
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf2a2b ata.c:947
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2a2e
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2a32 ata.c:948
+ mov dx, cx ; 89 ca ; 0xf2a36
+ sal dx, 009h ; c1 e2 09 ; 0xf2a38
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2a3b ata.c:950
+ je short 02a61h ; 74 1f ; 0xf2a40
+ xor ah, ah ; 30 e4 ; 0xf2a42 ata.c:952
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2a44
+ mov [bp-00ch], es ; 8c 46 f4 ; 0xf2a47
+ mov di, si ; 89 f7 ; 0xf2a4a
+ add di, ax ; 01 c7 ; 0xf2a4c
+ mov word [es:di+024h], dx ; 26 89 55 24 ; 0xf2a4e
+ mov bx, 000c4h ; bb c4 00 ; 0xf2a52 ata.c:954
+ mov ax, si ; 89 f0 ; 0xf2a55
+ mov dx, es ; 8c c2 ; 0xf2a57
+ call 01e4eh ; e8 f2 f3 ; 0xf2a59
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2a5c ata.c:955
+ jmp short 02ac6h ; eb 65 ; 0xf2a5f ata.c:956
+ xor bx, bx ; 31 db ; 0xf2a61 ata.c:958
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf2a63
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf2a66
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2a69
+ add di, cx ; 01 cf ; 0xf2a6c
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf2a6e
+ mov di, word [es:si+002h] ; 26 8b 7c 02 ; 0xf2a71
+ adc di, bx ; 11 df ; 0xf2a75
+ mov word [bp-008h], di ; 89 7e f8 ; 0xf2a77
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf2a7a
+ adc bx, word [bp-00ch] ; 13 5e f4 ; 0xf2a7e
+ mov di, word [es:si+006h] ; 26 8b 7c 06 ; 0xf2a81
+ adc di, word [bp-006h] ; 13 7e fa ; 0xf2a85
+ test di, di ; 85 ff ; 0xf2a88
+ jnbe short 02a9dh ; 77 11 ; 0xf2a8a
+ jne short 02aa9h ; 75 1b ; 0xf2a8c
+ test bx, bx ; 85 db ; 0xf2a8e
+ jnbe short 02a9dh ; 77 0b ; 0xf2a90
+ jne short 02aa9h ; 75 15 ; 0xf2a92
+ cmp word [bp-008h], 01000h ; 81 7e f8 00 10 ; 0xf2a94
+ jnbe short 02a9dh ; 77 02 ; 0xf2a99
+ jne short 02aa9h ; 75 0c ; 0xf2a9b
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf2a9d ata.c:960
+ mov ax, si ; 89 f0 ; 0xf2aa0
+ mov dx, es ; 8c c2 ; 0xf2aa2
+ call 01e4eh ; e8 a7 f3 ; 0xf2aa4
+ jmp short 02acch ; eb 23 ; 0xf2aa7 ata.c:961
+ xor ah, ah ; 30 e4 ; 0xf2aa9 ata.c:962
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2aab
+ mov [bp-006h], es ; 8c 46 fa ; 0xf2aae
+ mov di, si ; 89 f7 ; 0xf2ab1
+ add di, ax ; 01 c7 ; 0xf2ab3
+ mov word [es:di+024h], dx ; 26 89 55 24 ; 0xf2ab5
+ mov bx, 000c4h ; bb c4 00 ; 0xf2ab9 ata.c:964
+ mov ax, si ; 89 f0 ; 0xf2abc
+ mov dx, es ; 8c c2 ; 0xf2abe
+ call 01e4eh ; e8 8b f3 ; 0xf2ac0
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf2ac3 ata.c:965
+ mov word [es:di+024h], 00200h ; 26 c7 45 24 00 02 ; 0xf2ac6
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2acc ata.c:969
+ pop di ; 5f ; 0xf2acf
+ pop si ; 5e ; 0xf2ad0
+ pop bp ; 5d ; 0xf2ad1
+ retn 00004h ; c2 04 00 ; 0xf2ad2
+ ; disGetNextSymbol 0xf2ad5 LB 0x8303 -> off=0x0 cb=000000000000005b uValue=00000000000f14d5 'ata_write_sectors'
+ata_write_sectors: ; 0xf2ad5 LB 0x5b
+ push bp ; 55 ; 0xf2ad5 ata.c:978
+ mov bp, sp ; 89 e5 ; 0xf2ad6
+ push si ; 56 ; 0xf2ad8
+ push di ; 57 ; 0xf2ad9
+ push ax ; 50 ; 0xf2ada
+ les si, [bp+004h] ; c4 76 04 ; 0xf2adb
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2ade ata.c:982
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2ae2 ata.c:984
+ je short 02af5h ; 74 0c ; 0xf2ae7
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf2ae9 ata.c:986
+ mov ax, si ; 89 f0 ; 0xf2aec
+ mov dx, es ; 8c c2 ; 0xf2aee
+ call 02796h ; e8 a3 fc ; 0xf2af0
+ jmp short 02b27h ; eb 32 ; 0xf2af3
+ xor ax, ax ; 31 c0 ; 0xf2af5 ata.c:989
+ xor bx, bx ; 31 db ; 0xf2af7
+ xor dx, dx ; 31 d2 ; 0xf2af9
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2afb
+ add di, cx ; 01 cf ; 0xf2afe
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2b00
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2b03
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2b07
+ adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2b0b
+ test dx, dx ; 85 d2 ; 0xf2b0f
+ jnbe short 02b22h ; 77 0f ; 0xf2b11
+ jne short 02ae9h ; 75 d4 ; 0xf2b13
+ test bx, bx ; 85 db ; 0xf2b15
+ jnbe short 02b22h ; 77 09 ; 0xf2b17
+ jne short 02ae9h ; 75 ce ; 0xf2b19
+ cmp ax, 01000h ; 3d 00 10 ; 0xf2b1b
+ jnbe short 02b22h ; 77 02 ; 0xf2b1e
+ jne short 02ae9h ; 75 c7 ; 0xf2b20
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf2b22 ata.c:990
+ jmp short 02aech ; eb c5 ; 0xf2b25
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b27 ata.c:994
+ pop di ; 5f ; 0xf2b2a
+ pop si ; 5e ; 0xf2b2b
+ pop bp ; 5d ; 0xf2b2c
+ retn 00004h ; c2 04 00 ; 0xf2b2d
+ ; disGetNextSymbol 0xf2b30 LB 0x82a8 -> off=0x0 cb=000000000000020f uValue=00000000000f1530 'ata_cmd_packet'
+ata_cmd_packet: ; 0xf2b30 LB 0x20f
+ push bp ; 55 ; 0xf2b30 ata.c:1006
+ mov bp, sp ; 89 e5 ; 0xf2b31
+ push si ; 56 ; 0xf2b33
+ push di ; 57 ; 0xf2b34
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf2b35
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2b38
+ mov di, bx ; 89 df ; 0xf2b3b
+ mov word [bp-012h], cx ; 89 4e ee ; 0xf2b3d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2b40 ata.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2b43
+ mov es, dx ; 8e c2 ; 0xf2b46
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf2b48
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf2b4b ata.c:59
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf2b4e
+ mov dx, ax ; 89 c2 ; 0xf2b51 ata.c:1018
+ shr dx, 1 ; d1 ea ; 0xf2b53
+ mov ah, dl ; 88 d4 ; 0xf2b55
+ mov cl, al ; 88 c1 ; 0xf2b57 ata.c:1019
+ and cl, 001h ; 80 e1 01 ; 0xf2b59
+ cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf2b5c ata.c:1022
+ jne short 02b81h ; 75 1f ; 0xf2b60
+ mov bx, 00ddch ; bb dc 0d ; 0xf2b62 ata.c:1023
+ mov cx, ds ; 8c d9 ; 0xf2b65
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2b67
+ call 01910h ; e8 a3 ed ; 0xf2b6a
+ push 00269h ; 68 69 02 ; 0xf2b6d
+ push 00278h ; 68 78 02 ; 0xf2b70
+ push strict byte 00004h ; 6a 04 ; 0xf2b73
+ call 01953h ; e8 db ed ; 0xf2b75
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2b78
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2b7b ata.c:1024
+ jmp near 02d36h ; e9 b5 01 ; 0xf2b7e
+ mov al, ah ; 88 e0 ; 0xf2b81 ata.c:1027
+ xor ah, ah ; 30 e4 ; 0xf2b83
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf2b85
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2b88
+ mov si, bx ; 89 de ; 0xf2b8b
+ add si, ax ; 01 c6 ; 0xf2b8d
+ mov ax, word [es:si+0027ah] ; 26 8b 84 7a 02 ; 0xf2b8f
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2b94
+ mov ax, word [es:si+0027ch] ; 26 8b 84 7c 02 ; 0xf2b97 ata.c:1028
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2b9c
+ xor ax, ax ; 31 c0 ; 0xf2b9f ata.c:1030
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf2ba1
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2ba4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2ba7 ata.c:1032
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf2baa
+ jnc short 02bb4h ; 73 06 ; 0xf2bac
+ mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2bae ata.c:1033
+ jmp short 02bbah ; eb 06 ; 0xf2bb2
+ jbe short 02bbah ; 76 04 ; 0xf2bb4 ata.c:1034
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2bb6 ata.c:1035
+ shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2bba ata.c:1036
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2bbd ata.c:1040
+ mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00 ; 0xf2bc0
+ mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00 ; 0xf2bc6 ata.c:1041
+ mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2bcc
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2bd2 ata.c:1043
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2bd5
+ in AL, DX ; ec ; 0xf2bd8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2bd9
+ test AL, strict byte 080h ; a8 80 ; 0xf2bdb ata.c:1044
+ je short 02be5h ; 74 06 ; 0xf2bdd
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2bdf ata.c:1045
+ jmp near 02d36h ; e9 51 01 ; 0xf2be2
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2be5 ata.c:1047
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2be8
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2beb
+ out DX, AL ; ee ; 0xf2bed
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2bee ata.c:1051
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2bf1
+ mov AL, strict byte 0f0h ; b0 f0 ; 0xf2bf4
+ out DX, AL ; ee ; 0xf2bf6
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2bf7 ata.c:1052
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2bfa
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf2bfd
+ out DX, AL ; ee ; 0xf2bff
+ test cl, cl ; 84 c9 ; 0xf2c00 ata.c:1053
+ je short 02c09h ; 74 05 ; 0xf2c02
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2c04
+ jmp short 02c0ch ; eb 03 ; 0xf2c07
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2c09
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c0c
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c0f
+ out DX, AL ; ee ; 0xf2c12
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c13 ata.c:1054
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c16
+ mov AL, strict byte 0a0h ; b0 a0 ; 0xf2c19
+ out DX, AL ; ee ; 0xf2c1b
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c1c ata.c:1058
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c1f
+ in AL, DX ; ec ; 0xf2c22
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c23
+ mov cl, al ; 88 c1 ; 0xf2c25
+ test AL, strict byte 080h ; a8 80 ; 0xf2c27 ata.c:1059
+ jne short 02c1ch ; 75 f1 ; 0xf2c29
+ test AL, strict byte 001h ; a8 01 ; 0xf2c2b ata.c:1062
+ je short 02c3eh ; 74 0f ; 0xf2c2d
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2c2f ata.c:1065
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c32
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c35
+ out DX, AL ; ee ; 0xf2c37
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2c38 ata.c:1066
+ jmp near 02d36h ; e9 f8 00 ; 0xf2c3b
+ test cl, 008h ; f6 c1 08 ; 0xf2c3e ata.c:1067
+ jne short 02c52h ; 75 0f ; 0xf2c41
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2c43 ata.c:1070
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c46
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c49
+ out DX, AL ; ee ; 0xf2c4b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2c4c ata.c:1071
+ jmp near 02d36h ; e9 e4 00 ; 0xf2c4f
+ sti ; fb ; 0xf2c52 ata.c:1074
+ mov ax, di ; 89 f8 ; 0xf2c53 ata.c:1078
+ shr ax, 004h ; c1 e8 04 ; 0xf2c55
+ add ax, word [bp-012h] ; 03 46 ee ; 0xf2c58
+ mov si, di ; 89 fe ; 0xf2c5b
+ and si, strict byte 0000fh ; 83 e6 0f ; 0xf2c5d
+ mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2c60 ata.c:1083
+ xor ch, ch ; 30 ed ; 0xf2c63
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c65
+ mov es, ax ; 8e c0 ; 0xf2c68
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2c6a
+ cmp byte [bp+008h], 000h ; 80 7e 08 00 ; 0xf2c6d ata.c:1085
+ jne short 02c7eh ; 75 0b ; 0xf2c71
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c73 ata.c:1086
+ in AL, DX ; ec ; 0xf2c76
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c77
+ mov cl, al ; 88 c1 ; 0xf2c79
+ jmp near 02d17h ; e9 99 00 ; 0xf2c7b ata.c:1088
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c7e ata.c:1092
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c81
+ in AL, DX ; ec ; 0xf2c84
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c85
+ mov cl, al ; 88 c1 ; 0xf2c87
+ test AL, strict byte 080h ; a8 80 ; 0xf2c89 ata.c:1093
+ jne short 02c7eh ; 75 f1 ; 0xf2c8b
+ test AL, strict byte 088h ; a8 88 ; 0xf2c8d ata.c:1098
+ je short 02cb3h ; 74 22 ; 0xf2c8f
+ test AL, strict byte 001h ; a8 01 ; 0xf2c91 ata.c:1101
+ je short 02ca0h ; 74 0b ; 0xf2c93
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2c95 ata.c:1104
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c98
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c9b
+ out DX, AL ; ee ; 0xf2c9d
+ jmp short 02c38h ; eb 98 ; 0xf2c9e
+ mov al, cl ; 88 c8 ; 0xf2ca0 ata.c:1109
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2ca2
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2ca4
+ je short 02cb5h ; 74 0d ; 0xf2ca6
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2ca8 ata.c:1113
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cab
+ mov AL, strict byte 008h ; b0 08 ; 0xf2cae
+ out DX, AL ; ee ; 0xf2cb0
+ jmp short 02c4ch ; eb 99 ; 0xf2cb1
+ jmp short 02d17h ; eb 62 ; 0xf2cb3
+ mov dx, word [bp+00ah] ; 8b 56 0a ; 0xf2cb5 ata.c:1119
+ shr dx, 004h ; c1 ea 04 ; 0xf2cb8
+ add dx, word [bp+00ch] ; 03 56 0c ; 0xf2cbb
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf2cbe
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf2cc1
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf2cc4
+ mov word [bp+00ch], dx ; 89 56 0c ; 0xf2cc7
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cca ata.c:1124
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2ccd
+ in AL, DX ; ec ; 0xf2cd0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2cd1
+ mov cx, ax ; 89 c1 ; 0xf2cd3
+ sal cx, 008h ; c1 e1 08 ; 0xf2cd5
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cd8
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2cdb
+ in AL, DX ; ec ; 0xf2cde
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2cdf
+ add cx, ax ; 01 c1 ; 0xf2ce1
+ mov ax, cx ; 89 c8 ; 0xf2ce3 ata.c:1127
+ test cl, 003h ; f6 c1 03 ; 0xf2ce5 ata.c:1134
+ test cl, 001h ; f6 c1 01 ; 0xf2ce8 ata.c:1138
+ je short 02ceeh ; 74 01 ; 0xf2ceb
+ inc cx ; 41 ; 0xf2ced ata.c:1139
+ shr cx, 1 ; d1 e9 ; 0xf2cee ata.c:1148
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cf0 ata.c:1157
+ les di, [bp+00ah] ; c4 7e 0a ; 0xf2cf3
+ rep insw ; f3 6d ; 0xf2cf6
+ add word [bp+00ah], ax ; 01 46 0a ; 0xf2cf8 ata.c:1162
+ xor dx, dx ; 31 d2 ; 0xf2cfb ata.c:1165
+ add word [bp-010h], ax ; 01 46 f0 ; 0xf2cfd
+ adc word [bp-00ch], dx ; 11 56 f4 ; 0xf2d00
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2d03 ata.c:1166
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2d06
+ mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2d09
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2d0d
+ mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2d10
+ jmp near 02c7eh ; e9 67 ff ; 0xf2d14 ata.c:1167
+ mov al, cl ; 88 c8 ; 0xf2d17 ata.c:1171
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2d19
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2d1b
+ je short 02d2bh ; 74 0c ; 0xf2d1d
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2d1f ata.c:1175
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d22
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d25
+ out DX, AL ; ee ; 0xf2d27
+ jmp near 02c4ch ; e9 21 ff ; 0xf2d28
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2d2b ata.c:1180
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d2e
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d31
+ out DX, AL ; ee ; 0xf2d33
+ xor ax, ax ; 31 c0 ; 0xf2d34 ata.c:1181
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2d36 ata.c:1182
+ pop di ; 5f ; 0xf2d39
+ pop si ; 5e ; 0xf2d3a
+ pop bp ; 5d ; 0xf2d3b
+ retn 0000ah ; c2 0a 00 ; 0xf2d3c
+ ; disGetNextSymbol 0xf2d3f LB 0x8099 -> off=0x0 cb=000000000000007e uValue=00000000000f173f 'ata_soft_reset'
+ata_soft_reset: ; 0xf2d3f LB 0x7e
+ push bp ; 55 ; 0xf2d3f ata.c:1190
+ mov bp, sp ; 89 e5 ; 0xf2d40
+ push bx ; 53 ; 0xf2d42
+ push cx ; 51 ; 0xf2d43
+ push dx ; 52 ; 0xf2d44
+ push ax ; 50 ; 0xf2d45
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2d46 ata.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2d49
+ mov es, dx ; 8e c2 ; 0xf2d4c
+ mov es, [es:bx] ; 26 8e 07 ; 0xf2d4e
+ mov dx, ax ; 89 c2 ; 0xf2d51 ata.c:1199
+ shr dx, 1 ; d1 ea ; 0xf2d53
+ and AL, strict byte 001h ; 24 01 ; 0xf2d55 ata.c:1200
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2d57
+ mov al, dl ; 88 d0 ; 0xf2d5a ata.c:1202
+ xor ah, ah ; 30 e4 ; 0xf2d5c
+ imul bx, ax, strict byte 00006h ; 6b d8 06 ; 0xf2d5e
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf2d61
+ mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf2d64
+ mov bx, word [es:bx+0027ch] ; 26 8b 9f 7c 02 ; 0xf2d69 ata.c:1203
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2d6e ata.c:1206
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2d71
+ out DX, AL ; ee ; 0xf2d73
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2d74 ata.c:1207
+ je short 02d7fh ; 74 05 ; 0xf2d78
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2d7a
+ jmp short 02d82h ; eb 03 ; 0xf2d7d
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2d7f
+ mov dx, cx ; 89 ca ; 0xf2d82
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d84
+ out DX, AL ; ee ; 0xf2d87
+ mov dx, cx ; 89 ca ; 0xf2d88 ata.c:1208
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2d8a
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d8d
+ out DX, AL ; ee ; 0xf2d8f
+ mov dx, cx ; 89 ca ; 0xf2d90 ata.c:1212
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2d92
+ in AL, DX ; ec ; 0xf2d95
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d96
+ test AL, strict byte 080h ; a8 80 ; 0xf2d98 ata.c:1213
+ jne short 02d90h ; 75 f4 ; 0xf2d9a
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2d9c ata.c:1217
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2d9e
+ je short 02dadh ; 74 0b ; 0xf2da0
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2da2 ata.c:1221
+ mov AL, strict byte 008h ; b0 08 ; 0xf2da5
+ out DX, AL ; ee ; 0xf2da7
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2da8 ata.c:1222
+ jmp short 02db5h ; eb 08 ; 0xf2dab
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2dad ata.c:1226
+ mov AL, strict byte 008h ; b0 08 ; 0xf2db0
+ out DX, AL ; ee ; 0xf2db2
+ xor ax, ax ; 31 c0 ; 0xf2db3 ata.c:1227
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2db5 ata.c:1228
+ pop dx ; 5a ; 0xf2db8
+ pop cx ; 59 ; 0xf2db9
+ pop bx ; 5b ; 0xf2dba
+ pop bp ; 5d ; 0xf2dbb
+ retn ; c3 ; 0xf2dbc
+ ; disGetNextSymbol 0xf2dbd LB 0x801b -> off=0x0 cb=000000000000002b uValue=00000000000f17bd 'set_diskette_current_cyl'
+set_diskette_current_cyl: ; 0xf2dbd LB 0x2b
+ push bp ; 55 ; 0xf2dbd floppy.c:81
+ mov bp, sp ; 89 e5 ; 0xf2dbe
+ push bx ; 53 ; 0xf2dc0
+ mov dh, al ; 88 c6 ; 0xf2dc1
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2dc3 floppy.c:83
+ jbe short 02dd2h ; 76 0b ; 0xf2dc5
+ push 00298h ; 68 98 02 ; 0xf2dc7 floppy.c:84
+ push strict byte 00007h ; 6a 07 ; 0xf2dca
+ call 01953h ; e8 84 eb ; 0xf2dcc
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2dcf
+ mov bl, dh ; 88 f3 ; 0xf2dd2 floppy.c:85
+ xor bh, bh ; 30 ff ; 0xf2dd4
+ add bx, 00094h ; 81 c3 94 00 ; 0xf2dd6
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2dda floppy.c:53
+ mov es, ax ; 8e c0 ; 0xf2ddd
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf2ddf
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2de2 floppy.c:86
+ pop bx ; 5b ; 0xf2de5
+ pop bp ; 5d ; 0xf2de6
+ retn ; c3 ; 0xf2de7
+ ; disGetNextSymbol 0xf2de8 LB 0x7ff0 -> off=0x0 cb=0000000000000023 uValue=00000000000f17e8 'floppy_wait_for_interrupt'
+floppy_wait_for_interrupt: ; 0xf2de8 LB 0x23
+ push bp ; 55 ; 0xf2de8 floppy.c:106
+ mov bp, sp ; 89 e5 ; 0xf2de9
+ push bx ; 53 ; 0xf2deb
+ cli ; fa ; 0xf2dec floppy.c:108
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ded floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2df0
+ mov es, ax ; 8e c0 ; 0xf2df3
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2df5
+ test AL, strict byte 080h ; a8 80 ; 0xf2df8 floppy.c:112
+ je short 02e00h ; 74 04 ; 0xf2dfa
+ and AL, strict byte 080h ; 24 80 ; 0xf2dfc floppy.c:113
+ jmp short 02e05h ; eb 05 ; 0xf2dfe
+ sti ; fb ; 0xf2e00 floppy.c:114
+ hlt ; f4 ; 0xf2e01
+ cli ; fa ; 0xf2e02
+ jmp short 02dedh ; eb e8 ; 0xf2e03 floppy.c:115
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e05 floppy.c:116
+ pop bx ; 5b ; 0xf2e08
+ pop bp ; 5d ; 0xf2e09
+ retn ; c3 ; 0xf2e0a
+ ; disGetNextSymbol 0xf2e0b LB 0x7fcd -> off=0x0 cb=0000000000000038 uValue=00000000000f180b 'floppy_wait_for_interrupt_or_timeout'
+floppy_wait_for_interrupt_or_timeout: ; 0xf2e0b LB 0x38
+ push bp ; 55 ; 0xf2e0b floppy.c:126
+ mov bp, sp ; 89 e5 ; 0xf2e0c
+ push bx ; 53 ; 0xf2e0e
+ cli ; fa ; 0xf2e0f floppy.c:128
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2e10 floppy.c:48
+ mov es, bx ; 8e c3 ; 0xf2e13
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e15
+ test al, al ; 84 c0 ; 0xf2e18 floppy.c:132
+ jne short 02e1fh ; 75 03 ; 0xf2e1a
+ sti ; fb ; 0xf2e1c floppy.c:133
+ jmp short 02e3dh ; eb 1e ; 0xf2e1d floppy.c:134
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e1f floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e22
+ mov es, ax ; 8e c0 ; 0xf2e25
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e27
+ test AL, strict byte 080h ; a8 80 ; 0xf2e2a floppy.c:138
+ je short 02e38h ; 74 0a ; 0xf2e2c
+ mov ah, al ; 88 c4 ; 0xf2e2e floppy.c:139
+ and ah, 07fh ; 80 e4 7f ; 0xf2e30
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf2e33 floppy.c:53
+ jmp short 02e3dh ; eb 05 ; 0xf2e36 floppy.c:140
+ sti ; fb ; 0xf2e38 floppy.c:142
+ hlt ; f4 ; 0xf2e39
+ cli ; fa ; 0xf2e3a
+ jmp short 02e10h ; eb d3 ; 0xf2e3b floppy.c:143
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e3d floppy.c:144
+ pop bx ; 5b ; 0xf2e40
+ pop bp ; 5d ; 0xf2e41
+ retn ; c3 ; 0xf2e42
+ ; disGetNextSymbol 0xf2e43 LB 0x7f95 -> off=0x0 cb=000000000000003f uValue=00000000000f1843 'floppy_reset_controller'
+floppy_reset_controller: ; 0xf2e43 LB 0x3f
+ push bp ; 55 ; 0xf2e43 floppy.c:148
+ mov bp, sp ; 89 e5 ; 0xf2e44
+ push bx ; 53 ; 0xf2e46
+ push cx ; 51 ; 0xf2e47
+ push dx ; 52 ; 0xf2e48
+ mov cx, ax ; 89 c1 ; 0xf2e49
+ mov dx, 003f2h ; ba f2 03 ; 0xf2e4b floppy.c:153
+ in AL, DX ; ec ; 0xf2e4e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e4f
+ mov bx, ax ; 89 c3 ; 0xf2e51
+ and AL, strict byte 0fbh ; 24 fb ; 0xf2e53 floppy.c:154
+ out DX, AL ; ee ; 0xf2e55
+ mov al, bl ; 88 d8 ; 0xf2e56 floppy.c:155
+ or AL, strict byte 004h ; 0c 04 ; 0xf2e58
+ out DX, AL ; ee ; 0xf2e5a
+ mov dx, 003f4h ; ba f4 03 ; 0xf2e5b floppy.c:159
+ in AL, DX ; ec ; 0xf2e5e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e5f
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2e61 floppy.c:160
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2e63
+ jne short 02e5bh ; 75 f4 ; 0xf2e65
+ mov bx, cx ; 89 cb ; 0xf2e67 floppy.c:163
+ add bx, 00090h ; 81 c3 90 00 ; 0xf2e69
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e6d floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf2e70
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e72
+ and AL, strict byte 0efh ; 24 ef ; 0xf2e75 floppy.c:164
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2e77 floppy.c:53
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2e7a floppy.c:167
+ pop dx ; 5a ; 0xf2e7d
+ pop cx ; 59 ; 0xf2e7e
+ pop bx ; 5b ; 0xf2e7f
+ pop bp ; 5d ; 0xf2e80
+ retn ; c3 ; 0xf2e81
+ ; disGetNextSymbol 0xf2e82 LB 0x7f56 -> off=0x0 cb=0000000000000074 uValue=00000000000f1882 'floppy_prepare_controller'
+floppy_prepare_controller: ; 0xf2e82 LB 0x74
+ push bp ; 55 ; 0xf2e82 floppy.c:169
+ mov bp, sp ; 89 e5 ; 0xf2e83
+ push bx ; 53 ; 0xf2e85
+ push cx ; 51 ; 0xf2e86
+ push dx ; 52 ; 0xf2e87
+ push ax ; 50 ; 0xf2e88
+ mov cx, ax ; 89 c1 ; 0xf2e89
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e8b floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e8e
+ mov es, ax ; 8e c0 ; 0xf2e91
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e93
+ and AL, strict byte 07fh ; 24 7f ; 0xf2e96 floppy.c:175
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2e98 floppy.c:53
+ mov dx, 003f2h ; ba f2 03 ; 0xf2e9b floppy.c:179
+ in AL, DX ; ec ; 0xf2e9e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e9f
+ and AL, strict byte 004h ; 24 04 ; 0xf2ea1
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2ea3
+ test cx, cx ; 85 c9 ; 0xf2ea6 floppy.c:180
+ je short 02eaeh ; 74 04 ; 0xf2ea8
+ mov AL, strict byte 020h ; b0 20 ; 0xf2eaa floppy.c:181
+ jmp short 02eb0h ; eb 02 ; 0xf2eac floppy.c:182
+ mov AL, strict byte 010h ; b0 10 ; 0xf2eae floppy.c:183
+ or AL, strict byte 00ch ; 0c 0c ; 0xf2eb0 floppy.c:184
+ or al, cl ; 08 c8 ; 0xf2eb2 floppy.c:185
+ mov dx, 003f2h ; ba f2 03 ; 0xf2eb4 floppy.c:186
+ out DX, AL ; ee ; 0xf2eb7
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2eb8 floppy.c:53
+ mov es, bx ; 8e c3 ; 0xf2ebb
+ mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf2ebd
+ mov bx, 0008bh ; bb 8b 00 ; 0xf2ec1 floppy.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ec4
+ shr al, 006h ; c0 e8 06 ; 0xf2ec7 floppy.c:193
+ mov dx, 003f7h ; ba f7 03 ; 0xf2eca floppy.c:194
+ out DX, AL ; ee ; 0xf2ecd
+ mov dx, 003f4h ; ba f4 03 ; 0xf2ece floppy.c:198
+ in AL, DX ; ec ; 0xf2ed1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ed2
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2ed4 floppy.c:199
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2ed6
+ jne short 02eceh ; 75 f4 ; 0xf2ed8
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2eda floppy.c:201
+ jne short 02eeeh ; 75 0e ; 0xf2ede
+ call 02de8h ; e8 05 ff ; 0xf2ee0 floppy.c:212
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ee3 floppy.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2ee6
+ mov es, dx ; 8e c2 ; 0xf2ee9
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2eeb
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2eee floppy.c:216
+ pop dx ; 5a ; 0xf2ef1
+ pop cx ; 59 ; 0xf2ef2
+ pop bx ; 5b ; 0xf2ef3
+ pop bp ; 5d ; 0xf2ef4
+ retn ; c3 ; 0xf2ef5
+ ; disGetNextSymbol 0xf2ef6 LB 0x7ee2 -> off=0x0 cb=0000000000000049 uValue=00000000000f18f6 'floppy_media_known'
+floppy_media_known: ; 0xf2ef6 LB 0x49
+ push bx ; 53 ; 0xf2ef6 floppy.c:218
+ push dx ; 52 ; 0xf2ef7
+ push bp ; 55 ; 0xf2ef8
+ mov bp, sp ; 89 e5 ; 0xf2ef9
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2efb floppy.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2efe
+ mov es, dx ; 8e c2 ; 0xf2f01
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf2f03
+ mov bl, bh ; 88 fb ; 0xf2f06 floppy.c:49
+ test ax, ax ; 85 c0 ; 0xf2f08 floppy.c:224
+ je short 02f0eh ; 74 02 ; 0xf2f0a
+ shr bl, 1 ; d0 eb ; 0xf2f0c floppy.c:225
+ and bl, 001h ; 80 e3 01 ; 0xf2f0e floppy.c:226
+ jne short 02f17h ; 75 04 ; 0xf2f11 floppy.c:227
+ xor bh, bh ; 30 ff ; 0xf2f13 floppy.c:228
+ jmp short 02f39h ; eb 22 ; 0xf2f15
+ mov bx, 00090h ; bb 90 00 ; 0xf2f17 floppy.c:230
+ test ax, ax ; 85 c0 ; 0xf2f1a floppy.c:231
+ je short 02f21h ; 74 03 ; 0xf2f1c
+ mov bx, 00091h ; bb 91 00 ; 0xf2f1e floppy.c:232
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f21 floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf2f24
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f26
+ xor ah, ah ; 30 e4 ; 0xf2f29 floppy.c:235
+ sar ax, 004h ; c1 f8 04 ; 0xf2f2b
+ and AL, strict byte 001h ; 24 01 ; 0xf2f2e
+ jne short 02f36h ; 75 04 ; 0xf2f30 floppy.c:236
+ xor bx, bx ; 31 db ; 0xf2f32 floppy.c:237
+ jmp short 02f39h ; eb 03 ; 0xf2f34
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2f36 floppy.c:240
+ mov ax, bx ; 89 d8 ; 0xf2f39 floppy.c:241
+ pop bp ; 5d ; 0xf2f3b
+ pop dx ; 5a ; 0xf2f3c
+ pop bx ; 5b ; 0xf2f3d
+ retn ; c3 ; 0xf2f3e
+ ; disGetNextSymbol 0xf2f3f LB 0x7e99 -> off=0x0 cb=0000000000000052 uValue=00000000000f193f 'floppy_read_id'
+floppy_read_id: ; 0xf2f3f LB 0x52
+ push bp ; 55 ; 0xf2f3f floppy.c:243
+ mov bp, sp ; 89 e5 ; 0xf2f40
+ push bx ; 53 ; 0xf2f42
+ push dx ; 52 ; 0xf2f43
+ push si ; 56 ; 0xf2f44
+ mov bx, ax ; 89 c3 ; 0xf2f45
+ call 02e82h ; e8 38 ff ; 0xf2f47 floppy.c:250
+ mov AL, strict byte 04ah ; b0 4a ; 0xf2f4a floppy.c:253
+ mov dx, 003f5h ; ba f5 03 ; 0xf2f4c
+ out DX, AL ; ee ; 0xf2f4f
+ mov al, bl ; 88 d8 ; 0xf2f50 floppy.c:254
+ out DX, AL ; ee ; 0xf2f52
+ call 02de8h ; e8 92 fe ; 0xf2f53 floppy.c:269
+ xor bx, bx ; 31 db ; 0xf2f56 floppy.c:273
+ jmp short 02f5fh ; eb 05 ; 0xf2f58
+ cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf2f5a
+ jnl short 02f73h ; 7d 14 ; 0xf2f5d
+ mov dx, 003f5h ; ba f5 03 ; 0xf2f5f floppy.c:274
+ in AL, DX ; ec ; 0xf2f62
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f63
+ lea si, [bx+042h] ; 8d 77 42 ; 0xf2f65
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2f68 floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf2f6b
+ mov byte [es:si], al ; 26 88 04 ; 0xf2f6d
+ inc bx ; 43 ; 0xf2f70 floppy.c:274
+ jmp short 02f5ah ; eb e7 ; 0xf2f71
+ mov bx, strict word 00042h ; bb 42 00 ; 0xf2f73 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f76
+ mov es, ax ; 8e c0 ; 0xf2f79
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f7b
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf2f7e floppy.c:49
+ je short 02f86h ; 74 04 ; 0xf2f80
+ xor ax, ax ; 31 c0 ; 0xf2f82 floppy.c:277
+ jmp short 02f89h ; eb 03 ; 0xf2f84
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2f86 floppy.c:279
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f89 floppy.c:280
+ pop si ; 5e ; 0xf2f8c
+ pop dx ; 5a ; 0xf2f8d
+ pop bx ; 5b ; 0xf2f8e
+ pop bp ; 5d ; 0xf2f8f
+ retn ; c3 ; 0xf2f90
+ ; disGetNextSymbol 0xf2f91 LB 0x7e47 -> off=0x0 cb=0000000000000041 uValue=00000000000f1991 'floppy_drive_recal'
+floppy_drive_recal: ; 0xf2f91 LB 0x41
+ push bp ; 55 ; 0xf2f91 floppy.c:282
+ mov bp, sp ; 89 e5 ; 0xf2f92
+ push bx ; 53 ; 0xf2f94
+ push dx ; 52 ; 0xf2f95
+ push si ; 56 ; 0xf2f96
+ mov bx, ax ; 89 c3 ; 0xf2f97
+ call 02e82h ; e8 e6 fe ; 0xf2f99 floppy.c:287
+ mov AL, strict byte 007h ; b0 07 ; 0xf2f9c floppy.c:290
+ mov dx, 003f5h ; ba f5 03 ; 0xf2f9e
+ out DX, AL ; ee ; 0xf2fa1
+ mov al, bl ; 88 d8 ; 0xf2fa2 floppy.c:291
+ out DX, AL ; ee ; 0xf2fa4
+ call 02de8h ; e8 40 fe ; 0xf2fa5 floppy.c:310
+ test bx, bx ; 85 db ; 0xf2fa8 floppy.c:314
+ je short 02fb3h ; 74 07 ; 0xf2faa
+ or AL, strict byte 002h ; 0c 02 ; 0xf2fac floppy.c:315
+ mov bx, 00095h ; bb 95 00 ; 0xf2fae floppy.c:316
+ jmp short 02fb8h ; eb 05 ; 0xf2fb1 floppy.c:317
+ or AL, strict byte 001h ; 0c 01 ; 0xf2fb3 floppy.c:318
+ mov bx, 00094h ; bb 94 00 ; 0xf2fb5 floppy.c:319
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf2fb8 floppy.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2fbb
+ mov es, dx ; 8e c2 ; 0xf2fbe
+ mov byte [es:si], al ; 26 88 04 ; 0xf2fc0
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf2fc3 floppy.c:53
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2fc7 floppy.c:325
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2fca
+ pop si ; 5e ; 0xf2fcd
+ pop dx ; 5a ; 0xf2fce
+ pop bx ; 5b ; 0xf2fcf
+ pop bp ; 5d ; 0xf2fd0
+ retn ; c3 ; 0xf2fd1
+ ; disGetNextSymbol 0xf2fd2 LB 0x7e06 -> off=0x0 cb=00000000000000e6 uValue=00000000000f19d2 'floppy_media_sense'
+floppy_media_sense: ; 0xf2fd2 LB 0xe6
+ push bp ; 55 ; 0xf2fd2 floppy.c:328
+ mov bp, sp ; 89 e5 ; 0xf2fd3
+ push bx ; 53 ; 0xf2fd5
+ push cx ; 51 ; 0xf2fd6
+ push dx ; 52 ; 0xf2fd7
+ push si ; 56 ; 0xf2fd8
+ push di ; 57 ; 0xf2fd9
+ mov cx, ax ; 89 c1 ; 0xf2fda
+ call 02f91h ; e8 b2 ff ; 0xf2fdc floppy.c:334
+ test ax, ax ; 85 c0 ; 0xf2fdf
+ jne short 02fe8h ; 75 05 ; 0xf2fe1
+ xor dx, dx ; 31 d2 ; 0xf2fe3 floppy.c:335
+ jmp near 030ach ; e9 c4 00 ; 0xf2fe5
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf2fe8 floppy.c:370
+ call 01664h ; e8 76 e6 ; 0xf2feb
+ test cx, cx ; 85 c9 ; 0xf2fee floppy.c:371
+ jne short 02ff9h ; 75 07 ; 0xf2ff0
+ mov dl, al ; 88 c2 ; 0xf2ff2 floppy.c:372
+ shr dl, 004h ; c0 ea 04 ; 0xf2ff4
+ jmp short 02ffeh ; eb 05 ; 0xf2ff7 floppy.c:373
+ mov dl, al ; 88 c2 ; 0xf2ff9 floppy.c:374
+ and dl, 00fh ; 80 e2 0f ; 0xf2ffb
+ cmp dl, 001h ; 80 fa 01 ; 0xf2ffe floppy.c:375
+ jne short 0300ch ; 75 09 ; 0xf3001
+ xor dl, dl ; 30 d2 ; 0xf3003 floppy.c:377
+ mov DH, strict byte 015h ; b6 15 ; 0xf3005 floppy.c:378
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf3007 floppy.c:379
+ jmp short 0304ah ; eb 3e ; 0xf300a floppy.c:381
+ cmp dl, 002h ; 80 fa 02 ; 0xf300c
+ jne short 03017h ; 75 06 ; 0xf300f
+ xor dl, dl ; 30 d2 ; 0xf3011 floppy.c:383
+ mov DH, strict byte 035h ; b6 35 ; 0xf3013 floppy.c:384
+ jmp short 03007h ; eb f0 ; 0xf3015
+ cmp dl, 003h ; 80 fa 03 ; 0xf3017 floppy.c:387
+ jne short 03022h ; 75 06 ; 0xf301a
+ xor dl, dl ; 30 d2 ; 0xf301c floppy.c:389
+ mov DH, strict byte 017h ; b6 17 ; 0xf301e floppy.c:390
+ jmp short 03007h ; eb e5 ; 0xf3020
+ cmp dl, 004h ; 80 fa 04 ; 0xf3022 floppy.c:393
+ jne short 0302dh ; 75 06 ; 0xf3025
+ xor dl, dl ; 30 d2 ; 0xf3027 floppy.c:395
+ mov DH, strict byte 017h ; b6 17 ; 0xf3029 floppy.c:396
+ jmp short 03007h ; eb da ; 0xf302b
+ cmp dl, 005h ; 80 fa 05 ; 0xf302d floppy.c:399
+ jne short 03038h ; 75 06 ; 0xf3030
+ mov DL, strict byte 0cch ; b2 cc ; 0xf3032 floppy.c:401
+ mov DH, strict byte 0d7h ; b6 d7 ; 0xf3034 floppy.c:402
+ jmp short 03007h ; eb cf ; 0xf3036
+ cmp dl, 00eh ; 80 fa 0e ; 0xf3038 floppy.c:406
+ je short 03042h ; 74 05 ; 0xf303b
+ cmp dl, 00fh ; 80 fa 0f ; 0xf303d
+ jne short 03044h ; 75 02 ; 0xf3040
+ jmp short 03032h ; eb ee ; 0xf3042
+ xor dl, dl ; 30 d2 ; 0xf3044 floppy.c:414
+ xor dh, dh ; 30 f6 ; 0xf3046 floppy.c:415
+ xor bx, bx ; 31 db ; 0xf3048 floppy.c:416
+ mov si, 0008bh ; be 8b 00 ; 0xf304a floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf304d
+ mov es, ax ; 8e c0 ; 0xf3050
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3052
+ mov ax, cx ; 89 c8 ; 0xf3055 floppy.c:420
+ call 02f3fh ; e8 e5 fe ; 0xf3057
+ test ax, ax ; 85 c0 ; 0xf305a
+ jne short 03090h ; 75 32 ; 0xf305c
+ mov al, dl ; 88 d0 ; 0xf305e floppy.c:421
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3060
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf3062
+ je short 03090h ; 74 2a ; 0xf3064
+ mov al, dl ; 88 d0 ; 0xf3066 floppy.c:425
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3068
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf306a
+ je short 0307dh ; 74 0f ; 0xf306c
+ mov ah, dl ; 88 d4 ; 0xf306e
+ and ah, 03fh ; 80 e4 3f ; 0xf3070
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf3073
+ je short 03089h ; 74 12 ; 0xf3075
+ test al, al ; 84 c0 ; 0xf3077
+ je short 03082h ; 74 07 ; 0xf3079
+ jmp short 0304ah ; eb cd ; 0xf307b
+ and dl, 03fh ; 80 e2 3f ; 0xf307d floppy.c:427
+ jmp short 0304ah ; eb c8 ; 0xf3080 floppy.c:428
+ mov dl, ah ; 88 e2 ; 0xf3082 floppy.c:430
+ or dl, 040h ; 80 ca 40 ; 0xf3084
+ jmp short 0304ah ; eb c1 ; 0xf3087 floppy.c:431
+ mov dl, ah ; 88 e2 ; 0xf3089 floppy.c:433
+ or dl, 080h ; 80 ca 80 ; 0xf308b
+ jmp short 0304ah ; eb ba ; 0xf308e floppy.c:437
+ test cx, cx ; 85 c9 ; 0xf3090 floppy.c:439
+ jne short 03099h ; 75 05 ; 0xf3092
+ mov si, 00090h ; be 90 00 ; 0xf3094 floppy.c:440
+ jmp short 0309ch ; eb 03 ; 0xf3097 floppy.c:441
+ mov si, 00091h ; be 91 00 ; 0xf3099 floppy.c:442
+ mov di, 0008bh ; bf 8b 00 ; 0xf309c floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf309f
+ mov es, ax ; 8e c0 ; 0xf30a2
+ mov byte [es:di], dl ; 26 88 15 ; 0xf30a4
+ mov byte [es:si], dh ; 26 88 34 ; 0xf30a7 floppy.c:53
+ mov dx, bx ; 89 da ; 0xf30aa floppy.c:446
+ mov ax, dx ; 89 d0 ; 0xf30ac floppy.c:447
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf30ae
+ pop di ; 5f ; 0xf30b1
+ pop si ; 5e ; 0xf30b2
+ pop dx ; 5a ; 0xf30b3
+ pop cx ; 59 ; 0xf30b4
+ pop bx ; 5b ; 0xf30b5
+ pop bp ; 5d ; 0xf30b6
+ retn ; c3 ; 0xf30b7
+ ; disGetNextSymbol 0xf30b8 LB 0x7d20 -> off=0x0 cb=0000000000000028 uValue=00000000000f1ab8 'floppy_drive_exists'
+floppy_drive_exists: ; 0xf30b8 LB 0x28
+ push bp ; 55 ; 0xf30b8 floppy.c:450
+ mov bp, sp ; 89 e5 ; 0xf30b9
+ push dx ; 52 ; 0xf30bb
+ mov dx, ax ; 89 c2 ; 0xf30bc
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf30be floppy.c:456
+ call 01664h ; e8 a0 e5 ; 0xf30c1
+ test dx, dx ; 85 d2 ; 0xf30c4 floppy.c:457
+ jne short 030cdh ; 75 05 ; 0xf30c6
+ shr al, 004h ; c0 e8 04 ; 0xf30c8 floppy.c:458
+ jmp short 030cfh ; eb 02 ; 0xf30cb floppy.c:459
+ and AL, strict byte 00fh ; 24 0f ; 0xf30cd floppy.c:460
+ test al, al ; 84 c0 ; 0xf30cf floppy.c:461
+ je short 030d8h ; 74 05 ; 0xf30d1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf30d3
+ jmp short 030dah ; eb 02 ; 0xf30d6
+ xor ah, ah ; 30 e4 ; 0xf30d8
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf30da floppy.c:462
+ pop dx ; 5a ; 0xf30dd
+ pop bp ; 5d ; 0xf30de
+ retn ; c3 ; 0xf30df
+ ; disGetNextSymbol 0xf30e0 LB 0x7cf8 -> off=0x23 cb=00000000000009ce uValue=00000000000f1b03 'int13_diskette_function'
+ db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0aeh, 03ah, 041h, 031h, 0c2h
+ db 031h, 0e3h, 031h, 0e3h, 031h, 0e3h, 031h, 097h, 035h, 061h, 037h, 04fh, 038h, 091h, 038h, 0c5h
+ db 038h, 039h, 039h
+int13_diskette_function: ; 0xf3103 LB 0x9ce
+ push bp ; 55 ; 0xf3103 floppy.c:477
+ mov bp, sp ; 89 e5 ; 0xf3104
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf3106
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf3109 floppy.c:488
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf310d floppy.c:490
+ shr ax, 008h ; c1 e8 08 ; 0xf3110
+ cmp ax, strict word 00018h ; 3d 18 00 ; 0xf3113
+ jnbe short 03174h ; 77 5c ; 0xf3116
+ push CS ; 0e ; 0xf3118
+ pop ES ; 07 ; 0xf3119
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf311a
+ mov di, 030e0h ; bf e0 30 ; 0xf311d
+ repne scasb ; f2 ae ; 0xf3120
+ sal cx, 1 ; d1 e1 ; 0xf3122
+ mov di, cx ; 89 cf ; 0xf3124
+ mov di, word [cs:di+030ebh] ; 2e 8b bd eb 30 ; 0xf3126
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf312b
+ xor dh, dh ; 30 f6 ; 0xf312e
+ mov ah, byte [bp+00eh] ; 8a 66 0e ; 0xf3130
+ mov cx, word [bp+01ch] ; 8b 4e 1c ; 0xf3133
+ or cl, 001h ; 80 c9 01 ; 0xf3136
+ mov si, dx ; 89 d6 ; 0xf3139
+ or si, 00100h ; 81 ce 00 01 ; 0xf313b
+ jmp di ; ff e7 ; 0xf313f
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3141 floppy.c:493
+ cmp bl, 001h ; 80 fb 01 ; 0xf3144 floppy.c:494
+ jbe short 03163h ; 76 1a ; 0xf3147
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3149 floppy.c:495
+ xor ah, ah ; 30 e4 ; 0xf314c
+ or ah, 001h ; 80 cc 01 ; 0xf314e
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3151
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3154 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3157
+ mov es, ax ; 8e c0 ; 0xf315a
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf315c
+ jmp near 0399bh ; e9 38 08 ; 0xf3160
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3163 floppy.c:501
+ call 01664h ; e8 fb e4 ; 0xf3166
+ test bl, bl ; 84 db ; 0xf3169 floppy.c:502
+ jne short 03177h ; 75 0a ; 0xf316b
+ mov dl, al ; 88 c2 ; 0xf316d floppy.c:503
+ shr dl, 004h ; c0 ea 04 ; 0xf316f
+ jmp short 0317ch ; eb 08 ; 0xf3172 floppy.c:504
+ jmp near 03aaeh ; e9 37 09 ; 0xf3174
+ mov dl, al ; 88 c2 ; 0xf3177 floppy.c:505
+ and dl, 00fh ; 80 e2 0f ; 0xf3179
+ test dl, dl ; 84 d2 ; 0xf317c floppy.c:506
+ jne short 0319ah ; 75 1a ; 0xf317e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3180 floppy.c:507
+ xor ah, ah ; 30 e4 ; 0xf3183
+ or ah, 080h ; 80 cc 80 ; 0xf3185
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3188
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf318b floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf318e
+ mov es, ax ; 8e c0 ; 0xf3191
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3193
+ jmp near 0399bh ; e9 01 08 ; 0xf3197
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf319a floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf319d
+ mov es, ax ; 8e c0 ; 0xf31a0
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf31a2
+ xor al, al ; 30 c0 ; 0xf31a6 floppy.c:516
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf31a8
+ mov si, strict word 00041h ; be 41 00 ; 0xf31ab floppy.c:53
+ mov byte [es:si], al ; 26 88 04 ; 0xf31ae
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf31b1 floppy.c:518
+ mov al, bl ; 88 d8 ; 0xf31b5 floppy.c:519
+ xor ah, ah ; 30 e4 ; 0xf31b7
+ xor dx, dx ; 31 d2 ; 0xf31b9
+ call 02dbdh ; e8 ff fb ; 0xf31bb
+ mov sp, bp ; 89 ec ; 0xf31be floppy.c:520
+ pop bp ; 5d ; 0xf31c0
+ retn ; c3 ; 0xf31c1
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf31c2 floppy.c:523
+ mov bx, 00441h ; bb 41 04 ; 0xf31c6 floppy.c:48
+ xor ax, ax ; 31 c0 ; 0xf31c9
+ mov es, ax ; 8e c0 ; 0xf31cb
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf31cd
+ mov al, bl ; 88 d8 ; 0xf31d0 floppy.c:525
+ xor ah, ah ; 30 e4 ; 0xf31d2
+ sal ax, 008h ; c1 e0 08 ; 0xf31d4
+ or dx, ax ; 09 c2 ; 0xf31d7
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf31d9
+ test bl, bl ; 84 db ; 0xf31dc floppy.c:526
+ je short 031beh ; 74 de ; 0xf31de
+ jmp near 0399bh ; e9 b8 07 ; 0xf31e0
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf31e3 floppy.c:534
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf31e6 floppy.c:535
+ shr ax, 008h ; c1 e8 08 ; 0xf31e9
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf31ec
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf31ef floppy.c:536
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf31f2
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf31f5 floppy.c:537
+ shr ax, 008h ; c1 e8 08 ; 0xf31f8
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf31fb
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf31fe floppy.c:538
+ cmp bl, 001h ; 80 fb 01 ; 0xf3201 floppy.c:540
+ jnbe short 03213h ; 77 0d ; 0xf3204
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf3206
+ jnbe short 03213h ; 77 09 ; 0xf3208
+ test bh, bh ; 84 ff ; 0xf320a
+ je short 03213h ; 74 05 ; 0xf320c
+ cmp bh, 048h ; 80 ff 48 ; 0xf320e
+ jbe short 03246h ; 76 33 ; 0xf3211
+ mov bx, 00ddch ; bb dc 0d ; 0xf3213 floppy.c:542
+ mov cx, ds ; 8c d9 ; 0xf3216
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3218
+ call 01910h ; e8 f2 e6 ; 0xf321b
+ push 002bdh ; 68 bd 02 ; 0xf321e
+ push 002d5h ; 68 d5 02 ; 0xf3221
+ push strict byte 00004h ; 6a 04 ; 0xf3224
+ call 01953h ; e8 2a e7 ; 0xf3226
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3229
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf322c floppy.c:543
+ xor ah, ah ; 30 e4 ; 0xf322f
+ or ah, 001h ; 80 cc 01 ; 0xf3231
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3234
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3237 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf323a
+ mov es, ax ; 8e c0 ; 0xf323d
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf323f
+ jmp near 032f0h ; e9 aa 00 ; 0xf3243
+ mov al, bl ; 88 d8 ; 0xf3246 floppy.c:545
+ xor ah, ah ; 30 e4 ; 0xf3248
+ call 030b8h ; e8 6b fe ; 0xf324a
+ test ax, ax ; 85 c0 ; 0xf324d
+ jne short 0326bh ; 75 1a ; 0xf324f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3251 floppy.c:553
+ xor ah, ah ; 30 e4 ; 0xf3254
+ or ah, 080h ; 80 cc 80 ; 0xf3256
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3259
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf325c floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf325f
+ mov es, ax ; 8e c0 ; 0xf3262
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3264
+ jmp near 032f0h ; e9 85 00 ; 0xf3268
+ mov cl, bl ; 88 d9 ; 0xf326b floppy.c:561
+ xor ch, ch ; 30 ed ; 0xf326d
+ mov ax, cx ; 89 c8 ; 0xf326f
+ call 02ef6h ; e8 82 fc ; 0xf3271
+ test ax, ax ; 85 c0 ; 0xf3274
+ jne short 0329eh ; 75 26 ; 0xf3276
+ mov ax, cx ; 89 c8 ; 0xf3278 floppy.c:562
+ call 02fd2h ; e8 55 fd ; 0xf327a
+ test ax, ax ; 85 c0 ; 0xf327d
+ jne short 0329eh ; 75 1d ; 0xf327f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3281 floppy.c:564
+ xor ah, ah ; 30 e4 ; 0xf3284
+ or ah, 00ch ; 80 cc 0c ; 0xf3286
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3289
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf328c floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf328f
+ mov es, ax ; 8e c0 ; 0xf3292
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3294
+ mov byte [bp+016h], ch ; 88 6e 16 ; 0xf3298
+ jmp near 0399bh ; e9 fd 06 ; 0xf329b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf329e floppy.c:566
+ shr ax, 008h ; c1 e8 08 ; 0xf32a1
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf32a4
+ jne short 032f7h ; 75 4e ; 0xf32a7
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf32a9 floppy.c:583
+ shr dx, 00ch ; c1 ea 0c ; 0xf32ac
+ mov ah, dl ; 88 d4 ; 0xf32af
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf32b1 floppy.c:584
+ sal cx, 004h ; c1 e1 04 ; 0xf32b4
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf32b7 floppy.c:585
+ add si, cx ; 01 ce ; 0xf32ba
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf32bc
+ cmp cx, si ; 39 f1 ; 0xf32bf floppy.c:587
+ jbe short 032c5h ; 76 02 ; 0xf32c1
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf32c3 floppy.c:589
+ mov dl, bh ; 88 fa ; 0xf32c5 floppy.c:591
+ xor dh, dh ; 30 f6 ; 0xf32c7
+ mov cx, dx ; 89 d1 ; 0xf32c9
+ sal cx, 009h ; c1 e1 09 ; 0xf32cb
+ dec cx ; 49 ; 0xf32ce
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf32cf floppy.c:594
+ add dx, cx ; 01 ca ; 0xf32d2
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf32d4 floppy.c:595
+ jnc short 032fah ; 73 21 ; 0xf32d7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32d9 floppy.c:596
+ xor ah, ah ; 30 e4 ; 0xf32dc
+ or ah, 009h ; 80 cc 09 ; 0xf32de
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf32e1
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf32e4 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf32e7
+ mov es, ax ; 8e c0 ; 0xf32ea
+ mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf32ec
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf32f0
+ jmp near 0399bh ; e9 a4 06 ; 0xf32f4
+ jmp near 03447h ; e9 4d 01 ; 0xf32f7
+ mov AL, strict byte 006h ; b0 06 ; 0xf32fa floppy.c:604
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf32fc
+ out DX, AL ; ee ; 0xf32ff
+ xor al, al ; 30 c0 ; 0xf3300 floppy.c:607
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3302
+ out DX, AL ; ee ; 0xf3305
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3306 floppy.c:608
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3309
+ out DX, AL ; ee ; 0xf330c
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf330d floppy.c:609
+ shr dx, 008h ; c1 ea 08 ; 0xf3310
+ mov al, dl ; 88 d0 ; 0xf3313
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3315
+ out DX, AL ; ee ; 0xf3318
+ xor al, al ; 30 c0 ; 0xf3319 floppy.c:611
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf331b
+ out DX, AL ; ee ; 0xf331e
+ mov al, cl ; 88 c8 ; 0xf331f floppy.c:612
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3321
+ out DX, AL ; ee ; 0xf3324
+ shr cx, 008h ; c1 e9 08 ; 0xf3325 floppy.c:613
+ mov al, cl ; 88 c8 ; 0xf3328
+ out DX, AL ; ee ; 0xf332a
+ mov AL, strict byte 046h ; b0 46 ; 0xf332b floppy.c:621
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf332d
+ out DX, AL ; ee ; 0xf3330
+ mov al, ah ; 88 e0 ; 0xf3331 floppy.c:625
+ mov dx, 00081h ; ba 81 00 ; 0xf3333
+ out DX, AL ; ee ; 0xf3336
+ mov AL, strict byte 002h ; b0 02 ; 0xf3337 floppy.c:628
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3339
+ out DX, AL ; ee ; 0xf333c
+ mov cl, bl ; 88 d9 ; 0xf333d floppy.c:633
+ xor ch, ch ; 30 ed ; 0xf333f
+ mov ax, cx ; 89 c8 ; 0xf3341
+ call 02e82h ; e8 3c fb ; 0xf3343
+ mov AL, strict byte 0e6h ; b0 e6 ; 0xf3346 floppy.c:636
+ mov dx, 003f5h ; ba f5 03 ; 0xf3348
+ out DX, AL ; ee ; 0xf334b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf334c floppy.c:637
+ xor ah, ah ; 30 e4 ; 0xf334f
+ mov dx, ax ; 89 c2 ; 0xf3351
+ sal dx, 002h ; c1 e2 02 ; 0xf3353
+ mov al, bl ; 88 d8 ; 0xf3356
+ or ax, dx ; 09 d0 ; 0xf3358
+ mov dx, 003f5h ; ba f5 03 ; 0xf335a
+ out DX, AL ; ee ; 0xf335d
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf335e floppy.c:638
+ out DX, AL ; ee ; 0xf3361
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3362 floppy.c:639
+ out DX, AL ; ee ; 0xf3365
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3366 floppy.c:640
+ out DX, AL ; ee ; 0xf3369
+ mov AL, strict byte 002h ; b0 02 ; 0xf336a floppy.c:641
+ out DX, AL ; ee ; 0xf336c
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf336d floppy.c:642
+ xor ah, ah ; 30 e4 ; 0xf3370
+ mov dl, bh ; 88 fa ; 0xf3372
+ xor dh, dh ; 30 f6 ; 0xf3374
+ add ax, dx ; 01 d0 ; 0xf3376
+ dec ax ; 48 ; 0xf3378
+ mov dx, 003f5h ; ba f5 03 ; 0xf3379
+ out DX, AL ; ee ; 0xf337c
+ xor al, al ; 30 c0 ; 0xf337d floppy.c:643
+ out DX, AL ; ee ; 0xf337f
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf3380 floppy.c:644
+ out DX, AL ; ee ; 0xf3382
+ call 02e0bh ; e8 85 fa ; 0xf3383 floppy.c:676
+ test al, al ; 84 c0 ; 0xf3386 floppy.c:677
+ jne short 033a9h ; 75 1f ; 0xf3388
+ mov ax, cx ; 89 c8 ; 0xf338a floppy.c:679
+ call 02e43h ; e8 b4 fa ; 0xf338c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf338f floppy.c:680
+ xor ah, ah ; 30 e4 ; 0xf3392
+ or ah, 080h ; 80 cc 80 ; 0xf3394
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3397
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf339a floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf339d
+ mov es, ax ; 8e c0 ; 0xf33a0
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf33a2
+ jmp near 03298h ; e9 ef fe ; 0xf33a6
+ mov dx, 003f4h ; ba f4 03 ; 0xf33a9 floppy.c:689
+ in AL, DX ; ec ; 0xf33ac
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf33ad
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf33af floppy.c:690
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf33b1
+ je short 033c3h ; 74 0e ; 0xf33b3
+ push 002bdh ; 68 bd 02 ; 0xf33b5 floppy.c:691
+ push 002f0h ; 68 f0 02 ; 0xf33b8
+ push strict byte 00007h ; 6a 07 ; 0xf33bb
+ call 01953h ; e8 93 e5 ; 0xf33bd
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf33c0
+ xor cx, cx ; 31 c9 ; 0xf33c3 floppy.c:694
+ jmp short 033cch ; eb 05 ; 0xf33c5
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf33c7
+ jnl short 033e2h ; 7d 16 ; 0xf33ca
+ mov dx, 003f5h ; ba f5 03 ; 0xf33cc floppy.c:695
+ in AL, DX ; ec ; 0xf33cf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf33d0
+ mov si, cx ; 89 ce ; 0xf33d2
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf33d4
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf33d7 floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf33da
+ mov byte [es:si], al ; 26 88 04 ; 0xf33dc
+ inc cx ; 41 ; 0xf33df floppy.c:695
+ jmp short 033c7h ; eb e5 ; 0xf33e0
+ mov si, strict word 00042h ; be 42 00 ; 0xf33e2 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf33e5
+ mov es, ax ; 8e c0 ; 0xf33e8
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf33ea
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf33ed floppy.c:49
+ je short 03412h ; 74 21 ; 0xf33ef
+ mov al, bl ; 88 d8 ; 0xf33f1 floppy.c:699
+ xor ah, ah ; 30 e4 ; 0xf33f3
+ call 02e43h ; e8 4b fa ; 0xf33f5
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf33f8 floppy.c:700
+ xor ah, ah ; 30 e4 ; 0xf33fb
+ or ah, 020h ; 80 cc 20 ; 0xf33fd
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3400
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3403 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3406
+ mov es, ax ; 8e c0 ; 0xf3409
+ mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf340b
+ jmp near 032f0h ; e9 de fe ; 0xf340f
+ mov al, bh ; 88 f8 ; 0xf3412 floppy.c:708
+ xor ah, ah ; 30 e4 ; 0xf3414
+ sal ax, 009h ; c1 e0 09 ; 0xf3416
+ cwd ; 99 ; 0xf3419
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf341a
+ sar ax, 1 ; d1 f8 ; 0xf341c
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf341e
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3421
+ mov di, si ; 89 f7 ; 0xf3424
+ mov cx, ax ; 89 c1 ; 0xf3426
+ mov es, dx ; 8e c2 ; 0xf3428
+ push DS ; 1e ; 0xf342a
+ mov ds, dx ; 8e da ; 0xf342b
+ rep movsw ; f3 a5 ; 0xf342d
+ pop DS ; 1f ; 0xf342f
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf3430 floppy.c:712
+ xor dh, dh ; 30 f6 ; 0xf3433
+ mov al, bl ; 88 d8 ; 0xf3435
+ xor ah, ah ; 30 e4 ; 0xf3437
+ call 02dbdh ; e8 81 f9 ; 0xf3439
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf343c floppy.c:714
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3440 floppy.c:715
+ jmp near 031beh ; e9 77 fd ; 0xf3444 floppy.c:716
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3447 floppy.c:717
+ shr ax, 008h ; c1 e8 08 ; 0xf344a
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf344d
+ je short 03455h ; 74 03 ; 0xf3450
+ jmp near 03580h ; e9 2b 01 ; 0xf3452
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf3455 floppy.c:728
+ shr cx, 00ch ; c1 e9 0c ; 0xf3458
+ mov ah, cl ; 88 cc ; 0xf345b
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf345d floppy.c:729
+ sal dx, 004h ; c1 e2 04 ; 0xf3460
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3463 floppy.c:730
+ add si, dx ; 01 d6 ; 0xf3466
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3468
+ cmp dx, si ; 39 f2 ; 0xf346b floppy.c:732
+ jbe short 03471h ; 76 02 ; 0xf346d
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf346f floppy.c:734
+ mov dl, bh ; 88 fa ; 0xf3471 floppy.c:736
+ xor dh, dh ; 30 f6 ; 0xf3473
+ mov cx, dx ; 89 d1 ; 0xf3475
+ sal cx, 009h ; c1 e1 09 ; 0xf3477
+ dec cx ; 49 ; 0xf347a
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf347b floppy.c:739
+ add dx, cx ; 01 ca ; 0xf347e
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf3480 floppy.c:740
+ jnc short 03488h ; 73 03 ; 0xf3483
+ jmp near 032d9h ; e9 51 fe ; 0xf3485
+ mov AL, strict byte 006h ; b0 06 ; 0xf3488 floppy.c:749
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf348a
+ out DX, AL ; ee ; 0xf348d
+ xor al, al ; 30 c0 ; 0xf348e floppy.c:751
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3490
+ out DX, AL ; ee ; 0xf3493
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3494 floppy.c:752
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3497
+ out DX, AL ; ee ; 0xf349a
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf349b floppy.c:753
+ shr dx, 008h ; c1 ea 08 ; 0xf349e
+ mov al, dl ; 88 d0 ; 0xf34a1
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf34a3
+ out DX, AL ; ee ; 0xf34a6
+ xor al, al ; 30 c0 ; 0xf34a7 floppy.c:754
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34a9
+ out DX, AL ; ee ; 0xf34ac
+ mov al, cl ; 88 c8 ; 0xf34ad floppy.c:755
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf34af
+ out DX, AL ; ee ; 0xf34b2
+ shr cx, 008h ; c1 e9 08 ; 0xf34b3 floppy.c:756
+ mov al, cl ; 88 c8 ; 0xf34b6
+ out DX, AL ; ee ; 0xf34b8
+ mov AL, strict byte 04ah ; b0 4a ; 0xf34b9 floppy.c:763
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf34bb
+ out DX, AL ; ee ; 0xf34be
+ mov al, ah ; 88 e0 ; 0xf34bf floppy.c:766
+ mov dx, 00081h ; ba 81 00 ; 0xf34c1
+ out DX, AL ; ee ; 0xf34c4
+ mov AL, strict byte 002h ; b0 02 ; 0xf34c5 floppy.c:769
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf34c7
+ out DX, AL ; ee ; 0xf34ca
+ mov cl, bl ; 88 d9 ; 0xf34cb floppy.c:774
+ xor ch, ch ; 30 ed ; 0xf34cd
+ mov ax, cx ; 89 c8 ; 0xf34cf
+ call 02e82h ; e8 ae f9 ; 0xf34d1
+ mov AL, strict byte 0c5h ; b0 c5 ; 0xf34d4 floppy.c:777
+ mov dx, 003f5h ; ba f5 03 ; 0xf34d6
+ out DX, AL ; ee ; 0xf34d9
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf34da floppy.c:778
+ xor ah, ah ; 30 e4 ; 0xf34dd
+ mov dx, ax ; 89 c2 ; 0xf34df
+ sal dx, 002h ; c1 e2 02 ; 0xf34e1
+ mov al, bl ; 88 d8 ; 0xf34e4
+ or ax, dx ; 09 d0 ; 0xf34e6
+ mov dx, 003f5h ; ba f5 03 ; 0xf34e8
+ out DX, AL ; ee ; 0xf34eb
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf34ec floppy.c:779
+ out DX, AL ; ee ; 0xf34ef
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf34f0 floppy.c:780
+ out DX, AL ; ee ; 0xf34f3
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf34f4 floppy.c:781
+ out DX, AL ; ee ; 0xf34f7
+ mov AL, strict byte 002h ; b0 02 ; 0xf34f8 floppy.c:782
+ out DX, AL ; ee ; 0xf34fa
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf34fb floppy.c:783
+ xor dh, dh ; 30 f6 ; 0xf34fe
+ mov al, bh ; 88 f8 ; 0xf3500
+ xor ah, ah ; 30 e4 ; 0xf3502
+ add ax, dx ; 01 d0 ; 0xf3504
+ dec ax ; 48 ; 0xf3506
+ mov dx, 003f5h ; ba f5 03 ; 0xf3507
+ out DX, AL ; ee ; 0xf350a
+ xor al, al ; 30 c0 ; 0xf350b floppy.c:784
+ out DX, AL ; ee ; 0xf350d
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf350e floppy.c:785
+ out DX, AL ; ee ; 0xf3510
+ call 02e0bh ; e8 f7 f8 ; 0xf3511 floppy.c:814
+ test al, al ; 84 c0 ; 0xf3514 floppy.c:815
+ jne short 0351bh ; 75 03 ; 0xf3516
+ jmp near 0338ah ; e9 6f fe ; 0xf3518
+ mov dx, 003f4h ; ba f4 03 ; 0xf351b floppy.c:826
+ in AL, DX ; ec ; 0xf351e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf351f
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3521 floppy.c:827
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3523
+ je short 03535h ; 74 0e ; 0xf3525
+ push 002bdh ; 68 bd 02 ; 0xf3527 floppy.c:828
+ push 002f0h ; 68 f0 02 ; 0xf352a
+ push strict byte 00007h ; 6a 07 ; 0xf352d
+ call 01953h ; e8 21 e4 ; 0xf352f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3532
+ xor cx, cx ; 31 c9 ; 0xf3535 floppy.c:831
+ jmp short 0353eh ; eb 05 ; 0xf3537
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3539
+ jnl short 03554h ; 7d 16 ; 0xf353c
+ mov dx, 003f5h ; ba f5 03 ; 0xf353e floppy.c:832
+ in AL, DX ; ec ; 0xf3541
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3542
+ mov si, cx ; 89 ce ; 0xf3544
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf3546
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3549 floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf354c
+ mov byte [es:si], al ; 26 88 04 ; 0xf354e
+ inc cx ; 41 ; 0xf3551 floppy.c:832
+ jmp short 03539h ; eb e5 ; 0xf3552
+ mov si, strict word 00042h ; be 42 00 ; 0xf3554 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3557
+ mov es, ax ; 8e c0 ; 0xf355a
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf355c
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf355f floppy.c:49
+ jne short 03566h ; 75 03 ; 0xf3561
+ jmp near 03430h ; e9 ca fe ; 0xf3563
+ mov bx, strict word 00043h ; bb 43 00 ; 0xf3566 floppy.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3569
+ test AL, strict byte 002h ; a8 02 ; 0xf356c floppy.c:49
+ je short 03578h ; 74 08 ; 0xf356e
+ mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf3570 floppy.c:839
+ jmp near 0399bh ; e9 23 04 ; 0xf3575
+ mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf3578 floppy.c:842
+ jmp near 0399bh ; e9 1b 04 ; 0xf357d floppy.c:843
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf3580 floppy.c:858
+ xor dh, dh ; 30 f6 ; 0xf3583
+ mov al, bl ; 88 d8 ; 0xf3585
+ xor ah, ah ; 30 e4 ; 0xf3587
+ call 02dbdh ; e8 31 f8 ; 0xf3589
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf358c floppy.c:860
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3590 floppy.c:861
+ jmp near 031beh ; e9 27 fc ; 0xf3594 floppy.c:862
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3597 floppy.c:869
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf359a floppy.c:870
+ shr ax, 008h ; c1 e8 08 ; 0xf359d
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf35a0
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf35a3 floppy.c:871
+ shr dx, 008h ; c1 ea 08 ; 0xf35a6
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf35a9
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf35ac floppy.c:872
+ cmp bl, 001h ; 80 fb 01 ; 0xf35af floppy.c:874
+ jnbe short 035c6h ; 77 12 ; 0xf35b2
+ cmp dl, 001h ; 80 fa 01 ; 0xf35b4
+ jnbe short 035c6h ; 77 0d ; 0xf35b7
+ cmp AL, strict byte 04fh ; 3c 4f ; 0xf35b9
+ jnbe short 035c6h ; 77 09 ; 0xf35bb
+ test bh, bh ; 84 ff ; 0xf35bd
+ je short 035c6h ; 74 05 ; 0xf35bf
+ cmp bh, 012h ; 80 ff 12 ; 0xf35c1
+ jbe short 035e1h ; 76 1b ; 0xf35c4
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf35c6 floppy.c:876
+ xor ah, ah ; 30 e4 ; 0xf35c9
+ or ah, 001h ; 80 cc 01 ; 0xf35cb
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf35ce
+ mov si, strict word 00041h ; be 41 00 ; 0xf35d1 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf35d4
+ mov es, ax ; 8e c0 ; 0xf35d7
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf35d9
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf35dd floppy.c:878
+ mov al, bl ; 88 d8 ; 0xf35e1 floppy.c:882
+ xor ah, ah ; 30 e4 ; 0xf35e3
+ call 030b8h ; e8 d0 fa ; 0xf35e5
+ test ax, ax ; 85 c0 ; 0xf35e8
+ jne short 03606h ; 75 1a ; 0xf35ea
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf35ec floppy.c:883
+ xor ah, ah ; 30 e4 ; 0xf35ef
+ or ah, 080h ; 80 cc 80 ; 0xf35f1
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf35f4
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf35f7 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf35fa
+ mov es, ax ; 8e c0 ; 0xf35fd
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf35ff
+ jmp near 0399bh ; e9 95 03 ; 0xf3603
+ mov cl, bl ; 88 d9 ; 0xf3606 floppy.c:890
+ xor ch, ch ; 30 ed ; 0xf3608
+ mov ax, cx ; 89 c8 ; 0xf360a
+ call 02ef6h ; e8 e7 f8 ; 0xf360c
+ test ax, ax ; 85 c0 ; 0xf360f
+ jne short 0361fh ; 75 0c ; 0xf3611
+ mov ax, cx ; 89 c8 ; 0xf3613 floppy.c:891
+ call 02fd2h ; e8 ba f9 ; 0xf3615
+ test ax, ax ; 85 c0 ; 0xf3618
+ jne short 0361fh ; 75 03 ; 0xf361a
+ jmp near 03281h ; e9 62 fc ; 0xf361c
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf361f floppy.c:902
+ shr cx, 00ch ; c1 e9 0c ; 0xf3622
+ mov ah, cl ; 88 cc ; 0xf3625
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3627 floppy.c:903
+ sal dx, 004h ; c1 e2 04 ; 0xf362a
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf362d floppy.c:904
+ add si, dx ; 01 d6 ; 0xf3630
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3632
+ cmp dx, si ; 39 f2 ; 0xf3635 floppy.c:906
+ jbe short 0363bh ; 76 02 ; 0xf3637
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf3639 floppy.c:908
+ mov dl, bh ; 88 fa ; 0xf363b floppy.c:910
+ xor dh, dh ; 30 f6 ; 0xf363d
+ mov cx, dx ; 89 d1 ; 0xf363f
+ sal cx, 002h ; c1 e1 02 ; 0xf3641
+ dec cx ; 49 ; 0xf3644
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3645 floppy.c:913
+ add dx, cx ; 01 ca ; 0xf3648
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf364a floppy.c:914
+ jnc short 03652h ; 73 03 ; 0xf364d
+ jmp near 032d9h ; e9 87 fc ; 0xf364f
+ mov AL, strict byte 006h ; b0 06 ; 0xf3652 floppy.c:922
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3654
+ out DX, AL ; ee ; 0xf3657
+ xor al, al ; 30 c0 ; 0xf3658 floppy.c:923
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf365a
+ out DX, AL ; ee ; 0xf365d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf365e floppy.c:924
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3661
+ out DX, AL ; ee ; 0xf3664
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3665 floppy.c:925
+ shr dx, 008h ; c1 ea 08 ; 0xf3668
+ mov al, dl ; 88 d0 ; 0xf366b
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf366d
+ out DX, AL ; ee ; 0xf3670
+ xor al, al ; 30 c0 ; 0xf3671 floppy.c:926
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3673
+ out DX, AL ; ee ; 0xf3676
+ mov al, cl ; 88 c8 ; 0xf3677 floppy.c:927
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3679
+ out DX, AL ; ee ; 0xf367c
+ shr cx, 008h ; c1 e9 08 ; 0xf367d floppy.c:928
+ mov al, cl ; 88 c8 ; 0xf3680
+ out DX, AL ; ee ; 0xf3682
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3683 floppy.c:931
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3685
+ out DX, AL ; ee ; 0xf3688
+ mov al, ah ; 88 e0 ; 0xf3689 floppy.c:933
+ mov dx, 00081h ; ba 81 00 ; 0xf368b
+ out DX, AL ; ee ; 0xf368e
+ mov AL, strict byte 002h ; b0 02 ; 0xf368f floppy.c:934
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3691
+ out DX, AL ; ee ; 0xf3694
+ mov cl, bl ; 88 d9 ; 0xf3695 floppy.c:937
+ xor ch, ch ; 30 ed ; 0xf3697
+ mov ax, cx ; 89 c8 ; 0xf3699
+ call 02e82h ; e8 e4 f7 ; 0xf369b
+ mov AL, strict byte 00fh ; b0 0f ; 0xf369e floppy.c:940
+ mov dx, 003f5h ; ba f5 03 ; 0xf36a0
+ out DX, AL ; ee ; 0xf36a3
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf36a4 floppy.c:941
+ xor ah, ah ; 30 e4 ; 0xf36a7
+ mov dx, ax ; 89 c2 ; 0xf36a9
+ sal dx, 002h ; c1 e2 02 ; 0xf36ab
+ mov al, bl ; 88 d8 ; 0xf36ae
+ or dx, ax ; 09 c2 ; 0xf36b0
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf36b2
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf36b5
+ mov dx, 003f5h ; ba f5 03 ; 0xf36b8
+ out DX, AL ; ee ; 0xf36bb
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf36bc floppy.c:942
+ out DX, AL ; ee ; 0xf36bf
+ mov AL, strict byte 04dh ; b0 4d ; 0xf36c0 floppy.c:945
+ out DX, AL ; ee ; 0xf36c2
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf36c3 floppy.c:946
+ out DX, AL ; ee ; 0xf36c6
+ mov AL, strict byte 002h ; b0 02 ; 0xf36c7 floppy.c:947
+ out DX, AL ; ee ; 0xf36c9
+ mov al, bh ; 88 f8 ; 0xf36ca floppy.c:948
+ out DX, AL ; ee ; 0xf36cc
+ xor al, bh ; 30 f8 ; 0xf36cd floppy.c:949
+ out DX, AL ; ee ; 0xf36cf
+ mov AL, strict byte 0f6h ; b0 f6 ; 0xf36d0 floppy.c:950
+ out DX, AL ; ee ; 0xf36d2
+ call 02e0bh ; e8 35 f7 ; 0xf36d3 floppy.c:978
+ test al, al ; 84 c0 ; 0xf36d6 floppy.c:979
+ jne short 036e2h ; 75 08 ; 0xf36d8
+ mov ax, cx ; 89 c8 ; 0xf36da floppy.c:980
+ call 02e43h ; e8 64 f7 ; 0xf36dc
+ jmp near 035ech ; e9 0a ff ; 0xf36df floppy.c:78
+ mov dx, 003f4h ; ba f4 03 ; 0xf36e2 floppy.c:989
+ in AL, DX ; ec ; 0xf36e5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf36e6
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf36e8 floppy.c:990
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf36ea
+ je short 036fch ; 74 0e ; 0xf36ec
+ push 002bdh ; 68 bd 02 ; 0xf36ee floppy.c:991
+ push 002f0h ; 68 f0 02 ; 0xf36f1
+ push strict byte 00007h ; 6a 07 ; 0xf36f4
+ call 01953h ; e8 5a e2 ; 0xf36f6
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf36f9
+ xor cx, cx ; 31 c9 ; 0xf36fc floppy.c:994
+ jmp short 03705h ; eb 05 ; 0xf36fe
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3700
+ jnl short 0371bh ; 7d 16 ; 0xf3703
+ mov dx, 003f5h ; ba f5 03 ; 0xf3705 floppy.c:995
+ in AL, DX ; ec ; 0xf3708
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3709
+ mov si, cx ; 89 ce ; 0xf370b
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf370d
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3710 floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf3713
+ mov byte [es:si], al ; 26 88 04 ; 0xf3715
+ inc cx ; 41 ; 0xf3718 floppy.c:995
+ jmp short 03700h ; eb e5 ; 0xf3719
+ mov si, strict word 00042h ; be 42 00 ; 0xf371b floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf371e
+ mov es, ax ; 8e c0 ; 0xf3721
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3723
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3726 floppy.c:49
+ je short 03745h ; 74 1b ; 0xf3728
+ mov si, strict word 00043h ; be 43 00 ; 0xf372a floppy.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf372d
+ test AL, strict byte 002h ; a8 02 ; 0xf3730 floppy.c:49
+ je short 03737h ; 74 03 ; 0xf3732
+ jmp near 03570h ; e9 39 fe ; 0xf3734
+ push 002bdh ; 68 bd 02 ; 0xf3737 floppy.c:1006
+ push 00304h ; 68 04 03 ; 0xf373a
+ push strict byte 00007h ; 6a 07 ; 0xf373d
+ call 01953h ; e8 11 e2 ; 0xf373f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3742
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3745 floppy.c:1010
+ mov si, strict word 00041h ; be 41 00 ; 0xf3749 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf374c
+ mov es, ax ; 8e c0 ; 0xf374f
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf3751
+ mov al, bl ; 88 d8 ; 0xf3755 floppy.c:1012
+ xor ah, ah ; 30 e4 ; 0xf3757
+ xor dx, dx ; 31 d2 ; 0xf3759
+ call 02dbdh ; e8 5f f6 ; 0xf375b
+ jmp near 03440h ; e9 df fc ; 0xf375e
+ mov bl, ah ; 88 e3 ; 0xf3761 floppy.c:1019
+ cmp ah, 001h ; 80 fc 01 ; 0xf3763 floppy.c:1021
+ jbe short 03786h ; 76 1e ; 0xf3766
+ xor ax, ax ; 31 c0 ; 0xf3768 floppy.c:1022
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf376a
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf376d floppy.c:1023
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf3770 floppy.c:1024
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf3773 floppy.c:1025
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf3776 floppy.c:1026
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3779 floppy.c:1027
+ mov al, bh ; 88 f8 ; 0xf377c floppy.c:1028
+ xor ah, ah ; 30 e4 ; 0xf377e
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf3780
+ jmp near 038a5h ; e9 1f 01 ; 0xf3783
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3786 floppy.c:1029
+ call 01664h ; e8 d8 de ; 0xf3789
+ mov dl, al ; 88 c2 ; 0xf378c
+ xor bh, bh ; 30 ff ; 0xf378e floppy.c:1035
+ test AL, strict byte 0f0h ; a8 f0 ; 0xf3790 floppy.c:1036
+ je short 03796h ; 74 02 ; 0xf3792
+ mov BH, strict byte 001h ; b7 01 ; 0xf3794 floppy.c:1037
+ test dl, 00fh ; f6 c2 0f ; 0xf3796 floppy.c:1038
+ je short 0379dh ; 74 02 ; 0xf3799
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf379b floppy.c:1039
+ test bl, bl ; 84 db ; 0xf379d floppy.c:1041
+ jne short 037a6h ; 75 05 ; 0xf379f
+ shr dl, 004h ; c0 ea 04 ; 0xf37a1 floppy.c:1042
+ jmp short 037a9h ; eb 03 ; 0xf37a4 floppy.c:1043
+ and dl, 00fh ; 80 e2 0f ; 0xf37a6 floppy.c:1044
+ mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf37a9 floppy.c:1047
+ mov al, dl ; 88 d0 ; 0xf37ad
+ xor ah, ah ; 30 e4 ; 0xf37af
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf37b1
+ xor al, dl ; 30 d0 ; 0xf37b4 floppy.c:1048
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf37b6
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf37b9 floppy.c:1050
+ mov cl, bh ; 88 f9 ; 0xf37bc
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf37be
+ mov ax, cx ; 89 c8 ; 0xf37c1 floppy.c:1051
+ xor ah, ch ; 30 ec ; 0xf37c3
+ or ah, 001h ; 80 cc 01 ; 0xf37c5
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf37c8
+ cmp dl, 003h ; 80 fa 03 ; 0xf37cb floppy.c:1053
+ jc short 037e5h ; 72 15 ; 0xf37ce
+ jbe short 0380ch ; 76 3a ; 0xf37d0
+ cmp dl, 005h ; 80 fa 05 ; 0xf37d2
+ jc short 03813h ; 72 3c ; 0xf37d5
+ jbe short 0381ah ; 76 41 ; 0xf37d7
+ cmp dl, 00fh ; 80 fa 0f ; 0xf37d9
+ je short 03828h ; 74 4a ; 0xf37dc
+ cmp dl, 00eh ; 80 fa 0e ; 0xf37de
+ je short 03821h ; 74 3e ; 0xf37e1
+ jmp short 0382fh ; eb 4a ; 0xf37e3
+ cmp dl, 002h ; 80 fa 02 ; 0xf37e5
+ je short 03805h ; 74 1b ; 0xf37e8
+ cmp dl, 001h ; 80 fa 01 ; 0xf37ea
+ je short 037feh ; 74 0f ; 0xf37ed
+ test dl, dl ; 84 d2 ; 0xf37ef
+ jne short 0382fh ; 75 3c ; 0xf37f1
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf37f3 floppy.c:1055
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf37f8 floppy.c:1056
+ jmp short 0383dh ; eb 3f ; 0xf37fc floppy.c:1057
+ mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf37fe floppy.c:1060
+ jmp short 0383dh ; eb 38 ; 0xf3803 floppy.c:1061
+ mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf3805 floppy.c:1064
+ jmp short 0383dh ; eb 31 ; 0xf380a floppy.c:1065
+ mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf380c floppy.c:1068
+ jmp short 0383dh ; eb 2a ; 0xf3811 floppy.c:1069
+ mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf3813 floppy.c:1072
+ jmp short 0383dh ; eb 23 ; 0xf3818 floppy.c:1073
+ mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf381a floppy.c:1076
+ jmp short 0383dh ; eb 1c ; 0xf381f floppy.c:1077
+ mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf3821 floppy.c:1080
+ jmp short 0383dh ; eb 15 ; 0xf3826 floppy.c:1081
+ mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf3828 floppy.c:1084
+ jmp short 0383dh ; eb 0e ; 0xf382d floppy.c:1085
+ push 002bdh ; 68 bd 02 ; 0xf382f floppy.c:1089
+ push 00315h ; 68 15 03 ; 0xf3832
+ push strict byte 00007h ; 6a 07 ; 0xf3835
+ call 01953h ; e8 19 e1 ; 0xf3837
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf383a
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf383d floppy.c:1093
+ mov al, dl ; 88 d0 ; 0xf3842 floppy.c:1094
+ xor ah, ah ; 30 e4 ; 0xf3844
+ call 03ad1h ; e8 88 02 ; 0xf3846
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3849
+ jmp near 03440h ; e9 f1 fb ; 0xf384c
+ mov bl, ah ; 88 e3 ; 0xf384f floppy.c:1101
+ cmp ah, 001h ; 80 fc 01 ; 0xf3851 floppy.c:1102
+ jbe short 0385bh ; 76 05 ; 0xf3854
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf3856 floppy.c:1103
+ jmp short 038a5h ; eb 4a ; 0xf3859
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf385b floppy.c:1109
+ call 01664h ; e8 03 de ; 0xf385e
+ test bl, bl ; 84 db ; 0xf3861 floppy.c:1110
+ jne short 0386ch ; 75 07 ; 0xf3863
+ mov dl, al ; 88 c2 ; 0xf3865 floppy.c:1111
+ shr dl, 004h ; c0 ea 04 ; 0xf3867
+ jmp short 03871h ; eb 05 ; 0xf386a floppy.c:1112
+ mov dl, al ; 88 c2 ; 0xf386c floppy.c:1113
+ and dl, 00fh ; 80 e2 0f ; 0xf386e
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3871 floppy.c:1114
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3875
+ xor ah, ah ; 30 e4 ; 0xf3878
+ test dl, dl ; 84 d2 ; 0xf387a floppy.c:1115
+ je short 0388bh ; 74 0d ; 0xf387c
+ cmp dl, 001h ; 80 fa 01 ; 0xf387e floppy.c:1116
+ jbe short 03888h ; 76 05 ; 0xf3881
+ or ah, 002h ; 80 cc 02 ; 0xf3883 floppy.c:1118
+ jmp short 0388bh ; eb 03 ; 0xf3886 floppy.c:1119
+ or ah, 001h ; 80 cc 01 ; 0xf3888 floppy.c:1120
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf388b
+ jmp near 031beh ; e9 2d f9 ; 0xf388e floppy.c:1123
+ cmp ah, 001h ; 80 fc 01 ; 0xf3891 floppy.c:1128
+ jbe short 038abh ; 76 15 ; 0xf3894
+ mov word [bp+016h], si ; 89 76 16 ; 0xf3896 floppy.c:1129
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3899 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf389c
+ mov es, ax ; 8e c0 ; 0xf389f
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf38a1
+ mov word [bp+01ch], cx ; 89 4e 1c ; 0xf38a5
+ jmp near 031beh ; e9 13 f9 ; 0xf38a8
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf38ab floppy.c:1135
+ xor ah, ah ; 30 e4 ; 0xf38ae
+ or ah, 006h ; 80 cc 06 ; 0xf38b0
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf38b3
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf38b6 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf38b9
+ mov es, ax ; 8e c0 ; 0xf38bc
+ mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf38be
+ jmp near 0399bh ; e9 d6 00 ; 0xf38c2
+ mov bl, ah ; 88 e3 ; 0xf38c5 floppy.c:1144
+ mov dl, byte [bp+016h] ; 8a 56 16 ; 0xf38c7 floppy.c:1152
+ cmp ah, 001h ; 80 fc 01 ; 0xf38ca floppy.c:1156
+ jnbe short 03896h ; 77 c7 ; 0xf38cd
+ mov al, bl ; 88 d8 ; 0xf38cf floppy.c:1164
+ xor ah, ah ; 30 e4 ; 0xf38d1
+ call 030b8h ; e8 e2 f7 ; 0xf38d3
+ test ax, ax ; 85 c0 ; 0xf38d6
+ jne short 038ddh ; 75 03 ; 0xf38d8
+ jmp near 035ech ; e9 0f fd ; 0xf38da
+ test bl, bl ; 84 db ; 0xf38dd floppy.c:1172
+ je short 038e6h ; 74 05 ; 0xf38df
+ mov bx, 00091h ; bb 91 00 ; 0xf38e1
+ jmp short 038e9h ; eb 03 ; 0xf38e4
+ mov bx, 00090h ; bb 90 00 ; 0xf38e6
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf38e9
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf38ec floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf38ef
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf38f1
+ and bl, 00fh ; 80 e3 0f ; 0xf38f4 floppy.c:1176
+ cmp dl, 002h ; 80 fa 02 ; 0xf38f7 floppy.c:1178
+ jc short 0390bh ; 72 0f ; 0xf38fa
+ jbe short 03918h ; 76 1a ; 0xf38fc
+ cmp dl, 004h ; 80 fa 04 ; 0xf38fe
+ je short 03913h ; 74 10 ; 0xf3901
+ cmp dl, 003h ; 80 fa 03 ; 0xf3903
+ je short 0391dh ; 74 15 ; 0xf3906
+ jmp near 03149h ; e9 3e f8 ; 0xf3908
+ cmp dl, 001h ; 80 fa 01 ; 0xf390b
+ je short 03913h ; 74 03 ; 0xf390e
+ jmp near 03149h ; e9 36 f8 ; 0xf3910
+ or bl, 090h ; 80 cb 90 ; 0xf3913 floppy.c:1181
+ jmp short 03920h ; eb 08 ; 0xf3916 floppy.c:1182
+ or bl, 070h ; 80 cb 70 ; 0xf3918 floppy.c:1185
+ jmp short 03920h ; eb 03 ; 0xf391b floppy.c:1186
+ or bl, 010h ; 80 cb 10 ; 0xf391d floppy.c:1189
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3920 floppy.c:53
+ mov es, ax ; 8e c0 ; 0xf3923
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3925
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3928
+ xor al, al ; 30 c0 ; 0xf392b floppy.c:1208
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf392d
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3930 floppy.c:53
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3933
+ jmp near 03440h ; e9 07 fb ; 0xf3936
+ mov bl, ah ; 88 e3 ; 0xf3939 floppy.c:1218
+ mov dl, byte [bp+014h] ; 8a 56 14 ; 0xf393b floppy.c:1220
+ mov bh, dl ; 88 d7 ; 0xf393e floppy.c:1221
+ and bh, 03fh ; 80 e7 3f ; 0xf3940
+ sar dx, 006h ; c1 fa 06 ; 0xf3943 floppy.c:1222
+ sal dx, 008h ; c1 e2 08 ; 0xf3946
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3949
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf394c
+ shr dx, 008h ; c1 ea 08 ; 0xf394f
+ add dx, word [bp-00ch] ; 03 56 f4 ; 0xf3952
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf3955
+ cmp ah, 001h ; 80 fc 01 ; 0xf3958 floppy.c:1227
+ jbe short 03960h ; 76 03 ; 0xf395b
+ jmp near 03896h ; e9 36 ff ; 0xf395d
+ mov al, bl ; 88 d8 ; 0xf3960 floppy.c:1235
+ xor ah, ah ; 30 e4 ; 0xf3962
+ call 030b8h ; e8 51 f7 ; 0xf3964
+ test ax, ax ; 85 c0 ; 0xf3967
+ jne short 0396eh ; 75 03 ; 0xf3969
+ jmp near 035ech ; e9 7e fc ; 0xf396b
+ mov cl, bl ; 88 d9 ; 0xf396e floppy.c:1243
+ xor ch, ch ; 30 ed ; 0xf3970
+ mov ax, cx ; 89 c8 ; 0xf3972
+ call 02ef6h ; e8 7f f5 ; 0xf3974
+ test ax, ax ; 85 c0 ; 0xf3977
+ jne short 039a2h ; 75 27 ; 0xf3979
+ mov ax, cx ; 89 c8 ; 0xf397b floppy.c:1244
+ call 02fd2h ; e8 52 f6 ; 0xf397d
+ test ax, ax ; 85 c0 ; 0xf3980
+ jne short 039a2h ; 75 1e ; 0xf3982
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3984 floppy.c:1245
+ xor ah, ah ; 30 e4 ; 0xf3987
+ or ah, 00ch ; 80 cc 0c ; 0xf3989
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf398c
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf398f floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3992
+ mov es, ax ; 8e c0 ; 0xf3995
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3997
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf399b
+ jmp near 031beh ; e9 1c f8 ; 0xf399f
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf39a2 floppy.c:1253
+ call 01664h ; e8 bc dc ; 0xf39a5
+ test bl, bl ; 84 db ; 0xf39a8 floppy.c:1254
+ jne short 039b3h ; 75 07 ; 0xf39aa
+ mov dl, al ; 88 c2 ; 0xf39ac floppy.c:1255
+ shr dl, 004h ; c0 ea 04 ; 0xf39ae
+ jmp short 039b8h ; eb 05 ; 0xf39b1 floppy.c:1256
+ mov dl, al ; 88 c2 ; 0xf39b3 floppy.c:1257
+ and dl, 00fh ; 80 e2 0f ; 0xf39b5
+ test bl, bl ; 84 db ; 0xf39b8 floppy.c:1260
+ je short 039c1h ; 74 05 ; 0xf39ba
+ mov si, 00091h ; be 91 00 ; 0xf39bc
+ jmp short 039c4h ; eb 03 ; 0xf39bf
+ mov si, 00090h ; be 90 00 ; 0xf39c1
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf39c4
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf39c7 floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf39ca
+ mov bl, byte [es:si] ; 26 8a 1c ; 0xf39cc
+ and bl, 00fh ; 80 e3 0f ; 0xf39cf floppy.c:49
+ cmp dl, 003h ; 80 fa 03 ; 0xf39d2 floppy.c:1266
+ jc short 039f2h ; 72 1b ; 0xf39d5
+ mov al, bl ; 88 d8 ; 0xf39d7
+ or AL, strict byte 090h ; 0c 90 ; 0xf39d9
+ cmp dl, 003h ; 80 fa 03 ; 0xf39db
+ jbe short 03a2eh ; 76 4e ; 0xf39de
+ mov ah, bl ; 88 dc ; 0xf39e0
+ or ah, 010h ; 80 cc 10 ; 0xf39e2
+ cmp dl, 005h ; 80 fa 05 ; 0xf39e5
+ je short 03a2ch ; 74 42 ; 0xf39e8
+ cmp dl, 004h ; 80 fa 04 ; 0xf39ea
+ je short 03a3bh ; 74 4c ; 0xf39ed
+ jmp near 03a73h ; e9 81 00 ; 0xf39ef
+ cmp dl, 002h ; 80 fa 02 ; 0xf39f2
+ je short 03a0ch ; 74 15 ; 0xf39f5
+ cmp dl, 001h ; 80 fa 01 ; 0xf39f7
+ jne short 03a3fh ; 75 43 ; 0xf39fa
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf39fc floppy.c:1268
+ jne short 03a3fh ; 75 3d ; 0xf3a00
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a02
+ jne short 03a55h ; 75 4e ; 0xf3a05
+ or bl, 090h ; 80 cb 90 ; 0xf3a07 floppy.c:1269
+ jmp short 03a55h ; eb 49 ; 0xf3a0a floppy.c:1271
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3a0c floppy.c:1273
+ jne short 03a1ch ; 75 0a ; 0xf3a10
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a12
+ jne short 03a1ch ; 75 05 ; 0xf3a15
+ or bl, 070h ; 80 cb 70 ; 0xf3a17 floppy.c:1274
+ jmp short 03a55h ; eb 39 ; 0xf3a1a floppy.c:1275
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a1c
+ jne short 03a73h ; 75 51 ; 0xf3a20
+ cmp bh, 00fh ; 80 ff 0f ; 0xf3a22
+ jne short 03a73h ; 75 4c ; 0xf3a25
+ or bl, 010h ; 80 cb 10 ; 0xf3a27 floppy.c:1276
+ jmp short 03a73h ; eb 47 ; 0xf3a2a floppy.c:1278
+ jmp short 03a57h ; eb 29 ; 0xf3a2c
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a2e floppy.c:1280
+ jne short 03a73h ; 75 3f ; 0xf3a32
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a34
+ je short 03a3dh ; 74 04 ; 0xf3a37
+ jmp short 03a73h ; eb 38 ; 0xf3a39
+ jmp short 03a41h ; eb 04 ; 0xf3a3b
+ mov bl, al ; 88 c3 ; 0xf3a3d floppy.c:1281
+ jmp short 03a73h ; eb 32 ; 0xf3a3f floppy.c:1283
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a41 floppy.c:1285
+ jne short 03a73h ; 75 2c ; 0xf3a45
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a47 floppy.c:1286
+ jne short 03a4eh ; 75 02 ; 0xf3a4a
+ jmp short 03a3dh ; eb ef ; 0xf3a4c
+ cmp bh, 012h ; 80 ff 12 ; 0xf3a4e floppy.c:1287
+ jne short 03a73h ; 75 20 ; 0xf3a51
+ mov bl, ah ; 88 e3 ; 0xf3a53 floppy.c:1289
+ jmp short 03a73h ; eb 1c ; 0xf3a55 floppy.c:1292
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a57 floppy.c:1294
+ jne short 03a73h ; 75 16 ; 0xf3a5b
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a5d floppy.c:1295
+ jne short 03a64h ; 75 02 ; 0xf3a60
+ jmp short 03a3dh ; eb d9 ; 0xf3a62
+ cmp bh, 012h ; 80 ff 12 ; 0xf3a64 floppy.c:1296
+ jne short 03a6bh ; 75 02 ; 0xf3a67
+ jmp short 03a53h ; eb e8 ; 0xf3a69
+ cmp bh, 024h ; 80 ff 24 ; 0xf3a6b floppy.c:1298
+ jne short 03a73h ; 75 03 ; 0xf3a6e
+ or bl, 0d0h ; 80 cb d0 ; 0xf3a70 floppy.c:1300
+ mov al, bl ; 88 d8 ; 0xf3a73 floppy.c:1309
+ xor ah, ah ; 30 e4 ; 0xf3a75
+ sar ax, 004h ; c1 f8 04 ; 0xf3a77
+ test AL, strict byte 001h ; a8 01 ; 0xf3a7a
+ jne short 03a81h ; 75 03 ; 0xf3a7c
+ jmp near 03984h ; e9 03 ff ; 0xf3a7e
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a81 floppy.c:53
+ mov es, ax ; 8e c0 ; 0xf3a84
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3a86
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3a89
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3a8c floppy.c:1322
+ mov al, dl ; 88 d0 ; 0xf3a91 floppy.c:1323
+ xor ah, ah ; 30 e4 ; 0xf3a93
+ call 03ad1h ; e8 39 00 ; 0xf3a95
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3a98
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3a9b floppy.c:1326
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a9f floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3aa2
+ mov es, ax ; 8e c0 ; 0xf3aa5
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3aa7
+ jmp near 03440h ; e9 92 f9 ; 0xf3aab
+ mov bx, 00ddch ; bb dc 0d ; 0xf3aae floppy.c:1332
+ mov cx, ds ; 8c d9 ; 0xf3ab1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3ab3
+ call 01910h ; e8 57 de ; 0xf3ab6
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3ab9
+ shr ax, 008h ; c1 e8 08 ; 0xf3abc
+ push ax ; 50 ; 0xf3abf
+ push 002bdh ; 68 bd 02 ; 0xf3ac0
+ push 0032ah ; 68 2a 03 ; 0xf3ac3
+ push strict byte 00004h ; 6a 04 ; 0xf3ac6
+ call 01953h ; e8 88 de ; 0xf3ac8
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3acb
+ jmp near 03149h ; e9 78 f6 ; 0xf3ace floppy.c:78
+ ; disGetNextSymbol 0xf3ad1 LB 0x7307 -> off=0x0 cb=0000000000000030 uValue=00000000000f24d1 'get_floppy_dpt'
+get_floppy_dpt: ; 0xf3ad1 LB 0x30
+ push bx ; 53 ; 0xf3ad1 floppyt.c:104
+ push dx ; 52 ; 0xf3ad2
+ push bp ; 55 ; 0xf3ad3
+ mov bp, sp ; 89 e5 ; 0xf3ad4
+ mov dl, al ; 88 c2 ; 0xf3ad6
+ xor ax, ax ; 31 c0 ; 0xf3ad8 floppyt.c:108
+ jmp short 03ae2h ; eb 06 ; 0xf3ada
+ inc ax ; 40 ; 0xf3adc floppyt.c:110
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3add
+ jnc short 03afah ; 73 18 ; 0xf3ae0
+ mov bx, ax ; 89 c3 ; 0xf3ae2
+ add bx, ax ; 01 c3 ; 0xf3ae4
+ cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3ae6
+ jne short 03adch ; 75 f0 ; 0xf3aea
+ mov al, byte [word bx+0005ch] ; 8a 87 5c 00 ; 0xf3aec
+ xor ah, ah ; 30 e4 ; 0xf3af0
+ imul ax, ax, strict byte 0000dh ; 6b c0 0d ; 0xf3af2
+ add ax, strict word 00000h ; 05 00 00 ; 0xf3af5
+ jmp short 03afdh ; eb 03 ; 0xf3af8
+ mov ax, strict word 00041h ; b8 41 00 ; 0xf3afa floppyt.c:113
+ pop bp ; 5d ; 0xf3afd floppyt.c:114
+ pop dx ; 5a ; 0xf3afe
+ pop bx ; 5b ; 0xf3aff
+ retn ; c3 ; 0xf3b00
+ ; disGetNextSymbol 0xf3b01 LB 0x72d7 -> off=0x0 cb=0000000000000007 uValue=00000000000f2501 'dummy_soft_reset'
+dummy_soft_reset: ; 0xf3b01 LB 0x7
+ push bp ; 55 ; 0xf3b01 eltorito.c:137
+ mov bp, sp ; 89 e5 ; 0xf3b02
+ xor ax, ax ; 31 c0 ; 0xf3b04 eltorito.c:140
+ pop bp ; 5d ; 0xf3b06
+ retn ; c3 ; 0xf3b07
+ ; disGetNextSymbol 0xf3b08 LB 0x72d0 -> off=0x0 cb=000000000000003b uValue=00000000000f2508 'cdemu_bounce_buf_alloc'
+cdemu_bounce_buf_alloc: ; 0xf3b08 LB 0x3b
+ push bx ; 53 ; 0xf3b08 eltorito.c:169
+ push cx ; 51 ; 0xf3b09
+ push dx ; 52 ; 0xf3b0a
+ push di ; 57 ; 0xf3b0b
+ push bp ; 55 ; 0xf3b0c
+ mov bp, sp ; 89 e5 ; 0xf3b0d
+ mov di, 00413h ; bf 13 04 ; 0xf3b0f eltorito.c:58
+ xor ax, ax ; 31 c0 ; 0xf3b12
+ mov es, ax ; 8e c0 ; 0xf3b14
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf3b16
+ test ax, ax ; 85 c0 ; 0xf3b19 eltorito.c:175
+ je short 03b3dh ; 74 20 ; 0xf3b1b
+ dec ax ; 48 ; 0xf3b1d eltorito.c:176
+ dec ax ; 48 ; 0xf3b1e
+ mov bx, ax ; 89 c3 ; 0xf3b1f
+ xor dx, dx ; 31 d2 ; 0xf3b21 eltorito.c:179
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf3b23
+ sal ax, 1 ; d1 e0 ; 0xf3b26
+ rcl dx, 1 ; d1 d2 ; 0xf3b28
+ loop 03b26h ; e2 fa ; 0xf3b2a
+ mov di, dx ; 89 d7 ; 0xf3b2c
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf3b2e
+ shr di, 1 ; d1 ef ; 0xf3b31
+ rcr ax, 1 ; d1 d8 ; 0xf3b33
+ loop 03b31h ; e2 fa ; 0xf3b35
+ mov di, 00413h ; bf 13 04 ; 0xf3b37 eltorito.c:63
+ mov word [es:di], bx ; 26 89 1d ; 0xf3b3a
+ pop bp ; 5d ; 0xf3b3d eltorito.c:184
+ pop di ; 5f ; 0xf3b3e
+ pop dx ; 5a ; 0xf3b3f
+ pop cx ; 59 ; 0xf3b40
+ pop bx ; 5b ; 0xf3b41
+ retn ; c3 ; 0xf3b42
+ ; disGetNextSymbol 0xf3b43 LB 0x7295 -> off=0x0 cb=0000000000000017 uValue=00000000000f2543 'cdemu_init'
+cdemu_init: ; 0xf3b43 LB 0x17
+ push bp ; 55 ; 0xf3b43 eltorito.c:186
+ mov bp, sp ; 89 e5 ; 0xf3b44
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b46 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b49
+ mov es, ax ; 8e c0 ; 0xf3b4c
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3b4e
+ mov bx, 00316h ; bb 16 03 ; 0xf3b51 eltorito.c:190
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3b54 eltorito.c:193
+ pop bp ; 5d ; 0xf3b58 eltorito.c:194
+ retn ; c3 ; 0xf3b59
+ ; disGetNextSymbol 0xf3b5a LB 0x727e -> off=0x0 cb=0000000000000016 uValue=00000000000f255a 'cdemu_isactive'
+cdemu_isactive: ; 0xf3b5a LB 0x16
+ push bp ; 55 ; 0xf3b5a eltorito.c:196
+ mov bp, sp ; 89 e5 ; 0xf3b5b
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b5d eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b60
+ mov es, ax ; 8e c0 ; 0xf3b63
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3b65
+ mov bx, 00316h ; bb 16 03 ; 0xf3b68 eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3b6b
+ pop bp ; 5d ; 0xf3b6e eltorito.c:202
+ retn ; c3 ; 0xf3b6f
+ ; disGetNextSymbol 0xf3b70 LB 0x7268 -> off=0x0 cb=0000000000000016 uValue=00000000000f2570 'cdemu_emulated_drive'
+cdemu_emulated_drive: ; 0xf3b70 LB 0x16
+ push bp ; 55 ; 0xf3b70 eltorito.c:204
+ mov bp, sp ; 89 e5 ; 0xf3b71
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b73 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b76
+ mov es, ax ; 8e c0 ; 0xf3b79
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3b7b
+ mov bx, 00318h ; bb 18 03 ; 0xf3b7e eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3b81
+ pop bp ; 5d ; 0xf3b84 eltorito.c:210
+ retn ; c3 ; 0xf3b85
+ ; disGetNextSymbol 0xf3b86 LB 0x7252 -> off=0x0 cb=000000000000017b uValue=00000000000f2586 'int13_eltorito'
+int13_eltorito: ; 0xf3b86 LB 0x17b
+ push bp ; 55 ; 0xf3b86 eltorito.c:216
+ mov bp, sp ; 89 e5 ; 0xf3b87
+ push si ; 56 ; 0xf3b89
+ push di ; 57 ; 0xf3b8a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b8b eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b8e
+ mov es, ax ; 8e c0 ; 0xf3b91
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf3b93
+ mov bx, 00316h ; bb 16 03 ; 0xf3b96 eltorito.c:222
+ mov si, word [bp+016h] ; 8b 76 16 ; 0xf3b99 eltorito.c:228
+ shr si, 008h ; c1 ee 08 ; 0xf3b9c
+ cmp si, strict byte 0004bh ; 83 fe 4b ; 0xf3b9f
+ jc short 03baeh ; 72 0a ; 0xf3ba2
+ jbe short 03bd5h ; 76 2f ; 0xf3ba4
+ cmp si, strict byte 0004dh ; 83 fe 4d ; 0xf3ba6
+ jbe short 03bb3h ; 76 08 ; 0xf3ba9
+ jmp near 03cc7h ; e9 19 01 ; 0xf3bab
+ cmp si, strict byte 0004ah ; 83 fe 4a ; 0xf3bae
+ jne short 03bd2h ; 75 1f ; 0xf3bb1
+ mov bx, 00ddch ; bb dc 0d ; 0xf3bb3 eltorito.c:234
+ mov cx, ds ; 8c d9 ; 0xf3bb6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3bb8
+ call 01910h ; e8 52 dd ; 0xf3bbb
+ push word [bp+016h] ; ff 76 16 ; 0xf3bbe
+ push 00344h ; 68 44 03 ; 0xf3bc1
+ push 00353h ; 68 53 03 ; 0xf3bc4
+ push strict byte 00004h ; 6a 04 ; 0xf3bc7
+ call 01953h ; e8 87 dd ; 0xf3bc9
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3bcc
+ jmp near 03ce2h ; e9 10 01 ; 0xf3bcf eltorito.c:235
+ jmp near 03cc7h ; e9 f2 00 ; 0xf3bd2
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf3bd5 eltorito.c:51
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bd8
+ mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3bdb
+ inc si ; 46 ; 0xf3bdf eltorito.c:242
+ mov ax, es ; 8c c0 ; 0xf3be0 eltorito.c:51
+ mov es, di ; 8e c7 ; 0xf3be2
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3be4
+ mov es, ax ; 8e c0 ; 0xf3be8 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3bea
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bed eltorito.c:243
+ inc si ; 46 ; 0xf3bf0
+ inc si ; 46 ; 0xf3bf1
+ mov es, di ; 8e c7 ; 0xf3bf2 eltorito.c:51
+ mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3bf4
+ mov es, ax ; 8e c0 ; 0xf3bf8 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3bfa
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bfd eltorito.c:244
+ add si, strict byte 00003h ; 83 c6 03 ; 0xf3c00
+ mov es, di ; 8e c7 ; 0xf3c03 eltorito.c:51
+ mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3c05
+ mov es, ax ; 8e c0 ; 0xf3c09 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c0b
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c0e eltorito.c:245
+ add si, strict byte 00004h ; 83 c6 04 ; 0xf3c11
+ mov es, di ; 8e c7 ; 0xf3c14 eltorito.c:71
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3c16
+ mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3c1a
+ mov es, ax ; 8e c0 ; 0xf3c1e eltorito.c:73
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c20
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3c23
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c27 eltorito.c:246
+ add si, strict byte 00008h ; 83 c6 08 ; 0xf3c2a
+ mov es, di ; 8e c7 ; 0xf3c2d eltorito.c:61
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3c2f
+ mov es, ax ; 8e c0 ; 0xf3c33 eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c35
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c38 eltorito.c:247
+ add si, strict byte 0000ah ; 83 c6 0a ; 0xf3c3b
+ mov es, di ; 8e c7 ; 0xf3c3e eltorito.c:61
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3c40
+ mov es, ax ; 8e c0 ; 0xf3c44 eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c46
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c49 eltorito.c:248
+ add si, strict byte 0000ch ; 83 c6 0c ; 0xf3c4c
+ mov es, di ; 8e c7 ; 0xf3c4f eltorito.c:61
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3c51
+ mov es, ax ; 8e c0 ; 0xf3c55 eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c57
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c5a eltorito.c:249
+ add si, strict byte 0000eh ; 83 c6 0e ; 0xf3c5d
+ mov es, di ; 8e c7 ; 0xf3c60 eltorito.c:61
+ mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3c62
+ mov es, ax ; 8e c0 ; 0xf3c66 eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c68
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c6b eltorito.c:250
+ add si, strict byte 00010h ; 83 c6 10 ; 0xf3c6e
+ mov es, di ; 8e c7 ; 0xf3c71 eltorito.c:51
+ mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3c73
+ mov es, ax ; 8e c0 ; 0xf3c77 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c79
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c7c eltorito.c:251
+ add si, strict byte 00011h ; 83 c6 11 ; 0xf3c7f
+ mov es, di ; 8e c7 ; 0xf3c82 eltorito.c:51
+ mov dl, byte [es:bx+014h] ; 26 8a 57 14 ; 0xf3c84
+ mov es, ax ; 8e c0 ; 0xf3c88 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c8a
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c8d eltorito.c:252
+ add si, strict byte 00012h ; 83 c6 12 ; 0xf3c90
+ mov dx, ax ; 89 c2 ; 0xf3c93 eltorito.c:51
+ mov es, di ; 8e c7 ; 0xf3c95
+ mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3c97
+ mov es, dx ; 8e c2 ; 0xf3c9b eltorito.c:53
+ mov byte [es:si], al ; 26 88 04 ; 0xf3c9d
+ test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3ca0 eltorito.c:255
+ jne short 03cach ; 75 06 ; 0xf3ca4
+ mov es, di ; 8e c7 ; 0xf3ca6 eltorito.c:257
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3ca8
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3cac eltorito.c:260
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3cb0
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3cb3
+ mov es, ax ; 8e c0 ; 0xf3cb6
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3cb8
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3cbc
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3cc0
+ pop di ; 5f ; 0xf3cc3
+ pop si ; 5e ; 0xf3cc4
+ pop bp ; 5d ; 0xf3cc5
+ retn ; c3 ; 0xf3cc6
+ mov bx, 00ddch ; bb dc 0d ; 0xf3cc7 eltorito.c:264
+ mov cx, ds ; 8c d9 ; 0xf3cca
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3ccc
+ call 01910h ; e8 3e dc ; 0xf3ccf
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf3cd2
+ shr bx, 008h ; c1 eb 08 ; 0xf3cd5
+ push bx ; 53 ; 0xf3cd8
+ push 00344h ; 68 44 03 ; 0xf3cd9
+ push 0037bh ; 68 7b 03 ; 0xf3cdc
+ jmp near 03bc7h ; e9 e5 fe ; 0xf3cdf
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3ce2 eltorito.c:270
+ xor ah, ah ; 30 e4 ; 0xf3ce5
+ or ah, 001h ; 80 cc 01 ; 0xf3ce7
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3cea
+ shr ax, 008h ; c1 e8 08 ; 0xf3ced eltorito.c:271
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3cf0 eltorito.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3cf3
+ mov es, dx ; 8e c2 ; 0xf3cf6
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3cf8
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3cfb eltorito.c:272
+ jmp short 03cc0h ; eb bf ; 0xf3cff eltorito.c:273
+ ; disGetNextSymbol 0xf3d01 LB 0x70d7 -> off=0x0 cb=0000000000000032 uValue=00000000000f2701 'device_is_cdrom'
+device_is_cdrom: ; 0xf3d01 LB 0x32
+ push bx ; 53 ; 0xf3d01 eltorito.c:288
+ push dx ; 52 ; 0xf3d02
+ push bp ; 55 ; 0xf3d03
+ mov bp, sp ; 89 e5 ; 0xf3d04
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d06 eltorito.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3d09
+ mov es, dx ; 8e c2 ; 0xf3d0c
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf3d0e
+ cmp AL, strict byte 014h ; 3c 14 ; 0xf3d11 eltorito.c:294
+ jc short 03d19h ; 72 04 ; 0xf3d13
+ xor ax, ax ; 31 c0 ; 0xf3d15 eltorito.c:295
+ jmp short 03d2fh ; eb 16 ; 0xf3d17
+ xor ah, ah ; 30 e4 ; 0xf3d19 eltorito.c:300
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3d1b
+ mov es, bx ; 8e c3 ; 0xf3d1e
+ mov bx, ax ; 89 c3 ; 0xf3d20
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3d22
+ cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf3d25
+ jne short 03d15h ; 75 e9 ; 0xf3d2a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3d2c eltorito.c:301
+ pop bp ; 5d ; 0xf3d2f eltorito.c:304
+ pop dx ; 5a ; 0xf3d30
+ pop bx ; 5b ; 0xf3d31
+ retn ; c3 ; 0xf3d32
+ ; disGetNextSymbol 0xf3d33 LB 0x70a5 -> off=0x0 cb=0000000000000084 uValue=00000000000f2733 'cdrom_read'
+cdrom_read: ; 0xf3d33 LB 0x84
+ push bp ; 55 ; 0xf3d33 eltorito.c:306
+ mov bp, sp ; 89 e5 ; 0xf3d34
+ push si ; 56 ; 0xf3d36
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf3d37
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf3d3a
+ mov ax, bx ; 89 d8 ; 0xf3d3d
+ mov si, cx ; 89 ce ; 0xf3d3f
+ mov cx, dx ; 89 d1 ; 0xf3d41
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d43 eltorito.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3d46
+ mov es, dx ; 8e c2 ; 0xf3d49
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3d4b
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf3d4e eltorito.c:310
+ mov word [bp-010h], strict word 00028h ; c7 46 f0 28 00 ; 0xf3d51 eltorito.c:312
+ mov dx, si ; 89 f2 ; 0xf3d56 eltorito.c:313
+ xchg ah, al ; 86 c4 ; 0xf3d58
+ xchg dh, dl ; 86 d6 ; 0xf3d5a
+ xchg dx, ax ; 92 ; 0xf3d5c
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3d5d
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3d60
+ mov ax, cx ; 89 c8 ; 0xf3d63 eltorito.c:314
+ xchg ah, al ; 86 c4 ; 0xf3d65
+ mov word [bp-009h], ax ; 89 46 f7 ; 0xf3d67
+ mov word [es:bx+00eh], cx ; 26 89 4f 0e ; 0xf3d6a eltorito.c:316
+ mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3d6e eltorito.c:317
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3d74 eltorito.c:319
+ xor ah, ah ; 30 e4 ; 0xf3d77
+ imul bx, ax, strict byte 0001ch ; 6b d8 1c ; 0xf3d79
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3d7c
+ mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf3d7f
+ mov si, ax ; 89 c6 ; 0xf3d83
+ add si, ax ; 01 c6 ; 0xf3d85
+ push word [bp+006h] ; ff 76 06 ; 0xf3d87
+ push word [bp+004h] ; ff 76 04 ; 0xf3d8a
+ push strict byte 00001h ; 6a 01 ; 0xf3d8d
+ mov ax, cx ; 89 c8 ; 0xf3d8f
+ xor dx, dx ; 31 d2 ; 0xf3d91
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf3d93
+ sal ax, 1 ; d1 e0 ; 0xf3d96
+ rcl dx, 1 ; d1 d2 ; 0xf3d98
+ loop 03d96h ; e2 fa ; 0xf3d9a
+ push dx ; 52 ; 0xf3d9c
+ push ax ; 50 ; 0xf3d9d
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3d9e
+ xor ah, ah ; 30 e4 ; 0xf3da1
+ mov cx, ss ; 8c d1 ; 0xf3da3
+ lea bx, [bp-010h] ; 8d 5e f0 ; 0xf3da5
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3da8
+ call word [word si+0006ah] ; ff 94 6a 00 ; 0xf3dab
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf3daf eltorito.c:320
+ pop si ; 5e ; 0xf3db2
+ pop bp ; 5d ; 0xf3db3
+ retn 00004h ; c2 04 00 ; 0xf3db4
+ ; disGetNextSymbol 0xf3db7 LB 0x7021 -> off=0x0 cb=0000000000000170 uValue=00000000000f27b7 'cdemu_read'
+cdemu_read: ; 0xf3db7 LB 0x170
+ push bp ; 55 ; 0xf3db7 eltorito.c:322
+ mov bp, sp ; 89 e5 ; 0xf3db8
+ push si ; 56 ; 0xf3dba
+ push di ; 57 ; 0xf3dbb
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf3dbc
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf3dbf
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf3dc2
+ mov di, dx ; 89 d7 ; 0xf3dc5
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3dc7 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3dca
+ mov es, ax ; 8e c0 ; 0xf3dcd
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf3dcf
+ mov bx, 00316h ; bb 16 03 ; 0xf3dd2 eltorito.c:326
+ mov es, ax ; 8e c0 ; 0xf3dd5
+ mov si, bx ; 89 de ; 0xf3dd7
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf3dd9
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf3ddc eltorito.c:327
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf3de0
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf3de3
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf3de7
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf3dea eltorito.c:330
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3ded
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf3df0
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf3df3
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3df6 eltorito.c:335
+ mov dx, cx ; 89 ca ; 0xf3df9
+ shr dx, 1 ; d1 ea ; 0xf3dfb
+ rcr ax, 1 ; d1 d8 ; 0xf3dfd
+ shr dx, 1 ; d1 ea ; 0xf3dff
+ rcr ax, 1 ; d1 d8 ; 0xf3e01
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf3e03
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3e06
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3e09 eltorito.c:336
+ and ax, strict word 00003h ; 25 03 00 ; 0xf3e0c
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf3e0f
+ test ax, ax ; 85 c0 ; 0xf3e12 eltorito.c:339
+ je short 03e88h ; 74 72 ; 0xf3e14
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3e16 eltorito.c:341
+ sub ax, word [bp-012h] ; 2b 46 ee ; 0xf3e19
+ cmp di, ax ; 39 c7 ; 0xf3e1c
+ jnc short 03e25h ; 73 05 ; 0xf3e1e
+ mov word [bp-01ch], di ; 89 7e e4 ; 0xf3e20
+ jmp short 03e28h ; eb 03 ; 0xf3e23
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf3e25
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf3e28 eltorito.c:343
+ push word [es:si+018h] ; 26 ff 74 18 ; 0xf3e2b
+ push word [es:si+016h] ; 26 ff 74 16 ; 0xf3e2f
+ mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3e33
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3e36
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3e39
+ adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3e3c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3e3f
+ xor ah, ah ; 30 e4 ; 0xf3e42
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf3e44
+ call 03d33h ; e8 e9 fe ; 0xf3e47
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf3e4a
+ test ax, ax ; 85 c0 ; 0xf3e4d eltorito.c:344
+ jne short 03eb8h ; 75 67 ; 0xf3e4f
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf3e51 eltorito.c:345
+ sal ax, 009h ; c1 e0 09 ; 0xf3e54
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf3e57
+ push ax ; 50 ; 0xf3e5a
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf3e5b
+ sal ax, 009h ; c1 e0 09 ; 0xf3e5e
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf3e61
+ mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf3e64
+ mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf3e68
+ add bx, ax ; 01 c3 ; 0xf3e6c
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf3e6e
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf3e71
+ call 0aac0h ; e8 49 6c ; 0xf3e74
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf3e77 eltorito.c:348
+ add word [bp-00eh], ax ; 01 46 f2 ; 0xf3e7a
+ sub di, word [bp-01ch] ; 2b 7e e4 ; 0xf3e7d eltorito.c:349
+ add word [bp-00ch], strict byte 00001h ; 83 46 f4 01 ; 0xf3e80 eltorito.c:350
+ adc word [bp-00ah], strict byte 00000h ; 83 56 f6 00 ; 0xf3e84
+ mov ax, di ; 89 f8 ; 0xf3e88 eltorito.c:354
+ shr ax, 002h ; c1 e8 02 ; 0xf3e8a
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf3e8d
+ test ax, ax ; 85 c0 ; 0xf3e90
+ je short 03ed6h ; 74 42 ; 0xf3e92
+ push word [bp-018h] ; ff 76 e8 ; 0xf3e94 eltorito.c:358
+ push word [bp-00eh] ; ff 76 f2 ; 0xf3e97
+ mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3e9a
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3e9d
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3ea0
+ adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3ea3
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3ea6
+ xor ah, ah ; 30 e4 ; 0xf3ea9
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf3eab
+ call 03d33h ; e8 82 fe ; 0xf3eae
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf3eb1
+ test ax, ax ; 85 c0 ; 0xf3eb4 eltorito.c:359
+ je short 03ebah ; 74 02 ; 0xf3eb6
+ jmp short 03f1eh ; eb 64 ; 0xf3eb8 eltorito.c:360
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf3eba eltorito.c:361
+ sal ax, 00bh ; c1 e0 0b ; 0xf3ebd
+ add word [bp-00eh], ax ; 01 46 f2 ; 0xf3ec0
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf3ec3 eltorito.c:362
+ sal ax, 002h ; c1 e0 02 ; 0xf3ec6
+ sub di, ax ; 29 c7 ; 0xf3ec9
+ xor ax, ax ; 31 c0 ; 0xf3ecb eltorito.c:363
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf3ecd
+ add word [bp-00ch], dx ; 01 56 f4 ; 0xf3ed0
+ adc word [bp-00ah], ax ; 11 46 f6 ; 0xf3ed3
+ test di, di ; 85 ff ; 0xf3ed6 eltorito.c:367
+ je short 03f1bh ; 74 41 ; 0xf3ed8
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf3eda eltorito.c:369
+ push word [es:si+018h] ; 26 ff 74 18 ; 0xf3edd
+ push word [es:si+016h] ; 26 ff 74 16 ; 0xf3ee1
+ mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3ee5
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3ee8
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3eeb
+ adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3eee
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3ef1
+ xor ah, ah ; 30 e4 ; 0xf3ef4
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf3ef6
+ call 03d33h ; e8 37 fe ; 0xf3ef9
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf3efc
+ test ax, ax ; 85 c0 ; 0xf3eff eltorito.c:370
+ jne short 03f1eh ; 75 1b ; 0xf3f01
+ sal di, 009h ; c1 e7 09 ; 0xf3f03 eltorito.c:371
+ push di ; 57 ; 0xf3f06
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf3f07
+ mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf3f0a
+ mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf3f0e
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf3f12
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf3f15
+ call 0aac0h ; e8 a5 6b ; 0xf3f18
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf3f1b eltorito.c:376
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3f1e eltorito.c:377
+ pop di ; 5f ; 0xf3f21
+ pop si ; 5e ; 0xf3f22
+ pop bp ; 5d ; 0xf3f23
+ retn 00004h ; c2 04 00 ; 0xf3f24
+ ; disGetNextSymbol 0xf3f27 LB 0x6eb1 -> off=0x0 cb=00000000000002b8 uValue=00000000000f2927 'cdrom_boot'
+cdrom_boot: ; 0xf3f27 LB 0x2b8
+ push bp ; 55 ; 0xf3f27 eltorito.c:387
+ mov bp, sp ; 89 e5 ; 0xf3f28
+ push bx ; 53 ; 0xf3f2a
+ push cx ; 51 ; 0xf3f2b
+ push dx ; 52 ; 0xf3f2c
+ push si ; 56 ; 0xf3f2d
+ push di ; 57 ; 0xf3f2e
+ sub sp, 00808h ; 81 ec 08 08 ; 0xf3f2f
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3f33 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3f36
+ mov es, ax ; 8e c0 ; 0xf3f39
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf3f3b
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf3f3e eltorito.c:59
+ mov si, 00316h ; be 16 03 ; 0xf3f41 eltorito.c:399
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf3f44
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3f47 eltorito.c:403
+ jmp short 03f56h ; eb 09 ; 0xf3f4b
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf3f4d eltorito.c:406
+ cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf3f50
+ jnc short 03f62h ; 73 0c ; 0xf3f54
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3f56
+ xor ah, ah ; 30 e4 ; 0xf3f59
+ call 03d01h ; e8 a3 fd ; 0xf3f5b
+ test ax, ax ; 85 c0 ; 0xf3f5e
+ je short 03f4dh ; 74 eb ; 0xf3f60
+ cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf3f62 eltorito.c:409
+ jc short 03f6eh ; 72 06 ; 0xf3f66
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf3f68 eltorito.c:410
+ jmp near 041d5h ; e9 67 02 ; 0xf3f6b
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3f6e eltorito.c:413
+ jmp short 03f7dh ; eb 09 ; 0xf3f72
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf3f74 eltorito.c:418
+ cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf3f77
+ jnbe short 03f97h ; 77 1a ; 0xf3f7b
+ lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf3f7d
+ push SS ; 16 ; 0xf3f81
+ push dx ; 52 ; 0xf3f82
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3f83
+ xor ah, ah ; 30 e4 ; 0xf3f86
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf3f88
+ mov bx, strict word 00011h ; bb 11 00 ; 0xf3f8b
+ xor cx, cx ; 31 c9 ; 0xf3f8e
+ call 03d33h ; e8 a0 fd ; 0xf3f90
+ test ax, ax ; 85 c0 ; 0xf3f93
+ jne short 03f74h ; 75 dd ; 0xf3f95
+ test ax, ax ; 85 c0 ; 0xf3f97 eltorito.c:419
+ je short 03fa1h ; 74 06 ; 0xf3f99
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf3f9b eltorito.c:420
+ jmp near 041d5h ; e9 34 02 ; 0xf3f9e
+ cmp byte [bp-00812h], 000h ; 80 be ee f7 00 ; 0xf3fa1 eltorito.c:423
+ je short 03faeh ; 74 06 ; 0xf3fa6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3fa8 eltorito.c:424
+ jmp near 041d5h ; e9 27 02 ; 0xf3fab
+ xor di, di ; 31 ff ; 0xf3fae eltorito.c:426
+ jmp short 03fb8h ; eb 06 ; 0xf3fb0
+ inc di ; 47 ; 0xf3fb2 eltorito.c:428
+ cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3fb3
+ jnc short 03fc8h ; 73 10 ; 0xf3fb6
+ mov al, byte [bp+di-00811h] ; 8a 83 ef f7 ; 0xf3fb8
+ cmp al, byte [di+00de4h] ; 3a 85 e4 0d ; 0xf3fbc
+ je short 03fb2h ; 74 f0 ; 0xf3fc0
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf3fc2
+ jmp near 041d5h ; e9 0d 02 ; 0xf3fc5
+ xor di, di ; 31 ff ; 0xf3fc8 eltorito.c:430
+ jmp short 03fd2h ; eb 06 ; 0xf3fca
+ inc di ; 47 ; 0xf3fcc eltorito.c:432
+ cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3fcd
+ jnc short 03fe2h ; 73 10 ; 0xf3fd0
+ mov al, byte [bp+di-0080bh] ; 8a 83 f5 f7 ; 0xf3fd2
+ cmp al, byte [di+00deah] ; 3a 85 ea 0d ; 0xf3fd6
+ je short 03fcch ; 74 f0 ; 0xf3fda
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf3fdc
+ jmp near 041d5h ; e9 f3 01 ; 0xf3fdf
+ mov bx, word [bp-007cbh] ; 8b 9e 35 f8 ; 0xf3fe2 eltorito.c:435
+ mov cx, word [bp-007c9h] ; 8b 8e 37 f8 ; 0xf3fe6
+ lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf3fea eltorito.c:439
+ push SS ; 16 ; 0xf3fee
+ push dx ; 52 ; 0xf3fef
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3ff0
+ xor ah, ah ; 30 e4 ; 0xf3ff3
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf3ff5
+ call 03d33h ; e8 38 fd ; 0xf3ff8
+ test ax, ax ; 85 c0 ; 0xf3ffb eltorito.c:440
+ je short 04005h ; 74 06 ; 0xf3ffd
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf3fff eltorito.c:441
+ jmp near 041d5h ; e9 d0 01 ; 0xf4002
+ cmp byte [bp-00812h], 001h ; 80 be ee f7 01 ; 0xf4005 eltorito.c:446
+ je short 04012h ; 74 06 ; 0xf400a
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf400c eltorito.c:447
+ jmp near 041d5h ; e9 c3 01 ; 0xf400f
+ cmp byte [bp-00811h], 000h ; 80 be ef f7 00 ; 0xf4012 eltorito.c:448
+ je short 0401fh ; 74 06 ; 0xf4017
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf4019 eltorito.c:449
+ jmp near 041d5h ; e9 b6 01 ; 0xf401c
+ cmp byte [bp-007f4h], 055h ; 80 be 0c f8 55 ; 0xf401f eltorito.c:450
+ je short 0402ch ; 74 06 ; 0xf4024
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4026 eltorito.c:451
+ jmp near 041d5h ; e9 a9 01 ; 0xf4029
+ cmp byte [bp-007f3h], 0aah ; 80 be 0d f8 aa ; 0xf402c eltorito.c:452
+ jne short 04026h ; 75 f3 ; 0xf4031
+ cmp byte [bp-007f2h], 088h ; 80 be 0e f8 88 ; 0xf4033 eltorito.c:453
+ je short 04040h ; 74 06 ; 0xf4038
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf403a eltorito.c:457
+ jmp near 041d5h ; e9 95 01 ; 0xf403d
+ mov al, byte [bp-007f1h] ; 8a 86 0f f8 ; 0xf4040 eltorito.c:459
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4044
+ mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf4047
+ cmp byte [bp-007f1h], 000h ; 80 be 0f f8 00 ; 0xf404b eltorito.c:460
+ jne short 04059h ; 75 07 ; 0xf4050
+ mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf4052 eltorito.c:463
+ jmp short 0406ch ; eb 13 ; 0xf4057 eltorito.c:465
+ cmp byte [bp-007f1h], 004h ; 80 be 0f f8 04 ; 0xf4059
+ jnc short 04067h ; 73 07 ; 0xf405e
+ mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf4060 eltorito.c:466
+ jmp short 0406ch ; eb 05 ; 0xf4065 eltorito.c:467
+ mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf4067 eltorito.c:468
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf406c eltorito.c:470
+ xor bh, bh ; 30 ff ; 0xf406f
+ mov ax, bx ; 89 d8 ; 0xf4071
+ cwd ; 99 ; 0xf4073
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf4074
+ sar ax, 1 ; d1 f8 ; 0xf4076
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4078
+ mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf407b
+ mov ax, bx ; 89 d8 ; 0xf407f eltorito.c:471
+ cwd ; 99 ; 0xf4081
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf4082
+ idiv bx ; f7 fb ; 0xf4085
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf4087
+ mov di, word [bp-007f0h] ; 8b be 10 f8 ; 0xf408b eltorito.c:473
+ test di, di ; 85 ff ; 0xf408f eltorito.c:474
+ jne short 04096h ; 75 03 ; 0xf4091
+ mov di, 007c0h ; bf c0 07 ; 0xf4093 eltorito.c:475
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4096 eltorito.c:477
+ mov word [es:si+00ch], di ; 26 89 7c 0c ; 0xf4099
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf409d eltorito.c:478
+ mov dx, word [bp-007ech] ; 8b 96 14 f8 ; 0xf40a3 eltorito.c:480
+ mov word [es:si+00eh], dx ; 26 89 54 0e ; 0xf40a7 eltorito.c:481
+ test dx, dx ; 85 d2 ; 0xf40ab eltorito.c:486
+ je short 040b5h ; 74 06 ; 0xf40ad
+ cmp dx, 00400h ; 81 fa 00 04 ; 0xf40af
+ jbe short 040bbh ; 76 06 ; 0xf40b3
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf40b5 eltorito.c:487
+ jmp near 041d5h ; e9 1a 01 ; 0xf40b8
+ mov ax, word [bp-007eah] ; 8b 86 16 f8 ; 0xf40bb eltorito.c:489
+ mov bx, word [bp-007e8h] ; 8b 9e 18 f8 ; 0xf40bf
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf40c3 eltorito.c:490
+ mov word [es:si+00ah], bx ; 26 89 5c 0a ; 0xf40c7
+ call 03b08h ; e8 3a fa ; 0xf40cb eltorito.c:496
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf40ce
+ mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf40d1
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf40d7
+ mov ax, word [es:si+016h] ; 26 8b 44 16 ; 0xf40db eltorito.c:497
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf40df
+ test bx, bx ; 85 db ; 0xf40e3
+ jne short 040f1h ; 75 0a ; 0xf40e5
+ test ax, ax ; 85 c0 ; 0xf40e7
+ jne short 040f1h ; 75 06 ; 0xf40e9
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf40eb eltorito.c:498
+ jmp near 041d5h ; e9 e4 00 ; 0xf40ee
+ push di ; 57 ; 0xf40f1 eltorito.c:501
+ push strict byte 00000h ; 6a 00 ; 0xf40f2
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf40f4
+ xor ah, ah ; 30 e4 ; 0xf40f7
+ xor bx, bx ; 31 db ; 0xf40f9
+ xor cx, cx ; 31 c9 ; 0xf40fb
+ call 03db7h ; e8 b7 fc ; 0xf40fd
+ test ax, ax ; 85 c0 ; 0xf4100 eltorito.c:502
+ je short 0410ah ; 74 06 ; 0xf4102
+ mov ax, strict word 0000eh ; b8 0e 00 ; 0xf4104 eltorito.c:503
+ jmp near 041d5h ; e9 cb 00 ; 0xf4107
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf410a eltorito.c:508
+ mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf410d
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf4111
+ jc short 04121h ; 72 0c ; 0xf4113
+ jbe short 0413ch ; 76 25 ; 0xf4115
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf4117
+ je short 0414ch ; 74 31 ; 0xf4119
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf411b
+ je short 04144h ; 74 25 ; 0xf411d
+ jmp short 0418dh ; eb 6c ; 0xf411f
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf4121
+ jne short 0418dh ; 75 68 ; 0xf4123
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4125 eltorito.c:510
+ mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00 ; 0xf4128
+ mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00 ; 0xf412e eltorito.c:511
+ mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf4134 eltorito.c:512
+ jmp short 0418dh ; eb 51 ; 0xf413a eltorito.c:513
+ mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00 ; 0xf413c eltorito.c:515
+ jmp short 0412eh ; eb ea ; 0xf4142
+ mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00 ; 0xf4144 eltorito.c:520
+ jmp short 0412eh ; eb e2 ; 0xf414a
+ mov bx, 001c4h ; bb c4 01 ; 0xf414c eltorito.c:48
+ mov es, di ; 8e c7 ; 0xf414f
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4151
+ and AL, strict byte 03fh ; 24 3f ; 0xf4154 eltorito.c:49
+ xor ah, ah ; 30 e4 ; 0xf4156
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4158
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf415b
+ mov es, di ; 8e c7 ; 0xf415f eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4161
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf4164 eltorito.c:49
+ mov dx, ax ; 89 c2 ; 0xf4166
+ sal dx, 002h ; c1 e2 02 ; 0xf4168
+ mov bx, 001c5h ; bb c5 01 ; 0xf416b eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf416e
+ add ax, dx ; 01 d0 ; 0xf4171 eltorito.c:49
+ inc ax ; 40 ; 0xf4173
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4174
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf4177
+ mov bx, 001c3h ; bb c3 01 ; 0xf417b eltorito.c:48
+ mov es, di ; 8e c7 ; 0xf417e
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4180
+ xor ah, ah ; 30 e4 ; 0xf4183 eltorito.c:49
+ inc ax ; 40 ; 0xf4185
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4186
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf4189
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf418d eltorito.c:533
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4190
+ je short 041bbh ; 74 24 ; 0xf4195
+ cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf4197 eltorito.c:535
+ jne short 041adh ; 75 0f ; 0xf419c
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf419e eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf41a1
+ mov es, ax ; 8e c0 ; 0xf41a4
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf41a6
+ or AL, strict byte 041h ; 0c 41 ; 0xf41a9 eltorito.c:49
+ jmp short 041b8h ; eb 0b ; 0xf41ab eltorito.c:537
+ mov bx, 002ach ; bb ac 02 ; 0xf41ad eltorito.c:48
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf41b0
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf41b3
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf41b6 eltorito.c:49
+ mov byte [es:bx], al ; 26 88 07 ; 0xf41b8 eltorito.c:53
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf41bb eltorito.c:542
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf41be
+ je short 041c9h ; 74 04 ; 0xf41c3
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf41c5 eltorito.c:543
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf41c9 eltorito.c:546
+ mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf41cc
+ xor ah, ah ; 30 e4 ; 0xf41d0
+ sal ax, 008h ; c1 e0 08 ; 0xf41d2
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf41d5 eltorito.c:547
+ pop di ; 5f ; 0xf41d8
+ pop si ; 5e ; 0xf41d9
+ pop dx ; 5a ; 0xf41da
+ pop cx ; 59 ; 0xf41db
+ pop bx ; 5b ; 0xf41dc
+ pop bp ; 5d ; 0xf41dd
+ retn ; c3 ; 0xf41de
+ ; disGetNextSymbol 0xf41df LB 0x6bf9 -> off=0x59 cb=00000000000003e6 uValue=00000000000f2c38 '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, 001h, 046h, 0e0h
+ db 042h, 013h, 043h, 038h, 043h, 008h, 043h, 038h, 043h, 008h, 043h, 026h, 044h, 0c8h, 044h, 001h
+ db 046h, 001h, 046h, 0c8h, 044h, 0c8h, 044h, 0c8h, 044h, 0c8h, 044h, 0c8h, 044h, 0e3h, 044h, 0c8h
+ db 044h, 001h, 046h, 0ebh, 044h, 0fdh, 044h, 001h, 046h, 0fdh, 044h, 001h, 046h, 001h, 046h, 0fdh
+ db 044h, 0c4h, 045h, 001h, 046h, 001h, 046h, 001h, 046h
+int13_cdemu: ; 0xf4238 LB 0x3e6
+ push bp ; 55 ; 0xf4238 eltorito.c:557
+ mov bp, sp ; 89 e5 ; 0xf4239
+ push si ; 56 ; 0xf423b
+ push di ; 57 ; 0xf423c
+ sub sp, strict byte 00018h ; 83 ec 18 ; 0xf423d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4240 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4243
+ mov es, ax ; 8e c0 ; 0xf4246
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4248
+ mov si, 00316h ; be 16 03 ; 0xf424b eltorito.c:572
+ mov dx, ax ; 89 c2 ; 0xf424e
+ mov bx, si ; 89 f3 ; 0xf4250
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf4252
+ mov word [bp-00ch], strict word 0005eh ; c7 46 f4 5e 00 ; 0xf4255 eltorito.c:573
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf425a
+ mov es, ax ; 8e c0 ; 0xf425d eltorito.c:580
+ mov al, byte [es:si+003h] ; 26 8a 44 03 ; 0xf425f
+ add al, al ; 00 c0 ; 0xf4263
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4265
+ mov al, byte [es:si+004h] ; 26 8a 44 04 ; 0xf4268 eltorito.c:581
+ add byte [bp-006h], al ; 00 46 fa ; 0xf426c
+ mov di, strict word 00074h ; bf 74 00 ; 0xf426f eltorito.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4272
+ mov es, ax ; 8e c0 ; 0xf4275
+ mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf4277
+ mov es, dx ; 8e c2 ; 0xf427b eltorito.c:586
+ cmp byte [es:si], 000h ; 26 80 3c 00 ; 0xf427d
+ je short 04292h ; 74 0f ; 0xf4281
+ mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf4283
+ xor ah, ah ; 30 e4 ; 0xf4287
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf4289
+ xor dh, dh ; 30 f6 ; 0xf428c
+ cmp ax, dx ; 39 d0 ; 0xf428e
+ je short 042bbh ; 74 29 ; 0xf4290
+ mov bx, 00ddch ; bb dc 0d ; 0xf4292 eltorito.c:587
+ mov cx, ds ; 8c d9 ; 0xf4295
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4297
+ call 01910h ; e8 73 d6 ; 0xf429a
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf429d
+ xor ah, ah ; 30 e4 ; 0xf42a0
+ push ax ; 50 ; 0xf42a2
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42a3
+ shr ax, 008h ; c1 e8 08 ; 0xf42a6
+ push ax ; 50 ; 0xf42a9
+ push 00394h ; 68 94 03 ; 0xf42aa
+ push 003a0h ; 68 a0 03 ; 0xf42ad
+ push strict byte 00004h ; 6a 04 ; 0xf42b0
+ call 01953h ; e8 9e d6 ; 0xf42b2
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf42b5
+ jmp near 045deh ; e9 23 03 ; 0xf42b8 eltorito.c:588
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42bb eltorito.c:591
+ shr ax, 008h ; c1 e8 08 ; 0xf42be
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf42c1
+ jnbe short 04335h ; 77 6f ; 0xf42c4
+ push CS ; 0e ; 0xf42c6
+ pop ES ; 07 ; 0xf42c7
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf42c8
+ mov di, 041dfh ; bf df 41 ; 0xf42cb
+ repne scasb ; f2 ae ; 0xf42ce
+ sal cx, 1 ; d1 e1 ; 0xf42d0
+ mov di, cx ; 89 cf ; 0xf42d2
+ mov dx, word [cs:di+041fch] ; 2e 8b 95 fc 41 ; 0xf42d4
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42d9
+ xor ah, ah ; 30 e4 ; 0xf42dc
+ jmp dx ; ff e2 ; 0xf42de
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf42e0 eltorito.c:594
+ xor ah, ah ; 30 e4 ; 0xf42e3
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf42e5
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf42e8
+ add bx, ax ; 01 c3 ; 0xf42eb
+ mov bl, byte [es:bx+01eh] ; 26 8a 5f 1e ; 0xf42ed
+ xor bh, bh ; 30 ff ; 0xf42f1
+ add bx, bx ; 01 db ; 0xf42f3
+ cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf42f5
+ je short 04305h ; 74 09 ; 0xf42fa
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf42fc eltorito.c:596
+ xor ah, ah ; 30 e4 ; 0xf42ff
+ call word [word bx+00076h] ; ff 97 76 00 ; 0xf4301
+ jmp near 044c8h ; e9 c0 01 ; 0xf4305 eltorito.c:598
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4308 eltorito.c:614
+ xor ah, ah ; 30 e4 ; 0xf430b
+ or ah, 003h ; 80 cc 03 ; 0xf430d
+ jmp near 045e6h ; e9 d3 02 ; 0xf4310 eltorito.c:615
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4313 eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4316
+ mov es, dx ; 8e c2 ; 0xf4319
+ mov cl, byte [es:bx] ; 26 8a 0f ; 0xf431b
+ mov dl, cl ; 88 ca ; 0xf431e eltorito.c:620
+ xor dh, dh ; 30 f6 ; 0xf4320
+ sal dx, 008h ; c1 e2 08 ; 0xf4322
+ or ax, dx ; 09 d0 ; 0xf4325
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4327
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf432a eltorito.c:53
+ test cl, cl ; 84 c9 ; 0xf432e eltorito.c:624
+ je short 04392h ; 74 60 ; 0xf4330
+ jmp near 045fah ; e9 c5 02 ; 0xf4332 eltorito.c:625
+ jmp near 04601h ; e9 c9 02 ; 0xf4335
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4338 eltorito.c:632
+ mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf433b
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf433f eltorito.c:633
+ mov cx, word [es:bx+010h] ; 26 8b 4f 10 ; 0xf4343 eltorito.c:634
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf4347 eltorito.c:636
+ and dx, strict byte 0003fh ; 83 e2 3f ; 0xf434a
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf434d
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf4350 eltorito.c:637
+ and bx, 000c0h ; 81 e3 c0 00 ; 0xf4353
+ sal bx, 002h ; c1 e3 02 ; 0xf4357
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf435a
+ shr dx, 008h ; c1 ea 08 ; 0xf435d
+ or dx, bx ; 09 da ; 0xf4360
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf4362 eltorito.c:638
+ shr bx, 008h ; c1 eb 08 ; 0xf4365
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf4368
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf436b eltorito.c:639
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf436e
+ je short 0438fh ; 74 1b ; 0xf4372 eltorito.c:647
+ cmp si, word [bp-018h] ; 3b 76 e8 ; 0xf4374 eltorito.c:651
+ jc short 04381h ; 72 08 ; 0xf4377
+ cmp dx, ax ; 39 c2 ; 0xf4379
+ jnc short 04381h ; 73 04 ; 0xf437b
+ cmp cx, bx ; 39 d9 ; 0xf437d
+ jnbe short 04384h ; 77 03 ; 0xf437f
+ jmp near 045deh ; e9 5a 02 ; 0xf4381 eltorito.c:654
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4384 eltorito.c:658
+ shr ax, 008h ; c1 e8 08 ; 0xf4387
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf438a
+ jne short 04395h ; 75 06 ; 0xf438d
+ jmp near 044c8h ; e9 36 01 ; 0xf438f eltorito.c:659
+ jmp near 044cch ; e9 37 01 ; 0xf4392
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4395 eltorito.c:661
+ shr ax, 004h ; c1 e8 04 ; 0xf4398
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf439b
+ add bx, ax ; 01 c3 ; 0xf439e
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf43a0
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf43a3 eltorito.c:662
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf43a6
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf43a9
+ mov ax, dx ; 89 d0 ; 0xf43ac eltorito.c:665
+ xor dx, dx ; 31 d2 ; 0xf43ae
+ mov bx, cx ; 89 cb ; 0xf43b0
+ xor cx, cx ; 31 c9 ; 0xf43b2
+ call 0aa40h ; e8 89 66 ; 0xf43b4
+ xor bx, bx ; 31 db ; 0xf43b7
+ add ax, word [bp-014h] ; 03 46 ec ; 0xf43b9
+ adc dx, bx ; 11 da ; 0xf43bc
+ mov bx, si ; 89 f3 ; 0xf43be
+ xor cx, cx ; 31 c9 ; 0xf43c0
+ call 0aa40h ; e8 7b 66 ; 0xf43c2
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf43c5
+ dec bx ; 4b ; 0xf43c8
+ xor cx, cx ; 31 c9 ; 0xf43c9
+ add bx, ax ; 01 c3 ; 0xf43cb
+ adc cx, dx ; 11 d1 ; 0xf43cd
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43cf eltorito.c:668
+ xor al, al ; 30 c0 ; 0xf43d2
+ or ax, di ; 09 f8 ; 0xf43d4
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf43d6
+ push word [bp-00eh] ; ff 76 f2 ; 0xf43d9 eltorito.c:670
+ push word [bp-010h] ; ff 76 f0 ; 0xf43dc
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43df
+ xor ah, ah ; 30 e4 ; 0xf43e2
+ mov dx, di ; 89 fa ; 0xf43e4
+ call 03db7h ; e8 ce f9 ; 0xf43e6
+ mov dx, ax ; 89 c2 ; 0xf43e9
+ test al, al ; 84 c0 ; 0xf43eb eltorito.c:671
+ je short 0438fh ; 74 a0 ; 0xf43ed
+ mov bx, 00ddch ; bb dc 0d ; 0xf43ef eltorito.c:672
+ mov cx, ds ; 8c d9 ; 0xf43f2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf43f4
+ call 01910h ; e8 16 d5 ; 0xf43f7
+ mov al, dl ; 88 d0 ; 0xf43fa
+ xor ah, ah ; 30 e4 ; 0xf43fc
+ push ax ; 50 ; 0xf43fe
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43ff
+ shr ax, 008h ; c1 e8 08 ; 0xf4402
+ push ax ; 50 ; 0xf4405
+ push 00394h ; 68 94 03 ; 0xf4406
+ push 003d6h ; 68 d6 03 ; 0xf4409
+ push strict byte 00004h ; 6a 04 ; 0xf440c
+ call 01953h ; e8 42 d5 ; 0xf440e
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4411
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4414 eltorito.c:673
+ xor ah, ah ; 30 e4 ; 0xf4417
+ or ah, 002h ; 80 cc 02 ; 0xf4419
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf441c
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf441f eltorito.c:674
+ jmp near 045e9h ; e9 c3 01 ; 0xf4423 eltorito.c:675
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4426 eltorito.c:682
+ mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf4429
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf442d eltorito.c:683
+ dec ax ; 48 ; 0xf4431
+ mov cx, word [es:bx+010h] ; 26 8b 4f 10 ; 0xf4432 eltorito.c:684
+ dec cx ; 49 ; 0xf4436
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4437 eltorito.c:686
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf443b eltorito.c:687
+ xor dl, dl ; 30 d2 ; 0xf443e
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf4440 eltorito.c:688
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf4443
+ mov word [bp-01ch], di ; 89 7e e4 ; 0xf4447
+ mov di, ax ; 89 c7 ; 0xf444a
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf444c
+ sal di, 008h ; c1 e7 08 ; 0xf4450
+ mov word [bp-01ah], di ; 89 7e e6 ; 0xf4453
+ mov di, word [bp-01ch] ; 8b 7e e4 ; 0xf4456
+ or di, word [bp-01ah] ; 0b 7e e6 ; 0xf4459
+ mov word [bp+014h], di ; 89 7e 14 ; 0xf445c
+ shr ax, 002h ; c1 e8 02 ; 0xf445f eltorito.c:689
+ xor ah, ah ; 30 e4 ; 0xf4462
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf4464
+ and si, strict byte 0003fh ; 83 e6 3f ; 0xf4466
+ or si, ax ; 09 c6 ; 0xf4469
+ mov ax, di ; 89 f8 ; 0xf446b
+ xor al, al ; 30 c0 ; 0xf446d
+ or ax, si ; 09 f0 ; 0xf446f
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf4471
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf4474 eltorito.c:690
+ xor ah, ah ; 30 e4 ; 0xf4477
+ sal cx, 008h ; c1 e1 08 ; 0xf4479
+ or ax, cx ; 09 c8 ; 0xf447c
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf447e
+ xor al, al ; 30 c0 ; 0xf4481 eltorito.c:691
+ or AL, strict byte 002h ; 0c 02 ; 0xf4483
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf4485
+ mov al, byte [es:bx+001h] ; 26 8a 47 01 ; 0xf4488 eltorito.c:694
+ mov word [bp+010h], dx ; 89 56 10 ; 0xf448c
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf448f
+ je short 044afh ; 74 1c ; 0xf4491
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf4493
+ je short 044a7h ; 74 10 ; 0xf4495
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf4497
+ jne short 044b4h ; 75 19 ; 0xf4499
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf449b eltorito.c:695
+ xor al, al ; 30 c0 ; 0xf449e
+ or AL, strict byte 002h ; 0c 02 ; 0xf44a0
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf44a2
+ jmp short 044b4h ; eb 0d ; 0xf44a5
+ or dl, 004h ; 80 ca 04 ; 0xf44a7 eltorito.c:696
+ mov word [bp+010h], dx ; 89 56 10 ; 0xf44aa
+ jmp short 044b4h ; eb 05 ; 0xf44ad
+ or dl, 005h ; 80 ca 05 ; 0xf44af eltorito.c:697
+ jmp short 044aah ; eb f6 ; 0xf44b2
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf44b4 eltorito.c:701
+ cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf44b7
+ jnc short 044c8h ; 73 0a ; 0xf44bc
+ mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf44be eltorito.c:702
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf44c3 eltorito.c:703
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf44c8 eltorito.c:705
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf44cc
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf44cf
+ mov es, ax ; 8e c0 ; 0xf44d2
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf44d4
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf44d8
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf44dc
+ pop di ; 5f ; 0xf44df
+ pop si ; 5e ; 0xf44e0
+ pop bp ; 5d ; 0xf44e1
+ retn ; c3 ; 0xf44e2
+ or ah, 003h ; 80 cc 03 ; 0xf44e3 eltorito.c:710
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf44e6
+ jmp short 044cch ; eb e1 ; 0xf44e9 eltorito.c:711
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf44eb eltorito.c:715
+ or ah, 030h ; 80 cc 30 ; 0xf44f0 eltorito.c:716
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf44f3
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf44f6 eltorito.c:717
+ jmp short 044cch ; eb cf ; 0xf44fb eltorito.c:718
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf44fd eltorito.c:726
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf4500
+ mov si, bx ; 89 de ; 0xf4503
+ mov [bp-012h], es ; 8c 46 ee ; 0xf4505
+ mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf4508 eltorito.c:728
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf450c eltorito.c:729
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4510
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf4513 eltorito.c:730
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf4517
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf451a eltorito.c:733
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf451e
+ or ax, cx ; 09 c8 ; 0xf4522 eltorito.c:734
+ je short 0453eh ; 74 18 ; 0xf4524
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4526 eltorito.c:735
+ shr ax, 008h ; c1 e8 08 ; 0xf4529
+ push ax ; 50 ; 0xf452c
+ push 00394h ; 68 94 03 ; 0xf452d
+ push 003f7h ; 68 f7 03 ; 0xf4530
+ push strict byte 00007h ; 6a 07 ; 0xf4533
+ call 01953h ; e8 1b d4 ; 0xf4535
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4538
+ jmp near 045deh ; e9 a0 00 ; 0xf453b eltorito.c:736
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf453e eltorito.c:740
+ mov ax, word [es:si+008h] ; 26 8b 44 08 ; 0xf4541
+ mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf4545
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf4549 eltorito.c:743
+ shr di, 008h ; c1 ef 08 ; 0xf454c
+ cmp di, strict byte 00044h ; 83 ff 44 ; 0xf454f
+ jne short 04557h ; 75 03 ; 0xf4552
+ jmp near 044c8h ; e9 71 ff ; 0xf4554
+ cmp di, strict byte 00047h ; 83 ff 47 ; 0xf4557
+ jne short 0455eh ; 75 02 ; 0xf455a
+ jmp short 04554h ; eb f6 ; 0xf455c eltorito.c:744
+ push word [bp-00eh] ; ff 76 f2 ; 0xf455e eltorito.c:749
+ push word [bp-010h] ; ff 76 f0 ; 0xf4561
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4564
+ mov byte [bp-01ah], bl ; 88 5e e6 ; 0xf4567
+ mov byte [bp-019h], 000h ; c6 46 e7 00 ; 0xf456a
+ mov bx, ax ; 89 c3 ; 0xf456e
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf4570
+ call 03db7h ; e8 41 f8 ; 0xf4573
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf4576
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf4579 eltorito.c:750
+ mov ax, word [es:bx+01ah] ; 26 8b 47 1a ; 0xf457c
+ mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf4580
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4584
+ shr dx, 1 ; d1 ea ; 0xf4587
+ rcr ax, 1 ; d1 d8 ; 0xf4589
+ loop 04587h ; e2 fa ; 0xf458b
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf458d eltorito.c:751
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf4590
+ cmp byte [bp-016h], 000h ; 80 7e ea 00 ; 0xf4594 eltorito.c:753
+ je short 04554h ; 74 ba ; 0xf4598
+ mov bx, 00ddch ; bb dc 0d ; 0xf459a eltorito.c:754
+ mov cx, ds ; 8c d9 ; 0xf459d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf459f
+ call 01910h ; e8 6b d3 ; 0xf45a2
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf45a5
+ xor ah, ah ; 30 e4 ; 0xf45a8
+ push ax ; 50 ; 0xf45aa
+ push di ; 57 ; 0xf45ab
+ push 00394h ; 68 94 03 ; 0xf45ac
+ push 00420h ; 68 20 04 ; 0xf45af
+ push strict byte 00004h ; 6a 04 ; 0xf45b2
+ call 01953h ; e8 9c d3 ; 0xf45b4
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf45b7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf45ba eltorito.c:755
+ xor ah, ah ; 30 e4 ; 0xf45bd
+ or ah, 00ch ; 80 cc 0c ; 0xf45bf
+ jmp short 045e6h ; eb 22 ; 0xf45c2
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf45c4 eltorito.c:763
+ push ax ; 50 ; 0xf45c7
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf45c8
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf45cb
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf45ce
+ mov cx, word [bp-00ah] ; 8b 4e f6 ; 0xf45d1
+ call 057fbh ; e8 24 12 ; 0xf45d4
+ test ax, ax ; 85 c0 ; 0xf45d7
+ jne short 045deh ; 75 03 ; 0xf45d9
+ jmp near 044c8h ; e9 ea fe ; 0xf45db
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf45de eltorito.c:764
+ xor ah, ah ; 30 e4 ; 0xf45e1
+ or ah, 001h ; 80 cc 01 ; 0xf45e3
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf45e6
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf45e9
+ shr ax, 008h ; c1 e8 08 ; 0xf45ec
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf45ef
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf45f2
+ mov es, dx ; 8e c2 ; 0xf45f5
+ mov byte [es:bx], al ; 26 88 07 ; 0xf45f7
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf45fa
+ jmp near 044dch ; e9 db fe ; 0xf45fe
+ mov bx, 00ddch ; bb dc 0d ; 0xf4601 eltorito.c:780
+ mov cx, ds ; 8c d9 ; 0xf4604
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4606
+ call 01910h ; e8 04 d3 ; 0xf4609
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf460c
+ shr ax, 008h ; c1 e8 08 ; 0xf460f
+ push ax ; 50 ; 0xf4612
+ push 00394h ; 68 94 03 ; 0xf4613
+ push 00442h ; 68 42 04 ; 0xf4616
+ push strict byte 00004h ; 6a 04 ; 0xf4619
+ jmp near 04535h ; e9 17 ff ; 0xf461b
+ ; disGetNextSymbol 0xf461e LB 0x67ba -> off=0x59 cb=00000000000002fa uValue=00000000000f3077 '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, 058h, 047h, 056h
+ db 049h, 01ah, 047h, 058h, 047h, 00fh, 047h, 058h, 047h, 00fh, 047h, 058h, 047h, 056h, 049h, 058h
+ db 047h, 058h, 047h, 056h, 049h, 056h, 049h, 056h, 049h, 056h, 049h, 056h, 049h, 03fh, 047h, 056h
+ db 049h, 058h, 047h, 045h, 047h, 074h, 047h, 00fh, 047h, 074h, 047h, 03eh, 048h, 0ddh, 048h, 074h
+ db 047h, 0ffh, 048h, 016h, 049h, 01eh, 049h, 058h, 047h
+int13_cdrom: ; 0xf4677 LB 0x2fa
+ push bp ; 55 ; 0xf4677 eltorito.c:805
+ mov bp, sp ; 89 e5 ; 0xf4678
+ push si ; 56 ; 0xf467a
+ push di ; 57 ; 0xf467b
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf467c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf467f eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4682
+ mov es, ax ; 8e c0 ; 0xf4685
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4687
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf468a eltorito.c:814
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf468d
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4690 eltorito.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4693
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4697 eltorito.c:821
+ xor ah, ah ; 30 e4 ; 0xf469a
+ cmp ax, 000e0h ; 3d e0 00 ; 0xf469c
+ jc short 046a6h ; 72 05 ; 0xf469f
+ cmp ax, 000f4h ; 3d f4 00 ; 0xf46a1
+ jc short 046c4h ; 72 1e ; 0xf46a4
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf46a6 eltorito.c:822
+ xor ah, ah ; 30 e4 ; 0xf46a9
+ push ax ; 50 ; 0xf46ab
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf46ac
+ shr ax, 008h ; c1 e8 08 ; 0xf46af
+ push ax ; 50 ; 0xf46b2
+ push 00472h ; 68 72 04 ; 0xf46b3
+ push 0047eh ; 68 7e 04 ; 0xf46b6
+ push strict byte 00004h ; 6a 04 ; 0xf46b9
+ call 01953h ; e8 95 d2 ; 0xf46bb
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf46be
+ jmp near 04934h ; e9 70 02 ; 0xf46c1 eltorito.c:823
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf46c4 eltorito.c:827
+ xor ah, ah ; 30 e4 ; 0xf46c7
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf46c9
+ mov bx, si ; 89 f3 ; 0xf46cc
+ add bx, ax ; 01 c3 ; 0xf46ce
+ mov dl, byte [es:bx+00184h] ; 26 8a 97 84 01 ; 0xf46d0
+ cmp dl, 014h ; 80 fa 14 ; 0xf46d5 eltorito.c:830
+ jc short 046eah ; 72 10 ; 0xf46d8
+ push ax ; 50 ; 0xf46da eltorito.c:831
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf46db
+ shr ax, 008h ; c1 e8 08 ; 0xf46de
+ push ax ; 50 ; 0xf46e1
+ push 00472h ; 68 72 04 ; 0xf46e2
+ push 004a9h ; 68 a9 04 ; 0xf46e5
+ jmp short 046b9h ; eb cf ; 0xf46e8
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf46ea eltorito.c:835
+ shr ax, 008h ; c1 e8 08 ; 0xf46ed
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf46f0
+ jnbe short 04758h ; 77 63 ; 0xf46f3
+ push CS ; 0e ; 0xf46f5
+ pop ES ; 07 ; 0xf46f6
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf46f7
+ mov di, 0461eh ; bf 1e 46 ; 0xf46fa
+ repne scasb ; f2 ae ; 0xf46fd
+ sal cx, 1 ; d1 e1 ; 0xf46ff
+ mov di, cx ; 89 cf ; 0xf4701
+ mov bx, word [cs:di+0463bh] ; 2e 8b 9d 3b 46 ; 0xf4703
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4708
+ xor ah, ah ; 30 e4 ; 0xf470b
+ jmp bx ; ff e3 ; 0xf470d
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf470f eltorito.c:853
+ xor ah, ah ; 30 e4 ; 0xf4712
+ or ah, 003h ; 80 cc 03 ; 0xf4714
+ jmp near 0493ch ; e9 22 02 ; 0xf4717
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf471a eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf471d
+ mov es, dx ; 8e c2 ; 0xf4720
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf4722
+ mov bl, dl ; 88 d3 ; 0xf4725 eltorito.c:859
+ xor bh, bh ; 30 ff ; 0xf4727
+ sal bx, 008h ; c1 e3 08 ; 0xf4729
+ or ax, bx ; 09 d8 ; 0xf472c
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf472e
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4731 eltorito.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4734
+ test dl, dl ; 84 d2 ; 0xf4738 eltorito.c:863
+ je short 04755h ; 74 19 ; 0xf473a
+ jmp near 04950h ; e9 11 02 ; 0xf473c eltorito.c:864
+ or ah, 002h ; 80 cc 02 ; 0xf473f eltorito.c:870
+ jmp near 0493ch ; e9 f7 01 ; 0xf4742
+ mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf4745 eltorito.c:875
+ or ah, 030h ; 80 cc 30 ; 0xf474a eltorito.c:876
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf474d
+ mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf4750 eltorito.c:877
+ jmp near 0495ah ; e9 02 02 ; 0xf4755 eltorito.c:878
+ mov bx, 00ddch ; bb dc 0d ; 0xf4758
+ mov cx, ds ; 8c d9 ; 0xf475b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf475d
+ call 01910h ; e8 ad d1 ; 0xf4760
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4763
+ shr ax, 008h ; c1 e8 08 ; 0xf4766
+ push ax ; 50 ; 0xf4769
+ push 00472h ; 68 72 04 ; 0xf476a
+ push 0037bh ; 68 7b 03 ; 0xf476d
+ push strict byte 00004h ; 6a 04 ; 0xf4770
+ jmp short 047afh ; eb 3b ; 0xf4772
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf4774 eltorito.c:886
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf4777
+ mov di, bx ; 89 df ; 0xf477a
+ mov [bp-008h], es ; 8c 46 f8 ; 0xf477c
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf477f eltorito.c:888
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4783
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf4786 eltorito.c:889
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf478a
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf478d eltorito.c:890
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4791
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf4794 eltorito.c:893
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf4798
+ or ax, cx ; 09 c8 ; 0xf479c eltorito.c:894
+ je short 047b8h ; 74 18 ; 0xf479e
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47a0 eltorito.c:895
+ shr ax, 008h ; c1 e8 08 ; 0xf47a3
+ push ax ; 50 ; 0xf47a6
+ push 00472h ; 68 72 04 ; 0xf47a7
+ push 003f7h ; 68 f7 03 ; 0xf47aa
+ push strict byte 00007h ; 6a 07 ; 0xf47ad
+ call 01953h ; e8 a1 d1 ; 0xf47af
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf47b2
+ jmp near 04934h ; e9 7c 01 ; 0xf47b5 eltorito.c:896
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf47b8 eltorito.c:900
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf47bb
+ mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf47bf
+ mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf47c3 eltorito.c:903
+ shr bx, 008h ; c1 eb 08 ; 0xf47c6
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf47c9
+ cmp bx, strict byte 00044h ; 83 fb 44 ; 0xf47cc
+ je short 047d6h ; 74 05 ; 0xf47cf
+ cmp bx, strict byte 00047h ; 83 fb 47 ; 0xf47d1
+ jne short 047d9h ; 75 03 ; 0xf47d4
+ jmp near 04956h ; e9 7d 01 ; 0xf47d6 eltorito.c:904
+ push word [bp-010h] ; ff 76 f0 ; 0xf47d9 eltorito.c:909
+ push word [bp-00ch] ; ff 76 f4 ; 0xf47dc
+ mov byte [bp-012h], dl ; 88 56 ee ; 0xf47df
+ mov byte [bp-011h], 000h ; c6 46 ef 00 ; 0xf47e2
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf47e6
+ mov bx, ax ; 89 c3 ; 0xf47e9
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf47eb
+ call 03d33h ; e8 42 f5 ; 0xf47ee
+ mov dx, ax ; 89 c2 ; 0xf47f1
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf47f3 eltorito.c:910
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf47f6
+ mov bx, word [es:si+01ch] ; 26 8b 5c 1c ; 0xf47fa
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf47fe
+ shr bx, 1 ; d1 eb ; 0xf4801
+ rcr ax, 1 ; d1 d8 ; 0xf4803
+ loop 04801h ; e2 fa ; 0xf4805
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4807 eltorito.c:911
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf480a
+ test dl, dl ; 84 d2 ; 0xf480e eltorito.c:913
+ je short 047d6h ; 74 c4 ; 0xf4810
+ mov bx, 00ddch ; bb dc 0d ; 0xf4812 eltorito.c:914
+ mov cx, ds ; 8c d9 ; 0xf4815
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4817
+ call 01910h ; e8 f3 d0 ; 0xf481a
+ mov al, dl ; 88 d0 ; 0xf481d
+ xor ah, ah ; 30 e4 ; 0xf481f
+ push ax ; 50 ; 0xf4821
+ push word [bp-00ah] ; ff 76 f6 ; 0xf4822
+ push 00472h ; 68 72 04 ; 0xf4825
+ push 00420h ; 68 20 04 ; 0xf4828
+ push strict byte 00004h ; 6a 04 ; 0xf482b
+ call 01953h ; e8 23 d1 ; 0xf482d
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4830
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4833 eltorito.c:915
+ xor ah, ah ; 30 e4 ; 0xf4836
+ or ah, 00ch ; 80 cc 0c ; 0xf4838
+ jmp near 0493ch ; e9 fe 00 ; 0xf483b
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf483e eltorito.c:923
+ jnbe short 048a7h ; 77 64 ; 0xf4841
+ mov bl, dl ; 88 d3 ; 0xf4843 eltorito.c:926
+ xor bh, bh ; 30 ff ; 0xf4845
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf4847
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf484a
+ add bx, si ; 01 f3 ; 0xf484d
+ mov bl, byte [es:bx+021h] ; 26 8a 5f 21 ; 0xf484f
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4853 eltorito.c:928
+ je short 048c4h ; 74 6c ; 0xf4856
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4858
+ je short 04897h ; 74 3a ; 0xf485b
+ test ax, ax ; 85 c0 ; 0xf485d
+ jne short 04894h ; 75 33 ; 0xf485f
+ cmp bl, 0ffh ; 80 fb ff ; 0xf4861 eltorito.c:930
+ jne short 04878h ; 75 12 ; 0xf4864
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4866 eltorito.c:931
+ xor ah, ah ; 30 e4 ; 0xf4869
+ or ah, 0b4h ; 80 cc b4 ; 0xf486b
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf486e
+ xor al, al ; 30 c0 ; 0xf4871 eltorito.c:932
+ or AL, strict byte 001h ; 0c 01 ; 0xf4873
+ jmp near 0493ch ; e9 c4 00 ; 0xf4875
+ mov al, dl ; 88 d0 ; 0xf4878 eltorito.c:934
+ xor ah, ah ; 30 e4 ; 0xf487a
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf487c
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf487f eltorito.c:935
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf4881
+ add si, ax ; 01 c6 ; 0xf4884
+ mov byte [es:si+021h], bl ; 26 88 5c 21 ; 0xf4886
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf488a eltorito.c:936
+ xor al, al ; 30 c0 ; 0xf488d
+ or AL, strict byte 001h ; 0c 01 ; 0xf488f
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4891
+ jmp near 04956h ; e9 bf 00 ; 0xf4894 eltorito.c:937
+ test bl, bl ; 84 db ; 0xf4897 eltorito.c:939
+ jne short 048aah ; 75 0f ; 0xf4899
+ or ah, 0b0h ; 80 cc b0 ; 0xf489b eltorito.c:940
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf489e
+ mov byte [bp+018h], bl ; 88 5e 18 ; 0xf48a1 eltorito.c:941
+ jmp near 0493fh ; e9 98 00 ; 0xf48a4 eltorito.c:942
+ jmp near 04934h ; e9 8a 00 ; 0xf48a7
+ mov al, dl ; 88 d0 ; 0xf48aa eltorito.c:943
+ xor ah, ah ; 30 e4 ; 0xf48ac
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf48ae
+ db 0feh, 0cbh
+ ; dec bl ; fe cb ; 0xf48b1 eltorito.c:944
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf48b3
+ add si, ax ; 01 c6 ; 0xf48b6
+ mov byte [es:si+021h], bl ; 26 88 5c 21 ; 0xf48b8
+ test bl, bl ; 84 db ; 0xf48bc eltorito.c:945
+ jne short 048c6h ; 75 06 ; 0xf48be
+ xor ax, ax ; 31 c0 ; 0xf48c0
+ jmp short 048c9h ; eb 05 ; 0xf48c2
+ jmp short 048d5h ; eb 0f ; 0xf48c4
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf48c6
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf48c9
+ xor dl, dl ; 30 d2 ; 0xf48cc
+ or dx, ax ; 09 c2 ; 0xf48ce
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf48d0
+ jmp short 04894h ; eb bf ; 0xf48d3 eltorito.c:946
+ test bl, bl ; 84 db ; 0xf48d5 eltorito.c:948
+ jne short 048c6h ; 75 ed ; 0xf48d7
+ xor al, al ; 30 c0 ; 0xf48d9
+ jmp short 048c9h ; eb ec ; 0xf48db
+ xor dh, dh ; 30 f6 ; 0xf48dd eltorito.c:955
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf48df
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf48e2
+ mov bx, si ; 89 f3 ; 0xf48e5
+ add bx, dx ; 01 d3 ; 0xf48e7
+ mov bl, byte [es:bx+021h] ; 26 8a 5f 21 ; 0xf48e9
+ test bl, bl ; 84 db ; 0xf48ed eltorito.c:957
+ je short 048f6h ; 74 05 ; 0xf48ef
+ or ah, 0b1h ; 80 cc b1 ; 0xf48f1 eltorito.c:958
+ jmp short 0493ch ; eb 46 ; 0xf48f4
+ je short 04956h ; 74 5e ; 0xf48f6 eltorito.c:980
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48f8 eltorito.c:981
+ xor ah, ah ; 30 e4 ; 0xf48fb
+ jmp short 048f1h ; eb f2 ; 0xf48fd
+ mov al, dl ; 88 d0 ; 0xf48ff eltorito.c:989
+ push ax ; 50 ; 0xf4901
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4902
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4905
+ mov bx, si ; 89 f3 ; 0xf4908
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf490a
+ call 057fbh ; e8 eb 0e ; 0xf490d
+ test ax, ax ; 85 c0 ; 0xf4910
+ je short 04956h ; 74 42 ; 0xf4912
+ jmp short 04934h ; eb 1e ; 0xf4914 eltorito.c:990
+ or ah, 006h ; 80 cc 06 ; 0xf4916 eltorito.c:997
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4919
+ jmp short 04950h ; eb 32 ; 0xf491c eltorito.c:998
+ cmp ax, strict word 00006h ; 3d 06 00 ; 0xf491e eltorito.c:1003
+ je short 04956h ; 74 33 ; 0xf4921
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4923
+ jc short 04934h ; 72 0c ; 0xf4926
+ jbe short 04956h ; 76 2c ; 0xf4928
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf492a
+ jc short 04934h ; 72 05 ; 0xf492d
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf492f
+ jbe short 04956h ; 76 22 ; 0xf4932
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4934 eltorito.c:1030
+ xor ah, ah ; 30 e4 ; 0xf4937
+ or ah, 001h ; 80 cc 01 ; 0xf4939
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf493c
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf493f eltorito.c:1032
+ shr ax, 008h ; c1 e8 08 ; 0xf4942
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4945 eltorito.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4948
+ mov es, dx ; 8e c2 ; 0xf494b
+ mov byte [es:bx], al ; 26 88 07 ; 0xf494d
+ or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4950 eltorito.c:1034
+ jmp short 0496ah ; eb 14 ; 0xf4954 eltorito.c:1035
+ mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4956 eltorito.c:1038
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf495a eltorito.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf495d
+ mov es, ax ; 8e c0 ; 0xf4960
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4962
+ and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4966 eltorito.c:1041
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf496a eltorito.c:1043
+ pop di ; 5f ; 0xf496d
+ pop si ; 5e ; 0xf496e
+ pop bp ; 5d ; 0xf496f
+ retn ; c3 ; 0xf4970
+ ; disGetNextSymbol 0xf4971 LB 0x6467 -> off=0x0 cb=000000000000004b uValue=00000000000f3371 'print_boot_device'
+print_boot_device: ; 0xf4971 LB 0x4b
+ push bp ; 55 ; 0xf4971 boot.c:119
+ mov bp, sp ; 89 e5 ; 0xf4972
+ push cx ; 51 ; 0xf4974
+ test al, al ; 84 c0 ; 0xf4975 boot.c:127
+ je short 0497eh ; 74 05 ; 0xf4977
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf4979
+ jmp short 04998h ; eb 1a ; 0xf497c boot.c:128
+ test dl, dl ; 84 d2 ; 0xf497e
+ je short 04987h ; 74 05 ; 0xf4980
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf4982
+ jmp short 04998h ; eb 11 ; 0xf4985 boot.c:129
+ test bl, 080h ; f6 c3 80 ; 0xf4987
+ jne short 04990h ; 75 04 ; 0xf498a
+ xor dh, dh ; 30 f6 ; 0xf498c
+ jmp short 04998h ; eb 08 ; 0xf498e boot.c:130
+ test bl, 080h ; f6 c3 80 ; 0xf4990
+ je short 049b6h ; 74 21 ; 0xf4993
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4995
+ mov bx, 00ddch ; bb dc 0d ; 0xf4998 boot.c:133
+ mov cx, ds ; 8c d9 ; 0xf499b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf499d
+ call 01910h ; e8 6d cf ; 0xf49a0
+ imul dx, dx, strict byte 0000ah ; 6b d2 0a ; 0xf49a3
+ add dx, 00e02h ; 81 c2 02 0e ; 0xf49a6
+ push dx ; 52 ; 0xf49aa
+ push 004dch ; 68 dc 04 ; 0xf49ab
+ push strict byte 00004h ; 6a 04 ; 0xf49ae
+ call 01953h ; e8 a0 cf ; 0xf49b0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf49b3
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf49b6 boot.c:134
+ pop cx ; 59 ; 0xf49b9
+ pop bp ; 5d ; 0xf49ba
+ retn ; c3 ; 0xf49bb
+ ; disGetNextSymbol 0xf49bc LB 0x641c -> off=0x0 cb=00000000000000c2 uValue=00000000000f33bc 'print_boot_failure'
+print_boot_failure: ; 0xf49bc LB 0xc2
+ push bp ; 55 ; 0xf49bc boot.c:141
+ mov bp, sp ; 89 e5 ; 0xf49bd
+ push si ; 56 ; 0xf49bf
+ mov ah, dl ; 88 d4 ; 0xf49c0
+ mov dl, cl ; 88 ca ; 0xf49c2
+ mov cl, bl ; 88 d9 ; 0xf49c4 boot.c:144
+ and cl, 07fh ; 80 e1 7f ; 0xf49c6
+ xor ch, ch ; 30 ed ; 0xf49c9
+ mov si, cx ; 89 ce ; 0xf49cb
+ test al, al ; 84 c0 ; 0xf49cd boot.c:152
+ je short 049ech ; 74 1b ; 0xf49cf
+ mov bx, 00ddch ; bb dc 0d ; 0xf49d1 boot.c:153
+ mov cx, ds ; 8c d9 ; 0xf49d4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf49d6
+ call 01910h ; e8 34 cf ; 0xf49d9
+ push 00e16h ; 68 16 0e ; 0xf49dc
+ push 004f0h ; 68 f0 04 ; 0xf49df
+ push strict byte 00004h ; 6a 04 ; 0xf49e2
+ call 01953h ; e8 6c cf ; 0xf49e4
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf49e7
+ jmp short 04a30h ; eb 44 ; 0xf49ea boot.c:154
+ test ah, ah ; 84 e4 ; 0xf49ec
+ je short 04a00h ; 74 10 ; 0xf49ee
+ mov bx, 00ddch ; bb dc 0d ; 0xf49f0 boot.c:155
+ mov cx, ds ; 8c d9 ; 0xf49f3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf49f5
+ call 01910h ; e8 15 cf ; 0xf49f8
+ push 00e20h ; 68 20 0e ; 0xf49fb
+ jmp short 049dfh ; eb df ; 0xf49fe
+ test bl, 080h ; f6 c3 80 ; 0xf4a00 boot.c:156
+ je short 04a16h ; 74 11 ; 0xf4a03
+ mov bx, 00ddch ; bb dc 0d ; 0xf4a05 boot.c:157
+ mov cx, ds ; 8c d9 ; 0xf4a08
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4a0a
+ call 01910h ; e8 00 cf ; 0xf4a0d
+ push si ; 56 ; 0xf4a10
+ push 00e0ch ; 68 0c 0e ; 0xf4a11
+ jmp short 04a25h ; eb 0f ; 0xf4a14 boot.c:158
+ mov bx, 00ddch ; bb dc 0d ; 0xf4a16 boot.c:159
+ mov cx, ds ; 8c d9 ; 0xf4a19
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4a1b
+ call 01910h ; e8 ef ce ; 0xf4a1e
+ push si ; 56 ; 0xf4a21
+ push 00e02h ; 68 02 0e ; 0xf4a22
+ push 00505h ; 68 05 05 ; 0xf4a25
+ push strict byte 00004h ; 6a 04 ; 0xf4a28
+ call 01953h ; e8 26 cf ; 0xf4a2a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4a2d
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4a30 boot.c:161
+ jne short 04a76h ; 75 40 ; 0xf4a34
+ test dl, dl ; 84 d2 ; 0xf4a36 boot.c:162
+ jne short 04a4ah ; 75 10 ; 0xf4a38
+ mov bx, 00ddch ; bb dc 0d ; 0xf4a3a boot.c:163
+ mov cx, ds ; 8c d9 ; 0xf4a3d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4a3f
+ call 01910h ; e8 cb ce ; 0xf4a42
+ push 0051dh ; 68 1d 05 ; 0xf4a45
+ jmp short 04a58h ; eb 0e ; 0xf4a48 boot.c:164
+ mov bx, 00ddch ; bb dc 0d ; 0xf4a4a boot.c:165
+ mov cx, ds ; 8c d9 ; 0xf4a4d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4a4f
+ call 01910h ; e8 bb ce ; 0xf4a52
+ push 00538h ; 68 38 05 ; 0xf4a55
+ push strict byte 00006h ; 6a 06 ; 0xf4a58
+ call 01953h ; e8 f6 ce ; 0xf4a5a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4a5d
+ mov bx, 00ddch ; bb dc 0d ; 0xf4a60 boot.c:166
+ mov cx, ds ; 8c d9 ; 0xf4a63
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4a65
+ call 01910h ; e8 a5 ce ; 0xf4a68
+ push 0055eh ; 68 5e 05 ; 0xf4a6b
+ push strict byte 00006h ; 6a 06 ; 0xf4a6e
+ call 01953h ; e8 e0 ce ; 0xf4a70
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4a73
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4a76 boot.c:168
+ pop si ; 5e ; 0xf4a79
+ pop bp ; 5d ; 0xf4a7a
+ retn 00002h ; c2 02 00 ; 0xf4a7b
+ ; disGetNextSymbol 0xf4a7e LB 0x635a -> off=0x0 cb=0000000000000027 uValue=00000000000f347e 'print_cdromboot_failure'
+print_cdromboot_failure: ; 0xf4a7e LB 0x27
+ push bp ; 55 ; 0xf4a7e boot.c:174
+ mov bp, sp ; 89 e5 ; 0xf4a7f
+ push bx ; 53 ; 0xf4a81
+ push cx ; 51 ; 0xf4a82
+ push dx ; 52 ; 0xf4a83
+ mov dx, ax ; 89 c2 ; 0xf4a84
+ mov bx, 00ddch ; bb dc 0d ; 0xf4a86 boot.c:176
+ mov cx, ds ; 8c d9 ; 0xf4a89
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4a8b
+ call 01910h ; e8 7f ce ; 0xf4a8e
+ push dx ; 52 ; 0xf4a91
+ push 0058bh ; 68 8b 05 ; 0xf4a92
+ push strict byte 00004h ; 6a 04 ; 0xf4a95
+ call 01953h ; e8 b9 ce ; 0xf4a97
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4a9a
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf4a9d boot.c:178
+ pop dx ; 5a ; 0xf4aa0
+ pop cx ; 59 ; 0xf4aa1
+ pop bx ; 5b ; 0xf4aa2
+ pop bp ; 5d ; 0xf4aa3
+ retn ; c3 ; 0xf4aa4
+ ; disGetNextSymbol 0xf4aa5 LB 0x6333 -> off=0x0 cb=000000000000025b uValue=00000000000f34a5 'int19_function'
+int19_function: ; 0xf4aa5 LB 0x25b
+ push bp ; 55 ; 0xf4aa5 boot.c:181
+ mov bp, sp ; 89 e5 ; 0xf4aa6
+ push si ; 56 ; 0xf4aa8
+ push di ; 57 ; 0xf4aa9
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf4aaa
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4aad boot.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4ab0
+ mov es, ax ; 8e c0 ; 0xf4ab3
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf4ab5
+ mov di, cx ; 89 cf ; 0xf4ab8 boot.c:59
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4aba boot.c:192
+ mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4abe boot.c:215
+ call 01664h ; e8 a0 cb ; 0xf4ac1
+ mov dl, al ; 88 c2 ; 0xf4ac4
+ xor dh, dh ; 30 f6 ; 0xf4ac6
+ mov ax, strict word 00038h ; b8 38 00 ; 0xf4ac8 boot.c:216
+ call 01664h ; e8 96 cb ; 0xf4acb
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4ace
+ xor ah, ah ; 30 e4 ; 0xf4ad0
+ sal ax, 004h ; c1 e0 04 ; 0xf4ad2
+ or dx, ax ; 09 c2 ; 0xf4ad5
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4ad7 boot.c:217
+ call 01664h ; e8 87 cb ; 0xf4ada
+ and AL, strict byte 00fh ; 24 0f ; 0xf4add
+ xor ah, ah ; 30 e4 ; 0xf4adf
+ sal ax, 00ch ; c1 e0 0c ; 0xf4ae1
+ or dx, ax ; 09 c2 ; 0xf4ae4
+ mov bx, 00331h ; bb 31 03 ; 0xf4ae6 boot.c:48
+ mov es, cx ; 8e c1 ; 0xf4ae9
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4aeb
+ test al, al ; 84 c0 ; 0xf4aee boot.c:49
+ je short 04af6h ; 74 04 ; 0xf4af0
+ mov dl, al ; 88 c2 ; 0xf4af2 boot.c:48
+ xor dh, dh ; 30 f6 ; 0xf4af4 boot.c:49
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4af6 boot.c:221
+ jne short 04b0ch ; 75 10 ; 0xf4afa
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4afc boot.c:222
+ call 01664h ; e8 62 cb ; 0xf4aff
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4b02
+ xor ah, ah ; 30 e4 ; 0xf4b04
+ sar ax, 004h ; c1 f8 04 ; 0xf4b06
+ call 07710h ; e8 04 2c ; 0xf4b09
+ cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4b0c boot.c:224
+ jne short 04b15h ; 75 03 ; 0xf4b10
+ shr dx, 004h ; c1 ea 04 ; 0xf4b12
+ cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4b15 boot.c:225
+ jne short 04b1eh ; 75 03 ; 0xf4b19
+ shr dx, 008h ; c1 ea 08 ; 0xf4b1b
+ cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4b1e boot.c:226
+ jne short 04b27h ; 75 03 ; 0xf4b22
+ shr dx, 00ch ; c1 ea 0c ; 0xf4b24
+ cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4b27 boot.c:227
+ jnc short 04b30h ; 73 04 ; 0xf4b2a
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4b2c
+ xor al, al ; 30 c0 ; 0xf4b30 boot.c:228
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4b32
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4b35
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4b38 boot.c:229
+ mov bx, 00ddch ; bb dc 0d ; 0xf4b3b boot.c:230
+ mov cx, ds ; 8c d9 ; 0xf4b3e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b40
+ call 01910h ; e8 ca cd ; 0xf4b43
+ push dx ; 52 ; 0xf4b46
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf4b47
+ xor ah, ah ; 30 e4 ; 0xf4b4a
+ push ax ; 50 ; 0xf4b4c
+ push 005abh ; 68 ab 05 ; 0xf4b4d
+ push strict byte 00004h ; 6a 04 ; 0xf4b50
+ call 01953h ; e8 fe cd ; 0xf4b52
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4b55
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4b58 boot.c:232
+ cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4b5b
+ jc short 04b6eh ; 72 0e ; 0xf4b5e
+ jbe short 04b7dh ; 76 1b ; 0xf4b60
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4b62
+ je short 04b99h ; 74 32 ; 0xf4b65
+ cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4b67
+ je short 04b8fh ; 74 23 ; 0xf4b6a
+ jmp short 04bc8h ; eb 5a ; 0xf4b6c
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4b6e
+ jne short 04bc8h ; 75 55 ; 0xf4b71
+ xor al, al ; 30 c0 ; 0xf4b73 boot.c:234
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4b75
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4b78 boot.c:235
+ jmp short 04bddh ; eb 60 ; 0xf4b7b boot.c:236
+ mov bx, 00330h ; bb 30 03 ; 0xf4b7d boot.c:48
+ mov es, di ; 8e c7 ; 0xf4b80
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4b82
+ add AL, strict byte 080h ; 04 80 ; 0xf4b85 boot.c:242
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4b87
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf4b8a boot.c:243
+ jmp short 04bddh ; eb 4e ; 0xf4b8d boot.c:244
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4b8f boot.c:247
+ mov byte [bp-008h], 001h ; c6 46 f8 01 ; 0xf4b93 boot.c:248
+ jmp short 04ba3h ; eb 0a ; 0xf4b97 boot.c:249
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4b99 boot.c:250
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4b9d boot.c:266
+ je short 04bddh ; 74 3a ; 0xf4ba1
+ call 03f27h ; e8 81 f3 ; 0xf4ba3 boot.c:267
+ mov dx, ax ; 89 c2 ; 0xf4ba6
+ test AL, strict byte 0ffh ; a8 ff ; 0xf4ba8 boot.c:270
+ je short 04bcfh ; 74 23 ; 0xf4baa
+ call 04a7eh ; e8 cf fe ; 0xf4bac boot.c:271
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4baf boot.c:272
+ xor ah, ah ; 30 e4 ; 0xf4bb2
+ push ax ; 50 ; 0xf4bb4
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4bb5
+ xor bh, bh ; 30 ff ; 0xf4bb8
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4bba
+ xor dh, dh ; 30 f6 ; 0xf4bbd
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4bbf
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4bc2
+ call 049bch ; e8 f4 fd ; 0xf4bc5
+ xor ax, ax ; 31 c0 ; 0xf4bc8
+ xor dx, dx ; 31 d2 ; 0xf4bca
+ jmp near 04cf9h ; e9 2a 01 ; 0xf4bcc
+ mov bx, 00322h ; bb 22 03 ; 0xf4bcf boot.c:58
+ mov es, di ; 8e c7 ; 0xf4bd2
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf4bd4
+ shr dx, 008h ; c1 ea 08 ; 0xf4bd7 boot.c:277
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf4bda
+ cmp byte [bp-00ah], 001h ; 80 7e f6 01 ; 0xf4bdd boot.c:283
+ jne short 04c38h ; 75 55 ; 0xf4be1
+ xor si, si ; 31 f6 ; 0xf4be3 boot.c:286
+ mov ax, 0e200h ; b8 00 e2 ; 0xf4be5
+ mov es, ax ; 8e c0 ; 0xf4be8
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4bea boot.c:287
+ jne short 04bafh ; 75 be ; 0xf4bef
+ mov cx, ax ; 89 c1 ; 0xf4bf1 boot.c:293
+ mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4bf3
+ cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4bf7 boot.c:294
+ jne short 04bafh ; 75 b0 ; 0xf4bfd
+ cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4bff
+ jne short 04bafh ; 75 a9 ; 0xf4c04
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4c06 boot.c:296
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4c0a
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf4c0d
+ cmp ax, 06568h ; 3d 68 65 ; 0xf4c11 boot.c:297
+ jne short 04c3ah ; 75 24 ; 0xf4c14
+ cmp dx, 07445h ; 81 fa 45 74 ; 0xf4c16
+ jne short 04c3ah ; 75 1e ; 0xf4c1a
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4c1c boot.c:299
+ xor bh, bh ; 30 ff ; 0xf4c1f
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4c21
+ xor dh, dh ; 30 f6 ; 0xf4c24
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4c26
+ xor ah, ah ; 30 e4 ; 0xf4c29
+ call 04971h ; e8 43 fd ; 0xf4c2b
+ mov word [bp-010h], strict word 00006h ; c7 46 f0 06 00 ; 0xf4c2e boot.c:300
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xf4c33
+ jmp short 04c59h ; eb 21 ; 0xf4c36 boot.c:303
+ jmp short 04c5fh ; eb 25 ; 0xf4c38
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4c3a boot.c:306
+ xor bh, bh ; 30 ff ; 0xf4c3d
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4c3f
+ xor dh, dh ; 30 f6 ; 0xf4c42
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4c44
+ xor ah, ah ; 30 e4 ; 0xf4c47
+ call 04971h ; e8 25 fd ; 0xf4c49
+ sti ; fb ; 0xf4c4c boot.c:307
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xf4c4d boot.c:308
+ mov es, cx ; 8e c1 ; 0xf4c50
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4c52
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf4c56
+ call far [bp-010h] ; ff 5e f0 ; 0xf4c59 boot.c:309
+ jmp near 04bafh ; e9 50 ff ; 0xf4c5c boot.c:312
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4c5f boot.c:320
+ jne short 04c8ch ; 75 27 ; 0xf4c63
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4c65
+ jne short 04c8ch ; 75 21 ; 0xf4c69
+ mov si, 007c0h ; be c0 07 ; 0xf4c6b boot.c:321
+ mov es, si ; 8e c6 ; 0xf4c6e boot.c:323
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4c70
+ mov ax, 00201h ; b8 01 02 ; 0xf4c73
+ mov DH, strict byte 000h ; b6 00 ; 0xf4c76
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4c78
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf4c7b
+ int 013h ; cd 13 ; 0xf4c7d
+ mov ax, strict word 00000h ; b8 00 00 ; 0xf4c7f
+ sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4c82
+ test ax, ax ; 85 c0 ; 0xf4c85 boot.c:324
+ je short 04c8ch ; 74 03 ; 0xf4c87
+ jmp near 04bafh ; e9 23 ff ; 0xf4c89
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf4c8c boot.c:339
+ je short 04c96h ; 74 04 ; 0xf4c90
+ xor al, al ; 30 c0 ; 0xf4c92
+ jmp short 04c98h ; eb 02 ; 0xf4c94 boot.c:340
+ mov AL, strict byte 001h ; b0 01 ; 0xf4c96
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4c98 boot.c:344
+ je short 04ca0h ; 74 02 ; 0xf4c9c
+ mov AL, strict byte 001h ; b0 01 ; 0xf4c9e boot.c:345
+ xor bx, bx ; 31 db ; 0xf4ca0 boot.c:58
+ mov es, si ; 8e c6 ; 0xf4ca2
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf4ca4
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4ca7 boot.c:58
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4caa
+ cmp cx, dx ; 39 d1 ; 0xf4cad boot.c:59
+ je short 04cc0h ; 74 0f ; 0xf4caf
+ test al, al ; 84 c0 ; 0xf4cb1
+ jne short 04cd8h ; 75 23 ; 0xf4cb3
+ mov bx, 001feh ; bb fe 01 ; 0xf4cb5 boot.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4cb8
+ cmp ax, 0aa55h ; 3d 55 aa ; 0xf4cbb boot.c:59
+ je short 04cd8h ; 74 18 ; 0xf4cbe
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4cc0 boot.c:351
+ xor ah, ah ; 30 e4 ; 0xf4cc3
+ push ax ; 50 ; 0xf4cc5
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4cc6
+ xor bh, bh ; 30 ff ; 0xf4cc9
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4ccb
+ xor dh, dh ; 30 f6 ; 0xf4cce
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4cd0
+ xor cx, cx ; 31 c9 ; 0xf4cd3
+ jmp near 04bc5h ; e9 ed fe ; 0xf4cd5
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4cd8 boot.c:357
+ xor bh, bh ; 30 ff ; 0xf4cdb
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4cdd
+ xor dh, dh ; 30 f6 ; 0xf4ce0
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4ce2
+ xor ah, ah ; 30 e4 ; 0xf4ce5
+ call 04971h ; e8 87 fc ; 0xf4ce7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4cea boot.c:363
+ xor ah, ah ; 30 e4 ; 0xf4ced
+ mov bx, ax ; 89 c3 ; 0xf4cef
+ xor dx, dx ; 31 d2 ; 0xf4cf1
+ xor al, al ; 30 c0 ; 0xf4cf3
+ add ax, si ; 01 f0 ; 0xf4cf5
+ adc dx, bx ; 11 da ; 0xf4cf7
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4cf9 boot.c:364
+ pop di ; 5f ; 0xf4cfc
+ pop si ; 5e ; 0xf4cfd
+ pop bp ; 5d ; 0xf4cfe
+ retn ; c3 ; 0xf4cff
+ ; disGetNextSymbol 0xf4d00 LB 0x60d8 -> off=0x0 cb=0000000000000013 uValue=00000000000f3700 'keyboard_panic'
+keyboard_panic: ; 0xf4d00 LB 0x13
+ push bp ; 55 ; 0xf4d00 keyboard.c:204
+ mov bp, sp ; 89 e5 ; 0xf4d01
+ push ax ; 50 ; 0xf4d03 keyboard.c:209
+ push 005cah ; 68 ca 05 ; 0xf4d04
+ push strict byte 00007h ; 6a 07 ; 0xf4d07
+ call 01953h ; e8 47 cc ; 0xf4d09
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4d0c
+ mov sp, bp ; 89 ec ; 0xf4d0f keyboard.c:210
+ pop bp ; 5d ; 0xf4d11
+ retn ; c3 ; 0xf4d12
+ ; disGetNextSymbol 0xf4d13 LB 0x60c5 -> off=0x0 cb=000000000000026a uValue=00000000000f3713 'keyboard_init'
+keyboard_init: ; 0xf4d13 LB 0x26a
+ push bp ; 55 ; 0xf4d13 keyboard.c:218
+ mov bp, sp ; 89 e5 ; 0xf4d14
+ mov AL, strict byte 0aah ; b0 aa ; 0xf4d16 keyboard.c:224
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4d18
+ out DX, AL ; ee ; 0xf4d1b
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4d1c keyboard.c:227
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4d1f keyboard.c:228
+ in AL, DX ; ec ; 0xf4d22
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4d23
+ test AL, strict byte 002h ; a8 02 ; 0xf4d25
+ je short 04d36h ; 74 0d ; 0xf4d27
+ dec bx ; 4b ; 0xf4d29
+ test bx, bx ; 85 db ; 0xf4d2a
+ jbe short 04d36h ; 76 08 ; 0xf4d2c
+ xor al, al ; 30 c0 ; 0xf4d2e
+ mov dx, 00080h ; ba 80 00 ; 0xf4d30
+ out DX, AL ; ee ; 0xf4d33
+ jmp short 04d1fh ; eb e9 ; 0xf4d34
+ test bx, bx ; 85 db ; 0xf4d36 keyboard.c:229
+ jne short 04d3fh ; 75 05 ; 0xf4d38
+ xor ax, ax ; 31 c0 ; 0xf4d3a
+ call 04d00h ; e8 c1 ff ; 0xf4d3c
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4d3f keyboard.c:232
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4d42 keyboard.c:233
+ in AL, DX ; ec ; 0xf4d45
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4d46
+ test AL, strict byte 001h ; a8 01 ; 0xf4d48
+ jne short 04d59h ; 75 0d ; 0xf4d4a
+ dec bx ; 4b ; 0xf4d4c
+ test bx, bx ; 85 db ; 0xf4d4d
+ jbe short 04d59h ; 76 08 ; 0xf4d4f
+ mov AL, strict byte 001h ; b0 01 ; 0xf4d51
+ mov dx, 00080h ; ba 80 00 ; 0xf4d53
+ out DX, AL ; ee ; 0xf4d56
+ jmp short 04d42h ; eb e9 ; 0xf4d57
+ test bx, bx ; 85 db ; 0xf4d59 keyboard.c:234
+ jne short 04d63h ; 75 06 ; 0xf4d5b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4d5d
+ call 04d00h ; e8 9d ff ; 0xf4d60
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4d63 keyboard.c:237
+ in AL, DX ; ec ; 0xf4d66
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4d67
+ cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4d69
+ je short 04d74h ; 74 06 ; 0xf4d6c
+ mov ax, 003dfh ; b8 df 03 ; 0xf4d6e keyboard.c:238
+ call 04d00h ; e8 8c ff ; 0xf4d71
+ mov AL, strict byte 0abh ; b0 ab ; 0xf4d74 keyboard.c:242
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4d76
+ out DX, AL ; ee ; 0xf4d79
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4d7a keyboard.c:245
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4d7d keyboard.c:246
+ in AL, DX ; ec ; 0xf4d80
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4d81
+ test AL, strict byte 002h ; a8 02 ; 0xf4d83
+ je short 04d94h ; 74 0d ; 0xf4d85
+ dec bx ; 4b ; 0xf4d87
+ test bx, bx ; 85 db ; 0xf4d88
+ jbe short 04d94h ; 76 08 ; 0xf4d8a
+ mov AL, strict byte 010h ; b0 10 ; 0xf4d8c
+ mov dx, 00080h ; ba 80 00 ; 0xf4d8e
+ out DX, AL ; ee ; 0xf4d91
+ jmp short 04d7dh ; eb e9 ; 0xf4d92
+ test bx, bx ; 85 db ; 0xf4d94 keyboard.c:247
+ jne short 04d9eh ; 75 06 ; 0xf4d96
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4d98
+ call 04d00h ; e8 62 ff ; 0xf4d9b
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4d9e keyboard.c:250
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4da1 keyboard.c:251
+ in AL, DX ; ec ; 0xf4da4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4da5
+ test AL, strict byte 001h ; a8 01 ; 0xf4da7
+ jne short 04db8h ; 75 0d ; 0xf4da9
+ dec bx ; 4b ; 0xf4dab
+ test bx, bx ; 85 db ; 0xf4dac
+ jbe short 04db8h ; 76 08 ; 0xf4dae
+ mov AL, strict byte 011h ; b0 11 ; 0xf4db0
+ mov dx, 00080h ; ba 80 00 ; 0xf4db2
+ out DX, AL ; ee ; 0xf4db5
+ jmp short 04da1h ; eb e9 ; 0xf4db6
+ test bx, bx ; 85 db ; 0xf4db8 keyboard.c:252
+ jne short 04dc2h ; 75 06 ; 0xf4dba
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4dbc
+ call 04d00h ; e8 3e ff ; 0xf4dbf
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4dc2 keyboard.c:256
+ in AL, DX ; ec ; 0xf4dc5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4dc6
+ test ax, ax ; 85 c0 ; 0xf4dc8
+ je short 04dd2h ; 74 06 ; 0xf4dca
+ mov ax, 003e0h ; b8 e0 03 ; 0xf4dcc keyboard.c:257
+ call 04d00h ; e8 2e ff ; 0xf4dcf
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf4dd2 keyboard.c:263
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4dd4
+ out DX, AL ; ee ; 0xf4dd7
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4dd8 keyboard.c:266
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ddb keyboard.c:267
+ in AL, DX ; ec ; 0xf4dde
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ddf
+ test AL, strict byte 002h ; a8 02 ; 0xf4de1
+ je short 04df2h ; 74 0d ; 0xf4de3
+ dec bx ; 4b ; 0xf4de5
+ test bx, bx ; 85 db ; 0xf4de6
+ jbe short 04df2h ; 76 08 ; 0xf4de8
+ mov AL, strict byte 020h ; b0 20 ; 0xf4dea
+ mov dx, 00080h ; ba 80 00 ; 0xf4dec
+ out DX, AL ; ee ; 0xf4def
+ jmp short 04ddbh ; eb e9 ; 0xf4df0
+ test bx, bx ; 85 db ; 0xf4df2 keyboard.c:268
+ jne short 04dfch ; 75 06 ; 0xf4df4
+ mov ax, strict word 00014h ; b8 14 00 ; 0xf4df6
+ call 04d00h ; e8 04 ff ; 0xf4df9
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4dfc keyboard.c:271
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4dff keyboard.c:272
+ in AL, DX ; ec ; 0xf4e02
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e03
+ test AL, strict byte 001h ; a8 01 ; 0xf4e05
+ jne short 04e16h ; 75 0d ; 0xf4e07
+ dec bx ; 4b ; 0xf4e09
+ test bx, bx ; 85 db ; 0xf4e0a
+ jbe short 04e16h ; 76 08 ; 0xf4e0c
+ mov AL, strict byte 021h ; b0 21 ; 0xf4e0e
+ mov dx, 00080h ; ba 80 00 ; 0xf4e10
+ out DX, AL ; ee ; 0xf4e13
+ jmp short 04dffh ; eb e9 ; 0xf4e14
+ test bx, bx ; 85 db ; 0xf4e16 keyboard.c:273
+ jne short 04e20h ; 75 06 ; 0xf4e18
+ mov ax, strict word 00015h ; b8 15 00 ; 0xf4e1a
+ call 04d00h ; e8 e0 fe ; 0xf4e1d
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4e20 keyboard.c:276
+ in AL, DX ; ec ; 0xf4e23
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e24
+ cmp ax, 000fah ; 3d fa 00 ; 0xf4e26
+ je short 04e31h ; 74 06 ; 0xf4e29
+ mov ax, 003e1h ; b8 e1 03 ; 0xf4e2b keyboard.c:277
+ call 04d00h ; e8 cf fe ; 0xf4e2e
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e31 keyboard.c:281
+ in AL, DX ; ec ; 0xf4e34
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e35
+ test AL, strict byte 001h ; a8 01 ; 0xf4e37
+ jne short 04e43h ; 75 08 ; 0xf4e39
+ mov AL, strict byte 031h ; b0 31 ; 0xf4e3b
+ mov dx, 00080h ; ba 80 00 ; 0xf4e3d
+ out DX, AL ; ee ; 0xf4e40
+ jmp short 04e31h ; eb ee ; 0xf4e41
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4e43 keyboard.c:283
+ in AL, DX ; ec ; 0xf4e46
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e47
+ cmp ax, 000aah ; 3d aa 00 ; 0xf4e49
+ je short 04e5ch ; 74 0e ; 0xf4e4c
+ in AL, DX ; ec ; 0xf4e4e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e4f
+ cmp ax, 000aah ; 3d aa 00 ; 0xf4e51
+ je short 04e5ch ; 74 06 ; 0xf4e54
+ mov ax, 003e2h ; b8 e2 03 ; 0xf4e56 keyboard.c:284
+ call 04d00h ; e8 a4 fe ; 0xf4e59
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf4e5c keyboard.c:288
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4e5e
+ out DX, AL ; ee ; 0xf4e61
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e62 keyboard.c:291
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e65 keyboard.c:292
+ in AL, DX ; ec ; 0xf4e68
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e69
+ test AL, strict byte 002h ; a8 02 ; 0xf4e6b
+ je short 04e7ch ; 74 0d ; 0xf4e6d
+ dec bx ; 4b ; 0xf4e6f
+ test bx, bx ; 85 db ; 0xf4e70
+ jbe short 04e7ch ; 76 08 ; 0xf4e72
+ mov AL, strict byte 040h ; b0 40 ; 0xf4e74
+ mov dx, 00080h ; ba 80 00 ; 0xf4e76
+ out DX, AL ; ee ; 0xf4e79
+ jmp short 04e65h ; eb e9 ; 0xf4e7a
+ test bx, bx ; 85 db ; 0xf4e7c keyboard.c:293
+ jne short 04e86h ; 75 06 ; 0xf4e7e
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf4e80
+ call 04d00h ; e8 7a fe ; 0xf4e83
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e86 keyboard.c:296
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e89 keyboard.c:297
+ in AL, DX ; ec ; 0xf4e8c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e8d
+ test AL, strict byte 001h ; a8 01 ; 0xf4e8f
+ jne short 04ea0h ; 75 0d ; 0xf4e91
+ dec bx ; 4b ; 0xf4e93
+ test bx, bx ; 85 db ; 0xf4e94
+ jbe short 04ea0h ; 76 08 ; 0xf4e96
+ mov AL, strict byte 041h ; b0 41 ; 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:298
+ jne short 04eaah ; 75 06 ; 0xf4ea2
+ mov ax, strict word 00029h ; b8 29 00 ; 0xf4ea4
+ call 04d00h ; e8 56 fe ; 0xf4ea7
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4eaa keyboard.c:301
+ in AL, DX ; ec ; 0xf4ead
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4eae
+ cmp ax, 000fah ; 3d fa 00 ; 0xf4eb0
+ je short 04ebbh ; 74 06 ; 0xf4eb3
+ mov ax, 003e3h ; b8 e3 03 ; 0xf4eb5 keyboard.c:302
+ call 04d00h ; e8 45 fe ; 0xf4eb8
+ mov AL, strict byte 060h ; b0 60 ; 0xf4ebb keyboard.c:306
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ebd
+ out DX, AL ; ee ; 0xf4ec0
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ec1 keyboard.c:309
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ec4 keyboard.c:310
+ in AL, DX ; ec ; 0xf4ec7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ec8
+ test AL, strict byte 002h ; a8 02 ; 0xf4eca
+ je short 04edbh ; 74 0d ; 0xf4ecc
+ dec bx ; 4b ; 0xf4ece
+ test bx, bx ; 85 db ; 0xf4ecf
+ jbe short 04edbh ; 76 08 ; 0xf4ed1
+ mov AL, strict byte 050h ; b0 50 ; 0xf4ed3
+ mov dx, 00080h ; ba 80 00 ; 0xf4ed5
+ out DX, AL ; ee ; 0xf4ed8
+ jmp short 04ec4h ; eb e9 ; 0xf4ed9
+ test bx, bx ; 85 db ; 0xf4edb keyboard.c:311
+ jne short 04ee5h ; 75 06 ; 0xf4edd
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf4edf
+ call 04d00h ; e8 1b fe ; 0xf4ee2
+ mov AL, strict byte 065h ; b0 65 ; 0xf4ee5 keyboard.c:314
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4ee7
+ out DX, AL ; ee ; 0xf4eea
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4eeb keyboard.c:317
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4eee keyboard.c:318
+ in AL, DX ; ec ; 0xf4ef1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ef2
+ test AL, strict byte 002h ; a8 02 ; 0xf4ef4
+ je short 04f05h ; 74 0d ; 0xf4ef6
+ dec bx ; 4b ; 0xf4ef8
+ test bx, bx ; 85 db ; 0xf4ef9
+ jbe short 04f05h ; 76 08 ; 0xf4efb
+ mov AL, strict byte 060h ; b0 60 ; 0xf4efd
+ mov dx, 00080h ; ba 80 00 ; 0xf4eff
+ out DX, AL ; ee ; 0xf4f02
+ jmp short 04eeeh ; eb e9 ; 0xf4f03
+ test bx, bx ; 85 db ; 0xf4f05 keyboard.c:319
+ jne short 04f0fh ; 75 06 ; 0xf4f07
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4f09
+ call 04d00h ; e8 f1 fd ; 0xf4f0c
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf4f0f keyboard.c:322
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f11
+ out DX, AL ; ee ; 0xf4f14
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f15 keyboard.c:325
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f18 keyboard.c:326
+ in AL, DX ; ec ; 0xf4f1b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f1c
+ test AL, strict byte 002h ; a8 02 ; 0xf4f1e
+ je short 04f2fh ; 74 0d ; 0xf4f20
+ dec bx ; 4b ; 0xf4f22
+ test bx, bx ; 85 db ; 0xf4f23
+ jbe short 04f2fh ; 76 08 ; 0xf4f25
+ mov AL, strict byte 070h ; b0 70 ; 0xf4f27
+ mov dx, 00080h ; ba 80 00 ; 0xf4f29
+ out DX, AL ; ee ; 0xf4f2c
+ jmp short 04f18h ; eb e9 ; 0xf4f2d
+ test bx, bx ; 85 db ; 0xf4f2f keyboard.c:327
+ jne short 04f39h ; 75 06 ; 0xf4f31
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf4f33
+ call 04d00h ; e8 c7 fd ; 0xf4f36
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f39 keyboard.c:330
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f3c keyboard.c:331
+ in AL, DX ; ec ; 0xf4f3f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f40
+ test AL, strict byte 001h ; a8 01 ; 0xf4f42
+ jne short 04f53h ; 75 0d ; 0xf4f44
+ dec bx ; 4b ; 0xf4f46
+ test bx, bx ; 85 db ; 0xf4f47
+ jbe short 04f53h ; 76 08 ; 0xf4f49
+ mov AL, strict byte 071h ; b0 71 ; 0xf4f4b
+ mov dx, 00080h ; ba 80 00 ; 0xf4f4d
+ out DX, AL ; ee ; 0xf4f50
+ jmp short 04f3ch ; eb e9 ; 0xf4f51
+ test bx, bx ; 85 db ; 0xf4f53 keyboard.c:332
+ jne short 04f5dh ; 75 06 ; 0xf4f55
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf4f57
+ call 04d00h ; e8 a3 fd ; 0xf4f5a
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f5d keyboard.c:335
+ in AL, DX ; ec ; 0xf4f60
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f61
+ cmp ax, 000fah ; 3d fa 00 ; 0xf4f63
+ je short 04f6eh ; 74 06 ; 0xf4f66
+ mov ax, 003e4h ; b8 e4 03 ; 0xf4f68 keyboard.c:336
+ call 04d00h ; e8 92 fd ; 0xf4f6b
+ mov AL, strict byte 0a8h ; b0 a8 ; 0xf4f6e keyboard.c:340
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f70
+ out DX, AL ; ee ; 0xf4f73
+ xor ax, ax ; 31 c0 ; 0xf4f74 keyboard.c:345
+ call 0636ch ; e8 f3 13 ; 0xf4f76
+ mov sp, bp ; 89 ec ; 0xf4f79 keyboard.c:346
+ pop bp ; 5d ; 0xf4f7b
+ retn ; c3 ; 0xf4f7c
+ ; disGetNextSymbol 0xf4f7d LB 0x5e5b -> off=0x0 cb=0000000000000053 uValue=00000000000f397d 'enqueue_key'
+enqueue_key: ; 0xf4f7d LB 0x53
+ push bx ; 53 ; 0xf4f7d keyboard.c:349
+ push cx ; 51 ; 0xf4f7e
+ push si ; 56 ; 0xf4f7f
+ push di ; 57 ; 0xf4f80
+ push bp ; 55 ; 0xf4f81
+ mov bp, sp ; 89 e5 ; 0xf4f82
+ mov dh, al ; 88 c6 ; 0xf4f84
+ mov bx, 00080h ; bb 80 00 ; 0xf4f86 keyboard.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4f89
+ mov es, ax ; 8e c0 ; 0xf4f8c
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf4f8e
+ mov bx, 00082h ; bb 82 00 ; 0xf4f91 keyboard.c:58
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf4f94
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf4f97 keyboard.c:58
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf4f9a
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf4f9d keyboard.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4fa0
+ mov bx, ax ; 89 c3 ; 0xf4fa3 keyboard.c:364
+ inc ax ; 40 ; 0xf4fa5 keyboard.c:365
+ inc ax ; 40 ; 0xf4fa6
+ cmp ax, si ; 39 f0 ; 0xf4fa7 keyboard.c:366
+ jc short 04fadh ; 72 02 ; 0xf4fa9
+ mov ax, di ; 89 f8 ; 0xf4fab keyboard.c:367
+ cmp ax, cx ; 39 c8 ; 0xf4fad keyboard.c:369
+ jne short 04fb5h ; 75 04 ; 0xf4faf
+ xor ax, cx ; 31 c8 ; 0xf4fb1 keyboard.c:370
+ jmp short 04fcah ; eb 15 ; 0xf4fb3
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf4fb5 keyboard.c:53
+ mov es, cx ; 8e c1 ; 0xf4fb8
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf4fba
+ inc bx ; 43 ; 0xf4fbd keyboard.c:373
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf4fbe keyboard.c:53
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf4fc1 keyboard.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf4fc4
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4fc7 keyboard.c:375
+ pop bp ; 5d ; 0xf4fca keyboard.c:376
+ pop di ; 5f ; 0xf4fcb
+ pop si ; 5e ; 0xf4fcc
+ pop cx ; 59 ; 0xf4fcd
+ pop bx ; 5b ; 0xf4fce
+ retn ; c3 ; 0xf4fcf
+ ; disGetNextSymbol 0xf4fd0 LB 0x5e08 -> off=0x35 cb=00000000000003c4 uValue=00000000000f3a05 'int09_function'
+ db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
+ db 01dh, 07dh, 052h, 0bch, 050h, 08ah, 050h, 08ah, 050h, 01ch, 051h, 065h, 050h, 08dh, 051h, 0e8h
+ db 051h, 062h, 052h, 047h, 052h, 0ebh, 050h, 08ah, 050h, 08ah, 050h, 06ah, 051h, 07ch, 050h, 0d0h
+ db 051h, 032h, 052h, 05dh, 052h
+int09_function: ; 0xf5005 LB 0x3c4
+ push bp ; 55 ; 0xf5005 keyboard.c:381
+ mov bp, sp ; 89 e5 ; 0xf5006
+ push si ; 56 ; 0xf5008
+ push di ; 57 ; 0xf5009
+ push ax ; 50 ; 0xf500a
+ push ax ; 50 ; 0xf500b
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf500c keyboard.c:392
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf500f
+ test al, al ; 84 c0 ; 0xf5012 keyboard.c:394
+ jne short 0502fh ; 75 19 ; 0xf5014
+ mov bx, 00ddch ; bb dc 0d ; 0xf5016 keyboard.c:395
+ mov cx, ds ; 8c d9 ; 0xf5019
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf501b
+ call 01910h ; e8 ef c8 ; 0xf501e
+ push 005ddh ; 68 dd 05 ; 0xf5021
+ push strict byte 00004h ; 6a 04 ; 0xf5024
+ call 01953h ; e8 2a c9 ; 0xf5026
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5029
+ jmp near 05163h ; e9 34 01 ; 0xf502c keyboard.c:396
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf502f keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5032
+ mov es, ax ; 8e c0 ; 0xf5035
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf5037
+ mov dl, bl ; 88 da ; 0xf503a keyboard.c:49
+ mov si, 00096h ; be 96 00 ; 0xf503c keyboard.c:48
+ mov bh, byte [es:si] ; 26 8a 3c ; 0xf503f
+ mov byte [bp-006h], bh ; 88 7e fa ; 0xf5042 keyboard.c:49
+ mov si, strict word 00017h ; be 17 00 ; 0xf5045 keyboard.c:48
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf5048
+ mov dh, ah ; 88 e6 ; 0xf504b keyboard.c:49
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf504d keyboard.c:404
+ push CS ; 0e ; 0xf5050
+ pop ES ; 07 ; 0xf5051
+ mov cx, strict word 00012h ; b9 12 00 ; 0xf5052
+ mov di, 04fd0h ; bf d0 4f ; 0xf5055
+ repne scasb ; f2 ae ; 0xf5058
+ sal cx, 1 ; d1 e1 ; 0xf505a
+ mov di, cx ; 89 cf ; 0xf505c
+ mov cx, word [cs:di+04fe1h] ; 2e 8b 8d e1 4f ; 0xf505e
+ jmp cx ; ff e1 ; 0xf5063
+ xor dh, 040h ; 80 f6 40 ; 0xf5065 keyboard.c:406
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5068 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf506b
+ mov es, ax ; 8e c0 ; 0xf506e
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5070
+ or dl, 040h ; 80 ca 40 ; 0xf5073 keyboard.c:408
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5076 keyboard.c:53
+ jmp near 05257h ; e9 db 01 ; 0xf5079
+ and dl, 0bfh ; 80 e2 bf ; 0xf507c keyboard.c:412
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf507f keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5082
+ mov es, ax ; 8e c0 ; 0xf5085
+ jmp near 05257h ; e9 cd 01 ; 0xf5087
+ test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf508a keyboard.c:421
+ jne short 050e9h ; 75 59 ; 0xf508e
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5090 keyboard.c:422
+ and AL, strict byte 07fh ; 24 7f ; 0xf5093
+ cmp AL, strict byte 02ah ; 3c 2a ; 0xf5095
+ jne short 0509eh ; 75 05 ; 0xf5097
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf5099
+ jmp short 050a1h ; eb 03 ; 0xf509c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf509e
+ test byte [bp-008h], 080h ; f6 46 f8 80 ; 0xf50a1 keyboard.c:423
+ je short 050adh ; 74 06 ; 0xf50a5
+ not al ; f6 d0 ; 0xf50a7 keyboard.c:424
+ and dh, al ; 20 c6 ; 0xf50a9
+ jmp short 050afh ; eb 02 ; 0xf50ab keyboard.c:425
+ or dh, al ; 08 c6 ; 0xf50ad keyboard.c:426
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf50af keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf50b2
+ mov es, ax ; 8e c0 ; 0xf50b5
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf50b7
+ jmp short 050e9h ; eb 2d ; 0xf50ba keyboard.c:429
+ test bh, 001h ; f6 c7 01 ; 0xf50bc keyboard.c:432
+ jne short 0511ah ; 75 59 ; 0xf50bf
+ or dh, 004h ; 80 ce 04 ; 0xf50c1 keyboard.c:433
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf50c4 keyboard.c:51
+ mov bx, si ; 89 f3 ; 0xf50c7
+ mov es, ax ; 8e c0 ; 0xf50c9 keyboard.c:53
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf50cb
+ test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf50ce keyboard.c:435
+ je short 050e0h ; 74 0c ; 0xf50d2
+ or byte [bp-006h], 004h ; 80 4e fa 04 ; 0xf50d4 keyboard.c:436
+ mov bx, 00096h ; bb 96 00 ; 0xf50d8 keyboard.c:51
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf50db
+ jmp short 050e6h ; eb 06 ; 0xf50de keyboard.c:438
+ or dl, 001h ; 80 ca 01 ; 0xf50e0 keyboard.c:439
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf50e3 keyboard.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf50e6 keyboard.c:53
+ jmp short 0511ah ; eb 2f ; 0xf50e9 keyboard.c:443
+ test bh, 001h ; f6 c7 01 ; 0xf50eb keyboard.c:445
+ jne short 05144h ; 75 54 ; 0xf50ee
+ and dh, 0fbh ; 80 e6 fb ; 0xf50f0 keyboard.c:446
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf50f3 keyboard.c:53
+ mov es, ax ; 8e c0 ; 0xf50f6
+ mov byte [es:si], dh ; 26 88 34 ; 0xf50f8
+ test bh, 002h ; f6 c7 02 ; 0xf50fb keyboard.c:448
+ je short 05111h ; 74 11 ; 0xf50fe
+ and bh, 0fbh ; 80 e7 fb ; 0xf5100 keyboard.c:449
+ mov byte [bp-006h], bh ; 88 7e fa ; 0xf5103
+ mov bx, 00096h ; bb 96 00 ; 0xf5106 keyboard.c:53
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5109
+ mov byte [es:bx], al ; 26 88 07 ; 0xf510c
+ jmp short 05144h ; eb 33 ; 0xf510f keyboard.c:451
+ and dl, 0feh ; 80 e2 fe ; 0xf5111 keyboard.c:452
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5114 keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5117
+ jmp short 05144h ; eb 28 ; 0xf511a keyboard.c:456
+ or dh, 008h ; 80 ce 08 ; 0xf511c keyboard.c:459
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf511f keyboard.c:51
+ mov bx, si ; 89 f3 ; 0xf5122
+ mov es, ax ; 8e c0 ; 0xf5124 keyboard.c:53
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5126
+ test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf5129 keyboard.c:461
+ je short 0513bh ; 74 0c ; 0xf512d
+ or byte [bp-006h], 008h ; 80 4e fa 08 ; 0xf512f keyboard.c:462
+ mov bx, 00096h ; bb 96 00 ; 0xf5133 keyboard.c:51
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf5136
+ jmp short 05141h ; eb 06 ; 0xf5139 keyboard.c:464
+ or dl, 002h ; 80 ca 02 ; 0xf513b keyboard.c:465
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf513e keyboard.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5141 keyboard.c:53
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5144 keyboard.c:468
+ and AL, strict byte 07fh ; 24 7f ; 0xf5147
+ cmp AL, strict byte 01dh ; 3c 1d ; 0xf5149
+ je short 05151h ; 74 04 ; 0xf514b
+ and byte [bp-006h], 0feh ; 80 66 fa fe ; 0xf514d
+ and byte [bp-006h], 0fdh ; 80 66 fa fd ; 0xf5151
+ mov bx, 00096h ; bb 96 00 ; 0xf5155
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5158
+ mov es, ax ; 8e c0 ; 0xf515b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf515d
+ mov byte [es:bx], al ; 26 88 07 ; 0xf5160
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf5163
+ pop di ; 5f ; 0xf5166
+ pop si ; 5e ; 0xf5167
+ pop bp ; 5d ; 0xf5168
+ retn ; c3 ; 0xf5169
+ and dh, 0f7h ; 80 e6 f7 ; 0xf516a keyboard.c:470
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf516d keyboard.c:53
+ mov es, ax ; 8e c0 ; 0xf5170
+ mov byte [es:si], dh ; 26 88 34 ; 0xf5172
+ test bh, 002h ; f6 c7 02 ; 0xf5175 keyboard.c:472
+ je short 05182h ; 74 08 ; 0xf5178
+ and bh, 0f7h ; 80 e7 f7 ; 0xf517a keyboard.c:473
+ mov byte [bp-006h], bh ; 88 7e fa ; 0xf517d
+ jmp short 05106h ; eb 84 ; 0xf5180 keyboard.c:474
+ and dl, 0fdh ; 80 e2 fd ; 0xf5182 keyboard.c:476
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5185 keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5188
+ jmp short 05144h ; eb b7 ; 0xf518b keyboard.c:479
+ test bh, 003h ; f6 c7 03 ; 0xf518d keyboard.c:482
+ jne short 051a6h ; 75 14 ; 0xf5190
+ or dl, 020h ; 80 ca 20 ; 0xf5192 keyboard.c:484
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5195 keyboard.c:51
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5198
+ mov es, ax ; 8e c0 ; 0xf519b keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf519d
+ xor dh, 020h ; 80 f6 20 ; 0xf51a0 keyboard.c:486
+ jmp near 0522bh ; e9 85 00 ; 0xf51a3 keyboard.c:487
+ or dl, 008h ; 80 ca 08 ; 0xf51a6 keyboard.c:490
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51a9 keyboard.c:51
+ mov es, ax ; 8e c0 ; 0xf51ac
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf51ae
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf51b1 keyboard.c:53
+ mov ax, 000aeh ; b8 ae 00 ; 0xf51b4 keyboard.c:494
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf51b7
+ out DX, AL ; ee ; 0xf51ba
+ call 0e034h ; e8 76 8e ; 0xf51bb keyboard.c:495
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf51be keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51c1
+ mov es, ax ; 8e c0 ; 0xf51c4
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf51c6
+ test AL, strict byte 008h ; a8 08 ; 0xf51c9 keyboard.c:49
+ jne short 051beh ; 75 f1 ; 0xf51cb
+ jmp near 05144h ; e9 74 ff ; 0xf51cd keyboard.c:502
+ test bh, 003h ; f6 c7 03 ; 0xf51d0 keyboard.c:504
+ je short 051d8h ; 74 03 ; 0xf51d3
+ jmp near 05144h ; e9 6c ff ; 0xf51d5
+ and dl, 0dfh ; 80 e2 df ; 0xf51d8 keyboard.c:505
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf51db keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51de
+ mov es, ax ; 8e c0 ; 0xf51e1
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf51e3
+ jmp short 051d5h ; eb ed ; 0xf51e6 keyboard.c:508
+ test bh, 002h ; f6 c7 02 ; 0xf51e8 keyboard.c:511
+ je short 0521ah ; 74 2d ; 0xf51eb
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51ed keyboard.c:56
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf51f0
+ mov es, ax ; 8e c0 ; 0xf51f3 keyboard.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf51f5
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf51f8 keyboard.c:61
+ mov word [es:bx], ax ; 26 89 07 ; 0xf51fb keyboard.c:63
+ mov bx, strict word 00071h ; bb 71 00 ; 0xf51fe keyboard.c:51
+ mov AL, strict byte 080h ; b0 80 ; 0xf5201
+ mov byte [es:bx], al ; 26 88 07 ; 0xf5203 keyboard.c:53
+ mov ax, 000aeh ; b8 ae 00 ; 0xf5206 keyboard.c:516
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5209
+ out DX, AL ; ee ; 0xf520c
+ push bp ; 55 ; 0xf520d keyboard.c:517
+ int 01bh ; cd 1b ; 0xf520e
+ pop bp ; 5d ; 0xf5210
+ xor dx, dx ; 31 d2 ; 0xf5211 keyboard.c:518
+ xor ax, ax ; 31 c0 ; 0xf5213
+ call 04f7dh ; e8 65 fd ; 0xf5215
+ jmp short 051d5h ; eb bb ; 0xf5218 keyboard.c:519
+ or dl, 010h ; 80 ca 10 ; 0xf521a keyboard.c:520
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf521d keyboard.c:51
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5220
+ mov es, ax ; 8e c0 ; 0xf5223 keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5225
+ xor dh, 010h ; 80 f6 10 ; 0xf5228 keyboard.c:522
+ mov bx, si ; 89 f3 ; 0xf522b keyboard.c:51
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf522d keyboard.c:53
+ jmp short 051d5h ; eb a3 ; 0xf5230 keyboard.c:525
+ test bh, 002h ; f6 c7 02 ; 0xf5232 keyboard.c:528
+ jne short 051d5h ; 75 9e ; 0xf5235
+ and dl, 0efh ; 80 e2 ef ; 0xf5237 keyboard.c:529
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf523a keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf523d
+ mov es, ax ; 8e c0 ; 0xf5240
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5242
+ jmp short 051d5h ; eb 8e ; 0xf5245 keyboard.c:532
+ test bl, 004h ; f6 c3 04 ; 0xf5247 keyboard.c:535
+ jne short 051d5h ; 75 89 ; 0xf524a
+ or dl, 004h ; 80 ca 04 ; 0xf524c keyboard.c:536
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf524f keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5252
+ mov es, ax ; 8e c0 ; 0xf5255
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5257
+ jmp near 05144h ; e9 e7 fe ; 0xf525a keyboard.c:540
+ and dl, 0fbh ; 80 e2 fb ; 0xf525d keyboard.c:543
+ jmp short 0524fh ; eb ed ; 0xf5260 keyboard.c:544
+ mov al, ah ; 88 e0 ; 0xf5262 keyboard.c:549
+ and AL, strict byte 00ch ; 24 0c ; 0xf5264
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf5266
+ jne short 0527dh ; 75 13 ; 0xf5268
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf526a keyboard.c:61
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf526d
+ mov cx, 01234h ; b9 34 12 ; 0xf5270
+ mov es, ax ; 8e c0 ; 0xf5273 keyboard.c:63
+ mov word [es:bx], cx ; 26 89 0f ; 0xf5275
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf5278 keyboard.c:552
+ test dl, 008h ; f6 c2 08 ; 0xf527d keyboard.c:558
+ je short 05293h ; 74 11 ; 0xf5280
+ and dl, 0f7h ; 80 e2 f7 ; 0xf5282 keyboard.c:560
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5285 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5288
+ mov es, ax ; 8e c0 ; 0xf528b
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf528d
+ jmp near 05163h ; e9 d0 fe ; 0xf5290 keyboard.c:562
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5293 keyboard.c:565
+ test AL, strict byte 080h ; a8 80 ; 0xf5296
+ je short 052c8h ; 74 2e ; 0xf5298
+ cmp AL, strict byte 0fah ; 3c fa ; 0xf529a keyboard.c:567
+ jne short 052aeh ; 75 10 ; 0xf529c
+ mov bx, 00097h ; bb 97 00 ; 0xf529e keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52a1
+ mov es, ax ; 8e c0 ; 0xf52a4
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf52a6
+ or ah, 010h ; 80 cc 10 ; 0xf52a9 keyboard.c:49
+ jmp short 052c3h ; eb 15 ; 0xf52ac keyboard.c:570
+ cmp AL, strict byte 0feh ; 3c fe ; 0xf52ae
+ je short 052b5h ; 74 03 ; 0xf52b0
+ jmp near 05144h ; e9 8f fe ; 0xf52b2
+ mov bx, 00097h ; bb 97 00 ; 0xf52b5 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52b8
+ mov es, ax ; 8e c0 ; 0xf52bb
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf52bd
+ or ah, 020h ; 80 cc 20 ; 0xf52c0 keyboard.c:49
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf52c3 keyboard.c:53
+ jmp short 052b2h ; eb ea ; 0xf52c6 keyboard.c:574
+ cmp byte [bp-008h], 058h ; 80 7e f8 58 ; 0xf52c8 keyboard.c:576
+ jbe short 052edh ; 76 1f ; 0xf52cc
+ mov bx, 00ddch ; bb dc 0d ; 0xf52ce keyboard.c:577
+ mov cx, ds ; 8c d9 ; 0xf52d1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf52d3
+ call 01910h ; e8 37 c6 ; 0xf52d6
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf52d9
+ xor ah, ah ; 30 e4 ; 0xf52dc
+ push ax ; 50 ; 0xf52de
+ push 005f7h ; 68 f7 05 ; 0xf52df
+ push strict byte 00004h ; 6a 04 ; 0xf52e2
+ call 01953h ; e8 6c c6 ; 0xf52e4
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf52e7
+ jmp near 05163h ; e9 76 fe ; 0xf52ea keyboard.c:578
+ test dh, 008h ; f6 c6 08 ; 0xf52ed keyboard.c:580
+ je short 05305h ; 74 13 ; 0xf52f0
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf52f2 keyboard.c:581
+ xor bh, bh ; 30 ff ; 0xf52f5
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf52f7
+ mov dl, byte [bx+00e30h] ; 8a 97 30 0e ; 0xf52fa
+ mov ax, word [bx+00e30h] ; 8b 87 30 0e ; 0xf52fe keyboard.c:582
+ jmp near 05399h ; e9 94 00 ; 0xf5302 keyboard.c:583
+ test dh, 004h ; f6 c6 04 ; 0xf5305
+ je short 0531dh ; 74 13 ; 0xf5308
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf530a keyboard.c:584
+ xor bh, bh ; 30 ff ; 0xf530d
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf530f
+ mov dl, byte [bx+00e2eh] ; 8a 97 2e 0e ; 0xf5312
+ mov ax, word [bx+00e2eh] ; 8b 87 2e 0e ; 0xf5316 keyboard.c:585
+ jmp near 05399h ; e9 7c 00 ; 0xf531a keyboard.c:586
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf531d
+ and AL, strict byte 002h ; 24 02 ; 0xf5320
+ test al, al ; 84 c0 ; 0xf5322
+ jbe short 0533ch ; 76 16 ; 0xf5324
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5326
+ cmp AL, strict byte 047h ; 3c 47 ; 0xf5329
+ jc short 0533ch ; 72 0f ; 0xf532b
+ cmp AL, strict byte 053h ; 3c 53 ; 0xf532d
+ jnbe short 0533ch ; 77 0b ; 0xf532f
+ mov DL, strict byte 0e0h ; b2 e0 ; 0xf5331 keyboard.c:588
+ mov bl, al ; 88 c3 ; 0xf5333 keyboard.c:589
+ xor bh, bh ; 30 ff ; 0xf5335
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5337
+ jmp short 05395h ; eb 59 ; 0xf533a keyboard.c:590
+ test dh, 003h ; f6 c6 03 ; 0xf533c
+ je short 05371h ; 74 30 ; 0xf533f
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf5341 keyboard.c:594
+ xor bh, bh ; 30 ff ; 0xf5344
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5346
+ mov cl, byte [bx+00e32h] ; 8a 8f 32 0e ; 0xf5349
+ xor ch, ch ; 30 ed ; 0xf534d
+ mov al, dh ; 88 f0 ; 0xf534f
+ xor ah, ah ; 30 e4 ; 0xf5351
+ test ax, cx ; 85 c8 ; 0xf5353
+ je short 05361h ; 74 0a ; 0xf5355
+ mov dl, byte [bx+00e2ah] ; 8a 97 2a 0e ; 0xf5357 keyboard.c:595
+ mov ax, word [bx+00e2ah] ; 8b 87 2a 0e ; 0xf535b keyboard.c:596
+ jmp short 05369h ; eb 08 ; 0xf535f keyboard.c:597
+ mov dl, byte [bx+00e2ch] ; 8a 97 2c 0e ; 0xf5361 keyboard.c:598
+ mov ax, word [bx+00e2ch] ; 8b 87 2c 0e ; 0xf5365 keyboard.c:599
+ shr ax, 008h ; c1 e8 08 ; 0xf5369
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf536c
+ jmp short 0539fh ; eb 2e ; 0xf536f keyboard.c:601
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf5371 keyboard.c:603
+ xor bh, bh ; 30 ff ; 0xf5374
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5376
+ mov al, byte [bx+00e32h] ; 8a 87 32 0e ; 0xf5379
+ xor ah, ah ; 30 e4 ; 0xf537d
+ mov dl, dh ; 88 f2 ; 0xf537f
+ xor dh, dh ; 30 f6 ; 0xf5381
+ test dx, ax ; 85 c2 ; 0xf5383
+ je short 05391h ; 74 0a ; 0xf5385
+ mov dl, byte [bx+00e2ch] ; 8a 97 2c 0e ; 0xf5387 keyboard.c:604
+ mov ax, word [bx+00e2ch] ; 8b 87 2c 0e ; 0xf538b keyboard.c:605
+ jmp short 05399h ; eb 08 ; 0xf538f keyboard.c:606
+ mov dl, byte [bx+00e2ah] ; 8a 97 2a 0e ; 0xf5391 keyboard.c:607
+ mov ax, word [bx+00e2ah] ; 8b 87 2a 0e ; 0xf5395 keyboard.c:608
+ shr ax, 008h ; c1 e8 08 ; 0xf5399
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf539c
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf539f keyboard.c:611
+ jne short 053bfh ; 75 1a ; 0xf53a3
+ test dl, dl ; 84 d2 ; 0xf53a5
+ jne short 053bfh ; 75 16 ; 0xf53a7
+ mov bx, 00ddch ; bb dc 0d ; 0xf53a9 keyboard.c:612
+ mov cx, ds ; 8c d9 ; 0xf53ac
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf53ae
+ call 01910h ; e8 5c c5 ; 0xf53b1
+ push 0062eh ; 68 2e 06 ; 0xf53b4
+ push strict byte 00004h ; 6a 04 ; 0xf53b7
+ call 01953h ; e8 97 c5 ; 0xf53b9
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf53bc
+ xor dh, dh ; 30 f6 ; 0xf53bf keyboard.c:614
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf53c1
+ xor ah, ah ; 30 e4 ; 0xf53c4
+ jmp near 05215h ; e9 4c fe ; 0xf53c6
+ ; disGetNextSymbol 0xf53c9 LB 0x5a0f -> off=0x0 cb=000000000000006c uValue=00000000000f3dc9 'dequeue_key'
+dequeue_key: ; 0xf53c9 LB 0x6c
+ push si ; 56 ; 0xf53c9 keyboard.c:624
+ push di ; 57 ; 0xf53ca
+ enter 00002h, 000h ; c8 02 00 00 ; 0xf53cb
+ push ax ; 50 ; 0xf53cf
+ push dx ; 52 ; 0xf53d0
+ mov si, bx ; 89 de ; 0xf53d1
+ mov bx, 00080h ; bb 80 00 ; 0xf53d3 keyboard.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53d6
+ mov es, ax ; 8e c0 ; 0xf53d9
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf53db
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf53de
+ mov bx, 00082h ; bb 82 00 ; 0xf53e1 keyboard.c:58
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf53e4
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf53e7 keyboard.c:58
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf53ea
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf53ed keyboard.c:58
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf53f0
+ cmp bx, ax ; 39 c3 ; 0xf53f3 keyboard.c:640
+ je short 0542dh ; 74 36 ; 0xf53f5
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf53f7 keyboard.c:48
+ lea di, [bx+001h] ; 8d 7f 01 ; 0xf53fa keyboard.c:642
+ mov ah, byte [es:di] ; 26 8a 25 ; 0xf53fd keyboard.c:48
+ mov es, cx ; 8e c1 ; 0xf5400 keyboard.c:643
+ mov byte [es:si], al ; 26 88 04 ; 0xf5402
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5405 keyboard.c:644
+ mov si, word [bp-004h] ; 8b 76 fc ; 0xf5408
+ mov byte [es:si], ah ; 26 88 24 ; 0xf540b
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf540e keyboard.c:647
+ je short 05428h ; 74 14 ; 0xf5412
+ inc bx ; 43 ; 0xf5414 keyboard.c:648
+ inc bx ; 43 ; 0xf5415
+ cmp bx, dx ; 39 d3 ; 0xf5416 keyboard.c:649
+ jc short 0541dh ; 72 03 ; 0xf5418
+ mov bx, word [bp-002h] ; 8b 5e fe ; 0xf541a keyboard.c:650
+ mov si, strict word 0001ah ; be 1a 00 ; 0xf541d keyboard.c:63
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5420
+ mov es, ax ; 8e c0 ; 0xf5423
+ mov word [es:si], bx ; 26 89 1c ; 0xf5425
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5428 keyboard.c:653
+ jmp short 0542fh ; eb 02 ; 0xf542b
+ xor ax, ax ; 31 c0 ; 0xf542d keyboard.c:656
+ leave ; c9 ; 0xf542f keyboard.c:658
+ pop di ; 5f ; 0xf5430
+ pop si ; 5e ; 0xf5431
+ retn 00002h ; c2 02 00 ; 0xf5432
+ ; disGetNextSymbol 0xf5435 LB 0x59a3 -> off=0x23 cb=00000000000002ee uValue=00000000000f3e58 'int16_function'
+ db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 059h, 055h, 010h, 055h, 0a3h
+ db 055h, 0f0h, 055h, 003h, 056h, 02ch, 056h, 035h, 056h, 0a6h, 056h, 0d8h, 056h, 008h, 057h, 03bh
+ db 057h, 09ch, 055h
+int16_function: ; 0xf5458 LB 0x2ee
+ push bp ; 55 ; 0xf5458 keyboard.c:675
+ mov bp, sp ; 89 e5 ; 0xf5459
+ push si ; 56 ; 0xf545b
+ push di ; 57 ; 0xf545c
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf545d
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5460 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5463
+ mov es, ax ; 8e c0 ; 0xf5466
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5468
+ mov bl, al ; 88 c3 ; 0xf546b keyboard.c:49
+ mov si, 00097h ; be 97 00 ; 0xf546d keyboard.c:48
+ mov dl, byte [es:si] ; 26 8a 14 ; 0xf5470
+ mov bh, dl ; 88 d7 ; 0xf5473 keyboard.c:49
+ xor ah, ah ; 30 e4 ; 0xf5475 keyboard.c:684
+ mov cx, ax ; 89 c1 ; 0xf5477
+ sar cx, 004h ; c1 f9 04 ; 0xf5479
+ and cl, 007h ; 80 e1 07 ; 0xf547c
+ mov al, dl ; 88 d0 ; 0xf547f
+ and AL, strict byte 007h ; 24 07 ; 0xf5481
+ xor al, cl ; 30 c8 ; 0xf5483
+ test ax, ax ; 85 c0 ; 0xf5485
+ je short 054f0h ; 74 67 ; 0xf5487
+ cli ; fa ; 0xf5489 keyboard.c:685
+ mov AL, strict byte 0edh ; b0 ed ; 0xf548a keyboard.c:686
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf548c
+ out DX, AL ; ee ; 0xf548f
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5490 keyboard.c:687
+ in AL, DX ; ec ; 0xf5493
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5494
+ test AL, strict byte 001h ; a8 01 ; 0xf5496
+ jne short 054a2h ; 75 08 ; 0xf5498
+ mov AL, strict byte 021h ; b0 21 ; 0xf549a
+ mov dx, 00080h ; ba 80 00 ; 0xf549c
+ out DX, AL ; ee ; 0xf549f
+ jmp short 05490h ; eb ee ; 0xf54a0
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf54a2 keyboard.c:688
+ in AL, DX ; ec ; 0xf54a5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf54a6
+ cmp ax, 000fah ; 3d fa 00 ; 0xf54a8
+ jne short 054efh ; 75 42 ; 0xf54ab
+ mov dl, bh ; 88 fa ; 0xf54ad keyboard.c:689
+ and dl, 0c8h ; 80 e2 c8 ; 0xf54af
+ mov al, bl ; 88 d8 ; 0xf54b2 keyboard.c:690
+ xor ah, ah ; 30 e4 ; 0xf54b4
+ mov cx, ax ; 89 c1 ; 0xf54b6
+ sar cx, 004h ; c1 f9 04 ; 0xf54b8
+ and cl, 007h ; 80 e1 07 ; 0xf54bb
+ xor dh, dh ; 30 f6 ; 0xf54be
+ mov ax, dx ; 89 d0 ; 0xf54c0
+ or al, cl ; 08 c8 ; 0xf54c2
+ mov bh, al ; 88 c7 ; 0xf54c4
+ and AL, strict byte 007h ; 24 07 ; 0xf54c6 keyboard.c:691
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf54c8
+ out DX, AL ; ee ; 0xf54cb
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf54cc keyboard.c:692
+ in AL, DX ; ec ; 0xf54cf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf54d0
+ test AL, strict byte 001h ; a8 01 ; 0xf54d2
+ jne short 054deh ; 75 08 ; 0xf54d4
+ mov AL, strict byte 021h ; b0 21 ; 0xf54d6 keyboard.c:693
+ mov dx, 00080h ; ba 80 00 ; 0xf54d8
+ out DX, AL ; ee ; 0xf54db
+ jmp short 054cch ; eb ee ; 0xf54dc
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf54de keyboard.c:694
+ in AL, DX ; ec ; 0xf54e1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf54e2
+ mov si, 00097h ; be 97 00 ; 0xf54e4 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54e7
+ mov es, ax ; 8e c0 ; 0xf54ea
+ mov byte [es:si], bh ; 26 88 3c ; 0xf54ec
+ sti ; fb ; 0xf54ef keyboard.c:697
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf54f0 keyboard.c:700
+ shr ax, 008h ; c1 e8 08 ; 0xf54f3
+ cmp ax, 000a2h ; 3d a2 00 ; 0xf54f6
+ jnbe short 05559h ; 77 5e ; 0xf54f9
+ push CS ; 0e ; 0xf54fb
+ pop ES ; 07 ; 0xf54fc
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf54fd
+ mov di, 05435h ; bf 35 54 ; 0xf5500
+ repne scasb ; f2 ae ; 0xf5503
+ sal cx, 1 ; d1 e1 ; 0xf5505
+ mov di, cx ; 89 cf ; 0xf5507
+ mov ax, word [cs:di+05440h] ; 2e 8b 85 40 54 ; 0xf5509
+ jmp ax ; ff e0 ; 0xf550e
+ push strict byte 00001h ; 6a 01 ; 0xf5510 keyboard.c:702
+ mov cx, ss ; 8c d1 ; 0xf5512
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf5514
+ mov dx, ss ; 8c d2 ; 0xf5517
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5519
+ call 053c9h ; e8 aa fe ; 0xf551c
+ test ax, ax ; 85 c0 ; 0xf551f
+ jne short 0552eh ; 75 0b ; 0xf5521
+ push 00665h ; 68 65 06 ; 0xf5523 keyboard.c:703
+ push strict byte 00007h ; 6a 07 ; 0xf5526
+ call 01953h ; e8 28 c4 ; 0xf5528
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf552b
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf552e keyboard.c:705
+ je short 0553ah ; 74 06 ; 0xf5532
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5534
+ je short 05540h ; 74 06 ; 0xf5538
+ cmp byte [bp-006h], 0e0h ; 80 7e fa e0 ; 0xf553a keyboard.c:707
+ jne short 05544h ; 75 04 ; 0xf553e
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf5540 keyboard.c:708
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf5544 keyboard.c:709
+ xor ah, ah ; 30 e4 ; 0xf5547
+ mov dx, ax ; 89 c2 ; 0xf5549
+ sal dx, 008h ; c1 e2 08 ; 0xf554b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf554e
+ or dx, ax ; 09 c2 ; 0xf5551
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5553
+ jmp near 0559ch ; e9 43 00 ; 0xf5556 keyboard.c:710
+ mov bx, 00ddch ; bb dc 0d ; 0xf5559
+ mov cx, ds ; 8c d9 ; 0xf555c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf555e
+ call 01910h ; e8 ac c3 ; 0xf5561
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5564
+ shr ax, 008h ; c1 e8 08 ; 0xf5567
+ push ax ; 50 ; 0xf556a
+ push 00689h ; 68 89 06 ; 0xf556b
+ push strict byte 00004h ; 6a 04 ; 0xf556e
+ call 01953h ; e8 e0 c3 ; 0xf5570
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf5573
+ mov bx, 00ddch ; bb dc 0d ; 0xf5576
+ mov cx, ds ; 8c d9 ; 0xf5579
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf557b
+ call 01910h ; e8 8f c3 ; 0xf557e
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5581
+ push ax ; 50 ; 0xf5584
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5585
+ push ax ; 50 ; 0xf5588
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf5589
+ push ax ; 50 ; 0xf558c
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf558d
+ push ax ; 50 ; 0xf5590
+ push 006b1h ; 68 b1 06 ; 0xf5591
+ push strict byte 00004h ; 6a 04 ; 0xf5594
+ call 01953h ; e8 ba c3 ; 0xf5596
+ add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5599
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf559c
+ pop di ; 5f ; 0xf559f
+ pop si ; 5e ; 0xf55a0
+ pop bp ; 5d ; 0xf55a1
+ retn ; c3 ; 0xf55a2
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf55a3 keyboard.c:714
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf55a6
+ push strict byte 00000h ; 6a 00 ; 0xf55a9 keyboard.c:715
+ mov cx, ss ; 8c d1 ; 0xf55ab
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf55ad
+ mov dx, ss ; 8c d2 ; 0xf55b0
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf55b2
+ call 053c9h ; e8 11 fe ; 0xf55b5
+ test ax, ax ; 85 c0 ; 0xf55b8
+ jne short 055c2h ; 75 06 ; 0xf55ba
+ or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf55bc keyboard.c:716
+ jmp short 0559ch ; eb da ; 0xf55c0 keyboard.c:717
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf55c2 keyboard.c:719
+ je short 055ceh ; 74 06 ; 0xf55c6
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf55c8
+ je short 055d4h ; 74 06 ; 0xf55cc
+ cmp byte [bp-006h], 0e0h ; 80 7e fa e0 ; 0xf55ce keyboard.c:721
+ jne short 055d8h ; 75 04 ; 0xf55d2
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf55d4 keyboard.c:722
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf55d8 keyboard.c:723
+ xor ah, ah ; 30 e4 ; 0xf55db
+ mov dx, ax ; 89 c2 ; 0xf55dd
+ sal dx, 008h ; c1 e2 08 ; 0xf55df
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55e2
+ or dx, ax ; 09 c2 ; 0xf55e5
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf55e7
+ and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf55ea keyboard.c:724
+ jmp short 0559ch ; eb ac ; 0xf55ee keyboard.c:725
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf55f0 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf55f3
+ mov es, ax ; 8e c0 ; 0xf55f6
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf55f8
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf55fb keyboard.c:729
+ mov dl, al ; 88 c2 ; 0xf55fe
+ jmp near 05553h ; e9 50 ff ; 0xf5600
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf5603 keyboard.c:733
+ xor dh, dh ; 30 f6 ; 0xf5606
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5608
+ shr ax, 008h ; c1 e8 08 ; 0xf560b
+ xor ah, ah ; 30 e4 ; 0xf560e
+ call 04f7dh ; e8 6a f9 ; 0xf5610
+ test ax, ax ; 85 c0 ; 0xf5613
+ jne short 05624h ; 75 0d ; 0xf5615
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5617 keyboard.c:734
+ xor al, al ; 30 c0 ; 0xf561a
+ or AL, strict byte 001h ; 0c 01 ; 0xf561c
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf561e
+ jmp near 0559ch ; e9 78 ff ; 0xf5621 keyboard.c:736
+ and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf5624 keyboard.c:737
+ jmp near 0559ch ; e9 70 ff ; 0xf5629 keyboard.c:739
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf562c keyboard.c:752
+ xor al, al ; 30 c0 ; 0xf562f
+ or AL, strict byte 030h ; 0c 30 ; 0xf5631
+ jmp short 0561eh ; eb e9 ; 0xf5633
+ mov byte [bp-008h], 002h ; c6 46 f8 02 ; 0xf5635 keyboard.c:756
+ xor cx, cx ; 31 c9 ; 0xf5639 keyboard.c:757
+ cli ; fa ; 0xf563b keyboard.c:759
+ mov AL, strict byte 0f2h ; b0 f2 ; 0xf563c keyboard.c:760
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf563e
+ out DX, AL ; ee ; 0xf5641
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5642 keyboard.c:762
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5645 keyboard.c:763
+ in AL, DX ; ec ; 0xf5648
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5649
+ test AL, strict byte 001h ; a8 01 ; 0xf564b
+ jne short 0565ch ; 75 0d ; 0xf564d
+ dec bx ; 4b ; 0xf564f
+ test bx, bx ; 85 db ; 0xf5650
+ jbe short 0565ch ; 76 08 ; 0xf5652
+ mov dx, 00080h ; ba 80 00 ; 0xf5654 keyboard.c:764
+ in AL, DX ; ec ; 0xf5657
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5658
+ jmp short 05645h ; eb e9 ; 0xf565a
+ test bx, bx ; 85 db ; 0xf565c keyboard.c:765
+ jbe short 056a0h ; 76 40 ; 0xf565e
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5660 keyboard.c:766
+ in AL, DX ; ec ; 0xf5663
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5664
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5666
+ jne short 056a0h ; 75 35 ; 0xf5669
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf566b keyboard.c:768
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf566e keyboard.c:769
+ in AL, DX ; ec ; 0xf5671
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5672
+ test AL, strict byte 001h ; a8 01 ; 0xf5674
+ jne short 05685h ; 75 0d ; 0xf5676
+ dec bx ; 4b ; 0xf5678
+ test bx, bx ; 85 db ; 0xf5679
+ jbe short 05685h ; 76 08 ; 0xf567b
+ mov dx, 00080h ; ba 80 00 ; 0xf567d keyboard.c:770
+ in AL, DX ; ec ; 0xf5680
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5681
+ jmp short 0566eh ; eb e9 ; 0xf5683
+ test bx, bx ; 85 db ; 0xf5685 keyboard.c:771
+ jbe short 05697h ; 76 0e ; 0xf5687
+ shr cx, 008h ; c1 e9 08 ; 0xf5689 keyboard.c:772
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf568c keyboard.c:773
+ in AL, DX ; ec ; 0xf568f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5690
+ sal ax, 008h ; c1 e0 08 ; 0xf5692
+ or cx, ax ; 09 c1 ; 0xf5695
+ dec byte [bp-008h] ; fe 4e f8 ; 0xf5697 keyboard.c:775
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf569a
+ jnbe short 0566bh ; 77 cb ; 0xf569e
+ mov word [bp+00ch], cx ; 89 4e 0c ; 0xf56a0 keyboard.c:778
+ jmp near 0559ch ; e9 f6 fe ; 0xf56a3 keyboard.c:779
+ push strict byte 00001h ; 6a 01 ; 0xf56a6 keyboard.c:782
+ mov cx, ss ; 8c d1 ; 0xf56a8
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf56aa
+ mov dx, ss ; 8c d2 ; 0xf56ad
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf56af
+ call 053c9h ; e8 14 fd ; 0xf56b2
+ test ax, ax ; 85 c0 ; 0xf56b5
+ jne short 056c4h ; 75 0b ; 0xf56b7
+ push 00665h ; 68 65 06 ; 0xf56b9 keyboard.c:783
+ push strict byte 00007h ; 6a 07 ; 0xf56bc
+ call 01953h ; e8 92 c2 ; 0xf56be
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf56c1
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf56c4 keyboard.c:785
+ jne short 056cdh ; 75 03 ; 0xf56c8
+ jmp near 05544h ; e9 77 fe ; 0xf56ca
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf56cd
+ jne short 056d6h ; 75 03 ; 0xf56d1
+ jmp near 05540h ; e9 6a fe ; 0xf56d3
+ jmp short 056cah ; eb f2 ; 0xf56d6
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf56d8 keyboard.c:792
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf56db
+ push strict byte 00000h ; 6a 00 ; 0xf56de keyboard.c:793
+ mov cx, ss ; 8c d1 ; 0xf56e0
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf56e2
+ mov dx, ss ; 8c d2 ; 0xf56e5
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf56e7
+ call 053c9h ; e8 dc fc ; 0xf56ea
+ test ax, ax ; 85 c0 ; 0xf56ed
+ jne short 056f4h ; 75 03 ; 0xf56ef
+ jmp near 055bch ; e9 c8 fe ; 0xf56f1
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf56f4 keyboard.c:797
+ jne short 056fdh ; 75 03 ; 0xf56f8
+ jmp near 055d8h ; e9 db fe ; 0xf56fa
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf56fd
+ jne short 05706h ; 75 03 ; 0xf5701
+ jmp near 055d4h ; e9 ce fe ; 0xf5703
+ jmp short 056fah ; eb f2 ; 0xf5706
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5708 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf570b
+ mov es, ax ; 8e c0 ; 0xf570e
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5710
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5713 keyboard.c:805
+ mov dl, al ; 88 c2 ; 0xf5716
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5718
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf571b keyboard.c:48
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf571e
+ and bl, 073h ; 80 e3 73 ; 0xf5721 keyboard.c:49
+ mov si, 00096h ; be 96 00 ; 0xf5724 keyboard.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5727
+ and AL, strict byte 00ch ; 24 0c ; 0xf572a keyboard.c:49
+ or al, bl ; 08 d8 ; 0xf572c
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf572e keyboard.c:808
+ xor dh, dh ; 30 f6 ; 0xf5731
+ xor ah, ah ; 30 e4 ; 0xf5733
+ sal ax, 008h ; c1 e0 08 ; 0xf5735
+ jmp near 05551h ; e9 16 fe ; 0xf5738
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf573b keyboard.c:813
+ xor ah, ah ; 30 e4 ; 0xf573e
+ or ah, 080h ; 80 cc 80 ; 0xf5740
+ jmp near 0561eh ; e9 d8 fe ; 0xf5743
+ ; disGetNextSymbol 0xf5746 LB 0x5692 -> off=0x0 cb=00000000000000b5 uValue=00000000000f4146 'set_geom_lba'
+set_geom_lba: ; 0xf5746 LB 0xb5
+ push bx ; 53 ; 0xf5746 disk.c:125
+ push cx ; 51 ; 0xf5747
+ push si ; 56 ; 0xf5748
+ push di ; 57 ; 0xf5749
+ enter 00008h, 000h ; c8 08 00 00 ; 0xf574a
+ mov di, ax ; 89 c7 ; 0xf574e
+ mov es, dx ; 8e c2 ; 0xf5750
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf5752 disk.c:127
+ mov word [bp-006h], strict word 0007eh ; c7 46 fa 7e 00 ; 0xf5757
+ mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf575c disk.c:129
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5761 disk.c:132
+ mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf5764
+ mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf5767
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf576a
+ mov si, strict word 00020h ; be 20 00 ; 0xf576d
+ call 0aa90h ; e8 1d 53 ; 0xf5770
+ test ax, ax ; 85 c0 ; 0xf5773
+ jne short 05783h ; 75 0c ; 0xf5775
+ test bx, bx ; 85 db ; 0xf5777
+ jne short 05783h ; 75 08 ; 0xf5779
+ test cx, cx ; 85 c9 ; 0xf577b
+ jne short 05783h ; 75 04 ; 0xf577d
+ test dx, dx ; 85 d2 ; 0xf577f
+ je short 0578ah ; 74 07 ; 0xf5781
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5783
+ mov si, bx ; 89 de ; 0xf5786
+ jmp short 05790h ; eb 06 ; 0xf5788
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf578a
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf578d
+ mov word [bp-004h], bx ; 89 5e fc ; 0xf5790
+ xor bx, bx ; 31 db ; 0xf5793 disk.c:134
+ jmp short 0579ch ; eb 05 ; 0xf5795
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf5797
+ jnl short 057bfh ; 7d 23 ; 0xf579a
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf579c disk.c:135
+ cmp si, ax ; 39 c6 ; 0xf579f
+ jc short 057adh ; 72 0a ; 0xf57a1
+ jne short 057b6h ; 75 11 ; 0xf57a3
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf57a5
+ cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf57a8
+ jnbe short 057b6h ; 77 09 ; 0xf57ab
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf57ad disk.c:136
+ inc ax ; 40 ; 0xf57b0
+ shr ax, 1 ; d1 e8 ; 0xf57b1
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf57b3
+ shr word [bp-006h], 1 ; d1 6e fa ; 0xf57b6 disk.c:137
+ rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf57b9
+ inc bx ; 43 ; 0xf57bc disk.c:138
+ jmp short 05797h ; eb d8 ; 0xf57bd
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf57bf disk.c:140
+ xor dx, dx ; 31 d2 ; 0xf57c2
+ mov bx, strict word 0003fh ; bb 3f 00 ; 0xf57c4
+ xor cx, cx ; 31 c9 ; 0xf57c7
+ call 0aa40h ; e8 74 52 ; 0xf57c9
+ mov bx, ax ; 89 c3 ; 0xf57cc
+ mov cx, dx ; 89 d1 ; 0xf57ce
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf57d0
+ mov dx, si ; 89 f2 ; 0xf57d3
+ call 0aa60h ; e8 88 52 ; 0xf57d5
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf57d8
+ cmp ax, 00400h ; 3d 00 04 ; 0xf57dc disk.c:141
+ jbe short 057e7h ; 76 06 ; 0xf57df
+ mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf57e1 disk.c:142
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf57e7 disk.c:143
+ mov word [es:di], ax ; 26 89 05 ; 0xf57ea
+ mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf57ed disk.c:144
+ leave ; c9 ; 0xf57f3 disk.c:145
+ pop di ; 5f ; 0xf57f4
+ pop si ; 5e ; 0xf57f5
+ pop cx ; 59 ; 0xf57f6
+ pop bx ; 5b ; 0xf57f7
+ retn 00008h ; c2 08 00 ; 0xf57f8
+ ; disGetNextSymbol 0xf57fb LB 0x55dd -> off=0x0 cb=00000000000002fc uValue=00000000000f41fb 'edd_fill_dpt'
+edd_fill_dpt: ; 0xf57fb LB 0x2fc
+ push si ; 56 ; 0xf57fb disk.c:147
+ push di ; 57 ; 0xf57fc
+ enter 0000ch, 000h ; c8 0c 00 00 ; 0xf57fd
+ mov di, ax ; 89 c7 ; 0xf5801
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5803
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf5806
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf5809
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf580c disk.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf580f
+ mov es, ax ; 8e c0 ; 0xf5812
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5814
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5817 disk.c:59
+ mov es, dx ; 8e c2 ; 0xf581a disk.c:152
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf581c
+ cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf581f
+ jnc short 0582ah ; 73 06 ; 0xf5822
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf5824 disk.c:153
+ jmp near 05af1h ; e9 c7 02 ; 0xf5827
+ jc short 0589bh ; 72 6f ; 0xf582a disk.c:156
+ mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf582c disk.c:159
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5831 disk.c:160
+ xor ah, ah ; 30 e4 ; 0xf5834
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5836
+ mov dx, cx ; 89 ca ; 0xf5839
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf583b
+ add bx, ax ; 01 c3 ; 0xf583e
+ mov es, cx ; 8e c1 ; 0xf5840
+ mov ax, word [es:bx+024h] ; 26 8b 47 24 ; 0xf5842
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5846
+ mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf5849
+ mov es, cx ; 8e c1 ; 0xf584d disk.c:162
+ cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf584f
+ jne short 0589dh ; 75 47 ; 0xf5854
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5856 disk.c:163
+ mov word [es:di+002h], strict word 00074h ; 26 c7 45 02 74 00 ; 0xf5859
+ mov word [es:di+004h], strict word 0ffffh ; 26 c7 45 04 ff ff ; 0xf585f disk.c:164
+ mov word [es:di+006h], strict word 0ffffh ; 26 c7 45 06 ff ff ; 0xf5865
+ mov word [es:di+008h], strict word 0ffffh ; 26 c7 45 08 ff ff ; 0xf586b disk.c:165
+ mov word [es:di+00ah], strict word 0ffffh ; 26 c7 45 0a ff ff ; 0xf5871
+ mov word [es:di+00ch], strict word 0ffffh ; 26 c7 45 0c ff ff ; 0xf5877 disk.c:166
+ mov word [es:di+00eh], strict word 0ffffh ; 26 c7 45 0e ff ff ; 0xf587d
+ mov word [es:di+010h], strict word 0ffffh ; 26 c7 45 10 ff ff ; 0xf5883 disk.c:167
+ mov word [es:di+012h], strict word 0ffffh ; 26 c7 45 12 ff ff ; 0xf5889
+ mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff ; 0xf588f disk.c:168
+ mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf5895
+ jmp short 0590ch ; eb 6f ; 0xf589b disk.c:169
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf589d disk.c:170
+ mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf58a0
+ mov es, cx ; 8e c1 ; 0xf58a6 disk.c:171
+ mov ax, word [es:bx+02eh] ; 26 8b 47 2e ; 0xf58a8
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf58ac
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf58af
+ mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf58b3
+ mov es, cx ; 8e c1 ; 0xf58b9 disk.c:172
+ mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf58bb
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf58bf
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf58c2
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf58c6
+ mov es, cx ; 8e c1 ; 0xf58cc disk.c:173
+ mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf58ce
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf58d2
+ mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf58d5
+ mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf58d9
+ mov es, cx ; 8e c1 ; 0xf58df disk.c:174
+ mov ax, word [es:bx+038h] ; 26 8b 47 38 ; 0xf58e1
+ mov si, word [es:bx+036h] ; 26 8b 77 36 ; 0xf58e5
+ mov cx, word [es:bx+034h] ; 26 8b 4f 34 ; 0xf58e9
+ mov dx, word [es:bx+032h] ; 26 8b 57 32 ; 0xf58ed
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf58f1 disk.c:175
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf58f4
+ mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf58f8
+ mov bx, si ; 89 f3 ; 0xf58fc disk.c:176
+ mov si, strict word 00020h ; be 20 00 ; 0xf58fe
+ call 0aa90h ; e8 8c 51 ; 0xf5901
+ mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5904
+ mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5908
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf590c disk.c:181
+ cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf590f
+ jc short 05964h ; 72 4f ; 0xf5913
+ mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5915 disk.c:185
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf591a disk.c:186
+ mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf591d
+ mov word [es:di+01ah], 00306h ; 26 c7 45 1a 06 03 ; 0xf5921 disk.c:187
+ mov cl, byte [bp+008h] ; 8a 4e 08 ; 0xf5927 disk.c:190
+ xor ch, ch ; 30 ed ; 0xf592a
+ mov ax, cx ; 89 c8 ; 0xf592c
+ cwd ; 99 ; 0xf592e
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf592f
+ sar ax, 1 ; d1 f8 ; 0xf5931
+ xor ah, ah ; 30 e4 ; 0xf5933 disk.c:191
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5935
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5938
+ add bx, ax ; 01 c3 ; 0xf593b
+ mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf593d
+ mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf5942 disk.c:192
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5947
+ mov al, byte [es:bx+00279h] ; 26 8a 87 79 02 ; 0xf594a disk.c:193
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf594f
+ imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf5952 disk.c:195
+ add bx, word [bp-008h] ; 03 5e f8 ; 0xf5955
+ mov cl, byte [es:bx+023h] ; 26 8a 4f 23 ; 0xf5958
+ test cl, cl ; 84 c9 ; 0xf595c disk.c:197
+ jne short 05967h ; 75 07 ; 0xf595e
+ xor bx, bx ; 31 db ; 0xf5960
+ jmp short 0596ah ; eb 06 ; 0xf5962
+ jmp near 05a20h ; e9 b9 00 ; 0xf5964
+ mov bx, strict word 00008h ; bb 08 00 ; 0xf5967
+ or bl, 010h ; 80 cb 10 ; 0xf596a disk.c:198
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf596d disk.c:199
+ xor ah, ah ; 30 e4 ; 0xf5970
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5972
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5975
+ add si, ax ; 01 c6 ; 0xf5978
+ cmp byte [es:si+01fh], 005h ; 26 80 7c 1f 05 ; 0xf597a
+ jne short 05984h ; 75 03 ; 0xf597f
+ or bl, 060h ; 80 cb 60 ; 0xf5981 disk.c:200
+ cmp cl, 001h ; 80 f9 01 ; 0xf5984 disk.c:206
+ jne short 0598eh ; 75 05 ; 0xf5987
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5989
+ jmp short 05990h ; eb 02 ; 0xf598c
+ xor ax, ax ; 31 c0 ; 0xf598e
+ or bx, ax ; 09 c3 ; 0xf5990
+ cmp cl, 003h ; 80 f9 03 ; 0xf5992 disk.c:207
+ jne short 0599ch ; 75 05 ; 0xf5995
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf5997
+ jmp short 0599eh ; eb 02 ; 0xf599a
+ xor ax, ax ; 31 c0 ; 0xf599c
+ or bx, ax ; 09 c3 ; 0xf599e
+ les si, [bp-008h] ; c4 76 f8 ; 0xf59a0 disk.c:209
+ mov word [es:si+002a8h], dx ; 26 89 94 a8 02 ; 0xf59a3
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf59a8 disk.c:210
+ mov word [es:si+002aah], ax ; 26 89 84 aa 02 ; 0xf59ab
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf59b0 disk.c:211
+ xor ah, ah ; 30 e4 ; 0xf59b3
+ cwd ; 99 ; 0xf59b5
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf59b6
+ idiv cx ; f7 f9 ; 0xf59b9
+ or dl, 00eh ; 80 ca 0e ; 0xf59bb
+ sal dx, 004h ; c1 e2 04 ; 0xf59be
+ mov byte [es:si+002ach], dl ; 26 88 94 ac 02 ; 0xf59c1
+ mov byte [es:si+002adh], 0cbh ; 26 c6 84 ad 02 cb ; 0xf59c6 disk.c:212
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf59cc disk.c:213
+ mov byte [es:si+002aeh], al ; 26 88 84 ae 02 ; 0xf59cf
+ mov word [es:si+002afh], strict word 00001h ; 26 c7 84 af 02 01 00 ; 0xf59d4 disk.c:214
+ mov byte [es:si+002b1h], 000h ; 26 c6 84 b1 02 00 ; 0xf59db disk.c:216
+ mov word [es:si+002b2h], bx ; 26 89 9c b2 02 ; 0xf59e1 disk.c:217
+ mov bx, si ; 89 f3 ; 0xf59e6 disk.c:218
+ mov word [es:bx+002b4h], strict word 00000h ; 26 c7 87 b4 02 00 00 ; 0xf59e8
+ mov byte [es:bx+002b6h], 011h ; 26 c6 87 b6 02 11 ; 0xf59ef disk.c:219
+ xor bl, bl ; 30 db ; 0xf59f5 disk.c:221
+ xor bh, bh ; 30 ff ; 0xf59f7 disk.c:222
+ jmp short 05a00h ; eb 05 ; 0xf59f9
+ cmp bh, 00fh ; 80 ff 0f ; 0xf59fb
+ jnc short 05a16h ; 73 16 ; 0xf59fe
+ mov al, bh ; 88 f8 ; 0xf5a00 disk.c:223
+ xor ah, ah ; 30 e4 ; 0xf5a02
+ mov si, ax ; 89 c6 ; 0xf5a04
+ add si, 00306h ; 81 c6 06 03 ; 0xf5a06
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf5a0a disk.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5a0d
+ add bl, al ; 00 c3 ; 0xf5a10 disk.c:49
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5a12 disk.c:223
+ jmp short 059fbh ; eb e5 ; 0xf5a14
+ neg bl ; f6 db ; 0xf5a16 disk.c:224
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5a18 disk.c:225
+ mov byte [es:si+002b7h], bl ; 26 88 9c b7 02 ; 0xf5a1b
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a20 disk.c:229
+ cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5a23
+ jnc short 05a2ch ; 73 03 ; 0xf5a27
+ jmp near 05aefh ; e9 c3 00 ; 0xf5a29
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5a2c disk.c:233
+ xor ah, ah ; 30 e4 ; 0xf5a2f
+ cwd ; 99 ; 0xf5a31
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5a32
+ sar ax, 1 ; d1 f8 ; 0xf5a34
+ xor ah, ah ; 30 e4 ; 0xf5a36 disk.c:234
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5a38
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5a3b
+ add bx, ax ; 01 c3 ; 0xf5a3e
+ mov al, byte [es:bx+00278h] ; 26 8a 87 78 02 ; 0xf5a40
+ mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf5a45 disk.c:235
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a4a disk.c:237
+ mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5a4d
+ mov word [es:di+01eh], 0beddh ; 26 c7 45 1e dd be ; 0xf5a52 disk.c:238
+ mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00 ; 0xf5a58 disk.c:239
+ mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5a5e disk.c:241
+ test al, al ; 84 c0 ; 0xf5a64 disk.c:243
+ jne short 05a74h ; 75 0c ; 0xf5a66
+ mov word [es:di+024h], 05349h ; 26 c7 45 24 49 53 ; 0xf5a68 disk.c:244
+ mov word [es:di+026h], 02041h ; 26 c7 45 26 41 20 ; 0xf5a6e disk.c:246
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a74 disk.c:252
+ mov word [es:di+028h], 05441h ; 26 c7 45 28 41 54 ; 0xf5a77
+ mov word [es:di+02ah], 02041h ; 26 c7 45 2a 41 20 ; 0xf5a7d disk.c:254
+ mov word [es:di+02ch], 02020h ; 26 c7 45 2c 20 20 ; 0xf5a83 disk.c:256
+ mov word [es:di+02eh], 02020h ; 26 c7 45 2e 20 20 ; 0xf5a89 disk.c:258
+ test al, al ; 84 c0 ; 0xf5a8f disk.c:261
+ jne short 05aa9h ; 75 16 ; 0xf5a91
+ mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5a93 disk.c:262
+ mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00 ; 0xf5a97 disk.c:263
+ mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00 ; 0xf5a9d disk.c:264
+ mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5aa3
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5aa9 disk.c:269
+ and AL, strict byte 001h ; 24 01 ; 0xf5aac
+ xor ah, ah ; 30 e4 ; 0xf5aae
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ab0
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5ab3
+ mov word [es:di+03ah], strict word 00000h ; 26 c7 45 3a 00 00 ; 0xf5ab7 disk.c:270
+ mov word [es:di+03ch], strict word 00000h ; 26 c7 45 3c 00 00 ; 0xf5abd disk.c:271
+ mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5ac3
+ xor bl, bl ; 30 db ; 0xf5ac9 disk.c:273
+ mov BH, strict byte 01eh ; b7 1e ; 0xf5acb disk.c:274
+ jmp short 05ad4h ; eb 05 ; 0xf5acd
+ cmp bh, 040h ; 80 ff 40 ; 0xf5acf
+ jnc short 05ae6h ; 73 12 ; 0xf5ad2
+ mov al, bh ; 88 f8 ; 0xf5ad4 disk.c:275
+ xor ah, ah ; 30 e4 ; 0xf5ad6
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ad8
+ mov si, di ; 89 fe ; 0xf5adb
+ add si, ax ; 01 c6 ; 0xf5add
+ add bl, byte [es:si] ; 26 02 1c ; 0xf5adf
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5ae2
+ jmp short 05acfh ; eb e9 ; 0xf5ae4
+ neg bl ; f6 db ; 0xf5ae6 disk.c:276
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ae8 disk.c:277
+ mov byte [es:di+041h], bl ; 26 88 5d 41 ; 0xf5aeb
+ xor ax, ax ; 31 c0 ; 0xf5aef disk.c:279
+ leave ; c9 ; 0xf5af1 disk.c:280
+ pop di ; 5f ; 0xf5af2
+ pop si ; 5e ; 0xf5af3
+ retn 00002h ; c2 02 00 ; 0xf5af4
+ ; disGetNextSymbol 0xf5af7 LB 0x52e1 -> off=0x32 cb=0000000000000439 uValue=00000000000f4529 'int13_harddisk'
+ db 0bdh, 05bh, 0ceh, 05bh, 0f8h, 05bh, 0f8h, 05bh, 0f8h, 05bh, 0e8h, 05dh, 024h, 05fh, 024h, 05fh
+ db 016h, 05eh, 001h, 05fh, 024h, 05fh, 024h, 05fh, 001h, 05fh, 001h, 05fh, 024h, 05fh, 024h, 05fh
+ db 080h, 05eh, 001h, 05fh, 024h, 05fh, 024h, 05fh, 001h, 05fh, 0b9h, 05eh, 024h, 05fh, 024h, 05fh
+ db 024h, 05fh
+int13_harddisk: ; 0xf5b29 LB 0x439
+ push bp ; 55 ; 0xf5b29 disk.c:282
+ mov bp, sp ; 89 e5 ; 0xf5b2a
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf5b2c
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5b2f disk.c:293
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5b33 disk.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf5b36
+ mov es, dx ; 8e c2 ; 0xf5b39
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf5b3b
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf5b3e disk.c:59
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5b41
+ mov bx, 0008eh ; bb 8e 00 ; 0xf5b44 disk.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5b47
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5b4b disk.c:299
+ xor dh, dh ; 30 f6 ; 0xf5b4e
+ cmp dx, 00080h ; 81 fa 80 00 ; 0xf5b50
+ jc short 05b5ch ; 72 06 ; 0xf5b54
+ cmp dx, 00094h ; 81 fa 94 00 ; 0xf5b56
+ jc short 05b7ah ; 72 1e ; 0xf5b5a
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5b5c disk.c:300
+ xor ah, ah ; 30 e4 ; 0xf5b5f
+ push ax ; 50 ; 0xf5b61
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5b62
+ shr ax, 008h ; c1 e8 08 ; 0xf5b65
+ push ax ; 50 ; 0xf5b68
+ push 006d4h ; 68 d4 06 ; 0xf5b69
+ push 006e3h ; 68 e3 06 ; 0xf5b6c
+ push strict byte 00004h ; 6a 04 ; 0xf5b6f
+ call 01953h ; e8 df bd ; 0xf5b71
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5b74
+ jmp near 05f3fh ; e9 c5 03 ; 0xf5b77 disk.c:301
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5b7a disk.c:305
+ xor dh, dh ; 30 f6 ; 0xf5b7d
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b7f
+ mov bx, si ; 89 f3 ; 0xf5b82
+ add bx, dx ; 01 d3 ; 0xf5b84
+ mov bl, byte [es:bx+001cfh] ; 26 8a 9f cf 01 ; 0xf5b86
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf5b8b
+ cmp bl, 014h ; 80 fb 14 ; 0xf5b8e disk.c:308
+ jc short 05ba3h ; 72 10 ; 0xf5b91
+ push dx ; 52 ; 0xf5b93 disk.c:309
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5b94
+ shr ax, 008h ; c1 e8 08 ; 0xf5b97
+ push ax ; 50 ; 0xf5b9a
+ push 006d4h ; 68 d4 06 ; 0xf5b9b
+ push 0070eh ; 68 0e 07 ; 0xf5b9e
+ jmp short 05b6fh ; eb cc ; 0xf5ba1
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5ba3 disk.c:313
+ shr bx, 008h ; c1 eb 08 ; 0xf5ba6
+ cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5ba9
+ jnbe short 05bf5h ; 77 47 ; 0xf5bac
+ add bx, bx ; 01 db ; 0xf5bae
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5bb0
+ xor dh, dh ; 30 f6 ; 0xf5bb3
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf5bb5
+ jmp word [cs:bx+05af7h] ; 2e ff a7 f7 5a ; 0xf5bb8
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5bbd disk.c:318
+ jnc short 05bcbh ; 73 08 ; 0xf5bc1
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5bc3 disk.c:320
+ xor ah, ah ; 30 e4 ; 0xf5bc6
+ call 01d71h ; e8 a6 c1 ; 0xf5bc8
+ jmp near 05dfeh ; e9 30 02 ; 0xf5bcb disk.c:321
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5bce disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5bd1
+ mov es, ax ; 8e c0 ; 0xf5bd4
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5bd6
+ mov al, dl ; 88 d0 ; 0xf5bd9 disk.c:326
+ xor ah, ah ; 30 e4 ; 0xf5bdb
+ sal ax, 008h ; c1 e0 08 ; 0xf5bdd
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf5be0
+ or bx, ax ; 09 c3 ; 0xf5be3
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5be5
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5be8 disk.c:53
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5beb
+ test dl, dl ; 84 d2 ; 0xf5bee disk.c:329
+ je short 05c57h ; 74 65 ; 0xf5bf0
+ jmp near 05f5bh ; e9 66 03 ; 0xf5bf2
+ jmp near 05f24h ; e9 2c 03 ; 0xf5bf5
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5bf8 disk.c:337
+ xor dh, dh ; 30 f6 ; 0xf5bfb
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf5bfd
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5c00 disk.c:338
+ shr di, 008h ; c1 ef 08 ; 0xf5c03
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5c06 disk.c:339
+ xor dh, dh ; 30 f6 ; 0xf5c09
+ sal dx, 002h ; c1 e2 02 ; 0xf5c0b
+ xor dl, dl ; 30 d2 ; 0xf5c0e
+ and dh, 003h ; 80 e6 03 ; 0xf5c10
+ or di, dx ; 09 d7 ; 0xf5c13
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5c15 disk.c:340
+ and dx, strict byte 0003fh ; 83 e2 3f ; 0xf5c18
+ mov word [bp-006h], dx ; 89 56 fa ; 0xf5c1b
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5c1e disk.c:341
+ shr dx, 008h ; c1 ea 08 ; 0xf5c21
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf5c24
+ cmp word [bp-00eh], 00080h ; 81 7e f2 80 00 ; 0xf5c27 disk.c:344
+ jnbe short 05c34h ; 77 06 ; 0xf5c2c
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xf5c2e
+ jne short 05c5ah ; 75 26 ; 0xf5c32
+ mov bx, 00ddch ; bb dc 0d ; 0xf5c34 disk.c:345
+ mov cx, ds ; 8c d9 ; 0xf5c37
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5c39
+ call 01910h ; e8 d1 bc ; 0xf5c3c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5c3f
+ shr ax, 008h ; c1 e8 08 ; 0xf5c42
+ push ax ; 50 ; 0xf5c45
+ push 006d4h ; 68 d4 06 ; 0xf5c46
+ push 00740h ; 68 40 07 ; 0xf5c49
+ push strict byte 00004h ; 6a 04 ; 0xf5c4c
+ call 01953h ; e8 02 bd ; 0xf5c4e
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf5c51
+ jmp near 05f3fh ; e9 e8 02 ; 0xf5c54 disk.c:346
+ jmp near 05e02h ; e9 a8 01 ; 0xf5c57
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf5c5a disk.c:350
+ xor dh, dh ; 30 f6 ; 0xf5c5d
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5c5f
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c62
+ mov bx, si ; 89 f3 ; 0xf5c65
+ add bx, dx ; 01 d3 ; 0xf5c67
+ mov dx, word [es:bx+028h] ; 26 8b 57 28 ; 0xf5c69
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf5c6d
+ mov cx, word [es:bx+026h] ; 26 8b 4f 26 ; 0xf5c70 disk.c:351
+ mov dx, word [es:bx+02ah] ; 26 8b 57 2a ; 0xf5c74 disk.c:352
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5c78
+ cmp di, word [bp-012h] ; 3b 7e ee ; 0xf5c7b disk.c:355
+ jnc short 05c8dh ; 73 0d ; 0xf5c7e
+ cmp cx, word [bp-008h] ; 3b 4e f8 ; 0xf5c80
+ jbe short 05c8dh ; 76 08 ; 0xf5c83
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf5c85
+ cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5c88
+ jbe short 05cbdh ; 76 30 ; 0xf5c8b
+ mov bx, 00ddch ; bb dc 0d ; 0xf5c8d disk.c:356
+ mov cx, ds ; 8c d9 ; 0xf5c90
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5c92
+ call 01910h ; e8 78 bc ; 0xf5c95
+ push word [bp-006h] ; ff 76 fa ; 0xf5c98
+ push word [bp-008h] ; ff 76 f8 ; 0xf5c9b
+ push di ; 57 ; 0xf5c9e
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5c9f
+ xor ah, ah ; 30 e4 ; 0xf5ca2
+ push ax ; 50 ; 0xf5ca4
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ca5
+ shr ax, 008h ; c1 e8 08 ; 0xf5ca8
+ push ax ; 50 ; 0xf5cab
+ push 006d4h ; 68 d4 06 ; 0xf5cac
+ push 00768h ; 68 68 07 ; 0xf5caf
+ push strict byte 00004h ; 6a 04 ; 0xf5cb2
+ call 01953h ; e8 9c bc ; 0xf5cb4
+ add sp, strict byte 00010h ; 83 c4 10 ; 0xf5cb7
+ jmp near 05f3fh ; e9 82 02 ; 0xf5cba disk.c:357
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5cbd disk.c:361
+ shr dx, 008h ; c1 ea 08 ; 0xf5cc0
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf5cc3
+ je short 05ce8h ; 74 20 ; 0xf5cc6
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf5cc8 disk.c:366
+ xor dh, dh ; 30 f6 ; 0xf5ccb
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5ccd
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5cd0
+ mov bx, si ; 89 f3 ; 0xf5cd3
+ add bx, dx ; 01 d3 ; 0xf5cd5
+ cmp cx, word [es:bx+02ch] ; 26 3b 4f 2c ; 0xf5cd7
+ jne short 05cf1h ; 75 14 ; 0xf5cdb
+ mov dx, word [es:bx+030h] ; 26 8b 57 30 ; 0xf5cdd
+ cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5ce1
+ je short 05cebh ; 74 05 ; 0xf5ce4
+ jmp short 05cf1h ; eb 09 ; 0xf5ce6
+ jmp near 05dfeh ; e9 13 01 ; 0xf5ce8
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5ceb
+ jc short 05d1eh ; 72 2d ; 0xf5cef
+ mov ax, di ; 89 f8 ; 0xf5cf1 disk.c:367
+ xor dx, dx ; 31 d2 ; 0xf5cf3
+ mov bx, cx ; 89 cb ; 0xf5cf5
+ xor cx, cx ; 31 c9 ; 0xf5cf7
+ call 0aa40h ; e8 44 4d ; 0xf5cf9
+ xor bx, bx ; 31 db ; 0xf5cfc
+ add ax, word [bp-008h] ; 03 46 f8 ; 0xf5cfe
+ adc dx, bx ; 11 da ; 0xf5d01
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5d03
+ xor cx, cx ; 31 c9 ; 0xf5d06
+ call 0aa40h ; e8 35 4d ; 0xf5d08
+ xor bx, bx ; 31 db ; 0xf5d0b
+ add ax, word [bp-006h] ; 03 46 fa ; 0xf5d0d
+ adc dx, bx ; 11 da ; 0xf5d10
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf5d12
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf5d15
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5d18
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf5d1b disk.c:368
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d1e disk.c:378
+ mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf5d21
+ mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf5d27 disk.c:379
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5d2d
+ mov word [es:si], ax ; 26 89 04 ; 0xf5d33 disk.c:382
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5d36
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5d39
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf5d3d
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf5d43
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5d49 disk.c:383
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5d4c
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5d4f
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5d53
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf5d57 disk.c:384
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf5d5a
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf5d5e disk.c:385
+ mov word [es:si+012h], di ; 26 89 7c 12 ; 0xf5d64 disk.c:386
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5d68 disk.c:387
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5d6b
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5d6f disk.c:388
+ mov word [es:si+016h], ax ; 26 89 44 16 ; 0xf5d72
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5d76 disk.c:389
+ mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5d79
+ xor ah, ah ; 30 e4 ; 0xf5d7d disk.c:391
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5d7f
+ mov bx, si ; 89 f3 ; 0xf5d82
+ add bx, ax ; 01 c3 ; 0xf5d84
+ mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf5d86
+ xor ah, ah ; 30 e4 ; 0xf5d8a
+ mov bx, ax ; 89 c3 ; 0xf5d8c
+ sal bx, 002h ; c1 e3 02 ; 0xf5d8e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5d91
+ shr ax, 008h ; c1 e8 08 ; 0xf5d94
+ add ax, ax ; 01 c0 ; 0xf5d97
+ add bx, ax ; 01 c3 ; 0xf5d99
+ push ES ; 06 ; 0xf5d9b
+ push si ; 56 ; 0xf5d9c
+ call word [word bx+0007eh] ; ff 97 7e 00 ; 0xf5d9d
+ mov dx, ax ; 89 c2 ; 0xf5da1
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5da3 disk.c:394
+ xor al, al ; 30 c0 ; 0xf5da6
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5da8
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf5dab
+ or bx, ax ; 09 c3 ; 0xf5daf
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5db1
+ test dl, dl ; 84 d2 ; 0xf5db4 disk.c:396
+ je short 05dfeh ; 74 46 ; 0xf5db6
+ mov bx, 00ddch ; bb dc 0d ; 0xf5db8 disk.c:397
+ mov cx, ds ; 8c d9 ; 0xf5dbb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5dbd
+ call 01910h ; e8 4d bb ; 0xf5dc0
+ mov al, dl ; 88 d0 ; 0xf5dc3
+ xor ah, ah ; 30 e4 ; 0xf5dc5
+ push ax ; 50 ; 0xf5dc7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5dc8
+ shr ax, 008h ; c1 e8 08 ; 0xf5dcb
+ push ax ; 50 ; 0xf5dce
+ push 006d4h ; 68 d4 06 ; 0xf5dcf
+ push 007afh ; 68 af 07 ; 0xf5dd2
+ push strict byte 00004h ; 6a 04 ; 0xf5dd5
+ call 01953h ; e8 79 bb ; 0xf5dd7
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5dda
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ddd disk.c:398
+ xor ah, ah ; 30 e4 ; 0xf5de0
+ or ah, 00ch ; 80 cc 0c ; 0xf5de2
+ jmp near 05f47h ; e9 5f 01 ; 0xf5de5 disk.c:399
+ mov bx, 00ddch ; bb dc 0d ; 0xf5de8 disk.c:406
+ mov cx, ds ; 8c d9 ; 0xf5deb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5ded
+ call 01910h ; e8 1d bb ; 0xf5df0
+ push 007d0h ; 68 d0 07 ; 0xf5df3
+ push strict byte 00004h ; 6a 04 ; 0xf5df6
+ call 01953h ; e8 58 bb ; 0xf5df8
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5dfb
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5dfe disk.c:407
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5e02
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5e05
+ mov es, ax ; 8e c0 ; 0xf5e08
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e0a
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5e0e
+ mov sp, bp ; 89 ec ; 0xf5e12
+ pop bp ; 5d ; 0xf5e14
+ retn ; c3 ; 0xf5e15
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5e16 disk.c:413
+ xor ah, ah ; 30 e4 ; 0xf5e19
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5e1b
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5e1e
+ mov di, si ; 89 f7 ; 0xf5e21
+ add di, ax ; 01 c7 ; 0xf5e23
+ mov ax, word [es:di+028h] ; 26 8b 45 28 ; 0xf5e25
+ mov cx, word [es:di+026h] ; 26 8b 4d 26 ; 0xf5e29 disk.c:414
+ mov dx, word [es:di+02ah] ; 26 8b 55 2a ; 0xf5e2d disk.c:415
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5e31
+ mov dl, byte [es:si+0024eh] ; 26 8a 94 4e 02 ; 0xf5e34 disk.c:417
+ xor dh, dh ; 30 f6 ; 0xf5e39
+ mov byte [bp+016h], dh ; 88 76 16 ; 0xf5e3b disk.c:423
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf5e3e disk.c:424
+ xor bh, bh ; 30 ff ; 0xf5e41
+ dec ax ; 48 ; 0xf5e43 disk.c:422
+ mov si, ax ; 89 c6 ; 0xf5e44
+ and si, 000ffh ; 81 e6 ff 00 ; 0xf5e46
+ sal si, 008h ; c1 e6 08 ; 0xf5e4a
+ or bx, si ; 09 f3 ; 0xf5e4d
+ mov word [bp+014h], bx ; 89 5e 14 ; 0xf5e4f
+ shr ax, 002h ; c1 e8 02 ; 0xf5e52 disk.c:425
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf5e55
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5e57
+ and bl, 03fh ; 80 e3 3f ; 0xf5e5a
+ or al, bl ; 08 d8 ; 0xf5e5d
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf5e5f
+ mov bl, al ; 88 c3 ; 0xf5e62
+ mov word [bp+014h], bx ; 89 5e 14 ; 0xf5e64
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5e67 disk.c:426
+ xor ah, ah ; 30 e4 ; 0xf5e6a
+ sal cx, 008h ; c1 e1 08 ; 0xf5e6c
+ sub cx, 00100h ; 81 e9 00 01 ; 0xf5e6f
+ or ax, cx ; 09 c8 ; 0xf5e73
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf5e75
+ mov al, dl ; 88 d0 ; 0xf5e78 disk.c:427
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf5e7a
+ jmp near 05dfeh ; e9 7e ff ; 0xf5e7d disk.c:432
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e80 disk.c:440
+ jc short 05e89h ; 72 03 ; 0xf5e84
+ jmp near 05dfeh ; e9 75 ff ; 0xf5e86
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5e89 disk.c:443
+ xor ah, ah ; 30 e4 ; 0xf5e8c
+ cwd ; 99 ; 0xf5e8e
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5e8f
+ sar ax, 1 ; d1 f8 ; 0xf5e91
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5e93
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5e96
+ add si, ax ; 01 c6 ; 0xf5e99
+ mov dx, word [es:si+0027ah] ; 26 8b 94 7a 02 ; 0xf5e9b
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf5ea0
+ in AL, DX ; ec ; 0xf5ea3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5ea4
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf5ea6 disk.c:444
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf5ea8
+ jne short 05eaeh ; 75 02 ; 0xf5eaa
+ jmp short 05e86h ; eb d8 ; 0xf5eac disk.c:445
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5eae disk.c:447
+ xor ah, ah ; 30 e4 ; 0xf5eb1
+ or ah, 0aah ; 80 cc aa ; 0xf5eb3
+ jmp near 05f47h ; e9 8e 00 ; 0xf5eb6
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5eb9 disk.c:459
+ xor ah, ah ; 30 e4 ; 0xf5ebc
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5ebe
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ec1
+ add si, ax ; 01 c6 ; 0xf5ec4
+ mov di, word [es:si+02eh] ; 26 8b 7c 2e ; 0xf5ec6
+ mov ax, word [es:si+02ch] ; 26 8b 44 2c ; 0xf5eca disk.c:460
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf5ece
+ mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf5ed1 disk.c:461
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf5ed5
+ mov ax, di ; 89 f8 ; 0xf5ed8 disk.c:464
+ xor dl, dl ; 30 d2 ; 0xf5eda
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5edc
+ xor cx, cx ; 31 c9 ; 0xf5edf
+ call 0aa40h ; e8 5c 4b ; 0xf5ee1
+ mov bx, word [bp-006h] ; 8b 5e fa ; 0xf5ee4
+ xor cx, cx ; 31 c9 ; 0xf5ee7
+ call 0aa40h ; e8 54 4b ; 0xf5ee9
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5eec
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf5eef disk.c:465
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf5ef2 disk.c:466
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5ef5 disk.c:468
+ or ah, 003h ; 80 cc 03 ; 0xf5ef8
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf5efb
+ jmp near 05e02h ; e9 01 ff ; 0xf5efe disk.c:469
+ mov bx, 00ddch ; bb dc 0d ; 0xf5f01 disk.c:477
+ mov cx, ds ; 8c d9 ; 0xf5f04
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f06
+ call 01910h ; e8 04 ba ; 0xf5f09
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f0c
+ shr ax, 008h ; c1 e8 08 ; 0xf5f0f
+ push ax ; 50 ; 0xf5f12
+ push 006d4h ; 68 d4 06 ; 0xf5f13
+ push 007eah ; 68 ea 07 ; 0xf5f16
+ push strict byte 00004h ; 6a 04 ; 0xf5f19
+ call 01953h ; e8 35 ba ; 0xf5f1b
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf5f1e
+ jmp near 05dfeh ; e9 da fe ; 0xf5f21 disk.c:478
+ mov bx, 00ddch ; bb dc 0d ; 0xf5f24 disk.c:485
+ mov cx, ds ; 8c d9 ; 0xf5f27
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f29
+ call 01910h ; e8 e1 b9 ; 0xf5f2c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f2f
+ shr ax, 008h ; c1 e8 08 ; 0xf5f32
+ push ax ; 50 ; 0xf5f35
+ push 006d4h ; 68 d4 06 ; 0xf5f36
+ push 0081dh ; 68 1d 08 ; 0xf5f39
+ jmp near 05c4ch ; e9 0d fd ; 0xf5f3c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f3f disk.c:491
+ xor ah, ah ; 30 e4 ; 0xf5f42
+ or ah, 001h ; 80 cc 01 ; 0xf5f44
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf5f47
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f4a disk.c:493
+ shr ax, 008h ; c1 e8 08 ; 0xf5f4d
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5f50 disk.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf5f53
+ mov es, dx ; 8e c2 ; 0xf5f56
+ mov byte [es:bx], al ; 26 88 07 ; 0xf5f58
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf5f5b disk.c:495
+ jmp near 05e12h ; e9 b0 fe ; 0xf5f5f disk.c:496
+ ; disGetNextSymbol 0xf5f62 LB 0x4e76 -> off=0x20 cb=0000000000000297 uValue=00000000000f4982 'int13_harddisk_ext'
+ db 010h, 060h, 043h, 060h, 043h, 060h, 043h, 060h, 001h, 062h, 0a7h, 061h, 043h, 060h, 0afh, 061h
+ db 001h, 062h, 028h, 060h, 028h, 060h, 028h, 060h, 028h, 060h, 0c9h, 061h, 028h, 060h, 028h, 060h
+int13_harddisk_ext: ; 0xf5f82 LB 0x297
+ push bp ; 55 ; 0xf5f82 disk.c:506
+ mov bp, sp ; 89 e5 ; 0xf5f83
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf5f85
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5f88 disk.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5f8b
+ mov es, ax ; 8e c0 ; 0xf5f8e
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5f90
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf5f93 disk.c:59
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf5f96
+ mov bx, 0008eh ; bb 8e 00 ; 0xf5f99 disk.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5f9c
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5fa0 disk.c:530
+ xor ah, ah ; 30 e4 ; 0xf5fa3
+ cmp ax, 00080h ; 3d 80 00 ; 0xf5fa5
+ jc short 05fafh ; 72 05 ; 0xf5fa8
+ cmp ax, 00094h ; 3d 94 00 ; 0xf5faa
+ jc short 05fcdh ; 72 1e ; 0xf5fad
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5faf disk.c:531
+ xor ah, ah ; 30 e4 ; 0xf5fb2
+ push ax ; 50 ; 0xf5fb4
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5fb5
+ shr ax, 008h ; c1 e8 08 ; 0xf5fb8
+ push ax ; 50 ; 0xf5fbb
+ push 0084bh ; 68 4b 08 ; 0xf5fbc
+ push 006e3h ; 68 e3 06 ; 0xf5fbf
+ push strict byte 00004h ; 6a 04 ; 0xf5fc2
+ call 01953h ; e8 8c b9 ; 0xf5fc4
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5fc7
+ jmp near 061dfh ; e9 12 02 ; 0xf5fca disk.c:532
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5fcd disk.c:536
+ xor ah, ah ; 30 e4 ; 0xf5fd0
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5fd2
+ mov bx, di ; 89 fb ; 0xf5fd5
+ add bx, ax ; 01 c3 ; 0xf5fd7
+ mov dl, byte [es:bx+001cfh] ; 26 8a 97 cf 01 ; 0xf5fd9
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf5fde
+ cmp dl, 014h ; 80 fa 14 ; 0xf5fe1 disk.c:539
+ jc short 05ff6h ; 72 10 ; 0xf5fe4
+ push ax ; 50 ; 0xf5fe6 disk.c:540
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5fe7
+ shr ax, 008h ; c1 e8 08 ; 0xf5fea
+ push ax ; 50 ; 0xf5fed
+ push 0084bh ; 68 4b 08 ; 0xf5fee
+ push 0070eh ; 68 0e 07 ; 0xf5ff1
+ jmp short 05fc2h ; eb cc ; 0xf5ff4
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5ff6 disk.c:544
+ shr bx, 008h ; c1 eb 08 ; 0xf5ff9
+ sub bx, strict byte 00041h ; 83 eb 41 ; 0xf5ffc
+ cmp bx, strict byte 0000fh ; 83 fb 0f ; 0xf5fff
+ jnbe short 06028h ; 77 24 ; 0xf6002
+ add bx, bx ; 01 db ; 0xf6004
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf6006
+ xor ch, ch ; 30 ed ; 0xf6009
+ jmp word [cs:bx+05f62h] ; 2e ff a7 62 5f ; 0xf600b
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf6010 disk.c:546
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6015 disk.c:547
+ xor ah, ah ; 30 e4 ; 0xf6018
+ or ah, 030h ; 80 cc 30 ; 0xf601a
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf601d
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf6020 disk.c:548
+ jmp near 06205h ; e9 dd 01 ; 0xf6025 disk.c:549
+ mov bx, 00ddch ; bb dc 0d ; 0xf6028
+ mov cx, ds ; 8c d9 ; 0xf602b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf602d
+ call 01910h ; e8 dd b8 ; 0xf6030
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6033
+ shr ax, 008h ; c1 e8 08 ; 0xf6036
+ push ax ; 50 ; 0xf6039
+ push 0084bh ; 68 4b 08 ; 0xf603a
+ push 0081dh ; 68 1d 08 ; 0xf603d
+ jmp near 060e0h ; e9 9d 00 ; 0xf6040
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6043 disk.c:558
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf6046
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf6049
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf604c
+ mov [bp-012h], es ; 8c 46 ee ; 0xf604f
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf6052 disk.c:560
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf6056
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf6059 disk.c:561
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf605d
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf6060 disk.c:562
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf6064
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf6067 disk.c:565
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf606b
+ xor ax, ax ; 31 c0 ; 0xf606f disk.c:566
+ xor bx, bx ; 31 db ; 0xf6071
+ mov si, strict word 00020h ; be 20 00 ; 0xf6073
+ call 0aaa0h ; e8 27 4a ; 0xf6076
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6079
+ mov si, bx ; 89 de ; 0xf607c
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf607e disk.c:567
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf6081
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf6085
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf6088
+ or dx, word [bp-016h] ; 0b 56 ea ; 0xf608c
+ or cx, ax ; 09 c1 ; 0xf608f
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf6091 disk.c:572
+ xor ah, ah ; 30 e4 ; 0xf6094
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf6096
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6099
+ mov bx, di ; 89 fb ; 0xf609c
+ add bx, ax ; 01 c3 ; 0xf609e
+ mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf60a0
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf60a4
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf60a7 disk.c:573
+ cmp ax, word [es:bx+038h] ; 26 3b 47 38 ; 0xf60aa
+ jnbe short 060c8h ; 77 18 ; 0xf60ae
+ jne short 060ebh ; 75 39 ; 0xf60b0
+ cmp si, word [es:bx+036h] ; 26 3b 77 36 ; 0xf60b2
+ jnbe short 060c8h ; 77 10 ; 0xf60b6
+ jne short 060ebh ; 75 31 ; 0xf60b8
+ cmp cx, word [es:bx+034h] ; 26 3b 4f 34 ; 0xf60ba
+ jnbe short 060c8h ; 77 08 ; 0xf60be
+ jne short 060ebh ; 75 29 ; 0xf60c0
+ cmp dx, word [es:bx+032h] ; 26 3b 57 32 ; 0xf60c2
+ jc short 060ebh ; 72 23 ; 0xf60c6
+ mov bx, 00ddch ; bb dc 0d ; 0xf60c8 disk.c:574
+ mov cx, ds ; 8c d9 ; 0xf60cb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf60cd
+ call 01910h ; e8 3d b8 ; 0xf60d0
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60d3
+ shr ax, 008h ; c1 e8 08 ; 0xf60d6
+ push ax ; 50 ; 0xf60d9
+ push 0084bh ; 68 4b 08 ; 0xf60da
+ push 0085eh ; 68 5e 08 ; 0xf60dd
+ push strict byte 00004h ; 6a 04 ; 0xf60e0
+ call 01953h ; e8 6e b8 ; 0xf60e2
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf60e5
+ jmp near 061dfh ; e9 f4 00 ; 0xf60e8 disk.c:575
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60eb disk.c:579
+ shr ax, 008h ; c1 e8 08 ; 0xf60ee
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf60f1
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf60f4
+ je short 060feh ; 74 05 ; 0xf60f7
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf60f9
+ jne short 06101h ; 75 03 ; 0xf60fc
+ jmp near 06201h ; e9 00 01 ; 0xf60fe disk.c:580
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6101 disk.c:583
+ mov word [es:di+018h], strict word 00000h ; 26 c7 45 18 00 00 ; 0xf6104
+ mov word [es:di+01ah], strict word 00000h ; 26 c7 45 1a 00 00 ; 0xf610a disk.c:584
+ mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf6110
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6116 disk.c:587
+ mov word [es:di+006h], ax ; 26 89 45 06 ; 0xf6119
+ mov word [es:di+004h], si ; 26 89 75 04 ; 0xf611d
+ mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf6121
+ mov word [es:di], dx ; 26 89 15 ; 0xf6125
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf6128 disk.c:588
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf612b
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf612f
+ mov word [es:di+00ah], ax ; 26 89 45 0a ; 0xf6132
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf6136 disk.c:589
+ mov word [es:di+00eh], ax ; 26 89 45 0e ; 0xf6139
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf613d disk.c:590
+ mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf6143 disk.c:591
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf6149 disk.c:592
+ mov byte [es:di+00ch], al ; 26 88 45 0c ; 0xf614c
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf6150 disk.c:595
+ add bx, bx ; 01 db ; 0xf6153
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6155
+ xor ah, ah ; 30 e4 ; 0xf6158
+ sal ax, 002h ; c1 e0 02 ; 0xf615a
+ add bx, ax ; 01 c3 ; 0xf615d
+ push ES ; 06 ; 0xf615f
+ push di ; 57 ; 0xf6160
+ call word [word bx-00002h] ; ff 97 fe ff ; 0xf6161
+ mov dx, ax ; 89 c2 ; 0xf6165
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6167 disk.c:596
+ mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf616a
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf616e
+ les bx, [bp-014h] ; c4 5e ec ; 0xf6171 disk.c:597
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6174
+ test dl, dl ; 84 d2 ; 0xf6178 disk.c:599
+ je short 060feh ; 74 82 ; 0xf617a
+ mov bx, 00ddch ; bb dc 0d ; 0xf617c disk.c:600
+ mov cx, ds ; 8c d9 ; 0xf617f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6181
+ call 01910h ; e8 89 b7 ; 0xf6184
+ mov al, dl ; 88 d0 ; 0xf6187
+ xor ah, ah ; 30 e4 ; 0xf6189
+ push ax ; 50 ; 0xf618b
+ push word [bp-00ah] ; ff 76 f6 ; 0xf618c
+ push 0084bh ; 68 4b 08 ; 0xf618f
+ push 007afh ; 68 af 07 ; 0xf6192
+ push strict byte 00004h ; 6a 04 ; 0xf6195
+ call 01953h ; e8 b9 b7 ; 0xf6197
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf619a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf619d disk.c:601
+ xor ah, ah ; 30 e4 ; 0xf61a0
+ or ah, 00ch ; 80 cc 0c ; 0xf61a2
+ jmp short 061e7h ; eb 40 ; 0xf61a5 disk.c:602
+ or ch, 0b2h ; 80 cd b2 ; 0xf61a7 disk.c:614
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf61aa
+ jmp short 061eah ; eb 3b ; 0xf61ad disk.c:615
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf61af disk.c:619
+ xor ah, ah ; 30 e4 ; 0xf61b2
+ push ax ; 50 ; 0xf61b4
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf61b5
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf61b8
+ mov bx, di ; 89 fb ; 0xf61bb
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf61bd
+ call 057fbh ; e8 38 f6 ; 0xf61c0
+ test ax, ax ; 85 c0 ; 0xf61c3
+ je short 06201h ; 74 3a ; 0xf61c5
+ jmp short 061dfh ; eb 16 ; 0xf61c7 disk.c:620
+ cmp cx, strict byte 00006h ; 83 f9 06 ; 0xf61c9 disk.c:627
+ je short 06201h ; 74 33 ; 0xf61cc
+ cmp cx, strict byte 00001h ; 83 f9 01 ; 0xf61ce
+ jc short 061dfh ; 72 0c ; 0xf61d1
+ jbe short 06201h ; 76 2c ; 0xf61d3
+ cmp cx, strict byte 00003h ; 83 f9 03 ; 0xf61d5
+ jc short 061dfh ; 72 05 ; 0xf61d8
+ cmp cx, strict byte 00004h ; 83 f9 04 ; 0xf61da
+ jbe short 06201h ; 76 22 ; 0xf61dd
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61df disk.c:647
+ xor ah, ah ; 30 e4 ; 0xf61e2
+ or ah, 001h ; 80 cc 01 ; 0xf61e4
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf61e7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61ea disk.c:649
+ shr ax, 008h ; c1 e8 08 ; 0xf61ed
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf61f0 disk.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf61f3
+ mov es, dx ; 8e c2 ; 0xf61f6
+ mov byte [es:bx], al ; 26 88 07 ; 0xf61f8
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf61fb disk.c:650
+ jmp short 06215h ; eb 14 ; 0xf61ff disk.c:651
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6201 disk.c:654
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf6205 disk.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6208
+ mov es, ax ; 8e c0 ; 0xf620b
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf620d
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6211 disk.c:657
+ mov sp, bp ; 89 ec ; 0xf6215 disk.c:659
+ pop bp ; 5d ; 0xf6217
+ retn ; c3 ; 0xf6218
+ ; disGetNextSymbol 0xf6219 LB 0x4bbf -> off=0x0 cb=0000000000000153 uValue=00000000000f4c19 'int14_function'
+int14_function: ; 0xf6219 LB 0x153
+ push bp ; 55 ; 0xf6219 serial.c:70
+ mov bp, sp ; 89 e5 ; 0xf621a
+ push si ; 56 ; 0xf621c
+ push di ; 57 ; 0xf621d
+ sti ; fb ; 0xf621e serial.c:75
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf621f serial.c:77
+ add si, si ; 01 f6 ; 0xf6222
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6224 serial.c:58
+ mov es, ax ; 8e c0 ; 0xf6227
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6229
+ mov bx, si ; 89 f3 ; 0xf622c serial.c:59
+ mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf622e serial.c:78
+ add di, strict byte 0007ch ; 83 c7 7c ; 0xf6231
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf6234 serial.c:48
+ cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf6237 serial.c:79
+ jnc short 06241h ; 73 04 ; 0xf623b
+ test si, si ; 85 f6 ; 0xf623d
+ jnbe short 06244h ; 77 03 ; 0xf623f
+ jmp near 06361h ; e9 1d 01 ; 0xf6241
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6244 serial.c:80
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf6247
+ jc short 06258h ; 72 0d ; 0xf6249
+ jbe short 062b8h ; 76 6b ; 0xf624b
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf624d
+ je short 062b0h ; 74 5f ; 0xf624f
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf6251
+ je short 062b3h ; 74 5e ; 0xf6253
+ jmp near 0635bh ; e9 03 01 ; 0xf6255
+ test al, al ; 84 c0 ; 0xf6258
+ jne short 062b5h ; 75 59 ; 0xf625a
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf625c serial.c:82
+ in AL, DX ; ec ; 0xf625f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6260
+ or AL, strict byte 080h ; 0c 80 ; 0xf6262
+ out DX, AL ; ee ; 0xf6264
+ lea si, [bx+001h] ; 8d 77 01 ; 0xf6265
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6268 serial.c:83
+ test AL, strict byte 0e0h ; a8 e0 ; 0xf626b
+ jne short 0627bh ; 75 0c ; 0xf626d
+ mov AL, strict byte 017h ; b0 17 ; 0xf626f serial.c:84
+ mov dx, bx ; 89 da ; 0xf6271
+ out DX, AL ; ee ; 0xf6273
+ mov AL, strict byte 004h ; b0 04 ; 0xf6274 serial.c:85
+ mov dx, si ; 89 f2 ; 0xf6276
+ out DX, AL ; ee ; 0xf6278
+ jmp short 06292h ; eb 17 ; 0xf6279 serial.c:86
+ and AL, strict byte 0e0h ; 24 e0 ; 0xf627b serial.c:87
+ xor ah, ah ; 30 e4 ; 0xf627d
+ sar ax, 005h ; c1 f8 05 ; 0xf627f
+ mov cl, al ; 88 c1 ; 0xf6282
+ mov ax, 00600h ; b8 00 06 ; 0xf6284
+ sar ax, CL ; d3 f8 ; 0xf6287
+ mov dx, bx ; 89 da ; 0xf6289
+ out DX, AL ; ee ; 0xf628b
+ shr ax, 008h ; c1 e8 08 ; 0xf628c serial.c:89
+ mov dx, si ; 89 f2 ; 0xf628f
+ out DX, AL ; ee ; 0xf6291
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6292 serial.c:91
+ and AL, strict byte 01fh ; 24 1f ; 0xf6295
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf6297
+ out DX, AL ; ee ; 0xf629a
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf629b serial.c:92
+ in AL, DX ; ec ; 0xf629e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf629f
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf62a1
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf62a4 serial.c:93
+ in AL, DX ; ec ; 0xf62a7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf62a8
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf62aa
+ jmp near 0633ch ; e9 8c 00 ; 0xf62ad
+ jmp near 0634ah ; e9 97 00 ; 0xf62b0
+ jmp short 06303h ; eb 4e ; 0xf62b3
+ jmp near 0635bh ; e9 a3 00 ; 0xf62b5
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf62b8 serial.c:58
+ mov si, word [es:si] ; 26 8b 34 ; 0xf62bb
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf62be serial.c:98
+ in AL, DX ; ec ; 0xf62c1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf62c2
+ and ax, strict word 00060h ; 25 60 00 ; 0xf62c4
+ cmp ax, strict word 00060h ; 3d 60 00 ; 0xf62c7
+ je short 062e5h ; 74 19 ; 0xf62ca
+ test cl, cl ; 84 c9 ; 0xf62cc
+ je short 062e5h ; 74 15 ; 0xf62ce
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf62d0 serial.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf62d3
+ mov es, ax ; 8e c0 ; 0xf62d6
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf62d8
+ cmp ax, si ; 39 f0 ; 0xf62db serial.c:100
+ je short 062beh ; 74 df ; 0xf62dd
+ mov si, ax ; 89 c6 ; 0xf62df serial.c:101
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf62e1 serial.c:102
+ jmp short 062beh ; eb d9 ; 0xf62e3 serial.c:104
+ test cl, cl ; 84 c9 ; 0xf62e5 serial.c:105
+ je short 062efh ; 74 06 ; 0xf62e7
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf62e9
+ mov dx, bx ; 89 da ; 0xf62ec
+ out DX, AL ; ee ; 0xf62ee
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf62ef serial.c:106
+ in AL, DX ; ec ; 0xf62f2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf62f3
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf62f5
+ test cl, cl ; 84 c9 ; 0xf62f8 serial.c:107
+ jne short 0633ch ; 75 40 ; 0xf62fa
+ or AL, strict byte 080h ; 0c 80 ; 0xf62fc
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf62fe
+ jmp short 0633ch ; eb 39 ; 0xf6301
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf6303 serial.c:58
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6306
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6309 serial.c:112
+ in AL, DX ; ec ; 0xf630c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf630d
+ test AL, strict byte 001h ; a8 01 ; 0xf630f
+ jne short 0632ch ; 75 19 ; 0xf6311
+ test cl, cl ; 84 c9 ; 0xf6313
+ je short 0632ch ; 74 15 ; 0xf6315
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf6317 serial.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf631a
+ mov es, ax ; 8e c0 ; 0xf631d
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf631f
+ cmp ax, si ; 39 f0 ; 0xf6322 serial.c:114
+ je short 06309h ; 74 e3 ; 0xf6324
+ mov si, ax ; 89 c6 ; 0xf6326 serial.c:115
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf6328 serial.c:116
+ jmp short 06309h ; eb dd ; 0xf632a serial.c:118
+ test cl, cl ; 84 c9 ; 0xf632c serial.c:119
+ je short 06342h ; 74 12 ; 0xf632e
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6330 serial.c:120
+ mov dx, bx ; 89 da ; 0xf6334 serial.c:121
+ in AL, DX ; ec ; 0xf6336
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6337
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6339
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf633c serial.c:122
+ jmp short 06365h ; eb 23 ; 0xf6340
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6342 serial.c:123
+ in AL, DX ; ec ; 0xf6345
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6346
+ jmp short 062feh ; eb b4 ; 0xf6348
+ lea dx, [si+005h] ; 8d 54 05 ; 0xf634a serial.c:128
+ in AL, DX ; ec ; 0xf634d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf634e
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6350
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf6353 serial.c:129
+ in AL, DX ; ec ; 0xf6356
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6357
+ jmp short 06339h ; eb de ; 0xf6359
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf635b serial.c:133
+ jmp short 06365h ; eb 04 ; 0xf635f serial.c:135
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6361 serial.c:136
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6365 serial.c:138
+ pop di ; 5f ; 0xf6368
+ pop si ; 5e ; 0xf6369
+ pop bp ; 5d ; 0xf636a
+ retn ; c3 ; 0xf636b
+ ; disGetNextSymbol 0xf636c LB 0x4a6c -> off=0x0 cb=0000000000000030 uValue=00000000000f4d6c 'set_enable_a20'
+set_enable_a20: ; 0xf636c LB 0x30
+ push bp ; 55 ; 0xf636c system.c:298
+ mov bp, sp ; 89 e5 ; 0xf636d
+ push bx ; 53 ; 0xf636f
+ push cx ; 51 ; 0xf6370
+ push dx ; 52 ; 0xf6371
+ mov bx, ax ; 89 c3 ; 0xf6372
+ mov dx, 00092h ; ba 92 00 ; 0xf6374 system.c:305
+ in AL, DX ; ec ; 0xf6377
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6378
+ mov cl, al ; 88 c1 ; 0xf637a
+ test bx, bx ; 85 db ; 0xf637c system.c:308
+ je short 06385h ; 74 05 ; 0xf637e
+ or AL, strict byte 002h ; 0c 02 ; 0xf6380 system.c:309
+ out DX, AL ; ee ; 0xf6382
+ jmp short 06388h ; eb 03 ; 0xf6383 system.c:310
+ and AL, strict byte 0fdh ; 24 fd ; 0xf6385 system.c:311
+ out DX, AL ; ee ; 0xf6387
+ test cl, 002h ; f6 c1 02 ; 0xf6388 system.c:313
+ je short 06392h ; 74 05 ; 0xf638b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf638d
+ jmp short 06394h ; eb 02 ; 0xf6390
+ xor ax, ax ; 31 c0 ; 0xf6392
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf6394 system.c:314
+ pop dx ; 5a ; 0xf6397
+ pop cx ; 59 ; 0xf6398
+ pop bx ; 5b ; 0xf6399
+ pop bp ; 5d ; 0xf639a
+ retn ; c3 ; 0xf639b
+ ; disGetNextSymbol 0xf639c LB 0x4a3c -> off=0x3b cb=000000000000034f uValue=00000000000f4dd7 'int15_function'
+ db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h
+ db 024h, 022h, 000h, 007h, 067h, 012h, 064h, 0a2h, 066h, 026h, 064h, 0a2h, 066h, 000h, 067h, 06ah
+ db 064h, 0a0h, 064h, 03fh, 065h, 0afh, 065h, 0c4h, 065h, 038h, 065h, 038h, 065h, 08ch, 066h, 0b4h
+ db 066h, 0c7h, 066h, 0a2h, 066h, 0dbh, 066h, 0e2h, 066h, 0e8h, 066h
+int15_function: ; 0xf63d7 LB 0x34f
+ push bp ; 55 ; 0xf63d7 system.c:335
+ mov bp, sp ; 89 e5 ; 0xf63d8
+ push si ; 56 ; 0xf63da
+ push di ; 57 ; 0xf63db
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf63dc system.c:342
+ shr ax, 008h ; c1 e8 08 ; 0xf63df
+ cmp ax, 000ech ; 3d ec 00 ; 0xf63e2
+ jnbe short 0641ch ; 77 35 ; 0xf63e5
+ push CS ; 0e ; 0xf63e7
+ pop ES ; 07 ; 0xf63e8
+ mov cx, strict word 00014h ; b9 14 00 ; 0xf63e9
+ mov di, 0639ch ; bf 9c 63 ; 0xf63ec
+ repne scasb ; f2 ae ; 0xf63ef
+ sal cx, 1 ; d1 e1 ; 0xf63f1
+ mov di, cx ; 89 cf ; 0xf63f3
+ mov bx, word [cs:di+063afh] ; 2e 8b 9d af 63 ; 0xf63f5
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf63fa
+ xor ah, ah ; 30 e4 ; 0xf63fd
+ mov cx, word [bp+018h] ; 8b 4e 18 ; 0xf63ff
+ and cl, 0feh ; 80 e1 fe ; 0xf6402
+ mov si, word [bp+018h] ; 8b 76 18 ; 0xf6405
+ or si, strict byte 00001h ; 83 ce 01 ; 0xf6408
+ mov dx, ax ; 89 c2 ; 0xf640b
+ or dh, 086h ; 80 ce 86 ; 0xf640d
+ jmp bx ; ff e3 ; 0xf6410
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6412 system.c:344
+ xor ah, ah ; 30 e4 ; 0xf6415
+ cmp ax, 000c0h ; 3d c0 00 ; 0xf6417
+ je short 0641fh ; 74 03 ; 0xf641a
+ jmp near 06707h ; e9 e8 02 ; 0xf641c system.c:345
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf641f system.c:351
+ jmp near 066abh ; e9 85 02 ; 0xf6423
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6426 system.c:355
+ xor ah, ah ; 30 e4 ; 0xf6429
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf642b
+ jc short 0643eh ; 72 0e ; 0xf642e
+ jbe short 06452h ; 76 20 ; 0xf6430
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6432
+ je short 06474h ; 74 3d ; 0xf6435
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf6437
+ je short 06457h ; 74 1b ; 0xf643a
+ jmp short 06481h ; eb 43 ; 0xf643c
+ test ax, ax ; 85 c0 ; 0xf643e
+ jne short 06481h ; 75 3f ; 0xf6440
+ xor ax, ax ; 31 c0 ; 0xf6442 system.c:357
+ call 0636ch ; e8 25 ff ; 0xf6444
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6447 system.c:358
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf644b system.c:359
+ jmp near 06538h ; e9 e6 00 ; 0xf644f system.c:360
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6452 system.c:362
+ jmp short 06444h ; eb ed ; 0xf6455
+ mov dx, 00092h ; ba 92 00 ; 0xf6457 system.c:367
+ in AL, DX ; ec ; 0xf645a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf645b
+ shr ax, 1 ; d1 e8 ; 0xf645d
+ and ax, strict word 00001h ; 25 01 00 ; 0xf645f
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf6462
+ mov dl, al ; 88 c2 ; 0xf6465
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6467
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf646a system.c:368
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf646e system.c:369
+ jmp near 06538h ; e9 c4 00 ; 0xf6471 system.c:370
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6474 system.c:372
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf6478 system.c:373
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf647b system.c:374
+ jmp near 06538h ; e9 b7 00 ; 0xf647e system.c:375
+ mov bx, 00ddch ; bb dc 0d ; 0xf6481 system.c:377
+ mov cx, ds ; 8c d9 ; 0xf6484
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6486
+ call 01910h ; e8 84 b4 ; 0xf6489
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf648c
+ xor ah, ah ; 30 e4 ; 0xf648f
+ push ax ; 50 ; 0xf6491
+ push 00884h ; 68 84 08 ; 0xf6492
+ push strict byte 00004h ; 6a 04 ; 0xf6495
+ call 01953h ; e8 b9 b4 ; 0xf6497
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf649a
+ jmp near 066a2h ; e9 02 02 ; 0xf649d
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf64a0 system.c:409
+ jne short 06507h ; 75 61 ; 0xf64a4
+ mov bx, 000a0h ; bb a0 00 ; 0xf64a6 system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf64a9
+ mov es, ax ; 8e c0 ; 0xf64ac
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf64ae
+ test AL, strict byte 001h ; a8 01 ; 0xf64b1 system.c:49
+ jne short 06501h ; 75 4c ; 0xf64b3
+ mov DL, strict byte 001h ; b2 01 ; 0xf64b5 system.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf64b7 system.c:53
+ mov bx, 00098h ; bb 98 00 ; 0xf64ba system.c:61
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf64bd
+ mov word [es:bx], dx ; 26 89 17 ; 0xf64c0 system.c:63
+ mov bx, 0009ah ; bb 9a 00 ; 0xf64c3 system.c:61
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf64c6
+ mov word [es:bx], ax ; 26 89 07 ; 0xf64c9 system.c:63
+ mov bx, 0009ch ; bb 9c 00 ; 0xf64cc system.c:61
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf64cf
+ mov word [es:bx], ax ; 26 89 07 ; 0xf64d2 system.c:63
+ mov bx, 0009eh ; bb 9e 00 ; 0xf64d5 system.c:61
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf64d8
+ mov word [es:bx], ax ; 26 89 07 ; 0xf64db system.c:63
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf64de system.c:418
+ mov dx, 000a1h ; ba a1 00 ; 0xf64e2 system.c:420
+ in AL, DX ; ec ; 0xf64e5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64e6
+ and AL, strict byte 0feh ; 24 fe ; 0xf64e8 system.c:421
+ out DX, AL ; ee ; 0xf64ea
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf64eb system.c:422
+ call 01664h ; e8 73 b1 ; 0xf64ee
+ mov dl, al ; 88 c2 ; 0xf64f1 system.c:424
+ or dl, 040h ; 80 ca 40 ; 0xf64f3
+ xor dh, dh ; 30 f6 ; 0xf64f6
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf64f8
+ call 0167fh ; e8 81 b1 ; 0xf64fb
+ jmp near 06538h ; e9 37 00 ; 0xf64fe system.c:425
+ mov word [bp+018h], si ; 89 76 18 ; 0xf6501 system.c:428
+ jmp near 06538h ; e9 31 00 ; 0xf6504 system.c:430
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6507
+ jne short 06529h ; 75 1d ; 0xf650a
+ mov bx, 000a0h ; bb a0 00 ; 0xf650c system.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf650f
+ mov es, ax ; 8e c0 ; 0xf6512
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6514
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6518 system.c:433
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf651c system.c:434
+ call 01664h ; e8 42 b1 ; 0xf651f
+ mov dl, al ; 88 c2 ; 0xf6522 system.c:435
+ and dl, 0bfh ; 80 e2 bf ; 0xf6524
+ jmp short 064f6h ; eb cd ; 0xf6527
+ mov word [bp+018h], si ; 89 76 18 ; 0xf6529 system.c:438
+ mov ax, dx ; 89 d0 ; 0xf652c system.c:440
+ xor ah, dh ; 30 f4 ; 0xf652e
+ xor dl, dl ; 30 d2 ; 0xf6530
+ dec ax ; 48 ; 0xf6532
+ or dx, ax ; 09 c2 ; 0xf6533
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6535
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6538 system.c:443
+ pop di ; 5f ; 0xf653b
+ pop si ; 5e ; 0xf653c
+ pop bp ; 5d ; 0xf653d
+ retn ; c3 ; 0xf653e
+ mov bx, 000a0h ; bb a0 00 ; 0xf653f system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6542
+ mov es, ax ; 8e c0 ; 0xf6545
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6547
+ test AL, strict byte 001h ; a8 01 ; 0xf654a system.c:49
+ jne short 065a9h ; 75 5b ; 0xf654c
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf654e system.c:53
+ mov bx, 00098h ; bb 98 00 ; 0xf6552 system.c:63
+ mov [es:bx], es ; 26 8c 07 ; 0xf6555
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6558 system.c:63
+ mov word [es:bx], 000a0h ; 26 c7 07 a0 00 ; 0xf655b
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6560 system.c:61
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6563 system.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6566
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6569 system.c:61
+ mov bx, 0009eh ; bb 9e 00 ; 0xf656c system.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf656f
+ mov dx, 000a1h ; ba a1 00 ; 0xf6572 system.c:456
+ in AL, DX ; ec ; 0xf6575
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6576
+ and AL, strict byte 0feh ; 24 fe ; 0xf6578 system.c:457
+ out DX, AL ; ee ; 0xf657a
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf657b system.c:458
+ call 01664h ; e8 e3 b0 ; 0xf657e
+ mov dl, al ; 88 c2 ; 0xf6581 system.c:460
+ or dl, 040h ; 80 ca 40 ; 0xf6583
+ xor dh, dh ; 30 f6 ; 0xf6586
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6588
+ call 0167fh ; e8 f1 b0 ; 0xf658b
+ sti ; fb ; 0xf658e system.c:462
+ hlt ; f4 ; 0xf658f system.c:464
+ mov bx, 000a0h ; bb a0 00 ; 0xf6590 system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6593
+ mov es, ax ; 8e c0 ; 0xf6596
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6598
+ test AL, strict byte 080h ; a8 80 ; 0xf659b system.c:467
+ je short 0658fh ; 74 f0 ; 0xf659d
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf659f system.c:53
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65a3 system.c:469
+ jmp short 06538h ; eb 8f ; 0xf65a7 system.c:470
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf65a9 system.c:473
+ jmp short 06538h ; eb 89 ; 0xf65ad system.c:475
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf65af system.c:480
+ call 0169ch ; e8 e7 b0 ; 0xf65b2
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf65b5
+ cmp ax, 03c00h ; 3d 00 3c ; 0xf65b8 system.c:491
+ jbe short 065a3h ; 76 e6 ; 0xf65bb
+ mov word [bp+012h], 03c00h ; c7 46 12 00 3c ; 0xf65bd system.c:492
+ jmp short 065a3h ; eb df ; 0xf65c2
+ cli ; fa ; 0xf65c4 system.c:509
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf65c5 system.c:511
+ call 0636ch ; e8 a1 fd ; 0xf65c8
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf65cb system.c:514
+ add bx, strict byte 00038h ; 83 c3 38 ; 0xf65ce
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf65d1 system.c:61
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf65d4 system.c:63
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf65d9 system.c:515
+ add bx, strict byte 0003ah ; 83 c3 3a ; 0xf65dc
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf65df system.c:61
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf65e2 system.c:63
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf65e7 system.c:516
+ add bx, strict byte 0003ch ; 83 c3 3c ; 0xf65ea
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf65ed system.c:51
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf65f0
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf65f4 system.c:517
+ add bx, strict byte 0003dh ; 83 c3 3d ; 0xf65f7
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf65fa system.c:51
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf65fd
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6601 system.c:518
+ add bx, strict byte 0003eh ; 83 c3 3e ; 0xf6604
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6607 system.c:61
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf660a
+ mov AL, strict byte 011h ; b0 11 ; 0xf660f system.c:521
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf6611
+ out DX, AL ; ee ; 0xf6614
+ mov dx, 000a0h ; ba a0 00 ; 0xf6615 system.c:522
+ out DX, AL ; ee ; 0xf6618
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6619 system.c:523
+ shr ax, 008h ; c1 e8 08 ; 0xf661c
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf661f
+ out DX, AL ; ee ; 0xf6622
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6623 system.c:524
+ mov dx, 000a1h ; ba a1 00 ; 0xf6626
+ out DX, AL ; ee ; 0xf6629
+ mov AL, strict byte 004h ; b0 04 ; 0xf662a system.c:525
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf662c
+ out DX, AL ; ee ; 0xf662f
+ mov AL, strict byte 002h ; b0 02 ; 0xf6630 system.c:526
+ mov dx, 000a1h ; ba a1 00 ; 0xf6632
+ out DX, AL ; ee ; 0xf6635
+ mov AL, strict byte 001h ; b0 01 ; 0xf6636 system.c:527
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6638
+ out DX, AL ; ee ; 0xf663b
+ mov dx, 000a1h ; ba a1 00 ; 0xf663c system.c:528
+ out DX, AL ; ee ; 0xf663f
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf6640 system.c:530
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6642
+ out DX, AL ; ee ; 0xf6645
+ mov dx, 000a1h ; ba a1 00 ; 0xf6646 system.c:531
+ out DX, AL ; ee ; 0xf6649
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf664a system.c:533
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf664d
+ lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf6652
+ push strict byte 00038h ; 6a 38 ; 0xf6657
+ call 0665ch ; e8 00 00 ; 0xf6659
+ pop ax ; 58 ; 0xf665c
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf665d
+ push ax ; 50 ; 0xf6660
+ smsw ax ; 0f 01 e0 ; 0xf6661
+ or AL, strict byte 001h ; 0c 01 ; 0xf6664
+ lmsw ax ; 0f 01 f0 ; 0xf6666
+ retf ; cb ; 0xf6669
+ mov ax, strict word 00018h ; b8 18 00 ; 0xf666a
+ mov ds, ax ; 8e d8 ; 0xf666d
+ add AL, strict byte 008h ; 04 08 ; 0xf666f
+ mov es, ax ; 8e c0 ; 0xf6671
+ add AL, strict byte 008h ; 04 08 ; 0xf6673
+ mov ss, ax ; 8e d0 ; 0xf6675
+ lea ax, [bp+004h] ; 8d 46 04 ; 0xf6677 system.c:534
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xf667a
+ popaw ; 61 ; 0xf667c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf667d
+ pop cx ; 59 ; 0xf6680
+ pop ax ; 58 ; 0xf6681
+ pop ax ; 58 ; 0xf6682
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf6683
+ push ax ; 50 ; 0xf6686
+ push cx ; 51 ; 0xf6687
+ retf ; cb ; 0xf6688
+ jmp near 06538h ; e9 ac fe ; 0xf6689 system.c:540
+ mov bx, 00ddch ; bb dc 0d ; 0xf668c system.c:547
+ mov cx, ds ; 8c d9 ; 0xf668f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6691
+ call 01910h ; e8 79 b2 ; 0xf6694
+ push 008c4h ; 68 c4 08 ; 0xf6697
+ push strict byte 00004h ; 6a 04 ; 0xf669a
+ call 01953h ; e8 b4 b2 ; 0xf669c
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf669f
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf66a2
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf66a6
+ xor ah, ah ; 30 e4 ; 0xf66a9
+ or ah, 086h ; 80 cc 86 ; 0xf66ab
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf66ae
+ jmp near 06538h ; e9 84 fe ; 0xf66b1
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf66b4 system.c:553
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf66b7 system.c:554
+ mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf66ba system.c:555
+ mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf66bf system.c:556
+ jmp near 06538h ; e9 71 fe ; 0xf66c4 system.c:557
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf66c7 system.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf66ca
+ mov es, ax ; 8e c0 ; 0xf66cd
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf66cf
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf66d2 system.c:59
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf66d5 system.c:561
+ jmp near 06538h ; e9 5d fe ; 0xf66d8 system.c:562
+ push 008f3h ; 68 f3 08 ; 0xf66db system.c:565
+ push strict byte 00008h ; 6a 08 ; 0xf66de
+ jmp short 0669ch ; eb ba ; 0xf66e0
+ mov word [bp+018h], si ; 89 76 18 ; 0xf66e2 system.c:573
+ jmp near 06535h ; e9 4d fe ; 0xf66e5
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf66e8 system.c:577
+ jne short 06707h ; 75 19 ; 0xf66ec
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf66ee system.c:579
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf66f1 system.c:580
+ xor ah, ah ; 30 e4 ; 0xf66f4
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf66f6
+ jc short 06700h ; 72 05 ; 0xf66f9
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf66fb
+ jbe short 066d5h ; 76 d5 ; 0xf66fe
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6700 system.c:583
+ jmp near 06538h ; e9 31 fe ; 0xf6704 system.c:584
+ mov bx, 00ddch ; bb dc 0d ; 0xf6707 system.c:588
+ mov cx, ds ; 8c d9 ; 0xf670a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf670c
+ call 01910h ; e8 fe b1 ; 0xf670f
+ push word [bp+00ch] ; ff 76 0c ; 0xf6712
+ push word [bp+012h] ; ff 76 12 ; 0xf6715
+ push 0090ah ; 68 0a 09 ; 0xf6718
+ push strict byte 00004h ; 6a 04 ; 0xf671b
+ call 01953h ; e8 33 b2 ; 0xf671d
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6720
+ jmp near 066a2h ; e9 7c ff ; 0xf6723
+ ; disGetNextSymbol 0xf6726 LB 0x46b2 -> off=0x0 cb=0000000000000167 uValue=00000000000f5126 'int15_blkmove'
+int15_blkmove: ; 0xf6726 LB 0x167
+ push bp ; 55 ; 0xf6726 system.c:814
+ mov bp, sp ; 89 e5 ; 0xf6727
+ push si ; 56 ; 0xf6729
+ push di ; 57 ; 0xf672a
+ cli ; fa ; 0xf672b system.c:824
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf672c system.c:826
+ call 0636ch ; e8 3a fc ; 0xf672f
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf6732 system.c:849
+ sal cx, 004h ; c1 e1 04 ; 0xf6735
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6738
+ add ax, cx ; 01 c8 ; 0xf673b
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf673d system.c:850
+ shr bx, 00ch ; c1 eb 0c ; 0xf6740
+ mov dl, bl ; 88 da ; 0xf6743
+ cmp ax, cx ; 39 c8 ; 0xf6745 system.c:851
+ jnc short 0674bh ; 73 02 ; 0xf6747
+ db 0feh, 0c2h
+ ; inc dl ; fe c2 ; 0xf6749 system.c:852
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf674b system.c:853
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf674e
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6751 system.c:61
+ mov word [es:bx], strict word 0002fh ; 26 c7 07 2f 00 ; 0xf6754
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6759 system.c:854
+ add bx, strict byte 0000ah ; 83 c3 0a ; 0xf675c
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf675f system.c:61
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6762
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6765 system.c:855
+ add bx, strict byte 0000ch ; 83 c3 0c ; 0xf6768
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf676b system.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf676e system.c:53
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6771 system.c:856
+ add bx, strict byte 0000dh ; 83 c3 0d ; 0xf6774
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6777 system.c:51
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf677a system.c:53
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf677e system.c:857
+ add bx, strict byte 0000eh ; 83 c3 0e ; 0xf6781
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6784 system.c:61
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6787
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf678c system.c:860
+ add bx, strict byte 00020h ; 83 c3 20 ; 0xf678f
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6792 system.c:61
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6795
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf679a system.c:861
+ add bx, strict byte 00022h ; 83 c3 22 ; 0xf679d
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf67a0 system.c:61
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf67a3
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67a8 system.c:862
+ add bx, strict byte 00024h ; 83 c3 24 ; 0xf67ab
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf67ae system.c:51
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf67b1
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67b5 system.c:863
+ add bx, strict byte 00025h ; 83 c3 25 ; 0xf67b8
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf67bb system.c:51
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf67be
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67c2 system.c:864
+ add bx, strict byte 00026h ; 83 c3 26 ; 0xf67c5
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf67c8 system.c:61
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf67cb
+ mov ax, ss ; 8c d0 ; 0xf67d0 system.c:867
+ mov dx, ax ; 89 c2 ; 0xf67d2
+ sal ax, 004h ; c1 e0 04 ; 0xf67d4 system.c:868
+ shr dx, 00ch ; c1 ea 0c ; 0xf67d7
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67da system.c:870
+ add bx, strict byte 00028h ; 83 c3 28 ; 0xf67dd
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf67e0 system.c:61
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf67e3
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67e8 system.c:871
+ add bx, strict byte 0002ah ; 83 c3 2a ; 0xf67eb
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf67ee system.c:61
+ mov word [es:bx], ax ; 26 89 07 ; 0xf67f1
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67f4 system.c:872
+ add bx, strict byte 0002ch ; 83 c3 2c ; 0xf67f7
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf67fa system.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf67fd
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6800 system.c:873
+ add bx, strict byte 0002dh ; 83 c3 2d ; 0xf6803
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6806 system.c:51
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6809 system.c:53
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf680d system.c:874
+ add bx, strict byte 0002eh ; 83 c3 2e ; 0xf6810
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6813 system.c:61
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6816
+ lea bx, [bp+004h] ; 8d 5e 04 ; 0xf681b system.c:882
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf681e
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6821
+ mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf6824
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf6827
+ mov ds, ax ; 8e d8 ; 0xf6829
+ mov word [00467h], bx ; 89 1e 67 04 ; 0xf682b
+ mov [00469h], ss ; 8c 16 69 04 ; 0xf682f
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6833 system.c:884
+ lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf6838
+ push strict byte 00020h ; 6a 20 ; 0xf683e
+ call 06843h ; e8 00 00 ; 0xf6840
+ pop ax ; 58 ; 0xf6843
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6844
+ push ax ; 50 ; 0xf6847
+ smsw ax ; 0f 01 e0 ; 0xf6848
+ or AL, strict byte 001h ; 0c 01 ; 0xf684b
+ lmsw ax ; 0f 01 f0 ; 0xf684d
+ retf ; cb ; 0xf6850
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf6851
+ mov ds, ax ; 8e d8 ; 0xf6854
+ add AL, strict byte 008h ; 04 08 ; 0xf6856
+ mov es, ax ; 8e c0 ; 0xf6858
+ add AL, strict byte 010h ; 04 10 ; 0xf685a
+ mov ss, ax ; 8e d0 ; 0xf685c
+ db 033h, 0f6h
+ ; xor si, si ; 33 f6 ; 0xf685e system.c:885
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xf6860
+ cld ; fc ; 0xf6862
+ rep movsw ; f3 a5 ; 0xf6863
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf6865 system.c:886
+ out strict byte 080h, AL ; e6 80 ; 0xf6867
+ mov AL, strict byte 00fh ; b0 0f ; 0xf6869
+ out strict byte 070h, AL ; e6 70 ; 0xf686b
+ mov AL, strict byte 009h ; b0 09 ; 0xf686d
+ out strict byte 071h, AL ; e6 71 ; 0xf686f
+ lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf6871
+ int3 ; cc ; 0xf6877
+ xor ax, ax ; 31 c0 ; 0xf6878 system.c:887
+ call 0636ch ; e8 ef fa ; 0xf687a
+ sti ; fb ; 0xf687d system.c:892
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf687e system.c:894
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6882 system.c:895
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6886 system.c:896
+ pop di ; 5f ; 0xf6889
+ pop si ; 5e ; 0xf688a
+ pop bp ; 5d ; 0xf688b
+ retn ; c3 ; 0xf688c
+ ; disGetNextSymbol 0xf688d LB 0x454b -> off=0x0 cb=000000000000019b uValue=00000000000f528d 'inv_op_handler'
+inv_op_handler: ; 0xf688d LB 0x19b
+ push bp ; 55 ; 0xf688d invop.c:247
+ mov bp, sp ; 89 e5 ; 0xf688e
+ push si ; 56 ; 0xf6890
+ push di ; 57 ; 0xf6891
+ push ax ; 50 ; 0xf6892
+ push ax ; 50 ; 0xf6893
+ les bx, [bp+018h] ; c4 5e 18 ; 0xf6894 invop.c:249
+ cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6897 invop.c:251
+ jne short 068a3h ; 75 06 ; 0xf689b
+ inc word [bp+018h] ; ff 46 18 ; 0xf689d invop.c:253
+ jmp near 06a21h ; e9 7e 01 ; 0xf68a0 invop.c:254
+ cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf68a3
+ je short 068adh ; 74 03 ; 0xf68a8
+ jmp near 06a1dh ; e9 70 01 ; 0xf68aa
+ mov si, 00800h ; be 00 08 ; 0xf68ad invop.c:256
+ xor ax, ax ; 31 c0 ; 0xf68b0
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf68b2
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf68b5 invop.c:259
+ mov es, ax ; 8e c0 ; 0xf68b8 invop.c:267
+ mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf68ba
+ sub bx, strict byte 00006h ; 83 eb 06 ; 0xf68be
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf68c1
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf68c5 invop.c:268
+ mov es, dx ; 8e c2 ; 0xf68c9
+ mov word [es:bx], ax ; 26 89 07 ; 0xf68cb
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf68ce invop.c:269
+ mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf68d1
+ mov es, dx ; 8e c2 ; 0xf68d5
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf68d7
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf68db invop.c:270
+ mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf68de
+ mov es, dx ; 8e c2 ; 0xf68e2
+ mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf68e4
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf68e8 invop.c:273
+ mov bl, byte [es:si+038h] ; 26 8a 5c 38 ; 0xf68eb
+ xor bh, bh ; 30 ff ; 0xf68ef
+ mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf68f1
+ mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf68f5 invop.c:274
+ xor dx, dx ; 31 d2 ; 0xf68f9
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf68fb
+ sal ax, 1 ; d1 e0 ; 0xf68fe
+ rcl dx, 1 ; d1 d2 ; 0xf6900
+ loop 068feh ; e2 fa ; 0xf6902
+ cmp bx, dx ; 39 d3 ; 0xf6904
+ jne short 0690ch ; 75 04 ; 0xf6906
+ cmp di, ax ; 39 c7 ; 0xf6908
+ je short 06911h ; 74 05 ; 0xf690a
+ mov word [bp-008h], strict word 00001h ; c7 46 f8 01 00 ; 0xf690c invop.c:275
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6911 invop.c:276
+ mov bl, byte [es:si+04ah] ; 26 8a 5c 4a ; 0xf6914
+ xor bh, bh ; 30 ff ; 0xf6918
+ mov di, word [es:si+048h] ; 26 8b 7c 48 ; 0xf691a
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf691e invop.c:277
+ xor dx, dx ; 31 d2 ; 0xf6922
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6924
+ sal ax, 1 ; d1 e0 ; 0xf6927
+ rcl dx, 1 ; d1 d2 ; 0xf6929
+ loop 06927h ; e2 fa ; 0xf692b
+ cmp bx, dx ; 39 d3 ; 0xf692d
+ jne short 06935h ; 75 04 ; 0xf692f
+ cmp di, ax ; 39 c7 ; 0xf6931
+ je short 06939h ; 74 04 ; 0xf6933
+ or byte [bp-008h], 002h ; 80 4e f8 02 ; 0xf6935 invop.c:278
+ push strict byte 00000h ; 6a 00 ; 0xf6939 invop.c:281
+ push 00800h ; 68 00 08 ; 0xf693b
+ push strict byte 0001fh ; 6a 1f ; 0xf693e
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6940
+ lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6942
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6946
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6949 invop.c:284
+ mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf694c
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6950
+ mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6954 invop.c:285
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6958
+ mov al, byte [es:si+039h] ; 26 8a 44 39 ; 0xf695c invop.c:286
+ xor ah, ah ; 30 e4 ; 0xf6960
+ mov dx, ax ; 89 c2 ; 0xf6962
+ sal dx, 008h ; c1 e2 08 ; 0xf6964
+ mov al, byte [es:si+038h] ; 26 8a 44 38 ; 0xf6967
+ or dx, ax ; 09 c2 ; 0xf696b
+ mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf696d
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6971 invop.c:287
+ mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6977 invop.c:290
+ mov word [es:si], ax ; 26 89 04 ; 0xf697b
+ mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf697e invop.c:291
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6982
+ mov al, byte [es:si+04bh] ; 26 8a 44 4b ; 0xf6986 invop.c:292
+ xor ah, ah ; 30 e4 ; 0xf698a
+ mov dx, ax ; 89 c2 ; 0xf698c
+ sal dx, 008h ; c1 e2 08 ; 0xf698e
+ mov al, byte [es:si+04ah] ; 26 8a 44 4a ; 0xf6991
+ or dx, ax ; 09 c2 ; 0xf6995
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6997
+ mov al, byte [es:si+05ch] ; 26 8a 44 5c ; 0xf699b invop.c:295
+ mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf699f
+ push ax ; 50 ; 0xf69a3 invop.c:296
+ push dx ; 52 ; 0xf69a4
+ push word [es:si+05eh] ; 26 ff 74 5e ; 0xf69a5
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf69a9
+ lidt [ss:bx] ; 36 0f 01 1f ; 0xf69ab
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf69af
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf69b2 invop.c:299
+ mov ax, 00080h ; b8 80 00 ; 0xf69b5
+ mov ss, ax ; 8e d0 ; 0xf69b8
+ mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf69ba
+ mov ds, ax ; 8e d8 ; 0xf69be
+ mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf69c0
+ mov es, ax ; 8e c0 ; 0xf69c4
+ smsw ax ; 0f 01 e0 ; 0xf69c6 invop.c:300
+ inc ax ; 40 ; 0xf69c9
+ lmsw ax ; 0f 01 f0 ; 0xf69ca
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf69cd
+ test cx, strict word 00001h ; f7 c1 01 00 ; 0xf69d0
+ je near 069dah ; 0f 84 02 00 ; 0xf69d4
+ mov es, ax ; 8e c0 ; 0xf69d8
+ test cx, strict word 00002h ; f7 c1 02 00 ; 0xf69da
+ je near 06a02h ; 0f 84 20 00 ; 0xf69de
+ mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf69e2
+ mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf69e7
+ mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf69ec
+ mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf69f1
+ mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf69f6
+ mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf69fb
+ mov ds, ax ; 8e d8 ; 0xf6a00
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6a02
+ dec ax ; 48 ; 0xf6a05
+ mov cr0, eax ; 0f 22 c0 ; 0xf6a06
+ mov sp, strict word 00026h ; bc 26 00 ; 0xf6a09 invop.c:301
+ popaw ; 61 ; 0xf6a0c
+ mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6a0d
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6a12
+ mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6a15
+ iret ; cf ; 0xf6a1a
+ jmp short 06a21h ; eb 04 ; 0xf6a1b invop.c:353
+ sti ; fb ; 0xf6a1d invop.c:357
+ hlt ; f4 ; 0xf6a1e invop.c:358
+ jmp short 06a1eh ; eb fd ; 0xf6a1f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6a21 invop.c:360
+ pop di ; 5f ; 0xf6a24
+ pop si ; 5e ; 0xf6a25
+ pop bp ; 5d ; 0xf6a26
+ retn ; c3 ; 0xf6a27
+ ; disGetNextSymbol 0xf6a28 LB 0x43b0 -> off=0x0 cb=0000000000000028 uValue=00000000000f5428 'init_rtc'
+init_rtc: ; 0xf6a28 LB 0x28
+ push bp ; 55 ; 0xf6a28 timepci.c:84
+ mov bp, sp ; 89 e5 ; 0xf6a29
+ push dx ; 52 ; 0xf6a2b
+ mov dx, strict word 00026h ; ba 26 00 ; 0xf6a2c timepci.c:86
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6a2f
+ call 0167fh ; e8 4a ac ; 0xf6a32
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf6a35 timepci.c:87
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6a38
+ call 0167fh ; e8 41 ac ; 0xf6a3b
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6a3e timepci.c:88
+ call 01664h ; e8 20 ac ; 0xf6a41
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6a44 timepci.c:89
+ call 01664h ; e8 1a ac ; 0xf6a47
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6a4a timepci.c:90
+ pop dx ; 5a ; 0xf6a4d
+ pop bp ; 5d ; 0xf6a4e
+ retn ; c3 ; 0xf6a4f
+ ; disGetNextSymbol 0xf6a50 LB 0x4388 -> off=0x0 cb=0000000000000021 uValue=00000000000f5450 'rtc_updating'
+rtc_updating: ; 0xf6a50 LB 0x21
+ push bp ; 55 ; 0xf6a50 timepci.c:92
+ mov bp, sp ; 89 e5 ; 0xf6a51
+ push dx ; 52 ; 0xf6a53
+ mov dx, 061a8h ; ba a8 61 ; 0xf6a54 timepci.c:105
+ dec dx ; 4a ; 0xf6a57 timepci.c:106
+ je short 06a68h ; 74 0e ; 0xf6a58
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6a5a timepci.c:107
+ call 01664h ; e8 04 ac ; 0xf6a5d
+ test AL, strict byte 080h ; a8 80 ; 0xf6a60
+ jne short 06a57h ; 75 f3 ; 0xf6a62
+ xor ax, ax ; 31 c0 ; 0xf6a64 timepci.c:108
+ jmp short 06a6bh ; eb 03 ; 0xf6a66
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6a68 timepci.c:110
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6a6b timepci.c:111
+ pop dx ; 5a ; 0xf6a6e
+ pop bp ; 5d ; 0xf6a6f
+ retn ; c3 ; 0xf6a70
+ ; disGetNextSymbol 0xf6a71 LB 0x4367 -> off=0x0 cb=0000000000000098 uValue=00000000000f5471 'int70_function'
+int70_function: ; 0xf6a71 LB 0x98
+ push bp ; 55 ; 0xf6a71 timepci.c:120
+ mov bp, sp ; 89 e5 ; 0xf6a72
+ push si ; 56 ; 0xf6a74
+ push ax ; 50 ; 0xf6a75
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6a76 timepci.c:126
+ call 01664h ; e8 e8 ab ; 0xf6a79
+ mov bl, al ; 88 c3 ; 0xf6a7c
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6a7e
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6a81 timepci.c:127
+ call 01664h ; e8 dd ab ; 0xf6a84
+ mov dl, al ; 88 c2 ; 0xf6a87
+ test bl, 060h ; f6 c3 60 ; 0xf6a89 timepci.c:129
+ je short 06ae9h ; 74 5b ; 0xf6a8c
+ test AL, strict byte 020h ; a8 20 ; 0xf6a8e timepci.c:130
+ je short 06a96h ; 74 04 ; 0xf6a90
+ sti ; fb ; 0xf6a92 timepci.c:132
+ int 04ah ; cd 4a ; 0xf6a93 timepci.c:133
+ cli ; fa ; 0xf6a95 timepci.c:134
+ test dl, 040h ; f6 c2 40 ; 0xf6a96 timepci.c:136
+ je short 06b00h ; 74 65 ; 0xf6a99
+ mov bx, 000a0h ; bb a0 00 ; 0xf6a9b timepci.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6a9e
+ mov es, dx ; 8e c2 ; 0xf6aa1
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6aa3
+ test al, al ; 84 c0 ; 0xf6aa6 timepci.c:49
+ je short 06b00h ; 74 56 ; 0xf6aa8
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6aaa timepci.c:68
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf6aad
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6ab0
+ test bx, bx ; 85 db ; 0xf6ab4 timepci.c:144
+ jne short 06aebh ; 75 33 ; 0xf6ab6
+ cmp dx, 003d1h ; 81 fa d1 03 ; 0xf6ab8
+ jnc short 06aebh ; 73 2d ; 0xf6abc
+ mov bx, 00098h ; bb 98 00 ; 0xf6abe timepci.c:58
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf6ac1
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6ac4 timepci.c:58
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6ac7
+ mov si, 000a0h ; be a0 00 ; 0xf6aca timepci.c:53
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6acd
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6ad1 timepci.c:151
+ and dl, 037h ; 80 e2 37 ; 0xf6ad4
+ xor dh, dh ; 30 f6 ; 0xf6ad7
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6ad9
+ call 0167fh ; e8 a0 ab ; 0xf6adc
+ mov es, cx ; 8e c1 ; 0xf6adf timepci.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6ae1
+ or AL, strict byte 080h ; 0c 80 ; 0xf6ae4 timepci.c:49
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6ae6 timepci.c:53
+ jmp short 06b00h ; eb 15 ; 0xf6ae9 timepci.c:153
+ mov cx, dx ; 89 d1 ; 0xf6aeb timepci.c:155
+ add cx, 0fc2fh ; 81 c1 2f fc ; 0xf6aed
+ mov dx, bx ; 89 da ; 0xf6af1
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6af3
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6af6 timepci.c:73
+ mov word [es:bx], cx ; 26 89 0f ; 0xf6af9
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6afc
+ call 0e030h ; e8 2d 75 ; 0xf6b00 timepci.c:161
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6b03 timepci.c:162
+ pop si ; 5e ; 0xf6b06
+ pop bp ; 5d ; 0xf6b07
+ retn ; c3 ; 0xf6b08
+ ; disGetNextSymbol 0xf6b09 LB 0x42cf -> off=0x10 cb=00000000000001d9 uValue=00000000000f5519 'int1a_function'
+ db 02fh, 06bh, 056h, 06bh, 07bh, 06bh, 0b7h, 06bh, 009h, 06ch, 040h, 06ch, 087h, 06ch, 0e2h, 06ch
+int1a_function: ; 0xf6b19 LB 0x1d9
+ push bp ; 55 ; 0xf6b19 timepci.c:167
+ mov bp, sp ; 89 e5 ; 0xf6b1a
+ sti ; fb ; 0xf6b1c timepci.c:173
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6b1d timepci.c:175
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf6b20
+ jnbe short 06b82h ; 77 5e ; 0xf6b22
+ mov bl, al ; 88 c3 ; 0xf6b24
+ xor bh, bh ; 30 ff ; 0xf6b26
+ add bx, bx ; 01 db ; 0xf6b28
+ jmp word [cs:bx+06b09h] ; 2e ff a7 09 6b ; 0xf6b2a
+ cli ; fa ; 0xf6b2f timepci.c:177
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6b30 timepci.c:178
+ xor ax, ax ; 31 c0 ; 0xf6b33
+ mov es, ax ; 8e c0 ; 0xf6b35
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6b37
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf6b3a
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6b3d timepci.c:179
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6b40
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf6b43
+ mov bx, 00470h ; bb 70 04 ; 0xf6b46 timepci.c:180
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6b49
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6b4c
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6b4f timepci.c:181
+ sti ; fb ; 0xf6b53 timepci.c:182
+ jmp short 06b82h ; eb 2c ; 0xf6b54 timepci.c:185
+ cli ; fa ; 0xf6b56 timepci.c:188
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6b57 timepci.c:189
+ xor ax, ax ; 31 c0 ; 0xf6b5a
+ mov es, ax ; 8e c0 ; 0xf6b5c
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6b5e
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6b61
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6b64 timepci.c:190
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6b67
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6b6a
+ mov bx, 00470h ; bb 70 04 ; 0xf6b6d timepci.c:191
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6b70
+ sti ; fb ; 0xf6b74 timepci.c:192
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6b75 timepci.c:193
+ jmp short 06b82h ; eb 07 ; 0xf6b79 timepci.c:195
+ call 06a50h ; e8 d2 fe ; 0xf6b7b timepci.c:198
+ test ax, ax ; 85 c0 ; 0xf6b7e
+ je short 06b85h ; 74 03 ; 0xf6b80
+ jmp near 06bb3h ; e9 2e 00 ; 0xf6b82 timepci.c:200
+ xor ax, ax ; 31 c0 ; 0xf6b85 timepci.c:203
+ call 01664h ; e8 da aa ; 0xf6b87
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6b8a
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6b8d timepci.c:204
+ call 01664h ; e8 d1 aa ; 0xf6b90
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6b93
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6b96 timepci.c:205
+ call 01664h ; e8 c8 aa ; 0xf6b99
+ mov dl, al ; 88 c2 ; 0xf6b9c
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6b9e
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6ba1 timepci.c:206
+ call 01664h ; e8 bd aa ; 0xf6ba4
+ and AL, strict byte 001h ; 24 01 ; 0xf6ba7
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6ba9
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6bac timepci.c:207
+ mov byte [bp+012h], dl ; 88 56 12 ; 0xf6bb0 timepci.c:208
+ mov sp, bp ; 89 ec ; 0xf6bb3 timepci.c:210
+ pop bp ; 5d ; 0xf6bb5
+ retn ; c3 ; 0xf6bb6
+ call 06a50h ; e8 96 fe ; 0xf6bb7 timepci.c:223
+ test ax, ax ; 85 c0 ; 0xf6bba
+ je short 06bc1h ; 74 03 ; 0xf6bbc
+ call 06a28h ; e8 67 fe ; 0xf6bbe timepci.c:224
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6bc1 timepci.c:227
+ xor dh, dh ; 30 f6 ; 0xf6bc4
+ xor ax, ax ; 31 c0 ; 0xf6bc6
+ call 0167fh ; e8 b4 aa ; 0xf6bc8
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6bcb timepci.c:228
+ xor dh, dh ; 30 f6 ; 0xf6bce
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6bd0
+ call 0167fh ; e8 a9 aa ; 0xf6bd3
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6bd6 timepci.c:229
+ xor dh, dh ; 30 f6 ; 0xf6bd9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6bdb
+ call 0167fh ; e8 9e aa ; 0xf6bde
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6be1 timepci.c:231
+ call 01664h ; e8 7d aa ; 0xf6be4
+ mov bl, al ; 88 c3 ; 0xf6be7
+ and bl, 060h ; 80 e3 60 ; 0xf6be9
+ or bl, 002h ; 80 cb 02 ; 0xf6bec
+ mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf6bef
+ and AL, strict byte 001h ; 24 01 ; 0xf6bf2
+ or bl, al ; 08 c3 ; 0xf6bf4
+ mov dl, bl ; 88 da ; 0xf6bf6 timepci.c:233
+ xor dh, dh ; 30 f6 ; 0xf6bf8
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6bfa
+ call 0167fh ; e8 7f aa ; 0xf6bfd
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6c00 timepci.c:234
+ mov byte [bp+012h], bl ; 88 5e 12 ; 0xf6c04 timepci.c:235
+ jmp short 06bb3h ; eb aa ; 0xf6c07 timepci.c:237
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6c09 timepci.c:240
+ call 06a50h ; e8 40 fe ; 0xf6c0d timepci.c:241
+ test ax, ax ; 85 c0 ; 0xf6c10
+ je short 06c16h ; 74 02 ; 0xf6c12
+ jmp short 06bb3h ; eb 9d ; 0xf6c14 timepci.c:243
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6c16 timepci.c:245
+ call 01664h ; e8 48 aa ; 0xf6c19
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6c1c
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6c1f timepci.c:246
+ call 01664h ; e8 3f aa ; 0xf6c22
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6c25
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6c28 timepci.c:247
+ call 01664h ; e8 36 aa ; 0xf6c2b
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6c2e
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6c31 timepci.c:248
+ call 01664h ; e8 2d aa ; 0xf6c34
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6c37
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6c3a timepci.c:249
+ jmp near 06bb3h ; e9 73 ff ; 0xf6c3d timepci.c:251
+ call 06a50h ; e8 0d fe ; 0xf6c40 timepci.c:264
+ test ax, ax ; 85 c0 ; 0xf6c43
+ je short 06c4dh ; 74 06 ; 0xf6c45
+ call 06a28h ; e8 de fd ; 0xf6c47 timepci.c:265
+ jmp near 06bb3h ; e9 66 ff ; 0xf6c4a timepci.c:267
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6c4d timepci.c:269
+ xor dh, dh ; 30 f6 ; 0xf6c50
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6c52
+ call 0167fh ; e8 27 aa ; 0xf6c55
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6c58 timepci.c:270
+ xor dh, dh ; 30 f6 ; 0xf6c5b
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6c5d
+ call 0167fh ; e8 1c aa ; 0xf6c60
+ mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf6c63 timepci.c:271
+ xor dh, dh ; 30 f6 ; 0xf6c66
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6c68
+ call 0167fh ; e8 11 aa ; 0xf6c6b
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6c6e timepci.c:272
+ xor dh, dh ; 30 f6 ; 0xf6c71
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6c73
+ call 0167fh ; e8 06 aa ; 0xf6c76
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c79 timepci.c:273
+ call 01664h ; e8 e5 a9 ; 0xf6c7c
+ mov bl, al ; 88 c3 ; 0xf6c7f
+ and bl, 07fh ; 80 e3 7f ; 0xf6c81
+ jmp near 06bf6h ; e9 6f ff ; 0xf6c84
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c87 timepci.c:291
+ call 01664h ; e8 d7 a9 ; 0xf6c8a
+ mov bl, al ; 88 c3 ; 0xf6c8d
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf6c8f timepci.c:292
+ test AL, strict byte 020h ; a8 20 ; 0xf6c94 timepci.c:293
+ je short 06c9bh ; 74 03 ; 0xf6c96
+ jmp near 06bb3h ; e9 18 ff ; 0xf6c98 timepci.c:296
+ call 06a50h ; e8 b2 fd ; 0xf6c9b timepci.c:298
+ test ax, ax ; 85 c0 ; 0xf6c9e
+ je short 06ca5h ; 74 03 ; 0xf6ca0
+ call 06a28h ; e8 83 fd ; 0xf6ca2 timepci.c:299
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6ca5 timepci.c:302
+ xor dh, dh ; 30 f6 ; 0xf6ca8
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6caa
+ call 0167fh ; e8 cf a9 ; 0xf6cad
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6cb0 timepci.c:303
+ xor dh, dh ; 30 f6 ; 0xf6cb3
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf6cb5
+ call 0167fh ; e8 c4 a9 ; 0xf6cb8
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6cbb timepci.c:304
+ xor dh, dh ; 30 f6 ; 0xf6cbe
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf6cc0
+ call 0167fh ; e8 b9 a9 ; 0xf6cc3
+ mov dx, 000a1h ; ba a1 00 ; 0xf6cc6 timepci.c:305
+ in AL, DX ; ec ; 0xf6cc9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6cca
+ and AL, strict byte 0feh ; 24 fe ; 0xf6ccc
+ out DX, AL ; ee ; 0xf6cce
+ mov dl, bl ; 88 da ; 0xf6ccf timepci.c:307
+ and dl, 05fh ; 80 e2 5f ; 0xf6cd1
+ or dl, 020h ; 80 ca 20 ; 0xf6cd4
+ xor dh, dh ; 30 f6 ; 0xf6cd7
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6cd9
+ call 0167fh ; e8 a0 a9 ; 0xf6cdc
+ jmp near 06bb3h ; e9 d1 fe ; 0xf6cdf timepci.c:309
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6ce2 timepci.c:322
+ call 01664h ; e8 7c a9 ; 0xf6ce5
+ mov bl, al ; 88 c3 ; 0xf6ce8
+ mov dl, al ; 88 c2 ; 0xf6cea timepci.c:324
+ and dl, 057h ; 80 e2 57 ; 0xf6cec
+ jmp near 06bf8h ; e9 06 ff ; 0xf6cef
+ ; disGetNextSymbol 0xf6cf2 LB 0x40e6 -> off=0x0 cb=0000000000000034 uValue=00000000000f56f2 'send_to_mouse_ctrl'
+send_to_mouse_ctrl: ; 0xf6cf2 LB 0x34
+ push bp ; 55 ; 0xf6cf2 ps2mouse.c:87
+ mov bp, sp ; 89 e5 ; 0xf6cf3
+ push bx ; 53 ; 0xf6cf5
+ push dx ; 52 ; 0xf6cf6
+ mov bl, al ; 88 c3 ; 0xf6cf7
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6cf9 ps2mouse.c:91
+ in AL, DX ; ec ; 0xf6cfc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6cfd
+ test AL, strict byte 002h ; a8 02 ; 0xf6cff
+ je short 06d11h ; 74 0e ; 0xf6d01
+ push 00944h ; 68 44 09 ; 0xf6d03 ps2mouse.c:92
+ push 011a4h ; 68 a4 11 ; 0xf6d06
+ push strict byte 00007h ; 6a 07 ; 0xf6d09
+ call 01953h ; e8 45 ac ; 0xf6d0b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6d0e
+ mov AL, strict byte 0d4h ; b0 d4 ; 0xf6d11 ps2mouse.c:93
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6d13
+ out DX, AL ; ee ; 0xf6d16
+ mov al, bl ; 88 d8 ; 0xf6d17 ps2mouse.c:94
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6d19
+ out DX, AL ; ee ; 0xf6d1c
+ xor al, bl ; 30 d8 ; 0xf6d1d ps2mouse.c:96
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6d1f
+ pop dx ; 5a ; 0xf6d22
+ pop bx ; 5b ; 0xf6d23
+ pop bp ; 5d ; 0xf6d24
+ retn ; c3 ; 0xf6d25
+ ; disGetNextSymbol 0xf6d26 LB 0x40b2 -> off=0x0 cb=000000000000005d uValue=00000000000f5726 'get_mouse_data'
+get_mouse_data: ; 0xf6d26 LB 0x5d
+ push bp ; 55 ; 0xf6d26 ps2mouse.c:99
+ mov bp, sp ; 89 e5 ; 0xf6d27
+ push bx ; 53 ; 0xf6d29
+ push cx ; 51 ; 0xf6d2a
+ push ax ; 50 ; 0xf6d2b
+ mov bx, ax ; 89 c3 ; 0xf6d2c
+ mov es, dx ; 8e c2 ; 0xf6d2e
+ mov cx, 02710h ; b9 10 27 ; 0xf6d30 ps2mouse.c:101
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6d33 ps2mouse.c:104
+ in AL, DX ; ec ; 0xf6d36
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6d37
+ and ax, strict word 00021h ; 25 21 00 ; 0xf6d39
+ cmp ax, strict word 00021h ; 3d 21 00 ; 0xf6d3c
+ je short 06d69h ; 74 28 ; 0xf6d3f
+ test cx, cx ; 85 c9 ; 0xf6d41
+ je short 06d69h ; 74 24 ; 0xf6d43
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6d45 ps2mouse.c:107
+ in AL, DX ; ec ; 0xf6d48
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6d49
+ and AL, strict byte 010h ; 24 10 ; 0xf6d4b
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6d4d
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6d50 ps2mouse.c:108
+ in AL, DX ; ec ; 0xf6d53
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6d54
+ mov dx, ax ; 89 c2 ; 0xf6d56
+ xor dh, ah ; 30 e6 ; 0xf6d58
+ and dl, 010h ; 80 e2 10 ; 0xf6d5a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6d5d
+ xor ah, ah ; 30 e4 ; 0xf6d60
+ cmp dx, ax ; 39 c2 ; 0xf6d62
+ je short 06d50h ; 74 ea ; 0xf6d64
+ dec cx ; 49 ; 0xf6d66 ps2mouse.c:110
+ jmp short 06d33h ; eb ca ; 0xf6d67 ps2mouse.c:111
+ test cx, cx ; 85 c9 ; 0xf6d69 ps2mouse.c:113
+ jne short 06d71h ; 75 04 ; 0xf6d6b
+ mov AL, strict byte 001h ; b0 01 ; 0xf6d6d ps2mouse.c:114
+ jmp short 06d7ch ; eb 0b ; 0xf6d6f
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6d71 ps2mouse.c:116
+ in AL, DX ; ec ; 0xf6d74
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6d75
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6d77 ps2mouse.c:117
+ xor al, al ; 30 c0 ; 0xf6d7a ps2mouse.c:118
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6d7c ps2mouse.c:119
+ pop cx ; 59 ; 0xf6d7f
+ pop bx ; 5b ; 0xf6d80
+ pop bp ; 5d ; 0xf6d81
+ retn ; c3 ; 0xf6d82
+ ; disGetNextSymbol 0xf6d83 LB 0x4055 -> off=0x0 cb=0000000000000032 uValue=00000000000f5783 'set_kbd_command_byte'
+set_kbd_command_byte: ; 0xf6d83 LB 0x32
+ push bp ; 55 ; 0xf6d83 ps2mouse.c:121
+ mov bp, sp ; 89 e5 ; 0xf6d84
+ push bx ; 53 ; 0xf6d86
+ push dx ; 52 ; 0xf6d87
+ mov bl, al ; 88 c3 ; 0xf6d88
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6d8a ps2mouse.c:123
+ in AL, DX ; ec ; 0xf6d8d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6d8e
+ test AL, strict byte 002h ; a8 02 ; 0xf6d90
+ je short 06da2h ; 74 0e ; 0xf6d92
+ push 0094eh ; 68 4e 09 ; 0xf6d94 ps2mouse.c:124
+ push 011a4h ; 68 a4 11 ; 0xf6d97
+ push strict byte 00007h ; 6a 07 ; 0xf6d9a
+ call 01953h ; e8 b4 ab ; 0xf6d9c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6d9f
+ mov AL, strict byte 060h ; b0 60 ; 0xf6da2 ps2mouse.c:126
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6da4
+ out DX, AL ; ee ; 0xf6da7
+ mov al, bl ; 88 d8 ; 0xf6da8 ps2mouse.c:127
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6daa
+ out DX, AL ; ee ; 0xf6dad
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6dae ps2mouse.c:128
+ pop dx ; 5a ; 0xf6db1
+ pop bx ; 5b ; 0xf6db2
+ pop bp ; 5d ; 0xf6db3
+ retn ; c3 ; 0xf6db4
+ ; disGetNextSymbol 0xf6db5 LB 0x4023 -> off=0x0 cb=000000000000009e uValue=00000000000f57b5 'int74_function'
+int74_function: ; 0xf6db5 LB 0x9e
+ push bp ; 55 ; 0xf6db5 ps2mouse.c:131
+ mov bp, sp ; 89 e5 ; 0xf6db6
+ push si ; 56 ; 0xf6db8
+ push ax ; 50 ; 0xf6db9
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6dba ps2mouse.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6dbd
+ mov es, ax ; 8e c0 ; 0xf6dc0
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6dc2
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf6dc5 ps2mouse.c:139
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6dca ps2mouse.c:141
+ in AL, DX ; ec ; 0xf6dcd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6dce
+ and AL, strict byte 021h ; 24 21 ; 0xf6dd0 ps2mouse.c:142
+ cmp AL, strict byte 021h ; 3c 21 ; 0xf6dd2
+ jne short 06df4h ; 75 1e ; 0xf6dd4
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6dd6 ps2mouse.c:145
+ in AL, DX ; ec ; 0xf6dd9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6dda
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6ddc
+ mov si, strict word 00026h ; be 26 00 ; 0xf6ddf ps2mouse.c:48
+ mov es, bx ; 8e c3 ; 0xf6de2
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6de4
+ mov si, strict word 00027h ; be 27 00 ; 0xf6de7 ps2mouse.c:48
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf6dea
+ mov cl, ah ; 88 e1 ; 0xf6ded ps2mouse.c:49
+ test ah, 080h ; f6 c4 80 ; 0xf6def ps2mouse.c:151
+ jne short 06df6h ; 75 02 ; 0xf6df2
+ jmp short 06e4dh ; eb 57 ; 0xf6df4 ps2mouse.c:152
+ mov ch, cl ; 88 cd ; 0xf6df6 ps2mouse.c:155
+ and ch, 007h ; 80 e5 07 ; 0xf6df8
+ mov ah, al ; 88 c4 ; 0xf6dfb ps2mouse.c:156
+ and ah, 007h ; 80 e4 07 ; 0xf6dfd
+ mov dl, ah ; 88 e2 ; 0xf6e00 ps2mouse.c:157
+ xor dh, dh ; 30 f6 ; 0xf6e02
+ mov si, dx ; 89 d6 ; 0xf6e04
+ add si, strict byte 00028h ; 83 c6 28 ; 0xf6e06
+ mov es, bx ; 8e c3 ; 0xf6e09 ps2mouse.c:53
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6e0b
+ mov byte [es:si], dl ; 26 88 14 ; 0xf6e0e
+ cmp ah, ch ; 38 ec ; 0xf6e11 ps2mouse.c:159
+ jc short 06e43h ; 72 2e ; 0xf6e13
+ mov si, strict word 00028h ; be 28 00 ; 0xf6e15 ps2mouse.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6e18
+ xor ah, ah ; 30 e4 ; 0xf6e1b ps2mouse.c:49
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf6e1d
+ mov si, strict word 00029h ; be 29 00 ; 0xf6e20 ps2mouse.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6e23
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf6e26 ps2mouse.c:49
+ mov si, strict word 0002ah ; be 2a 00 ; 0xf6e29 ps2mouse.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6e2c
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf6e2f ps2mouse.c:49
+ xor al, al ; 30 c0 ; 0xf6e32 ps2mouse.c:164
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf6e34
+ test cl, 080h ; f6 c1 80 ; 0xf6e37 ps2mouse.c:167
+ je short 06e45h ; 74 09 ; 0xf6e3a
+ mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf6e3c ps2mouse.c:168
+ jmp short 06e45h ; eb 02 ; 0xf6e41 ps2mouse.c:170
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf6e43 ps2mouse.c:171
+ mov si, strict word 00026h ; be 26 00 ; 0xf6e45 ps2mouse.c:53
+ mov es, bx ; 8e c3 ; 0xf6e48
+ mov byte [es:si], al ; 26 88 04 ; 0xf6e4a
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6e4d ps2mouse.c:174
+ pop si ; 5e ; 0xf6e50
+ pop bp ; 5d ; 0xf6e51
+ retn ; c3 ; 0xf6e52
+ ; disGetNextSymbol 0xf6e53 LB 0x3f85 -> off=0x10 cb=000000000000036c uValue=00000000000f5863 'int15_function_mouse'
+ db 0a4h, 06eh, 015h, 06fh, 088h, 06fh, 01ah, 070h, 086h, 070h, 0eah, 06eh, 0aeh, 070h, 077h, 071h
+int15_function_mouse: ; 0xf6e63 LB 0x36c
+ push bp ; 55 ; 0xf6e63 ps2mouse.c:176
+ mov bp, sp ; 89 e5 ; 0xf6e64
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6e66
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6e69 ps2mouse.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6e6c
+ mov es, ax ; 8e c0 ; 0xf6e6f
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf6e71
+ cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf6e74 ps2mouse.c:198
+ jbe short 06e85h ; 76 0b ; 0xf6e78
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6e7a ps2mouse.c:201
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf6e7e ps2mouse.c:202
+ jmp near 071cbh ; e9 46 03 ; 0xf6e82 ps2mouse.c:203
+ mov ax, strict word 00065h ; b8 65 00 ; 0xf6e85 ps2mouse.c:207
+ call 06d83h ; e8 f8 fe ; 0xf6e88
+ and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf6e8b ps2mouse.c:208
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6e8f ps2mouse.c:209
+ mov bl, byte [bp+012h] ; 8a 5e 12 ; 0xf6e93 ps2mouse.c:211
+ cmp bl, 007h ; 80 fb 07 ; 0xf6e96
+ jnbe short 06ef8h ; 77 5d ; 0xf6e99
+ xor bh, bh ; 30 ff ; 0xf6e9b
+ add bx, bx ; 01 db ; 0xf6e9d
+ jmp word [cs:bx+06e53h] ; 2e ff a7 53 6e ; 0xf6e9f
+ cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf6ea4 ps2mouse.c:214
+ jnbe short 06efbh ; 77 51 ; 0xf6ea8
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf6eaa ps2mouse.c:48
+ mov es, dx ; 8e c2 ; 0xf6ead
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6eaf
+ test AL, strict byte 080h ; a8 80 ; 0xf6eb2 ps2mouse.c:222
+ jne short 06ec1h ; 75 0b ; 0xf6eb4
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6eb6 ps2mouse.c:224
+ mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf6eba ps2mouse.c:225
+ jmp near 071c5h ; e9 04 03 ; 0xf6ebe ps2mouse.c:226
+ cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf6ec1 ps2mouse.c:228
+ jne short 06ecbh ; 75 04 ; 0xf6ec5
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf6ec7 ps2mouse.c:230
+ jmp short 06ecdh ; eb 02 ; 0xf6ec9 ps2mouse.c:231
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf6ecb ps2mouse.c:233
+ xor ah, ah ; 30 e4 ; 0xf6ecd ps2mouse.c:236
+ call 06cf2h ; e8 20 fe ; 0xf6ecf
+ test al, al ; 84 c0 ; 0xf6ed2 ps2mouse.c:237
+ jne short 06efeh ; 75 28 ; 0xf6ed4
+ mov dx, ss ; 8c d2 ; 0xf6ed6 ps2mouse.c:238
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf6ed8
+ call 06d26h ; e8 48 fe ; 0xf6edb
+ test al, al ; 84 c0 ; 0xf6ede ps2mouse.c:239
+ je short 06f44h ; 74 62 ; 0xf6ee0
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf6ee2
+ jne short 06efeh ; 75 16 ; 0xf6ee6
+ jmp short 06f44h ; eb 5a ; 0xf6ee8 ps2mouse.c:241
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf6eea ps2mouse.c:252
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf6eed
+ jc short 06ef5h ; 72 04 ; 0xf6eef
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf6ef1
+ jbe short 06f01h ; 76 0c ; 0xf6ef3
+ jmp near 0707ch ; e9 84 01 ; 0xf6ef5
+ jmp near 071b2h ; e9 b7 02 ; 0xf6ef8
+ jmp near 071bdh ; e9 bf 02 ; 0xf6efb
+ jmp near 07152h ; e9 51 02 ; 0xf6efe
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf6f01 ps2mouse.c:48
+ mov es, dx ; 8e c2 ; 0xf6f04
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f06
+ mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf6f09 ps2mouse.c:258
+ db 0feh, 0cch
+ ; dec ah ; fe cc ; 0xf6f0c
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf6f0e
+ or al, ah ; 08 e0 ; 0xf6f10
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6f12 ps2mouse.c:53
+ mov bx, strict word 00026h ; bb 26 00 ; 0xf6f15 ps2mouse.c:48
+ mov es, dx ; 8e c2 ; 0xf6f18
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f1a
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf6f1d ps2mouse.c:266
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6f1f ps2mouse.c:53
+ mov ax, 000ffh ; b8 ff 00 ; 0xf6f22 ps2mouse.c:268
+ call 06cf2h ; e8 ca fd ; 0xf6f25
+ test al, al ; 84 c0 ; 0xf6f28 ps2mouse.c:269
+ jne short 06efeh ; 75 d2 ; 0xf6f2a
+ mov dx, ss ; 8c d2 ; 0xf6f2c ps2mouse.c:270
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf6f2e
+ call 06d26h ; e8 f2 fd ; 0xf6f31
+ mov dl, al ; 88 c2 ; 0xf6f34
+ cmp byte [bp-004h], 0feh ; 80 7e fc fe ; 0xf6f36 ps2mouse.c:272
+ jne short 06f47h ; 75 0b ; 0xf6f3a
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6f3c ps2mouse.c:273
+ mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf6f40 ps2mouse.c:274
+ jmp near 071c5h ; e9 7e 02 ; 0xf6f44 ps2mouse.c:275
+ cmp byte [bp-004h], 0fah ; 80 7e fc fa ; 0xf6f47 ps2mouse.c:277
+ je short 06f5eh ; 74 11 ; 0xf6f4b
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf6f4d ps2mouse.c:278
+ xor ah, ah ; 30 e4 ; 0xf6f50
+ push ax ; 50 ; 0xf6f52
+ push 00959h ; 68 59 09 ; 0xf6f53
+ push strict byte 00007h ; 6a 07 ; 0xf6f56
+ call 01953h ; e8 f8 a9 ; 0xf6f58
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f5b
+ test dl, dl ; 84 d2 ; 0xf6f5e ps2mouse.c:279
+ jne short 06efeh ; 75 9c ; 0xf6f60
+ mov dx, ss ; 8c d2 ; 0xf6f62 ps2mouse.c:280
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf6f64
+ call 06d26h ; e8 bc fd ; 0xf6f67
+ test al, al ; 84 c0 ; 0xf6f6a ps2mouse.c:281
+ jne short 06efeh ; 75 90 ; 0xf6f6c
+ mov dx, ss ; 8c d2 ; 0xf6f6e ps2mouse.c:282
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf6f70
+ call 06d26h ; e8 b0 fd ; 0xf6f73
+ test al, al ; 84 c0 ; 0xf6f76 ps2mouse.c:283
+ jne short 06efeh ; 75 84 ; 0xf6f78
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6f7a ps2mouse.c:285
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf6f7d
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6f80 ps2mouse.c:286
+ mov byte [bp+00dh], al ; 88 46 0d ; 0xf6f83
+ jmp short 06f44h ; eb bc ; 0xf6f86 ps2mouse.c:287
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf6f88 ps2mouse.c:300
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf6f8b
+ jc short 06f9fh ; 72 10 ; 0xf6f8d
+ jbe short 06fbdh ; 76 2c ; 0xf6f8f
+ cmp AL, strict byte 006h ; 3c 06 ; 0xf6f91
+ je short 06fcfh ; 74 3a ; 0xf6f93
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf6f95
+ je short 06fc9h ; 74 30 ; 0xf6f97
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf6f99
+ je short 06fc3h ; 74 26 ; 0xf6f9b
+ jmp short 06fd5h ; eb 36 ; 0xf6f9d
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf6f9f
+ je short 06fb7h ; 74 14 ; 0xf6fa1
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf6fa3
+ je short 06fb1h ; 74 0a ; 0xf6fa5
+ test al, al ; 84 c0 ; 0xf6fa7
+ jne short 06fd5h ; 75 2a ; 0xf6fa9
+ mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf6fab ps2mouse.c:301
+ jmp short 06fd9h ; eb 28 ; 0xf6faf
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf6fb1 ps2mouse.c:302
+ jmp short 06fd9h ; eb 22 ; 0xf6fb5
+ mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf6fb7 ps2mouse.c:303
+ jmp short 06fd9h ; eb 1c ; 0xf6fbb
+ mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf6fbd ps2mouse.c:304
+ jmp short 06fd9h ; eb 16 ; 0xf6fc1
+ mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf6fc3 ps2mouse.c:305
+ jmp short 06fd9h ; eb 10 ; 0xf6fc7
+ mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf6fc9 ps2mouse.c:306
+ jmp short 06fd9h ; eb 0a ; 0xf6fcd
+ mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf6fcf ps2mouse.c:307
+ jmp short 06fd9h ; eb 04 ; 0xf6fd3
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf6fd5 ps2mouse.c:308
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf6fd9 ps2mouse.c:310
+ jbe short 0700fh ; 76 30 ; 0xf6fdd
+ mov ax, 000f3h ; b8 f3 00 ; 0xf6fdf ps2mouse.c:311
+ call 06cf2h ; e8 0d fd ; 0xf6fe2
+ test al, al ; 84 c0 ; 0xf6fe5 ps2mouse.c:312
+ jne short 07004h ; 75 1b ; 0xf6fe7
+ mov dx, ss ; 8c d2 ; 0xf6fe9 ps2mouse.c:313
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf6feb
+ call 06d26h ; e8 35 fd ; 0xf6fee
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6ff1 ps2mouse.c:314
+ xor ah, ah ; 30 e4 ; 0xf6ff4
+ call 06cf2h ; e8 f9 fc ; 0xf6ff6
+ mov dx, ss ; 8c d2 ; 0xf6ff9 ps2mouse.c:315
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf6ffb
+ call 06d26h ; e8 25 fd ; 0xf6ffe
+ jmp near 071c5h ; e9 c1 01 ; 0xf7001 ps2mouse.c:317
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7004 ps2mouse.c:319
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7008 ps2mouse.c:320
+ jmp near 071c5h ; e9 b6 01 ; 0xf700c ps2mouse.c:322
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf700f ps2mouse.c:324
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf7013 ps2mouse.c:325
+ jmp near 071c5h ; e9 ab 01 ; 0xf7017 ps2mouse.c:327
+ cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf701a ps2mouse.c:336
+ jnc short 0707ch ; 73 5c ; 0xf701e
+ mov ax, 000e8h ; b8 e8 00 ; 0xf7020 ps2mouse.c:337
+ call 06cf2h ; e8 cc fc ; 0xf7023
+ test al, al ; 84 c0 ; 0xf7026 ps2mouse.c:338
+ jne short 07072h ; 75 48 ; 0xf7028
+ mov dx, ss ; 8c d2 ; 0xf702a ps2mouse.c:339
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf702c
+ call 06d26h ; e8 f4 fc ; 0xf702f
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7032 ps2mouse.c:340
+ je short 07049h ; 74 11 ; 0xf7036
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7038 ps2mouse.c:341
+ xor ah, ah ; 30 e4 ; 0xf703b
+ push ax ; 50 ; 0xf703d
+ push 00984h ; 68 84 09 ; 0xf703e
+ push strict byte 00007h ; 6a 07 ; 0xf7041
+ call 01953h ; e8 0d a9 ; 0xf7043
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7046
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7049 ps2mouse.c:342
+ xor ah, ah ; 30 e4 ; 0xf704c
+ call 06cf2h ; e8 a1 fc ; 0xf704e
+ mov dx, ss ; 8c d2 ; 0xf7051 ps2mouse.c:343
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7053
+ call 06d26h ; e8 cd fc ; 0xf7056
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7059 ps2mouse.c:344
+ je short 070abh ; 74 4c ; 0xf705d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf705f ps2mouse.c:345
+ xor ah, ah ; 30 e4 ; 0xf7062
+ push ax ; 50 ; 0xf7064
+ push 00984h ; 68 84 09 ; 0xf7065
+ push strict byte 00007h ; 6a 07 ; 0xf7068
+ call 01953h ; e8 e6 a8 ; 0xf706a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf706d
+ jmp short 070abh ; eb 39 ; 0xf7070 ps2mouse.c:347
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7072 ps2mouse.c:349
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7076 ps2mouse.c:350
+ jmp short 070abh ; eb 2f ; 0xf707a ps2mouse.c:352
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf707c ps2mouse.c:354
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf7080 ps2mouse.c:355
+ jmp short 070abh ; eb 25 ; 0xf7084 ps2mouse.c:357
+ mov ax, 000f2h ; b8 f2 00 ; 0xf7086 ps2mouse.c:361
+ call 06cf2h ; e8 66 fc ; 0xf7089
+ test al, al ; 84 c0 ; 0xf708c ps2mouse.c:362
+ jne short 070a3h ; 75 13 ; 0xf708e
+ mov dx, ss ; 8c d2 ; 0xf7090 ps2mouse.c:363
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7092
+ call 06d26h ; e8 8e fc ; 0xf7095
+ mov dx, ss ; 8c d2 ; 0xf7098 ps2mouse.c:364
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf709a
+ call 06d26h ; e8 86 fc ; 0xf709d
+ jmp near 06f80h ; e9 dd fe ; 0xf70a0
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70a3 ps2mouse.c:365
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf70a7 ps2mouse.c:370
+ jmp near 071c5h ; e9 17 01 ; 0xf70ab ps2mouse.c:372
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf70ae ps2mouse.c:376
+ test al, al ; 84 c0 ; 0xf70b1
+ jbe short 070bch ; 76 07 ; 0xf70b3
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf70b5
+ jbe short 07123h ; 76 6a ; 0xf70b7
+ jmp near 0715ch ; e9 a0 00 ; 0xf70b9
+ mov ax, 000e9h ; b8 e9 00 ; 0xf70bc ps2mouse.c:378
+ call 06cf2h ; e8 30 fc ; 0xf70bf
+ test al, al ; 84 c0 ; 0xf70c2 ps2mouse.c:379
+ jne short 0712ch ; 75 66 ; 0xf70c4
+ mov dx, ss ; 8c d2 ; 0xf70c6 ps2mouse.c:380
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf70c8
+ call 06d26h ; e8 58 fc ; 0xf70cb
+ mov dl, al ; 88 c2 ; 0xf70ce
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf70d0 ps2mouse.c:381
+ je short 070e7h ; 74 11 ; 0xf70d4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf70d6 ps2mouse.c:382
+ xor ah, ah ; 30 e4 ; 0xf70d9
+ push ax ; 50 ; 0xf70db
+ push 00984h ; 68 84 09 ; 0xf70dc
+ push strict byte 00007h ; 6a 07 ; 0xf70df
+ call 01953h ; e8 6f a8 ; 0xf70e1
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf70e4
+ test dl, dl ; 84 d2 ; 0xf70e7 ps2mouse.c:383
+ jne short 0712ch ; 75 41 ; 0xf70e9
+ mov dx, ss ; 8c d2 ; 0xf70eb ps2mouse.c:384
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf70ed
+ call 06d26h ; e8 33 fc ; 0xf70f0
+ test al, al ; 84 c0 ; 0xf70f3 ps2mouse.c:385
+ jne short 07152h ; 75 5b ; 0xf70f5
+ mov dx, ss ; 8c d2 ; 0xf70f7 ps2mouse.c:386
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf70f9
+ call 06d26h ; e8 27 fc ; 0xf70fc
+ test al, al ; 84 c0 ; 0xf70ff ps2mouse.c:387
+ jne short 07152h ; 75 4f ; 0xf7101
+ mov dx, ss ; 8c d2 ; 0xf7103 ps2mouse.c:388
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7105
+ call 06d26h ; e8 1b fc ; 0xf7108
+ test al, al ; 84 c0 ; 0xf710b ps2mouse.c:389
+ jne short 07152h ; 75 43 ; 0xf710d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf710f ps2mouse.c:390
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf7112
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7115 ps2mouse.c:391
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf7118
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf711b ps2mouse.c:392
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf711e
+ jmp short 070abh ; eb 88 ; 0xf7121 ps2mouse.c:394
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7123 ps2mouse.c:408
+ jne short 0712eh ; 75 07 ; 0xf7125
+ mov ax, 000e6h ; b8 e6 00 ; 0xf7127 ps2mouse.c:409
+ jmp short 07131h ; eb 05 ; 0xf712a ps2mouse.c:410
+ jmp short 07152h ; eb 24 ; 0xf712c
+ mov ax, 000e7h ; b8 e7 00 ; 0xf712e ps2mouse.c:411
+ call 06cf2h ; e8 be fb ; 0xf7131
+ mov dl, al ; 88 c2 ; 0xf7134
+ test dl, dl ; 84 d2 ; 0xf7136 ps2mouse.c:413
+ jne short 0714eh ; 75 14 ; 0xf7138
+ mov dx, ss ; 8c d2 ; 0xf713a ps2mouse.c:414
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf713c
+ call 06d26h ; e8 e4 fb ; 0xf713f
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7142 ps2mouse.c:415
+ je short 0714ch ; 74 04 ; 0xf7146
+ mov DL, strict byte 001h ; b2 01 ; 0xf7148
+ jmp short 0714eh ; eb 02 ; 0xf714a
+ xor dl, dl ; 30 d2 ; 0xf714c
+ test dl, dl ; 84 d2 ; 0xf714e ps2mouse.c:417
+ je short 071b0h ; 74 5e ; 0xf7150
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7152 ps2mouse.c:419
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7156 ps2mouse.c:420
+ jmp short 071c5h ; eb 69 ; 0xf715a ps2mouse.c:422
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf715c ps2mouse.c:425
+ xor ah, ah ; 30 e4 ; 0xf715f
+ push ax ; 50 ; 0xf7161
+ push 009b0h ; 68 b0 09 ; 0xf7162
+ push strict byte 00007h ; 6a 07 ; 0xf7165
+ call 01953h ; e8 e9 a7 ; 0xf7167
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf716a
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf716d ps2mouse.c:427
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7171 ps2mouse.c:428
+ jmp short 071c5h ; eb 4e ; 0xf7175 ps2mouse.c:430
+ mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf7177 ps2mouse.c:435
+ mov bx, strict word 00022h ; bb 22 00 ; 0xf717a ps2mouse.c:63
+ mov es, dx ; 8e c2 ; 0xf717d
+ mov word [es:bx], cx ; 26 89 0f ; 0xf717f
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf7182 ps2mouse.c:63
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf7185
+ mov word [es:bx], ax ; 26 89 07 ; 0xf7188
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf718b ps2mouse.c:48
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf718e
+ mov al, ah ; 88 e0 ; 0xf7191 ps2mouse.c:49
+ test cx, cx ; 85 c9 ; 0xf7193 ps2mouse.c:439
+ jne short 071a6h ; 75 0f ; 0xf7195
+ cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf7197
+ jne short 071a6h ; 75 09 ; 0xf719b
+ test ah, 080h ; f6 c4 80 ; 0xf719d ps2mouse.c:441
+ je short 071a8h ; 74 06 ; 0xf71a0
+ and AL, strict byte 07fh ; 24 7f ; 0xf71a2 ps2mouse.c:442
+ jmp short 071a8h ; eb 02 ; 0xf71a4 ps2mouse.c:445
+ or AL, strict byte 080h ; 0c 80 ; 0xf71a6 ps2mouse.c:447
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf71a8 ps2mouse.c:53
+ mov es, dx ; 8e c2 ; 0xf71ab
+ mov byte [es:bx], al ; 26 88 07 ; 0xf71ad
+ jmp short 071c5h ; eb 13 ; 0xf71b0 ps2mouse.c:450
+ push 009cah ; 68 ca 09 ; 0xf71b2 ps2mouse.c:453
+ push strict byte 00007h ; 6a 07 ; 0xf71b5
+ call 01953h ; e8 99 a7 ; 0xf71b7
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf71ba
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71bd ps2mouse.c:455
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf71c1 ps2mouse.c:456
+ mov ax, strict word 00047h ; b8 47 00 ; 0xf71c5 ps2mouse.c:460
+ call 06d83h ; e8 b8 fb ; 0xf71c8
+ mov sp, bp ; 89 ec ; 0xf71cb ps2mouse.c:461
+ pop bp ; 5d ; 0xf71cd
+ retn ; c3 ; 0xf71ce
+ ; disGetNextSymbol 0xf71cf LB 0x3c09 -> off=0x0 cb=00000000000000ac uValue=00000000000f5bcf 'int17_function'
+int17_function: ; 0xf71cf LB 0xac
+ push bp ; 55 ; 0xf71cf parallel.c:70
+ mov bp, sp ; 89 e5 ; 0xf71d0
+ push si ; 56 ; 0xf71d2
+ push di ; 57 ; 0xf71d3
+ push ax ; 50 ; 0xf71d4
+ sti ; fb ; 0xf71d5 parallel.c:75
+ mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf71d6 parallel.c:77
+ add bx, bx ; 01 db ; 0xf71d9
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf71db
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf71de parallel.c:58
+ mov es, ax ; 8e c0 ; 0xf71e1
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf71e3
+ mov si, bx ; 89 de ; 0xf71e6 parallel.c:59
+ cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf71e8 parallel.c:78
+ jnc short 071fah ; 73 0c ; 0xf71ec
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf71ee
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf71f1
+ jnc short 071fah ; 73 04 ; 0xf71f4
+ test bx, bx ; 85 db ; 0xf71f6
+ jnbe short 071fdh ; 77 03 ; 0xf71f8
+ jmp near 07270h ; e9 73 00 ; 0xf71fa
+ mov di, ax ; 89 c7 ; 0xf71fd parallel.c:79
+ add di, strict byte 00078h ; 83 c7 78 ; 0xf71ff
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf7202 parallel.c:48
+ xor ch, ch ; 30 ed ; 0xf7205 parallel.c:49
+ sal cx, 008h ; c1 e1 08 ; 0xf7207
+ cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf720a parallel.c:80
+ jne short 0723ch ; 75 2c ; 0xf720e
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf7210 parallel.c:81
+ mov dx, bx ; 89 da ; 0xf7213
+ out DX, AL ; ee ; 0xf7215
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf7216 parallel.c:82
+ in AL, DX ; ec ; 0xf7219
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf721a
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf721c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf721f parallel.c:83
+ or AL, strict byte 001h ; 0c 01 ; 0xf7222
+ out DX, AL ; ee ; 0xf7224
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7225 parallel.c:84
+ and AL, strict byte 0feh ; 24 fe ; 0xf7228
+ out DX, AL ; ee ; 0xf722a
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf722b parallel.c:85
+ in AL, DX ; ec ; 0xf722e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf722f
+ test AL, strict byte 040h ; a8 40 ; 0xf7231
+ je short 0723ch ; 74 07 ; 0xf7233
+ test cx, cx ; 85 c9 ; 0xf7235
+ je short 0723ch ; 74 03 ; 0xf7237
+ dec cx ; 49 ; 0xf7239 parallel.c:86
+ jmp short 0722bh ; eb ef ; 0xf723a parallel.c:87
+ cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf723c parallel.c:89
+ jne short 07257h ; 75 15 ; 0xf7240
+ lea dx, [si+002h] ; 8d 54 02 ; 0xf7242 parallel.c:90
+ in AL, DX ; ec ; 0xf7245
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7246
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf7248
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf724b parallel.c:91
+ and AL, strict byte 0fbh ; 24 fb ; 0xf724e
+ out DX, AL ; ee ; 0xf7250
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7251 parallel.c:92
+ or AL, strict byte 004h ; 0c 04 ; 0xf7254
+ out DX, AL ; ee ; 0xf7256
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf7257 parallel.c:94
+ in AL, DX ; ec ; 0xf725a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf725b
+ xor AL, strict byte 048h ; 34 48 ; 0xf725d parallel.c:95
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf725f
+ test cx, cx ; 85 c9 ; 0xf7262 parallel.c:96
+ jne short 0726ah ; 75 04 ; 0xf7264
+ or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf7266
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf726a parallel.c:97
+ jmp short 07274h ; eb 04 ; 0xf726e parallel.c:98
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf7270 parallel.c:99
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7274 parallel.c:101
+ pop di ; 5f ; 0xf7277
+ pop si ; 5e ; 0xf7278
+ pop bp ; 5d ; 0xf7279
+ retn ; c3 ; 0xf727a
+ ; disGetNextSymbol 0xf727b LB 0x3b5d -> off=0x0 cb=00000000000000b7 uValue=00000000000f5c7b '_wait_'
+_wait_: ; 0xf727b LB 0xb7
+ push bp ; 55 ; 0xf727b logo.c:181
+ mov bp, sp ; 89 e5 ; 0xf727c
+ push bx ; 53 ; 0xf727e
+ push cx ; 51 ; 0xf727f
+ push si ; 56 ; 0xf7280
+ push di ; 57 ; 0xf7281
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf7282
+ mov si, ax ; 89 c6 ; 0xf7285
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf7287
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf728a logo.c:186
+ pushfw ; 9c ; 0xf728e logo.c:192
+ pop ax ; 58 ; 0xf728f
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7290
+ sti ; fb ; 0xf7293 logo.c:193
+ xor dx, dx ; 31 d2 ; 0xf7294 logo.c:199
+ mov bx, 0046ch ; bb 6c 04 ; 0xf7296 logo.c:68
+ mov es, dx ; 8e c2 ; 0xf7299
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf729b
+ mov cx, word [es:bx+002h] ; 26 8b 4f 02 ; 0xf729e
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf72a2 logo.c:69
+ hlt ; f4 ; 0xf72a5 logo.c:203
+ mov bx, 0046ch ; bb 6c 04 ; 0xf72a6 logo.c:68
+ xor ax, ax ; 31 c0 ; 0xf72a9
+ mov es, ax ; 8e c0 ; 0xf72ab
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf72ad
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf72b0
+ mov word [bp-012h], di ; 89 7e ee ; 0xf72b4 logo.c:69
+ mov bx, ax ; 89 c3 ; 0xf72b7
+ cmp ax, cx ; 39 c8 ; 0xf72b9 logo.c:205
+ jnbe short 072c4h ; 77 07 ; 0xf72bb
+ jne short 072cbh ; 75 0c ; 0xf72bd
+ cmp di, word [bp-00eh] ; 3b 7e f2 ; 0xf72bf
+ jbe short 072cbh ; 76 07 ; 0xf72c2
+ sub di, word [bp-00eh] ; 2b 7e f2 ; 0xf72c4 logo.c:207
+ sbb ax, cx ; 19 c8 ; 0xf72c7
+ jmp short 072d6h ; eb 0b ; 0xf72c9 logo.c:210
+ cmp ax, cx ; 39 c8 ; 0xf72cb
+ jc short 072d6h ; 72 07 ; 0xf72cd
+ jne short 072dah ; 75 09 ; 0xf72cf
+ cmp di, word [bp-00eh] ; 3b 7e f2 ; 0xf72d1
+ jnc short 072dah ; 73 04 ; 0xf72d4
+ sub si, di ; 29 fe ; 0xf72d6 logo.c:211
+ sbb dx, ax ; 19 c2 ; 0xf72d8
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf72da logo.c:212
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf72dd
+ mov cx, bx ; 89 d9 ; 0xf72e0
+ mov ax, 00100h ; b8 00 01 ; 0xf72e2 logo.c:214
+ int 016h ; cd 16 ; 0xf72e5
+ je short 072eeh ; 74 05 ; 0xf72e7
+ mov AL, strict byte 001h ; b0 01 ; 0xf72e9
+ jmp near 072f0h ; e9 02 00 ; 0xf72eb
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf72ee
+ test al, al ; 84 c0 ; 0xf72f0
+ je short 07317h ; 74 23 ; 0xf72f2
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf72f4 logo.c:216
+ int 016h ; cd 16 ; 0xf72f6
+ xchg ah, al ; 86 c4 ; 0xf72f8
+ mov bl, al ; 88 c3 ; 0xf72fa
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf72fc
+ xor ah, ah ; 30 e4 ; 0xf72ff logo.c:217
+ push ax ; 50 ; 0xf7301
+ push 009ech ; 68 ec 09 ; 0xf7302
+ push strict byte 00004h ; 6a 04 ; 0xf7305
+ call 01953h ; e8 49 a6 ; 0xf7307
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf730a
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf730d logo.c:218
+ je short 07317h ; 74 04 ; 0xf7311
+ mov al, bl ; 88 d8 ; 0xf7313 logo.c:219
+ jmp short 07329h ; eb 12 ; 0xf7315
+ test dx, dx ; 85 d2 ; 0xf7317 logo.c:221
+ jnle short 072a5h ; 7f 8a ; 0xf7319
+ jne short 07321h ; 75 04 ; 0xf731b
+ test si, si ; 85 f6 ; 0xf731d
+ jnbe short 072a5h ; 77 84 ; 0xf731f
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf7321 logo.c:222
+ push ax ; 50 ; 0xf7324
+ popfw ; 9d ; 0xf7325
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7326 logo.c:223
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7329 logo.c:224
+ pop di ; 5f ; 0xf732c
+ pop si ; 5e ; 0xf732d
+ pop cx ; 59 ; 0xf732e
+ pop bx ; 5b ; 0xf732f
+ pop bp ; 5d ; 0xf7330
+ retn ; c3 ; 0xf7331
+ ; disGetNextSymbol 0xf7332 LB 0x3aa6 -> off=0x0 cb=0000000000000016 uValue=00000000000f5d32 'read_logo_byte'
+read_logo_byte: ; 0xf7332 LB 0x16
+ push bp ; 55 ; 0xf7332 logo.c:226
+ mov bp, sp ; 89 e5 ; 0xf7333
+ push dx ; 52 ; 0xf7335
+ xor ah, ah ; 30 e4 ; 0xf7336 logo.c:228
+ or ah, 001h ; 80 cc 01 ; 0xf7338
+ mov dx, 003b8h ; ba b8 03 ; 0xf733b
+ out DX, ax ; ef ; 0xf733e
+ in AL, DX ; ec ; 0xf733f logo.c:229
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7340
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf7342 logo.c:230
+ pop dx ; 5a ; 0xf7345
+ pop bp ; 5d ; 0xf7346
+ retn ; c3 ; 0xf7347
+ ; disGetNextSymbol 0xf7348 LB 0x3a90 -> off=0x0 cb=0000000000000014 uValue=00000000000f5d48 'read_logo_word'
+read_logo_word: ; 0xf7348 LB 0x14
+ push bp ; 55 ; 0xf7348 logo.c:232
+ mov bp, sp ; 89 e5 ; 0xf7349
+ push dx ; 52 ; 0xf734b
+ xor ah, ah ; 30 e4 ; 0xf734c logo.c:234
+ or ah, 001h ; 80 cc 01 ; 0xf734e
+ mov dx, 003b8h ; ba b8 03 ; 0xf7351
+ out DX, ax ; ef ; 0xf7354
+ in ax, DX ; ed ; 0xf7355 logo.c:235
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf7356 logo.c:236
+ pop dx ; 5a ; 0xf7359
+ pop bp ; 5d ; 0xf735a
+ retn ; c3 ; 0xf735b
+ ; disGetNextSymbol 0xf735c LB 0x3a7c -> off=0x0 cb=000000000000013e uValue=00000000000f5d5c 'print_detected_harddisks'
+print_detected_harddisks: ; 0xf735c LB 0x13e
+ push bp ; 55 ; 0xf735c logo.c:255
+ mov bp, sp ; 89 e5 ; 0xf735d
+ push bx ; 53 ; 0xf735f
+ push cx ; 51 ; 0xf7360
+ push dx ; 52 ; 0xf7361
+ push si ; 56 ; 0xf7362
+ push di ; 57 ; 0xf7363
+ push ax ; 50 ; 0xf7364
+ push ax ; 50 ; 0xf7365
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7366 logo.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7369
+ mov es, ax ; 8e c0 ; 0xf736c
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf736e
+ mov di, ax ; 89 c7 ; 0xf7371 logo.c:59
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7373 logo.c:260
+ xor cl, cl ; 30 c9 ; 0xf7377 logo.c:261
+ xor ch, ch ; 30 ed ; 0xf7379 logo.c:262
+ mov bx, 002ach ; bb ac 02 ; 0xf737b logo.c:48
+ mov es, ax ; 8e c0 ; 0xf737e
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7380
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf7383 logo.c:49
+ xor bl, bl ; 30 db ; 0xf7386 logo.c:267
+ cmp bl, byte [bp-00eh] ; 3a 5e f2 ; 0xf7388
+ jnc short 073eah ; 73 5d ; 0xf738b
+ mov al, bl ; 88 d8 ; 0xf738d logo.c:269
+ xor ah, ah ; 30 e4 ; 0xf738f
+ mov si, ax ; 89 c6 ; 0xf7391
+ add si, 002adh ; 81 c6 ad 02 ; 0xf7393
+ mov es, di ; 8e c7 ; 0xf7397 logo.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7399
+ mov bh, al ; 88 c7 ; 0xf739c logo.c:49
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf739e logo.c:272
+ jc short 073c7h ; 72 25 ; 0xf73a0
+ test cl, cl ; 84 c9 ; 0xf73a2 logo.c:274
+ jne short 073b3h ; 75 0d ; 0xf73a4
+ push 009fdh ; 68 fd 09 ; 0xf73a6 logo.c:276
+ push strict byte 00002h ; 6a 02 ; 0xf73a9
+ call 01953h ; e8 a5 a5 ; 0xf73ab
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf73ae
+ mov CL, strict byte 001h ; b1 01 ; 0xf73b1 logo.c:277
+ mov al, bl ; 88 d8 ; 0xf73b3 logo.c:280
+ xor ah, ah ; 30 e4 ; 0xf73b5
+ inc ax ; 40 ; 0xf73b7
+ push ax ; 50 ; 0xf73b8
+ push 00a12h ; 68 12 0a ; 0xf73b9
+ push strict byte 00002h ; 6a 02 ; 0xf73bc
+ call 01953h ; e8 92 a5 ; 0xf73be
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf73c1
+ jmp near 07467h ; e9 a0 00 ; 0xf73c4 logo.c:283
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf73c7 logo.c:286
+ jc short 073deh ; 72 13 ; 0xf73c9
+ test ch, ch ; 84 ed ; 0xf73cb logo.c:288
+ jne short 073dch ; 75 0d ; 0xf73cd
+ push 00a25h ; 68 25 0a ; 0xf73cf logo.c:290
+ push strict byte 00002h ; 6a 02 ; 0xf73d2
+ call 01953h ; e8 7c a5 ; 0xf73d4
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf73d7
+ mov CH, strict byte 001h ; b5 01 ; 0xf73da logo.c:291
+ jmp short 073b3h ; eb d5 ; 0xf73dc logo.c:292
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf73de logo.c:301
+ jnc short 073feh ; 73 1c ; 0xf73e0
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf73e2
+ je short 073edh ; 74 05 ; 0xf73e6
+ jmp short 073feh ; eb 14 ; 0xf73e8
+ jmp near 0746ch ; e9 7f 00 ; 0xf73ea
+ push 00a3ah ; 68 3a 0a ; 0xf73ed logo.c:303
+ push strict byte 00002h ; 6a 02 ; 0xf73f0
+ call 01953h ; e8 5e a5 ; 0xf73f2
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf73f5
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf73f8 logo.c:304
+ jmp short 07414h ; eb 16 ; 0xf73fc logo.c:306
+ cmp bh, 004h ; 80 ff 04 ; 0xf73fe
+ jc short 07414h ; 72 11 ; 0xf7401
+ test cl, cl ; 84 c9 ; 0xf7403
+ jne short 07414h ; 75 0d ; 0xf7405
+ push 00a4ch ; 68 4c 0a ; 0xf7407 logo.c:308
+ push strict byte 00002h ; 6a 02 ; 0xf740a
+ call 01953h ; e8 44 a5 ; 0xf740c
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf740f
+ mov CL, strict byte 001h ; b1 01 ; 0xf7412 logo.c:309
+ mov al, bl ; 88 d8 ; 0xf7414 logo.c:312
+ xor ah, ah ; 30 e4 ; 0xf7416
+ inc ax ; 40 ; 0xf7418
+ push ax ; 50 ; 0xf7419
+ push 00a60h ; 68 60 0a ; 0xf741a
+ push strict byte 00002h ; 6a 02 ; 0xf741d
+ call 01953h ; e8 31 a5 ; 0xf741f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7422
+ cmp bh, 004h ; 80 ff 04 ; 0xf7425 logo.c:319
+ jc short 0742dh ; 72 03 ; 0xf7428
+ sub bh, 004h ; 80 ef 04 ; 0xf742a logo.c:320
+ mov al, bh ; 88 f8 ; 0xf742d logo.c:322
+ xor ah, ah ; 30 e4 ; 0xf742f
+ cwd ; 99 ; 0xf7431
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf7432
+ sar ax, 1 ; d1 f8 ; 0xf7434
+ test ax, ax ; 85 c0 ; 0xf7436
+ je short 0743fh ; 74 05 ; 0xf7438
+ push 00a6ah ; 68 6a 0a ; 0xf743a logo.c:323
+ jmp short 07442h ; eb 03 ; 0xf743d logo.c:324
+ push 00a75h ; 68 75 0a ; 0xf743f logo.c:325
+ push strict byte 00002h ; 6a 02 ; 0xf7442
+ call 01953h ; e8 0c a5 ; 0xf7444
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7447
+ mov al, bh ; 88 f8 ; 0xf744a logo.c:327
+ xor ah, ah ; 30 e4 ; 0xf744c
+ cwd ; 99 ; 0xf744e
+ mov si, strict word 00002h ; be 02 00 ; 0xf744f
+ idiv si ; f7 fe ; 0xf7452
+ test dx, dx ; 85 d2 ; 0xf7454
+ je short 0745dh ; 74 05 ; 0xf7456
+ push 00a7eh ; 68 7e 0a ; 0xf7458 logo.c:328
+ jmp short 07460h ; eb 03 ; 0xf745b logo.c:329
+ push 00a84h ; 68 84 0a ; 0xf745d logo.c:330
+ push si ; 56 ; 0xf7460
+ call 01953h ; e8 ef a4 ; 0xf7461
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7464
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf7467 logo.c:332
+ jmp near 07388h ; e9 1c ff ; 0xf7469
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf746c logo.c:334
+ jne short 07485h ; 75 13 ; 0xf7470
+ test cl, cl ; 84 c9 ; 0xf7472
+ jne short 07485h ; 75 0f ; 0xf7474
+ test ch, ch ; 84 ed ; 0xf7476
+ jne short 07485h ; 75 0b ; 0xf7478
+ push 00a8bh ; 68 8b 0a ; 0xf747a logo.c:337
+ push strict byte 00002h ; 6a 02 ; 0xf747d
+ call 01953h ; e8 d1 a4 ; 0xf747f
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7482
+ push 00a9fh ; 68 9f 0a ; 0xf7485 logo.c:339
+ push strict byte 00002h ; 6a 02 ; 0xf7488
+ call 01953h ; e8 c6 a4 ; 0xf748a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf748d
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7490 logo.c:340
+ pop di ; 5f ; 0xf7493
+ pop si ; 5e ; 0xf7494
+ pop dx ; 5a ; 0xf7495
+ pop cx ; 59 ; 0xf7496
+ pop bx ; 5b ; 0xf7497
+ pop bp ; 5d ; 0xf7498
+ retn ; c3 ; 0xf7499
+ ; disGetNextSymbol 0xf749a LB 0x393e -> off=0x0 cb=0000000000000024 uValue=00000000000f5e9a 'get_boot_drive'
+get_boot_drive: ; 0xf749a LB 0x24
+ push bx ; 53 ; 0xf749a logo.c:342
+ push dx ; 52 ; 0xf749b
+ push bp ; 55 ; 0xf749c
+ mov bp, sp ; 89 e5 ; 0xf749d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf749f logo.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf74a2
+ mov es, dx ; 8e c2 ; 0xf74a5
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf74a7
+ mov bx, 002ach ; bb ac 02 ; 0xf74aa logo.c:48
+ mov es, dx ; 8e c2 ; 0xf74ad
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf74af
+ sub AL, strict byte 002h ; 2c 02 ; 0xf74b2 logo.c:350
+ cmp al, dl ; 38 d0 ; 0xf74b4 logo.c:352
+ jc short 074bah ; 72 02 ; 0xf74b6
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf74b8 logo.c:353
+ pop bp ; 5d ; 0xf74ba logo.c:357
+ pop dx ; 5a ; 0xf74bb
+ pop bx ; 5b ; 0xf74bc
+ retn ; c3 ; 0xf74bd
+ ; disGetNextSymbol 0xf74be LB 0x391a -> off=0x0 cb=0000000000000252 uValue=00000000000f5ebe 'show_logo'
+show_logo: ; 0xf74be LB 0x252
+ push bp ; 55 ; 0xf74be logo.c:359
+ mov bp, sp ; 89 e5 ; 0xf74bf
+ push bx ; 53 ; 0xf74c1
+ push cx ; 51 ; 0xf74c2
+ push dx ; 52 ; 0xf74c3
+ push si ; 56 ; 0xf74c4
+ push di ; 57 ; 0xf74c5
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf74c6
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf74c9 logo.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf74cc
+ mov es, ax ; 8e c0 ; 0xf74cf
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf74d1
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf74d4 logo.c:362
+ xor dx, dx ; 31 d2 ; 0xf74d8 logo.c:366
+ mov AL, strict byte 034h ; b0 34 ; 0xf74da logo.c:373
+ out strict byte 043h, AL ; e6 43 ; 0xf74dc
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf74de
+ out strict byte 040h, AL ; e6 40 ; 0xf74e0
+ mov AL, strict byte 048h ; b0 48 ; 0xf74e2
+ out strict byte 040h, AL ; e6 40 ; 0xf74e4
+ mov al, dl ; 88 d0 ; 0xf74e6 logo.c:376
+ xor ah, ah ; 30 e4 ; 0xf74e8
+ call 07348h ; e8 5b fe ; 0xf74ea
+ cmp ax, 066bbh ; 3d bb 66 ; 0xf74ed logo.c:377
+ jne short 07504h ; 75 12 ; 0xf74f0
+ push SS ; 16 ; 0xf74f2 logo.c:381
+ pop ES ; 07 ; 0xf74f3
+ lea di, [bp-018h] ; 8d 7e e8 ; 0xf74f4
+ mov ax, 04f03h ; b8 03 4f ; 0xf74f7
+ int 010h ; cd 10 ; 0xf74fa
+ mov word [es:di], bx ; 26 89 1d ; 0xf74fc
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf74ff
+ je short 07507h ; 74 03 ; 0xf7502
+ jmp near 075efh ; e9 e8 00 ; 0xf7504 logo.c:382
+ mov al, dl ; 88 d0 ; 0xf7507 logo.c:385
+ add AL, strict byte 004h ; 04 04 ; 0xf7509
+ xor ah, ah ; 30 e4 ; 0xf750b
+ call 07332h ; e8 22 fe ; 0xf750d
+ mov cl, al ; 88 c1 ; 0xf7510
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf7512
+ mov al, dl ; 88 d0 ; 0xf7515 logo.c:386
+ add AL, strict byte 005h ; 04 05 ; 0xf7517
+ xor ah, ah ; 30 e4 ; 0xf7519
+ call 07332h ; e8 14 fe ; 0xf751b
+ mov dh, al ; 88 c6 ; 0xf751e
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf7520
+ mov al, dl ; 88 d0 ; 0xf7523 logo.c:387
+ add AL, strict byte 002h ; 04 02 ; 0xf7525
+ xor ah, ah ; 30 e4 ; 0xf7527
+ call 07348h ; e8 1c fe ; 0xf7529
+ mov bx, ax ; 89 c3 ; 0xf752c
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf752e
+ mov al, dl ; 88 d0 ; 0xf7531 logo.c:388
+ add AL, strict byte 006h ; 04 06 ; 0xf7533
+ xor ah, ah ; 30 e4 ; 0xf7535
+ call 07332h ; e8 f8 fd ; 0xf7537
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf753a
+ test cl, cl ; 84 c9 ; 0xf753d logo.c:391
+ jne short 07549h ; 75 08 ; 0xf753f
+ test dh, dh ; 84 f6 ; 0xf7541
+ jne short 07549h ; 75 04 ; 0xf7543
+ test bx, bx ; 85 db ; 0xf7545
+ je short 07504h ; 74 bb ; 0xf7547
+ mov BH, strict byte 020h ; b7 20 ; 0xf7549 logo.c:395
+ mov dx, 001e0h ; ba e0 01 ; 0xf754b
+ mov cx, 00280h ; b9 80 02 ; 0xf754e
+ mov ax, 05642h ; b8 42 56 ; 0xf7551
+ mov BL, strict byte 000h ; b3 00 ; 0xf7554
+ int 010h ; cd 10 ; 0xf7556
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7558 logo.c:397
+ je short 07565h ; 74 08 ; 0xf755b
+ mov bx, 00142h ; bb 42 01 ; 0xf755d logo.c:398
+ mov ax, 04f02h ; b8 02 4f ; 0xf7560
+ int 010h ; cd 10 ; 0xf7563
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7565 logo.c:400
+ je short 07590h ; 74 25 ; 0xf7569
+ xor bx, bx ; 31 db ; 0xf756b logo.c:402
+ jmp short 07575h ; eb 06 ; 0xf756d
+ inc bx ; 43 ; 0xf756f logo.c:404
+ cmp bx, strict byte 00010h ; 83 fb 10 ; 0xf7570
+ jnbe short 07597h ; 77 22 ; 0xf7573
+ mov ax, bx ; 89 d8 ; 0xf7575
+ or ah, 002h ; 80 cc 02 ; 0xf7577
+ mov dx, 003b8h ; ba b8 03 ; 0xf757a
+ out DX, ax ; ef ; 0xf757d
+ xor dx, dx ; 31 d2 ; 0xf757e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7580
+ call 0727bh ; e8 f5 fc ; 0xf7583
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7586
+ jne short 0756fh ; 75 e5 ; 0xf7588
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf758a
+ jmp short 07597h ; eb 07 ; 0xf758e
+ mov ax, 00210h ; b8 10 02 ; 0xf7590 logo.c:414
+ mov dx, 003b8h ; ba b8 03 ; 0xf7593
+ out DX, ax ; ef ; 0xf7596
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7597 logo.c:417
+ jne short 075b1h ; 75 14 ; 0xf759b
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf759d logo.c:419
+ shr ax, 004h ; c1 e8 04 ; 0xf75a0
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf75a3
+ call 0727bh ; e8 d2 fc ; 0xf75a6
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf75a9 logo.c:420
+ jne short 075b1h ; 75 04 ; 0xf75ab
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf75ad logo.c:421
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf75b1 logo.c:425
+ je short 075e2h ; 74 2b ; 0xf75b5
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf75b7
+ jne short 075e2h ; 75 25 ; 0xf75bb
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf75bd logo.c:427
+ jmp short 075c7h ; eb 05 ; 0xf75c0
+ dec bx ; 4b ; 0xf75c2 logo.c:429
+ test bx, bx ; 85 db ; 0xf75c3
+ jbe short 075efh ; 76 28 ; 0xf75c5
+ mov ax, bx ; 89 d8 ; 0xf75c7
+ or ah, 002h ; 80 cc 02 ; 0xf75c9
+ mov dx, 003b8h ; ba b8 03 ; 0xf75cc
+ out DX, ax ; ef ; 0xf75cf
+ xor dx, dx ; 31 d2 ; 0xf75d0
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf75d2
+ call 0727bh ; e8 a3 fc ; 0xf75d5
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf75d8
+ jne short 075c2h ; 75 e6 ; 0xf75da
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf75dc
+ jmp short 075efh ; eb 0d ; 0xf75e0
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf75e2 logo.c:438
+ jne short 075efh ; 75 07 ; 0xf75e6
+ mov ax, 00200h ; b8 00 02 ; 0xf75e8 logo.c:439
+ mov dx, 003b8h ; ba b8 03 ; 0xf75eb
+ out DX, ax ; ef ; 0xf75ee
+ mov bx, 00331h ; bb 31 03 ; 0xf75ef logo.c:53
+ mov es, si ; 8e c6 ; 0xf75f2
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf75f4
+ mov AL, strict byte 003h ; b0 03 ; 0xf75f8 logo.c:447
+ mov AH, strict byte 000h ; b4 00 ; 0xf75fa
+ int 010h ; cd 10 ; 0xf75fc
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf75fe logo.c:450
+ je short 07618h ; 74 14 ; 0xf7602
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7604 logo.c:453
+ jne short 07643h ; 75 39 ; 0xf7608
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf760a
+ jne short 07643h ; 75 33 ; 0xf760e
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf7610
+ je short 0761bh ; 74 05 ; 0xf7614
+ jmp short 07643h ; eb 2b ; 0xf7616
+ jmp near 076f3h ; e9 d8 00 ; 0xf7618
+ cmp byte [bp-00ch], 002h ; 80 7e f4 02 ; 0xf761b logo.c:455
+ jne short 0762ch ; 75 0b ; 0xf761f
+ push 00aa1h ; 68 a1 0a ; 0xf7621 logo.c:456
+ push strict byte 00002h ; 6a 02 ; 0xf7624
+ call 01953h ; e8 2a a3 ; 0xf7626
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7629
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf762c logo.c:459
+ jne short 07643h ; 75 11 ; 0xf7630
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7632 logo.c:462
+ mov ax, 000c0h ; b8 c0 00 ; 0xf7635
+ call 0727bh ; e8 40 fc ; 0xf7638
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf763b logo.c:463
+ jne short 07643h ; 75 04 ; 0xf763d
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf763f logo.c:464
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7643 logo.c:469
+ je short 07618h ; 74 cf ; 0xf7647
+ mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7649 logo.c:471
+ mov ax, 00100h ; b8 00 01 ; 0xf764d logo.c:474
+ mov cx, 01000h ; b9 00 10 ; 0xf7650
+ int 010h ; cd 10 ; 0xf7653
+ mov ax, 00700h ; b8 00 07 ; 0xf7655
+ mov BH, strict byte 007h ; b7 07 ; 0xf7658
+ db 033h, 0c9h
+ ; xor cx, cx ; 33 c9 ; 0xf765a
+ mov dx, 0184fh ; ba 4f 18 ; 0xf765c
+ int 010h ; cd 10 ; 0xf765f
+ mov ax, 00200h ; b8 00 02 ; 0xf7661
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf7664
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf7666
+ int 010h ; cd 10 ; 0xf7668
+ push 00ac3h ; 68 c3 0a ; 0xf766a logo.c:477
+ push strict byte 00002h ; 6a 02 ; 0xf766d
+ call 01953h ; e8 e1 a2 ; 0xf766f
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7672
+ call 0735ch ; e8 e4 fc ; 0xf7675 logo.c:478
+ push 00b07h ; 68 07 0b ; 0xf7678 logo.c:479
+ push strict byte 00002h ; 6a 02 ; 0xf767b
+ call 01953h ; e8 d3 a2 ; 0xf767d
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7680
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7683 logo.c:488
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7686
+ call 0727bh ; e8 ef fb ; 0xf7689
+ mov bl, al ; 88 c3 ; 0xf768c
+ test al, al ; 84 c0 ; 0xf768e logo.c:489
+ je short 07683h ; 74 f1 ; 0xf7690
+ cmp AL, strict byte 030h ; 3c 30 ; 0xf7692 logo.c:491
+ je short 076e2h ; 74 4c ; 0xf7694
+ cmp bl, 002h ; 80 fb 02 ; 0xf7696 logo.c:498
+ jc short 076bbh ; 72 20 ; 0xf7699
+ cmp bl, 009h ; 80 fb 09 ; 0xf769b
+ jnbe short 076bbh ; 77 1b ; 0xf769e
+ mov al, bl ; 88 d8 ; 0xf76a0 logo.c:500
+ xor ah, ah ; 30 e4 ; 0xf76a2
+ call 0749ah ; e8 f3 fd ; 0xf76a4
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf76a7 logo.c:507
+ jne short 076adh ; 75 02 ; 0xf76a9
+ jmp short 07683h ; eb d6 ; 0xf76ab logo.c:508
+ mov bx, 00330h ; bb 30 03 ; 0xf76ad logo.c:53
+ mov es, si ; 8e c6 ; 0xf76b0
+ mov byte [es:bx], al ; 26 88 07 ; 0xf76b2
+ mov byte [bp-010h], 002h ; c6 46 f0 02 ; 0xf76b5 logo.c:511
+ jmp short 076e2h ; eb 27 ; 0xf76b9 logo.c:512
+ cmp bl, 02eh ; 80 fb 2e ; 0xf76bb logo.c:515
+ je short 076d0h ; 74 10 ; 0xf76be
+ cmp bl, 026h ; 80 fb 26 ; 0xf76c0
+ je short 076d6h ; 74 11 ; 0xf76c3
+ cmp bl, 021h ; 80 fb 21 ; 0xf76c5
+ jne short 076dch ; 75 12 ; 0xf76c8
+ mov byte [bp-010h], 001h ; c6 46 f0 01 ; 0xf76ca logo.c:519
+ jmp short 076e2h ; eb 12 ; 0xf76ce logo.c:520
+ mov byte [bp-010h], 003h ; c6 46 f0 03 ; 0xf76d0 logo.c:523
+ jmp short 076e2h ; eb 0c ; 0xf76d4 logo.c:524
+ mov byte [bp-010h], 004h ; c6 46 f0 04 ; 0xf76d6 logo.c:527
+ jmp short 076e2h ; eb 06 ; 0xf76da logo.c:528
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf76dc logo.c:531
+ je short 07683h ; 74 a1 ; 0xf76e0
+ mov bx, 00331h ; bb 31 03 ; 0xf76e2 logo.c:53
+ mov es, si ; 8e c6 ; 0xf76e5
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf76e7
+ mov byte [es:bx], al ; 26 88 07 ; 0xf76ea
+ mov AL, strict byte 003h ; b0 03 ; 0xf76ed logo.c:538
+ mov AH, strict byte 000h ; b4 00 ; 0xf76ef
+ int 010h ; cd 10 ; 0xf76f1
+ mov AL, strict byte 034h ; b0 34 ; 0xf76f3 logo.c:543
+ out strict byte 043h, AL ; e6 43 ; 0xf76f5
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf76f7
+ out strict byte 040h, AL ; e6 40 ; 0xf76f9
+ out strict byte 040h, AL ; e6 40 ; 0xf76fb
+ push bp ; 55 ; 0xf76fd
+ push DS ; 1e ; 0xf76fe
+ mov ds, ax ; 8e d8 ; 0xf76ff
+ call 0edbfh ; e8 bb 76 ; 0xf7701
+ pop DS ; 1f ; 0xf7704
+ pop bp ; 5d ; 0xf7705
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7706 logo.c:546
+ pop di ; 5f ; 0xf7709
+ pop si ; 5e ; 0xf770a
+ pop dx ; 5a ; 0xf770b
+ pop cx ; 59 ; 0xf770c
+ pop bx ; 5b ; 0xf770d
+ pop bp ; 5d ; 0xf770e
+ retn ; c3 ; 0xf770f
+ ; disGetNextSymbol 0xf7710 LB 0x36c8 -> off=0x0 cb=000000000000006b uValue=00000000000f6110 'delay_boot'
+delay_boot: ; 0xf7710 LB 0x6b
+ push bp ; 55 ; 0xf7710 logo.c:549
+ mov bp, sp ; 89 e5 ; 0xf7711
+ push bx ; 53 ; 0xf7713
+ push cx ; 51 ; 0xf7714
+ push dx ; 52 ; 0xf7715
+ push si ; 56 ; 0xf7716
+ push di ; 57 ; 0xf7717
+ mov dx, ax ; 89 c2 ; 0xf7718
+ test ax, ax ; 85 c0 ; 0xf771a logo.c:553
+ je short 07771h ; 74 53 ; 0xf771c
+ mov AL, strict byte 034h ; b0 34 ; 0xf771e logo.c:557
+ out strict byte 043h, AL ; e6 43 ; 0xf7720
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7722
+ out strict byte 040h, AL ; e6 40 ; 0xf7724
+ mov AL, strict byte 048h ; b0 48 ; 0xf7726
+ out strict byte 040h, AL ; e6 40 ; 0xf7728
+ push dx ; 52 ; 0xf772a logo.c:559
+ push 00b51h ; 68 51 0b ; 0xf772b
+ push strict byte 00002h ; 6a 02 ; 0xf772e
+ call 01953h ; e8 20 a2 ; 0xf7730
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7733
+ mov bx, dx ; 89 d3 ; 0xf7736 logo.c:560
+ test bx, bx ; 85 db ; 0xf7738
+ jbe short 07753h ; 76 17 ; 0xf773a
+ push bx ; 53 ; 0xf773c logo.c:562
+ push 00b6fh ; 68 6f 0b ; 0xf773d
+ push strict byte 00002h ; 6a 02 ; 0xf7740
+ call 01953h ; e8 0e a2 ; 0xf7742
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7745
+ xor dx, dx ; 31 d2 ; 0xf7748 logo.c:563
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf774a
+ call 0727bh ; e8 2b fb ; 0xf774d
+ dec bx ; 4b ; 0xf7750 logo.c:564
+ jmp short 07738h ; eb e5 ; 0xf7751
+ push 00a9fh ; 68 9f 0a ; 0xf7753 logo.c:565
+ push strict byte 00002h ; 6a 02 ; 0xf7756
+ call 01953h ; e8 f8 a1 ; 0xf7758
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf775b
+ mov AL, strict byte 034h ; b0 34 ; 0xf775e logo.c:567
+ out strict byte 043h, AL ; e6 43 ; 0xf7760
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7762
+ out strict byte 040h, AL ; e6 40 ; 0xf7764
+ out strict byte 040h, AL ; e6 40 ; 0xf7766
+ push bp ; 55 ; 0xf7768
+ push DS ; 1e ; 0xf7769
+ mov ds, ax ; 8e d8 ; 0xf776a
+ call 0edbfh ; e8 50 76 ; 0xf776c
+ pop DS ; 1f ; 0xf776f
+ pop bp ; 5d ; 0xf7770
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7771 logo.c:568
+ pop di ; 5f ; 0xf7774
+ pop si ; 5e ; 0xf7775
+ pop dx ; 5a ; 0xf7776
+ pop cx ; 59 ; 0xf7777
+ pop bx ; 5b ; 0xf7778
+ pop bp ; 5d ; 0xf7779
+ retn ; c3 ; 0xf777a
+ ; disGetNextSymbol 0xf777b LB 0x365d -> off=0x0 cb=000000000000003a uValue=00000000000f617b 'scsi_hba_mem_alloc'
+scsi_hba_mem_alloc: ; 0xf777b LB 0x3a
+ push bx ; 53 ; 0xf777b scsi.c:108
+ push cx ; 51 ; 0xf777c
+ push dx ; 52 ; 0xf777d
+ push di ; 57 ; 0xf777e
+ push bp ; 55 ; 0xf777f
+ mov bp, sp ; 89 e5 ; 0xf7780
+ mov di, 00413h ; bf 13 04 ; 0xf7782 scsi.c:58
+ xor ax, ax ; 31 c0 ; 0xf7785
+ mov es, ax ; 8e c0 ; 0xf7787
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf7789
+ test ax, ax ; 85 c0 ; 0xf778c scsi.c:117
+ je short 077afh ; 74 1f ; 0xf778e
+ dec ax ; 48 ; 0xf7790 scsi.c:118
+ mov bx, ax ; 89 c3 ; 0xf7791
+ xor dx, dx ; 31 d2 ; 0xf7793 scsi.c:121
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf7795
+ sal ax, 1 ; d1 e0 ; 0xf7798
+ rcl dx, 1 ; d1 d2 ; 0xf779a
+ loop 07798h ; e2 fa ; 0xf779c
+ mov di, dx ; 89 d7 ; 0xf779e
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf77a0
+ shr di, 1 ; d1 ef ; 0xf77a3
+ rcr ax, 1 ; d1 d8 ; 0xf77a5
+ loop 077a3h ; e2 fa ; 0xf77a7
+ mov di, 00413h ; bf 13 04 ; 0xf77a9 scsi.c:63
+ mov word [es:di], bx ; 26 89 1d ; 0xf77ac
+ pop bp ; 5d ; 0xf77af scsi.c:126
+ pop di ; 5f ; 0xf77b0
+ pop dx ; 5a ; 0xf77b1
+ pop cx ; 59 ; 0xf77b2
+ pop bx ; 5b ; 0xf77b3
+ retn ; c3 ; 0xf77b4
+ ; disGetNextSymbol 0xf77b5 LB 0x3623 -> off=0x0 cb=0000000000000106 uValue=00000000000f61b5 'scsi_read_sectors'
+scsi_read_sectors: ; 0xf77b5 LB 0x106
+ push bp ; 55 ; 0xf77b5 scsi.c:135
+ mov bp, sp ; 89 e5 ; 0xf77b6
+ push si ; 56 ; 0xf77b8
+ push di ; 57 ; 0xf77b9
+ sub sp, strict byte 0001ah ; 83 ec 1a ; 0xf77ba
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf77bd
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf77c0 scsi.c:146
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf77c3
+ sub AL, strict byte 008h ; 2c 08 ; 0xf77c7
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf77c9
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf77cc scsi.c:147
+ jbe short 077e1h ; 76 11 ; 0xf77ce
+ xor ah, ah ; 30 e4 ; 0xf77d0 scsi.c:148
+ push ax ; 50 ; 0xf77d2
+ push 00b74h ; 68 74 0b ; 0xf77d3
+ push 00b86h ; 68 86 0b ; 0xf77d6
+ push strict byte 00007h ; 6a 07 ; 0xf77d9
+ call 01953h ; e8 75 a1 ; 0xf77db
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf77de
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf77e1 scsi.c:150
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf77e4
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf77e8
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf77eb scsi.c:85
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf77ef
+ mov word [bp-01eh], 00088h ; c7 46 e2 88 00 ; 0xf77f2 scsi.c:155
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf77f7 scsi.c:156
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf77fa
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf77fe
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7802
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7806
+ xchg ah, al ; 86 c4 ; 0xf7809
+ xchg bh, bl ; 86 df ; 0xf780b
+ xchg ch, cl ; 86 cd ; 0xf780d
+ xchg dh, dl ; 86 d6 ; 0xf780f
+ xchg dx, ax ; 92 ; 0xf7811
+ xchg bx, cx ; 87 cb ; 0xf7812
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf7814
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf7817
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf781a
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf781d
+ mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7820 scsi.c:157
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7824 scsi.c:158
+ xor dx, dx ; 31 d2 ; 0xf7827
+ xchg ah, al ; 86 c4 ; 0xf7829
+ xchg dh, dl ; 86 d6 ; 0xf782b
+ xchg dx, ax ; 92 ; 0xf782d
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf782e
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf7831
+ mov byte [bp-00fh], 000h ; c6 46 f1 00 ; 0xf7834 scsi.c:159
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7838 scsi.c:162
+ xor ah, ah ; 30 e4 ; 0xf783b
+ sal ax, 002h ; c1 e0 02 ; 0xf783d
+ mov bx, si ; 89 f3 ; 0xf7840
+ add bx, ax ; 01 c3 ; 0xf7842
+ mov dx, word [es:bx+00290h] ; 26 8b 97 90 02 ; 0xf7844
+ mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7849 scsi.c:163
+ mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf784e scsi.c:164
+ xor ah, ah ; 30 e4 ; 0xf7853 scsi.c:169
+ imul di, ax, strict byte 0000ch ; 6b f8 0c ; 0xf7855
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7858
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf785b
+ xor ax, ax ; 31 c0 ; 0xf785e
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf7860
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7863
+ sal word [bp-00eh], 1 ; d1 66 f2 ; 0xf7866
+ rcl word [bp-00ch], 1 ; d1 56 f4 ; 0xf7869
+ loop 07866h ; e2 f8 ; 0xf786c
+ push word [bp-00ch] ; ff 76 f4 ; 0xf786e
+ push word [bp-00eh] ; ff 76 f2 ; 0xf7871
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7874
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7878
+ push strict byte 00010h ; 6a 10 ; 0xf787c
+ lea cx, [bp-01eh] ; 8d 4e e2 ; 0xf787e
+ push SS ; 16 ; 0xf7881
+ push cx ; 51 ; 0xf7882
+ xor bh, bh ; 30 ff ; 0xf7883
+ call word [di+000a4h] ; ff 95 a4 00 ; 0xf7885
+ mov dl, al ; 88 c2 ; 0xf7889
+ test al, al ; 84 c0 ; 0xf788b scsi.c:171
+ jne short 078a7h ; 75 18 ; 0xf788d
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf788f scsi.c:173
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7892
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf7895
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7899 scsi.c:174
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf789c
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf78a0
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf78a3
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf78a7 scsi.c:88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf78aa scsi.c:90
+ mov al, dl ; 88 d0 ; 0xf78ae scsi.c:179
+ xor ah, ah ; 30 e4 ; 0xf78b0
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf78b2 scsi.c:180
+ pop di ; 5f ; 0xf78b5
+ pop si ; 5e ; 0xf78b6
+ pop bp ; 5d ; 0xf78b7
+ retn 00004h ; c2 04 00 ; 0xf78b8
+ ; disGetNextSymbol 0xf78bb LB 0x351d -> off=0x0 cb=0000000000000106 uValue=00000000000f62bb 'scsi_write_sectors'
+scsi_write_sectors: ; 0xf78bb LB 0x106
+ push bp ; 55 ; 0xf78bb scsi.c:189
+ mov bp, sp ; 89 e5 ; 0xf78bc
+ push si ; 56 ; 0xf78be
+ push di ; 57 ; 0xf78bf
+ sub sp, strict byte 0001ah ; 83 ec 1a ; 0xf78c0
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf78c3
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf78c6 scsi.c:200
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf78c9
+ sub AL, strict byte 008h ; 2c 08 ; 0xf78cd
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf78cf
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf78d2 scsi.c:201
+ jbe short 078e7h ; 76 11 ; 0xf78d4
+ xor ah, ah ; 30 e4 ; 0xf78d6 scsi.c:202
+ push ax ; 50 ; 0xf78d8
+ push 00ba5h ; 68 a5 0b ; 0xf78d9
+ push 00b86h ; 68 86 0b ; 0xf78dc
+ push strict byte 00007h ; 6a 07 ; 0xf78df
+ call 01953h ; e8 6f a0 ; 0xf78e1
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf78e4
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf78e7 scsi.c:204
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf78ea
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf78ee
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf78f1 scsi.c:85
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf78f5
+ mov word [bp-01eh], 0008ah ; c7 46 e2 8a 00 ; 0xf78f8 scsi.c:209
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf78fd scsi.c:210
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7900
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7904
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7908
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf790c
+ xchg ah, al ; 86 c4 ; 0xf790f
+ xchg bh, bl ; 86 df ; 0xf7911
+ xchg ch, cl ; 86 cd ; 0xf7913
+ xchg dh, dl ; 86 d6 ; 0xf7915
+ xchg dx, ax ; 92 ; 0xf7917
+ xchg bx, cx ; 87 cb ; 0xf7918
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf791a
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf791d
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf7920
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf7923
+ mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7926 scsi.c:211
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf792a scsi.c:212
+ xor dx, dx ; 31 d2 ; 0xf792d
+ xchg ah, al ; 86 c4 ; 0xf792f
+ xchg dh, dl ; 86 d6 ; 0xf7931
+ xchg dx, ax ; 92 ; 0xf7933
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf7934
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf7937
+ mov byte [bp-00fh], 000h ; c6 46 f1 00 ; 0xf793a scsi.c:213
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf793e scsi.c:215
+ xor ah, ah ; 30 e4 ; 0xf7941
+ sal ax, 002h ; c1 e0 02 ; 0xf7943
+ mov bx, si ; 89 f3 ; 0xf7946
+ add bx, ax ; 01 c3 ; 0xf7948
+ mov dx, word [es:bx+00290h] ; 26 8b 97 90 02 ; 0xf794a
+ mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf794f scsi.c:216
+ mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf7954 scsi.c:217
+ xor ah, ah ; 30 e4 ; 0xf7959 scsi.c:222
+ imul di, ax, strict byte 0000ch ; 6b f8 0c ; 0xf795b
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf795e
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7961
+ xor ax, ax ; 31 c0 ; 0xf7964
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf7966
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7969
+ sal word [bp-00eh], 1 ; d1 66 f2 ; 0xf796c
+ rcl word [bp-00ch], 1 ; d1 56 f4 ; 0xf796f
+ loop 0796ch ; e2 f8 ; 0xf7972
+ push word [bp-00ch] ; ff 76 f4 ; 0xf7974
+ push word [bp-00eh] ; ff 76 f2 ; 0xf7977
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf797a
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf797e
+ push strict byte 00010h ; 6a 10 ; 0xf7982
+ lea cx, [bp-01eh] ; 8d 4e e2 ; 0xf7984
+ push SS ; 16 ; 0xf7987
+ push cx ; 51 ; 0xf7988
+ xor bh, bh ; 30 ff ; 0xf7989
+ call word [di+000a2h] ; ff 95 a2 00 ; 0xf798b
+ mov dl, al ; 88 c2 ; 0xf798f
+ test al, al ; 84 c0 ; 0xf7991 scsi.c:224
+ jne short 079adh ; 75 18 ; 0xf7993
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7995 scsi.c:226
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7998
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf799b
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf799f scsi.c:227
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf79a2
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf79a6
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf79a9
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf79ad scsi.c:88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf79b0 scsi.c:90
+ mov al, dl ; 88 d0 ; 0xf79b4 scsi.c:232
+ xor ah, ah ; 30 e4 ; 0xf79b6
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf79b8 scsi.c:233
+ pop di ; 5f ; 0xf79bb
+ pop si ; 5e ; 0xf79bc
+ pop bp ; 5d ; 0xf79bd
+ retn 00004h ; c2 04 00 ; 0xf79be
+ ; disGetNextSymbol 0xf79c1 LB 0x3417 -> off=0x0 cb=0000000000000111 uValue=00000000000f63c1 'scsi_cmd_packet'
+scsi_cmd_packet: ; 0xf79c1 LB 0x111
+ push bp ; 55 ; 0xf79c1 scsi.c:252
+ mov bp, sp ; 89 e5 ; 0xf79c2
+ push si ; 56 ; 0xf79c4
+ push di ; 57 ; 0xf79c5
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf79c6
+ mov di, ax ; 89 c7 ; 0xf79c9
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf79cb
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf79ce
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xf79d1
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf79d4 scsi.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf79d7
+ mov es, ax ; 8e c0 ; 0xf79da
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf79dc
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf79df scsi.c:59
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf79e2
+ cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf79e5 scsi.c:263
+ jne short 07a0ah ; 75 1f ; 0xf79e9
+ mov bx, 00ddch ; bb dc 0d ; 0xf79eb scsi.c:264
+ mov cx, ds ; 8c d9 ; 0xf79ee
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf79f0
+ call 01910h ; e8 1a 9f ; 0xf79f3
+ push 00bb8h ; 68 b8 0b ; 0xf79f6
+ push 00bc8h ; 68 c8 0b ; 0xf79f9
+ push strict byte 00004h ; 6a 04 ; 0xf79fc
+ call 01953h ; e8 52 9f ; 0xf79fe
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7a01
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7a04 scsi.c:265
+ jmp near 07ac9h ; e9 bf 00 ; 0xf7a07
+ sub di, strict byte 00008h ; 83 ef 08 ; 0xf7a0a scsi.c:269
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf7a0d scsi.c:85
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf7a11
+ mov bx, di ; 89 fb ; 0xf7a14 scsi.c:277
+ sal bx, 002h ; c1 e3 02 ; 0xf7a16
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf7a19
+ add bx, si ; 01 f3 ; 0xf7a1c
+ mov ax, word [es:bx+00290h] ; 26 8b 87 90 02 ; 0xf7a1e
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7a23
+ mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7a26 scsi.c:278
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf7a2b
+ mov al, byte [es:bx+00293h] ; 26 8a 87 93 02 ; 0xf7a2e scsi.c:279
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7a33
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7a36 scsi.c:281
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7a39
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7a3c
+ sal ax, 1 ; d1 e0 ; 0xf7a3f
+ rcl dx, 1 ; d1 d2 ; 0xf7a41
+ loop 07a3fh ; e2 fa ; 0xf7a43
+ mov word [es:si], ax ; 26 89 04 ; 0xf7a45
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf7a48
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf7a4c
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf7a52
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf7a58 scsi.c:282
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf7a5b
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf7a5f
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf7a62
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf7a66 scsi.c:283
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7a6a
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7a6d
+ xor cx, cx ; 31 c9 ; 0xf7a70
+ call 0aa60h ; e8 eb 2f ; 0xf7a72
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf7a75
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7a79 scsi.c:288
+ xor ah, ah ; 30 e4 ; 0xf7a7c
+ imul di, ax, strict byte 0000ch ; 6b f8 0c ; 0xf7a7e
+ push word [bp+006h] ; ff 76 06 ; 0xf7a81
+ push word [bp+004h] ; ff 76 04 ; 0xf7a84
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7a87
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7a8b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7a8f
+ push ax ; 50 ; 0xf7a92
+ push word [bp-00eh] ; ff 76 f2 ; 0xf7a93
+ push word [bp-010h] ; ff 76 f0 ; 0xf7a96
+ mov bl, byte [bp-00ah] ; 8a 5e f6 ; 0xf7a99
+ xor bh, bh ; 30 ff ; 0xf7a9c
+ xor al, al ; 30 c0 ; 0xf7a9e
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf7aa0
+ call word [di+000a4h] ; ff 95 a4 00 ; 0xf7aa3
+ mov dl, al ; 88 c2 ; 0xf7aa7
+ test al, al ; 84 c0 ; 0xf7aa9 scsi.c:290
+ jne short 07abeh ; 75 11 ; 0xf7aab
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7aad scsi.c:291
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf7ab0
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7ab3
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7ab7
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7aba
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7abe scsi.c:88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf7ac1 scsi.c:90
+ mov al, dl ; 88 d0 ; 0xf7ac5 scsi.c:296
+ xor ah, ah ; 30 e4 ; 0xf7ac7
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7ac9 scsi.c:297
+ pop di ; 5f ; 0xf7acc
+ pop si ; 5e ; 0xf7acd
+ pop bp ; 5d ; 0xf7ace
+ retn 0000ah ; c2 0a 00 ; 0xf7acf
+ ; disGetNextSymbol 0xf7ad2 LB 0x3306 -> off=0x0 cb=00000000000004a8 uValue=00000000000f64d2 'scsi_enumerate_attached_devices'
+scsi_enumerate_attached_devices: ; 0xf7ad2 LB 0x4a8
+ push bp ; 55 ; 0xf7ad2 scsi.c:305
+ mov bp, sp ; 89 e5 ; 0xf7ad3
+ push bx ; 53 ; 0xf7ad5
+ push cx ; 51 ; 0xf7ad6
+ push si ; 56 ; 0xf7ad7
+ push di ; 57 ; 0xf7ad8
+ sub sp, 0023eh ; 81 ec 3e 02 ; 0xf7ad9
+ push ax ; 50 ; 0xf7add
+ mov byte [bp-00eh], dl ; 88 56 f2 ; 0xf7ade
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7ae1 scsi.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7ae4
+ mov es, ax ; 8e c0 ; 0xf7ae7
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7ae9
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf7aec scsi.c:59
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf7aef
+ mov word [bp-010h], strict word 00000h ; c7 46 f0 00 00 ; 0xf7af2 scsi.c:314
+ jmp near 07f2ah ; e9 30 04 ; 0xf7af7
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf7afa scsi.c:320
+ mov al, byte [es:di+002a0h] ; 26 8a 85 a0 02 ; 0xf7afd
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7b02
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf7b05 scsi.c:337
+ jne short 07b13h ; 75 07 ; 0xf7b0a
+ test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xf7b0c
+ je short 07b16h ; 74 03 ; 0xf7b11
+ jmp near 07e64h ; e9 4e 03 ; 0xf7b13
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7b16 scsi.c:343
+ jc short 07b1dh ; 72 03 ; 0xf7b18
+ jmp near 07f71h ; e9 54 04 ; 0xf7b1a
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf7b1d scsi.c:352
+ xor bx, bx ; 31 db ; 0xf7b20
+ mov dx, ss ; 8c d2 ; 0xf7b22
+ lea ax, [bp-046h] ; 8d 46 ba ; 0xf7b24
+ call 0aab0h ; e8 86 2f ; 0xf7b27
+ mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xf7b2a scsi.c:353
+ mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xf7b2e scsi.c:354
+ mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xf7b32 scsi.c:355
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7b36 scsi.c:357
+ xor ah, ah ; 30 e4 ; 0xf7b39
+ imul si, ax, strict byte 0000ch ; 6b f0 0c ; 0xf7b3b
+ push strict byte 00000h ; 6a 00 ; 0xf7b3e
+ push strict byte 00020h ; 6a 20 ; 0xf7b40
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf7b42
+ push SS ; 16 ; 0xf7b46
+ push dx ; 52 ; 0xf7b47
+ push strict byte 00010h ; 6a 10 ; 0xf7b48
+ lea dx, [bp-046h] ; 8d 56 ba ; 0xf7b4a
+ push SS ; 16 ; 0xf7b4d
+ push dx ; 52 ; 0xf7b4e
+ mov bl, byte [bp-010h] ; 8a 5e f0 ; 0xf7b4f
+ xor bh, bh ; 30 ff ; 0xf7b52
+ xor al, al ; 30 c0 ; 0xf7b54
+ mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7b56
+ call word [si+000a4h] ; ff 94 a4 00 ; 0xf7b5a
+ test al, al ; 84 c0 ; 0xf7b5e scsi.c:358
+ je short 07b70h ; 74 0e ; 0xf7b60
+ push 00be8h ; 68 e8 0b ; 0xf7b62 scsi.c:359
+ push 00c08h ; 68 08 0c ; 0xf7b65
+ push strict byte 00007h ; 6a 07 ; 0xf7b68
+ call 01953h ; e8 e6 9d ; 0xf7b6a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7b6d
+ mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xf7b70 scsi.c:364
+ mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xf7b74
+ mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xf7b78
+ mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xf7b7c
+ xchg ah, al ; 86 c4 ; 0xf7b80
+ xchg bh, bl ; 86 df ; 0xf7b82
+ xchg ch, cl ; 86 cd ; 0xf7b84
+ xchg dh, dl ; 86 d6 ; 0xf7b86
+ xchg dx, ax ; 92 ; 0xf7b88
+ xchg bx, cx ; 87 cb ; 0xf7b89
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xf7b8b
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf7b8e
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7b91
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7b94
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7b97
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf7b9a
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf7b9d
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf7ba0
+ mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xf7ba3 scsi.c:366
+ xor ah, ah ; 30 e4 ; 0xf7ba7
+ mov si, ax ; 89 c6 ; 0xf7ba9
+ sal si, 008h ; c1 e6 08 ; 0xf7bab
+ mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xf7bae
+ xor bx, bx ; 31 db ; 0xf7bb2
+ or si, ax ; 09 c6 ; 0xf7bb4
+ mov al, byte [bp-0023ch] ; 8a 86 c4 fd ; 0xf7bb6
+ xor dx, dx ; 31 d2 ; 0xf7bba
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7bbc
+ sal ax, 1 ; d1 e0 ; 0xf7bbf
+ rcl dx, 1 ; d1 d2 ; 0xf7bc1
+ loop 07bbfh ; e2 fa ; 0xf7bc3
+ or bx, ax ; 09 c3 ; 0xf7bc5
+ or dx, si ; 09 f2 ; 0xf7bc7
+ mov al, byte [bp-0023bh] ; 8a 86 c5 fd ; 0xf7bc9
+ xor ah, ah ; 30 e4 ; 0xf7bcd
+ or bx, ax ; 09 c3 ; 0xf7bcf
+ mov word [bp-024h], bx ; 89 5e dc ; 0xf7bd1
+ test dx, dx ; 85 d2 ; 0xf7bd4 scsi.c:372
+ jne short 07bdeh ; 75 06 ; 0xf7bd6
+ cmp bx, 00200h ; 81 fb 00 02 ; 0xf7bd8
+ je short 07bfeh ; 74 20 ; 0xf7bdc
+ mov bx, 00ddch ; bb dc 0d ; 0xf7bde scsi.c:375
+ mov cx, ds ; 8c d9 ; 0xf7be1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7be3
+ call 01910h ; e8 27 9d ; 0xf7be6
+ push dx ; 52 ; 0xf7be9
+ push word [bp-024h] ; ff 76 dc ; 0xf7bea
+ push word [bp-010h] ; ff 76 f0 ; 0xf7bed
+ push 00c27h ; 68 27 0c ; 0xf7bf0
+ push strict byte 00004h ; 6a 04 ; 0xf7bf3
+ call 01953h ; e8 5b 9d ; 0xf7bf5
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7bf8
+ jmp near 07f21h ; e9 23 03 ; 0xf7bfb scsi.c:376
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7bfe scsi.c:380
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7c01
+ jc short 07c11h ; 72 0c ; 0xf7c03
+ jbe short 07c19h ; 76 12 ; 0xf7c05
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf7c07
+ je short 07c21h ; 74 16 ; 0xf7c09
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7c0b
+ je short 07c1dh ; 74 0e ; 0xf7c0d
+ jmp short 07c59h ; eb 48 ; 0xf7c0f
+ test al, al ; 84 c0 ; 0xf7c11
+ jne short 07c59h ; 75 44 ; 0xf7c13
+ mov BL, strict byte 090h ; b3 90 ; 0xf7c15 scsi.c:383
+ jmp short 07c23h ; eb 0a ; 0xf7c17 scsi.c:384
+ mov BL, strict byte 098h ; b3 98 ; 0xf7c19 scsi.c:386
+ jmp short 07c23h ; eb 06 ; 0xf7c1b scsi.c:387
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xf7c1d scsi.c:389
+ jmp short 07c23h ; eb 02 ; 0xf7c1f scsi.c:390
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xf7c21 scsi.c:392
+ mov cl, bl ; 88 d9 ; 0xf7c23 scsi.c:396
+ add cl, 007h ; 80 c1 07 ; 0xf7c25
+ xor ch, ch ; 30 ed ; 0xf7c28
+ mov ax, cx ; 89 c8 ; 0xf7c2a
+ call 01664h ; e8 35 9a ; 0xf7c2c
+ test al, al ; 84 c0 ; 0xf7c2f
+ je short 07c59h ; 74 26 ; 0xf7c31
+ mov al, bl ; 88 d8 ; 0xf7c33 scsi.c:401
+ xor ah, ah ; 30 e4 ; 0xf7c35
+ call 0169ch ; e8 62 9a ; 0xf7c37
+ mov dx, ax ; 89 c2 ; 0xf7c3a
+ xor si, si ; 31 f6 ; 0xf7c3c
+ mov al, bl ; 88 d8 ; 0xf7c3e scsi.c:402
+ add AL, strict byte 002h ; 04 02 ; 0xf7c40
+ xor ah, ah ; 30 e4 ; 0xf7c42
+ call 01664h ; e8 1d 9a ; 0xf7c44
+ xor ah, ah ; 30 e4 ; 0xf7c47
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7c49
+ mov ax, cx ; 89 c8 ; 0xf7c4c scsi.c:403
+ call 01664h ; e8 13 9a ; 0xf7c4e
+ xor ah, ah ; 30 e4 ; 0xf7c51
+ mov word [bp-022h], ax ; 89 46 de ; 0xf7c53
+ jmp near 07d43h ; e9 ea 00 ; 0xf7c56 scsi.c:405
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7c59 scsi.c:406
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf7c5c
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf7c5f
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf7c62
+ mov si, strict word 0000ch ; be 0c 00 ; 0xf7c65
+ call 0aa90h ; e8 25 2e ; 0xf7c68
+ mov word [bp-026h], ax ; 89 46 da ; 0xf7c6b
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf7c6e
+ mov word [bp-028h], cx ; 89 4e d8 ; 0xf7c71
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf7c74
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7c77 scsi.c:410
+ test ax, ax ; 85 c0 ; 0xf7c7a
+ jnbe short 07c93h ; 77 15 ; 0xf7c7c
+ je short 07c83h ; 74 03 ; 0xf7c7e
+ jmp near 07d06h ; e9 83 00 ; 0xf7c80
+ cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf7c83
+ jnbe short 07c93h ; 77 0a ; 0xf7c87
+ jne short 07c80h ; 75 f5 ; 0xf7c89
+ cmp word [bp-016h], strict byte 00040h ; 83 7e ea 40 ; 0xf7c8b
+ jnbe short 07c93h ; 77 02 ; 0xf7c8f
+ jne short 07d06h ; 75 73 ; 0xf7c91
+ mov word [bp-012h], 000ffh ; c7 46 ee ff 00 ; 0xf7c93 scsi.c:412
+ mov word [bp-022h], strict word 0003fh ; c7 46 de 3f 00 ; 0xf7c98 scsi.c:413
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf7c9d scsi.c:415
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf7ca0
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf7ca3
+ mov si, strict word 00006h ; be 06 00 ; 0xf7ca6
+ call 0aa90h ; e8 e4 2d ; 0xf7ca9
+ mov si, word [bp-02ah] ; 8b 76 d6 ; 0xf7cac
+ add si, dx ; 01 d6 ; 0xf7caf
+ mov word [bp-034h], si ; 89 76 cc ; 0xf7cb1
+ mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf7cb4
+ adc dx, cx ; 11 ca ; 0xf7cb7
+ mov word [bp-036h], dx ; 89 56 ca ; 0xf7cb9
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf7cbc
+ adc dx, bx ; 11 da ; 0xf7cbf
+ mov word [bp-02ch], dx ; 89 56 d4 ; 0xf7cc1
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf7cc4
+ adc dx, ax ; 11 c2 ; 0xf7cc7
+ mov word [bp-01ah], dx ; 89 56 e6 ; 0xf7cc9
+ mov ax, dx ; 89 d0 ; 0xf7ccc scsi.c:416
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf7cce
+ mov cx, word [bp-036h] ; 8b 4e ca ; 0xf7cd1
+ mov dx, si ; 89 f2 ; 0xf7cd4
+ mov si, strict word 00008h ; be 08 00 ; 0xf7cd6
+ call 0aa90h ; e8 b4 2d ; 0xf7cd9
+ mov word [bp-02eh], bx ; 89 5e d2 ; 0xf7cdc
+ mov word [bp-030h], cx ; 89 4e d0 ; 0xf7cdf
+ mov word [bp-032h], dx ; 89 56 ce ; 0xf7ce2
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf7ce5
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf7ce8
+ mov cx, word [bp-036h] ; 8b 4e ca ; 0xf7ceb
+ mov dx, word [bp-034h] ; 8b 56 cc ; 0xf7cee
+ mov si, strict word 00010h ; be 10 00 ; 0xf7cf1
+ call 0aa90h ; e8 99 2d ; 0xf7cf4
+ add dx, word [bp-032h] ; 03 56 ce ; 0xf7cf7
+ mov si, word [bp-030h] ; 8b 76 d0 ; 0xf7cfa
+ adc si, cx ; 11 ce ; 0xf7cfd
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf7cff
+ adc ax, bx ; 11 d8 ; 0xf7d02
+ jmp short 07d43h ; eb 3d ; 0xf7d04 scsi.c:418
+ test ax, ax ; 85 c0 ; 0xf7d06
+ jnbe short 07d1ch ; 77 12 ; 0xf7d08
+ jne short 07d28h ; 75 1c ; 0xf7d0a
+ cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf7d0c
+ jnbe short 07d1ch ; 77 0a ; 0xf7d10
+ jne short 07d28h ; 75 14 ; 0xf7d12
+ cmp word [bp-016h], strict byte 00020h ; 83 7e ea 20 ; 0xf7d14
+ jnbe short 07d1ch ; 77 02 ; 0xf7d18
+ jne short 07d28h ; 75 0c ; 0xf7d1a
+ mov word [bp-012h], 00080h ; c7 46 ee 80 00 ; 0xf7d1c scsi.c:420
+ mov word [bp-022h], strict word 00020h ; c7 46 de 20 00 ; 0xf7d21 scsi.c:421
+ jmp short 07d41h ; eb 19 ; 0xf7d26 scsi.c:424
+ mov word [bp-012h], strict word 00040h ; c7 46 ee 40 00 ; 0xf7d28 scsi.c:426
+ mov word [bp-022h], strict word 00020h ; c7 46 de 20 00 ; 0xf7d2d scsi.c:427
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf7d32 scsi.c:428
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf7d35
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf7d38
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf7d3b
+ call 0aa90h ; e8 4f 2d ; 0xf7d3e
+ mov si, cx ; 89 ce ; 0xf7d41
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7d43 scsi.c:433
+ add AL, strict byte 008h ; 04 08 ; 0xf7d46
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7d48
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7d4b scsi.c:435
+ xor ah, ah ; 30 e4 ; 0xf7d4e
+ sal ax, 002h ; c1 e0 02 ; 0xf7d50
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf7d53
+ mov bx, di ; 89 fb ; 0xf7d56
+ add bx, ax ; 01 c3 ; 0xf7d58
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf7d5a
+ mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf7d5e
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7d63 scsi.c:436
+ mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf7d66
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7d6b scsi.c:437
+ mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf7d6e
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7d73 scsi.c:438
+ xor ah, ah ; 30 e4 ; 0xf7d76
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf7d78
+ mov bx, di ; 89 fb ; 0xf7d7b
+ add bx, ax ; 01 c3 ; 0xf7d7d
+ mov word [es:bx+01eh], 0ff04h ; 26 c7 47 1e 04 ff ; 0xf7d7f
+ mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf7d85 scsi.c:440
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf7d8b scsi.c:442
+ mov word [es:bx+024h], ax ; 26 89 47 24 ; 0xf7d8e
+ mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf7d92 scsi.c:443
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf7d97 scsi.c:446
+ mov word [es:bx+026h], ax ; 26 89 47 26 ; 0xf7d9a
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf7d9e scsi.c:447
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf7da1
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf7da5 scsi.c:448
+ mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf7da8
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf7dac scsi.c:449
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf7daf
+ test si, si ; 85 f6 ; 0xf7db3 scsi.c:451
+ jne short 07dbdh ; 75 06 ; 0xf7db5
+ cmp dx, 00400h ; 81 fa 00 04 ; 0xf7db7
+ jbe short 07dcbh ; 76 0e ; 0xf7dbb
+ mov word [es:bx+028h], 00400h ; 26 c7 47 28 00 04 ; 0xf7dbd scsi.c:452
+ mov word [es:bx+02eh], 00400h ; 26 c7 47 2e 00 04 ; 0xf7dc3 scsi.c:453
+ jmp short 07dd3h ; eb 08 ; 0xf7dc9 scsi.c:454
+ mov word [es:bx+028h], dx ; 26 89 57 28 ; 0xf7dcb scsi.c:455
+ mov word [es:bx+02eh], dx ; 26 89 57 2e ; 0xf7dcf scsi.c:456
+ mov bx, 00ddch ; bb dc 0d ; 0xf7dd3 scsi.c:460
+ mov cx, ds ; 8c d9 ; 0xf7dd6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7dd8
+ call 01910h ; e8 32 9b ; 0xf7ddb
+ push word [bp-014h] ; ff 76 ec ; 0xf7dde
+ push word [bp-01eh] ; ff 76 e2 ; 0xf7de1
+ push word [bp-016h] ; ff 76 ea ; 0xf7de4
+ push word [bp-020h] ; ff 76 e0 ; 0xf7de7
+ push word [bp-022h] ; ff 76 de ; 0xf7dea
+ push word [bp-012h] ; ff 76 ee ; 0xf7ded
+ push si ; 56 ; 0xf7df0
+ push dx ; 52 ; 0xf7df1
+ push word [bp-010h] ; ff 76 f0 ; 0xf7df2
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7df5
+ xor ah, ah ; 30 e4 ; 0xf7df8
+ push ax ; 50 ; 0xf7dfa
+ push 00c55h ; 68 55 0c ; 0xf7dfb
+ push strict byte 00004h ; 6a 04 ; 0xf7dfe
+ call 01953h ; e8 50 9b ; 0xf7e00
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xf7e03
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7e06 scsi.c:462
+ xor ah, ah ; 30 e4 ; 0xf7e09
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf7e0b
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf7e0e
+ mov bx, di ; 89 fb ; 0xf7e11
+ add bx, ax ; 01 c3 ; 0xf7e13
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7e15
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf7e18
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf7e1c
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf7e1f
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7e23
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf7e26
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf7e2a
+ mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf7e2d
+ mov al, byte [es:di+0024eh] ; 26 8a 85 4e 02 ; 0xf7e31 scsi.c:465
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf7e36 scsi.c:466
+ add ah, 008h ; 80 c4 08 ; 0xf7e39
+ mov bl, al ; 88 c3 ; 0xf7e3c
+ xor bh, bh ; 30 ff ; 0xf7e3e
+ add bx, di ; 01 fb ; 0xf7e40
+ mov byte [es:bx+0024fh], ah ; 26 88 a7 4f 02 ; 0xf7e42
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7e47 scsi.c:467
+ mov byte [es:di+0024eh], al ; 26 88 85 4e 02 ; 0xf7e49 scsi.c:468
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf7e4e scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7e51
+ mov es, ax ; 8e c0 ; 0xf7e54
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7e56
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7e59 scsi.c:472
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7e5b scsi.c:53
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf7e5e scsi.c:475
+ jmp near 07f16h ; e9 b2 00 ; 0xf7e61 scsi.c:477
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf7e64 scsi.c:483
+ jne short 07e75h ; 75 0a ; 0xf7e69
+ mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xf7e6b
+ and AL, strict byte 01fh ; 24 1f ; 0xf7e6f
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf7e71
+ je short 07e78h ; 74 03 ; 0xf7e73
+ jmp near 07f16h ; e9 9e 00 ; 0xf7e75
+ mov bx, 00ddch ; bb dc 0d ; 0xf7e78 scsi.c:489
+ mov cx, ds ; 8c d9 ; 0xf7e7b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7e7d
+ call 01910h ; e8 8d 9a ; 0xf7e80
+ push word [bp-010h] ; ff 76 f0 ; 0xf7e83
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7e86
+ xor ah, ah ; 30 e4 ; 0xf7e89
+ push ax ; 50 ; 0xf7e8b
+ push 00c83h ; 68 83 0c ; 0xf7e8c
+ push strict byte 00004h ; 6a 04 ; 0xf7e8f
+ call 01953h ; e8 bf 9a ; 0xf7e91
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7e94
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7e97 scsi.c:492
+ add AL, strict byte 008h ; 04 08 ; 0xf7e9a
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7e9c
+ test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xf7e9f scsi.c:494
+ je short 07eabh ; 74 05 ; 0xf7ea4
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7ea6
+ jmp short 07eadh ; eb 02 ; 0xf7ea9
+ xor dx, dx ; 31 d2 ; 0xf7eab
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7ead scsi.c:496
+ xor ah, ah ; 30 e4 ; 0xf7eb0
+ sal ax, 002h ; c1 e0 02 ; 0xf7eb2
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf7eb5
+ mov bx, di ; 89 fb ; 0xf7eb8
+ add bx, ax ; 01 c3 ; 0xf7eba
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf7ebc
+ mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf7ec0
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7ec5 scsi.c:497
+ mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf7ec8
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7ecd scsi.c:498
+ mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf7ed0
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7ed5 scsi.c:499
+ xor ah, ah ; 30 e4 ; 0xf7ed8
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf7eda
+ mov bx, di ; 89 fb ; 0xf7edd
+ add bx, ax ; 01 c3 ; 0xf7edf
+ mov word [es:bx+01eh], 00504h ; 26 c7 47 1e 04 05 ; 0xf7ee1
+ mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf7ee7 scsi.c:501
+ mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf7eeb scsi.c:502
+ mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf7ef1 scsi.c:503
+ mov al, byte [es:di+00263h] ; 26 8a 85 63 02 ; 0xf7ef6 scsi.c:506
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf7efb scsi.c:507
+ add ah, 008h ; 80 c4 08 ; 0xf7efe
+ mov bl, al ; 88 c3 ; 0xf7f01
+ xor bh, bh ; 30 ff ; 0xf7f03
+ add bx, di ; 01 fb ; 0xf7f05
+ mov byte [es:bx+00264h], ah ; 26 88 a7 64 02 ; 0xf7f07
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7f0c scsi.c:508
+ mov byte [es:di+00263h], al ; 26 88 85 63 02 ; 0xf7f0e scsi.c:509
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf7f13 scsi.c:511
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f16 scsi.c:516
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf7f19
+ mov byte [es:di+002a0h], al ; 26 88 85 a0 02 ; 0xf7f1c
+ inc word [bp-010h] ; ff 46 f0 ; 0xf7f21 scsi.c:517
+ cmp word [bp-010h], strict byte 00010h ; 83 7e f0 10 ; 0xf7f24
+ jnl short 07f71h ; 7d 47 ; 0xf7f28
+ mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xf7f2a
+ xor al, al ; 30 c0 ; 0xf7f2e
+ mov byte [bp-045h], al ; 88 46 bb ; 0xf7f30
+ mov byte [bp-044h], al ; 88 46 bc ; 0xf7f33
+ mov byte [bp-043h], al ; 88 46 bd ; 0xf7f36
+ mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xf7f39
+ mov byte [bp-041h], al ; 88 46 bf ; 0xf7f3d
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7f40
+ xor ah, ah ; 30 e4 ; 0xf7f43
+ imul si, ax, strict byte 0000ch ; 6b f0 0c ; 0xf7f45
+ push strict byte 00000h ; 6a 00 ; 0xf7f48
+ push strict byte 00005h ; 6a 05 ; 0xf7f4a
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf7f4c
+ push SS ; 16 ; 0xf7f50
+ push dx ; 52 ; 0xf7f51
+ push strict byte 00006h ; 6a 06 ; 0xf7f52
+ lea dx, [bp-046h] ; 8d 56 ba ; 0xf7f54
+ push SS ; 16 ; 0xf7f57
+ push dx ; 52 ; 0xf7f58
+ mov bl, byte [bp-010h] ; 8a 5e f0 ; 0xf7f59
+ xor bh, bh ; 30 ff ; 0xf7f5c
+ xor al, al ; 30 c0 ; 0xf7f5e
+ mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7f60
+ call word [si+000a4h] ; ff 94 a4 00 ; 0xf7f64
+ test al, al ; 84 c0 ; 0xf7f68
+ jne short 07f6fh ; 75 03 ; 0xf7f6a
+ jmp near 07afah ; e9 8b fb ; 0xf7f6c
+ jmp short 07f21h ; eb b0 ; 0xf7f6f
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7f71 scsi.c:518
+ pop di ; 5f ; 0xf7f74
+ pop si ; 5e ; 0xf7f75
+ pop cx ; 59 ; 0xf7f76
+ pop bx ; 5b ; 0xf7f77
+ pop bp ; 5d ; 0xf7f78
+ retn ; c3 ; 0xf7f79
+ ; disGetNextSymbol 0xf7f7a LB 0x2e5e -> off=0x0 cb=0000000000000082 uValue=00000000000f697a 'scsi_init'
+scsi_init: ; 0xf7f7a LB 0x82
+ push bp ; 55 ; 0xf7f7a scsi.c:523
+ mov bp, sp ; 89 e5 ; 0xf7f7b
+ push si ; 56 ; 0xf7f7d
+ push di ; 57 ; 0xf7f7e
+ push ax ; 50 ; 0xf7f7f
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7f80 scsi.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7f83
+ mov es, ax ; 8e c0 ; 0xf7f86
+ mov es, [es:bx] ; 26 8e 07 ; 0xf7f88
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf7f8b scsi.c:59
+ mov byte [es:bx+002a0h], 000h ; 26 c6 87 a0 02 00 ; 0xf7f8e scsi.c:529
+ mov word [bp-006h], strict word 00000h ; c7 46 fa 00 00 ; 0xf7f94 scsi.c:532
+ jmp short 07fe4h ; eb 49 ; 0xf7f99
+ mov dx, word [bx+0009ch] ; 8b 97 9c 00 ; 0xf7f9b scsi.c:536
+ mov ax, word [bx+0009ah] ; 8b 87 9a 00 ; 0xf7f9f
+ call 0a802h ; e8 5c 28 ; 0xf7fa3
+ mov cx, ax ; 89 c1 ; 0xf7fa6
+ cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf7fa8 scsi.c:542
+ je short 07fdbh ; 74 2e ; 0xf7fab
+ call 0777bh ; e8 cb f7 ; 0xf7fad scsi.c:546
+ mov si, ax ; 89 c6 ; 0xf7fb0
+ test ax, ax ; 85 c0 ; 0xf7fb2 scsi.c:547
+ je short 07ff5h ; 74 3f ; 0xf7fb4
+ mov bx, cx ; 89 cb ; 0xf7fb6 scsi.c:550
+ xor bl, cl ; 30 cb ; 0xf7fb8
+ shr bx, 008h ; c1 eb 08 ; 0xf7fba
+ imul di, word [bp-006h], strict byte 0000ch ; 6b 7e fa 0c ; 0xf7fbd scsi.c:554
+ xor ch, ch ; 30 ed ; 0xf7fc1
+ xor bh, bh ; 30 ff ; 0xf7fc3
+ xor ax, ax ; 31 c0 ; 0xf7fc5
+ mov dx, si ; 89 f2 ; 0xf7fc7
+ call word [di+000a0h] ; ff 95 a0 00 ; 0xf7fc9
+ test ax, ax ; 85 c0 ; 0xf7fcd scsi.c:555
+ jne short 07fdbh ; 75 0a ; 0xf7fcf
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf7fd1 scsi.c:556
+ xor dh, dh ; 30 f6 ; 0xf7fd4
+ mov ax, si ; 89 f0 ; 0xf7fd6
+ call 07ad2h ; e8 f7 fa ; 0xf7fd8
+ inc word [bp-006h] ; ff 46 fa ; 0xf7fdb scsi.c:559
+ cmp word [bp-006h], strict byte 00005h ; 83 7e fa 05 ; 0xf7fde
+ jnc short 07ff5h ; 73 11 ; 0xf7fe2
+ imul bx, word [bp-006h], strict byte 0000ch ; 6b 5e fa 0c ; 0xf7fe4
+ cmp word [bx+0009eh], strict byte 00000h ; 83 bf 9e 00 00 ; 0xf7fe8
+ je short 07f9bh ; 74 ac ; 0xf7fed
+ call word [bx+0009eh] ; ff 97 9e 00 ; 0xf7fef
+ jmp short 07fa6h ; eb b1 ; 0xf7ff3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7ff5 scsi.c:560
+ pop di ; 5f ; 0xf7ff8
+ pop si ; 5e ; 0xf7ff9
+ pop bp ; 5d ; 0xf7ffa
+ retn ; c3 ; 0xf7ffb
+ ; disGetNextSymbol 0xf7ffc LB 0x2ddc -> off=0x0 cb=000000000000001c uValue=00000000000f69fc 'ahci_ctrl_extract_bits'
+ahci_ctrl_extract_bits: ; 0xf7ffc LB 0x1c
+ push si ; 56 ; 0xf7ffc ahci.c:287
+ push bp ; 55 ; 0xf7ffd
+ mov bp, sp ; 89 e5 ; 0xf7ffe
+ mov si, ax ; 89 c6 ; 0xf8000
+ and ax, bx ; 21 d8 ; 0xf8002 ahci.c:289
+ and dx, cx ; 21 ca ; 0xf8004
+ mov cl, byte [bp+006h] ; 8a 4e 06 ; 0xf8006
+ xor ch, ch ; 30 ed ; 0xf8009
+ jcxz 08013h ; e3 06 ; 0xf800b
+ shr dx, 1 ; d1 ea ; 0xf800d
+ rcr ax, 1 ; d1 d8 ; 0xf800f
+ loop 0800dh ; e2 fa ; 0xf8011
+ pop bp ; 5d ; 0xf8013 ahci.c:290
+ pop si ; 5e ; 0xf8014
+ retn 00002h ; c2 02 00 ; 0xf8015
+ ; disGetNextSymbol 0xf8018 LB 0x2dc0 -> off=0x0 cb=000000000000001e uValue=00000000000f6a18 'ahci_addr_to_phys'
+ahci_addr_to_phys: ; 0xf8018 LB 0x1e
+ push bx ; 53 ; 0xf8018 ahci.c:295
+ push cx ; 51 ; 0xf8019
+ push bp ; 55 ; 0xf801a
+ mov bp, sp ; 89 e5 ; 0xf801b
+ mov bx, ax ; 89 c3 ; 0xf801d
+ mov ax, dx ; 89 d0 ; 0xf801f
+ xor dx, dx ; 31 d2 ; 0xf8021 ahci.c:297
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf8023
+ sal ax, 1 ; d1 e0 ; 0xf8026
+ rcl dx, 1 ; d1 d2 ; 0xf8028
+ loop 08026h ; e2 fa ; 0xf802a
+ xor cx, cx ; 31 c9 ; 0xf802c
+ add ax, bx ; 01 d8 ; 0xf802e
+ adc dx, cx ; 11 ca ; 0xf8030
+ pop bp ; 5d ; 0xf8032 ahci.c:298
+ pop cx ; 59 ; 0xf8033
+ pop bx ; 5b ; 0xf8034
+ retn ; c3 ; 0xf8035
+ ; disGetNextSymbol 0xf8036 LB 0x2da2 -> off=0x0 cb=0000000000000156 uValue=00000000000f6a36 'ahci_port_cmd_sync'
+ahci_port_cmd_sync: ; 0xf8036 LB 0x156
+ push bp ; 55 ; 0xf8036 ahci.c:303
+ mov bp, sp ; 89 e5 ; 0xf8037
+ push cx ; 51 ; 0xf8039
+ push si ; 56 ; 0xf803a
+ push di ; 57 ; 0xf803b
+ push ax ; 50 ; 0xf803c
+ mov si, ax ; 89 c6 ; 0xf803d
+ mov cx, dx ; 89 d1 ; 0xf803f
+ mov dl, bl ; 88 da ; 0xf8041
+ mov es, cx ; 8e c1 ; 0xf8043 ahci.c:308
+ mov al, byte [es:si+00262h] ; 26 8a 84 62 02 ; 0xf8045
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf804a
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf804d ahci.c:309
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf8052 ahci.c:311
+ jne short 08059h ; 75 03 ; 0xf8054
+ jmp near 08184h ; e9 2b 01 ; 0xf8056
+ mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf8059 ahci.c:314
+ xor ah, ah ; 30 e4 ; 0xf805e
+ xor di, di ; 31 ff ; 0xf8060
+ or di, 00080h ; 81 cf 80 00 ; 0xf8062
+ xor dh, dh ; 30 f6 ; 0xf8066
+ or di, dx ; 09 d7 ; 0xf8068
+ mov word [es:si], di ; 26 89 3c ; 0xf806a
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf806d
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8071 ahci.c:315
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8077
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf807d ahci.c:316
+ mov dx, cx ; 89 ca ; 0xf8081
+ call 08018h ; e8 92 ff ; 0xf8083
+ mov es, cx ; 8e c1 ; 0xf8086
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8088
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf808c
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8090 ahci.c:319
+ xor ah, ah ; 30 e4 ; 0xf8093
+ mov di, ax ; 89 c7 ; 0xf8095
+ sal di, 007h ; c1 e7 07 ; 0xf8097
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf809a
+ xor cx, cx ; 31 c9 ; 0xf809e ahci.c:260
+ mov dx, bx ; 89 da ; 0xf80a0
+ xchg cx, ax ; 91 ; 0xf80a2
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf80a3
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf80a7
+ out DX, eax ; 66 ef ; 0xf80a9
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf80ab ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf80ae
+ in eax, DX ; 66 ed ; 0xf80b0
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf80b2
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf80b4
+ xchg dx, ax ; 92 ; 0xf80b8
+ or AL, strict byte 011h ; 0c 11 ; 0xf80b9
+ mov cx, dx ; 89 d1 ; 0xf80bb
+ mov dx, si ; 89 f2 ; 0xf80bd
+ xchg cx, ax ; 91 ; 0xf80bf
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf80c0
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf80c4
+ out DX, eax ; 66 ef ; 0xf80c6
+ lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf80c8 ahci.c:323
+ cwd ; 99 ; 0xf80cc
+ mov cx, dx ; 89 d1 ; 0xf80cd
+ mov dx, bx ; 89 da ; 0xf80cf
+ xchg cx, ax ; 91 ; 0xf80d1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf80d2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf80d6
+ out DX, eax ; 66 ef ; 0xf80d8
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf80da
+ xor cx, cx ; 31 c9 ; 0xf80dd
+ mov dx, si ; 89 f2 ; 0xf80df
+ xchg cx, ax ; 91 ; 0xf80e1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf80e2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf80e6
+ out DX, eax ; 66 ef ; 0xf80e8
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf80ea ahci.c:327
+ xor ah, ah ; 30 e4 ; 0xf80ed
+ sal ax, 007h ; c1 e0 07 ; 0xf80ef
+ add ax, 00110h ; 05 10 01 ; 0xf80f2
+ xor cx, cx ; 31 c9 ; 0xf80f5 ahci.c:279
+ mov dx, bx ; 89 da ; 0xf80f7
+ xchg cx, ax ; 91 ; 0xf80f9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf80fa
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf80fe
+ out DX, eax ; 66 ef ; 0xf8100
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf8102 ahci.c:280
+ in eax, DX ; 66 ed ; 0xf8105
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8107
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8109
+ xchg dx, ax ; 92 ; 0xf810d
+ test dh, 040h ; f6 c6 40 ; 0xf810e
+ jne short 08117h ; 75 04 ; 0xf8111
+ test AL, strict byte 001h ; a8 01 ; 0xf8113
+ je short 0811bh ; 74 04 ; 0xf8115
+ mov AL, strict byte 001h ; b0 01 ; 0xf8117
+ jmp short 0811dh ; eb 02 ; 0xf8119
+ xor al, al ; 30 c0 ; 0xf811b
+ test al, al ; 84 c0 ; 0xf811d ahci.c:281
+ je short 080eah ; 74 c9 ; 0xf811f
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8121 ahci.c:333
+ xor ah, ah ; 30 e4 ; 0xf8124
+ mov di, ax ; 89 c7 ; 0xf8126
+ sal di, 007h ; c1 e7 07 ; 0xf8128
+ lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf812b
+ xor cx, cx ; 31 c9 ; 0xf812f ahci.c:260
+ mov dx, bx ; 89 da ; 0xf8131
+ xchg cx, ax ; 91 ; 0xf8133
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8134
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8138
+ out DX, eax ; 66 ef ; 0xf813a
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf813c ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf813f
+ in eax, DX ; 66 ed ; 0xf8141
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8143
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8145
+ xchg dx, ax ; 92 ; 0xf8149
+ or AL, strict byte 001h ; 0c 01 ; 0xf814a
+ mov cx, dx ; 89 d1 ; 0xf814c
+ mov dx, si ; 89 f2 ; 0xf814e
+ xchg cx, ax ; 91 ; 0xf8150
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8151
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8155
+ out DX, eax ; 66 ef ; 0xf8157
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8159 ahci.c:337
+ xor cx, cx ; 31 c9 ; 0xf815d ahci.c:269
+ mov dx, bx ; 89 da ; 0xf815f
+ xchg cx, ax ; 91 ; 0xf8161
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8162
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8166
+ out DX, eax ; 66 ef ; 0xf8168
+ mov dx, si ; 89 f2 ; 0xf816a ahci.c:270
+ in eax, DX ; 66 ed ; 0xf816c
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf816e
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8170
+ xchg dx, ax ; 92 ; 0xf8174
+ and AL, strict byte 0feh ; 24 fe ; 0xf8175
+ mov cx, dx ; 89 d1 ; 0xf8177
+ mov dx, si ; 89 f2 ; 0xf8179
+ xchg cx, ax ; 91 ; 0xf817b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf817c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8180
+ out DX, eax ; 66 ef ; 0xf8182
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8184 ahci.c:343
+ pop di ; 5f ; 0xf8187
+ pop si ; 5e ; 0xf8188
+ pop cx ; 59 ; 0xf8189
+ pop bp ; 5d ; 0xf818a
+ retn ; c3 ; 0xf818b
+ ; disGetNextSymbol 0xf818c LB 0x2c4c -> off=0x0 cb=000000000000021a uValue=00000000000f6b8c 'ahci_cmd_data'
+ahci_cmd_data: ; 0xf818c LB 0x21a
+ push bp ; 55 ; 0xf818c ahci.c:348
+ mov bp, sp ; 89 e5 ; 0xf818d
+ push cx ; 51 ; 0xf818f
+ push si ; 56 ; 0xf8190
+ push di ; 57 ; 0xf8191
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf8192
+ mov di, ax ; 89 c7 ; 0xf8195
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf8197
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf819a
+ mov word [bp-014h], strict word 00000h ; c7 46 ec 00 00 ; 0xf819d ahci.c:350
+ mov es, dx ; 8e c2 ; 0xf81a2
+ mov ax, word [es:di+002a6h] ; 26 8b 85 a6 02 ; 0xf81a4
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf81a9
+ mov word [bp-010h], strict word 00000h ; c7 46 f0 00 00 ; 0xf81ac
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf81b1
+ mov ax, word [es:di+00eh] ; 26 8b 45 0e ; 0xf81b4 ahci.c:351
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf81b8
+ mov ax, word [es:di+010h] ; 26 8b 45 10 ; 0xf81bb ahci.c:352
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf81bf
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf81c2 ahci.c:355
+ xor bx, bx ; 31 db ; 0xf81c5
+ mov ax, 00080h ; b8 80 00 ; 0xf81c7
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf81ca
+ call 0aab0h ; e8 e0 28 ; 0xf81cd
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf81d0 ahci.c:358
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf81d3
+ mov word [es:bx+00080h], 08027h ; 26 c7 87 80 00 27 80 ; 0xf81d6
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf81dd ahci.c:360
+ mov byte [es:bx+00082h], al ; 26 88 87 82 00 ; 0xf81e0
+ mov byte [es:bx+00083h], 000h ; 26 c6 87 83 00 00 ; 0xf81e5 ahci.c:361
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf81eb ahci.c:363
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf81ee
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf81f1
+ mov byte [es:bx+00084h], al ; 26 88 87 84 00 ; 0xf81f4
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf81f9 ahci.c:364
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf81fc
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8200
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8204
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf8208
+ mov si, strict word 00008h ; be 08 00 ; 0xf820b
+ call 0aa90h ; e8 7f 28 ; 0xf820e
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8211
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8214
+ mov byte [es:bx+00085h], dl ; 26 88 97 85 00 ; 0xf8217
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf821c ahci.c:365
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf821f
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8223
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8227
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf822b
+ mov si, strict word 00010h ; be 10 00 ; 0xf822e
+ call 0aa90h ; e8 5c 28 ; 0xf8231
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8234
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8237
+ mov byte [es:bx+00086h], dl ; 26 88 97 86 00 ; 0xf823a
+ mov byte [es:bx+00087h], 040h ; 26 c6 87 87 00 40 ; 0xf823f ahci.c:366
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8245 ahci.c:368
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8248
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf824c
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8250
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf8254
+ mov si, strict word 00018h ; be 18 00 ; 0xf8257
+ call 0aa90h ; e8 33 28 ; 0xf825a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf825d
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8260
+ mov byte [es:bx+00088h], dl ; 26 88 97 88 00 ; 0xf8263
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8268 ahci.c:369
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf826b
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf826f
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8273
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf8277
+ mov si, strict word 00020h ; be 20 00 ; 0xf827a
+ call 0aa90h ; e8 10 28 ; 0xf827d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8280
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8283
+ mov byte [es:bx+00089h], dl ; 26 88 97 89 00 ; 0xf8286
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf828b ahci.c:370
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf828e
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8292
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8296
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf829a
+ mov si, strict word 00028h ; be 28 00 ; 0xf829d
+ call 0aa90h ; e8 ed 27 ; 0xf82a0
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf82a3
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf82a6
+ mov byte [es:bx+0008ah], dl ; 26 88 97 8a 00 ; 0xf82a9
+ mov byte [es:bx+0008bh], 000h ; 26 c6 87 8b 00 00 ; 0xf82ae ahci.c:371
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf82b4 ahci.c:373
+ mov byte [es:bx+0008ch], al ; 26 88 87 8c 00 ; 0xf82b7
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf82bc ahci.c:374
+ shr ax, 008h ; c1 e8 08 ; 0xf82bf
+ mov byte [es:bx+0008dh], al ; 26 88 87 8d 00 ; 0xf82c2
+ mov word [es:bx+00272h], strict word 00010h ; 26 c7 87 72 02 10 00 ; 0xf82c7 ahci.c:377
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf82ce ahci.c:379
+ xor dx, dx ; 31 d2 ; 0xf82d1
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf82d3
+ xor cx, cx ; 31 c9 ; 0xf82d6
+ call 0aa40h ; e8 65 27 ; 0xf82d8
+ push dx ; 52 ; 0xf82db
+ push ax ; 50 ; 0xf82dc
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf82dd
+ mov bx, word [es:di+008h] ; 26 8b 5d 08 ; 0xf82e0
+ mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf82e4
+ mov ax, 00266h ; b8 66 02 ; 0xf82e8
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf82eb
+ call 0a996h ; e8 a5 26 ; 0xf82ee
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf82f1 ahci.c:382
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf82f4
+ mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf82f7
+ add dx, strict byte 0ffffh ; 83 c2 ff ; 0xf82fc
+ mov bx, word [es:bx+0027ch] ; 26 8b 9f 7c 02 ; 0xf82ff
+ adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf8304
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8307
+ mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf830a
+ xor ah, ah ; 30 e4 ; 0xf830f
+ mov di, ax ; 89 c7 ; 0xf8311
+ sal di, 004h ; c1 e7 04 ; 0xf8313
+ mov word [es:di+0010ch], dx ; 26 89 95 0c 01 ; 0xf8316
+ mov word [es:di+0010eh], bx ; 26 89 9d 0e 01 ; 0xf831b
+ mov bx, si ; 89 f3 ; 0xf8320 ahci.c:383
+ mov al, byte [es:bx+00263h] ; 26 8a 87 63 02 ; 0xf8322
+ mov di, ax ; 89 c7 ; 0xf8327
+ sal di, 004h ; c1 e7 04 ; 0xf8329
+ mov dx, word [es:si+00276h] ; 26 8b 94 76 02 ; 0xf832c
+ mov ax, word [es:si+00278h] ; 26 8b 84 78 02 ; 0xf8331
+ mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf8336
+ mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf833b
+ inc byte [es:bx+00263h] ; 26 fe 87 63 02 ; 0xf8340 ahci.c:384
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8345 ahci.c:398
+ cmp AL, strict byte 035h ; 3c 35 ; 0xf8348
+ jne short 08352h ; 75 06 ; 0xf834a
+ mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf834c ahci.c:399
+ jmp short 08366h ; eb 14 ; 0xf8350 ahci.c:400
+ cmp AL, strict byte 0a0h ; 3c a0 ; 0xf8352
+ jne short 08362h ; 75 0c ; 0xf8354
+ or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf8356 ahci.c:401
+ or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf835a ahci.c:402
+ jmp short 08366h ; eb 04 ; 0xf8360 ahci.c:403
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf8362 ahci.c:404
+ or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf8366 ahci.c:406
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf836a ahci.c:408
+ xor bh, bh ; 30 ff ; 0xf836d
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf836f
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8372
+ call 08036h ; e8 be fc ; 0xf8375
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf8378 ahci.c:411
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf837b
+ add bx, 00240h ; 81 c3 40 02 ; 0xf837e
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8382 ahci.c:415
+ add ax, 00266h ; 05 66 02 ; 0xf8385
+ mov dx, cx ; 89 ca ; 0xf8388
+ call 0aa0dh ; e8 80 26 ; 0xf838a
+ mov es, cx ; 8e c1 ; 0xf838d ahci.c:416
+ mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf838f
+ test al, al ; 84 c0 ; 0xf8393
+ je short 0839ch ; 74 05 ; 0xf8395
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8397
+ jmp short 0839eh ; eb 02 ; 0xf839a
+ xor ah, ah ; 30 e4 ; 0xf839c
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf839e ahci.c:417
+ pop di ; 5f ; 0xf83a1
+ pop si ; 5e ; 0xf83a2
+ pop cx ; 59 ; 0xf83a3
+ pop bp ; 5d ; 0xf83a4
+ retn ; c3 ; 0xf83a5
+ ; disGetNextSymbol 0xf83a6 LB 0x2a32 -> off=0x0 cb=0000000000000180 uValue=00000000000f6da6 'ahci_port_deinit_current'
+ahci_port_deinit_current: ; 0xf83a6 LB 0x180
+ push bp ; 55 ; 0xf83a6 ahci.c:422
+ mov bp, sp ; 89 e5 ; 0xf83a7
+ push bx ; 53 ; 0xf83a9
+ push cx ; 51 ; 0xf83aa
+ push si ; 56 ; 0xf83ab
+ push di ; 57 ; 0xf83ac
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf83ad
+ mov di, ax ; 89 c7 ; 0xf83b0
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf83b2
+ mov es, dx ; 8e c2 ; 0xf83b5 ahci.c:427
+ mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf83b7
+ mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf83bc ahci.c:428
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf83c1
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf83c4 ahci.c:430
+ je short 08427h ; 74 5f ; 0xf83c6
+ xor ah, ah ; 30 e4 ; 0xf83c8 ahci.c:433
+ sal ax, 007h ; c1 e0 07 ; 0xf83ca
+ add ax, 00118h ; 05 18 01 ; 0xf83cd
+ xor cx, cx ; 31 c9 ; 0xf83d0 ahci.c:269
+ mov dx, si ; 89 f2 ; 0xf83d2
+ xchg cx, ax ; 91 ; 0xf83d4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf83d5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf83d9
+ out DX, eax ; 66 ef ; 0xf83db
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf83dd ahci.c:270
+ mov dx, bx ; 89 da ; 0xf83e0
+ in eax, DX ; 66 ed ; 0xf83e2
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf83e4
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf83e6
+ xchg dx, ax ; 92 ; 0xf83ea
+ and AL, strict byte 0eeh ; 24 ee ; 0xf83eb
+ mov cx, dx ; 89 d1 ; 0xf83ed
+ mov dx, bx ; 89 da ; 0xf83ef
+ xchg cx, ax ; 91 ; 0xf83f1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf83f2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf83f6
+ out DX, eax ; 66 ef ; 0xf83f8
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf83fa ahci.c:436
+ xor ah, ah ; 30 e4 ; 0xf83fd
+ sal ax, 007h ; c1 e0 07 ; 0xf83ff
+ add ax, 00118h ; 05 18 01 ; 0xf8402
+ xor cx, cx ; 31 c9 ; 0xf8405 ahci.c:279
+ mov dx, si ; 89 f2 ; 0xf8407
+ xchg cx, ax ; 91 ; 0xf8409
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf840a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf840e
+ out DX, eax ; 66 ef ; 0xf8410
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf8412 ahci.c:280
+ in eax, DX ; 66 ed ; 0xf8415
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8417
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8419
+ xchg dx, ax ; 92 ; 0xf841d
+ test ax, 0c011h ; a9 11 c0 ; 0xf841e
+ je short 0842ah ; 74 07 ; 0xf8421
+ mov AL, strict byte 001h ; b0 01 ; 0xf8423
+ jmp short 0842ch ; eb 05 ; 0xf8425
+ jmp near 0851dh ; e9 f3 00 ; 0xf8427
+ xor al, al ; 30 c0 ; 0xf842a
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf842c ahci.c:281
+ je short 083fah ; 74 ca ; 0xf842e
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf8430 ahci.c:447
+ xor bx, bx ; 31 db ; 0xf8433
+ mov ax, di ; 89 f8 ; 0xf8435
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8437
+ call 0aab0h ; e8 73 26 ; 0xf843a
+ lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf843d ahci.c:448
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8441
+ xor bx, bx ; 31 db ; 0xf8444
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8446
+ call 0aab0h ; e8 64 26 ; 0xf8449
+ lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf844c ahci.c:449
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf8450
+ xor bx, bx ; 31 db ; 0xf8453
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8455
+ call 0aab0h ; e8 55 26 ; 0xf8458
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf845b ahci.c:451
+ xor ah, ah ; 30 e4 ; 0xf845e
+ sal ax, 007h ; c1 e0 07 ; 0xf8460
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8463
+ add ax, 00108h ; 05 08 01 ; 0xf8466
+ cwd ; 99 ; 0xf8469
+ mov cx, dx ; 89 d1 ; 0xf846a
+ mov dx, si ; 89 f2 ; 0xf846c
+ xchg cx, ax ; 91 ; 0xf846e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf846f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8473
+ out DX, eax ; 66 ef ; 0xf8475
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8477
+ xor ax, ax ; 31 c0 ; 0xf847a
+ xor cx, cx ; 31 c9 ; 0xf847c
+ 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 ax, word [bp-00ch] ; 8b 46 f4 ; 0xf8489 ahci.c:452
+ add ax, 0010ch ; 05 0c 01 ; 0xf848c
+ cwd ; 99 ; 0xf848f
+ mov cx, dx ; 89 d1 ; 0xf8490
+ mov dx, si ; 89 f2 ; 0xf8492
+ xchg cx, ax ; 91 ; 0xf8494
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8495
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8499
+ out DX, eax ; 66 ef ; 0xf849b
+ xor ax, ax ; 31 c0 ; 0xf849d
+ xor cx, cx ; 31 c9 ; 0xf849f
+ mov dx, bx ; 89 da ; 0xf84a1
+ xchg cx, ax ; 91 ; 0xf84a3
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84a4
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84a8
+ out DX, eax ; 66 ef ; 0xf84aa
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf84ac ahci.c:454
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf84af
+ cwd ; 99 ; 0xf84b1
+ mov cx, dx ; 89 d1 ; 0xf84b2
+ mov dx, si ; 89 f2 ; 0xf84b4
+ xchg cx, ax ; 91 ; 0xf84b6
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84b7
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84bb
+ out DX, eax ; 66 ef ; 0xf84bd
+ xor ax, ax ; 31 c0 ; 0xf84bf
+ xor cx, cx ; 31 c9 ; 0xf84c1
+ mov dx, bx ; 89 da ; 0xf84c3
+ xchg cx, ax ; 91 ; 0xf84c5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84c6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84ca
+ out DX, eax ; 66 ef ; 0xf84cc
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf84ce ahci.c:455
+ add ax, 00104h ; 05 04 01 ; 0xf84d1
+ cwd ; 99 ; 0xf84d4
+ mov cx, dx ; 89 d1 ; 0xf84d5
+ mov dx, si ; 89 f2 ; 0xf84d7
+ xchg cx, ax ; 91 ; 0xf84d9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84da
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84de
+ out DX, eax ; 66 ef ; 0xf84e0
+ xor ax, ax ; 31 c0 ; 0xf84e2
+ xor cx, cx ; 31 c9 ; 0xf84e4
+ mov dx, bx ; 89 da ; 0xf84e6
+ xchg cx, ax ; 91 ; 0xf84e8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84e9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84ed
+ out DX, eax ; 66 ef ; 0xf84ef
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf84f1 ahci.c:458
+ add ax, 00114h ; 05 14 01 ; 0xf84f4
+ cwd ; 99 ; 0xf84f7
+ mov cx, dx ; 89 d1 ; 0xf84f8
+ mov dx, si ; 89 f2 ; 0xf84fa
+ xchg cx, ax ; 91 ; 0xf84fc
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84fd
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8501
+ out DX, eax ; 66 ef ; 0xf8503
+ xor ax, ax ; 31 c0 ; 0xf8505
+ xor cx, cx ; 31 c9 ; 0xf8507
+ mov dx, bx ; 89 da ; 0xf8509
+ xchg cx, ax ; 91 ; 0xf850b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf850c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8510
+ out DX, eax ; 66 ef ; 0xf8512
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8514 ahci.c:460
+ mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf8517
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf851d ahci.c:462
+ pop di ; 5f ; 0xf8520
+ pop si ; 5e ; 0xf8521
+ pop cx ; 59 ; 0xf8522
+ pop bx ; 5b ; 0xf8523
+ pop bp ; 5d ; 0xf8524
+ retn ; c3 ; 0xf8525
+ ; disGetNextSymbol 0xf8526 LB 0x28b2 -> off=0x0 cb=000000000000024d uValue=00000000000f6f26 'ahci_port_init'
+ahci_port_init: ; 0xf8526 LB 0x24d
+ push bp ; 55 ; 0xf8526 ahci.c:468
+ mov bp, sp ; 89 e5 ; 0xf8527
+ push cx ; 51 ; 0xf8529
+ push si ; 56 ; 0xf852a
+ push di ; 57 ; 0xf852b
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf852c
+ mov si, ax ; 89 c6 ; 0xf852f
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8531
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8534
+ call 083a6h ; e8 6c fe ; 0xf8537 ahci.c:471
+ mov al, bl ; 88 d8 ; 0xf853a ahci.c:474
+ xor ah, ah ; 30 e4 ; 0xf853c
+ sal ax, 007h ; c1 e0 07 ; 0xf853e
+ add ax, 00118h ; 05 18 01 ; 0xf8541
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8544 ahci.c:267
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8547
+ xor cx, cx ; 31 c9 ; 0xf854c ahci.c:269
+ mov dx, bx ; 89 da ; 0xf854e
+ xchg cx, ax ; 91 ; 0xf8550
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8551
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8555
+ out DX, eax ; 66 ef ; 0xf8557
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8559 ahci.c:270
+ mov dx, bx ; 89 da ; 0xf855c
+ in eax, DX ; 66 ed ; 0xf855e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8560
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8562
+ xchg dx, ax ; 92 ; 0xf8566
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8567
+ mov cx, dx ; 89 d1 ; 0xf8569
+ mov dx, bx ; 89 da ; 0xf856b
+ xchg cx, ax ; 91 ; 0xf856d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf856e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8572
+ out DX, eax ; 66 ef ; 0xf8574
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8576 ahci.c:477
+ xor ah, ah ; 30 e4 ; 0xf8579
+ sal ax, 007h ; c1 e0 07 ; 0xf857b
+ add ax, 00118h ; 05 18 01 ; 0xf857e
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8581 ahci.c:277
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8584
+ xor cx, cx ; 31 c9 ; 0xf8589 ahci.c:279
+ mov dx, bx ; 89 da ; 0xf858b
+ xchg cx, ax ; 91 ; 0xf858d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf858e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8592
+ out DX, eax ; 66 ef ; 0xf8594
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf8596 ahci.c:280
+ in eax, DX ; 66 ed ; 0xf8599
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf859b
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf859d
+ xchg dx, ax ; 92 ; 0xf85a1
+ test ax, 0c011h ; a9 11 c0 ; 0xf85a2
+ je short 085abh ; 74 04 ; 0xf85a5
+ mov AL, strict byte 001h ; b0 01 ; 0xf85a7
+ jmp short 085adh ; eb 02 ; 0xf85a9
+ xor al, al ; 30 c0 ; 0xf85ab
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf85ad ahci.c:281
+ je short 08576h ; 74 c5 ; 0xf85af
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf85b1 ahci.c:488
+ xor bx, bx ; 31 db ; 0xf85b4
+ mov ax, si ; 89 f0 ; 0xf85b6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf85b8
+ call 0aab0h ; e8 f2 24 ; 0xf85bb
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf85be ahci.c:489
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf85c2
+ xor bx, bx ; 31 db ; 0xf85c5
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf85c7
+ call 0aab0h ; e8 e3 24 ; 0xf85ca
+ lea di, [si+00200h] ; 8d bc 00 02 ; 0xf85cd ahci.c:490
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf85d1
+ xor bx, bx ; 31 db ; 0xf85d4
+ mov ax, di ; 89 f8 ; 0xf85d6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf85d8
+ call 0aab0h ; e8 d2 24 ; 0xf85db
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf85de ahci.c:494
+ xor bh, bh ; 30 ff ; 0xf85e1
+ sal bx, 007h ; c1 e3 07 ; 0xf85e3
+ lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf85e6
+ cwd ; 99 ; 0xf85ea
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85eb
+ mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf85ee
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf85f3
+ mov cx, dx ; 89 d1 ; 0xf85f6
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf85f8
+ xchg cx, ax ; 91 ; 0xf85fb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf85fc
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8600
+ out DX, eax ; 66 ef ; 0xf8602
+ mov ax, di ; 89 f8 ; 0xf8604
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8606
+ call 08018h ; e8 0c fa ; 0xf8609
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf860c
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf860f
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8614
+ mov cx, dx ; 89 d1 ; 0xf8617
+ mov dx, di ; 89 fa ; 0xf8619
+ xchg cx, ax ; 91 ; 0xf861b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf861c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8620
+ out DX, eax ; 66 ef ; 0xf8622
+ lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8624 ahci.c:495
+ cwd ; 99 ; 0xf8628
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8629
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf862c
+ mov cx, dx ; 89 d1 ; 0xf8631
+ mov dx, di ; 89 fa ; 0xf8633
+ xchg cx, ax ; 91 ; 0xf8635
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8636
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf863a
+ out DX, eax ; 66 ef ; 0xf863c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf863e
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8641
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8646
+ xor ax, ax ; 31 c0 ; 0xf8649
+ xor cx, cx ; 31 c9 ; 0xf864b
+ xchg cx, ax ; 91 ; 0xf864d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf864e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8652
+ out DX, eax ; 66 ef ; 0xf8654
+ lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf8656 ahci.c:498
+ cwd ; 99 ; 0xf865a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf865b
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf865e
+ mov cx, dx ; 89 d1 ; 0xf8663
+ mov dx, di ; 89 fa ; 0xf8665
+ xchg cx, ax ; 91 ; 0xf8667
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8668
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf866c
+ out DX, eax ; 66 ef ; 0xf866e
+ mov ax, si ; 89 f0 ; 0xf8670
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8672
+ call 08018h ; e8 a0 f9 ; 0xf8675
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8678
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf867b
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8680
+ mov cx, dx ; 89 d1 ; 0xf8683
+ mov dx, di ; 89 fa ; 0xf8685
+ xchg cx, ax ; 91 ; 0xf8687
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8688
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf868c
+ out DX, eax ; 66 ef ; 0xf868e
+ lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8690 ahci.c:499
+ cwd ; 99 ; 0xf8694
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8695
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8698
+ mov cx, dx ; 89 d1 ; 0xf869d
+ mov dx, di ; 89 fa ; 0xf869f
+ xchg cx, ax ; 91 ; 0xf86a1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf86a2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf86a6
+ out DX, eax ; 66 ef ; 0xf86a8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86aa
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf86ad
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf86b2
+ xor ax, ax ; 31 c0 ; 0xf86b5
+ xor cx, cx ; 31 c9 ; 0xf86b7
+ xchg cx, ax ; 91 ; 0xf86b9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf86ba
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf86be
+ out DX, eax ; 66 ef ; 0xf86c0
+ lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf86c2 ahci.c:502
+ cwd ; 99 ; 0xf86c6
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86c7
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf86ca
+ mov cx, dx ; 89 d1 ; 0xf86cf
+ mov dx, di ; 89 fa ; 0xf86d1
+ xchg cx, ax ; 91 ; 0xf86d3
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf86d4
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf86d8
+ out DX, eax ; 66 ef ; 0xf86da
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86dc
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf86df
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf86e4
+ xor ax, ax ; 31 c0 ; 0xf86e7
+ xor cx, cx ; 31 c9 ; 0xf86e9
+ xchg cx, ax ; 91 ; 0xf86eb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf86ec
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf86f0
+ out DX, eax ; 66 ef ; 0xf86f2
+ lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf86f4 ahci.c:503
+ cwd ; 99 ; 0xf86f8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86f9
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf86fc
+ mov cx, dx ; 89 d1 ; 0xf8701
+ mov dx, di ; 89 fa ; 0xf8703
+ xchg cx, ax ; 91 ; 0xf8705
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8706
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf870a
+ out DX, eax ; 66 ef ; 0xf870c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf870e
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8711
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8716
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8719
+ mov cx, ax ; 89 c1 ; 0xf871c
+ xchg cx, ax ; 91 ; 0xf871e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf871f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8723
+ out DX, eax ; 66 ef ; 0xf8725
+ lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8727 ahci.c:505
+ cwd ; 99 ; 0xf872b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf872c
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf872f
+ mov cx, dx ; 89 d1 ; 0xf8734
+ mov dx, bx ; 89 da ; 0xf8736
+ xchg cx, ax ; 91 ; 0xf8738
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8739
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf873d
+ out DX, eax ; 66 ef ; 0xf873f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8741
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8744
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8749
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf874c
+ mov cx, ax ; 89 c1 ; 0xf874f
+ xchg cx, ax ; 91 ; 0xf8751
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8752
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8756
+ out DX, eax ; 66 ef ; 0xf8758
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf875a ahci.c:507
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf875d
+ mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8760
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8765 ahci.c:508
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf876b ahci.c:509
+ pop di ; 5f ; 0xf876e
+ pop si ; 5e ; 0xf876f
+ pop cx ; 59 ; 0xf8770
+ pop bp ; 5d ; 0xf8771
+ retn ; c3 ; 0xf8772
+ ; disGetNextSymbol 0xf8773 LB 0x2665 -> off=0x0 cb=00000000000000a8 uValue=00000000000f7173 'ahci_read_sectors'
+ahci_read_sectors: ; 0xf8773 LB 0xa8
+ push bp ; 55 ; 0xf8773 ahci.c:518
+ mov bp, sp ; 89 e5 ; 0xf8774
+ push si ; 56 ; 0xf8776
+ push di ; 57 ; 0xf8777
+ push ax ; 50 ; 0xf8778
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf8779 ahci.c:523
+ mov bl, byte [es:bx+00ch] ; 26 8a 5f 0c ; 0xf877c
+ xor bh, bh ; 30 ff ; 0xf8780
+ sub bx, strict byte 0000ch ; 83 eb 0c ; 0xf8782
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf8785 ahci.c:524
+ jbe short 08799h ; 76 0f ; 0xf8788
+ push bx ; 53 ; 0xf878a ahci.c:525
+ push 00c9eh ; 68 9e 0c ; 0xf878b
+ push 00cb0h ; 68 b0 0c ; 0xf878e
+ push strict byte 00007h ; 6a 07 ; 0xf8791
+ call 01953h ; e8 bd 91 ; 0xf8793
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8796
+ xor di, di ; 31 ff ; 0xf8799 ahci.c:531
+ les si, [bp+004h] ; c4 76 04 ; 0xf879b
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf879e
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf87a3 ahci.c:247
+ mov es, dx ; 8e c2 ; 0xf87a7
+ mov word [es:di+00264h], ax ; 26 89 85 64 02 ; 0xf87a9
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf87ae ahci.c:532
+ add bx, si ; 01 f3 ; 0xf87b1
+ mov bl, byte [es:bx+002a1h] ; 26 8a 9f a1 02 ; 0xf87b3
+ xor bh, bh ; 30 ff ; 0xf87b8
+ mov di, si ; 89 f7 ; 0xf87ba
+ mov dx, word [es:di+002a6h] ; 26 8b 95 a6 02 ; 0xf87bc
+ xor ax, ax ; 31 c0 ; 0xf87c1
+ call 08526h ; e8 60 fd ; 0xf87c3
+ mov bx, strict word 00025h ; bb 25 00 ; 0xf87c6 ahci.c:533
+ mov ax, si ; 89 f0 ; 0xf87c9
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf87cb
+ call 0818ch ; e8 bb f9 ; 0xf87ce
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf87d1
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf87d4 ahci.c:535
+ mov bx, si ; 89 f3 ; 0xf87d7
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf87d9
+ mov word [es:bx+018h], ax ; 26 89 47 18 ; 0xf87dd
+ mov cx, ax ; 89 c1 ; 0xf87e1 ahci.c:537
+ sal cx, 009h ; c1 e1 09 ; 0xf87e3
+ shr cx, 1 ; d1 e9 ; 0xf87e6
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf87e8
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf87ec
+ mov si, di ; 89 fe ; 0xf87f0
+ mov dx, ax ; 89 c2 ; 0xf87f2
+ mov es, ax ; 8e c0 ; 0xf87f4
+ push DS ; 1e ; 0xf87f6
+ mov ds, dx ; 8e da ; 0xf87f7
+ rep movsw ; f3 a5 ; 0xf87f9
+ pop DS ; 1f ; 0xf87fb
+ xor bx, bx ; 31 db ; 0xf87fc ahci.c:539
+ les di, [bp+004h] ; c4 7e 04 ; 0xf87fe
+ mov es, [es:di+002a6h] ; 26 8e 85 a6 02 ; 0xf8801
+ mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8806 ahci.c:252
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf880b
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf880f ahci.c:541
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8812
+ pop di ; 5f ; 0xf8815
+ pop si ; 5e ; 0xf8816
+ pop bp ; 5d ; 0xf8817
+ retn 00004h ; c2 04 00 ; 0xf8818
+ ; disGetNextSymbol 0xf881b LB 0x25bd -> off=0x0 cb=0000000000000086 uValue=00000000000f721b 'ahci_write_sectors'
+ahci_write_sectors: ; 0xf881b LB 0x86
+ push bp ; 55 ; 0xf881b ahci.c:550
+ mov bp, sp ; 89 e5 ; 0xf881c
+ push si ; 56 ; 0xf881e
+ push di ; 57 ; 0xf881f
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf8820
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8823
+ mov es, cx ; 8e c1 ; 0xf8826 ahci.c:555
+ mov dl, byte [es:si+00ch] ; 26 8a 54 0c ; 0xf8828
+ xor dh, dh ; 30 f6 ; 0xf882c
+ sub dx, strict byte 0000ch ; 83 ea 0c ; 0xf882e
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf8831 ahci.c:556
+ jbe short 08845h ; 76 0f ; 0xf8834
+ push dx ; 52 ; 0xf8836 ahci.c:557
+ push 00ccfh ; 68 cf 0c ; 0xf8837
+ push 00cb0h ; 68 b0 0c ; 0xf883a
+ push strict byte 00007h ; 6a 07 ; 0xf883d
+ call 01953h ; e8 11 91 ; 0xf883f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8842
+ xor bx, bx ; 31 db ; 0xf8845 ahci.c:563
+ mov es, cx ; 8e c1 ; 0xf8847
+ mov di, word [es:si+002a6h] ; 26 8b bc a6 02 ; 0xf8849
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf884e ahci.c:247
+ mov es, di ; 8e c7 ; 0xf8852
+ mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8854
+ mov es, cx ; 8e c1 ; 0xf8859 ahci.c:564
+ mov bx, si ; 89 f3 ; 0xf885b
+ add bx, dx ; 01 d3 ; 0xf885d
+ mov bl, byte [es:bx+002a1h] ; 26 8a 9f a1 02 ; 0xf885f
+ xor bh, bh ; 30 ff ; 0xf8864
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8866
+ xor ax, ax ; 31 c0 ; 0xf886b
+ call 08526h ; e8 b6 fc ; 0xf886d
+ mov bx, strict word 00035h ; bb 35 00 ; 0xf8870 ahci.c:565
+ mov ax, si ; 89 f0 ; 0xf8873
+ mov dx, cx ; 89 ca ; 0xf8875
+ call 0818ch ; e8 12 f9 ; 0xf8877
+ mov dx, ax ; 89 c2 ; 0xf887a
+ mov es, cx ; 8e c1 ; 0xf887c ahci.c:567
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf887e
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8882
+ xor bx, bx ; 31 db ; 0xf8886 ahci.c:568
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf8888
+ mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf888d ahci.c:252
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8892
+ mov ax, dx ; 89 d0 ; 0xf8896 ahci.c:570
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8898
+ pop di ; 5f ; 0xf889b
+ pop si ; 5e ; 0xf889c
+ pop bp ; 5d ; 0xf889d
+ retn 00004h ; c2 04 00 ; 0xf889e
+ ; disGetNextSymbol 0xf88a1 LB 0x2537 -> off=0x0 cb=0000000000000154 uValue=00000000000f72a1 'ahci_cmd_packet'
+ahci_cmd_packet: ; 0xf88a1 LB 0x154
+ push bp ; 55 ; 0xf88a1 ahci.c:577
+ mov bp, sp ; 89 e5 ; 0xf88a2
+ push si ; 56 ; 0xf88a4
+ push di ; 57 ; 0xf88a5
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf88a6
+ mov di, ax ; 89 c7 ; 0xf88a9
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf88ab
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf88ae
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xf88b1
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf88b4 ahci.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf88b7
+ mov es, ax ; 8e c0 ; 0xf88ba
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf88bc
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf88bf ahci.c:59
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf88c2
+ cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf88c5 ahci.c:584
+ jne short 088eah ; 75 1f ; 0xf88c9
+ mov bx, 00ddch ; bb dc 0d ; 0xf88cb ahci.c:585
+ mov cx, ds ; 8c d9 ; 0xf88ce
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf88d0
+ call 01910h ; e8 3a 90 ; 0xf88d3
+ push 00ce2h ; 68 e2 0c ; 0xf88d6
+ push 00cf2h ; 68 f2 0c ; 0xf88d9
+ push strict byte 00004h ; 6a 04 ; 0xf88dc
+ call 01953h ; e8 72 90 ; 0xf88de
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf88e1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf88e4 ahci.c:586
+ jmp near 089ech ; e9 02 01 ; 0xf88e7
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf88ea ahci.c:597
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf88ed
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf88f0
+ sal ax, 1 ; d1 e0 ; 0xf88f3
+ rcl dx, 1 ; d1 d2 ; 0xf88f5
+ loop 088f3h ; e2 fa ; 0xf88f7
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf88f9
+ mov word [es:si], ax ; 26 89 04 ; 0xf88fc
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf88ff
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8903
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8909
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf890f ahci.c:598
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8912
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf8916
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf8919
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf891d ahci.c:599
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf8921
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8924
+ xor cx, cx ; 31 c9 ; 0xf8927
+ call 0aa60h ; e8 34 21 ; 0xf8929
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf892c
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf8930 ahci.c:602
+ mov ax, word [es:si+002a6h] ; 26 8b 84 a6 02 ; 0xf8935
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf893a
+ sub di, strict byte 0000ch ; 83 ef 0c ; 0xf893d ahci.c:590
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8940 ahci.c:247
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf8944
+ mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8947
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf894c ahci.c:605
+ add di, si ; 01 f7 ; 0xf894f
+ mov bl, byte [es:di+002a1h] ; 26 8a 9d a1 02 ; 0xf8951
+ xor bh, bh ; 30 ff ; 0xf8956
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8958
+ xor ax, ax ; 31 c0 ; 0xf895d
+ call 08526h ; e8 c4 fb ; 0xf895f
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf8962 ahci.c:608
+ xor ah, ah ; 30 e4 ; 0xf8965
+ push ax ; 50 ; 0xf8967
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8968
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf896b
+ mov ax, 000c0h ; b8 c0 00 ; 0xf896e
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8971
+ call 0aac0h ; e8 49 21 ; 0xf8974
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8977 ahci.c:612
+ mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf897a
+ mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf8980 ahci.c:613
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf8986
+ mov bx, 000a0h ; bb a0 00 ; 0xf898c ahci.c:615
+ mov ax, si ; 89 f0 ; 0xf898f
+ mov dx, es ; 8c c2 ; 0xf8991
+ call 0818ch ; e8 f6 f7 ; 0xf8993
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf8996 ahci.c:617
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf8999
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf899d
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf89a1
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf89a4
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf89a8
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf89ac ahci.c:619
+ mov cx, dx ; 89 d1 ; 0xf89b0
+ shr cx, 1 ; d1 e9 ; 0xf89b2
+ rcr bx, 1 ; d1 db ; 0xf89b4
+ mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf89b6
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf89ba
+ mov cx, bx ; 89 d9 ; 0xf89be
+ mov si, di ; 89 fe ; 0xf89c0
+ mov dx, ax ; 89 c2 ; 0xf89c2
+ mov es, ax ; 8e c0 ; 0xf89c4
+ push DS ; 1e ; 0xf89c6
+ mov ds, dx ; 8e da ; 0xf89c7
+ rep movsw ; f3 a5 ; 0xf89c9
+ pop DS ; 1f ; 0xf89cb
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf89cc ahci.c:252
+ mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf89cf
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89d4
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89d8 ahci.c:623
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf89db
+ or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf89df
+ jne short 089eah ; 75 05 ; 0xf89e3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf89e5
+ jmp short 089ech ; eb 02 ; 0xf89e8
+ xor ax, ax ; 31 c0 ; 0xf89ea
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf89ec ahci.c:624
+ pop di ; 5f ; 0xf89ef
+ pop si ; 5e ; 0xf89f0
+ pop bp ; 5d ; 0xf89f1
+ retn 0000ah ; c2 0a 00 ; 0xf89f2
+ ; disGetNextSymbol 0xf89f5 LB 0x23e3 -> off=0x0 cb=0000000000000005 uValue=00000000000f73f5 'wait_ticks_device_init'
+wait_ticks_device_init: ; 0xf89f5 LB 0x5
+ push bp ; 55 ; 0xf89f5 ahci.c:627
+ mov bp, sp ; 89 e5 ; 0xf89f6
+ pop bp ; 5d ; 0xf89f8 ahci.c:629
+ retn ; c3 ; 0xf89f9
+ ; disGetNextSymbol 0xf89fa LB 0x23de -> off=0x0 cb=00000000000004d2 uValue=00000000000f73fa 'ahci_port_detect_device'
+ahci_port_detect_device: ; 0xf89fa LB 0x4d2
+ push bp ; 55 ; 0xf89fa ahci.c:631
+ mov bp, sp ; 89 e5 ; 0xf89fb
+ push cx ; 51 ; 0xf89fd
+ push si ; 56 ; 0xf89fe
+ push di ; 57 ; 0xf89ff
+ sub sp, 00228h ; 81 ec 28 02 ; 0xf8a00
+ mov si, ax ; 89 c6 ; 0xf8a04
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf8a06
+ mov byte [bp-00ch], bl ; 88 5e f4 ; 0xf8a09
+ mov word [bp-020h], strict word 00000h ; c7 46 e0 00 00 ; 0xf8a0c ahci.c:637
+ mov cl, bl ; 88 d9 ; 0xf8a11 ahci.c:639
+ xor ch, ch ; 30 ed ; 0xf8a13
+ mov bx, cx ; 89 cb ; 0xf8a15
+ call 08526h ; e8 0c fb ; 0xf8a17
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8a1a ahci.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8a1d
+ mov es, ax ; 8e c0 ; 0xf8a20
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8a22
+ mov word [bp-00eh], strict word 0005eh ; c7 46 f2 5e 00 ; 0xf8a25 ahci.c:59
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf8a2a
+ mov ax, cx ; 89 c8 ; 0xf8a2d ahci.c:644
+ sal ax, 007h ; c1 e0 07 ; 0xf8a2f
+ add ax, 0012ch ; 05 2c 01 ; 0xf8a32
+ cwd ; 99 ; 0xf8a35
+ mov di, ax ; 89 c7 ; 0xf8a36
+ mov bx, dx ; 89 d3 ; 0xf8a38
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8a3a
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a3d
+ mov cx, bx ; 89 d9 ; 0xf8a42
+ xchg cx, ax ; 91 ; 0xf8a44
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a45
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a49
+ out DX, eax ; 66 ef ; 0xf8a4b
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8a4d
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a50
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a55
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8a58
+ xor cx, cx ; 31 c9 ; 0xf8a5b
+ xchg cx, ax ; 91 ; 0xf8a5d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a5e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a62
+ out DX, eax ; 66 ef ; 0xf8a64
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8a66 ahci.c:649
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a69
+ mov ax, di ; 89 f8 ; 0xf8a6e
+ mov cx, bx ; 89 d9 ; 0xf8a70
+ xchg cx, ax ; 91 ; 0xf8a72
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a73
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a77
+ out DX, eax ; 66 ef ; 0xf8a79
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8a7b
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a7e
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a83
+ xor ax, ax ; 31 c0 ; 0xf8a86
+ xor cx, cx ; 31 c9 ; 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
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf8a93 ahci.c:658
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8a96
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf8a99
+ mov es, ax ; 8e c0 ; 0xf8a9c ahci.c:659
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8a9e
+ add ax, strict word 00003h ; 05 03 00 ; 0xf8aa1
+ mov word [bp-022h], ax ; 89 46 de ; 0xf8aa4
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8aa7
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf8aab
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf8aae
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8ab1 ahci.c:661
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8ab4
+ cmp ax, word [bp-01ah] ; 3b 46 e6 ; 0xf8ab8
+ jc short 08aceh ; 72 11 ; 0xf8abb
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8abd
+ cmp ax, word [bp-01ah] ; 3b 46 e6 ; 0xf8ac1
+ jne short 08b1ah ; 75 54 ; 0xf8ac4
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8ac6
+ cmp ax, word [bp-022h] ; 3b 46 de ; 0xf8ac9
+ jnc short 08b1ah ; 73 4c ; 0xf8acc
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8ace ahci.c:664
+ xor ah, ah ; 30 e4 ; 0xf8ad1
+ sal ax, 007h ; c1 e0 07 ; 0xf8ad3
+ add ax, 00128h ; 05 28 01 ; 0xf8ad6
+ cwd ; 99 ; 0xf8ad9
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8ada
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8add
+ mov cx, dx ; 89 d1 ; 0xf8ae2
+ mov dx, bx ; 89 da ; 0xf8ae4
+ xchg cx, ax ; 91 ; 0xf8ae6
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ae7
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8aeb
+ out DX, eax ; 66 ef ; 0xf8aed
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8aef
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8af2
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8af7
+ in eax, DX ; 66 ed ; 0xf8afa
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8afc
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8afe
+ xchg dx, ax ; 92 ; 0xf8b02
+ mov word [bp-026h], ax ; 89 46 da ; 0xf8b03
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf8b06
+ push strict byte 00000h ; 6a 00 ; 0xf8b09 ahci.c:665
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8b0b
+ xor cx, cx ; 31 c9 ; 0xf8b0e
+ call 07ffch ; e8 e9 f4 ; 0xf8b10
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8b13
+ jne short 08ab1h ; 75 99 ; 0xf8b16
+ jmp short 08b23h ; eb 09 ; 0xf8b18 ahci.c:667
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf8b1a ahci.c:672
+ jne short 08b23h ; 75 03 ; 0xf8b1e
+ jmp near 08ec4h ; e9 a1 03 ; 0xf8b20
+ push strict byte 00000h ; 6a 00 ; 0xf8b23 ahci.c:677
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8b25
+ xor cx, cx ; 31 c9 ; 0xf8b28
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf8b2a
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf8b2d
+ call 07ffch ; e8 c9 f4 ; 0xf8b30
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8b33
+ jne short 08b20h ; 75 e8 ; 0xf8b36
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8b38 ahci.c:685
+ xor ah, ah ; 30 e4 ; 0xf8b3b
+ mov di, ax ; 89 c7 ; 0xf8b3d
+ sal di, 007h ; c1 e7 07 ; 0xf8b3f
+ lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8b42
+ cwd ; 99 ; 0xf8b46
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8b47
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8b4a
+ mov cx, dx ; 89 d1 ; 0xf8b4f
+ mov dx, bx ; 89 da ; 0xf8b51
+ xchg cx, ax ; 91 ; 0xf8b53
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b54
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b58
+ out DX, eax ; 66 ef ; 0xf8b5a
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8b5c
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b5f
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b64
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8b67
+ mov cx, ax ; 89 c1 ; 0xf8b6a
+ xchg cx, ax ; 91 ; 0xf8b6c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b6d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b71
+ out DX, eax ; 66 ef ; 0xf8b73
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8b75 ahci.c:687
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8b78
+ mov al, byte [es:bx+002a5h] ; 26 8a 87 a5 02 ; 0xf8b7b
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf8b80
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf8b83 ahci.c:692
+ jnc short 08b20h ; 73 99 ; 0xf8b85
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8b87 ahci.c:695
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8b8b ahci.c:258
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8b8e
+ xor cx, cx ; 31 c9 ; 0xf8b93 ahci.c:260
+ mov dx, bx ; 89 da ; 0xf8b95
+ xchg cx, ax ; 91 ; 0xf8b97
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b98
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b9c
+ out DX, eax ; 66 ef ; 0xf8b9e
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8ba0 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf8ba3
+ 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
+ or AL, strict byte 010h ; 0c 10 ; 0xf8bae
+ mov cx, dx ; 89 d1 ; 0xf8bb0
+ mov dx, bx ; 89 da ; 0xf8bb2
+ xchg cx, ax ; 91 ; 0xf8bb4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8bb5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8bb9
+ out DX, eax ; 66 ef ; 0xf8bbb
+ lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8bbd ahci.c:699
+ cwd ; 99 ; 0xf8bc1
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8bc2
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8bc5
+ mov cx, dx ; 89 d1 ; 0xf8bca
+ mov dx, bx ; 89 da ; 0xf8bcc
+ xchg cx, ax ; 91 ; 0xf8bce
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8bcf
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8bd3
+ out DX, eax ; 66 ef ; 0xf8bd5
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8bd7
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8bda
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8bdf
+ in eax, DX ; 66 ed ; 0xf8be2
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8be4
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8be6
+ xchg dx, ax ; 92 ; 0xf8bea
+ mov bx, dx ; 89 d3 ; 0xf8beb
+ mov cl, byte [bp-008h] ; 8a 4e f8 ; 0xf8bed
+ add cl, 00ch ; 80 c1 0c ; 0xf8bf0
+ test dx, dx ; 85 d2 ; 0xf8bf3 ahci.c:700
+ jne short 08c4bh ; 75 54 ; 0xf8bf5
+ cmp ax, 00101h ; 3d 01 01 ; 0xf8bf7
+ jne short 08c4bh ; 75 4f ; 0xf8bfa
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8bfc ahci.c:710
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8bff
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8c02
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8c08
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8c0e
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8c14
+ lea dx, [bp-0022eh] ; 8d 96 d2 fd ; 0xf8c19 ahci.c:711
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8c1d
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8c21
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8c25 ahci.c:712
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8c2b ahci.c:713
+ mov bx, 000ech ; bb ec 00 ; 0xf8c31 ahci.c:714
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c34
+ mov dx, es ; 8c c2 ; 0xf8c37
+ call 0818ch ; e8 50 f5 ; 0xf8c39
+ mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf8c3c ahci.c:717
+ test byte [bp-0022eh], 080h ; f6 86 d2 fd 80 ; 0xf8c3f ahci.c:719
+ je short 08c4eh ; 74 08 ; 0xf8c44
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8c46
+ jmp short 08c50h ; eb 05 ; 0xf8c49
+ jmp near 08dfch ; e9 ae 01 ; 0xf8c4b
+ xor ax, ax ; 31 c0 ; 0xf8c4e
+ mov dl, al ; 88 c2 ; 0xf8c50
+ mov ax, word [bp-0022ch] ; 8b 86 d4 fd ; 0xf8c52 ahci.c:720
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf8c56
+ mov ax, word [bp-00228h] ; 8b 86 d8 fd ; 0xf8c59 ahci.c:721
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf8c5d
+ mov ax, word [bp-00222h] ; 8b 86 de fd ; 0xf8c60 ahci.c:722
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf8c64
+ mov si, word [bp-001b6h] ; 8b b6 4a fe ; 0xf8c67 ahci.c:723
+ mov di, word [bp-001b4h] ; 8b be 4c fe ; 0xf8c6b
+ xor ax, ax ; 31 c0 ; 0xf8c6f
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf8c71
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf8c74
+ cmp di, 00fffh ; 81 ff ff 0f ; 0xf8c77 ahci.c:725
+ jne short 08c98h ; 75 1b ; 0xf8c7b
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf8c7d
+ jne short 08c98h ; 75 16 ; 0xf8c80
+ mov ax, word [bp-00160h] ; 8b 86 a0 fe ; 0xf8c82 ahci.c:726
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf8c86
+ mov ax, word [bp-00162h] ; 8b 86 9e fe ; 0xf8c89
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf8c8d
+ mov di, word [bp-00164h] ; 8b be 9c fe ; 0xf8c90
+ mov si, word [bp-00166h] ; 8b b6 9a fe ; 0xf8c94
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf8c98 ahci.c:730
+ xor bh, bh ; 30 ff ; 0xf8c9b
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8c9d
+ add bx, word [bp-00eh] ; 03 5e f2 ; 0xf8ca0
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8ca3
+ mov byte [es:bx+002a1h], al ; 26 88 87 a1 02 ; 0xf8ca6
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8cab ahci.c:731
+ xor ah, ah ; 30 e4 ; 0xf8cae
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8cb0
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8cb3
+ add bx, ax ; 01 c3 ; 0xf8cb6
+ mov word [es:bx+01eh], 0ff05h ; 26 c7 47 1e 05 ff ; 0xf8cb8
+ mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf8cbe ahci.c:733
+ mov byte [es:bx+021h], 000h ; 26 c6 47 21 00 ; 0xf8cc2 ahci.c:734
+ mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf8cc7 ahci.c:735
+ mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf8ccd ahci.c:736
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf8cd2 ahci.c:737
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8cd5
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf8cd9
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf8cdc
+ mov word [es:bx+034h], di ; 26 89 7f 34 ; 0xf8ce0
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf8ce4
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf8ce8 ahci.c:739
+ mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf8ceb
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf8cef ahci.c:740
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf8cf2
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf8cf6 ahci.c:741
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf8cf9
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8cfd ahci.c:744
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8d00
+ jc short 08d10h ; 72 0c ; 0xf8d02
+ jbe short 08d18h ; 76 12 ; 0xf8d04
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf8d06
+ je short 08d20h ; 74 16 ; 0xf8d08
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf8d0a
+ je short 08d1ch ; 74 0e ; 0xf8d0c
+ jmp short 08d56h ; eb 46 ; 0xf8d0e
+ test al, al ; 84 c0 ; 0xf8d10
+ jne short 08d56h ; 75 42 ; 0xf8d12
+ mov BL, strict byte 040h ; b3 40 ; 0xf8d14 ahci.c:747
+ jmp short 08d22h ; eb 0a ; 0xf8d16 ahci.c:748
+ mov BL, strict byte 048h ; b3 48 ; 0xf8d18 ahci.c:750
+ jmp short 08d22h ; eb 06 ; 0xf8d1a ahci.c:751
+ mov BL, strict byte 050h ; b3 50 ; 0xf8d1c ahci.c:753
+ jmp short 08d22h ; eb 02 ; 0xf8d1e ahci.c:754
+ mov BL, strict byte 058h ; b3 58 ; 0xf8d20 ahci.c:756
+ mov dl, bl ; 88 da ; 0xf8d22 ahci.c:760
+ add dl, 007h ; 80 c2 07 ; 0xf8d24
+ xor dh, dh ; 30 f6 ; 0xf8d27
+ mov ax, dx ; 89 d0 ; 0xf8d29
+ call 01664h ; e8 36 89 ; 0xf8d2b
+ test al, al ; 84 c0 ; 0xf8d2e
+ je short 08d56h ; 74 24 ; 0xf8d30
+ mov al, bl ; 88 d8 ; 0xf8d32 ahci.c:763
+ xor ah, ah ; 30 e4 ; 0xf8d34
+ call 0169ch ; e8 63 89 ; 0xf8d36
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf8d39
+ mov al, bl ; 88 d8 ; 0xf8d3c ahci.c:764
+ add AL, strict byte 002h ; 04 02 ; 0xf8d3e
+ xor ah, ah ; 30 e4 ; 0xf8d40
+ call 01664h ; e8 1f 89 ; 0xf8d42
+ xor ah, ah ; 30 e4 ; 0xf8d45
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf8d47
+ mov ax, dx ; 89 d0 ; 0xf8d4a ahci.c:765
+ call 01664h ; e8 15 89 ; 0xf8d4c
+ xor ah, ah ; 30 e4 ; 0xf8d4f
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf8d51
+ jmp short 08d66h ; eb 10 ; 0xf8d54 ahci.c:767
+ push word [bp-028h] ; ff 76 d8 ; 0xf8d56 ahci.c:768
+ push word [bp-014h] ; ff 76 ec ; 0xf8d59
+ push di ; 57 ; 0xf8d5c
+ push si ; 56 ; 0xf8d5d
+ mov dx, ss ; 8c d2 ; 0xf8d5e
+ lea ax, [bp-02eh] ; 8d 46 d2 ; 0xf8d60
+ call 05746h ; e8 e0 c9 ; 0xf8d63
+ mov bx, 00ddch ; bb dc 0d ; 0xf8d66 ahci.c:772
+ mov cx, ds ; 8c d9 ; 0xf8d69
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8d6b
+ call 01910h ; e8 9f 8b ; 0xf8d6e
+ push word [bp-028h] ; ff 76 d8 ; 0xf8d71
+ push word [bp-014h] ; ff 76 ec ; 0xf8d74
+ push di ; 57 ; 0xf8d77
+ push si ; 56 ; 0xf8d78
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8d79
+ push ax ; 50 ; 0xf8d7c
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf8d7d
+ push ax ; 50 ; 0xf8d80
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf8d81
+ push ax ; 50 ; 0xf8d84
+ push word [bp-01eh] ; ff 76 e2 ; 0xf8d85
+ push word [bp-01ch] ; ff 76 e4 ; 0xf8d88
+ push word [bp-018h] ; ff 76 e8 ; 0xf8d8b
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8d8e
+ xor ah, ah ; 30 e4 ; 0xf8d91
+ push ax ; 50 ; 0xf8d93
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8d94
+ push ax ; 50 ; 0xf8d97
+ push 00d12h ; 68 12 0d ; 0xf8d98
+ push strict byte 00004h ; 6a 04 ; 0xf8d9b
+ call 01953h ; e8 b3 8b ; 0xf8d9d
+ add sp, strict byte 0001ch ; 83 c4 1c ; 0xf8da0
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8da3 ahci.c:774
+ xor ah, ah ; 30 e4 ; 0xf8da6
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8da8
+ mov di, word [bp-00eh] ; 8b 7e f2 ; 0xf8dab
+ add di, ax ; 01 c7 ; 0xf8dae
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8db0
+ lea di, [di+026h] ; 8d 7d 26 ; 0xf8db3
+ push DS ; 1e ; 0xf8db6
+ push SS ; 16 ; 0xf8db7
+ pop DS ; 1f ; 0xf8db8
+ lea si, [bp-02eh] ; 8d 76 d2 ; 0xf8db9
+ movsw ; a5 ; 0xf8dbc
+ movsw ; a5 ; 0xf8dbd
+ movsw ; a5 ; 0xf8dbe
+ pop DS ; 1f ; 0xf8dbf
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8dc0 ahci.c:777
+ mov bl, byte [es:bx+0024eh] ; 26 8a 9f 4e 02 ; 0xf8dc3
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf8dc8 ahci.c:778
+ add dl, 00ch ; 80 c2 0c ; 0xf8dcb
+ mov al, bl ; 88 d8 ; 0xf8dce
+ xor ah, ah ; 30 e4 ; 0xf8dd0
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf8dd2
+ add si, ax ; 01 c6 ; 0xf8dd5
+ mov byte [es:si+0024fh], dl ; 26 88 94 4f 02 ; 0xf8dd7
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf8ddc ahci.c:779
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf8dde ahci.c:780
+ mov byte [es:si+0024eh], bl ; 26 88 9c 4e 02 ; 0xf8de1
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf8de6 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8de9
+ mov es, ax ; 8e c0 ; 0xf8dec
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf8dee
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf8df1 ahci.c:784
+ mov si, strict word 00075h ; be 75 00 ; 0xf8df3 ahci.c:53
+ mov byte [es:si], bl ; 26 88 1c ; 0xf8df6
+ jmp near 08eb3h ; e9 b7 00 ; 0xf8df9 ahci.c:787
+ cmp dx, 0eb14h ; 81 fa 14 eb ; 0xf8dfc
+ jne short 08e56h ; 75 54 ; 0xf8e00
+ cmp ax, 00101h ; 3d 01 01 ; 0xf8e02
+ jne short 08e56h ; 75 4f ; 0xf8e05
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8e07 ahci.c:792
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8e0a
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8e0d
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8e13
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8e19
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8e1f
+ lea dx, [bp-0022eh] ; 8d 96 d2 fd ; 0xf8e24 ahci.c:793
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8e28
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8e2c
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8e30 ahci.c:794
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8e36 ahci.c:795
+ mov bx, 000a1h ; bb a1 00 ; 0xf8e3c ahci.c:796
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8e3f
+ mov dx, es ; 8c c2 ; 0xf8e42
+ call 0818ch ; e8 45 f3 ; 0xf8e44
+ mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf8e47 ahci.c:799
+ test byte [bp-0022eh], 080h ; f6 86 d2 fd 80 ; 0xf8e4a ahci.c:801
+ je short 08e58h ; 74 07 ; 0xf8e4f
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf8e51
+ jmp short 08e5ah ; eb 04 ; 0xf8e54
+ jmp short 08eb3h ; eb 5b ; 0xf8e56
+ xor dx, dx ; 31 d2 ; 0xf8e58
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf8e5a ahci.c:803
+ xor bh, bh ; 30 ff ; 0xf8e5d
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8e5f
+ add bx, word [bp-00eh] ; 03 5e f2 ; 0xf8e62
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8e65
+ mov byte [es:bx+002a1h], al ; 26 88 87 a1 02 ; 0xf8e68
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8e6d ahci.c:804
+ xor ah, ah ; 30 e4 ; 0xf8e70
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8e72
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8e75
+ add bx, ax ; 01 c3 ; 0xf8e78
+ mov word [es:bx+01eh], 00505h ; 26 c7 47 1e 05 05 ; 0xf8e7a
+ mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf8e80 ahci.c:806
+ mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf8e84 ahci.c:807
+ mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf8e8a ahci.c:808
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8e8f ahci.c:811
+ mov al, byte [es:bx+00263h] ; 26 8a 87 63 02 ; 0xf8e92
+ mov ah, byte [bp-008h] ; 8a 66 f8 ; 0xf8e97 ahci.c:812
+ add ah, 00ch ; 80 c4 0c ; 0xf8e9a
+ mov bl, al ; 88 c3 ; 0xf8e9d
+ xor bh, bh ; 30 ff ; 0xf8e9f
+ add bx, word [bp-00eh] ; 03 5e f2 ; 0xf8ea1
+ mov byte [es:bx+00264h], ah ; 26 88 a7 64 02 ; 0xf8ea4
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8ea9 ahci.c:813
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8eab ahci.c:814
+ mov byte [es:bx+00263h], al ; 26 88 87 63 02 ; 0xf8eae
+ inc byte [bp-008h] ; fe 46 f8 ; 0xf8eb3 ahci.c:819
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8eb6 ahci.c:820
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8eb9
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8ebc
+ mov byte [es:bx+002a5h], al ; 26 88 87 a5 02 ; 0xf8ebf
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8ec4 ahci.c:825
+ pop di ; 5f ; 0xf8ec7
+ pop si ; 5e ; 0xf8ec8
+ pop cx ; 59 ; 0xf8ec9
+ pop bp ; 5d ; 0xf8eca
+ retn ; c3 ; 0xf8ecb
+ ; disGetNextSymbol 0xf8ecc LB 0x1f0c -> off=0x0 cb=000000000000003a uValue=00000000000f78cc 'ahci_mem_alloc'
+ahci_mem_alloc: ; 0xf8ecc LB 0x3a
+ push bx ; 53 ; 0xf8ecc ahci.c:830
+ push cx ; 51 ; 0xf8ecd
+ push dx ; 52 ; 0xf8ece
+ push di ; 57 ; 0xf8ecf
+ push bp ; 55 ; 0xf8ed0
+ mov bp, sp ; 89 e5 ; 0xf8ed1
+ mov di, 00413h ; bf 13 04 ; 0xf8ed3 ahci.c:58
+ xor ax, ax ; 31 c0 ; 0xf8ed6
+ mov es, ax ; 8e c0 ; 0xf8ed8
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8eda
+ test ax, ax ; 85 c0 ; 0xf8edd ahci.c:839
+ je short 08f00h ; 74 1f ; 0xf8edf
+ dec ax ; 48 ; 0xf8ee1 ahci.c:840
+ mov bx, ax ; 89 c3 ; 0xf8ee2
+ xor dx, dx ; 31 d2 ; 0xf8ee4 ahci.c:843
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf8ee6
+ sal ax, 1 ; d1 e0 ; 0xf8ee9
+ rcl dx, 1 ; d1 d2 ; 0xf8eeb
+ loop 08ee9h ; e2 fa ; 0xf8eed
+ mov di, dx ; 89 d7 ; 0xf8eef
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf8ef1
+ shr di, 1 ; d1 ef ; 0xf8ef4
+ rcr ax, 1 ; d1 d8 ; 0xf8ef6
+ loop 08ef4h ; e2 fa ; 0xf8ef8
+ mov di, 00413h ; bf 13 04 ; 0xf8efa ahci.c:63
+ mov word [es:di], bx ; 26 89 1d ; 0xf8efd
+ pop bp ; 5d ; 0xf8f00 ahci.c:848
+ pop di ; 5f ; 0xf8f01
+ pop dx ; 5a ; 0xf8f02
+ pop cx ; 59 ; 0xf8f03
+ pop bx ; 5b ; 0xf8f04
+ retn ; c3 ; 0xf8f05
+ ; disGetNextSymbol 0xf8f06 LB 0x1ed2 -> off=0x0 cb=0000000000000148 uValue=00000000000f7906 'ahci_hba_init'
+ahci_hba_init: ; 0xf8f06 LB 0x148
+ push bp ; 55 ; 0xf8f06 ahci.c:853
+ mov bp, sp ; 89 e5 ; 0xf8f07
+ push bx ; 53 ; 0xf8f09
+ push cx ; 51 ; 0xf8f0a
+ push dx ; 52 ; 0xf8f0b
+ push si ; 56 ; 0xf8f0c
+ push di ; 57 ; 0xf8f0d
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8f0e
+ mov si, ax ; 89 c6 ; 0xf8f11
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8f13 ahci.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8f16
+ mov es, ax ; 8e c0 ; 0xf8f19
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf8f1b
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf8f1e ahci.c:864
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf8f21 ahci.c:866
+ xor cx, cx ; 31 c9 ; 0xf8f24
+ mov dx, si ; 89 f2 ; 0xf8f26
+ xchg cx, ax ; 91 ; 0xf8f28
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f29
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f2d
+ out DX, eax ; 66 ef ; 0xf8f2f
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf8f31
+ in eax, DX ; 66 ed ; 0xf8f34
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8f36
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8f38
+ xchg dx, ax ; 92 ; 0xf8f3c
+ call 08ecch ; e8 8c ff ; 0xf8f3d ahci.c:872
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf8f40
+ test ax, ax ; 85 c0 ; 0xf8f43 ahci.c:873
+ jne short 08f4ah ; 75 03 ; 0xf8f45
+ jmp near 09044h ; e9 fa 00 ; 0xf8f47
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8f4a ahci.c:876
+ mov es, di ; 8e c7 ; 0xf8f4d
+ mov word [es:bx+002a6h], ax ; 26 89 87 a6 02 ; 0xf8f4f
+ mov byte [es:bx+002a5h], 000h ; 26 c6 87 a5 02 00 ; 0xf8f54 ahci.c:882
+ xor bx, bx ; 31 db ; 0xf8f5a ahci.c:884
+ mov es, ax ; 8e c0 ; 0xf8f5c
+ mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf8f5e ahci.c:885
+ mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf8f64 ahci.c:886
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8f69 ahci.c:260
+ xor cx, cx ; 31 c9 ; 0xf8f6c
+ mov dx, si ; 89 f2 ; 0xf8f6e
+ xchg cx, ax ; 91 ; 0xf8f70
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f71
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f75
+ out DX, eax ; 66 ef ; 0xf8f77
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8f79 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf8f7c
+ in eax, DX ; 66 ed ; 0xf8f7e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8f80
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8f82
+ xchg dx, ax ; 92 ; 0xf8f86
+ mov cx, dx ; 89 d1 ; 0xf8f87
+ or AL, strict byte 001h ; 0c 01 ; 0xf8f89
+ mov dx, bx ; 89 da ; 0xf8f8b
+ xchg cx, ax ; 91 ; 0xf8f8d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f8e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f92
+ out DX, eax ; 66 ef ; 0xf8f94
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8f96 ahci.c:892
+ xor cx, cx ; 31 c9 ; 0xf8f99
+ mov dx, si ; 89 f2 ; 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
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8fa6
+ mov dx, bx ; 89 da ; 0xf8fa9
+ in eax, DX ; 66 ed ; 0xf8fab
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8fad
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8faf
+ xchg dx, ax ; 92 ; 0xf8fb3
+ test AL, strict byte 001h ; a8 01 ; 0xf8fb4 ahci.c:893
+ jne short 08f96h ; 75 de ; 0xf8fb6
+ xor ax, ax ; 31 c0 ; 0xf8fb8 ahci.c:895
+ xor cx, cx ; 31 c9 ; 0xf8fba
+ mov dx, si ; 89 f2 ; 0xf8fbc
+ xchg cx, ax ; 91 ; 0xf8fbe
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8fbf
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8fc3
+ out DX, eax ; 66 ef ; 0xf8fc5
+ mov dx, bx ; 89 da ; 0xf8fc7
+ in eax, DX ; 66 ed ; 0xf8fc9
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8fcb
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8fcd
+ xchg dx, ax ; 92 ; 0xf8fd1
+ push strict byte 00000h ; 6a 00 ; 0xf8fd2 ahci.c:896
+ mov bx, strict word 0001fh ; bb 1f 00 ; 0xf8fd4
+ xor cx, cx ; 31 c9 ; 0xf8fd7
+ call 07ffch ; e8 20 f0 ; 0xf8fd9
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8fdc
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf8fde
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf8fe1 ahci.c:901
+ jmp short 09008h ; eb 21 ; 0xf8fe5 ahci.c:902
+ xor al, al ; 30 c0 ; 0xf8fe7 ahci.c:280
+ test al, al ; 84 c0 ; 0xf8fe9 ahci.c:281
+ je short 08fffh ; 74 12 ; 0xf8feb
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf8fed ahci.c:907
+ xor bh, bh ; 30 ff ; 0xf8ff0
+ xor ax, ax ; 31 c0 ; 0xf8ff2
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf8ff4
+ call 089fah ; e8 00 fa ; 0xf8ff7
+ dec byte [bp-00ch] ; fe 4e f4 ; 0xf8ffa ahci.c:908
+ je short 09042h ; 74 43 ; 0xf8ffd ahci.c:909
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf8fff ahci.c:912
+ cmp byte [bp-00eh], 020h ; 80 7e f2 20 ; 0xf9002 ahci.c:913
+ jnc short 09042h ; 73 3a ; 0xf9006
+ mov cl, byte [bp-00eh] ; 8a 4e f2 ; 0xf9008
+ xor ch, ch ; 30 ed ; 0xf900b
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf900d
+ xor di, di ; 31 ff ; 0xf9010
+ jcxz 0901ah ; e3 06 ; 0xf9012
+ sal bx, 1 ; d1 e3 ; 0xf9014
+ rcl di, 1 ; d1 d7 ; 0xf9016
+ loop 09014h ; e2 fa ; 0xf9018
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf901a
+ xor cx, cx ; 31 c9 ; 0xf901d
+ mov dx, si ; 89 f2 ; 0xf901f
+ xchg cx, ax ; 91 ; 0xf9021
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9022
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9026
+ out DX, eax ; 66 ef ; 0xf9028
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf902a
+ in eax, DX ; 66 ed ; 0xf902d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf902f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9031
+ xchg dx, ax ; 92 ; 0xf9035
+ test dx, di ; 85 fa ; 0xf9036
+ jne short 0903eh ; 75 04 ; 0xf9038
+ test ax, bx ; 85 d8 ; 0xf903a
+ je short 08fe7h ; 74 a9 ; 0xf903c
+ mov AL, strict byte 001h ; b0 01 ; 0xf903e
+ jmp short 08fe9h ; eb a7 ; 0xf9040
+ xor ax, ax ; 31 c0 ; 0xf9042 ahci.c:915
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf9044 ahci.c:916
+ pop di ; 5f ; 0xf9047
+ pop si ; 5e ; 0xf9048
+ pop dx ; 5a ; 0xf9049
+ pop cx ; 59 ; 0xf904a
+ pop bx ; 5b ; 0xf904b
+ pop bp ; 5d ; 0xf904c
+ retn ; c3 ; 0xf904d
+ ; disGetNextSymbol 0xf904e LB 0x1d8a -> off=0x17 cb=000000000000013a uValue=00000000000f7a65 'ahci_init'
+ db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 04eh, 091h, 02ch, 091h, 032h, 091h, 038h, 091h, 03eh
+ db 091h, 044h, 091h, 04ah, 091h, 04eh, 091h
+ahci_init: ; 0xf9065 LB 0x13a
+ push bp ; 55 ; 0xf9065 ahci.c:921
+ mov bp, sp ; 89 e5 ; 0xf9066
+ push si ; 56 ; 0xf9068
+ push di ; 57 ; 0xf9069
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf906a
+ mov ax, 00601h ; b8 01 06 ; 0xf906d ahci.c:925
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf9070
+ call 0a7f2h ; e8 7c 17 ; 0xf9073
+ mov dx, ax ; 89 c2 ; 0xf9076
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9078 ahci.c:926
+ je short 090c9h ; 74 4c ; 0xf907b
+ xor al, al ; 30 c0 ; 0xf907d ahci.c:931
+ shr ax, 008h ; c1 e8 08 ; 0xf907f
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf9082
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf9085 ahci.c:932
+ xor dh, dh ; 30 f6 ; 0xf9088 ahci.c:937
+ xor ah, ah ; 30 e4 ; 0xf908a
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf908c
+ call 0a825h ; e8 93 17 ; 0xf908f
+ mov cl, al ; 88 c1 ; 0xf9092
+ test cl, cl ; 84 c9 ; 0xf9094 ahci.c:939
+ je short 090cch ; 74 34 ; 0xf9096
+ mov bl, cl ; 88 cb ; 0xf9098 ahci.c:941
+ xor bh, bh ; 30 ff ; 0xf909a
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf909c
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf909f
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf90a2
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf90a5
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf90a8
+ mov byte [bp-013h], bh ; 88 7e ed ; 0xf90ab
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf90ae
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf90b1
+ call 0a825h ; e8 6e 17 ; 0xf90b4
+ cmp AL, strict byte 012h ; 3c 12 ; 0xf90b7 ahci.c:945
+ je short 090cch ; 74 11 ; 0xf90b9
+ mov bl, cl ; 88 cb ; 0xf90bb ahci.c:949
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf90bd
+ xor bh, bh ; 30 ff ; 0xf90bf
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf90c1
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf90c4
+ jmp short 0908fh ; eb c6 ; 0xf90c7 ahci.c:950
+ jmp near 09198h ; e9 cc 00 ; 0xf90c9
+ test cl, cl ; 84 c9 ; 0xf90cc ahci.c:952
+ je short 090c9h ; 74 f9 ; 0xf90ce
+ add cl, 002h ; 80 c1 02 ; 0xf90d0 ahci.c:959
+ mov bl, cl ; 88 cb ; 0xf90d3 ahci.c:961
+ xor bh, bh ; 30 ff ; 0xf90d5
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf90d7
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf90da
+ mov byte [bp-011h], bh ; 88 7e ef ; 0xf90dd
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf90e0
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf90e3
+ mov byte [bp-00bh], bh ; 88 7e f5 ; 0xf90e6
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf90e9
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf90ec
+ call 0a825h ; e8 33 17 ; 0xf90ef
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf90f2 ahci.c:962
+ jne short 090c9h ; 75 d3 ; 0xf90f4
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf90f6 ahci.c:965
+ mov bl, cl ; 88 cb ; 0xf90fa ahci.c:967
+ add bl, 002h ; 80 c3 02 ; 0xf90fc
+ xor bh, bh ; 30 ff ; 0xf90ff
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9101
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9104
+ call 0a853h ; e8 49 17 ; 0xf9107
+ mov dx, ax ; 89 c2 ; 0xf910a
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf910c ahci.c:971
+ sub ax, strict word 00004h ; 2d 04 00 ; 0xf910f
+ cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf9112
+ jnbe short 0914eh ; 77 37 ; 0xf9115
+ push CS ; 0e ; 0xf9117
+ pop ES ; 07 ; 0xf9118
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf9119
+ mov di, 0904eh ; bf 4e 90 ; 0xf911c
+ repne scasb ; f2 ae ; 0xf911f
+ sal cx, 1 ; d1 e1 ; 0xf9121
+ mov di, cx ; 89 cf ; 0xf9123
+ mov ax, word [cs:di-06fabh] ; 2e 8b 85 55 90 ; 0xf9125
+ jmp ax ; ff e0 ; 0xf912a
+ mov byte [bp-008h], 010h ; c6 46 f8 10 ; 0xf912c ahci.c:974
+ jmp short 0914eh ; eb 1c ; 0xf9130 ahci.c:975
+ mov byte [bp-008h], 014h ; c6 46 f8 14 ; 0xf9132 ahci.c:977
+ jmp short 0914eh ; eb 16 ; 0xf9136 ahci.c:978
+ mov byte [bp-008h], 018h ; c6 46 f8 18 ; 0xf9138 ahci.c:980
+ jmp short 0914eh ; eb 10 ; 0xf913c ahci.c:981
+ mov byte [bp-008h], 01ch ; c6 46 f8 1c ; 0xf913e ahci.c:983
+ jmp short 0914eh ; eb 0a ; 0xf9142 ahci.c:984
+ mov byte [bp-008h], 020h ; c6 46 f8 20 ; 0xf9144 ahci.c:986
+ jmp short 0914eh ; eb 04 ; 0xf9148 ahci.c:987
+ mov byte [bp-008h], 024h ; c6 46 f8 24 ; 0xf914a ahci.c:989
+ mov si, dx ; 89 d6 ; 0xf914e ahci.c:998
+ shr si, 004h ; c1 ee 04 ; 0xf9150
+ sal si, 002h ; c1 e6 02 ; 0xf9153
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9156 ahci.c:1000
+ test al, al ; 84 c0 ; 0xf9159
+ je short 09198h ; 74 3b ; 0xf915b
+ mov bl, al ; 88 c3 ; 0xf915d ahci.c:1002
+ xor bh, bh ; 30 ff ; 0xf915f
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9161
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf9164
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf9167
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf916a
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf916d
+ mov byte [bp-015h], bh ; 88 7e eb ; 0xf9170
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9173
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9176
+ call 0a87dh ; e8 01 17 ; 0xf9179
+ test AL, strict byte 001h ; a8 01 ; 0xf917c ahci.c:1006
+ je short 09198h ; 74 18 ; 0xf917e
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf9180 ahci.c:1009
+ add si, ax ; 01 c6 ; 0xf9182
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf9184 ahci.c:1012
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf9187
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf918a
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf918d
+ call 0a8cbh ; e8 38 17 ; 0xf9190
+ mov ax, si ; 89 f0 ; 0xf9193 ahci.c:1015
+ call 08f06h ; e8 6e fd ; 0xf9195
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9198 ahci.c:1029
+ pop di ; 5f ; 0xf919b
+ pop si ; 5e ; 0xf919c
+ pop bp ; 5d ; 0xf919d
+ retn ; c3 ; 0xf919e
+ ; disGetNextSymbol 0xf919f LB 0x1c39 -> off=0x0 cb=000000000000007b uValue=00000000000f7b9f 'virtio_reg_set_bar_offset_length'
+virtio_reg_set_bar_offset_length: ; 0xf919f LB 0x7b
+ push bp ; 55 ; 0xf919f virtio.c:287
+ mov bp, sp ; 89 e5 ; 0xf91a0
+ push cx ; 51 ; 0xf91a2
+ push si ; 56 ; 0xf91a3
+ push di ; 57 ; 0xf91a4
+ mov si, ax ; 89 c6 ; 0xf91a5
+ mov di, dx ; 89 d7 ; 0xf91a7
+ mov cl, bl ; 88 d9 ; 0xf91a9 virtio.c:289
+ xor ch, ch ; 30 ed ; 0xf91ab
+ mov es, dx ; 8e c2 ; 0xf91ad
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf91af
+ add bl, 004h ; 80 c3 04 ; 0xf91b4
+ xor bh, bh ; 30 ff ; 0xf91b7
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf91b9
+ xor dh, dh ; 30 f6 ; 0xf91be
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf91c0
+ xor ah, ah ; 30 e4 ; 0xf91c5
+ call 0a8f0h ; e8 26 17 ; 0xf91c7
+ push word [bp+006h] ; ff 76 06 ; 0xf91ca virtio.c:290
+ push word [bp+004h] ; ff 76 04 ; 0xf91cd
+ mov es, di ; 8e c7 ; 0xf91d0
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf91d2
+ add bl, 008h ; 80 c3 08 ; 0xf91d7
+ xor bh, bh ; 30 ff ; 0xf91da
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf91dc
+ xor dh, dh ; 30 f6 ; 0xf91e1
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf91e3
+ xor ah, ah ; 30 e4 ; 0xf91e8
+ call 0a915h ; e8 28 17 ; 0xf91ea
+ push word [bp+00ah] ; ff 76 0a ; 0xf91ed virtio.c:291
+ push word [bp+008h] ; ff 76 08 ; 0xf91f0
+ mov es, di ; 8e c7 ; 0xf91f3
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf91f5
+ add bl, 00ch ; 80 c3 0c ; 0xf91fa
+ xor bh, bh ; 30 ff ; 0xf91fd
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf91ff
+ xor dh, dh ; 30 f6 ; 0xf9204
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9206
+ xor ah, ah ; 30 e4 ; 0xf920b
+ call 0a915h ; e8 05 17 ; 0xf920d
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9210 virtio.c:292
+ pop di ; 5f ; 0xf9213
+ pop si ; 5e ; 0xf9214
+ pop cx ; 59 ; 0xf9215
+ pop bp ; 5d ; 0xf9216
+ retn 00008h ; c2 08 00 ; 0xf9217
+ ; disGetNextSymbol 0xf921a LB 0x1bbe -> off=0x0 cb=0000000000000033 uValue=00000000000f7c1a 'virtio_reg_common_access_prepare'
+virtio_reg_common_access_prepare: ; 0xf921a LB 0x33
+ push bp ; 55 ; 0xf921a virtio.c:294
+ mov bp, sp ; 89 e5 ; 0xf921b
+ push si ; 56 ; 0xf921d
+ mov si, ax ; 89 c6 ; 0xf921e
+ mov es, dx ; 8e c2 ; 0xf9220
+ push word [bp+006h] ; ff 76 06 ; 0xf9222 virtio.c:296
+ push word [bp+004h] ; ff 76 04 ; 0xf9225
+ xor dx, dx ; 31 d2 ; 0xf9228
+ mov ax, word [es:si+060h] ; 26 8b 44 60 ; 0xf922a
+ add ax, bx ; 01 d8 ; 0xf922e
+ mov bx, word [es:si+062h] ; 26 8b 5c 62 ; 0xf9230
+ adc bx, dx ; 11 d3 ; 0xf9234
+ push bx ; 53 ; 0xf9236
+ push ax ; 50 ; 0xf9237
+ mov bl, byte [es:si+05ch] ; 26 8a 5c 5c ; 0xf9238
+ xor bh, bh ; 30 ff ; 0xf923c
+ mov ax, si ; 89 f0 ; 0xf923e
+ mov dx, es ; 8c c2 ; 0xf9240
+ call 0919fh ; e8 5a ff ; 0xf9242
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9245 virtio.c:300
+ pop si ; 5e ; 0xf9248
+ pop bp ; 5d ; 0xf9249
+ retn 00004h ; c2 04 00 ; 0xf924a
+ ; disGetNextSymbol 0xf924d LB 0x1b8b -> off=0x0 cb=0000000000000036 uValue=00000000000f7c4d 'virtio_reg_dev_access_prepare'
+virtio_reg_dev_access_prepare: ; 0xf924d LB 0x36
+ push bp ; 55 ; 0xf924d virtio.c:302
+ mov bp, sp ; 89 e5 ; 0xf924e
+ push si ; 56 ; 0xf9250
+ mov si, ax ; 89 c6 ; 0xf9251
+ mov es, dx ; 8e c2 ; 0xf9253
+ push word [bp+006h] ; ff 76 06 ; 0xf9255 virtio.c:304
+ push word [bp+004h] ; ff 76 04 ; 0xf9258
+ xor dx, dx ; 31 d2 ; 0xf925b
+ mov ax, word [es:si+00084h] ; 26 8b 84 84 00 ; 0xf925d
+ add ax, bx ; 01 d8 ; 0xf9262
+ mov bx, word [es:si+00086h] ; 26 8b 9c 86 00 ; 0xf9264
+ adc bx, dx ; 11 d3 ; 0xf9269
+ push bx ; 53 ; 0xf926b
+ push ax ; 50 ; 0xf926c
+ mov bl, byte [es:si+00080h] ; 26 8a 9c 80 00 ; 0xf926d
+ xor bh, bh ; 30 ff ; 0xf9272
+ mov ax, si ; 89 f0 ; 0xf9274
+ mov dx, es ; 8c c2 ; 0xf9276
+ call 0919fh ; e8 24 ff ; 0xf9278
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf927b virtio.c:308
+ pop si ; 5e ; 0xf927e
+ pop bp ; 5d ; 0xf927f
+ retn 00004h ; c2 04 00 ; 0xf9280
+ ; disGetNextSymbol 0xf9283 LB 0x1b55 -> off=0x0 cb=0000000000000033 uValue=00000000000f7c83 'virtio_reg_notify_access_prepare'
+virtio_reg_notify_access_prepare: ; 0xf9283 LB 0x33
+ push bp ; 55 ; 0xf9283 virtio.c:310
+ mov bp, sp ; 89 e5 ; 0xf9284
+ push si ; 56 ; 0xf9286
+ mov si, ax ; 89 c6 ; 0xf9287
+ mov es, dx ; 8e c2 ; 0xf9289
+ push word [bp+006h] ; ff 76 06 ; 0xf928b virtio.c:312
+ push word [bp+004h] ; ff 76 04 ; 0xf928e
+ xor dx, dx ; 31 d2 ; 0xf9291
+ mov ax, word [es:si+06ch] ; 26 8b 44 6c ; 0xf9293
+ add ax, bx ; 01 d8 ; 0xf9297
+ mov bx, word [es:si+06eh] ; 26 8b 5c 6e ; 0xf9299
+ adc bx, dx ; 11 d3 ; 0xf929d
+ push bx ; 53 ; 0xf929f
+ push ax ; 50 ; 0xf92a0
+ mov bl, byte [es:si+068h] ; 26 8a 5c 68 ; 0xf92a1
+ xor bh, bh ; 30 ff ; 0xf92a5
+ mov ax, si ; 89 f0 ; 0xf92a7
+ mov dx, es ; 8c c2 ; 0xf92a9
+ call 0919fh ; e8 f1 fe ; 0xf92ab
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf92ae virtio.c:316
+ pop si ; 5e ; 0xf92b1
+ pop bp ; 5d ; 0xf92b2
+ retn 00004h ; c2 04 00 ; 0xf92b3
+ ; disGetNextSymbol 0xf92b6 LB 0x1b22 -> off=0x0 cb=0000000000000021 uValue=00000000000f7cb6 'virtio_reg_isr_prepare'
+virtio_reg_isr_prepare: ; 0xf92b6 LB 0x21
+ push bp ; 55 ; 0xf92b6 virtio.c:318
+ mov bp, sp ; 89 e5 ; 0xf92b7
+ push si ; 56 ; 0xf92b9
+ mov si, ax ; 89 c6 ; 0xf92ba
+ mov es, dx ; 8e c2 ; 0xf92bc
+ push cx ; 51 ; 0xf92be virtio.c:320
+ push bx ; 53 ; 0xf92bf
+ push word [es:si+07ah] ; 26 ff 74 7a ; 0xf92c0
+ push word [es:si+078h] ; 26 ff 74 78 ; 0xf92c4
+ mov bl, byte [es:si+074h] ; 26 8a 5c 74 ; 0xf92c8
+ xor bh, bh ; 30 ff ; 0xf92cc
+ call 0919fh ; e8 ce fe ; 0xf92ce
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf92d1 virtio.c:324
+ pop si ; 5e ; 0xf92d4
+ pop bp ; 5d ; 0xf92d5
+ retn ; c3 ; 0xf92d6
+ ; disGetNextSymbol 0xf92d7 LB 0x1b01 -> off=0x0 cb=0000000000000034 uValue=00000000000f7cd7 'virtio_reg_common_read_u8'
+virtio_reg_common_read_u8: ; 0xf92d7 LB 0x34
+ push bp ; 55 ; 0xf92d7 virtio.c:326
+ mov bp, sp ; 89 e5 ; 0xf92d8
+ push cx ; 51 ; 0xf92da
+ push si ; 56 ; 0xf92db
+ mov si, ax ; 89 c6 ; 0xf92dc
+ mov cx, dx ; 89 d1 ; 0xf92de
+ push strict byte 00000h ; 6a 00 ; 0xf92e0 virtio.c:328
+ push strict byte 00001h ; 6a 01 ; 0xf92e2
+ call 0921ah ; e8 33 ff ; 0xf92e4
+ mov es, cx ; 8e c1 ; 0xf92e7 virtio.c:329
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf92e9
+ add bl, 010h ; 80 c3 10 ; 0xf92ee
+ xor bh, bh ; 30 ff ; 0xf92f1
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf92f3
+ xor dh, dh ; 30 f6 ; 0xf92f8
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf92fa
+ xor ah, ah ; 30 e4 ; 0xf92ff
+ call 0a825h ; e8 21 15 ; 0xf9301
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9304 virtio.c:330
+ pop si ; 5e ; 0xf9307
+ pop cx ; 59 ; 0xf9308
+ pop bp ; 5d ; 0xf9309
+ retn ; c3 ; 0xf930a
+ ; disGetNextSymbol 0xf930b LB 0x1acd -> off=0x0 cb=0000000000000036 uValue=00000000000f7d0b 'virtio_reg_common_write_u8'
+virtio_reg_common_write_u8: ; 0xf930b LB 0x36
+ push bp ; 55 ; 0xf930b virtio.c:332
+ mov bp, sp ; 89 e5 ; 0xf930c
+ push si ; 56 ; 0xf930e
+ push di ; 57 ; 0xf930f
+ mov si, ax ; 89 c6 ; 0xf9310
+ mov di, dx ; 89 d7 ; 0xf9312
+ push strict byte 00000h ; 6a 00 ; 0xf9314 virtio.c:334
+ push strict byte 00001h ; 6a 01 ; 0xf9316
+ call 0921ah ; e8 ff fe ; 0xf9318
+ xor ch, ch ; 30 ed ; 0xf931b virtio.c:335
+ mov es, di ; 8e c7 ; 0xf931d
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf931f
+ add bl, 010h ; 80 c3 10 ; 0xf9324
+ xor bh, bh ; 30 ff ; 0xf9327
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9329
+ xor dh, dh ; 30 f6 ; 0xf932e
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9330
+ xor ah, ah ; 30 e4 ; 0xf9335
+ call 0a8f0h ; e8 b6 15 ; 0xf9337
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf933a virtio.c:336
+ pop di ; 5f ; 0xf933d
+ pop si ; 5e ; 0xf933e
+ pop bp ; 5d ; 0xf933f
+ retn ; c3 ; 0xf9340
+ ; disGetNextSymbol 0xf9341 LB 0x1a97 -> off=0x0 cb=0000000000000034 uValue=00000000000f7d41 'virtio_reg_common_read_u16'
+virtio_reg_common_read_u16: ; 0xf9341 LB 0x34
+ push bp ; 55 ; 0xf9341 virtio.c:338
+ mov bp, sp ; 89 e5 ; 0xf9342
+ push cx ; 51 ; 0xf9344
+ push si ; 56 ; 0xf9345
+ mov si, ax ; 89 c6 ; 0xf9346
+ mov cx, dx ; 89 d1 ; 0xf9348
+ push strict byte 00000h ; 6a 00 ; 0xf934a virtio.c:340
+ push strict byte 00002h ; 6a 02 ; 0xf934c
+ call 0921ah ; e8 c9 fe ; 0xf934e
+ mov es, cx ; 8e c1 ; 0xf9351 virtio.c:341
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9353
+ add bl, 010h ; 80 c3 10 ; 0xf9358
+ xor bh, bh ; 30 ff ; 0xf935b
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf935d
+ xor dh, dh ; 30 f6 ; 0xf9362
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9364
+ xor ah, ah ; 30 e4 ; 0xf9369
+ call 0a853h ; e8 e5 14 ; 0xf936b
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf936e virtio.c:342
+ pop si ; 5e ; 0xf9371
+ pop cx ; 59 ; 0xf9372
+ pop bp ; 5d ; 0xf9373
+ retn ; c3 ; 0xf9374
+ ; disGetNextSymbol 0xf9375 LB 0x1a63 -> off=0x0 cb=0000000000000034 uValue=00000000000f7d75 'virtio_reg_common_write_u16'
+virtio_reg_common_write_u16: ; 0xf9375 LB 0x34
+ push bp ; 55 ; 0xf9375 virtio.c:344
+ mov bp, sp ; 89 e5 ; 0xf9376
+ push si ; 56 ; 0xf9378
+ push di ; 57 ; 0xf9379
+ mov si, ax ; 89 c6 ; 0xf937a
+ mov di, dx ; 89 d7 ; 0xf937c
+ push strict byte 00000h ; 6a 00 ; 0xf937e virtio.c:346
+ push strict byte 00002h ; 6a 02 ; 0xf9380
+ call 0921ah ; e8 95 fe ; 0xf9382
+ mov es, di ; 8e c7 ; 0xf9385 virtio.c:347
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9387
+ add bl, 010h ; 80 c3 10 ; 0xf938c
+ xor bh, bh ; 30 ff ; 0xf938f
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9391
+ xor dh, dh ; 30 f6 ; 0xf9396
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9398
+ xor ah, ah ; 30 e4 ; 0xf939d
+ call 0a8cbh ; e8 29 15 ; 0xf939f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf93a2 virtio.c:348
+ pop di ; 5f ; 0xf93a5
+ pop si ; 5e ; 0xf93a6
+ pop bp ; 5d ; 0xf93a7
+ retn ; c3 ; 0xf93a8
+ ; disGetNextSymbol 0xf93a9 LB 0x1a2f -> off=0x0 cb=000000000000003c uValue=00000000000f7da9 'virtio_reg_common_write_u32'
+virtio_reg_common_write_u32: ; 0xf93a9 LB 0x3c
+ push bp ; 55 ; 0xf93a9 virtio.c:350
+ mov bp, sp ; 89 e5 ; 0xf93aa
+ push cx ; 51 ; 0xf93ac
+ push si ; 56 ; 0xf93ad
+ mov si, ax ; 89 c6 ; 0xf93ae
+ mov cx, dx ; 89 d1 ; 0xf93b0
+ push strict byte 00000h ; 6a 00 ; 0xf93b2 virtio.c:352
+ push strict byte 00004h ; 6a 04 ; 0xf93b4
+ call 0921ah ; e8 61 fe ; 0xf93b6
+ push word [bp+006h] ; ff 76 06 ; 0xf93b9 virtio.c:353
+ push word [bp+004h] ; ff 76 04 ; 0xf93bc
+ mov es, cx ; 8e c1 ; 0xf93bf
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf93c1
+ add bl, 010h ; 80 c3 10 ; 0xf93c6
+ xor bh, bh ; 30 ff ; 0xf93c9
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf93cb
+ xor dh, dh ; 30 f6 ; 0xf93d0
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf93d2
+ xor ah, ah ; 30 e4 ; 0xf93d7
+ call 0a915h ; e8 39 15 ; 0xf93d9
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf93dc virtio.c:354
+ pop si ; 5e ; 0xf93df
+ pop cx ; 59 ; 0xf93e0
+ pop bp ; 5d ; 0xf93e1
+ retn 00004h ; c2 04 00 ; 0xf93e2
+ ; disGetNextSymbol 0xf93e5 LB 0x19f3 -> off=0x0 cb=0000000000000034 uValue=00000000000f7de5 'virtio_reg_dev_cfg_read_u32'
+virtio_reg_dev_cfg_read_u32: ; 0xf93e5 LB 0x34
+ push bp ; 55 ; 0xf93e5 virtio.c:356
+ mov bp, sp ; 89 e5 ; 0xf93e6
+ push cx ; 51 ; 0xf93e8
+ push si ; 56 ; 0xf93e9
+ mov si, ax ; 89 c6 ; 0xf93ea
+ mov cx, dx ; 89 d1 ; 0xf93ec
+ push strict byte 00000h ; 6a 00 ; 0xf93ee virtio.c:358
+ push strict byte 00004h ; 6a 04 ; 0xf93f0
+ call 0924dh ; e8 58 fe ; 0xf93f2
+ mov es, cx ; 8e c1 ; 0xf93f5 virtio.c:359
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf93f7
+ add bl, 010h ; 80 c3 10 ; 0xf93fc
+ xor bh, bh ; 30 ff ; 0xf93ff
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9401
+ xor dh, dh ; 30 f6 ; 0xf9406
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9408
+ xor ah, ah ; 30 e4 ; 0xf940d
+ call 0a87dh ; e8 6b 14 ; 0xf940f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9412 virtio.c:360
+ pop si ; 5e ; 0xf9415
+ pop cx ; 59 ; 0xf9416
+ pop bp ; 5d ; 0xf9417
+ retn ; c3 ; 0xf9418
+ ; disGetNextSymbol 0xf9419 LB 0x19bf -> off=0x0 cb=000000000000003c uValue=00000000000f7e19 'virtio_reg_dev_cfg_write_u32'
+virtio_reg_dev_cfg_write_u32: ; 0xf9419 LB 0x3c
+ push bp ; 55 ; 0xf9419 virtio.c:362
+ mov bp, sp ; 89 e5 ; 0xf941a
+ push cx ; 51 ; 0xf941c
+ push si ; 56 ; 0xf941d
+ mov si, ax ; 89 c6 ; 0xf941e
+ mov cx, dx ; 89 d1 ; 0xf9420
+ push strict byte 00000h ; 6a 00 ; 0xf9422 virtio.c:364
+ push strict byte 00004h ; 6a 04 ; 0xf9424
+ call 0924dh ; e8 24 fe ; 0xf9426
+ push word [bp+006h] ; ff 76 06 ; 0xf9429 virtio.c:365
+ push word [bp+004h] ; ff 76 04 ; 0xf942c
+ mov es, cx ; 8e c1 ; 0xf942f
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9431
+ add bl, 010h ; 80 c3 10 ; 0xf9436
+ xor bh, bh ; 30 ff ; 0xf9439
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf943b
+ xor dh, dh ; 30 f6 ; 0xf9440
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9442
+ xor ah, ah ; 30 e4 ; 0xf9447
+ call 0a915h ; e8 c9 14 ; 0xf9449
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf944c virtio.c:366
+ pop si ; 5e ; 0xf944f
+ pop cx ; 59 ; 0xf9450
+ pop bp ; 5d ; 0xf9451
+ retn 00004h ; c2 04 00 ; 0xf9452
+ ; disGetNextSymbol 0xf9455 LB 0x1983 -> off=0x0 cb=0000000000000034 uValue=00000000000f7e55 'virtio_reg_notify_write_u16'
+virtio_reg_notify_write_u16: ; 0xf9455 LB 0x34
+ push bp ; 55 ; 0xf9455 virtio.c:368
+ mov bp, sp ; 89 e5 ; 0xf9456
+ push si ; 56 ; 0xf9458
+ push di ; 57 ; 0xf9459
+ mov si, ax ; 89 c6 ; 0xf945a
+ mov di, dx ; 89 d7 ; 0xf945c
+ push strict byte 00000h ; 6a 00 ; 0xf945e virtio.c:370
+ push strict byte 00002h ; 6a 02 ; 0xf9460
+ call 09283h ; e8 1e fe ; 0xf9462
+ mov es, di ; 8e c7 ; 0xf9465 virtio.c:371
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9467
+ add bl, 010h ; 80 c3 10 ; 0xf946c
+ xor bh, bh ; 30 ff ; 0xf946f
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9471
+ xor dh, dh ; 30 f6 ; 0xf9476
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9478
+ xor ah, ah ; 30 e4 ; 0xf947d
+ call 0a8cbh ; e8 49 14 ; 0xf947f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9482 virtio.c:372
+ pop di ; 5f ; 0xf9485
+ pop si ; 5e ; 0xf9486
+ pop bp ; 5d ; 0xf9487
+ retn ; c3 ; 0xf9488
+ ; disGetNextSymbol 0xf9489 LB 0x194f -> off=0x0 cb=0000000000000039 uValue=00000000000f7e89 'virtio_reg_isr_read_u8'
+virtio_reg_isr_read_u8: ; 0xf9489 LB 0x39
+ push bp ; 55 ; 0xf9489 virtio.c:374
+ mov bp, sp ; 89 e5 ; 0xf948a
+ push bx ; 53 ; 0xf948c
+ push cx ; 51 ; 0xf948d
+ push si ; 56 ; 0xf948e
+ push di ; 57 ; 0xf948f
+ mov si, ax ; 89 c6 ; 0xf9490
+ mov di, dx ; 89 d7 ; 0xf9492
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf9494 virtio.c:376
+ xor cx, cx ; 31 c9 ; 0xf9497
+ call 092b6h ; e8 1a fe ; 0xf9499
+ mov es, di ; 8e c7 ; 0xf949c virtio.c:377
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf949e
+ add bl, 010h ; 80 c3 10 ; 0xf94a3
+ xor bh, bh ; 30 ff ; 0xf94a6
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf94a8
+ xor dh, dh ; 30 f6 ; 0xf94ad
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf94af
+ xor ah, ah ; 30 e4 ; 0xf94b4
+ call 0a825h ; e8 6c 13 ; 0xf94b6
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf94b9 virtio.c:378
+ pop di ; 5f ; 0xf94bc
+ pop si ; 5e ; 0xf94bd
+ pop cx ; 59 ; 0xf94be
+ pop bx ; 5b ; 0xf94bf
+ pop bp ; 5d ; 0xf94c0
+ retn ; c3 ; 0xf94c1
+ ; disGetNextSymbol 0xf94c2 LB 0x1916 -> off=0x0 cb=000000000000001e uValue=00000000000f7ec2 'virtio_addr_to_phys'
+virtio_addr_to_phys: ; 0xf94c2 LB 0x1e
+ push bx ; 53 ; 0xf94c2 virtio.c:383
+ push cx ; 51 ; 0xf94c3
+ push bp ; 55 ; 0xf94c4
+ mov bp, sp ; 89 e5 ; 0xf94c5
+ mov bx, ax ; 89 c3 ; 0xf94c7
+ mov ax, dx ; 89 d0 ; 0xf94c9
+ xor dx, dx ; 31 d2 ; 0xf94cb virtio.c:385
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf94cd
+ sal ax, 1 ; d1 e0 ; 0xf94d0
+ rcl dx, 1 ; d1 d2 ; 0xf94d2
+ loop 094d0h ; e2 fa ; 0xf94d4
+ xor cx, cx ; 31 c9 ; 0xf94d6
+ add ax, bx ; 01 d8 ; 0xf94d8
+ adc dx, cx ; 11 ca ; 0xf94da
+ pop bp ; 5d ; 0xf94dc virtio.c:386
+ pop cx ; 59 ; 0xf94dd
+ pop bx ; 5b ; 0xf94de
+ retn ; c3 ; 0xf94df
+ ; disGetNextSymbol 0xf94e0 LB 0x18f8 -> off=0x0 cb=0000000000000172 uValue=00000000000f7ee0 'virtio_scsi_cmd_data_out'
+virtio_scsi_cmd_data_out: ; 0xf94e0 LB 0x172
+ push bp ; 55 ; 0xf94e0 virtio.c:388
+ mov bp, sp ; 89 e5 ; 0xf94e1
+ push cx ; 51 ; 0xf94e3
+ push si ; 56 ; 0xf94e4
+ push di ; 57 ; 0xf94e5
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf94e6
+ mov si, ax ; 89 c6 ; 0xf94e9
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf94eb
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf94ee
+ mov di, ax ; 89 c7 ; 0xf94f1 virtio.c:391
+ mov es, dx ; 8e c2 ; 0xf94f3
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf94f5
+ mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf94f8
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf94fc
+ lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf94ff virtio.c:394
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9503
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf9506
+ xor bx, bx ; 31 db ; 0xf9509
+ call 0aab0h ; e8 a2 15 ; 0xf950b
+ lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf950e virtio.c:395
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9512
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf9515
+ xor bx, bx ; 31 db ; 0xf9518
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf951a
+ call 0aab0h ; e8 90 15 ; 0xf951d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9520 virtio.c:397
+ mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf9523
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9529 virtio.c:398
+ mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf952c
+ mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf9531 virtio.c:399
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9538 virtio.c:401
+ xor ah, ah ; 30 e4 ; 0xf953b
+ push ax ; 50 ; 0xf953d
+ lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf953e
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9542
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf9545
+ mov dx, es ; 8c c2 ; 0xf9548
+ call 0aac0h ; e8 73 15 ; 0xf954a
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf954d virtio.c:404
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9550
+ call 094c2h ; e8 6c ff ; 0xf9553
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9556
+ mov word [es:si], ax ; 26 89 04 ; 0xf9559
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf955c
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf9560 virtio.c:405
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf9566
+ mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf956c virtio.c:406
+ mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf9572
+ mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf9578 virtio.c:407
+ mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf957e virtio.c:408
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9584 virtio.c:410
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9587
+ call 094c2h ; e8 35 ff ; 0xf958a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf958d
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf9590
+ mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf9594
+ mov word [es:si+014h], strict word 00000h ; 26 c7 44 14 00 00 ; 0xf9598 virtio.c:411
+ mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf959e
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf95a4 virtio.c:412
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf95a7
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf95ab
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf95ae
+ mov word [es:si+01ch], strict word 00001h ; 26 c7 44 1c 01 00 ; 0xf95b2 virtio.c:413
+ mov word [es:si+01eh], strict word 00002h ; 26 c7 44 1e 02 00 ; 0xf95b8 virtio.c:414
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf95be virtio.c:416
+ mov dx, es ; 8c c2 ; 0xf95c1
+ call 094c2h ; e8 fc fe ; 0xf95c3
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf95c6
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf95c9
+ mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf95cd
+ mov word [es:si+024h], strict word 00000h ; 26 c7 44 24 00 00 ; 0xf95d1 virtio.c:417
+ mov word [es:si+026h], strict word 00000h ; 26 c7 44 26 00 00 ; 0xf95d7
+ mov word [es:si+028h], strict word 0002ch ; 26 c7 44 28 2c 00 ; 0xf95dd virtio.c:418
+ mov word [es:si+02ah], strict word 00000h ; 26 c7 44 2a 00 00 ; 0xf95e3
+ mov word [es:si+02ch], strict word 00002h ; 26 c7 44 2c 02 00 ; 0xf95e9 virtio.c:419
+ mov word [es:si+02eh], strict word 00000h ; 26 c7 44 2e 00 00 ; 0xf95ef virtio.c:420
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf95f5 virtio.c:423
+ xor dx, dx ; 31 d2 ; 0xf95f9
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf95fb
+ div bx ; f7 f3 ; 0xf95fe
+ add dx, dx ; 01 d2 ; 0xf9600
+ mov bx, si ; 89 f3 ; 0xf9602
+ add bx, dx ; 01 d3 ; 0xf9604
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf9606
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf960c virtio.c:424
+ inc word [es:si+032h] ; 26 ff 44 32 ; 0xf9610
+ mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf9614 virtio.c:428
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9618
+ mov ax, si ; 89 f0 ; 0xf961b
+ mov dx, es ; 8c c2 ; 0xf961d
+ call 09455h ; e8 33 fe ; 0xf961f
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9622 virtio.c:431
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9625
+ cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf9628
+ je short 09622h ; 74 f4 ; 0xf962c
+ mov ax, di ; 89 f8 ; 0xf962e virtio.c:436
+ mov dx, es ; 8c c2 ; 0xf9630
+ call 09489h ; e8 54 fe ; 0xf9632
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9635 virtio.c:438
+ mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf9638
+ test al, al ; 84 c0 ; 0xf963d
+ je short 09646h ; 74 05 ; 0xf963f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9641 virtio.c:439
+ jmp short 09648h ; eb 02 ; 0xf9644
+ xor ah, ah ; 30 e4 ; 0xf9646 virtio.c:441
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9648 virtio.c:442
+ pop di ; 5f ; 0xf964b
+ pop si ; 5e ; 0xf964c
+ pop cx ; 59 ; 0xf964d
+ pop bp ; 5d ; 0xf964e
+ retn 0000eh ; c2 0e 00 ; 0xf964f
+ ; disGetNextSymbol 0xf9652 LB 0x1786 -> off=0x0 cb=0000000000000172 uValue=00000000000f8052 'virtio_scsi_cmd_data_in'
+virtio_scsi_cmd_data_in: ; 0xf9652 LB 0x172
+ push bp ; 55 ; 0xf9652 virtio.c:444
+ mov bp, sp ; 89 e5 ; 0xf9653
+ push cx ; 51 ; 0xf9655
+ push si ; 56 ; 0xf9656
+ push di ; 57 ; 0xf9657
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9658
+ mov si, ax ; 89 c6 ; 0xf965b
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf965d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9660
+ mov di, ax ; 89 c7 ; 0xf9663 virtio.c:447
+ mov es, dx ; 8e c2 ; 0xf9665
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9667
+ mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf966a
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf966e
+ lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf9671 virtio.c:450
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9675
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf9678
+ xor bx, bx ; 31 db ; 0xf967b
+ call 0aab0h ; e8 30 14 ; 0xf967d
+ lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf9680 virtio.c:451
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9684
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf9687
+ xor bx, bx ; 31 db ; 0xf968a
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf968c
+ call 0aab0h ; e8 1e 14 ; 0xf968f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9692 virtio.c:453
+ mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf9695
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf969b virtio.c:454
+ mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf969e
+ mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf96a3 virtio.c:455
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf96aa virtio.c:457
+ xor ah, ah ; 30 e4 ; 0xf96ad
+ push ax ; 50 ; 0xf96af
+ lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf96b0
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf96b4
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf96b7
+ mov dx, es ; 8c c2 ; 0xf96ba
+ call 0aac0h ; e8 01 14 ; 0xf96bc
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf96bf virtio.c:460
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf96c2
+ call 094c2h ; e8 fa fd ; 0xf96c5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf96c8
+ mov word [es:si], ax ; 26 89 04 ; 0xf96cb
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf96ce
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf96d2 virtio.c:461
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf96d8
+ mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf96de virtio.c:462
+ mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf96e4
+ mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf96ea virtio.c:463
+ mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf96f0 virtio.c:464
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf96f6 virtio.c:467
+ mov dx, es ; 8c c2 ; 0xf96f9
+ call 094c2h ; e8 c4 fd ; 0xf96fb
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf96fe
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf9701
+ mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf9705
+ mov word [es:si+014h], strict word 00000h ; 26 c7 44 14 00 00 ; 0xf9709 virtio.c:468
+ mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf970f
+ mov word [es:si+018h], strict word 0002ch ; 26 c7 44 18 2c 00 ; 0xf9715 virtio.c:469
+ mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf971b
+ mov word [es:si+01ch], strict word 00003h ; 26 c7 44 1c 03 00 ; 0xf9721 virtio.c:470
+ mov word [es:si+01eh], strict word 00002h ; 26 c7 44 1e 02 00 ; 0xf9727 virtio.c:471
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf972d virtio.c:473
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9730
+ call 094c2h ; e8 8c fd ; 0xf9733
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9736
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf9739
+ mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf973d
+ mov word [es:si+024h], strict word 00000h ; 26 c7 44 24 00 00 ; 0xf9741 virtio.c:474
+ mov word [es:si+026h], strict word 00000h ; 26 c7 44 26 00 00 ; 0xf9747
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf974d virtio.c:475
+ mov word [es:si+028h], ax ; 26 89 44 28 ; 0xf9750
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9754
+ mov word [es:si+02ah], ax ; 26 89 44 2a ; 0xf9757
+ mov word [es:si+02ch], strict word 00002h ; 26 c7 44 2c 02 00 ; 0xf975b virtio.c:476
+ mov word [es:si+02eh], strict word 00000h ; 26 c7 44 2e 00 00 ; 0xf9761 virtio.c:477
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9767 virtio.c:481
+ xor dx, dx ; 31 d2 ; 0xf976b
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf976d
+ div bx ; f7 f3 ; 0xf9770
+ add dx, dx ; 01 d2 ; 0xf9772
+ mov bx, si ; 89 f3 ; 0xf9774
+ add bx, dx ; 01 d3 ; 0xf9776
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf9778
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf977e virtio.c:482
+ inc word [es:si+032h] ; 26 ff 44 32 ; 0xf9782
+ mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf9786 virtio.c:486
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf978a
+ mov ax, si ; 89 f0 ; 0xf978d
+ mov dx, es ; 8c c2 ; 0xf978f
+ call 09455h ; e8 c1 fc ; 0xf9791
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9794 virtio.c:489
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9797
+ cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf979a
+ je short 09794h ; 74 f4 ; 0xf979e
+ mov ax, di ; 89 f8 ; 0xf97a0 virtio.c:494
+ mov dx, es ; 8c c2 ; 0xf97a2
+ call 09489h ; e8 e2 fc ; 0xf97a4
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf97a7 virtio.c:496
+ mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf97aa
+ test al, al ; 84 c0 ; 0xf97af
+ je short 097b8h ; 74 05 ; 0xf97b1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf97b3 virtio.c:497
+ jmp short 097bah ; eb 02 ; 0xf97b6
+ xor ah, ah ; 30 e4 ; 0xf97b8 virtio.c:499
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf97ba virtio.c:500
+ pop di ; 5f ; 0xf97bd
+ pop si ; 5e ; 0xf97be
+ pop cx ; 59 ; 0xf97bf
+ pop bp ; 5d ; 0xf97c0
+ retn 0000eh ; c2 0e 00 ; 0xf97c1
+ ; disGetNextSymbol 0xf97c4 LB 0x1614 -> off=0x0 cb=0000000000000335 uValue=00000000000f81c4 'virtio_scsi_hba_init'
+virtio_scsi_hba_init: ; 0xf97c4 LB 0x335
+ push bp ; 55 ; 0xf97c4 virtio.c:505
+ mov bp, sp ; 89 e5 ; 0xf97c5
+ push si ; 56 ; 0xf97c7
+ push di ; 57 ; 0xf97c8
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xf97c9
+ mov si, ax ; 89 c6 ; 0xf97cc
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf97ce
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf97d1
+ mov ch, cl ; 88 cd ; 0xf97d4
+ mov es, dx ; 8e c2 ; 0xf97d6 virtio.c:510
+ mov byte [es:si+00092h], bl ; 26 88 9c 92 00 ; 0xf97d8
+ mov byte [es:si+00093h], cl ; 26 88 8c 93 00 ; 0xf97dd virtio.c:511
+ mov cl, byte [bp+004h] ; 8a 4e 04 ; 0xf97e2 virtio.c:517
+ test cl, cl ; 84 c9 ; 0xf97e5 virtio.c:518
+ je short 09844h ; 74 5b ; 0xf97e7
+ mov bl, cl ; 88 cb ; 0xf97e9 virtio.c:520
+ xor bh, bh ; 30 ff ; 0xf97eb
+ mov byte [bp-00eh], ch ; 88 6e f2 ; 0xf97ed
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf97f0
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf97f3
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf97f6
+ mov byte [bp-015h], bh ; 88 7e eb ; 0xf97f9
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf97fc
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf97ff
+ call 0a825h ; e8 20 10 ; 0xf9802
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf9805
+ mov bl, cl ; 88 cb ; 0xf9808 virtio.c:521
+ add bl, 002h ; 80 c3 02 ; 0xf980a
+ xor bh, bh ; 30 ff ; 0xf980d
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf980f
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9812
+ call 0a825h ; e8 0d 10 ; 0xf9815
+ cmp byte [bp-018h], 009h ; 80 7e e8 09 ; 0xf9818 virtio.c:525
+ jne short 09841h ; 75 23 ; 0xf981c
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf981e
+ jc short 09841h ; 72 1f ; 0xf9820
+ mov bl, cl ; 88 cb ; 0xf9822 virtio.c:529
+ add bl, 003h ; 80 c3 03 ; 0xf9824
+ xor bh, bh ; 30 ff ; 0xf9827
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9829
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf982c
+ call 0a825h ; e8 f3 0f ; 0xf982f
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf9832
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf9835 virtio.c:532
+ je short 09847h ; 74 0e ; 0xf9837
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf9839
+ jc short 09841h ; 72 04 ; 0xf983b
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf983d
+ jbe short 0984ah ; 76 09 ; 0xf983f
+ jmp near 098e6h ; e9 a2 00 ; 0xf9841
+ jmp near 098fdh ; e9 b6 00 ; 0xf9844
+ jmp near 098deh ; e9 94 00 ; 0xf9847
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf984a virtio.c:539
+ xor ah, ah ; 30 e4 ; 0xf984d
+ dec ax ; 48 ; 0xf984f
+ imul ax, ax, strict byte 0000ch ; 6b c0 0c ; 0xf9850
+ lea di, [si+05ch] ; 8d 7c 5c ; 0xf9853
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9856
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf9859
+ add di, ax ; 01 c7 ; 0xf985c
+ mov bl, cl ; 88 cb ; 0xf985e virtio.c:541
+ add bl, 004h ; 80 c3 04 ; 0xf9860
+ xor bh, bh ; 30 ff ; 0xf9863
+ mov byte [bp-012h], ch ; 88 6e ee ; 0xf9865
+ mov byte [bp-011h], bh ; 88 7e ef ; 0xf9868
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf986b
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf986e
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf9871
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9874
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9877
+ call 0a825h ; e8 a8 0f ; 0xf987a
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf987d
+ mov byte [es:di], al ; 26 88 05 ; 0xf9880
+ mov bl, cl ; 88 cb ; 0xf9883 virtio.c:542
+ add bl, 008h ; 80 c3 08 ; 0xf9885
+ xor bh, bh ; 30 ff ; 0xf9888
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf988a
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf988d
+ call 0a87dh ; e8 ea 0f ; 0xf9890
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf9893
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf9896
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf989a
+ mov bl, cl ; 88 cb ; 0xf989e virtio.c:543
+ add bl, 00ch ; 80 c3 0c ; 0xf98a0
+ xor bh, bh ; 30 ff ; 0xf98a3
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf98a5
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf98a8
+ call 0a87dh ; e8 cf 0f ; 0xf98ab
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf98ae
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf98b1
+ mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf98b5
+ cmp byte [bp-00ah], 002h ; 80 7e f6 02 ; 0xf98b9 virtio.c:544
+ jne short 098e6h ; 75 27 ; 0xf98bd
+ mov bl, cl ; 88 cb ; 0xf98bf virtio.c:546
+ add bl, 010h ; 80 c3 10 ; 0xf98c1
+ xor bh, bh ; 30 ff ; 0xf98c4
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf98c6
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf98c9
+ call 0a87dh ; e8 ae 0f ; 0xf98cc
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf98cf
+ mov word [es:si+0008eh], ax ; 26 89 84 8e 00 ; 0xf98d2
+ mov word [es:si+00090h], dx ; 26 89 94 90 00 ; 0xf98d7
+ jmp short 098e6h ; eb 08 ; 0xf98dc virtio.c:549
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf98de virtio.c:552
+ mov byte [es:si+0008ch], cl ; 26 88 8c 8c 00 ; 0xf98e1
+ mov bl, cl ; 88 cb ; 0xf98e6 virtio.c:561
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf98e8
+ xor bh, bh ; 30 ff ; 0xf98ea
+ mov dl, ch ; 88 ea ; 0xf98ec
+ xor dh, dh ; 30 f6 ; 0xf98ee
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf98f0
+ xor ah, ah ; 30 e4 ; 0xf98f3
+ call 0a825h ; e8 2d 0f ; 0xf98f5
+ mov cl, al ; 88 c1 ; 0xf98f8
+ jmp near 097e5h ; e9 e8 fe ; 0xf98fa virtio.c:562
+ xor ch, ch ; 30 ed ; 0xf98fd virtio.c:566
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf98ff
+ mov ax, si ; 89 f0 ; 0xf9902
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9904
+ call 0930bh ; e8 01 fa ; 0xf9907
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf990a virtio.c:569
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf990d
+ mov ax, si ; 89 f0 ; 0xf9910
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9912
+ call 0930bh ; e8 f3 f9 ; 0xf9915
+ mov byte [bp-006h], 003h ; c6 46 fa 03 ; 0xf9918 virtio.c:571
+ mov cx, strict word 00003h ; b9 03 00 ; 0xf991c virtio.c:572
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf991f
+ mov ax, si ; 89 f0 ; 0xf9922
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9924
+ call 0930bh ; e8 e1 f9 ; 0xf9927
+ xor bx, bx ; 31 db ; 0xf992a virtio.c:581
+ mov ax, si ; 89 f0 ; 0xf992c
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf992e
+ call 093e5h ; e8 b1 fa ; 0xf9931
+ test dx, dx ; 85 d2 ; 0xf9934
+ jne short 0993dh ; 75 05 ; 0xf9936
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9938
+ jc short 09979h ; 72 3c ; 0xf993b
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf993d
+ mov ax, si ; 89 f0 ; 0xf9940
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9942
+ call 093e5h ; e8 9d fa ; 0xf9945
+ test dx, dx ; 85 d2 ; 0xf9948
+ jne short 09951h ; 75 05 ; 0xf994a
+ cmp ax, strict word 00010h ; 3d 10 00 ; 0xf994c
+ jc short 09979h ; 72 28 ; 0xf994f
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9951
+ mov ax, si ; 89 f0 ; 0xf9954
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9956
+ call 093e5h ; e8 89 fa ; 0xf9959
+ test dx, dx ; 85 d2 ; 0xf995c
+ jne short 09965h ; 75 05 ; 0xf995e
+ cmp ax, strict word 00020h ; 3d 20 00 ; 0xf9960
+ jc short 09979h ; 72 14 ; 0xf9963
+ mov bx, strict word 00008h ; bb 08 00 ; 0xf9965
+ mov ax, si ; 89 f0 ; 0xf9968
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf996a
+ call 093e5h ; e8 75 fa ; 0xf996d
+ test dx, dx ; 85 d2 ; 0xf9970
+ jne short 0997fh ; 75 0b ; 0xf9972
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9974
+ jnc short 0997fh ; 73 06 ; 0xf9977
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9979 virtio.c:587
+ jmp near 09af0h ; e9 71 01 ; 0xf997c
+ push strict byte 00000h ; 6a 00 ; 0xf997f virtio.c:590
+ push strict byte 00001h ; 6a 01 ; 0xf9981
+ mov bx, strict word 0000ch ; bb 0c 00 ; 0xf9983
+ mov ax, si ; 89 f0 ; 0xf9986
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9988
+ call 093a9h ; e8 1b fa ; 0xf998b
+ or byte [bp-006h], 008h ; 80 4e fa 08 ; 0xf998e virtio.c:593
+ mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf9992 virtio.c:594
+ xor ch, ch ; 30 ed ; 0xf9995
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9997
+ mov ax, si ; 89 f0 ; 0xf999a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf999c
+ call 0930bh ; e8 69 f9 ; 0xf999f
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf99a2 virtio.c:597
+ mov ax, si ; 89 f0 ; 0xf99a5
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99a7
+ call 092d7h ; e8 2a f9 ; 0xf99aa
+ test AL, strict byte 008h ; a8 08 ; 0xf99ad
+ je short 09979h ; 74 c8 ; 0xf99af
+ xor cx, cx ; 31 c9 ; 0xf99b1 virtio.c:604
+ mov bx, strict word 00016h ; bb 16 00 ; 0xf99b3
+ mov ax, si ; 89 f0 ; 0xf99b6
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99b8
+ call 09375h ; e8 b7 f9 ; 0xf99bb
+ xor cx, cx ; 31 c9 ; 0xf99be virtio.c:605
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf99c0
+ mov ax, si ; 89 f0 ; 0xf99c3
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99c5
+ call 09375h ; e8 aa f9 ; 0xf99c8
+ xor cx, cx ; 31 c9 ; 0xf99cb virtio.c:606
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf99cd
+ mov ax, si ; 89 f0 ; 0xf99d0
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99d2
+ call 09375h ; e8 9d f9 ; 0xf99d5
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf99d8 virtio.c:608
+ mov bx, strict word 00016h ; bb 16 00 ; 0xf99db
+ mov ax, si ; 89 f0 ; 0xf99de
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99e0
+ call 09375h ; e8 8f f9 ; 0xf99e3
+ xor cx, cx ; 31 c9 ; 0xf99e6 virtio.c:609
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf99e8
+ mov ax, si ; 89 f0 ; 0xf99eb
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99ed
+ call 09375h ; e8 82 f9 ; 0xf99f0
+ xor cx, cx ; 31 c9 ; 0xf99f3 virtio.c:610
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf99f5
+ mov ax, si ; 89 f0 ; 0xf99f8
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99fa
+ call 09375h ; e8 75 f9 ; 0xf99fd
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9a00 virtio.c:613
+ mov bx, strict word 00016h ; bb 16 00 ; 0xf9a03
+ mov ax, si ; 89 f0 ; 0xf9a06
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a08
+ call 09375h ; e8 67 f9 ; 0xf9a0b
+ mov cx, strict word 00003h ; b9 03 00 ; 0xf9a0e virtio.c:614
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9a11
+ mov ax, si ; 89 f0 ; 0xf9a14
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a16
+ call 09375h ; e8 59 f9 ; 0xf9a19
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf9a1c virtio.c:615
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9a1f
+ mov ax, si ; 89 f0 ; 0xf9a22
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a24
+ call 09375h ; e8 4b f9 ; 0xf9a27
+ mov ax, si ; 89 f0 ; 0xf9a2a virtio.c:618
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a2c
+ call 094c2h ; e8 90 fa ; 0xf9a2f
+ push dx ; 52 ; 0xf9a32
+ push ax ; 50 ; 0xf9a33
+ mov bx, strict word 00020h ; bb 20 00 ; 0xf9a34
+ mov ax, si ; 89 f0 ; 0xf9a37
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a39
+ call 093a9h ; e8 6a f9 ; 0xf9a3c
+ push strict byte 00000h ; 6a 00 ; 0xf9a3f virtio.c:619
+ push strict byte 00000h ; 6a 00 ; 0xf9a41
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf9a43
+ mov ax, si ; 89 f0 ; 0xf9a46
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a48
+ call 093a9h ; e8 5b f9 ; 0xf9a4b
+ lea ax, [si+030h] ; 8d 44 30 ; 0xf9a4e virtio.c:621
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a51
+ call 094c2h ; e8 6b fa ; 0xf9a54
+ push dx ; 52 ; 0xf9a57
+ push ax ; 50 ; 0xf9a58
+ mov bx, strict word 00028h ; bb 28 00 ; 0xf9a59
+ mov ax, si ; 89 f0 ; 0xf9a5c
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a5e
+ call 093a9h ; e8 45 f9 ; 0xf9a61
+ push strict byte 00000h ; 6a 00 ; 0xf9a64 virtio.c:622
+ push strict byte 00000h ; 6a 00 ; 0xf9a66
+ mov bx, strict word 0002ch ; bb 2c 00 ; 0xf9a68
+ mov ax, si ; 89 f0 ; 0xf9a6b
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a6d
+ call 093a9h ; e8 36 f9 ; 0xf9a70
+ lea ax, [si+03ch] ; 8d 44 3c ; 0xf9a73 virtio.c:624
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a76
+ call 094c2h ; e8 46 fa ; 0xf9a79
+ push dx ; 52 ; 0xf9a7c
+ push ax ; 50 ; 0xf9a7d
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf9a7e
+ mov ax, si ; 89 f0 ; 0xf9a81
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a83
+ call 093a9h ; e8 20 f9 ; 0xf9a86
+ push strict byte 00000h ; 6a 00 ; 0xf9a89 virtio.c:625
+ push strict byte 00000h ; 6a 00 ; 0xf9a8b
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf9a8d
+ mov ax, si ; 89 f0 ; 0xf9a90
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a92
+ call 093a9h ; e8 11 f9 ; 0xf9a95
+ push strict byte 00000h ; 6a 00 ; 0xf9a98 virtio.c:627
+ push strict byte 00010h ; 6a 10 ; 0xf9a9a
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9a9c
+ mov ax, si ; 89 f0 ; 0xf9a9f
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9aa1
+ call 09419h ; e8 72 f9 ; 0xf9aa4
+ push strict byte 00000h ; 6a 00 ; 0xf9aa7 virtio.c:628
+ push strict byte 00020h ; 6a 20 ; 0xf9aa9
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9aab
+ mov ax, si ; 89 f0 ; 0xf9aae
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9ab0
+ call 09419h ; e8 63 f9 ; 0xf9ab3
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xf9ab6 virtio.c:631
+ mov ax, si ; 89 f0 ; 0xf9ab9
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9abb
+ call 09341h ; e8 80 f8 ; 0xf9abe
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9ac1
+ mov bx, word [es:si+0008eh] ; 26 8b 9c 8e 00 ; 0xf9ac4
+ mov cx, word [es:si+00090h] ; 26 8b 8c 90 00 ; 0xf9ac9
+ xor dx, dx ; 31 d2 ; 0xf9ace
+ call 0aa40h ; e8 6d 0f ; 0xf9ad0
+ mov word [es:si+058h], ax ; 26 89 44 58 ; 0xf9ad3
+ mov word [es:si+05ah], dx ; 26 89 54 5a ; 0xf9ad7
+ or byte [bp-006h], 004h ; 80 4e fa 04 ; 0xf9adb virtio.c:634
+ mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf9adf virtio.c:635
+ xor ch, ch ; 30 ed ; 0xf9ae2
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9ae4
+ mov ax, si ; 89 f0 ; 0xf9ae7
+ mov dx, es ; 8c c2 ; 0xf9ae9
+ call 0930bh ; e8 1d f8 ; 0xf9aeb
+ xor ax, ax ; 31 c0 ; 0xf9aee virtio.c:637
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9af0 virtio.c:638
+ pop di ; 5f ; 0xf9af3
+ pop si ; 5e ; 0xf9af4
+ pop bp ; 5d ; 0xf9af5
+ retn 00002h ; c2 02 00 ; 0xf9af6
+ ; disGetNextSymbol 0xf9af9 LB 0x12df -> off=0x0 cb=00000000000000f9 uValue=00000000000f84f9 'virtio_scsi_init'
+virtio_scsi_init: ; 0xf9af9 LB 0xf9
+ push bp ; 55 ; 0xf9af9 virtio.c:643
+ mov bp, sp ; 89 e5 ; 0xf9afa
+ push si ; 56 ; 0xf9afc
+ push di ; 57 ; 0xf9afd
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf9afe
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xf9b01
+ mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf9b04
+ mov di, ax ; 89 c7 ; 0xf9b07 virtio.c:645
+ mov si, dx ; 89 d6 ; 0xf9b09
+ mov byte [bp-008h], 0ffh ; c6 46 f8 ff ; 0xf9b0b virtio.c:647
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9b0f virtio.c:648
+ mov dl, cl ; 88 ca ; 0xf9b13 virtio.c:651
+ xor dh, dh ; 30 f6 ; 0xf9b15
+ mov al, bl ; 88 d8 ; 0xf9b17
+ xor ah, ah ; 30 e4 ; 0xf9b19
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf9b1b
+ call 0a825h ; e8 04 0d ; 0xf9b1e
+ mov ch, al ; 88 c5 ; 0xf9b21
+ test ch, ch ; 84 ed ; 0xf9b23 virtio.c:653
+ je short 09b86h ; 74 5f ; 0xf9b25
+ mov bl, ch ; 88 eb ; 0xf9b27 virtio.c:655
+ xor bh, bh ; 30 ff ; 0xf9b29
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9b2b
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf9b2e
+ mov byte [bp-013h], bh ; 88 7e ed ; 0xf9b31
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9b34
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9b37
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf9b3a
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b3d
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9b40
+ call 0a825h ; e8 df 0c ; 0xf9b43
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9b46
+ mov bl, ch ; 88 eb ; 0xf9b49 virtio.c:656
+ add bl, 002h ; 80 c3 02 ; 0xf9b4b
+ xor bh, bh ; 30 ff ; 0xf9b4e
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b50
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9b53
+ call 0a825h ; e8 cc 0c ; 0xf9b56
+ cmp byte [bp-012h], 009h ; 80 7e ee 09 ; 0xf9b59 virtio.c:660
+ jne short 09b93h ; 75 34 ; 0xf9b5d
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf9b5f
+ jc short 09b93h ; 72 30 ; 0xf9b61
+ mov bl, ch ; 88 eb ; 0xf9b63 virtio.c:664
+ add bl, 003h ; 80 c3 03 ; 0xf9b65
+ xor bh, bh ; 30 ff ; 0xf9b68
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b6a
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9b6d
+ call 0a825h ; e8 b2 0c ; 0xf9b70
+ cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9b73 virtio.c:666
+ jne short 09b7ch ; 75 03 ; 0xf9b77
+ mov byte [bp-008h], ch ; 88 6e f8 ; 0xf9b79 virtio.c:667
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf9b7c virtio.c:670
+ jc short 09b93h ; 72 13 ; 0xf9b7e
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf9b80
+ jbe short 09b88h ; 76 04 ; 0xf9b82
+ jmp short 09b93h ; eb 0d ; 0xf9b84
+ jmp short 09ba6h ; eb 1e ; 0xf9b86
+ mov cl, al ; 88 c1 ; 0xf9b88 virtio.c:677
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf9b8a
+ mov AL, strict byte 001h ; b0 01 ; 0xf9b8c
+ sal al, CL ; d2 e0 ; 0xf9b8e
+ or byte [bp-00ch], al ; 08 46 f4 ; 0xf9b90
+ mov bl, ch ; 88 eb ; 0xf9b93 virtio.c:684
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf9b95
+ xor bh, bh ; 30 ff ; 0xf9b97
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf9b99
+ xor dh, dh ; 30 f6 ; 0xf9b9c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9b9e
+ xor ah, ah ; 30 e4 ; 0xf9ba1
+ jmp near 09b1eh ; e9 78 ff ; 0xf9ba3 virtio.c:685
+ cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9ba6 virtio.c:688
+ je short 09be8h ; 74 3c ; 0xf9baa
+ cmp byte [bp-00ch], 01fh ; 80 7e f4 1f ; 0xf9bac
+ jne short 09be8h ; 75 36 ; 0xf9bb0
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9bb2 virtio.c:694
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf9bb5
+ mov byte [bp-011h], ch ; 88 6e ef ; 0xf9bb8
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9bbb
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf9bbe
+ mov byte [bp-00fh], ch ; 88 6e f1 ; 0xf9bc1
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf9bc4
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf9bc7
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9bca
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9bcd
+ call 0a8cbh ; e8 f8 0c ; 0xf9bd0
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9bd3 virtio.c:695
+ xor ah, ah ; 30 e4 ; 0xf9bd6
+ push ax ; 50 ; 0xf9bd8
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf9bd9
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9bdc
+ mov ax, di ; 89 f8 ; 0xf9bdf
+ mov dx, si ; 89 f2 ; 0xf9be1
+ call 097c4h ; e8 de fb ; 0xf9be3
+ jmp short 09bebh ; eb 03 ; 0xf9be6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9be8 virtio.c:700
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9beb virtio.c:701
+ pop di ; 5f ; 0xf9bee
+ pop si ; 5e ; 0xf9bef
+ pop bp ; 5d ; 0xf9bf0
+ retn ; c3 ; 0xf9bf1
+ ; disGetNextSymbol 0xf9bf2 LB 0x11e6 -> off=0x0 cb=000000000000001e uValue=00000000000f85f2 'buslogic_addr_to_phys'
+buslogic_addr_to_phys: ; 0xf9bf2 LB 0x1e
+ push bx ; 53 ; 0xf9bf2 buslogic.c:122
+ push cx ; 51 ; 0xf9bf3
+ push bp ; 55 ; 0xf9bf4
+ mov bp, sp ; 89 e5 ; 0xf9bf5
+ mov bx, ax ; 89 c3 ; 0xf9bf7
+ mov ax, dx ; 89 d0 ; 0xf9bf9
+ xor dx, dx ; 31 d2 ; 0xf9bfb buslogic.c:124
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9bfd
+ sal ax, 1 ; d1 e0 ; 0xf9c00
+ rcl dx, 1 ; d1 d2 ; 0xf9c02
+ loop 09c00h ; e2 fa ; 0xf9c04
+ xor cx, cx ; 31 c9 ; 0xf9c06
+ add ax, bx ; 01 d8 ; 0xf9c08
+ adc dx, cx ; 11 ca ; 0xf9c0a
+ pop bp ; 5d ; 0xf9c0c buslogic.c:125
+ pop cx ; 59 ; 0xf9c0d
+ pop bx ; 5b ; 0xf9c0e
+ retn ; c3 ; 0xf9c0f
+ ; disGetNextSymbol 0xf9c10 LB 0x11c8 -> off=0x0 cb=0000000000000084 uValue=00000000000f8610 'buslogic_cmd'
+buslogic_cmd: ; 0xf9c10 LB 0x84
+ push bp ; 55 ; 0xf9c10 buslogic.c:127
+ mov bp, sp ; 89 e5 ; 0xf9c11
+ push cx ; 51 ; 0xf9c13
+ push si ; 56 ; 0xf9c14
+ push di ; 57 ; 0xf9c15
+ mov si, ax ; 89 c6 ; 0xf9c16
+ mov cx, dx ; 89 d1 ; 0xf9c18
+ mov es, dx ; 8e c2 ; 0xf9c1a buslogic.c:132
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c1c
+ inc dx ; 42 ; 0xf9c20
+ mov al, bl ; 88 d8 ; 0xf9c21
+ out DX, AL ; ee ; 0xf9c23
+ xor bx, bx ; 31 db ; 0xf9c24 buslogic.c:133
+ cmp bx, word [bp+008h] ; 3b 5e 08 ; 0xf9c26
+ jnc short 09c44h ; 73 19 ; 0xf9c29
+ mov di, word [bp+004h] ; 8b 7e 04 ; 0xf9c2b buslogic.c:134
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9c2e
+ inc word [bp+004h] ; ff 46 04 ; 0xf9c31
+ mov es, cx ; 8e c1 ; 0xf9c34
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c36
+ inc dx ; 42 ; 0xf9c3a
+ mov es, ax ; 8e c0 ; 0xf9c3b
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf9c3d
+ out DX, AL ; ee ; 0xf9c40
+ inc bx ; 43 ; 0xf9c41
+ jmp short 09c26h ; eb e2 ; 0xf9c42
+ cmp word [bp+00eh], strict byte 00000h ; 83 7e 0e 00 ; 0xf9c44 buslogic.c:137
+ je short 09c74h ; 74 2a ; 0xf9c48
+ mov es, cx ; 8e c1 ; 0xf9c4a buslogic.c:139
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c4c
+ in AL, DX ; ec ; 0xf9c50
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9c51
+ test AL, strict byte 004h ; a8 04 ; 0xf9c53
+ je short 09c4ah ; 74 f3 ; 0xf9c55
+ xor bx, bx ; 31 db ; 0xf9c57 buslogic.c:140
+ cmp bx, word [bp+00eh] ; 3b 5e 0e ; 0xf9c59
+ jnc short 09c74h ; 73 16 ; 0xf9c5c
+ mov es, cx ; 8e c1 ; 0xf9c5e buslogic.c:141
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c60
+ inc dx ; 42 ; 0xf9c64
+ in AL, DX ; ec ; 0xf9c65
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9c66
+ les di, [bp+00ah] ; c4 7e 0a ; 0xf9c68
+ mov byte [es:di], al ; 26 88 05 ; 0xf9c6b
+ inc word [bp+00ah] ; ff 46 0a ; 0xf9c6e
+ inc bx ; 43 ; 0xf9c71
+ jmp short 09c59h ; eb e5 ; 0xf9c72
+ mov es, cx ; 8e c1 ; 0xf9c74 buslogic.c:144
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c76
+ in AL, DX ; ec ; 0xf9c7a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9c7b
+ test AL, strict byte 010h ; a8 10 ; 0xf9c7d
+ je short 09c74h ; 74 f3 ; 0xf9c7f
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c81 buslogic.c:147
+ mov AL, strict byte 020h ; b0 20 ; 0xf9c85
+ out DX, AL ; ee ; 0xf9c87
+ xor ax, ax ; 31 c0 ; 0xf9c88 buslogic.c:150
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9c8a
+ pop di ; 5f ; 0xf9c8d
+ pop si ; 5e ; 0xf9c8e
+ pop cx ; 59 ; 0xf9c8f
+ pop bp ; 5d ; 0xf9c90
+ retn 0000ch ; c2 0c 00 ; 0xf9c91
+ ; disGetNextSymbol 0xf9c94 LB 0x1144 -> off=0x0 cb=00000000000000b2 uValue=00000000000f8694 'buslogic_scsi_cmd_data_out'
+buslogic_scsi_cmd_data_out: ; 0xf9c94 LB 0xb2
+ push bp ; 55 ; 0xf9c94 buslogic.c:152
+ mov bp, sp ; 89 e5 ; 0xf9c95
+ push cx ; 51 ; 0xf9c97
+ push si ; 56 ; 0xf9c98
+ push di ; 57 ; 0xf9c99
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9c9a
+ mov si, ax ; 89 c6 ; 0xf9c9d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9c9f
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9ca2 buslogic.c:155
+ mov di, dx ; 89 d7 ; 0xf9ca5
+ mov cx, strict word 0001ch ; b9 1c 00 ; 0xf9ca7 buslogic.c:160
+ xor bx, bx ; 31 db ; 0xf9caa
+ call 0aab0h ; e8 01 0e ; 0xf9cac
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9caf buslogic.c:161
+ xor bx, bx ; 31 db ; 0xf9cb2
+ mov dx, ss ; 8c d2 ; 0xf9cb4
+ lea ax, [bp-00eh] ; 8d 46 f2 ; 0xf9cb6
+ call 0aab0h ; e8 f4 0d ; 0xf9cb9
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9cbc buslogic.c:163
+ mov es, di ; 8e c7 ; 0xf9cbf
+ mov word [es:si], ax ; 26 89 04 ; 0xf9cc1
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9cc4
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf9cc7
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9ccb buslogic.c:164
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9cce
+ call 09bf2h ; e8 1e ff ; 0xf9cd1
+ mov es, di ; 8e c7 ; 0xf9cd4
+ mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf9cd6
+ mov word [es:si+006h], dx ; 26 89 54 06 ; 0xf9cda
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9cde buslogic.c:165
+ mov byte [es:si+008h], al ; 26 88 44 08 ; 0xf9ce1
+ mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xf9ce5 buslogic.c:166
+ and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xf9cea buslogic.c:167
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9cef buslogic.c:168
+ mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf9cf2
+ xor si, si ; 31 f6 ; 0xf9cf6 buslogic.c:170
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9cf8
+ xor ah, ah ; 30 e4 ; 0xf9cfb
+ cmp si, ax ; 39 c6 ; 0xf9cfd
+ jnl short 09d19h ; 7d 18 ; 0xf9cff
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf9d01 buslogic.c:171
+ add bx, si ; 01 f3 ; 0xf9d04
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9d06
+ add dx, si ; 01 f2 ; 0xf9d09
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf9d0b
+ mov es, di ; 8e c7 ; 0xf9d0e
+ mov bx, dx ; 89 d3 ; 0xf9d10
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf9d12
+ inc si ; 46 ; 0xf9d16
+ jmp short 09cf8h ; eb df ; 0xf9d17
+ push strict byte 00004h ; 6a 04 ; 0xf9d19 buslogic.c:173
+ lea dx, [bp-00eh] ; 8d 56 f2 ; 0xf9d1b
+ push SS ; 16 ; 0xf9d1e
+ push dx ; 52 ; 0xf9d1f
+ add ax, strict word 0000ch ; 05 0c 00 ; 0xf9d20
+ push ax ; 50 ; 0xf9d23
+ push di ; 57 ; 0xf9d24
+ push word [bp-00ah] ; ff 76 f6 ; 0xf9d25
+ mov bx, 00083h ; bb 83 00 ; 0xf9d28
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9d2b
+ mov dx, di ; 89 fa ; 0xf9d2e
+ call 09c10h ; e8 dd fe ; 0xf9d30
+ test ax, ax ; 85 c0 ; 0xf9d33 buslogic.c:175
+ jne short 09d3ch ; 75 05 ; 0xf9d35
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9d37 buslogic.c:176
+ xor ah, ah ; 30 e4 ; 0xf9d3a
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9d3c buslogic.c:179
+ pop di ; 5f ; 0xf9d3f
+ pop si ; 5e ; 0xf9d40
+ pop cx ; 59 ; 0xf9d41
+ pop bp ; 5d ; 0xf9d42
+ retn 0000eh ; c2 0e 00 ; 0xf9d43
+ ; disGetNextSymbol 0xf9d46 LB 0x1092 -> off=0x0 cb=00000000000000b2 uValue=00000000000f8746 'buslogic_scsi_cmd_data_in'
+buslogic_scsi_cmd_data_in: ; 0xf9d46 LB 0xb2
+ push bp ; 55 ; 0xf9d46 buslogic.c:181
+ mov bp, sp ; 89 e5 ; 0xf9d47
+ push cx ; 51 ; 0xf9d49
+ push si ; 56 ; 0xf9d4a
+ push di ; 57 ; 0xf9d4b
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9d4c
+ mov si, ax ; 89 c6 ; 0xf9d4f
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9d51
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9d54 buslogic.c:184
+ mov di, dx ; 89 d7 ; 0xf9d57
+ mov cx, strict word 0001ch ; b9 1c 00 ; 0xf9d59 buslogic.c:191
+ xor bx, bx ; 31 db ; 0xf9d5c
+ call 0aab0h ; e8 4f 0d ; 0xf9d5e
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9d61 buslogic.c:192
+ xor bx, bx ; 31 db ; 0xf9d64
+ mov dx, ss ; 8c d2 ; 0xf9d66
+ lea ax, [bp-00eh] ; 8d 46 f2 ; 0xf9d68
+ call 0aab0h ; e8 42 0d ; 0xf9d6b
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9d6e buslogic.c:194
+ mov es, di ; 8e c7 ; 0xf9d71
+ mov word [es:si], ax ; 26 89 04 ; 0xf9d73
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9d76
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf9d79
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9d7d buslogic.c:195
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9d80
+ call 09bf2h ; e8 6c fe ; 0xf9d83
+ mov es, di ; 8e c7 ; 0xf9d86
+ mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf9d88
+ mov word [es:si+006h], dx ; 26 89 54 06 ; 0xf9d8c
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9d90 buslogic.c:196
+ mov byte [es:si+008h], al ; 26 88 44 08 ; 0xf9d93
+ mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xf9d97 buslogic.c:197
+ and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xf9d9c buslogic.c:198
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9da1 buslogic.c:199
+ mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf9da4
+ xor si, si ; 31 f6 ; 0xf9da8 buslogic.c:201
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9daa
+ xor ah, ah ; 30 e4 ; 0xf9dad
+ cmp si, ax ; 39 c6 ; 0xf9daf
+ jnl short 09dcbh ; 7d 18 ; 0xf9db1
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf9db3 buslogic.c:202
+ add bx, si ; 01 f3 ; 0xf9db6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9db8
+ add dx, si ; 01 f2 ; 0xf9dbb
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf9dbd
+ mov es, di ; 8e c7 ; 0xf9dc0
+ mov bx, dx ; 89 d3 ; 0xf9dc2
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf9dc4
+ inc si ; 46 ; 0xf9dc8
+ jmp short 09daah ; eb df ; 0xf9dc9
+ push strict byte 00004h ; 6a 04 ; 0xf9dcb buslogic.c:204
+ lea dx, [bp-00eh] ; 8d 56 f2 ; 0xf9dcd
+ push SS ; 16 ; 0xf9dd0
+ push dx ; 52 ; 0xf9dd1
+ add ax, strict word 0000ch ; 05 0c 00 ; 0xf9dd2
+ push ax ; 50 ; 0xf9dd5
+ push di ; 57 ; 0xf9dd6
+ push word [bp-00ah] ; ff 76 f6 ; 0xf9dd7
+ mov bx, 00083h ; bb 83 00 ; 0xf9dda
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9ddd
+ mov dx, di ; 89 fa ; 0xf9de0
+ call 09c10h ; e8 2b fe ; 0xf9de2
+ test ax, ax ; 85 c0 ; 0xf9de5 buslogic.c:206
+ jne short 09deeh ; 75 05 ; 0xf9de7
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9de9 buslogic.c:207
+ xor ah, ah ; 30 e4 ; 0xf9dec
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9dee buslogic.c:210
+ pop di ; 5f ; 0xf9df1
+ pop si ; 5e ; 0xf9df2
+ pop cx ; 59 ; 0xf9df3
+ pop bp ; 5d ; 0xf9df4
+ retn 0000eh ; c2 0e 00 ; 0xf9df5
+ ; disGetNextSymbol 0xf9df8 LB 0xfe0 -> off=0x0 cb=0000000000000022 uValue=00000000000f87f8 'buslogic_scsi_hba_init'
+buslogic_scsi_hba_init: ; 0xf9df8 LB 0x22
+ push bp ; 55 ; 0xf9df8 buslogic.c:215
+ mov bp, sp ; 89 e5 ; 0xf9df9
+ push bx ; 53 ; 0xf9dfb
+ mov bx, ax ; 89 c3 ; 0xf9dfc
+ mov es, dx ; 8e c2 ; 0xf9dfe
+ mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf9e00 buslogic.c:218
+ mov AL, strict byte 080h ; b0 80 ; 0xf9e04
+ out DX, AL ; ee ; 0xf9e06
+ mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf9e07 buslogic.c:219
+ in AL, DX ; ec ; 0xf9e0b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9e0c
+ test AL, strict byte 010h ; a8 10 ; 0xf9e0e
+ je short 09e07h ; 74 f5 ; 0xf9e10
+ xor ax, ax ; 31 c0 ; 0xf9e12 buslogic.c:222
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9e14
+ pop bx ; 5b ; 0xf9e17
+ pop bp ; 5d ; 0xf9e18
+ retn ; c3 ; 0xf9e19
+ ; disGetNextSymbol 0xf9e1a LB 0xfbe -> off=0x0 cb=0000000000000058 uValue=00000000000f881a 'buslogic_scsi_init'
+buslogic_scsi_init: ; 0xf9e1a LB 0x58
+ push bp ; 55 ; 0xf9e1a buslogic.c:227
+ mov bp, sp ; 89 e5 ; 0xf9e1b
+ push si ; 56 ; 0xf9e1d
+ push di ; 57 ; 0xf9e1e
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9e1f
+ mov si, ax ; 89 c6 ; 0xf9e22
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf9e24
+ mov byte [bp-006h], cl ; 88 4e fa ; 0xf9e27 buslogic.c:234
+ xor al, al ; 30 c0 ; 0xf9e2a
+ mov byte [bp-005h], al ; 88 46 fb ; 0xf9e2c
+ mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf9e2f
+ mov byte [bp-009h], al ; 88 46 f7 ; 0xf9e32
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf9e35
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf9e38
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9e3b
+ call 0a87dh ; e8 3c 0a ; 0xf9e3e
+ test AL, strict byte 001h ; a8 01 ; 0xf9e41 buslogic.c:238
+ je short 09e68h ; 74 23 ; 0xf9e43
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf9e45 buslogic.c:240
+ mov di, ax ; 89 c7 ; 0xf9e47
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf9e49 buslogic.c:243
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf9e4c
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf9e4f
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9e52
+ call 0a8cbh ; e8 73 0a ; 0xf9e55
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf9e58 buslogic.c:246
+ mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf9e5b
+ mov ax, si ; 89 f0 ; 0xf9e5f buslogic.c:247
+ mov dx, es ; 8c c2 ; 0xf9e61
+ call 09df8h ; e8 92 ff ; 0xf9e63
+ jmp short 09e6bh ; eb 03 ; 0xf9e66
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9e68 buslogic.c:252
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9e6b buslogic.c:253
+ pop di ; 5f ; 0xf9e6e
+ pop si ; 5e ; 0xf9e6f
+ pop bp ; 5d ; 0xf9e70
+ retn ; c3 ; 0xf9e71
+ ; disGetNextSymbol 0xf9e72 LB 0xf66 -> off=0x0 cb=0000000000000026 uValue=00000000000f8872 'btaha_scsi_init'
+btaha_scsi_init: ; 0xf9e72 LB 0x26
+ push bp ; 55 ; 0xf9e72 buslogic.c:259
+ mov bp, sp ; 89 e5 ; 0xf9e73
+ push si ; 56 ; 0xf9e75
+ mov si, ax ; 89 c6 ; 0xf9e76
+ mov es, dx ; 8e c2 ; 0xf9e78
+ mov al, bl ; 88 d8 ; 0xf9e7a
+ xor ah, ah ; 30 e4 ; 0xf9e7c buslogic.c:263
+ mov dx, ax ; 89 c2 ; 0xf9e7e
+ sal dx, 008h ; c1 e2 08 ; 0xf9e80
+ mov al, cl ; 88 c8 ; 0xf9e83
+ or dx, ax ; 09 c2 ; 0xf9e85
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf9e87
+ mov ax, si ; 89 f0 ; 0xf9e8b buslogic.c:266
+ mov dx, es ; 8c c2 ; 0xf9e8d
+ call 09df8h ; e8 66 ff ; 0xf9e8f
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9e92 buslogic.c:267
+ pop si ; 5e ; 0xf9e95
+ pop bp ; 5d ; 0xf9e96
+ retn ; c3 ; 0xf9e97
+ ; disGetNextSymbol 0xf9e98 LB 0xf40 -> off=0x0 cb=0000000000000055 uValue=00000000000f8898 'btaha_scsi_detect'
+btaha_scsi_detect: ; 0xf9e98 LB 0x55
+ push bp ; 55 ; 0xf9e98 buslogic.c:272
+ mov bp, sp ; 89 e5 ; 0xf9e99
+ push bx ; 53 ; 0xf9e9b
+ push cx ; 51 ; 0xf9e9c
+ push dx ; 52 ; 0xf9e9d
+ push si ; 56 ; 0xf9e9e
+ push di ; 57 ; 0xf9e9f
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9ea0
+ push SS ; 16 ; 0xf9ea3 buslogic.c:274
+ pop ES ; 07 ; 0xf9ea4
+ lea di, [bp-010h] ; 8d 7e f0 ; 0xf9ea5
+ mov si, 000d6h ; be d6 00 ; 0xf9ea8
+ movsw ; a5 ; 0xf9eab
+ movsw ; a5 ; 0xf9eac
+ movsw ; a5 ; 0xf9ead
+ xor cx, cx ; 31 c9 ; 0xf9eae buslogic.c:279
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9eb0
+ test bx, bx ; 85 db ; 0xf9eb3
+ je short 09ed8h ; 74 21 ; 0xf9eb5
+ mov dx, bx ; 89 da ; 0xf9eb7 buslogic.c:284
+ in AL, DX ; ec ; 0xf9eb9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9eba
+ cmp AL, strict byte 030h ; 3c 30 ; 0xf9ebc buslogic.c:285
+ je short 09ec4h ; 74 04 ; 0xf9ebe
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf9ec0
+ jne short 09eceh ; 75 0a ; 0xf9ec2
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf9ec4 buslogic.c:303
+ in AL, DX ; ec ; 0xf9ec7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9ec8
+ test AL, strict byte 040h ; a8 40 ; 0xf9eca buslogic.c:304
+ jne short 09ed8h ; 75 0a ; 0xf9ecc
+ inc cx ; 41 ; 0xf9ece buslogic.c:309
+ mov si, cx ; 89 ce ; 0xf9ecf
+ add si, cx ; 01 ce ; 0xf9ed1
+ mov bx, word [bp+si-010h] ; 8b 5a f0 ; 0xf9ed3
+ jmp short 09eb3h ; eb db ; 0xf9ed6
+ test bx, bx ; 85 db ; 0xf9ed8 buslogic.c:311
+ je short 09ee0h ; 74 04 ; 0xf9eda
+ mov ax, bx ; 89 d8 ; 0xf9edc
+ jmp short 09ee3h ; eb 03 ; 0xf9ede
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9ee0
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf9ee3 buslogic.c:312
+ pop di ; 5f ; 0xf9ee6
+ pop si ; 5e ; 0xf9ee7
+ pop dx ; 5a ; 0xf9ee8
+ pop cx ; 59 ; 0xf9ee9
+ pop bx ; 5b ; 0xf9eea
+ pop bp ; 5d ; 0xf9eeb
+ retn ; c3 ; 0xf9eec
+ ; disGetNextSymbol 0xf9eed LB 0xeeb -> off=0x0 cb=000000000000001e uValue=00000000000f88ed 'lsilogic_addr_to_phys'
+lsilogic_addr_to_phys: ; 0xf9eed LB 0x1e
+ push bx ; 53 ; 0xf9eed lsilogic.c:331
+ push cx ; 51 ; 0xf9eee
+ push bp ; 55 ; 0xf9eef
+ mov bp, sp ; 89 e5 ; 0xf9ef0
+ mov bx, ax ; 89 c3 ; 0xf9ef2
+ mov ax, dx ; 89 d0 ; 0xf9ef4
+ xor dx, dx ; 31 d2 ; 0xf9ef6 lsilogic.c:333
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9ef8
+ sal ax, 1 ; d1 e0 ; 0xf9efb
+ rcl dx, 1 ; d1 d2 ; 0xf9efd
+ loop 09efbh ; e2 fa ; 0xf9eff
+ xor cx, cx ; 31 c9 ; 0xf9f01
+ add ax, bx ; 01 d8 ; 0xf9f03
+ adc dx, cx ; 11 ca ; 0xf9f05
+ pop bp ; 5d ; 0xf9f07 lsilogic.c:334
+ pop cx ; 59 ; 0xf9f08
+ pop bx ; 5b ; 0xf9f09
+ retn ; c3 ; 0xf9f0a
+ ; disGetNextSymbol 0xf9f0b LB 0xecd -> off=0x0 cb=00000000000000f6 uValue=00000000000f890b 'lsilogic_cmd'
+lsilogic_cmd: ; 0xf9f0b LB 0xf6
+ push bp ; 55 ; 0xf9f0b lsilogic.c:336
+ mov bp, sp ; 89 e5 ; 0xf9f0c
+ push si ; 56 ; 0xf9f0e
+ push di ; 57 ; 0xf9f0f
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf9f10
+ mov si, ax ; 89 c6 ; 0xf9f13
+ mov word [bp-006h], dx ; 89 56 fa ; 0xf9f15
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf9f18 lsilogic.c:340
+ mov word [bp-014h], cx ; 89 4e ec ; 0xf9f1b
+ mov [bp-00ch], ds ; 8c 5e f4 ; 0xf9f1e lsilogic.c:341
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9f21
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9f24
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf9f27 lsilogic.c:342
+ shr ax, 002h ; c1 e8 02 ; 0xf9f2a
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9f2d
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf9f30
+ mov dx, word [bp+00ah] ; 8b 56 0a ; 0xf9f35 lsilogic.c:343
+ shr dx, 1 ; d1 ea ; 0xf9f38
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf9f3a
+ or ah, 042h ; 80 cc 42 ; 0xf9f3d lsilogic.c:344
+ mov cx, ax ; 89 c1 ; 0xf9f40
+ test byte [bp+004h], 003h ; f6 46 04 03 ; 0xf9f42 lsilogic.c:346
+ jne short 09f4eh ; 75 06 ; 0xf9f46
+ test byte [bp+00ah], 001h ; f6 46 0a 01 ; 0xf9f48
+ je short 09f54h ; 74 06 ; 0xf9f4c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9f4e lsilogic.c:348
+ jmp near 09ff8h ; e9 a4 00 ; 0xf9f51
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf9f54 lsilogic.c:350
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xf9f57
+ xor ax, ax ; 31 c0 ; 0xf9f5c
+ xchg cx, ax ; 91 ; 0xf9f5e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9f5f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9f63
+ out DX, eax ; 66 ef ; 0xf9f65
+ xor bx, bx ; 31 db ; 0xf9f67 lsilogic.c:351
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf9f69
+ test ax, ax ; 85 c0 ; 0xf9f6c
+ jnbe short 09f77h ; 77 07 ; 0xf9f6e
+ jne short 09f9dh ; 75 2b ; 0xf9f70
+ cmp bx, word [bp-00eh] ; 3b 5e f2 ; 0xf9f72
+ jnc short 09f9dh ; 73 26 ; 0xf9f75
+ mov di, bx ; 89 df ; 0xf9f77 lsilogic.c:352
+ sal di, 002h ; c1 e7 02 ; 0xf9f79
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf9f7c
+ add di, word [bp-00ah] ; 03 7e f6 ; 0xf9f7f
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf9f82
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf9f85
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf9f89
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xf9f8c
+ xchg cx, ax ; 91 ; 0xf9f91
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9f92
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9f96
+ out DX, eax ; 66 ef ; 0xf9f98
+ inc bx ; 43 ; 0xf9f9a
+ jmp short 09f69h ; eb cc ; 0xf9f9b
+ xor bx, bx ; 31 db ; 0xf9f9d lsilogic.c:354
+ cmp bx, word [bp-010h] ; 3b 5e f0 ; 0xf9f9f
+ jnc short 09ff6h ; 73 52 ; 0xf9fa2
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf9fa4 lsilogic.c:357
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xf9fa7
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf9fac
+ in eax, DX ; 66 ed ; 0xf9faf
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9fb1
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9fb3
+ xchg dx, ax ; 92 ; 0xf9fb7
+ test AL, strict byte 001h ; a8 01 ; 0xf9fb8
+ je short 09fa4h ; 74 e8 ; 0xf9fba
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf9fbc lsilogic.c:359
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xf9fbf
+ in eax, DX ; 66 ed ; 0xf9fc4
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9fc6
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9fc8
+ xchg dx, ax ; 92 ; 0xf9fcc
+ mov di, bx ; 89 df ; 0xf9fcd
+ add di, bx ; 01 df ; 0xf9fcf
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9fd1
+ add di, word [bp-012h] ; 03 7e ee ; 0xf9fd4
+ mov word [es:di], ax ; 26 89 05 ; 0xf9fd7
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf9fda lsilogic.c:360
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xf9fdd
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf9fe2
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9fe5
+ xor cx, cx ; 31 c9 ; 0xf9fe8
+ xchg cx, ax ; 91 ; 0xf9fea
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9feb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9fef
+ out DX, eax ; 66 ef ; 0xf9ff1
+ inc bx ; 43 ; 0xf9ff3 lsilogic.c:361
+ jmp short 09f9fh ; eb a9 ; 0xf9ff4
+ xor ax, ax ; 31 c0 ; 0xf9ff6 lsilogic.c:363
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9ff8 lsilogic.c:364
+ pop di ; 5f ; 0xf9ffb
+ pop si ; 5e ; 0xf9ffc
+ pop bp ; 5d ; 0xf9ffd
+ retn 00008h ; c2 08 00 ; 0xf9ffe
+ ; disGetNextSymbol 0xfa001 LB 0xdd7 -> off=0x0 cb=00000000000000d7 uValue=00000000000f8a01 'lsilogic_scsi_cmd_exec'
+lsilogic_scsi_cmd_exec: ; 0xfa001 LB 0xd7
+ push bp ; 55 ; 0xfa001 lsilogic.c:366
+ mov bp, sp ; 89 e5 ; 0xfa002
+ push bx ; 53 ; 0xfa004
+ push cx ; 51 ; 0xfa005
+ push si ; 56 ; 0xfa006
+ push di ; 57 ; 0xfa007
+ push ax ; 50 ; 0xfa008
+ mov bx, ax ; 89 c3 ; 0xfa009
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa00b
+ call 09eedh ; e8 dc fe ; 0xfa00e lsilogic.c:372
+ mov cx, dx ; 89 d1 ; 0xfa011
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa013
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa016
+ add dx, strict byte 00040h ; 83 c2 40 ; 0xfa01b
+ xchg cx, ax ; 91 ; 0xfa01e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa01f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa023
+ out DX, eax ; 66 ef ; 0xfa025
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa027 lsilogic.c:375
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa02a
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xfa02f
+ in eax, DX ; 66 ed ; 0xfa032
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa034
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa036
+ xchg dx, ax ; 92 ; 0xfa03a
+ test AL, strict byte 008h ; a8 08 ; 0xfa03b
+ je short 0a027h ; 74 e8 ; 0xfa03d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa03f lsilogic.c:377
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa042
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xfa047
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa04a
+ xor cx, cx ; 31 c9 ; 0xfa04d
+ xchg cx, ax ; 91 ; 0xfa04f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa050
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa054
+ out DX, eax ; 66 ef ; 0xfa056
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa058 lsilogic.c:380
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa05b
+ add dx, strict byte 00044h ; 83 c2 44 ; 0xfa060
+ in eax, DX ; 66 ed ; 0xfa063
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa065
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa067
+ xchg dx, ax ; 92 ; 0xfa06b
+ mov cx, dx ; 89 d1 ; 0xfa06c
+ mov di, ax ; 89 c7 ; 0xfa06e
+ mov si, dx ; 89 d6 ; 0xfa070
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa072 lsilogic.c:381
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa075
+ add dx, strict byte 00044h ; 83 c2 44 ; 0xfa07a
+ in eax, DX ; 66 ed ; 0xfa07d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa07f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa081
+ xchg dx, ax ; 92 ; 0xfa085
+ cmp dx, strict byte 0ffffh ; 83 fa ff ; 0xfa086 lsilogic.c:382
+ jne short 0a090h ; 75 05 ; 0xfa089
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa08b
+ je short 0a095h ; 74 05 ; 0xfa08e
+ mov ax, strict word 00005h ; b8 05 00 ; 0xfa090 lsilogic.c:383
+ jmp short 0a0cfh ; eb 3a ; 0xfa093
+ test ch, 080h ; f6 c5 80 ; 0xfa095 lsilogic.c:384
+ je short 0a0beh ; 74 24 ; 0xfa098
+ lea ax, [bx+038h] ; 8d 47 38 ; 0xfa09a lsilogic.c:392
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfa09d
+ call 09eedh ; e8 4a fe ; 0xfa0a0
+ mov cx, dx ; 89 d1 ; 0xfa0a3
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa0a5
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa0a8
+ add dx, strict byte 00044h ; 83 c2 44 ; 0xfa0ad
+ xchg cx, ax ; 91 ; 0xfa0b0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa0b1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa0b5
+ out DX, eax ; 66 ef ; 0xfa0b7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa0b9 lsilogic.c:393
+ jmp short 0a0cfh ; eb 11 ; 0xfa0bc
+ test si, si ; 85 f6 ; 0xfa0be lsilogic.c:396
+ jne short 0a0c8h ; 75 06 ; 0xfa0c0
+ cmp di, 0cafeh ; 81 ff fe ca ; 0xfa0c2
+ je short 0a0cdh ; 74 05 ; 0xfa0c6
+ mov ax, strict word 00003h ; b8 03 00 ; 0xfa0c8 lsilogic.c:397
+ jmp short 0a0cfh ; eb 02 ; 0xfa0cb
+ xor ax, ax ; 31 c0 ; 0xfa0cd lsilogic.c:399
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa0cf lsilogic.c:400
+ pop di ; 5f ; 0xfa0d2
+ pop si ; 5e ; 0xfa0d3
+ pop cx ; 59 ; 0xfa0d4
+ pop bx ; 5b ; 0xfa0d5
+ pop bp ; 5d ; 0xfa0d6
+ retn ; c3 ; 0xfa0d7
+ ; disGetNextSymbol 0xfa0d8 LB 0xd00 -> off=0x0 cb=00000000000000e0 uValue=00000000000f8ad8 'lsilogic_scsi_cmd_data_out'
+lsilogic_scsi_cmd_data_out: ; 0xfa0d8 LB 0xe0
+ push bp ; 55 ; 0xfa0d8 lsilogic.c:402
+ mov bp, sp ; 89 e5 ; 0xfa0d9
+ push cx ; 51 ; 0xfa0db
+ push si ; 56 ; 0xfa0dc
+ push di ; 57 ; 0xfa0dd
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa0de
+ mov di, ax ; 89 c7 ; 0xfa0e1
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa0e3
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa0e6
+ mov si, ax ; 89 c6 ; 0xfa0e9 lsilogic.c:405
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa0eb
+ mov cx, strict word 00030h ; b9 30 00 ; 0xfa0ee lsilogic.c:408
+ xor bx, bx ; 31 db ; 0xfa0f1
+ call 0aab0h ; e8 ba 09 ; 0xfa0f3
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa0f6 lsilogic.c:410
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa0f9
+ mov byte [es:di], al ; 26 88 05 ; 0xfa0fc
+ mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa0ff lsilogic.c:411
+ mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa105 lsilogic.c:413
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa10a lsilogic.c:414
+ mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa10d
+ mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa111 lsilogic.c:415
+ mov word [es:di+008h], 0cafeh ; 26 c7 45 08 fe ca ; 0xfa116 lsilogic.c:416
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xfa11c
+ mov word [es:di+014h], strict word 00000h ; 26 c7 45 14 00 00 ; 0xfa122 lsilogic.c:417
+ mov word [es:di+016h], 00100h ; 26 c7 45 16 00 01 ; 0xfa128
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa12e lsilogic.c:418
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa131
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa135
+ mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa138
+ xor di, di ; 31 ff ; 0xfa13c lsilogic.c:419
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa13e
+ xor ah, ah ; 30 e4 ; 0xfa141
+ cmp di, ax ; 39 c7 ; 0xfa143
+ jnl short 0a161h ; 7d 1a ; 0xfa145
+ les bx, [bp+004h] ; c4 5e 04 ; 0xfa147 lsilogic.c:420
+ add bx, di ; 01 fb ; 0xfa14a
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa14c
+ mov dx, si ; 89 f2 ; 0xfa14f
+ add dx, di ; 01 fa ; 0xfa151
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xfa153
+ mov es, cx ; 8e c1 ; 0xfa156
+ mov bx, dx ; 89 d3 ; 0xfa158
+ mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa15a
+ inc di ; 47 ; 0xfa15e
+ jmp short 0a13eh ; eb dd ; 0xfa15f
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa161 lsilogic.c:422
+ xor ah, ah ; 30 e4 ; 0xfa164
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa166
+ mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa169
+ mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa16f
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa173
+ or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa176
+ or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa17a
+ mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa17e lsilogic.c:423
+ or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa182
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa187 lsilogic.c:430
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa18a
+ call 09eedh ; e8 5d fd ; 0xfa18d
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa190
+ mov word [es:si+034h], strict word 00000h ; 26 c7 44 34 00 00 ; 0xfa193
+ mov word [es:si+036h], strict word 00000h ; 26 c7 44 36 00 00 ; 0xfa199
+ or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa19f
+ or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa1a3
+ mov ax, si ; 89 f0 ; 0xfa1a7 lsilogic.c:432
+ mov dx, es ; 8c c2 ; 0xfa1a9
+ call 0a001h ; e8 53 fe ; 0xfa1ab
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa1ae lsilogic.c:433
+ pop di ; 5f ; 0xfa1b1
+ pop si ; 5e ; 0xfa1b2
+ pop cx ; 59 ; 0xfa1b3
+ pop bp ; 5d ; 0xfa1b4
+ retn 0000eh ; c2 0e 00 ; 0xfa1b5
+ ; disGetNextSymbol 0xfa1b8 LB 0xc20 -> off=0x0 cb=00000000000000e0 uValue=00000000000f8bb8 'lsilogic_scsi_cmd_data_in'
+lsilogic_scsi_cmd_data_in: ; 0xfa1b8 LB 0xe0
+ push bp ; 55 ; 0xfa1b8 lsilogic.c:435
+ mov bp, sp ; 89 e5 ; 0xfa1b9
+ push cx ; 51 ; 0xfa1bb
+ push si ; 56 ; 0xfa1bc
+ push di ; 57 ; 0xfa1bd
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa1be
+ mov di, ax ; 89 c7 ; 0xfa1c1
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa1c3
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa1c6
+ mov si, ax ; 89 c6 ; 0xfa1c9 lsilogic.c:438
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa1cb
+ mov cx, strict word 00030h ; b9 30 00 ; 0xfa1ce lsilogic.c:441
+ xor bx, bx ; 31 db ; 0xfa1d1
+ call 0aab0h ; e8 da 08 ; 0xfa1d3
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa1d6 lsilogic.c:443
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa1d9
+ mov byte [es:di], al ; 26 88 05 ; 0xfa1dc
+ mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa1df lsilogic.c:444
+ mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa1e5 lsilogic.c:446
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa1ea lsilogic.c:447
+ mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa1ed
+ mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa1f1 lsilogic.c:448
+ mov word [es:di+008h], 0cafeh ; 26 c7 45 08 fe ca ; 0xfa1f6 lsilogic.c:449
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xfa1fc
+ mov word [es:di+014h], strict word 00000h ; 26 c7 45 14 00 00 ; 0xfa202 lsilogic.c:450
+ mov word [es:di+016h], 00200h ; 26 c7 45 16 00 02 ; 0xfa208
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa20e lsilogic.c:451
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa211
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa215
+ mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa218
+ xor di, di ; 31 ff ; 0xfa21c lsilogic.c:452
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa21e
+ xor ah, ah ; 30 e4 ; 0xfa221
+ cmp di, ax ; 39 c7 ; 0xfa223
+ jnl short 0a241h ; 7d 1a ; 0xfa225
+ les bx, [bp+004h] ; c4 5e 04 ; 0xfa227 lsilogic.c:453
+ add bx, di ; 01 fb ; 0xfa22a
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa22c
+ mov dx, si ; 89 f2 ; 0xfa22f
+ add dx, di ; 01 fa ; 0xfa231
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xfa233
+ mov es, cx ; 8e c1 ; 0xfa236
+ mov bx, dx ; 89 d3 ; 0xfa238
+ mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa23a
+ inc di ; 47 ; 0xfa23e
+ jmp short 0a21eh ; eb dd ; 0xfa23f
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa241 lsilogic.c:455
+ xor ah, ah ; 30 e4 ; 0xfa244
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa246
+ mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa249
+ mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa24f
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa253
+ or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa256
+ or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa25a
+ mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa25e lsilogic.c:456
+ or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa262
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa267 lsilogic.c:463
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa26a
+ call 09eedh ; e8 7d fc ; 0xfa26d
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa270
+ mov word [es:si+034h], strict word 00000h ; 26 c7 44 34 00 00 ; 0xfa273
+ mov word [es:si+036h], strict word 00000h ; 26 c7 44 36 00 00 ; 0xfa279
+ or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa27f
+ or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa283
+ mov ax, si ; 89 f0 ; 0xfa287 lsilogic.c:465
+ mov dx, es ; 8c c2 ; 0xfa289
+ call 0a001h ; e8 73 fd ; 0xfa28b
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa28e lsilogic.c:466
+ pop di ; 5f ; 0xfa291
+ pop si ; 5e ; 0xfa292
+ pop cx ; 59 ; 0xfa293
+ pop bp ; 5d ; 0xfa294
+ retn 0000eh ; c2 0e 00 ; 0xfa295
+ ; disGetNextSymbol 0xfa298 LB 0xb40 -> off=0x0 cb=00000000000000f1 uValue=00000000000f8c98 'lsilogic_scsi_hba_init'
+lsilogic_scsi_hba_init: ; 0xfa298 LB 0xf1
+ push bp ; 55 ; 0xfa298 lsilogic.c:471
+ mov bp, sp ; 89 e5 ; 0xfa299
+ push bx ; 53 ; 0xfa29b
+ push cx ; 51 ; 0xfa29c
+ push si ; 56 ; 0xfa29d
+ push di ; 57 ; 0xfa29e
+ sub sp, strict byte 0002ch ; 83 ec 2c ; 0xfa29f
+ mov si, ax ; 89 c6 ; 0xfa2a2
+ mov di, dx ; 89 d7 ; 0xfa2a4
+ mov es, dx ; 8e c2 ; 0xfa2a6 lsilogic.c:483
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa2a8
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa2ad
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa2b0
+ xor cx, cx ; 31 c9 ; 0xfa2b3
+ xchg cx, ax ; 91 ; 0xfa2b5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa2b6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa2ba
+ out DX, eax ; 66 ef ; 0xfa2bc
+ mov es, di ; 8e c7 ; 0xfa2be lsilogic.c:484
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa2c0
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa2c5
+ mov ax, strict word 00002h ; b8 02 00 ; 0xfa2c8
+ xor cx, cx ; 31 c9 ; 0xfa2cb
+ xchg cx, ax ; 91 ; 0xfa2cd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa2ce
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa2d2
+ out DX, eax ; 66 ef ; 0xfa2d4
+ mov es, di ; 8e c7 ; 0xfa2d6 lsilogic.c:485
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa2d8
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa2dd
+ mov ax, strict word 00007h ; b8 07 00 ; 0xfa2e0
+ xor cx, cx ; 31 c9 ; 0xfa2e3
+ xchg cx, ax ; 91 ; 0xfa2e5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa2e6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa2ea
+ out DX, eax ; 66 ef ; 0xfa2ec
+ mov es, di ; 8e c7 ; 0xfa2ee lsilogic.c:486
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa2f0
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa2f5
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xfa2f8
+ xor cx, cx ; 31 c9 ; 0xfa2fb
+ xchg cx, ax ; 91 ; 0xfa2fd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa2fe
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa302
+ out DX, eax ; 66 ef ; 0xfa304
+ mov es, di ; 8e c7 ; 0xfa306 lsilogic.c:487
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa308
+ add dx, strict byte 00008h ; 83 c2 08 ; 0xfa30d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa310
+ xor cx, cx ; 31 c9 ; 0xfa313
+ xchg cx, ax ; 91 ; 0xfa315
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa316
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa31a
+ out DX, eax ; 66 ef ; 0xfa31c
+ mov byte [bp-034h], 001h ; c6 46 cc 01 ; 0xfa31e lsilogic.c:489
+ mov byte [bp-031h], 002h ; c6 46 cf 02 ; 0xfa322 lsilogic.c:490
+ xor ax, ax ; 31 c0 ; 0xfa326 lsilogic.c:491
+ mov word [bp-024h], ax ; 89 46 dc ; 0xfa328
+ mov word [bp-022h], ax ; 89 46 de ; 0xfa32b
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xfa32e lsilogic.c:492
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xfa331
+ mov byte [bp-02eh], 001h ; c6 46 d2 01 ; 0xfa334 lsilogic.c:493
+ mov byte [bp-02fh], 004h ; c6 46 d1 04 ; 0xfa338 lsilogic.c:494
+ mov word [bp-028h], 00080h ; c7 46 d8 80 00 ; 0xfa33c lsilogic.c:495
+ push strict byte 00014h ; 6a 14 ; 0xfa341 lsilogic.c:496
+ lea dx, [bp-01ch] ; 8d 56 e4 ; 0xfa343
+ push SS ; 16 ; 0xfa346
+ push dx ; 52 ; 0xfa347
+ push strict byte 00018h ; 6a 18 ; 0xfa348
+ mov cx, ss ; 8c d1 ; 0xfa34a
+ lea bx, [bp-034h] ; 8d 5e cc ; 0xfa34c
+ mov ax, si ; 89 f0 ; 0xfa34f
+ mov dx, di ; 89 fa ; 0xfa351
+ call 09f0bh ; e8 b5 fb ; 0xfa353
+ test ax, ax ; 85 c0 ; 0xfa356 lsilogic.c:497
+ jne short 0a37dh ; 75 23 ; 0xfa358
+ lea ax, [si+038h] ; 8d 44 38 ; 0xfa35a lsilogic.c:500
+ mov dx, di ; 89 fa ; 0xfa35d
+ call 09eedh ; e8 8b fb ; 0xfa35f
+ mov es, di ; 8e c7 ; 0xfa362
+ mov si, word [es:si+000b8h] ; 26 8b b4 b8 00 ; 0xfa364
+ add si, strict byte 00044h ; 83 c6 44 ; 0xfa369
+ mov cx, dx ; 89 d1 ; 0xfa36c
+ mov dx, si ; 89 f2 ; 0xfa36e
+ xchg cx, ax ; 91 ; 0xfa370
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa371
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa375
+ out DX, eax ; 66 ef ; 0xfa377
+ xor ax, ax ; 31 c0 ; 0xfa379 lsilogic.c:501
+ jmp short 0a380h ; eb 03 ; 0xfa37b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa37d lsilogic.c:504
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa380 lsilogic.c:505
+ pop di ; 5f ; 0xfa383
+ pop si ; 5e ; 0xfa384
+ pop cx ; 59 ; 0xfa385
+ pop bx ; 5b ; 0xfa386
+ pop bp ; 5d ; 0xfa387
+ retn ; c3 ; 0xfa388
+ ; disGetNextSymbol 0xfa389 LB 0xa4f -> off=0x0 cb=0000000000000059 uValue=00000000000f8d89 'lsilogic_scsi_init'
+lsilogic_scsi_init: ; 0xfa389 LB 0x59
+ push bp ; 55 ; 0xfa389 lsilogic.c:510
+ mov bp, sp ; 89 e5 ; 0xfa38a
+ push si ; 56 ; 0xfa38c
+ push di ; 57 ; 0xfa38d
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa38e
+ mov si, ax ; 89 c6 ; 0xfa391
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xfa393
+ mov byte [bp-006h], cl ; 88 4e fa ; 0xfa396 lsilogic.c:517
+ xor al, al ; 30 c0 ; 0xfa399
+ mov byte [bp-005h], al ; 88 46 fb ; 0xfa39b
+ mov byte [bp-00ah], bl ; 88 5e f6 ; 0xfa39e
+ mov byte [bp-009h], al ; 88 46 f7 ; 0xfa3a1
+ mov bx, strict word 00010h ; bb 10 00 ; 0xfa3a4
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa3a7
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa3aa
+ call 0a87dh ; e8 cd 04 ; 0xfa3ad
+ test AL, strict byte 001h ; a8 01 ; 0xfa3b0 lsilogic.c:521
+ je short 0a3d8h ; 74 24 ; 0xfa3b2
+ and AL, strict byte 0f0h ; 24 f0 ; 0xfa3b4 lsilogic.c:523
+ mov di, ax ; 89 c7 ; 0xfa3b6
+ mov cx, strict word 00007h ; b9 07 00 ; 0xfa3b8 lsilogic.c:526
+ mov bx, strict word 00004h ; bb 04 00 ; 0xfa3bb
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa3be
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa3c1
+ call 0a8cbh ; e8 04 05 ; 0xfa3c4
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xfa3c7 lsilogic.c:529
+ mov word [es:si+000b8h], di ; 26 89 bc b8 00 ; 0xfa3ca
+ mov ax, si ; 89 f0 ; 0xfa3cf lsilogic.c:530
+ mov dx, es ; 8c c2 ; 0xfa3d1
+ call 0a298h ; e8 c2 fe ; 0xfa3d3
+ jmp short 0a3dbh ; eb 03 ; 0xfa3d6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa3d8 lsilogic.c:535
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa3db lsilogic.c:536
+ pop di ; 5f ; 0xfa3de
+ pop si ; 5e ; 0xfa3df
+ pop bp ; 5d ; 0xfa3e0
+ retn ; c3 ; 0xfa3e1
+ ; disGetNextSymbol 0xfa3e2 LB 0x9f6 -> off=0x0 cb=0000000000000020 uValue=00000000000f8de2 'apm_out_str'
+apm_out_str: ; 0xfa3e2 LB 0x20
+ push bp ; 55 ; 0xfa3e2 apm.c:142
+ mov bp, sp ; 89 e5 ; 0xfa3e3
+ push bx ; 53 ; 0xfa3e5
+ push dx ; 52 ; 0xfa3e6
+ mov bx, ax ; 89 c3 ; 0xfa3e7
+ cmp byte [bx], 000h ; 80 3f 00 ; 0xfa3e9 apm.c:144
+ je short 0a3fbh ; 74 0d ; 0xfa3ec
+ mov dx, 0040fh ; ba 0f 04 ; 0xfa3ee apm.c:145
+ mov al, byte [bx] ; 8a 07 ; 0xfa3f1
+ out DX, AL ; ee ; 0xfa3f3
+ inc bx ; 43 ; 0xfa3f4
+ mov al, byte [bx] ; 8a 07 ; 0xfa3f5
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfa3f7
+ jne short 0a3f3h ; 75 f8 ; 0xfa3f9
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa3fb apm.c:146
+ pop dx ; 5a ; 0xfa3fe
+ pop bx ; 5b ; 0xfa3ff
+ pop bp ; 5d ; 0xfa400
+ retn ; c3 ; 0xfa401
+ ; disGetNextSymbol 0xfa402 LB 0x9d6 -> off=0x1e cb=00000000000000cf uValue=00000000000f8e20 'apm_function'
+ db 040h, 0a4h, 0ebh, 0a4h, 052h, 0a4h, 0c0h, 0a4h, 0ebh, 0a4h, 06dh, 0a4h, 0ebh, 0a4h, 072h, 0a4h
+ db 0c0h, 0a4h, 0c0h, 0a4h, 0aah, 0a4h, 0bbh, 0a4h, 0c0h, 0a4h, 0c0h, 0a4h, 0a3h, 0a4h
+apm_function: ; 0xfa420 LB 0xcf
+ push bp ; 55 ; 0xfa420 apm.c:148
+ mov bp, sp ; 89 e5 ; 0xfa421
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xfa423 apm.c:152
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa427 apm.c:153
+ xor ah, ah ; 30 e4 ; 0xfa42a
+ cmp ax, strict word 0000eh ; 3d 0e 00 ; 0xfa42c
+ jnbe short 0a496h ; 77 65 ; 0xfa42f
+ mov bx, ax ; 89 c3 ; 0xfa431
+ add bx, ax ; 01 c3 ; 0xfa433
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xfa435
+ or dl, 001h ; 80 ca 01 ; 0xfa438
+ jmp word [cs:bx-05bfeh] ; 2e ff a7 02 a4 ; 0xfa43b
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa440 apm.c:155
+ mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xfa445 apm.c:156
+ mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xfa44a apm.c:157
+ jmp near 0a4ebh ; e9 99 00 ; 0xfa44f apm.c:158
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfa452 apm.c:168
+ mov word [bp+00ch], 0ab3bh ; c7 46 0c 3b ab ; 0xfa457 apm.c:169
+ mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xfa45c apm.c:170
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfa461 apm.c:171
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfa464
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfa467 apm.c:172
+ jmp near 0a4ebh ; e9 7e 00 ; 0xfa46a apm.c:173
+ sti ; fb ; 0xfa46d apm.c:190
+ hlt ; f4 ; 0xfa46e apm.c:191
+ jmp near 0a4ebh ; e9 79 00 ; 0xfa46f apm.c:192
+ cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xfa472 apm.c:196
+ je short 0a491h ; 74 19 ; 0xfa476
+ cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xfa478
+ je short 0a48ch ; 74 0e ; 0xfa47c
+ cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xfa47e
+ jne short 0a498h ; 75 14 ; 0xfa482
+ mov ax, 00d4ch ; b8 4c 0d ; 0xfa484 apm.c:198
+ call 0a3e2h ; e8 58 ff ; 0xfa487
+ jmp short 0a4ebh ; eb 5f ; 0xfa48a apm.c:199
+ mov ax, 00d54h ; b8 54 0d ; 0xfa48c apm.c:201
+ jmp short 0a487h ; eb f6 ; 0xfa48f
+ mov ax, 00d5ch ; b8 5c 0d ; 0xfa491 apm.c:204
+ jmp short 0a487h ; eb f1 ; 0xfa494
+ jmp short 0a4c0h ; eb 28 ; 0xfa496
+ or ah, 00ah ; 80 cc 0a ; 0xfa498 apm.c:207
+ mov word [bp+012h], ax ; 89 46 12 ; 0xfa49b
+ mov word [bp+018h], dx ; 89 56 18 ; 0xfa49e apm.c:208
+ jmp short 0a4ebh ; eb 48 ; 0xfa4a1 apm.c:210
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa4a3 apm.c:212
+ jmp short 0a4ebh ; eb 41 ; 0xfa4a8 apm.c:213
+ mov word [bp+00ch], 001ffh ; c7 46 0c ff 01 ; 0xfa4aa apm.c:220
+ mov word [bp+010h], 080ffh ; c7 46 10 ff 80 ; 0xfa4af apm.c:221
+ mov word [bp+00eh], strict word 0ffffh ; c7 46 0e ff ff ; 0xfa4b4 apm.c:222
+ jmp short 0a4ebh ; eb 30 ; 0xfa4b9 apm.c:223
+ or ah, 080h ; 80 cc 80 ; 0xfa4bb apm.c:226
+ jmp short 0a49bh ; eb db ; 0xfa4be
+ mov bx, 00ddch ; bb dc 0d ; 0xfa4c0 apm.c:230
+ mov cx, ds ; 8c d9 ; 0xfa4c3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa4c5
+ call 01910h ; e8 45 74 ; 0xfa4c8
+ push word [bp+00ch] ; ff 76 0c ; 0xfa4cb
+ push word [bp+012h] ; ff 76 12 ; 0xfa4ce
+ push 00d65h ; 68 65 0d ; 0xfa4d1
+ push strict byte 00004h ; 6a 04 ; 0xfa4d4
+ call 01953h ; e8 7a 74 ; 0xfa4d6
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa4d9
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa4dc apm.c:231
+ xor ah, ah ; 30 e4 ; 0xfa4df
+ or ah, 00ch ; 80 cc 0c ; 0xfa4e1
+ mov word [bp+012h], ax ; 89 46 12 ; 0xfa4e4
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xfa4e7 apm.c:232
+ mov sp, bp ; 89 ec ; 0xfa4eb apm.c:234
+ pop bp ; 5d ; 0xfa4ed
+ retn ; c3 ; 0xfa4ee
+ ; disGetNextSymbol 0xfa4ef LB 0x8e9 -> off=0x0 cb=0000000000000024 uValue=00000000000f8eef 'pci16_select_reg'
+pci16_select_reg: ; 0xfa4ef LB 0x24
+ push bp ; 55 ; 0xfa4ef pcibios.c:198
+ mov bp, sp ; 89 e5 ; 0xfa4f0
+ push bx ; 53 ; 0xfa4f2
+ and dl, 0fch ; 80 e2 fc ; 0xfa4f3 pcibios.c:200
+ mov bx, dx ; 89 d3 ; 0xfa4f6
+ mov dx, 00cf8h ; ba f8 0c ; 0xfa4f8
+ movzx eax, ax ; 66 0f b7 c0 ; 0xfa4fb
+ sal eax, 008h ; 66 c1 e0 08 ; 0xfa4ff
+ or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xfa503
+ db 08ah, 0c3h
+ ; mov al, bl ; 8a c3 ; 0xfa509
+ out DX, eax ; 66 ef ; 0xfa50b
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfa50d pcibios.c:201
+ pop bx ; 5b ; 0xfa510
+ pop bp ; 5d ; 0xfa511
+ retn ; c3 ; 0xfa512
+ ; disGetNextSymbol 0xfa513 LB 0x8c5 -> off=0x0 cb=00000000000000fd uValue=00000000000f8f13 'pci16_find_device'
+pci16_find_device: ; 0xfa513 LB 0xfd
+ push bp ; 55 ; 0xfa513 pcibios.c:233
+ mov bp, sp ; 89 e5 ; 0xfa514
+ push si ; 56 ; 0xfa516
+ push di ; 57 ; 0xfa517
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xfa518
+ push ax ; 50 ; 0xfa51b
+ push dx ; 52 ; 0xfa51c
+ mov si, bx ; 89 de ; 0xfa51d
+ mov di, cx ; 89 cf ; 0xfa51f
+ test cx, cx ; 85 c9 ; 0xfa521 pcibios.c:243
+ xor bx, bx ; 31 db ; 0xfa523 pcibios.c:250
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xfa525 pcibios.c:251
+ test bl, 007h ; f6 c3 07 ; 0xfa529 pcibios.c:261
+ jne short 0a55bh ; 75 2d ; 0xfa52c
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xfa52e pcibios.c:262
+ mov ax, bx ; 89 d8 ; 0xfa531
+ call 0a4efh ; e8 b9 ff ; 0xfa533
+ mov dx, 00cfeh ; ba fe 0c ; 0xfa536 pcibios.c:263
+ in AL, DX ; ec ; 0xfa539
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa53a
+ mov byte [bp-006h], al ; 88 46 fa ; 0xfa53c
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfa53f pcibios.c:264
+ jne short 0a549h ; 75 06 ; 0xfa541
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfa543 pcibios.c:265
+ jmp near 0a5eah ; e9 a1 00 ; 0xfa546 pcibios.c:266
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xfa549 pcibios.c:268
+ je short 0a556h ; 74 07 ; 0xfa54d
+ mov word [bp-010h], strict word 00001h ; c7 46 f0 01 00 ; 0xfa54f pcibios.c:269
+ jmp short 0a55bh ; eb 05 ; 0xfa554 pcibios.c:270
+ mov word [bp-010h], strict word 00008h ; c7 46 f0 08 00 ; 0xfa556 pcibios.c:271
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa55b pcibios.c:282
+ and AL, strict byte 007h ; 24 07 ; 0xfa55e
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa560
+ jne short 0a583h ; 75 1f ; 0xfa562
+ mov ax, bx ; 89 d8 ; 0xfa564
+ shr ax, 008h ; c1 e8 08 ; 0xfa566
+ test ax, ax ; 85 c0 ; 0xfa569
+ jne short 0a583h ; 75 16 ; 0xfa56b
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfa56d pcibios.c:284
+ mov ax, bx ; 89 d8 ; 0xfa570
+ call 0a4efh ; e8 7a ff ; 0xfa572
+ mov dx, 00cfeh ; ba fe 0c ; 0xfa575 pcibios.c:285
+ in AL, DX ; ec ; 0xfa578
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa579
+ cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xfa57b pcibios.c:286
+ jbe short 0a583h ; 76 03 ; 0xfa57e
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xfa580 pcibios.c:287
+ test di, di ; 85 ff ; 0xfa583 pcibios.c:291
+ je short 0a58ch ; 74 05 ; 0xfa585
+ mov dx, strict word 00008h ; ba 08 00 ; 0xfa587
+ jmp short 0a58eh ; eb 02 ; 0xfa58a
+ xor dx, dx ; 31 d2 ; 0xfa58c
+ mov ax, bx ; 89 d8 ; 0xfa58e
+ call 0a4efh ; e8 5c ff ; 0xfa590
+ mov dx, 00cfch ; ba fc 0c ; 0xfa593 pcibios.c:292
+ in eax, DX ; 66 ed ; 0xfa596
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa598
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa59a
+ xchg dx, ax ; 92 ; 0xfa59e
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xfa59f
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa5a2
+ mov ax, dx ; 89 d0 ; 0xfa5a5
+ mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xfa5a7 pcibios.c:293
+ test di, di ; 85 ff ; 0xfa5ac pcibios.c:296
+ je short 0a5ceh ; 74 1e ; 0xfa5ae
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xfa5b0 pcibios.c:297
+ je short 0a5bdh ; 74 07 ; 0xfa5b4
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa5b6 pcibios.c:298
+ xor ax, dx ; 31 d0 ; 0xfa5b9
+ jmp short 0a5ceh ; eb 11 ; 0xfa5bb pcibios.c:299
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xfa5bd pcibios.c:300
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfa5c0
+ shr dx, 1 ; d1 ea ; 0xfa5c3
+ rcr ax, 1 ; d1 d8 ; 0xfa5c5
+ loop 0a5c3h ; e2 fa ; 0xfa5c7
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa5c9
+ mov ax, dx ; 89 d0 ; 0xfa5cc
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xfa5ce pcibios.c:307
+ jne short 0a5dbh ; 75 08 ; 0xfa5d1
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa5d3
+ cmp ax, word [bp-012h] ; 3b 46 ee ; 0xfa5d6
+ je short 0a5e1h ; 74 06 ; 0xfa5d9
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xfa5db pcibios.c:308
+ je short 0a5e7h ; 74 06 ; 0xfa5df
+ dec si ; 4e ; 0xfa5e1
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa5e2
+ je short 0a5fbh ; 74 14 ; 0xfa5e5
+ add bx, word [bp-010h] ; 03 5e f0 ; 0xfa5e7 pcibios.c:316
+ mov dx, bx ; 89 da ; 0xfa5ea pcibios.c:317
+ shr dx, 008h ; c1 ea 08 ; 0xfa5ec
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa5ef
+ xor ah, ah ; 30 e4 ; 0xfa5f2
+ cmp dx, ax ; 39 c2 ; 0xfa5f4
+ jnbe short 0a5fbh ; 77 03 ; 0xfa5f6
+ jmp near 0a529h ; e9 2e ff ; 0xfa5f8
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa5fb pcibios.c:319
+ jne short 0a604h ; 75 04 ; 0xfa5fe pcibios.c:323
+ mov ax, bx ; 89 d8 ; 0xfa600
+ jmp short 0a607h ; eb 03 ; 0xfa602
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa604
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa607 pcibios.c:324
+ pop di ; 5f ; 0xfa60a
+ pop si ; 5e ; 0xfa60b
+ pop bp ; 5d ; 0xfa60c
+ retn 00002h ; c2 02 00 ; 0xfa60d
+ ; disGetNextSymbol 0xfa610 LB 0x7c8 -> off=0xc cb=00000000000001d6 uValue=00000000000f901c 'pci16_function'
+ db 001h, 0a7h, 01ah, 0a7h, 02ch, 0a7h, 040h, 0a7h, 052h, 0a7h, 065h, 0a7h
+pci16_function: ; 0xfa61c LB 0x1d6
+ push bp ; 55 ; 0xfa61c pcibios.c:326
+ mov bp, sp ; 89 e5 ; 0xfa61d
+ push si ; 56 ; 0xfa61f
+ push di ; 57 ; 0xfa620
+ push ax ; 50 ; 0xfa621
+ push ax ; 50 ; 0xfa622
+ and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xfa623 pcibios.c:333
+ and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xfa628 pcibios.c:334
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa62c pcibios.c:336
+ xor bh, bh ; 30 ff ; 0xfa62f
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa631
+ xor ah, ah ; 30 e4 ; 0xfa634
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xfa636
+ jc short 0a64eh ; 72 13 ; 0xfa639
+ jbe short 0a6a3h ; 76 66 ; 0xfa63b
+ cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xfa63d
+ je short 0a6abh ; 74 69 ; 0xfa640
+ cmp bx, strict byte 00008h ; 83 fb 08 ; 0xfa642
+ jc short 0a658h ; 72 11 ; 0xfa645
+ cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xfa647
+ jbe short 0a6aeh ; 76 62 ; 0xfa64a
+ jmp short 0a658h ; eb 0a ; 0xfa64c
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xfa64e
+ je short 0a677h ; 74 24 ; 0xfa651
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xfa653
+ je short 0a65bh ; 74 03 ; 0xfa656
+ jmp near 0a7beh ; e9 63 01 ; 0xfa658
+ mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xfa65b pcibios.c:338
+ mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xfa660 pcibios.c:339
+ mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xfa665 pcibios.c:341
+ mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xfa66a pcibios.c:342
+ mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xfa66f
+ jmp near 0a7ebh ; e9 74 01 ; 0xfa674 pcibios.c:343
+ cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xfa677 pcibios.c:348
+ jne short 0a683h ; 75 06 ; 0xfa67b
+ or ah, 083h ; 80 cc 83 ; 0xfa67d pcibios.c:349
+ jmp near 0a7e4h ; e9 61 01 ; 0xfa680 pcibios.c:350
+ push strict byte 00000h ; 6a 00 ; 0xfa683 pcibios.c:352
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa685
+ mov dx, word [bp+01ch] ; 8b 56 1c ; 0xfa688
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xfa68b
+ xor cx, cx ; 31 c9 ; 0xfa68e
+ call 0a513h ; e8 80 fe ; 0xfa690
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa693 pcibios.c:353
+ jne short 0a6a5h ; 75 0d ; 0xfa696
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa698 pcibios.c:354
+ xor ah, ah ; 30 e4 ; 0xfa69b
+ or ah, 086h ; 80 cc 86 ; 0xfa69d
+ jmp near 0a7e4h ; e9 41 01 ; 0xfa6a0
+ jmp short 0a6b0h ; eb 0b ; 0xfa6a3
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfa6a5 pcibios.c:355
+ jmp near 0a7ebh ; e9 40 01 ; 0xfa6a8 pcibios.c:360
+ jmp near 0a779h ; e9 cb 00 ; 0xfa6ab
+ jmp short 0a6d7h ; eb 27 ; 0xfa6ae
+ push strict byte 00000h ; 6a 00 ; 0xfa6b0 pcibios.c:362
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa6b2
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa6b5
+ mov dx, word [bp+01eh] ; 8b 56 1e ; 0xfa6b8
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa6bb
+ call 0a513h ; e8 52 fe ; 0xfa6be
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa6c1 pcibios.c:363
+ jne short 0a6d1h ; 75 0b ; 0xfa6c4
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa6c6 pcibios.c:364
+ xor ah, ah ; 30 e4 ; 0xfa6c9
+ or ah, 086h ; 80 cc 86 ; 0xfa6cb
+ jmp near 0a7e4h ; e9 13 01 ; 0xfa6ce pcibios.c:365
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfa6d1 pcibios.c:367
+ jmp near 0a7ebh ; e9 14 01 ; 0xfa6d4 pcibios.c:369
+ cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xfa6d7 pcibios.c:376
+ jc short 0a6e4h ; 72 06 ; 0xfa6dc
+ or ah, 087h ; 80 cc 87 ; 0xfa6de pcibios.c:377
+ jmp near 0a7e4h ; e9 00 01 ; 0xfa6e1 pcibios.c:378
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa6e4 pcibios.c:380
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfa6e7
+ call 0a4efh ; e8 02 fe ; 0xfa6ea
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa6ed pcibios.c:381
+ xor bh, bh ; 30 ff ; 0xfa6f0
+ sub bx, strict byte 00008h ; 83 eb 08 ; 0xfa6f2
+ cmp bx, strict byte 00005h ; 83 fb 05 ; 0xfa6f5
+ jnbe short 0a762h ; 77 68 ; 0xfa6f8
+ add bx, bx ; 01 db ; 0xfa6fa
+ jmp word [cs:bx-059f0h] ; 2e ff a7 10 a6 ; 0xfa6fc
+ mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xfa701 pcibios.c:383
+ xor bl, bl ; 30 db ; 0xfa704
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa706
+ and dx, strict byte 00003h ; 83 e2 03 ; 0xfa709
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfa70c
+ in AL, DX ; ec ; 0xfa710
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa711
+ or bx, ax ; 09 c3 ; 0xfa713
+ mov word [bp+01ch], bx ; 89 5e 1c ; 0xfa715
+ jmp short 0a762h ; eb 48 ; 0xfa718 pcibios.c:384
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa71a pcibios.c:386
+ xor dh, dh ; 30 f6 ; 0xfa71d
+ and dl, 002h ; 80 e2 02 ; 0xfa71f
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfa722
+ in ax, DX ; ed ; 0xfa726
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfa727
+ jmp short 0a762h ; eb 36 ; 0xfa72a pcibios.c:387
+ mov dx, 00cfch ; ba fc 0c ; 0xfa72c pcibios.c:389
+ in eax, DX ; 66 ed ; 0xfa72f
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa731
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa733
+ xchg dx, ax ; 92 ; 0xfa737
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfa738
+ mov word [bp+01eh], dx ; 89 56 1e ; 0xfa73b
+ jmp short 0a762h ; eb 22 ; 0xfa73e pcibios.c:390
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa740 pcibios.c:392
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa743
+ xor dh, dh ; 30 f6 ; 0xfa746
+ and dl, 003h ; 80 e2 03 ; 0xfa748
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfa74b
+ out DX, AL ; ee ; 0xfa74f
+ jmp short 0a762h ; eb 10 ; 0xfa750 pcibios.c:393
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa752 pcibios.c:395
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa755
+ xor dh, dh ; 30 f6 ; 0xfa758
+ and dl, 002h ; 80 e2 02 ; 0xfa75a
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfa75d
+ out DX, ax ; ef ; 0xfa761
+ jmp near 0a7ebh ; e9 86 00 ; 0xfa762 pcibios.c:396
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa765 pcibios.c:398
+ mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xfa768
+ mov dx, 00cfch ; ba fc 0c ; 0xfa76b
+ xchg cx, ax ; 91 ; 0xfa76e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa76f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa773
+ out DX, eax ; 66 ef ; 0xfa775
+ jmp short 0a7ebh ; eb 72 ; 0xfa777 pcibios.c:402
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfa779 pcibios.c:404
+ mov es, [bp+026h] ; 8e 46 26 ; 0xfa77c
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xfa77f
+ mov [bp-006h], es ; 8c 46 fa ; 0xfa782
+ mov cx, word [0f360h] ; 8b 0e 60 f3 ; 0xfa785 pcibios.c:408
+ cmp cx, word [es:bx] ; 26 3b 0f ; 0xfa789
+ jbe short 0a79fh ; 76 11 ; 0xfa78c
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa78e pcibios.c:409
+ xor ah, ah ; 30 e4 ; 0xfa791
+ or ah, 089h ; 80 cc 89 ; 0xfa793
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfa796
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfa799 pcibios.c:410
+ jmp short 0a7b3h ; eb 14 ; 0xfa79d pcibios.c:411
+ les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xfa79f pcibios.c:412
+ mov si, 0f180h ; be 80 f1 ; 0xfa7a3
+ mov dx, ds ; 8c da ; 0xfa7a6
+ push DS ; 1e ; 0xfa7a8
+ mov ds, dx ; 8e da ; 0xfa7a9
+ rep movsb ; f3 a4 ; 0xfa7ab
+ pop DS ; 1f ; 0xfa7ad
+ mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xfa7ae pcibios.c:414
+ mov ax, word [0f360h] ; a1 60 f3 ; 0xfa7b3 pcibios.c:416
+ les bx, [bp-008h] ; c4 5e f8 ; 0xfa7b6
+ mov word [es:bx], ax ; 26 89 07 ; 0xfa7b9
+ jmp short 0a7ebh ; eb 2d ; 0xfa7bc pcibios.c:417
+ mov bx, 00ddch ; bb dc 0d ; 0xfa7be pcibios.c:419
+ mov cx, ds ; 8c d9 ; 0xfa7c1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa7c3
+ call 01910h ; e8 47 71 ; 0xfa7c6
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfa7c9
+ push ax ; 50 ; 0xfa7cc
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa7cd
+ push ax ; 50 ; 0xfa7d0
+ push 00d98h ; 68 98 0d ; 0xfa7d1
+ push strict byte 00004h ; 6a 04 ; 0xfa7d4
+ call 01953h ; e8 7a 71 ; 0xfa7d6
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa7d9
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa7dc pcibios.c:420
+ xor ah, ah ; 30 e4 ; 0xfa7df
+ or ah, 081h ; 80 cc 81 ; 0xfa7e1
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfa7e4
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfa7e7 pcibios.c:421
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa7eb pcibios.c:423
+ pop di ; 5f ; 0xfa7ee
+ pop si ; 5e ; 0xfa7ef
+ pop bp ; 5d ; 0xfa7f0
+ retn ; c3 ; 0xfa7f1
+ ; disGetNextSymbol 0xfa7f2 LB 0x5e6 -> off=0x0 cb=0000000000000008 uValue=00000000000f91f2 'pci_find_classcode'
+pci_find_classcode: ; 0xfa7f2 LB 0x8
+ push bp ; 55 ; 0xfa7f2 pciutil.c:135
+ mov bp, sp ; 89 e5 ; 0xfa7f3
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa7f5 pciutil.c:142
+ pop bp ; 5d ; 0xfa7f8
+ retn ; c3 ; 0xfa7f9
+ ; disGetNextSymbol 0xfa7fa LB 0x5de -> off=0x0 cb=0000000000000008 uValue=00000000000f91fa 'pci_find_class_noif'
+pci_find_class_noif: ; 0xfa7fa LB 0x8
+ push bp ; 55 ; 0xfa7fa pciutil.c:155
+ mov bp, sp ; 89 e5 ; 0xfa7fb
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa7fd pciutil.c:163
+ pop bp ; 5d ; 0xfa800
+ retn ; c3 ; 0xfa801
+ ; disGetNextSymbol 0xfa802 LB 0x5d6 -> off=0x0 cb=0000000000000023 uValue=00000000000f9202 'pci_find_device'
+pci_find_device: ; 0xfa802 LB 0x23
+ push bp ; 55 ; 0xfa802 pciutil.c:176
+ mov bp, sp ; 89 e5 ; 0xfa803
+ push bx ; 53 ; 0xfa805
+ push cx ; 51 ; 0xfa806
+ push si ; 56 ; 0xfa807
+ mov cx, dx ; 89 d1 ; 0xfa808
+ xor si, si ; 31 f6 ; 0xfa80a pciutil.c:178
+ mov dx, ax ; 89 c2 ; 0xfa80c
+ mov ax, 0b102h ; b8 02 b1 ; 0xfa80e
+ int 01ah ; cd 1a ; 0xfa811
+ cmp ah, 000h ; 80 fc 00 ; 0xfa813
+ je short 0a81bh ; 74 03 ; 0xfa816
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xfa818
+ mov ax, bx ; 89 d8 ; 0xfa81b
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa81d pciutil.c:179
+ pop si ; 5e ; 0xfa820
+ pop cx ; 59 ; 0xfa821
+ pop bx ; 5b ; 0xfa822
+ pop bp ; 5d ; 0xfa823
+ retn ; c3 ; 0xfa824
+ ; disGetNextSymbol 0xfa825 LB 0x5b3 -> off=0x0 cb=000000000000002e uValue=00000000000f9225 'pci_read_config_byte'
+pci_read_config_byte: ; 0xfa825 LB 0x2e
+ push bp ; 55 ; 0xfa825 pciutil.c:181
+ mov bp, sp ; 89 e5 ; 0xfa826
+ push cx ; 51 ; 0xfa828
+ push di ; 57 ; 0xfa829
+ mov dh, al ; 88 c6 ; 0xfa82a
+ mov bh, dl ; 88 d7 ; 0xfa82c
+ mov al, bl ; 88 d8 ; 0xfa82e
+ xor ah, ah ; 30 e4 ; 0xfa830 pciutil.c:183
+ mov dl, dh ; 88 f2 ; 0xfa832
+ xor dh, dh ; 30 f6 ; 0xfa834
+ sal dx, 008h ; c1 e2 08 ; 0xfa836
+ mov bl, bh ; 88 fb ; 0xfa839
+ xor bh, bh ; 30 ff ; 0xfa83b
+ or bx, dx ; 09 d3 ; 0xfa83d
+ mov di, ax ; 89 c7 ; 0xfa83f
+ mov ax, 0b108h ; b8 08 b1 ; 0xfa841
+ int 01ah ; cd 1a ; 0xfa844
+ mov al, cl ; 88 c8 ; 0xfa846
+ xor ah, ah ; 30 e4 ; 0xfa848
+ xor dx, dx ; 31 d2 ; 0xfa84a pciutil.c:184
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa84c
+ pop di ; 5f ; 0xfa84f
+ pop cx ; 59 ; 0xfa850
+ pop bp ; 5d ; 0xfa851
+ retn ; c3 ; 0xfa852
+ ; disGetNextSymbol 0xfa853 LB 0x585 -> off=0x0 cb=000000000000002a uValue=00000000000f9253 'pci_read_config_word'
+pci_read_config_word: ; 0xfa853 LB 0x2a
+ push bp ; 55 ; 0xfa853 pciutil.c:186
+ mov bp, sp ; 89 e5 ; 0xfa854
+ push cx ; 51 ; 0xfa856
+ push di ; 57 ; 0xfa857
+ mov bh, al ; 88 c7 ; 0xfa858
+ mov al, bl ; 88 d8 ; 0xfa85a
+ xor ah, ah ; 30 e4 ; 0xfa85c pciutil.c:188
+ mov bl, bh ; 88 fb ; 0xfa85e
+ xor bh, bh ; 30 ff ; 0xfa860
+ mov cx, bx ; 89 d9 ; 0xfa862
+ sal cx, 008h ; c1 e1 08 ; 0xfa864
+ mov bl, dl ; 88 d3 ; 0xfa867
+ or bx, cx ; 09 cb ; 0xfa869
+ mov di, ax ; 89 c7 ; 0xfa86b
+ mov ax, 0b109h ; b8 09 b1 ; 0xfa86d
+ int 01ah ; cd 1a ; 0xfa870
+ mov ax, cx ; 89 c8 ; 0xfa872
+ xor dx, dx ; 31 d2 ; 0xfa874 pciutil.c:189
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa876
+ pop di ; 5f ; 0xfa879
+ pop cx ; 59 ; 0xfa87a
+ pop bp ; 5d ; 0xfa87b
+ retn ; c3 ; 0xfa87c
+ ; disGetNextSymbol 0xfa87d LB 0x55b -> off=0x0 cb=000000000000004e uValue=00000000000f927d 'pci_read_config_dword'
+pci_read_config_dword: ; 0xfa87d LB 0x4e
+ push bp ; 55 ; 0xfa87d pciutil.c:191
+ mov bp, sp ; 89 e5 ; 0xfa87e
+ push cx ; 51 ; 0xfa880
+ push di ; 57 ; 0xfa881
+ push ax ; 50 ; 0xfa882
+ mov dh, al ; 88 c6 ; 0xfa883
+ mov cl, dl ; 88 d1 ; 0xfa885
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xfa887
+ mov al, bl ; 88 d8 ; 0xfa88a pciutil.c:196
+ xor ah, ah ; 30 e4 ; 0xfa88c
+ mov dl, dh ; 88 f2 ; 0xfa88e
+ xor dh, dh ; 30 f6 ; 0xfa890
+ mov di, dx ; 89 d7 ; 0xfa892
+ sal di, 008h ; c1 e7 08 ; 0xfa894
+ mov dl, cl ; 88 ca ; 0xfa897
+ or dx, di ; 09 fa ; 0xfa899
+ mov di, ax ; 89 c7 ; 0xfa89b
+ mov bx, dx ; 89 d3 ; 0xfa89d
+ mov ax, 0b109h ; b8 09 b1 ; 0xfa89f
+ int 01ah ; cd 1a ; 0xfa8a2
+ test cx, cx ; 85 c9 ; 0xfa8a4
+ jne short 0a8bch ; 75 14 ; 0xfa8a6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa8a8
+ xor ah, ah ; 30 e4 ; 0xfa8ab
+ mov di, ax ; 89 c7 ; 0xfa8ad
+ inc di ; 47 ; 0xfa8af
+ inc di ; 47 ; 0xfa8b0
+ mov bx, dx ; 89 d3 ; 0xfa8b1
+ mov ax, 0b109h ; b8 09 b1 ; 0xfa8b3
+ int 01ah ; cd 1a ; 0xfa8b6
+ test cx, cx ; 85 c9 ; 0xfa8b8
+ je short 0a8c1h ; 74 05 ; 0xfa8ba
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa8bc
+ jmp short 0a8c3h ; eb 02 ; 0xfa8bf
+ xor ax, ax ; 31 c0 ; 0xfa8c1
+ cwd ; 99 ; 0xfa8c3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa8c4 pciutil.c:199
+ pop di ; 5f ; 0xfa8c7
+ pop cx ; 59 ; 0xfa8c8
+ pop bp ; 5d ; 0xfa8c9
+ retn ; c3 ; 0xfa8ca
+ ; disGetNextSymbol 0xfa8cb LB 0x50d -> off=0x0 cb=0000000000000025 uValue=00000000000f92cb 'pci_write_config_word'
+pci_write_config_word: ; 0xfa8cb LB 0x25
+ push bp ; 55 ; 0xfa8cb pciutil.c:201
+ mov bp, sp ; 89 e5 ; 0xfa8cc
+ push di ; 57 ; 0xfa8ce
+ push ax ; 50 ; 0xfa8cf
+ mov byte [bp-004h], al ; 88 46 fc ; 0xfa8d0
+ mov al, bl ; 88 d8 ; 0xfa8d3
+ xor ah, ah ; 30 e4 ; 0xfa8d5 pciutil.c:203
+ mov di, ax ; 89 c7 ; 0xfa8d7
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xfa8d9
+ mov bx, ax ; 89 c3 ; 0xfa8dc
+ sal bx, 008h ; c1 e3 08 ; 0xfa8de
+ mov al, dl ; 88 d0 ; 0xfa8e1
+ or bx, ax ; 09 c3 ; 0xfa8e3
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfa8e5
+ int 01ah ; cd 1a ; 0xfa8e8
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfa8ea pciutil.c:204
+ pop di ; 5f ; 0xfa8ed
+ pop bp ; 5d ; 0xfa8ee
+ retn ; c3 ; 0xfa8ef
+ ; disGetNextSymbol 0xfa8f0 LB 0x4e8 -> off=0x0 cb=0000000000000025 uValue=00000000000f92f0 'pci_write_config_byte'
+pci_write_config_byte: ; 0xfa8f0 LB 0x25
+ push bp ; 55 ; 0xfa8f0 pciutil.c:206
+ mov bp, sp ; 89 e5 ; 0xfa8f1
+ push di ; 57 ; 0xfa8f3
+ push ax ; 50 ; 0xfa8f4
+ mov byte [bp-004h], al ; 88 46 fc ; 0xfa8f5
+ mov al, bl ; 88 d8 ; 0xfa8f8
+ xor ah, ah ; 30 e4 ; 0xfa8fa pciutil.c:208
+ mov di, ax ; 89 c7 ; 0xfa8fc
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xfa8fe
+ mov bx, ax ; 89 c3 ; 0xfa901
+ sal bx, 008h ; c1 e3 08 ; 0xfa903
+ mov al, dl ; 88 d0 ; 0xfa906
+ or bx, ax ; 09 c3 ; 0xfa908
+ mov ax, 0b10bh ; b8 0b b1 ; 0xfa90a
+ int 01ah ; cd 1a ; 0xfa90d
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfa90f pciutil.c:209
+ pop di ; 5f ; 0xfa912
+ pop bp ; 5d ; 0xfa913
+ retn ; c3 ; 0xfa914
+ ; disGetNextSymbol 0xfa915 LB 0x4c3 -> off=0x0 cb=0000000000000046 uValue=00000000000f9315 'pci_write_config_dword'
+pci_write_config_dword: ; 0xfa915 LB 0x46
+ push bp ; 55 ; 0xfa915 pciutil.c:211
+ mov bp, sp ; 89 e5 ; 0xfa916
+ push cx ; 51 ; 0xfa918
+ push di ; 57 ; 0xfa919
+ push ax ; 50 ; 0xfa91a
+ mov dh, al ; 88 c6 ; 0xfa91b
+ mov bh, dl ; 88 d7 ; 0xfa91d
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xfa91f
+ mov al, bl ; 88 d8 ; 0xfa922 pciutil.c:216
+ xor ah, ah ; 30 e4 ; 0xfa924
+ mov dl, dh ; 88 f2 ; 0xfa926
+ xor dh, dh ; 30 f6 ; 0xfa928
+ mov di, dx ; 89 d7 ; 0xfa92a
+ sal di, 008h ; c1 e7 08 ; 0xfa92c
+ mov dl, bh ; 88 fa ; 0xfa92f
+ or dx, di ; 09 fa ; 0xfa931
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfa933
+ mov di, ax ; 89 c7 ; 0xfa936
+ mov bx, dx ; 89 d3 ; 0xfa938
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfa93a
+ int 01ah ; cd 1a ; 0xfa93d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa93f pciutil.c:217
+ xor ah, ah ; 30 e4 ; 0xfa942
+ mov di, ax ; 89 c7 ; 0xfa944
+ inc di ; 47 ; 0xfa946
+ inc di ; 47 ; 0xfa947
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xfa948
+ mov bx, dx ; 89 d3 ; 0xfa94b
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfa94d
+ int 01ah ; cd 1a ; 0xfa950
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa952 pciutil.c:219
+ pop di ; 5f ; 0xfa955
+ pop cx ; 59 ; 0xfa956
+ pop bp ; 5d ; 0xfa957
+ retn 00004h ; c2 04 00 ; 0xfa958
+ ; disGetNextSymbol 0xfa95b LB 0x47d -> off=0x0 cb=000000000000001d uValue=00000000000f935b 'vds_is_present'
+vds_is_present: ; 0xfa95b LB 0x1d
+ push bx ; 53 ; 0xfa95b vds.c:42
+ push bp ; 55 ; 0xfa95c
+ mov bp, sp ; 89 e5 ; 0xfa95d
+ mov bx, strict word 0007bh ; bb 7b 00 ; 0xfa95f vds.c:46
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfa962
+ mov es, ax ; 8e c0 ; 0xfa965
+ test byte [es:bx], 020h ; 26 f6 07 20 ; 0xfa967 vds.c:47
+ je short 0a973h ; 74 06 ; 0xfa96b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa96d
+ pop bp ; 5d ; 0xfa970
+ pop bx ; 5b ; 0xfa971
+ retn ; c3 ; 0xfa972
+ xor ax, ax ; 31 c0 ; 0xfa973
+ pop bp ; 5d ; 0xfa975 vds.c:48
+ pop bx ; 5b ; 0xfa976
+ retn ; c3 ; 0xfa977
+ ; disGetNextSymbol 0xfa978 LB 0x460 -> off=0x0 cb=000000000000001e uValue=00000000000f9378 'vds_real_to_lin'
+vds_real_to_lin: ; 0xfa978 LB 0x1e
+ push bx ; 53 ; 0xfa978 vds.c:77
+ push cx ; 51 ; 0xfa979
+ push bp ; 55 ; 0xfa97a
+ mov bp, sp ; 89 e5 ; 0xfa97b
+ mov bx, ax ; 89 c3 ; 0xfa97d
+ mov ax, dx ; 89 d0 ; 0xfa97f
+ xor dx, dx ; 31 d2 ; 0xfa981 vds.c:79
+ mov cx, strict word 00004h ; b9 04 00 ; 0xfa983
+ sal ax, 1 ; d1 e0 ; 0xfa986
+ rcl dx, 1 ; d1 d2 ; 0xfa988
+ loop 0a986h ; e2 fa ; 0xfa98a
+ xor cx, cx ; 31 c9 ; 0xfa98c
+ add ax, bx ; 01 d8 ; 0xfa98e
+ adc dx, cx ; 11 ca ; 0xfa990
+ pop bp ; 5d ; 0xfa992 vds.c:80
+ pop cx ; 59 ; 0xfa993
+ pop bx ; 5b ; 0xfa994
+ retn ; c3 ; 0xfa995
+ ; disGetNextSymbol 0xfa996 LB 0x442 -> off=0x0 cb=0000000000000077 uValue=00000000000f9396 'vds_build_sg_list'
+vds_build_sg_list: ; 0xfa996 LB 0x77
+ push bp ; 55 ; 0xfa996 vds.c:87
+ mov bp, sp ; 89 e5 ; 0xfa997
+ push si ; 56 ; 0xfa999
+ push di ; 57 ; 0xfa99a
+ mov di, ax ; 89 c7 ; 0xfa99b
+ mov si, dx ; 89 d6 ; 0xfa99d
+ mov ax, bx ; 89 d8 ; 0xfa99f
+ mov dx, cx ; 89 ca ; 0xfa9a1
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfa9a3 vds.c:92
+ mov es, si ; 8e c6 ; 0xfa9a6
+ mov word [es:di], bx ; 26 89 1d ; 0xfa9a8
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xfa9ab
+ mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xfa9ae
+ call 0a978h ; e8 c3 ff ; 0xfa9b2 vds.c:93
+ mov es, si ; 8e c6 ; 0xfa9b5
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfa9b7
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfa9bb
+ mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xfa9bf vds.c:94
+ call 0a95bh ; e8 93 ff ; 0xfa9c5 vds.c:95
+ test ax, ax ; 85 c0 ; 0xfa9c8
+ je short 0a9ddh ; 74 11 ; 0xfa9ca
+ mov es, si ; 8e c6 ; 0xfa9cc vds.c:97
+ mov ax, 08105h ; b8 05 81 ; 0xfa9ce
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfa9d1
+ int 04bh ; cd 4b ; 0xfa9d4
+ jc short 0a9dah ; 72 02 ; 0xfa9d6
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfa9d8
+ cbw ; 98 ; 0xfa9da
+ jmp short 0aa04h ; eb 27 ; 0xfa9db vds.c:98
+ mov es, si ; 8e c6 ; 0xfa9dd vds.c:100
+ mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xfa9df
+ mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xfa9e5 vds.c:101
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xfa9e9
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xfa9ed
+ mov word [es:di+012h], ax ; 26 89 45 12 ; 0xfa9f1
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xfa9f5 vds.c:102
+ mov word [es:di+014h], ax ; 26 89 45 14 ; 0xfa9f8
+ mov ax, bx ; 89 d8 ; 0xfa9fc
+ mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xfa9fe
+ xor ax, bx ; 31 d8 ; 0xfaa02 vds.c:103
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaa04 vds.c:106
+ pop di ; 5f ; 0xfaa07
+ pop si ; 5e ; 0xfaa08
+ pop bp ; 5d ; 0xfaa09
+ retn 00004h ; c2 04 00 ; 0xfaa0a
+ ; disGetNextSymbol 0xfaa0d LB 0x3cb -> off=0x0 cb=000000000000002e uValue=00000000000f940d 'vds_free_sg_list'
+vds_free_sg_list: ; 0xfaa0d LB 0x2e
+ push bp ; 55 ; 0xfaa0d vds.c:112
+ mov bp, sp ; 89 e5 ; 0xfaa0e
+ push bx ; 53 ; 0xfaa10
+ push di ; 57 ; 0xfaa11
+ mov bx, ax ; 89 c3 ; 0xfaa12
+ call 0a95bh ; e8 44 ff ; 0xfaa14 vds.c:116
+ test ax, ax ; 85 c0 ; 0xfaa17
+ je short 0aa2ch ; 74 11 ; 0xfaa19
+ mov di, bx ; 89 df ; 0xfaa1b vds.c:118
+ mov es, dx ; 8e c2 ; 0xfaa1d
+ mov ax, 08106h ; b8 06 81 ; 0xfaa1f
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfaa22
+ int 04bh ; cd 4b ; 0xfaa25
+ jc short 0aa2bh ; 72 02 ; 0xfaa27
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfaa29
+ cbw ; 98 ; 0xfaa2b
+ mov es, dx ; 8e c2 ; 0xfaa2c vds.c:126
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xfaa2e
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaa34 vds.c:128
+ pop di ; 5f ; 0xfaa37
+ pop bx ; 5b ; 0xfaa38
+ pop bp ; 5d ; 0xfaa39
+ retn ; c3 ; 0xfaa3a
+ ; disGetNextSymbol 0xfaa3b LB 0x39d -> off=0x5 cb=0000000000000020 uValue=00000000000f9440 '__U4M'
+ db 000h, 000h, 000h, 000h, 000h
+__U4M: ; 0xfaa40 LB 0x20
+ pushfw ; 9c ; 0xfaa40 __U4M.asm:51
+ push si ; 56 ; 0xfaa41 __U4M.asm:81
+ push di ; 57 ; 0xfaa42 __U4M.asm:82
+ push ax ; 50 ; 0xfaa43 __U4M.asm:95
+ db 08bh, 0fah
+ ; mov di, dx ; 8b fa ; 0xfaa44 __U4M.asm:96
+ mul bx ; f7 e3 ; 0xfaa46 __U4M.asm:99
+ db 08bh, 0f2h
+ ; mov si, dx ; 8b f2 ; 0xfaa48 __U4M.asm:100
+ xchg di, ax ; 97 ; 0xfaa4a __U4M.asm:101
+ mul bx ; f7 e3 ; 0xfaa4b __U4M.asm:104
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xfaa4d __U4M.asm:105
+ pop ax ; 58 ; 0xfaa4f __U4M.asm:108
+ mul cx ; f7 e1 ; 0xfaa50 __U4M.asm:109
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xfaa52 __U4M.asm:110
+ db 08bh, 0d6h
+ ; mov dx, si ; 8b d6 ; 0xfaa54 __U4M.asm:113
+ db 08bh, 0c7h
+ ; mov ax, di ; 8b c7 ; 0xfaa56 __U4M.asm:114
+ pop di ; 5f ; 0xfaa58 __U4M.asm:116
+ pop si ; 5e ; 0xfaa59 __U4M.asm:117
+ popfw ; 9d ; 0xfaa5a __U4M.asm:119
+ retn ; c3 ; 0xfaa5b __U4M.asm:120
+ times 0x4 db 0
+ ; disGetNextSymbol 0xfaa60 LB 0x378 -> off=0x0 cb=0000000000000030 uValue=00000000000f9460 '__U4D'
+__U4D: ; 0xfaa60 LB 0x30
+ pushfw ; 9c ; 0xfaa60 __U4D.asm:59
+ test cx, cx ; 85 c9 ; 0xfaa61 __U4D.asm:94
+ jne short 0aa6dh ; 75 08 ; 0xfaa63 __U4D.asm:95
+ div bx ; f7 f3 ; 0xfaa65 __U4D.asm:97
+ db 08bh, 0dah
+ ; mov bx, dx ; 8b da ; 0xfaa67 __U4D.asm:99
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xfaa69 __U4D.asm:101
+ popfw ; 9d ; 0xfaa6b __U4D.asm:103
+ retn ; c3 ; 0xfaa6c __U4D.asm:104
+ push DS ; 1e ; 0xfaa6d __U4D.asm:108
+ push ES ; 06 ; 0xfaa6e __U4D.asm:109
+ push bp ; 55 ; 0xfaa6f __U4D.asm:116
+ sub sp, strict byte 00004h ; 83 ec 04 ; 0xfaa70 __U4D.asm:117
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfaa73 __U4D.asm:118
+ push SS ; 16 ; 0xfaa75 __U4D.asm:121
+ push bp ; 55 ; 0xfaa76 __U4D.asm:122
+ add bp, strict byte 00004h ; 83 c5 04 ; 0xfaa77 __U4D.asm:123
+ push cx ; 51 ; 0xfaa7a __U4D.asm:126
+ push bx ; 53 ; 0xfaa7b __U4D.asm:127
+ push dx ; 52 ; 0xfaa7c __U4D.asm:130
+ push ax ; 50 ; 0xfaa7d __U4D.asm:131
+ call 0ab4ch ; e8 cb 00 ; 0xfaa7e __U4D.asm:133
+ mov cx, word [bp-002h] ; 8b 4e fe ; 0xfaa81 __U4D.asm:136
+ mov bx, word [bp-004h] ; 8b 5e fc ; 0xfaa84 __U4D.asm:137
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xfaa87 __U4D.asm:141
+ pop bp ; 5d ; 0xfaa89 __U4D.asm:142
+ pop ES ; 07 ; 0xfaa8a __U4D.asm:143
+ pop DS ; 1f ; 0xfaa8b __U4D.asm:144
+ popfw ; 9d ; 0xfaa8c __U4D.asm:146
+ retn ; c3 ; 0xfaa8d __U4D.asm:147
+ times 0x2 db 0
+ ; disGetNextSymbol 0xfaa90 LB 0x348 -> off=0x0 cb=0000000000000010 uValue=00000000000f9490 '__U8RS'
+__U8RS: ; 0xfaa90 LB 0x10
+ test si, si ; 85 f6 ; 0xfaa90 __U8RS.asm:50
+ je short 0aa9fh ; 74 0b ; 0xfaa92 __U8RS.asm:51
+ shr ax, 1 ; d1 e8 ; 0xfaa94 __U8RS.asm:53
+ rcr bx, 1 ; d1 db ; 0xfaa96 __U8RS.asm:54
+ rcr cx, 1 ; d1 d9 ; 0xfaa98 __U8RS.asm:55
+ rcr dx, 1 ; d1 da ; 0xfaa9a __U8RS.asm:56
+ dec si ; 4e ; 0xfaa9c __U8RS.asm:57
+ jne short 0aa94h ; 75 f5 ; 0xfaa9d __U8RS.asm:58
+ retn ; c3 ; 0xfaa9f __U8RS.asm:60
+ ; disGetNextSymbol 0xfaaa0 LB 0x338 -> off=0x0 cb=0000000000000010 uValue=00000000000f94a0 '__U8LS'
+__U8LS: ; 0xfaaa0 LB 0x10
+ test si, si ; 85 f6 ; 0xfaaa0 __U8LS.asm:50
+ je short 0aaafh ; 74 0b ; 0xfaaa2 __U8LS.asm:51
+ sal dx, 1 ; d1 e2 ; 0xfaaa4 __U8LS.asm:53
+ rcl cx, 1 ; d1 d1 ; 0xfaaa6 __U8LS.asm:54
+ rcl bx, 1 ; d1 d3 ; 0xfaaa8 __U8LS.asm:55
+ rcl ax, 1 ; d1 d0 ; 0xfaaaa __U8LS.asm:56
+ dec si ; 4e ; 0xfaaac __U8LS.asm:57
+ jne short 0aaa4h ; 75 f5 ; 0xfaaad __U8LS.asm:58
+ retn ; c3 ; 0xfaaaf __U8LS.asm:60
+ ; disGetNextSymbol 0xfaab0 LB 0x328 -> off=0x0 cb=0000000000000010 uValue=00000000000f94b0 '_fmemset_'
+_fmemset_: ; 0xfaab0 LB 0x10
+ push di ; 57 ; 0xfaab0 fmemset.asm:52
+ mov es, dx ; 8e c2 ; 0xfaab1 fmemset.asm:54
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfaab3 fmemset.asm:55
+ xchg al, bl ; 86 d8 ; 0xfaab5 fmemset.asm:56
+ rep stosb ; f3 aa ; 0xfaab7 fmemset.asm:57
+ xchg al, bl ; 86 d8 ; 0xfaab9 fmemset.asm:58
+ pop di ; 5f ; 0xfaabb fmemset.asm:60
+ retn ; c3 ; 0xfaabc fmemset.asm:61
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfaac0 LB 0x318 -> off=0x0 cb=000000000000003a uValue=00000000000f94c0 '_fmemcpy_'
+_fmemcpy_: ; 0xfaac0 LB 0x3a
+ push bp ; 55 ; 0xfaac0 fmemcpy.asm:52
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfaac1 fmemcpy.asm:53
+ push di ; 57 ; 0xfaac3 fmemcpy.asm:54
+ push DS ; 1e ; 0xfaac4 fmemcpy.asm:55
+ push si ; 56 ; 0xfaac5 fmemcpy.asm:56
+ mov es, dx ; 8e c2 ; 0xfaac6 fmemcpy.asm:58
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfaac8 fmemcpy.asm:59
+ mov ds, cx ; 8e d9 ; 0xfaaca fmemcpy.asm:60
+ db 08bh, 0f3h
+ ; mov si, bx ; 8b f3 ; 0xfaacc fmemcpy.asm:61
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfaace fmemcpy.asm:62
+ rep movsb ; f3 a4 ; 0xfaad1 fmemcpy.asm:63
+ pop si ; 5e ; 0xfaad3 fmemcpy.asm:65
+ pop DS ; 1f ; 0xfaad4 fmemcpy.asm:66
+ pop di ; 5f ; 0xfaad5 fmemcpy.asm:67
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xfaad6 fmemcpy.asm:68
+ pop bp ; 5d ; 0xfaad8 fmemcpy.asm:69
+ retn ; c3 ; 0xfaad9 fmemcpy.asm:70
+ add byte [bx+si], al ; 00 00 ; 0xfaada
+ add byte [bx+si], al ; 00 00 ; 0xfaadc
+ add byte [bx+si], al ; 00 00 ; 0xfaade
+ adc byte [bp+di-054eeh], ch ; 10 ab 12 ab ; 0xfaae0
+ sbb ax, 01dabh ; 1d ab 1d ; 0xfaae4
+ stosw ; ab ; 0xfaae7
+ sbb ax, 01fabh ; 1d ab 1f ; 0xfaae8
+ stosw ; ab ; 0xfaaeb
+ pop DS ; 1f ; 0xfaaec
+ stosw ; ab ; 0xfaaed
+ and word [bp+di-054dbh], bp ; 21 ab 25 ab ; 0xfaaee
+ and ax, 027abh ; 25 ab 27 ; 0xfaaf2
+ stosw ; ab ; 0xfaaf5
+ sub AL, strict byte 0abh ; 2c ab ; 0xfaaf6
+ db 02eh, 0abh
+ ; cs stosw ; 2e ab ; 0xfaaf8
+ ; disGetNextSymbol 0xfaafa LB 0x2de -> off=0x0 cb=0000000000000041 uValue=00000000000094fa 'apm_worker'
+apm_worker: ; 0xfaafa LB 0x41
+ sti ; fb ; 0xfaafa apm_pm.asm:66
+ push ax ; 50 ; 0xfaafb apm_pm.asm:68
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfaafc apm_pm.asm:69
+ sub AL, strict byte 004h ; 2c 04 ; 0xfaafe apm_pm.asm:70
+ db 08bh, 0e8h
+ ; mov bp, ax ; 8b e8 ; 0xfab00 apm_pm.asm:71
+ sal bp, 1 ; d1 e5 ; 0xfab02 apm_pm.asm:72
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfab04 apm_pm.asm:73
+ pop ax ; 58 ; 0xfab06 apm_pm.asm:74
+ mov AH, strict byte 053h ; b4 53 ; 0xfab07 apm_pm.asm:75
+ jnc short 0ab37h ; 73 2c ; 0xfab09 apm_pm.asm:76
+ jmp word [cs:bp-05520h] ; 2e ff a6 e0 aa ; 0xfab0b apm_pm.asm:78
+ jmp short 0ab35h ; eb 23 ; 0xfab10 apm_pm.asm:81
+ push CS ; 0e ; 0xfab12 apm_pm.asm:90
+ pop ax ; 58 ; 0xfab13 apm_pm.asm:91
+ test ax, strict word 00003h ; a9 03 00 ; 0xfab14 apm_pm.asm:92
+ jne short 0ab35h ; 75 1c ; 0xfab17 apm_pm.asm:93
+ sti ; fb ; 0xfab19 apm_pm.asm:94
+ hlt ; f4 ; 0xfab1a apm_pm.asm:95
+ jmp short 0ab35h ; eb 18 ; 0xfab1b apm_pm.asm:96
+ jmp short 0ab35h ; eb 16 ; 0xfab1d apm_pm.asm:105
+ jmp short 0ab37h ; eb 16 ; 0xfab1f apm_pm.asm:111
+ mov AH, strict byte 080h ; b4 80 ; 0xfab21 apm_pm.asm:114
+ jmp short 0ab39h ; eb 14 ; 0xfab23 apm_pm.asm:115
+ jmp short 0ab37h ; eb 10 ; 0xfab25 apm_pm.asm:120
+ mov ax, 00102h ; b8 02 01 ; 0xfab27 apm_pm.asm:123
+ jmp short 0ab35h ; eb 09 ; 0xfab2a apm_pm.asm:124
+ jmp short 0ab35h ; eb 07 ; 0xfab2c apm_pm.asm:128
+ mov BL, strict byte 000h ; b3 00 ; 0xfab2e apm_pm.asm:131
+ mov cx, strict word 00000h ; b9 00 00 ; 0xfab30 apm_pm.asm:132
+ jmp short 0ab35h ; eb 00 ; 0xfab33 apm_pm.asm:133
+ clc ; f8 ; 0xfab35 apm_pm.asm:136
+ retn ; c3 ; 0xfab36 apm_pm.asm:137
+ mov AH, strict byte 009h ; b4 09 ; 0xfab37 apm_pm.asm:140
+ stc ; f9 ; 0xfab39 apm_pm.asm:143
+ retn ; c3 ; 0xfab3a apm_pm.asm:144
+ ; disGetNextSymbol 0xfab3b LB 0x29d -> off=0x0 cb=0000000000000011 uValue=00000000000f953b 'apm_pm16_entry'
+apm_pm16_entry: ; 0xfab3b LB 0x11
+ mov AH, strict byte 002h ; b4 02 ; 0xfab3b apm_pm.asm:156
+ push DS ; 1e ; 0xfab3d apm_pm.asm:162
+ push bp ; 55 ; 0xfab3e apm_pm.asm:163
+ push CS ; 0e ; 0xfab3f apm_pm.asm:165
+ pop bp ; 5d ; 0xfab40 apm_pm.asm:166
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xfab41 apm_pm.asm:167
+ mov ds, bp ; 8e dd ; 0xfab44 apm_pm.asm:168
+ call 0aafah ; e8 b1 ff ; 0xfab46 apm_pm.asm:170
+ pop bp ; 5d ; 0xfab49 apm_pm.asm:172
+ pop DS ; 1f ; 0xfab4a apm_pm.asm:173
+ retf ; cb ; 0xfab4b apm_pm.asm:175
+ ; disGetNextSymbol 0xfab4c LB 0x28c -> off=0x0 cb=0000000000000265 uValue=00000000000f954c 'DoUInt32Div'
+DoUInt32Div: ; 0xfab4c LB 0x265
+ push bp ; 55 ; 0xfab4c DoUInt32Div.c:37
+ mov bp, sp ; 89 e5 ; 0xfab4d
+ push si ; 56 ; 0xfab4f
+ push di ; 57 ; 0xfab50
+ sub sp, strict byte 00018h ; 83 ec 18 ; 0xfab51
+ lds bx, [bp+00ch] ; c5 5e 0c ; 0xfab54
+ lea si, [bp+004h] ; 8d 76 04 ; 0xfab57 DoUInt32Div.c:982
+ mov word [bp-010h], si ; 89 76 f0 ; 0xfab5a
+ mov [bp-00eh], ss ; 8c 56 f2 ; 0xfab5d
+ lea di, [bp+008h] ; 8d 7e 08 ; 0xfab60
+ mov [bp-008h], ss ; 8c 56 f8 ; 0xfab63
+ lea si, [bp-01ch] ; 8d 76 e4 ; 0xfab66
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xfab69
+ mov [bp-00ah], ss ; 8c 56 f6 ; 0xfab6c
+ mov si, bx ; 89 de ; 0xfab6f
+ mov [bp-006h], ds ; 8c 5e fa ; 0xfab71
+ cmp word [bx+002h], strict byte 00000h ; 83 7f 02 00 ; 0xfab74 DoUInt32Div.c:990
+ jne short 0ab9ch ; 75 22 ; 0xfab78
+ mov ax, word [bx] ; 8b 07 ; 0xfab7a DoUInt32Div.c:992
+ test ax, ax ; 85 c0 ; 0xfab7c
+ je short 0ab99h ; 74 19 ; 0xfab7e
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xfab80 DoUInt32Div.c:995
+ jne short 0ab9ch ; 75 17 ; 0xfab83
+ xor ax, ax ; 31 c0 ; 0xfab85 DoUInt32Div.c:77
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xfab87
+ mov word [bp+008h], ax ; 89 46 08 ; 0xfab8a DoUInt32Div.c:78
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfab8d DoUInt32Div.c:998
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfab90
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xfab93
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfab96
+ jmp near 0ada4h ; e9 08 02 ; 0xfab99
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfab9c DoUInt32Div.c:736
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfab9f
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfaba2
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfaba5
+ je short 0abc2h ; 74 18 ; 0xfaba8
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfabaa DoUInt32Div.c:737
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfabad
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfabb0
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfabb3
+ jbe short 0abbdh ; 76 05 ; 0xfabb6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfabb8
+ jmp short 0abe3h ; eb 26 ; 0xfabbb
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfabbd
+ jmp short 0abe3h ; eb 21 ; 0xfabc0
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfabc2 DoUInt32Div.c:738
+ mov ax, word [bx] ; 8b 07 ; 0xfabc5
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfabc7
+ cmp ax, word [si] ; 3b 04 ; 0xfabca
+ je short 0abe1h ; 74 13 ; 0xfabcc
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfabce DoUInt32Div.c:739
+ mov ax, word [bx] ; 8b 07 ; 0xfabd1
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfabd3
+ cmp ax, word [si] ; 3b 04 ; 0xfabd6
+ jbe short 0abdch ; 76 02 ; 0xfabd8
+ jmp short 0abb8h ; eb dc ; 0xfabda
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfabdc
+ jmp short 0abe3h ; eb 02 ; 0xfabdf
+ xor ax, ax ; 31 c0 ; 0xfabe1 DoUInt32Div.c:740
+ test ax, ax ; 85 c0 ; 0xfabe3 DoUInt32Div.c:1006
+ jnl short 0ac05h ; 7d 1e ; 0xfabe5
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfabe7 DoUInt32Div.c:1008
+ mov ax, word [bx] ; 8b 07 ; 0xfabea
+ mov dx, word [bx+002h] ; 8b 57 02 ; 0xfabec
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfabef
+ mov word [di], ax ; 89 05 ; 0xfabf2
+ mov word [di+002h], dx ; 89 55 02 ; 0xfabf4
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfabf7 DoUInt32Div.c:77
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfabfa
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfabff DoUInt32Div.c:78
+ jmp short 0ab99h ; eb 94 ; 0xfac03 DoUInt32Div.c:1013
+ jne short 0ac1ch ; 75 15 ; 0xfac05
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfac07 DoUInt32Div.c:77
+ mov word [di+002h], ax ; 89 45 02 ; 0xfac0a
+ mov word [di], ax ; 89 05 ; 0xfac0d DoUInt32Div.c:78
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfac0f DoUInt32Div.c:407
+ mov word [bx], strict word 00001h ; c7 07 01 00 ; 0xfac12
+ mov word [bx+002h], ax ; 89 47 02 ; 0xfac16 DoUInt32Div.c:408
+ jmp near 0ada4h ; e9 88 01 ; 0xfac19 DoUInt32Div.c:1018
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfac1c DoUInt32Div.c:964
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfac1f
+ test ax, ax ; 85 c0 ; 0xfac22
+ je short 0ac37h ; 74 11 ; 0xfac24
+ push ax ; 50 ; 0xfac26 DoUInt32Div.c:965
+ mov ax, 0f000h ; b8 00 f0 ; 0xfac27
+ mov ds, ax ; 8e d8 ; 0xfac2a
+ call 0adc0h ; e8 91 01 ; 0xfac2c
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfac2f
+ add ax, strict word 00010h ; 05 10 00 ; 0xfac32
+ jmp short 0ac44h ; eb 0d ; 0xfac35 DoUInt32Div.c:966
+ push word [bx] ; ff 37 ; 0xfac37 DoUInt32Div.c:967
+ mov ax, 0f000h ; b8 00 f0 ; 0xfac39
+ mov ds, ax ; 8e d8 ; 0xfac3c
+ call 0adc0h ; e8 7f 01 ; 0xfac3e
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfac41
+ mov word [bp-014h], ax ; 89 46 ec ; 0xfac44 DoUInt32Div.c:969
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfac47 DoUInt32Div.c:964
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfac4a
+ test ax, ax ; 85 c0 ; 0xfac4d
+ je short 0ac62h ; 74 11 ; 0xfac4f
+ push ax ; 50 ; 0xfac51 DoUInt32Div.c:965
+ mov ax, 0f000h ; b8 00 f0 ; 0xfac52
+ mov ds, ax ; 8e d8 ; 0xfac55
+ call 0adc0h ; e8 66 01 ; 0xfac57
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfac5a
+ add ax, strict word 00010h ; 05 10 00 ; 0xfac5d
+ jmp short 0ac6fh ; eb 0d ; 0xfac60 DoUInt32Div.c:966
+ push word [si] ; ff 34 ; 0xfac62 DoUInt32Div.c:967
+ mov ax, 0f000h ; b8 00 f0 ; 0xfac64
+ mov ds, ax ; 8e d8 ; 0xfac67
+ call 0adc0h ; e8 54 01 ; 0xfac69
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfac6c
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfac6f DoUInt32Div.c:969
+ sub dx, ax ; 29 c2 ; 0xfac72
+ mov word [bp-012h], dx ; 89 56 ee ; 0xfac74
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfac77 DoUInt32Div.c:1024
+ mov ax, word [si] ; 8b 04 ; 0xfac7a
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfac7c
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfac7f
+ mov word [bp-016h], ax ; 89 46 ea ; 0xfac82
+ test dx, dx ; 85 d2 ; 0xfac85 DoUInt32Div.c:1025
+ je short 0acdfh ; 74 56 ; 0xfac87
+ mov cx, dx ; 89 d1 ; 0xfac89 DoUInt32Div.c:290
+ xor ch, dh ; 30 f5 ; 0xfac8b
+ and cl, 01fh ; 80 e1 1f ; 0xfac8d
+ mov ax, word [si] ; 8b 04 ; 0xfac90 DoUInt32Div.c:292
+ mov dx, word [si+002h] ; 8b 54 02 ; 0xfac92
+ jcxz 0ac9dh ; e3 06 ; 0xfac95
+ sal ax, 1 ; d1 e0 ; 0xfac97
+ rcl dx, 1 ; d1 d2 ; 0xfac99
+ loop 0ac97h ; e2 fa ; 0xfac9b
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfac9d
+ mov word [bp-016h], dx ; 89 56 ea ; 0xfaca0
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfaca3 DoUInt32Div.c:773
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfaca6
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfaca9
+ jnbe short 0acbdh ; 77 0f ; 0xfacac
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfacae
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfacb1
+ jne short 0acc1h ; 75 0b ; 0xfacb4
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfacb6
+ cmp ax, word [bx] ; 3b 07 ; 0xfacb9
+ jbe short 0acc1h ; 76 04 ; 0xfacbb
+ mov AL, strict byte 001h ; b0 01 ; 0xfacbd
+ jmp short 0acc3h ; eb 02 ; 0xfacbf
+ xor al, al ; 30 c0 ; 0xfacc1
+ test al, al ; 84 c0 ; 0xfacc3 DoUInt32Div.c:779
+ je short 0aceah ; 74 23 ; 0xfacc5
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xfacc7 DoUInt32Div.c:690
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfacca
+ dec word [bp-012h] ; ff 4e ee ; 0xfaccd
+ jmp short 0aceah ; eb 18 ; 0xfacd0
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xfacd2 DoUInt32Div.c:642
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xfacd5
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xfacd8
+ loop 0acd5h ; e2 f8 ; 0xfacdb
+ jmp short 0accdh ; eb ee ; 0xfacdd DoUInt32Div.c:657
+ mov ax, word [si] ; 8b 04 ; 0xfacdf DoUInt32Div.c:1035
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xface1
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xface4
+ mov word [bp-016h], ax ; 89 46 ea ; 0xface7
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfacea DoUInt32Div.c:77
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfaced
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfacf2 DoUInt32Div.c:78
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfacf6 DoUInt32Div.c:1038
+ mov dx, word [bx] ; 8b 17 ; 0xfacf9
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfacfb
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfacfe
+ mov word [di], dx ; 89 15 ; 0xfad01
+ mov word [di+002h], ax ; 89 45 02 ; 0xfad03
+ mov dx, word [di] ; 8b 15 ; 0xfad06 DoUInt32Div.c:792
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfad08
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfad0b
+ jnbe short 0ad16h ; 77 06 ; 0xfad0e
+ jne short 0ad1ah ; 75 08 ; 0xfad10
+ cmp dx, word [si] ; 3b 14 ; 0xfad12
+ jc short 0ad1ah ; 72 04 ; 0xfad14
+ mov AL, strict byte 001h ; b0 01 ; 0xfad16
+ jmp short 0ad1ch ; eb 02 ; 0xfad18
+ xor al, al ; 30 c0 ; 0xfad1a
+ test al, al ; 84 c0 ; 0xfad1c DoUInt32Div.c:798
+ je short 0ad81h ; 74 61 ; 0xfad1e
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfad20 DoUInt32Div.c:792
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xfad23
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfad26
+ jnbe short 0ad37h ; 77 0c ; 0xfad29
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfad2b
+ jne short 0ad3bh ; 75 0b ; 0xfad2e
+ mov ax, word [di] ; 8b 05 ; 0xfad30
+ cmp ax, word [bp-018h] ; 3b 46 e8 ; 0xfad32
+ jc short 0ad3bh ; 72 04 ; 0xfad35
+ mov AL, strict byte 001h ; b0 01 ; 0xfad37
+ jmp short 0ad3dh ; eb 02 ; 0xfad39
+ xor al, al ; 30 c0 ; 0xfad3b
+ test al, al ; 84 c0 ; 0xfad3d DoUInt32Div.c:798
+ je short 0ad67h ; 74 26 ; 0xfad3f
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfad41 DoUInt32Div.c:461
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfad44
+ sub word [di], ax ; 29 05 ; 0xfad47
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfad49
+ sbb word [di+002h], ax ; 19 45 02 ; 0xfad4c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfad4f DoUInt32Div.c:596
+ xor dx, dx ; 31 d2 ; 0xfad52
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xfad54
+ jcxz 0ad5fh ; e3 06 ; 0xfad57
+ sal ax, 1 ; d1 e0 ; 0xfad59
+ rcl dx, 1 ; d1 d2 ; 0xfad5b
+ loop 0ad59h ; e2 fa ; 0xfad5d
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfad5f
+ or word [bx], ax ; 09 07 ; 0xfad62
+ or word [bx+002h], dx ; 09 57 02 ; 0xfad64
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfad67 DoUInt32Div.c:754
+ mov dx, word [di] ; 8b 15 ; 0xfad6a
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xfad6c
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfad6f
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfad72
+ jc short 0ad7dh ; 72 06 ; 0xfad75
+ jne short 0ad83h ; 75 0a ; 0xfad77
+ cmp dx, word [si] ; 3b 14 ; 0xfad79
+ jnc short 0ad83h ; 73 06 ; 0xfad7b
+ mov AL, strict byte 001h ; b0 01 ; 0xfad7d
+ jmp short 0ad85h ; eb 04 ; 0xfad7f
+ jmp short 0ada4h ; eb 21 ; 0xfad81
+ xor al, al ; 30 c0 ; 0xfad83
+ test al, al ; 84 c0 ; 0xfad85 DoUInt32Div.c:760
+ je short 0ad98h ; 74 0f ; 0xfad87
+ jmp short 0ada4h ; eb 19 ; 0xfad89 DoUInt32Div.c:1053
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xfad8b DoUInt32Div.c:690
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xfad8e
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xfad91
+ loop 0ad8eh ; e2 f8 ; 0xfad94
+ jmp short 0ad9eh ; eb 06 ; 0xfad96 DoUInt32Div.c:657
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xfad98 DoUInt32Div.c:663
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfad9b
+ dec word [bp-012h] ; ff 4e ee ; 0xfad9e DoUInt32Div.c:1055
+ jmp near 0ad20h ; e9 7c ff ; 0xfada1 DoUInt32Div.c:1056
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfada4 DoUInt32Div.c:41
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xfada7
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfadaa DoUInt32Div.c:42
+ pop di ; 5f ; 0xfadad
+ pop si ; 5e ; 0xfadae
+ pop bp ; 5d ; 0xfadaf
+ retn ; c3 ; 0xfadb0
+ ; disGetNextSymbol 0xfadb1 LB 0x27 -> off=0xf cb=0000000000000018 uValue=00000000000f97c0 '_ASMBitLastSetU16'
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+_ASMBitLastSetU16: ; 0xfadc0 LB 0x18
+ push bp ; 55 ; 0xfadc0 ASMBitLastSetU16.asm:53
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfadc1 ASMBitLastSetU16.asm:54
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfadc3 ASMBitLastSetU16.asm:56
+ test cx, cx ; 85 c9 ; 0xfadc6 ASMBitLastSetU16.asm:57
+ je short 0add4h ; 74 0a ; 0xfadc8 ASMBitLastSetU16.asm:58
+ mov ax, strict word 00010h ; b8 10 00 ; 0xfadca ASMBitLastSetU16.asm:60
+ sal cx, 1 ; d1 e1 ; 0xfadcd ASMBitLastSetU16.asm:62
+ jc short 0add6h ; 72 05 ; 0xfadcf ASMBitLastSetU16.asm:63
+ dec ax ; 48 ; 0xfadd1 ASMBitLastSetU16.asm:64
+ jmp short 0adcdh ; eb f9 ; 0xfadd2 ASMBitLastSetU16.asm:65
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfadd4 ASMBitLastSetU16.asm:68
+ pop bp ; 5d ; 0xfadd6 ASMBitLastSetU16.asm:70
+ retn ; c3 ; 0xfadd7 ASMBitLastSetU16.asm:71
+
+ ; Padding 0x2c28 bytes at 0xfadd8
+ times 11304 db 0
+
+section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3a6 class=CODE group=AUTO
+ ; disGetNextSymbol 0xfda00 LB 0x3a6 -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service'
+bios32_service: ; 0xfda00 LB 0x26
+ pushfw ; 9c ; 0xfda00 pcibio32.asm:62
+ cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:64
+ jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:65
+ cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:67
+ inc bx ; 43 ; 0xfda09
+ dec cx ; 49 ; 0xfda0a
+ mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:68
+ jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:69
+ mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:71
+ 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:73
+ add byte [bx+si], al ; 00 00 ; 0xfda1c
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:74
+ popfw ; 9d ; 0xfda20 pcibio32.asm:76
+ retf ; cb ; 0xfda21 pcibio32.asm:77
+ mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:80
+ jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:81
+ ; disGetNextSymbol 0xfda26 LB 0x380 -> off=0x0 cb=000000000000000d uValue=00000000000f0026 'pcibios32_entry'
+pcibios32_entry: ; 0xfda26 LB 0xd
+ pushfw ; 9c ; 0xfda26 pcibio32.asm:90
+ cld ; fc ; 0xfda27 pcibio32.asm:91
+ push ES ; 06 ; 0xfda28 pcibio32.asm:93
+ pushaw ; 60 ; 0xfda29 pcibio32.asm:94
+ call 0db52h ; e8 25 01 ; 0xfda2a pcibio32.asm:95
+ add byte [bx+si], al ; 00 00 ; 0xfda2d
+ popaw ; 61 ; 0xfda2f pcibio32.asm:96
+ pop ES ; 07 ; 0xfda30 pcibio32.asm:97
+ popfw ; 9d ; 0xfda31 pcibio32.asm:99
+ retf ; cb ; 0xfda32 pcibio32.asm:100
+ ; disGetNextSymbol 0xfda33 LB 0x373 -> off=0x0 cb=0000000000000022 uValue=00000000000f0033 'pci32_select_reg_'
+pci32_select_reg_: ; 0xfda33 LB 0x22
+ push bp ; 55 ; 0xfda33 pci32.c:198
+ mov bp, sp ; 89 e5 ; 0xfda34
+ push bx ; 53 ; 0xfda36
+ and dl, 0fch ; 80 e2 fc ; 0xfda37 pci32.c:200
+ 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:201
+ pop bx ; 5b ; 0xfda52
+ pop bp ; 5d ; 0xfda53
+ retn ; c3 ; 0xfda54
+ ; disGetNextSymbol 0xfda55 LB 0x351 -> off=0x0 cb=00000000000000ff uValue=00000000000f0055 'pci32_find_device_'
+pci32_find_device_: ; 0xfda55 LB 0xff
+ push bp ; 55 ; 0xfda55 pci32.c:233
+ mov bp, sp ; 89 e5 ; 0xfda56
+ push si ; 56 ; 0xfda58
+ push di ; 57 ; 0xfda59
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda5a
+ push ax ; 50 ; 0xfda5d
+ mov si, dx ; 89 d6 ; 0xfda5e
+ mov di, bx ; 89 df ; 0xfda60
+ mov word [di-01ch], cx ; 89 4d e4 ; 0xfda62
+ test bx, bx ; 85 db ; 0xfda65 pci32.c:243
+ xor bx, bx ; 31 db ; 0xfda67 pci32.c:250
+ xor cl, cl ; 30 c9 ; 0xfda69 pci32.c:251
+ test bl, 007h ; f6 c3 07 ; 0xfda6b pci32.c:261
+ jne short 0daaah ; 75 3a ; 0xfda6e
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfda70 pci32.c:262
+ 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:263
+ 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-00ch], al ; 88 45 f4 ; 0xfda85
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfda88 pci32.c:264
+ jne short 0da94h ; 75 08 ; 0xfda8a
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfda8c pci32.c:265
+ jmp near 0db2ah ; e9 98 00 ; 0xfda8f pci32.c:266
+ add byte [bx+si], al ; 00 00 ; 0xfda92
+ test byte [di-00ch], 080h ; f6 45 f4 80 ; 0xfda94 pci32.c:268
+ je short 0daa3h ; 74 09 ; 0xfda98
+ mov word [di-010h], strict word 00001h ; c7 45 f0 01 00 ; 0xfda9a pci32.c:269
+ add byte [bx+si], al ; 00 00 ; 0xfda9f
+ jmp short 0daaah ; eb 07 ; 0xfdaa1 pci32.c:270
+ mov word [di-010h], strict word 00008h ; c7 45 f0 08 00 ; 0xfdaa3 pci32.c:271
+ add byte [bx+si], al ; 00 00 ; 0xfdaa8
+ mov al, byte [di-00ch] ; 8a 45 f4 ; 0xfdaaa pci32.c:282
+ and AL, strict byte 007h ; 24 07 ; 0xfdaad
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfdaaf
+ jne short 0dad7h ; 75 24 ; 0xfdab1
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdab3
+ mov dx, ax ; 89 c2 ; 0xfdab6
+ sar dx, 008h ; c1 fa 08 ; 0xfdab8
+ test dx, dx ; 85 d2 ; 0xfdabb
+ jne short 0dad7h ; 75 18 ; 0xfdabd
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdabf pci32.c:284
+ add byte [bx+si], al ; 00 00 ; 0xfdac2
+ call 0da31h ; e8 6a ff ; 0xfdac4
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfeh ; ba fe 0c ; 0xfdac9 pci32.c:285
+ add byte [bx+si], al ; 00 00 ; 0xfdacc
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdace
+ in AL, DX ; ec ; 0xfdad0
+ cmp al, cl ; 38 c8 ; 0xfdad1 pci32.c:286
+ jbe short 0dad7h ; 76 02 ; 0xfdad3
+ mov cl, al ; 88 c1 ; 0xfdad5 pci32.c:287
+ test di, di ; 85 ff ; 0xfdad7 pci32.c:291
+ je short 0dae2h ; 74 07 ; 0xfdad9
+ mov ax, strict word 00008h ; b8 08 00 ; 0xfdadb
+ add byte [bx+si], al ; 00 00 ; 0xfdade
+ jmp short 0dae4h ; eb 02 ; 0xfdae0
+ xor ax, ax ; 31 c0 ; 0xfdae2
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdae4
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdae7
+ call 0da31h ; e8 44 ff ; 0xfdaea
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfch ; ba fc 0c ; 0xfdaef pci32.c:292
+ add byte [bx+si], al ; 00 00 ; 0xfdaf2
+ in ax, DX ; ed ; 0xfdaf4
+ mov word [di-014h], ax ; 89 45 ec ; 0xfdaf5
+ mov word [di-018h], strict word 00000h ; c7 45 e8 00 00 ; 0xfdaf8 pci32.c:293
+ add byte [bx+si], al ; 00 00 ; 0xfdafd
+ test di, di ; 85 ff ; 0xfdaff pci32.c:296
+ je short 0db14h ; 74 11 ; 0xfdb01
+ cmp word [di-01ch], strict byte 00000h ; 83 7d e4 00 ; 0xfdb03 pci32.c:297
+ je short 0db0eh ; 74 05 ; 0xfdb07
+ shr ax, 010h ; c1 e8 10 ; 0xfdb09 pci32.c:298
+ jmp short 0db11h ; eb 03 ; 0xfdb0c pci32.c:299
+ shr ax, 008h ; c1 e8 08 ; 0xfdb0e pci32.c:300
+ mov word [di-014h], ax ; 89 45 ec ; 0xfdb11
+ mov ax, word [di-014h] ; 8b 45 ec ; 0xfdb14 pci32.c:307
+ cmp ax, word [di-020h] ; 3b 45 e0 ; 0xfdb17
+ je short 0db22h ; 74 06 ; 0xfdb1a
+ cmp word [di-018h], strict byte 00000h ; 83 7d e8 00 ; 0xfdb1c pci32.c:308
+ je short 0db29h ; 74 07 ; 0xfdb20
+ dec si ; 4e ; 0xfdb22
+ cmp esi, strict byte 0ffffffffh ; 66 83 fe ff ; 0xfdb23
+ je short 0db3dh ; 74 14 ; 0xfdb27
+ add bx, word [di-010h] ; 03 5d f0 ; 0xfdb29 pci32.c:316
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb2c pci32.c:317
+ sar ax, 008h ; c1 f8 08 ; 0xfdb2f
+ movzx dx, cl ; 0f b6 d1 ; 0xfdb32
+ cmp ax, dx ; 39 d0 ; 0xfdb35
+ jle near 0da69h ; 0f 8e 2e ff ; 0xfdb37
+ db 0ffh
+ jmp word [bp-07dh] ; ff 66 83 ; 0xfdb3c
+ db 0feh
+ push word [di+005h] ; ff 75 05 ; 0xfdb40
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb43
+ jmp short 0db4dh ; eb 05 ; 0xfdb46
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb48
+ add byte [bx+si], al ; 00 00 ; 0xfdb4b
+ lea sp, [di-008h] ; 8d 65 f8 ; 0xfdb4d pci32.c:324
+ pop di ; 5f ; 0xfdb50
+ pop si ; 5e ; 0xfdb51
+ pop bp ; 5d ; 0xfdb52
+ retn ; c3 ; 0xfdb53
+ ; disGetNextSymbol 0xfdb54 LB 0x252 -> off=0x0 cb=0000000000000252 uValue=00000000000f0154 '_pci32_function'
+_pci32_function: ; 0xfdb54 LB 0x252
+ push bp ; 55 ; 0xfdb54 pci32.c:326
+ mov bp, sp ; 89 e5 ; 0xfdb55
+ push bx ; 53 ; 0xfdb57
+ push si ; 56 ; 0xfdb58
+ push di ; 57 ; 0xfdb59
+ push ax ; 50 ; 0xfdb5a
+ and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb5b pci32.c:333
+ sub AL, strict byte 0feh ; 2c fe ; 0xfdb63
+ inc word [bx+si] ; ff 00 ; 0xfdb65
+ add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb67
+ xor ah, ah ; 30 e4 ; 0xfdb6b
+ cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb6d
+ jbe near 0dc12h ; 0f 86 9b 00 ; 0xfdb73
+ add byte [bx+si], al ; 00 00 ; 0xfdb77
+ cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdb79
+ lodsw ; ad ; 0xfdb7f
+ add word [bx+si], ax ; 01 00 ; 0xfdb80
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb82
+ or byte [bx+si], al ; 08 00 ; 0xfdb85
+ jc near 0dd8ch ; 0f 82 01 02 ; 0xfdb87
+ add byte [bx+si], al ; 00 00 ; 0xfdb8b
+ cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdb8d
+ lodsb ; ac ; 0xfdb93
+ add byte [bx+si], al ; 00 00 ; 0xfdb94
+ add cl, ch ; 00 e9 ; 0xfdb96
+ repne add word [bx+si], ax ; f2 01 00 ; 0xfdb98
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb9b
+ add al, byte [bx+si] ; 02 00 ; 0xfdb9e
+ je short 0dbcah ; 74 28 ; 0xfdba0
+ cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdba2
+ loop 0dbabh ; e2 01 ; 0xfdba8
+ add byte [bx+si], al ; 00 00 ; 0xfdbaa
+ mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdbac pci32.c:338
+ inc bp ; 45 ; 0xfdbb4
+ sbb byte [bx+si], dl ; 18 10 ; 0xfdbb5
+ add dh, byte [bx+di] ; 02 31 ; 0xfdbb7
+ sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbb9
+ and bh, al ; 20 c7 ; 0xfdbbd
+ inc bp ; 45 ; 0xfdbbf
+ sbb AL, strict byte 050h ; 1c 50 ; 0xfdbc0
+ inc bx ; 43 ; 0xfdbc2
+ dec cx ; 49 ; 0xfdbc3
+ and cl, ch ; 20 e9 ; 0xfdbc4
+ aam 001h ; d4 01 ; 0xfdbc6
+ add byte [bx+si], al ; 00 00 ; 0xfdbc8
+ cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbca pci32.c:348
+ jne short 0dbdeh ; 75 0d ; 0xfdbcf
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbd1 pci32.c:349
+ xor ah, ah ; 30 e4 ; 0xfdbd4
+ or ah, 083h ; 80 cc 83 ; 0xfdbd6
+ jmp near 0dd94h ; e9 b8 01 ; 0xfdbd9 pci32.c:350
+ add byte [bx+si], al ; 00 00 ; 0xfdbdc
+ xor cx, cx ; 31 c9 ; 0xfdbde pci32.c:352
+ xor bx, bx ; 31 db ; 0xfdbe0
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdbe2
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdbe6
+ sal ax, 010h ; c1 e0 10 ; 0xfdbea
+ db 00fh, 0b7h, 075h, 01ch
+ ; movzx si, [di+01ch] ; 0f b7 75 1c ; 0xfdbed
+ or ax, si ; 09 f0 ; 0xfdbf1
+ call 0da53h ; e8 5d fe ; 0xfdbf3
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdbf7
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdbfb
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbfe pci32.c:354
+ xor ah, ah ; 30 e4 ; 0xfdc01
+ or ah, 086h ; 80 cc 86 ; 0xfdc03
+ jmp near 0dd94h ; e9 8b 01 ; 0xfdc06
+ add byte [bx+si], al ; 00 00 ; 0xfdc09
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc0b pci32.c:355
+ jmp near 0dd9ch ; e9 8a 01 ; 0xfdc0f pci32.c:360
+ add byte [bx+si], al ; 00 00 ; 0xfdc12
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc14 pci32.c:362
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc18
+ xor cx, cx ; 31 c9 ; 0xfdc1b
+ mov bx, strict word 00001h ; bb 01 00 ; 0xfdc1d
+ add byte [bx+si], al ; 00 00 ; 0xfdc20
+ call 0da53h ; e8 2e fe ; 0xfdc22
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdc26
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdc2a
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc2d pci32.c:364
+ xor ah, ah ; 30 e4 ; 0xfdc30
+ or ah, 086h ; 80 cc 86 ; 0xfdc32
+ jmp near 0dd94h ; e9 5c 01 ; 0xfdc35 pci32.c:365
+ add byte [bx+si], al ; 00 00 ; 0xfdc38
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc3a pci32.c:367
+ jmp near 0dd9ch ; e9 5b 01 ; 0xfdc3e pci32.c:369
+ add byte [bx+si], al ; 00 00 ; 0xfdc41
+ cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc43 pci32.c:376
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc4b pci32.c:377
+ xor ah, ah ; 30 e4 ; 0xfdc4e
+ or ah, 087h ; 80 cc 87 ; 0xfdc50
+ jmp near 0dd94h ; e9 3e 01 ; 0xfdc53 pci32.c:378
+ add byte [bx+si], al ; 00 00 ; 0xfdc56
+ db 00fh, 0b7h, 055h, 008h
+ ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc58 pci32.c:380
+ db 00fh, 0b7h, 045h, 018h
+ ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc5c
+ call 0da31h ; e8 ce fd ; 0xfdc60
+ db 0ffh
+ dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc64
+ xor ah, ah ; 30 e4 ; 0xfdc68
+ cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc6a
+ jbe short 0dce1h ; 76 6f ; 0xfdc70
+ cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdc72
+ test ax, strict word 00000h ; a9 00 00 ; 0xfdc78
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdc7b
+ or AL, strict byte 000h ; 0c 00 ; 0xfdc7e
+ je near 0dd07h ; 0f 84 83 00 ; 0xfdc80
+ add byte [bx+si], al ; 00 00 ; 0xfdc84
+ cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdc86
+ jmp near 0dd9ch ; e9 0d 01 ; 0xfdc8c
+ add byte [bx+si], al ; 00 00 ; 0xfdc8f
+ cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdc91
+ cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdc97
+ std ; fd ; 0xfdc9d
+ add byte [bx+si], al ; 00 00 ; 0xfdc9e
+ add byte [bp+di+0205dh], cl ; 00 8b 5d 20 ; 0xfdca0
+ xor bl, bl ; 30 db ; 0xfdca4
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdca6
+ xor ah, ah ; 30 e4 ; 0xfdca9
+ and AL, strict byte 003h ; 24 03 ; 0xfdcab
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdcad
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcb0
+ add byte [bx+si], al ; 00 00 ; 0xfdcb4
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdcb6
+ in AL, DX ; ec ; 0xfdcb8
+ or bx, ax ; 09 c3 ; 0xfdcb9
+ mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdcbb
+ jmp near 0dd9ch ; e9 da 00 ; 0xfdcbf pci32.c:384
+ add byte [bx+si], al ; 00 00 ; 0xfdcc2
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcc4 pci32.c:386
+ xor ah, ah ; 30 e4 ; 0xfdcc7
+ and AL, strict byte 002h ; 24 02 ; 0xfdcc9
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdccb
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcce
+ add byte [bx+si], al ; 00 00 ; 0xfdcd2
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdcd4
+ in eax, DX ; 66 ed ; 0xfdcd6
+ mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdcd8
+ jmp near 0dd9ch ; e9 bd 00 ; 0xfdcdc pci32.c:387
+ add byte [bx+si], al ; 00 00 ; 0xfdcdf
+ mov dx, 00cfch ; ba fc 0c ; 0xfdce1 pci32.c:389
+ add byte [bx+si], al ; 00 00 ; 0xfdce4
+ in ax, DX ; ed ; 0xfdce6
+ mov word [di+020h], ax ; 89 45 20 ; 0xfdce7
+ jmp near 0dd9ch ; e9 af 00 ; 0xfdcea pci32.c:390
+ add byte [bx+si], al ; 00 00 ; 0xfdced
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdcef pci32.c:392
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdcf2
+ xor dh, dh ; 30 f6 ; 0xfdcf5
+ and dl, 003h ; 80 e2 03 ; 0xfdcf7
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdcfa
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcfd
+ add byte [bx+si], al ; 00 00 ; 0xfdd01
+ out DX, AL ; ee ; 0xfdd03
+ jmp near 0dd9ch ; e9 95 00 ; 0xfdd04 pci32.c:393
+ add byte [bx+si], al ; 00 00 ; 0xfdd07
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd09 pci32.c:395
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd0d
+ xor dh, dh ; 30 f6 ; 0xfdd10
+ and dl, 002h ; 80 e2 02 ; 0xfdd12
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdd15
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd18
+ add byte [bx+si], al ; 00 00 ; 0xfdd1c
+ out DX, eax ; 66 ef ; 0xfdd1e
+ jmp near 0dd9ch ; e9 79 00 ; 0xfdd20 pci32.c:396
+ add byte [bx+si], al ; 00 00 ; 0xfdd23
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd25 pci32.c:398
+ mov dx, 00cfch ; ba fc 0c ; 0xfdd28
+ add byte [bx+si], al ; 00 00 ; 0xfdd2b
+ out DX, ax ; ef ; 0xfdd2d
+ jmp short 0dd9eh ; eb 6e ; 0xfdd2e pci32.c:402
+ db 00fh, 0b7h, 045h, 008h
+ ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd30 pci32.c:404
+ mov es, [di+028h] ; 8e 45 28 ; 0xfdd34
+ mov [di-010h], es ; 8c 45 f0 ; 0xfdd37
+ mov bx, ax ; 89 c3 ; 0xfdd3a
+ mov edx, dword [di] ; 66 8b 15 ; 0xfdd3c pci32.c:408
+ pushaw ; 60 ; 0xfdd3f
+ rep add byte [bx+si], al ; f3 00 00 ; 0xfdd40
+ db 066h, 026h, 03bh, 010h
+ ; cmp edx, dword [es:bx+si] ; 66 26 3b 10 ; 0xfdd43
+ jbe short 0dd5bh ; 76 12 ; 0xfdd47
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd49 pci32.c:409
+ xor ah, ah ; 30 e4 ; 0xfdd4c
+ or ah, 089h ; 80 cc 89 ; 0xfdd4e
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd51
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd55 pci32.c:410
+ jmp short 0dd7fh ; eb 24 ; 0xfdd59 pci32.c:411
+ db 00fh, 0b7h, 0cah
+ ; movzx cx, dx ; 0f b7 ca ; 0xfdd5b pci32.c:412
+ db 066h, 026h, 08bh, 078h, 006h
+ ; mov edi, dword [es:bx+si+006h] ; 66 26 8b 78 06 ; 0xfdd5e
+ mov ax, word [es:bx+si+002h] ; 26 8b 40 02 ; 0xfdd63
+ mov dx, ds ; 8c da ; 0xfdd67
+ mov si, 0f180h ; be 80 f1 ; 0xfdd69
+ add byte [bx+si], al ; 00 00 ; 0xfdd6c
+ mov es, di ; 8e c7 ; 0xfdd6e
+ mov di, ax ; 89 c7 ; 0xfdd70
+ push DS ; 1e ; 0xfdd72
+ db 066h, 08eh, 0dah
+ ; mov ds, edx ; 66 8e da ; 0xfdd73
+ rep movsb ; f3 a4 ; 0xfdd76
+ pop DS ; 1f ; 0xfdd78
+ mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdd79 pci32.c:414
+ pushaw ; 60 ; 0xfdd81
+ rep add byte [bx+si], al ; f3 00 00 ; 0xfdd82
+ mov es, [di-010h] ; 8e 45 f0 ; 0xfdd85
+ db 066h, 026h, 089h, 003h
+ ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfdd88
+ jmp short 0dd9eh ; eb 10 ; 0xfdd8c pci32.c:417
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd8e pci32.c:420
+ xor ah, ah ; 30 e4 ; 0xfdd91
+ or ah, 081h ; 80 cc 81 ; 0xfdd93
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd96
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd9a pci32.c:421
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdd9e pci32.c:423
+ pop di ; 5f ; 0xfdda1
+ pop si ; 5e ; 0xfdda2
+ pop bx ; 5b ; 0xfdda3
+ pop bp ; 5d ; 0xfdda4
+ retn ; c3 ; 0xfdda5
+
+ ; Padding 0x2 bytes at 0xfdda6
+ times 2 db 0
+
+section BIOS32CONST progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32CONST2 progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32_DATA progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+ ; Padding 0x258 bytes at 0xfdda8
+ times 600 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:247
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:248
+ ; 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:250
+ out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:251
+ retn ; c3 ; 0xfe038 orgs.asm:252
+ ; 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:259
+ mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:260
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:261
+ loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:262
+ retn ; c3 ; 0xfe043 orgs.asm:263
+ ; 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:271
+ mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:272
+ out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:273
+ ; 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:276
+ mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:277
+ jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:278
+ ; 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:287
+ smsw ax ; 0f 01 e0 ; 0xfe05c orgs.asm:293
+ test ax, strict word 00001h ; a9 01 00 ; 0xfe05f orgs.asm:294
+ je short 0e06ah ; 74 06 ; 0xfe062 orgs.asm:295
+ mov AL, strict byte 001h ; b0 01 ; 0xfe064 orgs.asm:304
+ out strict byte 092h, AL ; e6 92 ; 0xfe066 orgs.asm:305
+ jmp short 0e068h ; eb fe ; 0xfe068 orgs.asm:306
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe06a orgs.asm:311
+ out strict byte 070h, AL ; e6 70 ; 0xfe06c orgs.asm:312
+ in AL, strict byte 071h ; e4 71 ; 0xfe06e orgs.asm:313
+ xchg ah, al ; 86 c4 ; 0xfe070 orgs.asm:316
+ in AL, strict byte 064h ; e4 64 ; 0xfe072 orgs.asm:320
+ test AL, strict byte 004h ; a8 04 ; 0xfe074 orgs.asm:321
+ je short 0e08bh ; 74 13 ; 0xfe076 orgs.asm:322
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe078 orgs.asm:325
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfe07a orgs.asm:326
+ jne short 0e08bh ; 75 0d ; 0xfe07c orgs.asm:327
+ mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe07e orgs.asm:333
+ cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe083 orgs.asm:334
+ jne short 0e064h ; 75 d9 ; 0xfe089 orgs.asm:335
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe08b orgs.asm:339
+ out strict byte 070h, AL ; e6 70 ; 0xfe08d orgs.asm:340
+ mov AL, strict byte 000h ; b0 00 ; 0xfe08f orgs.asm:341
+ out strict byte 071h, AL ; e6 71 ; 0xfe091 orgs.asm:342
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe093 orgs.asm:346
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe095 orgs.asm:347
+ je short 0e0abh ; 74 12 ; 0xfe097 orgs.asm:348
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe099 orgs.asm:349
+ je short 0e0abh ; 74 0e ; 0xfe09b orgs.asm:350
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfe09d orgs.asm:352
+ out strict byte 00dh, AL ; e6 0d ; 0xfe09f orgs.asm:355
+ out strict byte 0dah, AL ; e6 da ; 0xfe0a1 orgs.asm:356
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe0a3 orgs.asm:359
+ out strict byte 0d6h, AL ; e6 d6 ; 0xfe0a5 orgs.asm:360
+ mov AL, strict byte 000h ; b0 00 ; 0xfe0a7 orgs.asm:361
+ out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a9 orgs.asm:362
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe0ab orgs.asm:366
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfe0ad orgs.asm:367
+ je short 0e0c9h ; 74 18 ; 0xfe0af orgs.asm:368
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0b1 orgs.asm:370
+ jnc short 0e0c9h ; 73 14 ; 0xfe0b3 orgs.asm:371
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe0b5 orgs.asm:372
+ jne short 0e0bch ; 75 03 ; 0xfe0b7 orgs.asm:373
+ jmp near 0e350h ; e9 94 02 ; 0xfe0b9 orgs.asm:374
+ mov sp, 00400h ; bc 00 04 ; 0xfe0bc orgs.asm:377
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfe0bf orgs.asm:379
+ je short 0e044h ; 74 81 ; 0xfe0c1 orgs.asm:380
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0c3 orgs.asm:382
+ je short 0e04ah ; 74 83 ; 0xfe0c5 orgs.asm:383
+ jmp short 0e0c9h ; eb 00 ; 0xfe0c7 orgs.asm:387
+ ; disGetNextSymbol 0xfe0c9 LB 0x1f37 -> off=0x0 cb=00000000000001ec uValue=00000000000f00c9 'normal_post'
+normal_post: ; 0xfe0c9 LB 0x1ec
+ mov ax, 07800h ; b8 00 78 ; 0xfe0c9 orgs.asm:396
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xfe0cc orgs.asm:397
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe0ce orgs.asm:398
+ mov ds, ax ; 8e d8 ; 0xfe0d0 orgs.asm:399
+ mov ss, ax ; 8e d0 ; 0xfe0d2 orgs.asm:400
+ mov es, ax ; 8e c0 ; 0xfe0d4 orgs.asm:404
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0d6 orgs.asm:405
+ cld ; fc ; 0xfe0d8 orgs.asm:406
+ mov cx, 00239h ; b9 39 02 ; 0xfe0d9 orgs.asm:407
+ rep stosw ; f3 ab ; 0xfe0dc orgs.asm:408
+ inc di ; 47 ; 0xfe0de orgs.asm:409
+ inc di ; 47 ; 0xfe0df orgs.asm:410
+ mov cx, 005c6h ; b9 c6 05 ; 0xfe0e0 orgs.asm:411
+ rep stosw ; f3 ab ; 0xfe0e3 orgs.asm:412
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0e5 orgs.asm:416
+ add bx, 01000h ; 81 c3 00 10 ; 0xfe0e7 orgs.asm:418
+ cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0eb orgs.asm:419
+ jnc short 0e0fch ; 73 0b ; 0xfe0ef orgs.asm:420
+ mov es, bx ; 8e c3 ; 0xfe0f1 orgs.asm:421
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0f3 orgs.asm:422
+ mov cx, 08000h ; b9 00 80 ; 0xfe0f5 orgs.asm:423
+ rep stosw ; f3 ab ; 0xfe0f8 orgs.asm:424
+ jmp short 0e0e7h ; eb eb ; 0xfe0fa orgs.asm:425
+ mov es, bx ; 8e c3 ; 0xfe0fc orgs.asm:427
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0fe orgs.asm:428
+ mov cx, 07ff8h ; b9 f8 7f ; 0xfe100 orgs.asm:429
+ rep stosw ; f3 ab ; 0xfe103 orgs.asm:430
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe105 orgs.asm:431
+ push CS ; 0e ; 0xfe107 orgs.asm:113
+ pop DS ; 1f ; 0xfe108 orgs.asm:114
+ cld ; fc ; 0xfe109 orgs.asm:115
+ call 01761h ; e8 54 36 ; 0xfe10a orgs.asm:435
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe10d orgs.asm:442
+ mov ds, bx ; 8e db ; 0xfe10f orgs.asm:443
+ mov cx, strict word 00060h ; b9 60 00 ; 0xfe111 orgs.asm:444
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe114 orgs.asm:445
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe117 orgs.asm:446
+ call 0e039h ; e8 1c ff ; 0xfe11a orgs.asm:447
+ mov bx, 001a0h ; bb a0 01 ; 0xfe11d orgs.asm:452
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfe120 orgs.asm:453
+ call 0e039h ; e8 13 ff ; 0xfe123 orgs.asm:454
+ mov AL, strict byte 016h ; b0 16 ; 0xfe126 orgs.asm:457
+ out strict byte 070h, AL ; e6 70 ; 0xfe128 orgs.asm:458
+ in AL, strict byte 071h ; e4 71 ; 0xfe12a orgs.asm:459
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfe12c orgs.asm:460
+ mov AL, strict byte 015h ; b0 15 ; 0xfe12e orgs.asm:461
+ out strict byte 070h, AL ; e6 70 ; 0xfe130 orgs.asm:462
+ in AL, strict byte 071h ; e4 71 ; 0xfe132 orgs.asm:463
+ sub ax, strict byte 00001h ; 83 e8 01 ; 0xfe134 orgs.asm:464
+ mov word [00413h], ax ; a3 13 04 ; 0xfe137 orgs.asm:465
+ mov ax, 0e9cch ; b8 cc e9 ; 0xfe13a orgs.asm:104
+ mov word [00018h], ax ; a3 18 00 ; 0xfe13d orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe140 orgs.asm:106
+ mov word [0001ah], ax ; a3 1a 00 ; 0xfe143 orgs.asm:107
+ mov ax, 0f84dh ; b8 4d f8 ; 0xfe146 orgs.asm:104
+ mov word [00044h], ax ; a3 44 00 ; 0xfe149 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe14c orgs.asm:106
+ mov word [00046h], ax ; a3 46 00 ; 0xfe14f orgs.asm:107
+ mov ax, 0f841h ; b8 41 f8 ; 0xfe152 orgs.asm:104
+ mov word [00048h], ax ; a3 48 00 ; 0xfe155 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe158 orgs.asm:106
+ mov word [0004ah], ax ; a3 4a 00 ; 0xfe15b orgs.asm:107
+ mov ax, 0f859h ; b8 59 f8 ; 0xfe15e orgs.asm:104
+ mov word [00054h], ax ; a3 54 00 ; 0xfe161 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe164 orgs.asm:106
+ mov word [00056h], ax ; a3 56 00 ; 0xfe167 orgs.asm:107
+ mov ax, 0efd4h ; b8 d4 ef ; 0xfe16a orgs.asm:104
+ mov word [0005ch], ax ; a3 5c 00 ; 0xfe16d orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe170 orgs.asm:106
+ mov word [0005eh], ax ; a3 5e 00 ; 0xfe173 orgs.asm:107
+ mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe176 orgs.asm:104
+ mov word [00060h], ax ; a3 60 00 ; 0xfe179 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe17c orgs.asm:106
+ mov word [00062h], ax ; a3 62 00 ; 0xfe17f orgs.asm:107
+ mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe182 orgs.asm:104
+ mov word [00064h], ax ; a3 64 00 ; 0xfe185 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe188 orgs.asm:106
+ mov word [00066h], ax ; a3 66 00 ; 0xfe18b orgs.asm:107
+ mov ax, 0efedh ; b8 ed ef ; 0xfe18e orgs.asm:104
+ mov word [00070h], ax ; a3 70 00 ; 0xfe191 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe194 orgs.asm:106
+ mov word [00072h], ax ; a3 72 00 ; 0xfe197 orgs.asm:107
+ call 0e778h ; e8 db 05 ; 0xfe19a orgs.asm:481
+ mov ax, 0fe6eh ; b8 6e fe ; 0xfe19d orgs.asm:104
+ mov word [00068h], ax ; a3 68 00 ; 0xfe1a0 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1a3 orgs.asm:106
+ mov word [0006ah], ax ; a3 6a 00 ; 0xfe1a6 orgs.asm:107
+ mov ax, 0fea5h ; b8 a5 fe ; 0xfe1a9 orgs.asm:104
+ mov word [00020h], ax ; a3 20 00 ; 0xfe1ac orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1af orgs.asm:106
+ mov word [00022h], ax ; a3 22 00 ; 0xfe1b2 orgs.asm:107
+ mov AL, strict byte 034h ; b0 34 ; 0xfe1b5 orgs.asm:492
+ out strict byte 043h, AL ; e6 43 ; 0xfe1b7 orgs.asm:493
+ mov AL, strict byte 000h ; b0 00 ; 0xfe1b9 orgs.asm:494
+ out strict byte 040h, AL ; e6 40 ; 0xfe1bb orgs.asm:495
+ out strict byte 040h, AL ; e6 40 ; 0xfe1bd orgs.asm:496
+ mov ax, 0f065h ; b8 65 f0 ; 0xfe1bf orgs.asm:104
+ mov word [00040h], ax ; a3 40 00 ; 0xfe1c2 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1c5 orgs.asm:106
+ mov word [00042h], ax ; a3 42 00 ; 0xfe1c8 orgs.asm:107
+ mov ax, 0e987h ; b8 87 e9 ; 0xfe1cb orgs.asm:104
+ mov word [00024h], ax ; a3 24 00 ; 0xfe1ce orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1d1 orgs.asm:106
+ mov word [00026h], ax ; a3 26 00 ; 0xfe1d4 orgs.asm:107
+ mov ax, 0e82eh ; b8 2e e8 ; 0xfe1d7 orgs.asm:104
+ mov word [00058h], ax ; a3 58 00 ; 0xfe1da orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1dd orgs.asm:106
+ mov word [0005ah], ax ; a3 5a 00 ; 0xfe1e0 orgs.asm:107
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe1e3 orgs.asm:505
+ mov ds, ax ; 8e d8 ; 0xfe1e5 orgs.asm:506
+ mov AL, strict byte 010h ; b0 10 ; 0xfe1e7 orgs.asm:507
+ mov byte [00496h], AL ; a2 96 04 ; 0xfe1e9 orgs.asm:508
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1ec orgs.asm:510
+ mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1ef orgs.asm:511
+ mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1f3 orgs.asm:512
+ mov word [00480h], bx ; 89 1e 80 04 ; 0xfe1f7 orgs.asm:513
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe1fb orgs.asm:514
+ mov word [00482h], bx ; 89 1e 82 04 ; 0xfe1fe orgs.asm:515
+ mov AL, strict byte 014h ; b0 14 ; 0xfe202 orgs.asm:518
+ out strict byte 070h, AL ; e6 70 ; 0xfe204 orgs.asm:519
+ in AL, strict byte 071h ; e4 71 ; 0xfe206 orgs.asm:520
+ mov byte [00410h], AL ; a2 10 04 ; 0xfe208 orgs.asm:521
+ push DS ; 1e ; 0xfe20b orgs.asm:523
+ push CS ; 0e ; 0xfe20c orgs.asm:113
+ pop DS ; 1f ; 0xfe20d orgs.asm:114
+ cld ; fc ; 0xfe20e orgs.asm:115
+ mov ax, 0c000h ; b8 00 c0 ; 0xfe20f orgs.asm:528
+ mov dx, 0c800h ; ba 00 c8 ; 0xfe212 orgs.asm:529
+ call 01600h ; e8 e8 33 ; 0xfe215 orgs.asm:530
+ call 04d13h ; e8 f8 6a ; 0xfe218 orgs.asm:533
+ pop DS ; 1f ; 0xfe21b orgs.asm:534
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe21c orgs.asm:104
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe21f orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe222 orgs.asm:106
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe225 orgs.asm:107
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe228 orgs.asm:538
+ mov ds, ax ; 8e d8 ; 0xfe22a orgs.asm:539
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe22c orgs.asm:540
+ mov CL, strict byte 014h ; b1 14 ; 0xfe22e orgs.asm:541
+ mov dx, 00378h ; ba 78 03 ; 0xfe230 orgs.asm:542
+ call 0ecedh ; e8 b7 0a ; 0xfe233 orgs.asm:543
+ mov dx, 00278h ; ba 78 02 ; 0xfe236 orgs.asm:544
+ call 0ecedh ; e8 b1 0a ; 0xfe239 orgs.asm:545
+ sal bx, 00eh ; c1 e3 0e ; 0xfe23c orgs.asm:210
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe23f orgs.asm:547
+ and ax, 03fffh ; 25 ff 3f ; 0xfe242 orgs.asm:548
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe245 orgs.asm:549
+ mov word [00410h], ax ; a3 10 04 ; 0xfe247 orgs.asm:550
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe24a orgs.asm:104
+ mov word [0002ch], ax ; a3 2c 00 ; 0xfe24d orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe250 orgs.asm:106
+ mov word [0002eh], ax ; a3 2e 00 ; 0xfe253 orgs.asm:107
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe256 orgs.asm:104
+ mov word [00030h], ax ; a3 30 00 ; 0xfe259 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe25c orgs.asm:106
+ mov word [00032h], ax ; a3 32 00 ; 0xfe25f orgs.asm:107
+ mov ax, 0e739h ; b8 39 e7 ; 0xfe262 orgs.asm:104
+ mov word [00050h], ax ; a3 50 00 ; 0xfe265 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe268 orgs.asm:106
+ mov word [00052h], ax ; a3 52 00 ; 0xfe26b orgs.asm:107
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe26e orgs.asm:556
+ mov CL, strict byte 00ah ; b1 0a ; 0xfe270 orgs.asm:557
+ mov dx, 003f8h ; ba f8 03 ; 0xfe272 orgs.asm:558
+ call 0ed0bh ; e8 93 0a ; 0xfe275 orgs.asm:559
+ mov dx, 002f8h ; ba f8 02 ; 0xfe278 orgs.asm:560
+ call 0ed0bh ; e8 8d 0a ; 0xfe27b orgs.asm:561
+ mov dx, 003e8h ; ba e8 03 ; 0xfe27e orgs.asm:562
+ call 0ed0bh ; e8 87 0a ; 0xfe281 orgs.asm:563
+ mov dx, 002e8h ; ba e8 02 ; 0xfe284 orgs.asm:564
+ call 0ed0bh ; e8 81 0a ; 0xfe287 orgs.asm:565
+ sal bx, 009h ; c1 e3 09 ; 0xfe28a orgs.asm:210
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe28d orgs.asm:567
+ and ax, 0f1ffh ; 25 ff f1 ; 0xfe290 orgs.asm:568
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe293 orgs.asm:569
+ mov word [00410h], ax ; a3 10 04 ; 0xfe295 orgs.asm:570
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe298 orgs.asm:104
+ mov word [00128h], ax ; a3 28 01 ; 0xfe29b orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe29e orgs.asm:106
+ mov word [0012ah], ax ; a3 2a 01 ; 0xfe2a1 orgs.asm:107
+ mov ax, 0f8e6h ; b8 e6 f8 ; 0xfe2a4 orgs.asm:104
+ mov word [001c0h], ax ; a3 c0 01 ; 0xfe2a7 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2aa orgs.asm:106
+ mov word [001c2h], ax ; a3 c2 01 ; 0xfe2ad orgs.asm:107
+ call 0edbfh ; e8 0c 0b ; 0xfe2b0 orgs.asm:576
+ jmp short 0e303h ; eb 4e ; 0xfe2b3 orgs.asm:578
+ ; disGetNextSymbol 0xfe2b5 LB 0x1d4b -> off=0x0 cb=000000000000000e uValue=00000000000f02b5 'biosorg_check_before_or_at_0E2C1h'
+biosorg_check_before_or_at_0E2C1h: ; 0xfe2b5 LB 0xe
+ times 0xc 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:113
+ pop DS ; 1f ; 0xfe2c4 orgs.asm:114
+ cld ; fc ; 0xfe2c5 orgs.asm:115
+ call 01722h ; e8 59 34 ; 0xfe2c6 orgs.asm:587
+ iret ; cf ; 0xfe2c9 orgs.asm:588
+ ; 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:591
+ call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:592
+ int 002h ; cd 02 ; 0xfe2cf orgs.asm:593
+ iret ; cf ; 0xfe2d1 orgs.asm:594
+ ; 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:599
+ mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:600
+ mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:602
+ mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:603
+ mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:604
+ mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:605
+ mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:606
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:607
+ mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:608
+ mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:104
+ mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:106
+ mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:107
+ mov ax, 0f8d4h ; b8 d4 f8 ; 0xfe2f6 orgs.asm:104
+ mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:106
+ mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:107
+ retn ; c3 ; 0xfe302 orgs.asm:613
+ mov ax, 0f8a9h ; b8 a9 f8 ; 0xfe303 orgs.asm:104
+ mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:106
+ mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:107
+ mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:104
+ mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:106
+ mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:107
+ call 0e753h ; e8 35 04 ; 0xfe31b orgs.asm:625
+ push CS ; 0e ; 0xfe31e orgs.asm:113
+ pop DS ; 1f ; 0xfe31f orgs.asm:114
+ cld ; fc ; 0xfe320 orgs.asm:115
+ call 01c8ch ; e8 68 39 ; 0xfe321 orgs.asm:639
+ call 02197h ; e8 70 3e ; 0xfe324 orgs.asm:640
+ sti ; fb ; 0xfe327 orgs.asm:647
+ call 09065h ; e8 3a ad ; 0xfe328 orgs.asm:648
+ cli ; fa ; 0xfe32b orgs.asm:649
+ call 07f7ah ; e8 4b 9c ; 0xfe32c orgs.asm:654
+ call 0ed2fh ; e8 fd 09 ; 0xfe32f orgs.asm:658
+ call 0e2d2h ; e8 9d ff ; 0xfe332 orgs.asm:661
+ push CS ; 0e ; 0xfe335 orgs.asm:113
+ pop DS ; 1f ; 0xfe336 orgs.asm:114
+ cld ; fc ; 0xfe337 orgs.asm:115
+ mov ax, 0c800h ; b8 00 c8 ; 0xfe338 orgs.asm:665
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe33b orgs.asm:666
+ call 01600h ; e8 bf 32 ; 0xfe33e orgs.asm:667
+ call 01781h ; e8 3d 34 ; 0xfe341 orgs.asm:681
+ call 03b43h ; e8 fc 57 ; 0xfe344 orgs.asm:684
+ sti ; fb ; 0xfe347 orgs.asm:687
+ int 019h ; cd 19 ; 0xfe348 orgs.asm:688
+ sti ; fb ; 0xfe34a orgs.asm:690
+ hlt ; f4 ; 0xfe34b orgs.asm:692
+ jmp short 0e34bh ; eb fd ; 0xfe34c orgs.asm:693
+ cli ; fa ; 0xfe34e orgs.asm:694
+ hlt ; f4 ; 0xfe34f orgs.asm:695
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe350 orgs.asm:704
+ mov ds, ax ; 8e d8 ; 0xfe353 orgs.asm:705
+ mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe355 orgs.asm:707
+ mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe359 orgs.asm:708
+ in AL, strict byte 092h ; e4 92 ; 0xfe35d orgs.asm:710
+ and AL, strict byte 0fdh ; 24 fd ; 0xfe35f orgs.asm:711
+ out strict byte 092h, AL ; e6 92 ; 0xfe361 orgs.asm:712
+ lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xfe363 orgs.asm:714
+ pop DS ; 1f ; 0xfe369 orgs.asm:716
+ pop ES ; 07 ; 0xfe36a orgs.asm:717
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfe36b orgs.asm:719
+ in AL, strict byte 080h ; e4 80 ; 0xfe36d orgs.asm:721
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xfe36f orgs.asm:722
+ db 03ah, 0e0h
+ ; cmp ah, al ; 3a e0 ; 0xfe372 orgs.asm:724
+ popaw ; 61 ; 0xfe374 orgs.asm:726
+ sti ; fb ; 0xfe375 orgs.asm:727
+ retf 00002h ; ca 02 00 ; 0xfe376 orgs.asm:728
+ ; 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:738
+ ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=0000000000000170 uValue=00000000000f0401 'rom_fdpt'
+rom_fdpt: ; 0xfe401 LB 0x170
+ db 032h, 001h, 004h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 031h, 001h, 011h, 000h
+ db 067h, 002h, 004h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h
+ db 067h, 002h, 006h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h
+ db 0ach, 003h, 008h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h
+ db 0ach, 003h, 006h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h
+ db 067h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h
+ db 0ceh, 001h, 008h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 0ffh, 001h, 011h, 000h
+ db 0ddh, 002h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h
+ db 084h, 003h, 00fh, 000h, 000h, 0ffh, 0ffh, 000h, 008h, 000h, 000h, 000h, 085h, 003h, 011h, 000h
+ db 034h, 003h, 003h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 034h, 003h, 011h, 000h
+ db 057h, 003h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h
+ db 057h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h
+ db 032h, 001h, 008h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 03fh, 001h, 011h, 000h
+ db 0ddh, 002h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 064h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 079h, 002h, 011h, 000h
+ db 0d1h, 003h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h
+ db 0d1h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h
+ db 000h, 004h, 007h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ffh, 003h, 011h, 000h
+ db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h
+ db 0ddh, 002h, 007h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h
+ db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h
+ db 032h, 001h, 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 050h, 001h, 011h, 000h
+ ; disGetNextSymbol 0xfe571 LB 0x1a8f -> off=0x0 cb=0000000000000181 uValue=00000000000f0571 'biosorg_check_before_or_at_0E6F0h'
+biosorg_check_before_or_at_0E6F0h: ; 0xfe571 LB 0x181
+ times 0x17f db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler'
+int19_handler: ; 0xfe6f2 LB 0x3
+ jmp near 0f0aeh ; e9 b9 09 ; 0xfe6f2 orgs.asm:795
+ ; 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 word [bx+di], ax ; 01 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:868
+ push ES ; 06 ; 0xfe73a orgs.asm:869
+ pushaw ; 60 ; 0xfe73b orgs.asm:107
+ push CS ; 0e ; 0xfe73c orgs.asm:113
+ pop DS ; 1f ; 0xfe73d orgs.asm:114
+ cld ; fc ; 0xfe73e orgs.asm:115
+ call 06219h ; e8 d7 7a ; 0xfe73f orgs.asm:872
+ popaw ; 61 ; 0xfe742 orgs.asm:124
+ pop ES ; 07 ; 0xfe743 orgs.asm:874
+ pop DS ; 1f ; 0xfe744 orgs.asm:875
+ iret ; cf ; 0xfe745 orgs.asm:876
+ push DS ; 1e ; 0xfe746 orgs.asm:884
+ push ES ; 06 ; 0xfe747 orgs.asm:885
+ pushaw ; 60 ; 0xfe748 orgs.asm:107
+ push CS ; 0e ; 0xfe749 orgs.asm:113
+ pop DS ; 1f ; 0xfe74a orgs.asm:114
+ cld ; fc ; 0xfe74b orgs.asm:115
+ call 016c1h ; e8 72 2f ; 0xfe74c orgs.asm:888
+ popaw ; 61 ; 0xfe74f orgs.asm:124
+ pop ES ; 07 ; 0xfe750 orgs.asm:890
+ pop DS ; 1f ; 0xfe751 orgs.asm:891
+ iret ; cf ; 0xfe752 orgs.asm:892
+ ; 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:897
+ out strict byte 020h, AL ; e6 20 ; 0xfe755 orgs.asm:898
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe757 orgs.asm:899
+ mov AL, strict byte 008h ; b0 08 ; 0xfe759 orgs.asm:900
+ out strict byte 021h, AL ; e6 21 ; 0xfe75b orgs.asm:901
+ mov AL, strict byte 070h ; b0 70 ; 0xfe75d orgs.asm:902
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe75f orgs.asm:903
+ mov AL, strict byte 004h ; b0 04 ; 0xfe761 orgs.asm:904
+ out strict byte 021h, AL ; e6 21 ; 0xfe763 orgs.asm:905
+ mov AL, strict byte 002h ; b0 02 ; 0xfe765 orgs.asm:906
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe767 orgs.asm:907
+ mov AL, strict byte 001h ; b0 01 ; 0xfe769 orgs.asm:908
+ out strict byte 021h, AL ; e6 21 ; 0xfe76b orgs.asm:909
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe76d orgs.asm:910
+ mov AL, strict byte 0b8h ; b0 b8 ; 0xfe76f orgs.asm:911
+ out strict byte 021h, AL ; e6 21 ; 0xfe771 orgs.asm:912
+ mov AL, strict byte 08fh ; b0 8f ; 0xfe773 orgs.asm:913
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe775 orgs.asm:914
+ retn ; c3 ; 0xfe777 orgs.asm:915
+ ; disGetNextSymbol 0xfe778 LB 0x1888 -> off=0x0 cb=0000000000000057 uValue=00000000000f0778 'ebda_post'
+ebda_post: ; 0xfe778 LB 0x57
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe778 orgs.asm:104
+ mov word [00034h], ax ; a3 34 00 ; 0xfe77b orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe77e orgs.asm:106
+ mov word [00036h], ax ; a3 36 00 ; 0xfe781 orgs.asm:107
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe784 orgs.asm:104
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe787 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe78a orgs.asm:106
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe78d orgs.asm:107
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe790 orgs.asm:104
+ mov word [001c8h], ax ; a3 c8 01 ; 0xfe793 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe796 orgs.asm:106
+ mov word [001cah], ax ; a3 ca 01 ; 0xfe799 orgs.asm:107
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe79c orgs.asm:104
+ mov word [001cch], ax ; a3 cc 01 ; 0xfe79f orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7a2 orgs.asm:106
+ mov word [001ceh], ax ; a3 ce 01 ; 0xfe7a5 orgs.asm:107
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe7a8 orgs.asm:104
+ mov word [001dch], ax ; a3 dc 01 ; 0xfe7ab orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7ae orgs.asm:106
+ mov word [001deh], ax ; a3 de 01 ; 0xfe7b1 orgs.asm:107
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7b4 orgs.asm:928
+ mov ds, ax ; 8e d8 ; 0xfe7b6 orgs.asm:929
+ mov ax, word [00413h] ; a1 13 04 ; 0xfe7b8 orgs.asm:930
+ mov cx, strict word 00040h ; b9 40 00 ; 0xfe7bb orgs.asm:931
+ mul cx ; f7 e1 ; 0xfe7be orgs.asm:932
+ mov word [0040eh], ax ; a3 0e 04 ; 0xfe7c0 orgs.asm:934
+ mov ds, ax ; 8e d8 ; 0xfe7c3 orgs.asm:936
+ mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7c5 orgs.asm:937
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7ca orgs.asm:939
+ mov ds, ax ; 8e d8 ; 0xfe7cc orgs.asm:940
+ retn ; c3 ; 0xfe7ce orgs.asm:941
+ ; disGetNextSymbol 0xfe7cf LB 0x1831 -> off=0x0 cb=000000000000005f uValue=00000000000f07cf 'biosorg_check_before_or_at_0E82Ch'
+biosorg_check_before_or_at_0E82Ch: ; 0xfe7cf LB 0x5f
+ times 0x5d 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:952
+ pushfw ; 9c ; 0xfe82f orgs.asm:955
+ push ES ; 06 ; 0xfe830 orgs.asm:956
+ push DS ; 1e ; 0xfe831 orgs.asm:957
+ pushaw ; 60 ; 0xfe832 orgs.asm:107
+ cmp ah, 000h ; 80 fc 00 ; 0xfe833 orgs.asm:960
+ je short 0e84ah ; 74 12 ; 0xfe836 orgs.asm:961
+ cmp ah, 010h ; 80 fc 10 ; 0xfe838 orgs.asm:963
+ je short 0e84ah ; 74 0d ; 0xfe83b orgs.asm:964
+ push CS ; 0e ; 0xfe83d orgs.asm:113
+ pop DS ; 1f ; 0xfe83e orgs.asm:114
+ cld ; fc ; 0xfe83f orgs.asm:115
+ call 05458h ; e8 15 6c ; 0xfe840 orgs.asm:967
+ popaw ; 61 ; 0xfe843 orgs.asm:124
+ pop DS ; 1f ; 0xfe844 orgs.asm:969
+ pop ES ; 07 ; 0xfe845 orgs.asm:970
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe846 orgs.asm:971
+ iret ; cf ; 0xfe849 orgs.asm:972
+ mov bx, strict word 00040h ; bb 40 00 ; 0xfe84a orgs.asm:975
+ mov ds, bx ; 8e db ; 0xfe84d orgs.asm:976
+ cli ; fa ; 0xfe84f orgs.asm:978
+ mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe850 orgs.asm:979
+ cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe854 orgs.asm:980
+ jne short 0e85eh ; 75 04 ; 0xfe858 orgs.asm:981
+ sti ; fb ; 0xfe85a orgs.asm:982
+ nop ; 90 ; 0xfe85b orgs.asm:983
+ jmp short 0e84fh ; eb f1 ; 0xfe85c orgs.asm:991
+ push CS ; 0e ; 0xfe85e orgs.asm:113
+ pop DS ; 1f ; 0xfe85f orgs.asm:114
+ cld ; fc ; 0xfe860 orgs.asm:115
+ call 05458h ; e8 f4 6b ; 0xfe861 orgs.asm:995
+ popaw ; 61 ; 0xfe864 orgs.asm:124
+ pop DS ; 1f ; 0xfe865 orgs.asm:997
+ pop ES ; 07 ; 0xfe866 orgs.asm:998
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe867 orgs.asm:999
+ iret ; cf ; 0xfe86a orgs.asm:1007
+ ; 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:1024
+ push ax ; 50 ; 0xfe988 orgs.asm:1025
+ mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:1026
+ out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:1027
+ in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:1029
+ push DS ; 1e ; 0xfe98f orgs.asm:1030
+ pushaw ; 60 ; 0xfe990 orgs.asm:107
+ cld ; fc ; 0xfe991 orgs.asm:1032
+ mov AH, strict byte 04fh ; b4 4f ; 0xfe992 orgs.asm:1034
+ stc ; f9 ; 0xfe994 orgs.asm:1035
+ int 015h ; cd 15 ; 0xfe995 orgs.asm:1036
+ jnc short 0e9c0h ; 73 27 ; 0xfe997 orgs.asm:1037
+ sti ; fb ; 0xfe999 orgs.asm:1039
+ cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe99a orgs.asm:1042
+ jne short 0e9a9h ; 75 0b ; 0xfe99c orgs.asm:1043
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe99e orgs.asm:1044
+ mov ds, ax ; 8e d8 ; 0xfe9a0 orgs.asm:1045
+ or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a2 orgs.asm:1046
+ jmp short 0e9c0h ; eb 17 ; 0xfe9a7 orgs.asm:1047
+ cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9a9 orgs.asm:1050
+ jne short 0e9b8h ; 75 0b ; 0xfe9ab orgs.asm:1051
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9ad orgs.asm:1052
+ mov ds, ax ; 8e d8 ; 0xfe9af orgs.asm:1053
+ or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b1 orgs.asm:1054
+ jmp short 0e9c0h ; eb 08 ; 0xfe9b6 orgs.asm:1055
+ push ES ; 06 ; 0xfe9b8 orgs.asm:1058
+ push CS ; 0e ; 0xfe9b9 orgs.asm:113
+ pop DS ; 1f ; 0xfe9ba orgs.asm:114
+ cld ; fc ; 0xfe9bb orgs.asm:115
+ call 05005h ; e8 46 66 ; 0xfe9bc orgs.asm:1060
+ pop ES ; 07 ; 0xfe9bf orgs.asm:1061
+ popaw ; 61 ; 0xfe9c0 orgs.asm:124
+ pop DS ; 1f ; 0xfe9c1 orgs.asm:1065
+ cli ; fa ; 0xfe9c2 orgs.asm:1066
+ call 0e034h ; e8 6e f6 ; 0xfe9c3 orgs.asm:1067
+ mov AL, strict byte 0aeh ; b0 ae ; 0xfe9c6 orgs.asm:1069
+ out strict byte 064h, AL ; e6 64 ; 0xfe9c8 orgs.asm:1070
+ pop ax ; 58 ; 0xfe9ca orgs.asm:1071
+ iret ; cf ; 0xfe9cb orgs.asm:1072
+ pushaw ; 60 ; 0xfe9cc orgs.asm:107
+ push ES ; 06 ; 0xfe9cd orgs.asm:1081
+ push DS ; 1e ; 0xfe9ce orgs.asm:1082
+ push CS ; 0e ; 0xfe9cf orgs.asm:113
+ pop DS ; 1f ; 0xfe9d0 orgs.asm:114
+ cld ; fc ; 0xfe9d1 orgs.asm:115
+ call 0688dh ; e8 b8 7e ; 0xfe9d2 orgs.asm:1084
+ pop DS ; 1f ; 0xfe9d5 orgs.asm:1085
+ pop ES ; 07 ; 0xfe9d6 orgs.asm:1086
+ popaw ; 61 ; 0xfe9d7 orgs.asm:124
+ iret ; cf ; 0xfe9d8 orgs.asm:1088
+ ; 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:1095
+ ; 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:1104
+ jc short 0ec71h ; 72 11 ; 0xfec5e orgs.asm:1105
+ cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1107
+ jnbe short 0ec71h ; 77 0c ; 0xfec63 orgs.asm:1108
+ pushaw ; 60 ; 0xfec65 orgs.asm:107
+ push ES ; 06 ; 0xfec66 orgs.asm:1111
+ push DS ; 1e ; 0xfec67 orgs.asm:1112
+ push CS ; 0e ; 0xfec68 orgs.asm:113
+ pop DS ; 1f ; 0xfec69 orgs.asm:114
+ cld ; fc ; 0xfec6a orgs.asm:115
+ push 0ece9h ; 68 e9 ec ; 0xfec6b orgs.asm:93
+ jmp near 03b86h ; e9 15 4f ; 0xfec6e orgs.asm:94
+ push ES ; 06 ; 0xfec71 orgs.asm:1120
+ push ax ; 50 ; 0xfec72 orgs.asm:1121
+ push bx ; 53 ; 0xfec73 orgs.asm:1122
+ push cx ; 51 ; 0xfec74 orgs.asm:1123
+ push dx ; 52 ; 0xfec75 orgs.asm:1124
+ call 03b5ah ; e8 e1 4e ; 0xfec76 orgs.asm:1127
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfec79 orgs.asm:1128
+ je short 0ecabh ; 74 2e ; 0xfec7b orgs.asm:1129
+ call 03b70h ; e8 f0 4e ; 0xfec7d orgs.asm:1132
+ pop dx ; 5a ; 0xfec80 orgs.asm:1133
+ push dx ; 52 ; 0xfec81 orgs.asm:1134
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec82 orgs.asm:1135
+ jne short 0ec97h ; 75 11 ; 0xfec84 orgs.asm:1136
+ pop dx ; 5a ; 0xfec86 orgs.asm:1138
+ pop cx ; 59 ; 0xfec87 orgs.asm:1139
+ pop bx ; 5b ; 0xfec88 orgs.asm:1140
+ pop ax ; 58 ; 0xfec89 orgs.asm:1141
+ pop ES ; 07 ; 0xfec8a orgs.asm:1142
+ pushaw ; 60 ; 0xfec8b orgs.asm:107
+ push ES ; 06 ; 0xfec8c orgs.asm:1145
+ push DS ; 1e ; 0xfec8d orgs.asm:1146
+ push CS ; 0e ; 0xfec8e orgs.asm:113
+ pop DS ; 1f ; 0xfec8f orgs.asm:114
+ cld ; fc ; 0xfec90 orgs.asm:115
+ push 0ece9h ; 68 e9 ec ; 0xfec91 orgs.asm:93
+ jmp near 04238h ; e9 a1 55 ; 0xfec94 orgs.asm:94
+ and dl, 0e0h ; 80 e2 e0 ; 0xfec97 orgs.asm:1152
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec9a orgs.asm:1153
+ jne short 0ecabh ; 75 0d ; 0xfec9c orgs.asm:1154
+ pop dx ; 5a ; 0xfec9e orgs.asm:1156
+ pop cx ; 59 ; 0xfec9f orgs.asm:1157
+ pop bx ; 5b ; 0xfeca0 orgs.asm:1158
+ pop ax ; 58 ; 0xfeca1 orgs.asm:1159
+ pop ES ; 07 ; 0xfeca2 orgs.asm:1160
+ push ax ; 50 ; 0xfeca3 orgs.asm:1162
+ push cx ; 51 ; 0xfeca4 orgs.asm:1163
+ push dx ; 52 ; 0xfeca5 orgs.asm:1164
+ push bx ; 53 ; 0xfeca6 orgs.asm:1165
+ db 0feh, 0cah
+ ; dec dl ; fe ca ; 0xfeca7 orgs.asm:1167
+ jmp short 0ecb4h ; eb 09 ; 0xfeca9 orgs.asm:1168
+ pop dx ; 5a ; 0xfecab orgs.asm:1171
+ pop cx ; 59 ; 0xfecac orgs.asm:1172
+ pop bx ; 5b ; 0xfecad orgs.asm:1173
+ pop ax ; 58 ; 0xfecae orgs.asm:1174
+ pop ES ; 07 ; 0xfecaf orgs.asm:1175
+ ; disGetNextSymbol 0xfecb0 LB 0x1350 -> off=0x0 cb=0000000000000004 uValue=00000000000f0cb0 'int13_noeltorito'
+int13_noeltorito: ; 0xfecb0 LB 0x4
+ push ax ; 50 ; 0xfecb0 orgs.asm:1178
+ push cx ; 51 ; 0xfecb1 orgs.asm:1179
+ push dx ; 52 ; 0xfecb2 orgs.asm:1180
+ push bx ; 53 ; 0xfecb3 orgs.asm:1181
+ ; disGetNextSymbol 0xfecb4 LB 0x134c -> off=0x0 cb=0000000000000014 uValue=00000000000f0cb4 'int13_legacy'
+int13_legacy: ; 0xfecb4 LB 0x14
+ push dx ; 52 ; 0xfecb4 orgs.asm:1183
+ push bp ; 55 ; 0xfecb5 orgs.asm:1184
+ push si ; 56 ; 0xfecb6 orgs.asm:1185
+ push di ; 57 ; 0xfecb7 orgs.asm:1186
+ push ES ; 06 ; 0xfecb8 orgs.asm:1187
+ push DS ; 1e ; 0xfecb9 orgs.asm:1188
+ push CS ; 0e ; 0xfecba orgs.asm:113
+ pop DS ; 1f ; 0xfecbb orgs.asm:114
+ cld ; fc ; 0xfecbc orgs.asm:115
+ test dl, 080h ; f6 c2 80 ; 0xfecbd orgs.asm:1193
+ jne short 0ecc8h ; 75 06 ; 0xfecc0 orgs.asm:1194
+ push 0ece9h ; 68 e9 ec ; 0xfecc2 orgs.asm:93
+ jmp near 03103h ; e9 3b 44 ; 0xfecc5 orgs.asm:94
+ ; 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:1199
+ jc short 0ecdch ; 72 0f ; 0xfeccb orgs.asm:1200
+ shr ebx, 010h ; 66 c1 eb 10 ; 0xfeccd orgs.asm:1206
+ push bx ; 53 ; 0xfecd1 orgs.asm:1207
+ call 04677h ; e8 a2 59 ; 0xfecd2 orgs.asm:1208
+ pop bx ; 5b ; 0xfecd5 orgs.asm:1209
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfecd6 orgs.asm:1210
+ jmp short 0ece9h ; eb 0d ; 0xfecda orgs.asm:1212
+ ; 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:1216
+ jnbe short 0ece6h ; 77 05 ; 0xfecdf orgs.asm:1217
+ call 05b29h ; e8 45 6e ; 0xfece1 orgs.asm:1218
+ jmp short 0ece9h ; eb 03 ; 0xfece4 orgs.asm:1219
+ call 05f82h ; e8 99 72 ; 0xfece6 orgs.asm:1222
+ ; disGetNextSymbol 0xfece9 LB 0x1317 -> off=0x0 cb=0000000000000004 uValue=00000000000f0ce9 'int13_out'
+int13_out: ; 0xfece9 LB 0x4
+ pop DS ; 1f ; 0xfece9 orgs.asm:1225
+ pop ES ; 07 ; 0xfecea orgs.asm:1226
+ popaw ; 61 ; 0xfeceb orgs.asm:124
+ iret ; cf ; 0xfecec orgs.asm:1228
+ ; disGetNextSymbol 0xfeced LB 0x1313 -> off=0x0 cb=000000000000001e uValue=00000000000f0ced 'detect_parport'
+detect_parport: ; 0xfeced LB 0x1e
+ push dx ; 52 ; 0xfeced orgs.asm:1235
+ inc dx ; 42 ; 0xfecee orgs.asm:1236
+ inc dx ; 42 ; 0xfecef orgs.asm:1237
+ in AL, DX ; ec ; 0xfecf0 orgs.asm:1238
+ and AL, strict byte 0dfh ; 24 df ; 0xfecf1 orgs.asm:1239
+ out DX, AL ; ee ; 0xfecf3 orgs.asm:1240
+ pop dx ; 5a ; 0xfecf4 orgs.asm:1241
+ mov AL, strict byte 0aah ; b0 aa ; 0xfecf5 orgs.asm:1242
+ out DX, AL ; ee ; 0xfecf7 orgs.asm:1243
+ in AL, DX ; ec ; 0xfecf8 orgs.asm:1244
+ cmp AL, strict byte 0aah ; 3c aa ; 0xfecf9 orgs.asm:1245
+ jne short 0ed0ah ; 75 0d ; 0xfecfb orgs.asm:1246
+ push bx ; 53 ; 0xfecfd orgs.asm:1248
+ sal bx, 1 ; d1 e3 ; 0xfecfe orgs.asm:1249
+ mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed00 orgs.asm:1250
+ pop bx ; 5b ; 0xfed04 orgs.asm:1251
+ mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed05 orgs.asm:1252
+ inc bx ; 43 ; 0xfed09 orgs.asm:1253
+ retn ; c3 ; 0xfed0a orgs.asm:1255
+ ; disGetNextSymbol 0xfed0b LB 0x12f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d0b 'detect_serial'
+detect_serial: ; 0xfed0b LB 0x24
+ push dx ; 52 ; 0xfed0b orgs.asm:1262
+ inc dx ; 42 ; 0xfed0c orgs.asm:1263
+ mov AL, strict byte 002h ; b0 02 ; 0xfed0d orgs.asm:1264
+ out DX, AL ; ee ; 0xfed0f orgs.asm:1265
+ in AL, DX ; ec ; 0xfed10 orgs.asm:1266
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed11 orgs.asm:1267
+ jne short 0ed2dh ; 75 18 ; 0xfed13 orgs.asm:1268
+ inc dx ; 42 ; 0xfed15 orgs.asm:1270
+ in AL, DX ; ec ; 0xfed16 orgs.asm:1271
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed17 orgs.asm:1272
+ jne short 0ed2dh ; 75 12 ; 0xfed19 orgs.asm:1273
+ dec dx ; 4a ; 0xfed1b orgs.asm:1275
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfed1c orgs.asm:1276
+ pop dx ; 5a ; 0xfed1e orgs.asm:1277
+ push bx ; 53 ; 0xfed1f orgs.asm:1278
+ sal bx, 1 ; d1 e3 ; 0xfed20 orgs.asm:1279
+ mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed22 orgs.asm:1280
+ pop bx ; 5b ; 0xfed26 orgs.asm:1281
+ mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed27 orgs.asm:1282
+ inc bx ; 43 ; 0xfed2b orgs.asm:1283
+ retn ; c3 ; 0xfed2c orgs.asm:1284
+ pop dx ; 5a ; 0xfed2d orgs.asm:1287
+ retn ; c3 ; 0xfed2e orgs.asm:1288
+ ; 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:1298
+ mov ds, ax ; 8e d8 ; 0xfed31 orgs.asm:1299
+ mov AL, strict byte 000h ; b0 00 ; 0xfed33 orgs.asm:1303
+ mov byte [0043eh], AL ; a2 3e 04 ; 0xfed35 orgs.asm:1304
+ mov byte [0043fh], AL ; a2 3f 04 ; 0xfed38 orgs.asm:1305
+ mov byte [00440h], AL ; a2 40 04 ; 0xfed3b orgs.asm:1306
+ mov byte [00441h], AL ; a2 41 04 ; 0xfed3e orgs.asm:1307
+ mov byte [00442h], AL ; a2 42 04 ; 0xfed41 orgs.asm:1308
+ mov byte [00443h], AL ; a2 43 04 ; 0xfed44 orgs.asm:1309
+ mov byte [00444h], AL ; a2 44 04 ; 0xfed47 orgs.asm:1310
+ mov byte [00445h], AL ; a2 45 04 ; 0xfed4a orgs.asm:1311
+ mov byte [00446h], AL ; a2 46 04 ; 0xfed4d orgs.asm:1312
+ mov byte [00447h], AL ; a2 47 04 ; 0xfed50 orgs.asm:1313
+ mov byte [00448h], AL ; a2 48 04 ; 0xfed53 orgs.asm:1314
+ mov byte [0048bh], AL ; a2 8b 04 ; 0xfed56 orgs.asm:1316
+ mov AL, strict byte 010h ; b0 10 ; 0xfed59 orgs.asm:1318
+ out strict byte 070h, AL ; e6 70 ; 0xfed5b orgs.asm:1319
+ in AL, strict byte 071h ; e4 71 ; 0xfed5d orgs.asm:1320
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfed5f orgs.asm:1321
+ shr al, 004h ; c0 e8 04 ; 0xfed61 orgs.asm:179
+ je short 0ed6ah ; 74 04 ; 0xfed64 orgs.asm:1326
+ mov BL, strict byte 007h ; b3 07 ; 0xfed66 orgs.asm:1327
+ jmp short 0ed6ch ; eb 02 ; 0xfed68 orgs.asm:1328
+ mov BL, strict byte 000h ; b3 00 ; 0xfed6a orgs.asm:1331
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfed6c orgs.asm:1334
+ and AL, strict byte 00fh ; 24 0f ; 0xfed6e orgs.asm:1335
+ je short 0ed75h ; 74 03 ; 0xfed70 orgs.asm:1336
+ or bl, 070h ; 80 cb 70 ; 0xfed72 orgs.asm:1337
+ mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed75 orgs.asm:1339
+ mov AL, strict byte 000h ; b0 00 ; 0xfed79 orgs.asm:1342
+ mov byte [00490h], AL ; a2 90 04 ; 0xfed7b orgs.asm:1343
+ mov byte [00491h], AL ; a2 91 04 ; 0xfed7e orgs.asm:1344
+ mov byte [00492h], AL ; a2 92 04 ; 0xfed81 orgs.asm:1345
+ mov byte [00493h], AL ; a2 93 04 ; 0xfed84 orgs.asm:1346
+ mov byte [00494h], AL ; a2 94 04 ; 0xfed87 orgs.asm:1347
+ mov byte [00495h], AL ; a2 95 04 ; 0xfed8a orgs.asm:1348
+ mov AL, strict byte 002h ; b0 02 ; 0xfed8d orgs.asm:1350
+ out strict byte 00ah, AL ; e6 0a ; 0xfed8f orgs.asm:1351
+ mov ax, 0efc7h ; b8 c7 ef ; 0xfed91 orgs.asm:104
+ mov word [00078h], ax ; a3 78 00 ; 0xfed94 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfed97 orgs.asm:106
+ mov word [0007ah], ax ; a3 7a 00 ; 0xfed9a orgs.asm:107
+ mov ax, 0ec59h ; b8 59 ec ; 0xfed9d orgs.asm:104
+ mov word [00100h], ax ; a3 00 01 ; 0xfeda0 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfeda3 orgs.asm:106
+ mov word [00102h], ax ; a3 02 01 ; 0xfeda6 orgs.asm:107
+ mov ax, 0ef57h ; b8 57 ef ; 0xfeda9 orgs.asm:104
+ mov word [00038h], ax ; a3 38 00 ; 0xfedac orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedaf orgs.asm:106
+ mov word [0003ah], ax ; a3 3a 00 ; 0xfedb2 orgs.asm:107
+ retn ; c3 ; 0xfedb5 orgs.asm:1357
+ ; 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:1367
+ shr al, 004h ; c0 e8 04 ; 0xfedb9 orgs.asm:1368
+ aad 00ah ; d5 0a ; 0xfedbc orgs.asm:1376
+ retn ; c3 ; 0xfedbe orgs.asm:1377
+ ; 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:1385
+ out strict byte 070h, AL ; e6 70 ; 0xfedc1 orgs.asm:1386
+ in AL, strict byte 071h ; e4 71 ; 0xfedc3 orgs.asm:1387
+ call 0edb6h ; e8 ee ff ; 0xfedc5 orgs.asm:1388
+ test al, al ; 84 c0 ; 0xfedc8 orgs.asm:1389
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfedca orgs.asm:1390
+ mov dx, 01234h ; ba 34 12 ; 0xfedcc orgs.asm:1391
+ mul dx ; f7 e2 ; 0xfedcf orgs.asm:1392
+ db 08bh, 0c8h
+ ; mov cx, ax ; 8b c8 ; 0xfedd1 orgs.asm:1393
+ mov AL, strict byte 002h ; b0 02 ; 0xfedd3 orgs.asm:1396
+ out strict byte 070h, AL ; e6 70 ; 0xfedd5 orgs.asm:1397
+ in AL, strict byte 071h ; e4 71 ; 0xfedd7 orgs.asm:1398
+ call 0edb6h ; e8 da ff ; 0xfedd9 orgs.asm:1399
+ test al, al ; 84 c0 ; 0xfeddc orgs.asm:1400
+ je short 0edebh ; 74 0b ; 0xfedde orgs.asm:1401
+ add cx, 04463h ; 81 c1 63 44 ; 0xfede0 orgs.asm:1403
+ adc dx, strict byte 00004h ; 83 d2 04 ; 0xfede4 orgs.asm:1404
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfede7 orgs.asm:1405
+ jne short 0ede0h ; 75 f5 ; 0xfede9 orgs.asm:1406
+ mov AL, strict byte 004h ; b0 04 ; 0xfedeb orgs.asm:1410
+ out strict byte 070h, AL ; e6 70 ; 0xfeded orgs.asm:1411
+ in AL, strict byte 071h ; e4 71 ; 0xfedef orgs.asm:1412
+ call 0edb6h ; e8 c2 ff ; 0xfedf1 orgs.asm:1413
+ test al, al ; 84 c0 ; 0xfedf4 orgs.asm:1414
+ je short 0ee04h ; 74 0c ; 0xfedf6 orgs.asm:1415
+ add cx, 0076ch ; 81 c1 6c 07 ; 0xfedf8 orgs.asm:1417
+ adc dx, 00100h ; 81 d2 00 01 ; 0xfedfc orgs.asm:1418
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfee00 orgs.asm:1419
+ jne short 0edf8h ; 75 f4 ; 0xfee02 orgs.asm:1420
+ db 08ah, 0cdh
+ ; mov cl, ch ; 8a cd ; 0xfee04 orgs.asm:1423
+ db 08ah, 0eah
+ ; mov ch, dl ; 8a ea ; 0xfee06 orgs.asm:1424
+ db 08ah, 0d6h
+ ; mov dl, dh ; 8a d6 ; 0xfee08 orgs.asm:1425
+ db 032h, 0f6h
+ ; xor dh, dh ; 32 f6 ; 0xfee0a orgs.asm:1426
+ mov word [0046ch], cx ; 89 0e 6c 04 ; 0xfee0c orgs.asm:1427
+ mov word [0046eh], dx ; 89 16 6e 04 ; 0xfee10 orgs.asm:1428
+ mov byte [00470h], dh ; 88 36 70 04 ; 0xfee14 orgs.asm:1429
+ retn ; c3 ; 0xfee18 orgs.asm:1477
+ ; 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:1488
+ push dx ; 52 ; 0xfef58 orgs.asm:1489
+ mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1490
+ in AL, DX ; ec ; 0xfef5c orgs.asm:1491
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1492
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1493
+ je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1494
+ mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1495
+ mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1496
+ out DX, AL ; ee ; 0xfef68 orgs.asm:1497
+ mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1499
+ in AL, DX ; ec ; 0xfef6c orgs.asm:1500
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1501
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1502
+ jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1503
+ mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1506
+ in AL, DX ; ec ; 0xfef76 orgs.asm:1507
+ mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1508
+ in AL, DX ; ec ; 0xfef7a orgs.asm:1509
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1510
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1511
+ je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1512
+ push DS ; 1e ; 0xfef81 orgs.asm:1515
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1516
+ mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1517
+ call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1518
+ or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1520
+ pop DS ; 1f ; 0xfef8e orgs.asm:1521
+ pop dx ; 5a ; 0xfef8f orgs.asm:1522
+ pop ax ; 58 ; 0xfef90 orgs.asm:1523
+ iret ; cf ; 0xfef91 orgs.asm:1524
+ ; 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:1551
+ ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000000d uValue=00000000000f0fd4 'int17_handler'
+int17_handler: ; 0xfefd4 LB 0xd
+ push DS ; 1e ; 0xfefd4 orgs.asm:1554
+ push ES ; 06 ; 0xfefd5 orgs.asm:1555
+ pushaw ; 60 ; 0xfefd6 orgs.asm:107
+ push CS ; 0e ; 0xfefd7 orgs.asm:113
+ pop DS ; 1f ; 0xfefd8 orgs.asm:114
+ cld ; fc ; 0xfefd9 orgs.asm:115
+ call 071cfh ; e8 f2 81 ; 0xfefda orgs.asm:1558
+ popaw ; 61 ; 0xfefdd orgs.asm:124
+ pop ES ; 07 ; 0xfefde orgs.asm:1560
+ pop DS ; 1f ; 0xfefdf orgs.asm:1561
+ iret ; cf ; 0xfefe0 orgs.asm:1562
+ ; 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:1597
+ ; 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:1606
+ ; 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:1615
+ ; 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=000000000000000a uValue=00000000000f10a4 'biosorg_check_at_0F0A4h'
+biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0xa
+ push CS ; 0e ; 0xff0a4 orgs.asm:113
+ pop DS ; 1f ; 0xff0a5 orgs.asm:114
+ cld ; fc ; 0xff0a6 orgs.asm:115
+ call 01734h ; e8 8a 26 ; 0xff0a7 orgs.asm:1630
+ sti ; fb ; 0xff0aa orgs.asm:1632
+ hlt ; f4 ; 0xff0ab orgs.asm:1634
+ jmp short 0f0abh ; eb fd ; 0xff0ac orgs.asm:1635
+ ; disGetNextSymbol 0xff0ae LB 0xf52 -> off=0x0 cb=0000000000000079 uValue=00000000000f10ae 'int19_relocated'
+int19_relocated: ; 0xff0ae LB 0x79
+ push CS ; 0e ; 0xff0ae orgs.asm:113
+ pop DS ; 1f ; 0xff0af orgs.asm:114
+ cld ; fc ; 0xff0b0 orgs.asm:115
+ push bp ; 55 ; 0xff0b1 orgs.asm:1645
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0b2 orgs.asm:1646
+ mov ax, strict word 00001h ; b8 01 00 ; 0xff0b4 orgs.asm:1649
+ push ax ; 50 ; 0xff0b7 orgs.asm:1650
+ call 04aa5h ; e8 ea 59 ; 0xff0b8 orgs.asm:1651
+ inc sp ; 44 ; 0xff0bb orgs.asm:1652
+ inc sp ; 44 ; 0xff0bc orgs.asm:1653
+ test ax, ax ; 85 c0 ; 0xff0bd orgs.asm:1654
+ jne short 0f0e8h ; 75 27 ; 0xff0bf orgs.asm:1655
+ mov ax, strict word 00002h ; b8 02 00 ; 0xff0c1 orgs.asm:1658
+ push ax ; 50 ; 0xff0c4 orgs.asm:1659
+ call 04aa5h ; e8 dd 59 ; 0xff0c5 orgs.asm:1660
+ inc sp ; 44 ; 0xff0c8 orgs.asm:1661
+ inc sp ; 44 ; 0xff0c9 orgs.asm:1662
+ test ax, ax ; 85 c0 ; 0xff0ca orgs.asm:1663
+ jne short 0f0e8h ; 75 1a ; 0xff0cc orgs.asm:1664
+ mov ax, strict word 00003h ; b8 03 00 ; 0xff0ce orgs.asm:1667
+ push ax ; 50 ; 0xff0d1 orgs.asm:1668
+ call 04aa5h ; e8 d0 59 ; 0xff0d2 orgs.asm:1669
+ inc sp ; 44 ; 0xff0d5 orgs.asm:1670
+ inc sp ; 44 ; 0xff0d6 orgs.asm:1671
+ test ax, ax ; 85 c0 ; 0xff0d7 orgs.asm:1672
+ jne short 0f0e8h ; 75 0d ; 0xff0d9 orgs.asm:1673
+ mov ax, strict word 00004h ; b8 04 00 ; 0xff0db orgs.asm:1676
+ push ax ; 50 ; 0xff0de orgs.asm:1677
+ call 04aa5h ; e8 c3 59 ; 0xff0df orgs.asm:1678
+ inc sp ; 44 ; 0xff0e2 orgs.asm:1679
+ inc sp ; 44 ; 0xff0e3 orgs.asm:1680
+ test ax, ax ; 85 c0 ; 0xff0e4 orgs.asm:1681
+ je short 0f0a4h ; 74 bc ; 0xff0e6 orgs.asm:1682
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0e8 orgs.asm:1688
+ sal ax, 004h ; c1 e0 04 ; 0xff0eb orgs.asm:210
+ mov word [bp+002h], ax ; 89 46 02 ; 0xff0ee orgs.asm:1690
+ mov ax, word [byte bp+000h] ; 8b 46 00 ; 0xff0f1 orgs.asm:1691
+ and ax, 0f000h ; 25 00 f0 ; 0xff0f4 orgs.asm:1700
+ mov word [bp+004h], ax ; 89 46 04 ; 0xff0f7 orgs.asm:1701
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff0fa orgs.asm:1702
+ mov ds, ax ; 8e d8 ; 0xff0fc orgs.asm:1703
+ mov es, ax ; 8e c0 ; 0xff0fe orgs.asm:1704
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff100 orgs.asm:1705
+ mov ax, 0aa55h ; b8 55 aa ; 0xff103 orgs.asm:1706
+ pop bp ; 5d ; 0xff106 orgs.asm:1708
+ iret ; cf ; 0xff107 orgs.asm:1709
+ or cx, word [bp+si] ; 0b 0a ; 0xff108
+ or word [bp+di], cx ; 09 0b ; 0xff10a
+ push eax ; 66 50 ; 0xff10c orgs.asm:98
+ mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff10e orgs.asm:99
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xff114 orgs.asm:100
+ sal eax, 008h ; 66 c1 e0 08 ; 0xff116 orgs.asm:101
+ and dl, 0fch ; 80 e2 fc ; 0xff11a orgs.asm:102
+ db 00ah, 0c2h
+ ; or al, dl ; 0a c2 ; 0xff11d orgs.asm:103
+ mov dx, 00cf8h ; ba f8 0c ; 0xff11f orgs.asm:104
+ out DX, eax ; 66 ef ; 0xff122 orgs.asm:105
+ pop eax ; 66 58 ; 0xff124 orgs.asm:106
+ retn ; c3 ; 0xff126 orgs.asm:107
+ ; disGetNextSymbol 0xff127 LB 0xed9 -> off=0x0 cb=0000000000000012 uValue=00000000000f1127 'pcibios_init_iomem_bases'
+pcibios_init_iomem_bases: ; 0xff127 LB 0x12
+ push bp ; 55 ; 0xff127 orgs.asm:110
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff128 orgs.asm:111
+ mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff12a orgs.asm:113
+ mov dx, 00410h ; ba 10 04 ; 0xff130 orgs.asm:114
+ out DX, eax ; 66 ef ; 0xff133 orgs.asm:115
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xff135 orgs.asm:228
+ pop bp ; 5d ; 0xff137 orgs.asm:229
+ retn ; c3 ; 0xff138 orgs.asm:230
+ ; disGetNextSymbol 0xff139 LB 0xec7 -> off=0x0 cb=000000000000000c uValue=00000000000f1139 'pcibios_init_set_elcr'
+pcibios_init_set_elcr: ; 0xff139 LB 0xc
+ push ax ; 50 ; 0xff139 orgs.asm:233
+ push cx ; 51 ; 0xff13a orgs.asm:234
+ mov dx, 004d0h ; ba d0 04 ; 0xff13b orgs.asm:235
+ test AL, strict byte 008h ; a8 08 ; 0xff13e orgs.asm:236
+ je short 0f145h ; 74 03 ; 0xff140 orgs.asm:237
+ inc dx ; 42 ; 0xff142 orgs.asm:239
+ and AL, strict byte 007h ; 24 07 ; 0xff143 orgs.asm:240
+ ; disGetNextSymbol 0xff145 LB 0xebb -> off=0x0 cb=000000000000000d uValue=00000000000f1145 'is_master_pic'
+is_master_pic: ; 0xff145 LB 0xd
+ db 08ah, 0c8h
+ ; mov cl, al ; 8a c8 ; 0xff145 orgs.asm:242
+ mov BL, strict byte 001h ; b3 01 ; 0xff147 orgs.asm:243
+ sal bl, CL ; d2 e3 ; 0xff149 orgs.asm:244
+ in AL, DX ; ec ; 0xff14b orgs.asm:245
+ db 00ah, 0c3h
+ ; or al, bl ; 0a c3 ; 0xff14c orgs.asm:246
+ out DX, AL ; ee ; 0xff14e orgs.asm:247
+ pop cx ; 59 ; 0xff14f orgs.asm:248
+ pop ax ; 58 ; 0xff150 orgs.asm:249
+ retn ; c3 ; 0xff151 orgs.asm:250
+ ; disGetNextSymbol 0xff152 LB 0xeae -> off=0x0 cb=000000000000002e uValue=00000000000f1152 'pcibios_init_irqs'
+pcibios_init_irqs: ; 0xff152 LB 0x2e
+ push DS ; 1e ; 0xff152 orgs.asm:253
+ push bp ; 55 ; 0xff153 orgs.asm:254
+ mov ax, 0f000h ; b8 00 f0 ; 0xff154 orgs.asm:255
+ mov ds, ax ; 8e d8 ; 0xff157 orgs.asm:256
+ pop bp ; 5d ; 0xff159 orgs.asm:363
+ pop DS ; 1f ; 0xff15a orgs.asm:364
+ retn ; c3 ; 0xff15b orgs.asm:365
+ mov ax, ax ; 89 c0 ; 0xff15c
+ mov ax, ax ; 89 c0 ; 0xff15e
+ and AL, strict byte 050h ; 24 50 ; 0xff160
+ dec cx ; 49 ; 0xff162
+ push dx ; 52 ; 0xff163
+ add byte [bx+di], al ; 00 01 ; 0xff164
+ add byte [bp+si], al ; 00 02 ; 0xff166
+ add byte [bx+si], cl ; 00 08 ; 0xff168
+ add byte [bx+si], al ; 00 00 ; 0xff16a
+ xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff16c
+ times 0xf db 0
+ db 031h
+ ; disGetNextSymbol 0xff180 LB 0xe80 -> off=0x0 cb=00000000000001e0 uValue=00000000000f1180 '_pci_routing_table'
+_pci_routing_table: ; 0xff180 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 0xff360 LB 0xca0 -> off=0x0 cb=0000000000000002 uValue=00000000000f1360 '_pci_routing_table_size'
+_pci_routing_table_size: ; 0xff360 LB 0x2
+ loopne 0f363h ; e0 01 ; 0xff360
+ ; disGetNextSymbol 0xff362 LB 0xc9e -> off=0x0 cb=00000000000004df uValue=00000000000f1362 'biosorg_check_before_or_at_0F83Fh'
+biosorg_check_before_or_at_0F83Fh: ; 0xff362 LB 0x4df
+ times 0x4dd 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:1739
+ push DS ; 1e ; 0xff842 orgs.asm:1740
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1741
+ mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1742
+ mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1743
+ pop DS ; 1f ; 0xff84b orgs.asm:1744
+ iret ; cf ; 0xff84c orgs.asm:1745
+ ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler'
+int11_handler: ; 0xff84d LB 0xc
+ sti ; fb ; 0xff84d orgs.asm:1754
+ push DS ; 1e ; 0xff84e orgs.asm:1755
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1756
+ mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1757
+ mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1758
+ pop DS ; 1f ; 0xff857 orgs.asm:1759
+ iret ; cf ; 0xff858 orgs.asm:1760
+ ; 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:1770
+ jne short 0f86bh ; 75 0d ; 0xff85c orgs.asm:1771
+ pushaw ; 60 ; 0xff85e orgs.asm:1776
+ push ES ; 06 ; 0xff85f orgs.asm:1777
+ push DS ; 1e ; 0xff860 orgs.asm:1778
+ push CS ; 0e ; 0xff861 orgs.asm:113
+ pop DS ; 1f ; 0xff862 orgs.asm:114
+ cld ; fc ; 0xff863 orgs.asm:115
+ call 06726h ; e8 bf 6e ; 0xff864 orgs.asm:1780
+ pop DS ; 1f ; 0xff867 orgs.asm:1781
+ pop ES ; 07 ; 0xff868 orgs.asm:1782
+ popaw ; 61 ; 0xff869 orgs.asm:1783
+ iret ; cf ; 0xff86a orgs.asm:1784
+ pushfw ; 9c ; 0xff86b orgs.asm:1789
+ push DS ; 1e ; 0xff86c orgs.asm:1790
+ push ES ; 06 ; 0xff86d orgs.asm:1791
+ push CS ; 0e ; 0xff86e orgs.asm:113
+ pop DS ; 1f ; 0xff86f orgs.asm:114
+ cld ; fc ; 0xff870 orgs.asm:115
+ pushaw ; 60 ; 0xff871 orgs.asm:107
+ cmp ah, 053h ; 80 fc 53 ; 0xff872 orgs.asm:1802
+ je short 0f885h ; 74 0e ; 0xff875 orgs.asm:1803
+ cmp ah, 0c2h ; 80 fc c2 ; 0xff877 orgs.asm:1804
+ je short 0f88ah ; 74 0e ; 0xff87a orgs.asm:1805
+ call 063d7h ; e8 58 6b ; 0xff87c orgs.asm:1807
+ popaw ; 61 ; 0xff87f orgs.asm:124
+ pop ES ; 07 ; 0xff880 orgs.asm:1813
+ pop DS ; 1f ; 0xff881 orgs.asm:1814
+ popfw ; 9d ; 0xff882 orgs.asm:1815
+ jmp short 0f88fh ; eb 0a ; 0xff883 orgs.asm:1816
+ call 0a420h ; e8 98 ab ; 0xff885 orgs.asm:1819
+ jmp short 0f87fh ; eb f5 ; 0xff888 orgs.asm:1820
+ ; disGetNextSymbol 0xff88a LB 0x776 -> off=0x0 cb=0000000000000005 uValue=00000000000f188a 'int15_handler_mouse'
+int15_handler_mouse: ; 0xff88a LB 0x5
+ call 06e63h ; e8 d6 75 ; 0xff88a orgs.asm:1823
+ jmp short 0f87fh ; eb f0 ; 0xff88d orgs.asm:1824
+ ; 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:1841
+ push bp ; 55 ; 0xff891 orgs.asm:1842
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff892 orgs.asm:1843
+ and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff894 orgs.asm:1844
+ or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff898 orgs.asm:1845
+ pop bp ; 5d ; 0xff89d orgs.asm:1846
+ iret ; cf ; 0xff89e orgs.asm:1847
+ push bp ; 55 ; 0xff89f orgs.asm:1849
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff8a0 orgs.asm:1850
+ or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff8a2 orgs.asm:1851
+ pop bp ; 5d ; 0xff8a7 orgs.asm:1852
+ iret ; cf ; 0xff8a8 orgs.asm:1853
+ ; disGetNextSymbol 0xff8a9 LB 0x757 -> off=0x0 cb=000000000000002b uValue=00000000000f18a9 'int74_handler'
+int74_handler: ; 0xff8a9 LB 0x2b
+ sti ; fb ; 0xff8a9 orgs.asm:1860
+ pushaw ; 60 ; 0xff8aa orgs.asm:107
+ push ES ; 06 ; 0xff8ab orgs.asm:1862
+ push DS ; 1e ; 0xff8ac orgs.asm:1863
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8ad orgs.asm:1864
+ push ax ; 50 ; 0xff8af orgs.asm:1865
+ push ax ; 50 ; 0xff8b0 orgs.asm:1866
+ push ax ; 50 ; 0xff8b1 orgs.asm:1867
+ push ax ; 50 ; 0xff8b2 orgs.asm:1868
+ push ax ; 50 ; 0xff8b3 orgs.asm:1869
+ push CS ; 0e ; 0xff8b4 orgs.asm:113
+ pop DS ; 1f ; 0xff8b5 orgs.asm:114
+ cld ; fc ; 0xff8b6 orgs.asm:115
+ call 06db5h ; e8 fb 74 ; 0xff8b7 orgs.asm:1871
+ pop cx ; 59 ; 0xff8ba orgs.asm:1872
+ jcxz 0f8c9h ; e3 0c ; 0xff8bb orgs.asm:1873
+ push strict byte 00000h ; 6a 00 ; 0xff8bd orgs.asm:1877
+ pop DS ; 1f ; 0xff8bf orgs.asm:1882
+ push word [0040eh] ; ff 36 0e 04 ; 0xff8c0 orgs.asm:1883
+ pop DS ; 1f ; 0xff8c4 orgs.asm:1884
+ call far [word 00022h] ; ff 1e 22 00 ; 0xff8c5 orgs.asm:1885
+ cli ; fa ; 0xff8c9 orgs.asm:1887
+ call 0e030h ; e8 63 e7 ; 0xff8ca orgs.asm:1888
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xff8cd orgs.asm:1889
+ pop DS ; 1f ; 0xff8d0 orgs.asm:1890
+ pop ES ; 07 ; 0xff8d1 orgs.asm:1891
+ popaw ; 61 ; 0xff8d2 orgs.asm:124
+ iret ; cf ; 0xff8d3 orgs.asm:1893
+ ; disGetNextSymbol 0xff8d4 LB 0x72c -> off=0x0 cb=0000000000000012 uValue=00000000000f18d4 'int76_handler'
+int76_handler: ; 0xff8d4 LB 0x12
+ push ax ; 50 ; 0xff8d4 orgs.asm:1900
+ push DS ; 1e ; 0xff8d5 orgs.asm:1901
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff8d6 orgs.asm:1902
+ mov ds, ax ; 8e d8 ; 0xff8d9 orgs.asm:1903
+ mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8db orgs.asm:1904
+ call 0e030h ; e8 4d e7 ; 0xff8e0 orgs.asm:1905
+ pop DS ; 1f ; 0xff8e3 orgs.asm:1906
+ pop ax ; 58 ; 0xff8e4 orgs.asm:1907
+ iret ; cf ; 0xff8e5 orgs.asm:1908
+ ; disGetNextSymbol 0xff8e6 LB 0x71a -> off=0x0 cb=000000000000001f uValue=00000000000f18e6 'int70_handler'
+int70_handler: ; 0xff8e6 LB 0x1f
+ push ES ; 06 ; 0xff8e6 orgs.asm:1917
+ push DS ; 1e ; 0xff8e7 orgs.asm:1918
+ pushaw ; 60 ; 0xff8e8 orgs.asm:107
+ push CS ; 0e ; 0xff8e9 orgs.asm:113
+ pop DS ; 1f ; 0xff8ea orgs.asm:114
+ cld ; fc ; 0xff8eb orgs.asm:115
+ call 06a71h ; e8 82 71 ; 0xff8ec orgs.asm:1921
+ popaw ; 61 ; 0xff8ef orgs.asm:124
+ pop DS ; 1f ; 0xff8f0 orgs.asm:1923
+ pop ES ; 07 ; 0xff8f1 orgs.asm:1924
+ iret ; cf ; 0xff8f2 orgs.asm:1925
+ jnbe short 0f8fah ; 77 05 ; 0xff8f3 orgs.asm:1935
+ cmp ax, 000b0h ; 3d b0 00 ; 0xff8f5 orgs.asm:1936
+ jc short 0f902h ; 72 08 ; 0xff8f8 orgs.asm:1937
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xff8fa orgs.asm:1940
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8fc orgs.asm:1941
+ inc byte [word 00070h] ; fe 06 70 00 ; 0xff8fe orgs.asm:1943
+ jmp near 0fec1h ; e9 bc 05 ; 0xff902 orgs.asm:1945
+ ; 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:1979
+ push DS ; 1e ; 0xffe6f orgs.asm:1980
+ pushaw ; 60 ; 0xffe70 orgs.asm:107
+ push CS ; 0e ; 0xffe71 orgs.asm:113
+ pop DS ; 1f ; 0xffe72 orgs.asm:114
+ cld ; fc ; 0xffe73 orgs.asm:115
+ call 06b19h ; e8 a2 6c ; 0xffe74 orgs.asm:1984
+ popaw ; 61 ; 0xffe77 orgs.asm:124
+ pop DS ; 1f ; 0xffe78 orgs.asm:1986
+ pop ES ; 07 ; 0xffe79 orgs.asm:1987
+ iret ; cf ; 0xffe7a orgs.asm:1988
+ ; 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:2001
+ push ax ; 50 ; 0xffea6 orgs.asm:2002
+ push DS ; 1e ; 0xffea7 orgs.asm:2004
+ push dx ; 52 ; 0xffea8 orgs.asm:2005
+ mov ax, strict word 00040h ; b8 40 00 ; 0xffea9 orgs.asm:2006
+ mov ds, ax ; 8e d8 ; 0xffeac orgs.asm:2007
+ mov ax, word [0006ch] ; a1 6c 00 ; 0xffeae orgs.asm:2013
+ mov dx, word [word 0006eh] ; 8b 16 6e 00 ; 0xffeb1 orgs.asm:2014
+ inc ax ; 40 ; 0xffeb5 orgs.asm:2015
+ jne short 0feb9h ; 75 01 ; 0xffeb6 orgs.asm:2016
+ inc dx ; 42 ; 0xffeb8 orgs.asm:2017
+ cmp dx, strict byte 00018h ; 83 fa 18 ; 0xffeb9 orgs.asm:2026
+ jc short 0fec1h ; 72 03 ; 0xffebc orgs.asm:2027
+ jmp near 0f8f3h ; e9 32 fa ; 0xffebe orgs.asm:2028
+ mov word [0006ch], ax ; a3 6c 00 ; 0xffec1 orgs.asm:2040
+ mov word [word 0006eh], dx ; 89 16 6e 00 ; 0xffec4 orgs.asm:2041
+ mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:2045
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xffecb orgs.asm:2046
+ je short 0feddh ; 74 0e ; 0xffecd orgs.asm:2047
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xffecf orgs.asm:2048
+ mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:2049
+ jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:2050
+ mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:2052
+ in AL, DX ; ec ; 0xffed9 orgs.asm:2053
+ and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:2054
+ out DX, AL ; ee ; 0xffedc orgs.asm:2055
+ int 01ch ; cd 1c ; 0xffedd orgs.asm:2058
+ cli ; fa ; 0xffedf orgs.asm:2060
+ call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2061
+ pop dx ; 5a ; 0xffee3 orgs.asm:2062
+ pop DS ; 1f ; 0xffee4 orgs.asm:2063
+ pop ax ; 58 ; 0xffee5 orgs.asm:2068
+ iret ; cf ; 0xffee6 orgs.asm:2070
+ ; 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:2095
+ ; 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:2104
+ 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:2114
+ ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
+ db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0d8h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
new file mode 100644
index 00000000..90f623ca
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
@@ -0,0 +1 @@
+21db2300f54bae35aef5b24839864806 *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..2b0294cc
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
@@ -0,0 +1,19198 @@
+; $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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: bios.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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 - ATA disk support.
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: eltorito.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: timepci.c
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: scsi.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; SCSI host adapter driver to boot from SCSI disks
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: ahci.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: virtio.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; VirtIO-SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2019-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: buslogic.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; BusLogic SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2021-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: lsilogic.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; LsiLogic SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2021-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: apm.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; APM BIOS support. Implements APM version 1.2.
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: pcibios.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PCI BIOS support.
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: pciutil.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Utility routines for calling the PCI BIOS.
+;
+;
+;
+; Copyright (C) 2011-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: vds.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Utility routines for calling the Virtual DMA Services.
+;
+;
+;
+; Copyright (C) 2011-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: __U4M.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: __U4D.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: __U8RS.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: __U8LS.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: fmemset.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: fmemcpy.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: pcibio32.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+
+;
+; Source file: apm_pm.asm
+;
+; $Id:
+; Protected-mode APM implementation.
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: orgs.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; ???
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+
+
+
+section _DATA progbits vstart=0x0 align=1 ; size=0xf0 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0000 LB 0xf0 -> 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 0x95 -> 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 0x86 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc'
+_pktacc: ; 0xf006a LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 0a9h, 02ch, 0cah, 07dh, 06ah, 08ch
+ ; disGetNextSymbol 0xf0076 LB 0x7a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst'
+_softrst: ; 0xf0076 LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 0e8h, 02eh, 053h, 03ch, 053h, 03ch
+ ; disGetNextSymbol 0xf0082 LB 0x6e -> off=0x0 cb=0000000000000018 uValue=00000000000f0082 '_dskacc'
+_dskacc: ; 0xf0082 LB 0x18
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 099h, 02bh, 04eh, 02ch, 000h, 000h, 000h, 000h
+ db 0c6h, 07bh, 0c8h, 07ch, 040h, 08bh, 0e6h, 08bh
+ ; disGetNextSymbol 0xf009a LB 0x56 -> off=0x0 cb=0000000000000056 uValue=00000000000f009a '_hbaacc'
+_hbaacc: ; 0xf009a LB 0x56
+ db 000h, 010h, 030h, 000h, 000h, 000h, 02fh, 0a6h, 092h, 0a3h, 068h, 0a4h, 000h, 010h, 054h, 000h
+ db 000h, 000h, 02fh, 0a6h, 092h, 0a3h, 068h, 0a4h, 04bh, 010h, 040h, 010h, 000h, 000h, 0ddh, 0a0h
+ db 053h, 09fh, 007h, 0a0h, 0f4h, 01ah, 048h, 010h, 000h, 000h, 0dch, 09dh, 011h, 098h, 067h, 099h
+ db 0ffh, 0ffh, 0ffh, 0ffh, 052h, 0a1h, 02eh, 0a1h, 053h, 09fh, 007h, 0a0h, 030h, 003h, 034h, 003h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h, 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h
+ db 0f3h, 000h, 000h, 000h, 000h, 000h
+
+section CONST progbits vstart=0xf0 align=1 ; size=0xd14 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf00f0 LB 0xd14 -> off=0xd14 cb=0000000000000000 uValue=00000000000f0e04 'bios_cvs_version_string'
+ db 'CPUID EDX: 0x%lx', 00ah, 000h
+ db 'NMI Handler called', 00ah, 000h
+ db 'INT18: BOOT FAILURE', 00ah, 000h
+ db 'Bootfail', 000h
+ db '%s', 00ah, 000h
+ db 'FATAL: ', 000h
+ db 'bios_printf: unknown %ll format', 00ah, 000h
+ db 'bios_printf: unknown format', 00ah, 000h
+ db 'No PCI IDE controller, not probing IDE', 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!', 00ah, 000h
+ db 'Could not read from the boot medium!', 00ah, 000h
+ db 'Please insert a bootable medium and reboot.', 00ah, 000h
+ db 'CDROM boot failure code : %04x', 00ah, 000h
+ db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 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_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
+ 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=0xe04 align=1 ; size=0x3fa class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0e04 LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0e04 'bios_cvs_version_string'
+bios_cvs_version_string: ; 0xf0e04 LB 0x12
+ db 'VirtualBox 7.0.14', 000h
+ ; disGetNextSymbol 0xf0e16 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0e16 '_bios_prefix_string'
+_bios_prefix_string: ; 0xf0e16 LB 0x8
+ db 'BIOS: ', 000h, 000h
+ ; disGetNextSymbol 0xf0e1e LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0e1e 'isotag'
+isotag: ; 0xf0e1e LB 0x6
+ db 'CD001', 000h
+ ; disGetNextSymbol 0xf0e24 LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0e24 'eltorito'
+eltorito: ; 0xf0e24 LB 0x18
+ db 'EL TORITO SPECIFICATION', 000h
+ ; disGetNextSymbol 0xf0e3c LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0e3c 'drivetypes'
+drivetypes: ; 0xf0e3c 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 0xf0e64 LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0e64 'scan_to_scanascii'
+scan_to_scanascii: ; 0xf0e64 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 0xf11de LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f11de 'panic_msg_keyb_buffer_full'
+panic_msg_keyb_buffer_full: ; 0xf11de LB 0x20
+ db '%s: keyboard input buffer full', 00ah, 000h
+
+ ; Padding 0x402 bytes at 0xf11fe
+ times 1026 db 0
+
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x981c class=CODE group=AUTO
+ ; disGetNextSymbol 0xf1600 LB 0x981c -> off=0x0 cb=0000000000000064 uValue=00000000000f0000 'rom_scan'
+rom_scan: ; 0xf1600 LB 0x64
+ push bp ; 55 ; 0xf1600 post.c:106
+ mov bp, sp ; 89 e5 ; 0xf1601
+ push bx ; 53 ; 0xf1603
+ push cx ; 51 ; 0xf1604
+ push si ; 56 ; 0xf1605
+ push di ; 57 ; 0xf1606
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf1607
+ push ax ; 50 ; 0xf160a
+ push dx ; 52 ; 0xf160b
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf160c post.c:113
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf160f
+ jnc short 0165bh ; 73 47 ; 0xf1612
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf1614 post.c:114
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1619
+ mov es, ax ; 8e c0 ; 0xf161c post.c:116
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf161e
+ cmp word [es:bx], 0aa55h ; 26 81 3f 55 aa ; 0xf1621
+ jne short 01654h ; 75 2c ; 0xf1626
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1628 post.c:122
+ mov word [bp-010h], strict word 00003h ; c7 46 f0 03 00 ; 0xf162b
+ call far [bp-010h] ; ff 5e f0 ; 0xf1630 post.c:123
+ cli ; fa ; 0xf1633 post.c:124
+ mov ax, 0f000h ; b8 00 f0 ; 0xf1634 post.c:125
+ mov ds, ax ; 8e d8 ; 0xf1637
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf1639 post.c:130
+ mov al, byte [es:bx+002h] ; 26 8a 47 02 ; 0xf163c
+ add AL, strict byte 003h ; 04 03 ; 0xf1640
+ and AL, strict byte 0fch ; 24 fc ; 0xf1642
+ xor ah, ah ; 30 e4 ; 0xf1644 post.c:131
+ cwd ; 99 ; 0xf1646
+ sal dx, 002h ; c1 e2 02 ; 0xf1647
+ db 01bh, 0c2h
+ ; sbb ax, dx ; 1b c2 ; 0xf164a
+ sar ax, 002h ; c1 f8 02 ; 0xf164c
+ add word [bp-012h], ax ; 01 46 ee ; 0xf164f
+ jmp short 0160ch ; eb b8 ; 0xf1652 post.c:133
+ add word [bp-012h], 00080h ; 81 46 ee 80 00 ; 0xf1654 post.c:135
+ jmp short 0160ch ; eb b1 ; 0xf1659 post.c:137
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf165b post.c:138
+ pop di ; 5f ; 0xf165e
+ pop si ; 5e ; 0xf165f
+ pop cx ; 59 ; 0xf1660
+ pop bx ; 5b ; 0xf1661
+ pop bp ; 5d ; 0xf1662
+ retn ; c3 ; 0xf1663
+ ; disGetNextSymbol 0xf1664 LB 0x97b8 -> off=0x0 cb=0000000000000042 uValue=00000000000f0064 'is_cpuid_supported'
+is_cpuid_supported: ; 0xf1664 LB 0x42
+ push bp ; 55 ; 0xf1664 post.c:145
+ mov bp, sp ; 89 e5 ; 0xf1665
+ push bx ; 53 ; 0xf1667
+ push cx ; 51 ; 0xf1668
+ push dx ; 52 ; 0xf1669
+ pushfd ; 66 9c ; 0xf166a post.c:149
+ pop edx ; 66 5a ; 0xf166c
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xf166e
+ shr edx, 010h ; 66 c1 ea 10 ; 0xf1670
+ mov bx, ax ; 89 c3 ; 0xf1674
+ mov cx, dx ; 89 d1 ; 0xf1676
+ xor dl, 020h ; 80 f2 20 ; 0xf1678 post.c:150
+ sal edx, 010h ; 66 c1 e2 10 ; 0xf167b post.c:151
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf167f
+ push edx ; 66 52 ; 0xf1681
+ popfd ; 66 9d ; 0xf1683
+ pushfd ; 66 9c ; 0xf1685 post.c:152
+ pop edx ; 66 5a ; 0xf1687
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xf1689
+ shr edx, 010h ; 66 c1 ea 10 ; 0xf168b
+ cmp cx, dx ; 39 d1 ; 0xf168f post.c:153
+ jne short 01697h ; 75 04 ; 0xf1691
+ cmp bx, ax ; 39 c3 ; 0xf1693
+ je short 0169ch ; 74 05 ; 0xf1695
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1697
+ jmp short 0169eh ; eb 02 ; 0xf169a
+ xor ax, ax ; 31 c0 ; 0xf169c
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf169e post.c:154
+ pop dx ; 5a ; 0xf16a1
+ pop cx ; 59 ; 0xf16a2
+ pop bx ; 5b ; 0xf16a3
+ pop bp ; 5d ; 0xf16a4
+ retn ; c3 ; 0xf16a5
+ ; disGetNextSymbol 0xf16a6 LB 0x9776 -> off=0x0 cb=00000000000000c4 uValue=00000000000f00a6 'apic_setup'
+apic_setup: ; 0xf16a6 LB 0xc4
+ push bp ; 55 ; 0xf16a6 post.c:179
+ mov bp, sp ; 89 e5 ; 0xf16a7
+ push si ; 56 ; 0xf16a9
+ push di ; 57 ; 0xf16aa
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf16ab
+ call 01664h ; e8 b3 ff ; 0xf16ae post.c:188
+ test ax, ax ; 85 c0 ; 0xf16b1
+ je near 01763h ; 0f 84 ac 00 ; 0xf16b3
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf16b7 post.c:193
+ xor dx, dx ; 31 d2 ; 0xf16ba
+ push SS ; 16 ; 0xf16bc
+ pop ES ; 07 ; 0xf16bd
+ lea di, [bp-016h] ; 8d 7e ea ; 0xf16be
+ sal edx, 010h ; 66 c1 e2 10 ; 0xf16c1
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf16c5
+ db 066h, 08bh, 0c2h
+ ; mov eax, edx ; 66 8b c2 ; 0xf16c7
+ cpuid ; 0f a2 ; 0xf16ca
+ db 066h, 026h, 089h, 005h
+ ; mov dword [es:di], eax ; 66 26 89 05 ; 0xf16cc
+ db 066h, 026h, 089h, 05dh, 004h
+ ; mov dword [es:di+004h], ebx ; 66 26 89 5d 04 ; 0xf16d0
+ db 066h, 026h, 089h, 04dh, 008h
+ ; mov dword [es:di+008h], ecx ; 66 26 89 4d 08 ; 0xf16d5
+ db 066h, 026h, 089h, 055h, 00ch
+ ; mov dword [es:di+00ch], edx ; 66 26 89 55 0c ; 0xf16da
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf16df post.c:194
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf16e2
+ push dx ; 52 ; 0xf16e5
+ push ax ; 50 ; 0xf16e6
+ push 000f0h ; 68 f0 00 ; 0xf16e7
+ push strict byte 00004h ; 6a 04 ; 0xf16ea
+ call 01a68h ; e8 79 03 ; 0xf16ec
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf16ef
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf16f2 post.c:195
+ test ah, 002h ; f6 c4 02 ; 0xf16f5
+ je short 01763h ; 74 69 ; 0xf16f8
+ mov ax, strict word 00078h ; b8 78 00 ; 0xf16fa post.c:200
+ call 0176ah ; e8 6a 00 ; 0xf16fd
+ xor si, si ; 31 f6 ; 0xf1700 post.c:202
+ xor di, di ; 31 ff ; 0xf1702
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf1704 post.c:203
+ jne short 0170dh ; 75 05 ; 0xf1706
+ mov di, 00400h ; bf 00 04 ; 0xf1708 post.c:204
+ jmp short 0171ch ; eb 0f ; 0xf170b post.c:205
+ test al, al ; 84 c0 ; 0xf170d
+ jne short 01714h ; 75 03 ; 0xf170f
+ mov si, 00800h ; be 00 08 ; 0xf1711 post.c:206
+ test di, di ; 85 ff ; 0xf1714 post.c:210
+ jne short 0171ch ; 75 04 ; 0xf1716
+ test si, si ; 85 f6 ; 0xf1718
+ je short 01763h ; 74 47 ; 0xf171a
+ mov ax, strict word 0001bh ; b8 1b 00 ; 0xf171c post.c:211
+ xor cx, cx ; 31 c9 ; 0xf171f
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xf1721
+ db 08bh, 0c8h
+ ; mov cx, ax ; 8b c8 ; 0xf1725
+ rdmsr ; 0f 32 ; 0xf1727
+ xchg edx, eax ; 66 92 ; 0xf1729
+ db 08bh, 0d8h
+ ; mov bx, ax ; 8b d8 ; 0xf172b
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf172d
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xf1731
+ shr edx, 010h ; 66 c1 ea 10 ; 0xf1733
+ xchg dx, cx ; 87 ca ; 0xf1737
+ mov word [bp-006h], si ; 89 76 fa ; 0xf1739 post.c:212
+ not word [bp-006h] ; f7 56 fa ; 0xf173c
+ and dx, word [bp-006h] ; 23 56 fa ; 0xf173f
+ or dx, di ; 09 fa ; 0xf1742 post.c:213
+ mov si, strict word 0001bh ; be 1b 00 ; 0xf1744 post.c:214
+ xor di, di ; 31 ff ; 0xf1747
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf1749
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xf174d
+ xchg dx, cx ; 87 ca ; 0xf174f
+ sal edx, 010h ; 66 c1 e2 10 ; 0xf1751
+ db 08bh, 0d1h
+ ; mov dx, cx ; 8b d1 ; 0xf1755
+ xchg edx, eax ; 66 92 ; 0xf1757
+ db 08bh, 0cfh
+ ; mov cx, di ; 8b cf ; 0xf1759
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xf175b
+ db 08bh, 0ceh
+ ; mov cx, si ; 8b ce ; 0xf175f
+ wrmsr ; 0f 30 ; 0xf1761
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1763 post.c:216
+ pop di ; 5f ; 0xf1766
+ pop si ; 5e ; 0xf1767
+ pop bp ; 5d ; 0xf1768
+ retn ; c3 ; 0xf1769
+ ; disGetNextSymbol 0xf176a LB 0x96b2 -> off=0x0 cb=000000000000001d uValue=00000000000f016a 'inb_cmos'
+inb_cmos: ; 0xf176a LB 0x1d
+ push bp ; 55 ; 0xf176a bios.c:76
+ mov bp, sp ; 89 e5 ; 0xf176b
+ push dx ; 52 ; 0xf176d
+ mov AH, strict byte 070h ; b4 70 ; 0xf176e bios.c:78
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1770 bios.c:80
+ jc short 01776h ; 72 02 ; 0xf1772
+ mov AH, strict byte 072h ; b4 72 ; 0xf1774 bios.c:81
+ movzx dx, ah ; 0f b6 d4 ; 0xf1776 bios.c:82
+ out DX, AL ; ee ; 0xf1779
+ movzx dx, ah ; 0f b6 d4 ; 0xf177a bios.c:83
+ inc dx ; 42 ; 0xf177d
+ in AL, DX ; ec ; 0xf177e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf177f
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1781 bios.c:84
+ pop dx ; 5a ; 0xf1784
+ pop bp ; 5d ; 0xf1785
+ retn ; c3 ; 0xf1786
+ ; disGetNextSymbol 0xf1787 LB 0x9695 -> off=0x0 cb=000000000000001f uValue=00000000000f0187 'outb_cmos'
+outb_cmos: ; 0xf1787 LB 0x1f
+ push bp ; 55 ; 0xf1787 bios.c:86
+ mov bp, sp ; 89 e5 ; 0xf1788
+ push bx ; 53 ; 0xf178a
+ mov ah, dl ; 88 d4 ; 0xf178b
+ mov BL, strict byte 070h ; b3 70 ; 0xf178d bios.c:88
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf178f bios.c:90
+ jc short 01795h ; 72 02 ; 0xf1791
+ mov BL, strict byte 072h ; b3 72 ; 0xf1793 bios.c:91
+ movzx dx, bl ; 0f b6 d3 ; 0xf1795 bios.c:92
+ out DX, AL ; ee ; 0xf1798
+ movzx dx, bl ; 0f b6 d3 ; 0xf1799 bios.c:93
+ inc dx ; 42 ; 0xf179c
+ mov al, ah ; 88 e0 ; 0xf179d
+ out DX, AL ; ee ; 0xf179f
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf17a0 bios.c:94
+ pop bx ; 5b ; 0xf17a3
+ pop bp ; 5d ; 0xf17a4
+ retn ; c3 ; 0xf17a5
+ ; disGetNextSymbol 0xf17a6 LB 0x9676 -> off=0x0 cb=0000000000000025 uValue=00000000000f01a6 'get_cmos_word'
+get_cmos_word: ; 0xf17a6 LB 0x25
+ push bp ; 55 ; 0xf17a6 bios.c:99
+ mov bp, sp ; 89 e5 ; 0xf17a7
+ push bx ; 53 ; 0xf17a9
+ push dx ; 52 ; 0xf17aa
+ mov dl, al ; 88 c2 ; 0xf17ab
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf17ad bios.c:101
+ xor ah, ah ; 30 e4 ; 0xf17af
+ call 0176ah ; e8 b6 ff ; 0xf17b1
+ movzx bx, al ; 0f b6 d8 ; 0xf17b4
+ sal bx, 008h ; c1 e3 08 ; 0xf17b7
+ movzx ax, dl ; 0f b6 c2 ; 0xf17ba
+ call 0176ah ; e8 aa ff ; 0xf17bd
+ xor ah, ah ; 30 e4 ; 0xf17c0
+ or ax, bx ; 09 d8 ; 0xf17c2
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf17c4 bios.c:103
+ pop dx ; 5a ; 0xf17c7
+ pop bx ; 5b ; 0xf17c8
+ pop bp ; 5d ; 0xf17c9
+ retn ; c3 ; 0xf17ca
+ ; disGetNextSymbol 0xf17cb LB 0x9651 -> off=0x0 cb=000000000000006a uValue=00000000000f01cb 'dummy_isr_function'
+dummy_isr_function: ; 0xf17cb LB 0x6a
+ push bp ; 55 ; 0xf17cb bios.c:105
+ mov bp, sp ; 89 e5 ; 0xf17cc
+ push ax ; 50 ; 0xf17ce
+ mov CH, strict byte 0ffh ; b5 ff ; 0xf17cf bios.c:113
+ mov AL, strict byte 00bh ; b0 0b ; 0xf17d1 bios.c:115
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf17d3
+ out DX, AL ; ee ; 0xf17d6
+ in AL, DX ; ec ; 0xf17d7 bios.c:116
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf17d8
+ mov bx, ax ; 89 c3 ; 0xf17da
+ mov cl, al ; 88 c1 ; 0xf17dc
+ test al, al ; 84 c0 ; 0xf17de bios.c:117
+ je short 01826h ; 74 44 ; 0xf17e0
+ mov AL, strict byte 00bh ; b0 0b ; 0xf17e2 bios.c:118
+ mov dx, 000a0h ; ba a0 00 ; 0xf17e4
+ out DX, AL ; ee ; 0xf17e7
+ in AL, DX ; ec ; 0xf17e8 bios.c:119
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf17e9
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf17eb
+ cmp byte [bp-002h], 000h ; 80 7e fe 00 ; 0xf17ee bios.c:120
+ je short 0180ch ; 74 18 ; 0xf17f2
+ mov dx, 000a1h ; ba a1 00 ; 0xf17f4 bios.c:121
+ in AL, DX ; ec ; 0xf17f7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf17f8
+ movzx bx, al ; 0f b6 d8 ; 0xf17fa bios.c:122
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf17fd
+ or ax, bx ; 09 d8 ; 0xf1801
+ out DX, AL ; ee ; 0xf1803
+ mov AL, strict byte 020h ; b0 20 ; 0xf1804 bios.c:123
+ mov dx, 000a0h ; ba a0 00 ; 0xf1806
+ out DX, AL ; ee ; 0xf1809
+ jmp short 0181eh ; eb 12 ; 0xf180a bios.c:124
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf180c bios.c:125
+ in AL, DX ; ec ; 0xf180f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1810
+ and cl, 0fbh ; 80 e1 fb ; 0xf1812 bios.c:126
+ movzx bx, al ; 0f b6 d8 ; 0xf1815 bios.c:127
+ movzx ax, cl ; 0f b6 c1 ; 0xf1818
+ or ax, bx ; 09 d8 ; 0xf181b
+ out DX, AL ; ee ; 0xf181d
+ mov AL, strict byte 020h ; b0 20 ; 0xf181e bios.c:129
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1820
+ out DX, AL ; ee ; 0xf1823
+ mov ch, cl ; 88 cd ; 0xf1824 bios.c:130
+ mov bx, strict word 0006bh ; bb 6b 00 ; 0xf1826 bios.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1829
+ mov es, ax ; 8e c0 ; 0xf182c
+ mov byte [es:bx], ch ; 26 88 2f ; 0xf182e
+ mov sp, bp ; 89 ec ; 0xf1831 bios.c:133
+ pop bp ; 5d ; 0xf1833
+ retn ; c3 ; 0xf1834
+ ; disGetNextSymbol 0xf1835 LB 0x95e7 -> off=0x0 cb=0000000000000012 uValue=00000000000f0235 'nmi_handler_msg'
+nmi_handler_msg: ; 0xf1835 LB 0x12
+ push bp ; 55 ; 0xf1835 bios.c:136
+ mov bp, sp ; 89 e5 ; 0xf1836
+ push 00102h ; 68 02 01 ; 0xf1838 bios.c:138
+ push strict byte 00007h ; 6a 07 ; 0xf183b
+ call 01a68h ; e8 28 02 ; 0xf183d
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1840
+ mov sp, bp ; 89 ec ; 0xf1843 bios.c:139
+ pop bp ; 5d ; 0xf1845
+ retn ; c3 ; 0xf1846
+ ; disGetNextSymbol 0xf1847 LB 0x95d5 -> off=0x0 cb=000000000000002d uValue=00000000000f0247 'int18_panic_msg'
+int18_panic_msg: ; 0xf1847 LB 0x2d
+ push bp ; 55 ; 0xf1847 bios.c:141
+ mov bp, sp ; 89 e5 ; 0xf1848
+ mov bx, 00e16h ; bb 16 0e ; 0xf184a bios.c:143
+ mov cx, ds ; 8c d9 ; 0xf184d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf184f
+ call 01a27h ; e8 d2 01 ; 0xf1852
+ push 00116h ; 68 16 01 ; 0xf1855
+ push strict byte 00004h ; 6a 04 ; 0xf1858
+ call 01a68h ; e8 0b 02 ; 0xf185a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf185d
+ mov bx, 0012bh ; bb 2b 01 ; 0xf1860 bios.c:144
+ mov dx, 0040fh ; ba 0f 04 ; 0xf1863
+ mov al, byte [bx] ; 8a 07 ; 0xf1866
+ out DX, AL ; ee ; 0xf1868
+ inc bx ; 43 ; 0xf1869
+ mov al, byte [bx] ; 8a 07 ; 0xf186a
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xf186c
+ jne short 01868h ; 75 f8 ; 0xf186e
+ mov sp, bp ; 89 ec ; 0xf1870 bios.c:145
+ pop bp ; 5d ; 0xf1872
+ retn ; c3 ; 0xf1873
+ ; disGetNextSymbol 0xf1874 LB 0x95a8 -> off=0x0 cb=0000000000000020 uValue=00000000000f0274 'log_bios_start'
+log_bios_start: ; 0xf1874 LB 0x20
+ push bp ; 55 ; 0xf1874 bios.c:147
+ mov bp, sp ; 89 e5 ; 0xf1875
+ mov bx, 00e16h ; bb 16 0e ; 0xf1877 bios.c:152
+ mov cx, ds ; 8c d9 ; 0xf187a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf187c
+ call 01a27h ; e8 a5 01 ; 0xf187f
+ push 00e04h ; 68 04 0e ; 0xf1882
+ push 00134h ; 68 34 01 ; 0xf1885
+ push strict byte 00004h ; 6a 04 ; 0xf1888
+ call 01a68h ; e8 db 01 ; 0xf188a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf188d
+ mov sp, bp ; 89 ec ; 0xf1890 bios.c:153
+ pop bp ; 5d ; 0xf1892
+ retn ; c3 ; 0xf1893
+ ; disGetNextSymbol 0xf1894 LB 0x9588 -> off=0x0 cb=0000000000000027 uValue=00000000000f0294 'print_bios_banner'
+print_bios_banner: ; 0xf1894 LB 0x27
+ push bp ; 55 ; 0xf1894 bios.c:172
+ mov bp, sp ; 89 e5 ; 0xf1895
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf1897 bios.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf189a
+ mov es, ax ; 8e c0 ; 0xf189d
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf189f
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf18a2 bios.c:63
+ cmp ax, 01234h ; 3d 34 12 ; 0xf18a7 bios.c:178
+ jne short 018b4h ; 75 08 ; 0xf18aa
+ mov AL, strict byte 003h ; b0 03 ; 0xf18ac bios.c:181
+ mov AH, strict byte 000h ; b4 00 ; 0xf18ae
+ int 010h ; cd 10 ; 0xf18b0
+ jmp short 018b7h ; eb 03 ; 0xf18b2 bios.c:182
+ call 078d1h ; e8 1a 60 ; 0xf18b4 bios.c:185
+ mov sp, bp ; 89 ec ; 0xf18b7 bios.c:212
+ pop bp ; 5d ; 0xf18b9
+ retn ; c3 ; 0xf18ba
+ ; disGetNextSymbol 0xf18bb LB 0x9561 -> off=0x0 cb=000000000000003b uValue=00000000000f02bb 'send'
+send: ; 0xf18bb LB 0x3b
+ push bp ; 55 ; 0xf18bb print.c:82
+ mov bp, sp ; 89 e5 ; 0xf18bc
+ push bx ; 53 ; 0xf18be
+ push cx ; 51 ; 0xf18bf
+ mov bx, ax ; 89 c3 ; 0xf18c0
+ mov cl, dl ; 88 d1 ; 0xf18c2
+ test AL, strict byte 008h ; a8 08 ; 0xf18c4 print.c:90
+ je short 018ceh ; 74 06 ; 0xf18c6
+ mov al, dl ; 88 d0 ; 0xf18c8 print.c:91
+ mov dx, 00403h ; ba 03 04 ; 0xf18ca
+ out DX, AL ; ee ; 0xf18cd
+ test bl, 004h ; f6 c3 04 ; 0xf18ce print.c:92
+ je short 018d9h ; 74 06 ; 0xf18d1
+ mov al, cl ; 88 c8 ; 0xf18d3 print.c:93
+ mov dx, 00504h ; ba 04 05 ; 0xf18d5
+ out DX, AL ; ee ; 0xf18d8
+ test bl, 002h ; f6 c3 02 ; 0xf18d9 print.c:95
+ je short 018efh ; 74 11 ; 0xf18dc
+ cmp cl, 00ah ; 80 f9 0a ; 0xf18de print.c:96
+ jne short 018e9h ; 75 06 ; 0xf18e1
+ mov AL, strict byte 00dh ; b0 0d ; 0xf18e3 print.c:97
+ mov AH, strict byte 00eh ; b4 0e ; 0xf18e5
+ int 010h ; cd 10 ; 0xf18e7
+ mov al, cl ; 88 c8 ; 0xf18e9 print.c:98
+ mov AH, strict byte 00eh ; b4 0e ; 0xf18eb
+ int 010h ; cd 10 ; 0xf18ed
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18ef print.c:100
+ pop cx ; 59 ; 0xf18f2
+ pop bx ; 5b ; 0xf18f3
+ pop bp ; 5d ; 0xf18f4
+ retn ; c3 ; 0xf18f5
+ ; disGetNextSymbol 0xf18f6 LB 0x9526 -> off=0x0 cb=000000000000005f uValue=00000000000f02f6 'put_int'
+put_int: ; 0xf18f6 LB 0x5f
+ push bp ; 55 ; 0xf18f6 print.c:102
+ mov bp, sp ; 89 e5 ; 0xf18f7
+ push si ; 56 ; 0xf18f9
+ push di ; 57 ; 0xf18fa
+ push ax ; 50 ; 0xf18fb
+ push ax ; 50 ; 0xf18fc
+ mov si, ax ; 89 c6 ; 0xf18fd
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf18ff
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf1902 print.c:104
+ mov ax, dx ; 89 d0 ; 0xf1905
+ cwd ; 99 ; 0xf1907
+ idiv di ; f7 ff ; 0xf1908
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf190a
+ test ax, ax ; 85 c0 ; 0xf190d print.c:105
+ je short 0191bh ; 74 0a ; 0xf190f
+ dec bx ; 4b ; 0xf1911 print.c:106
+ mov dx, ax ; 89 c2 ; 0xf1912
+ mov ax, si ; 89 f0 ; 0xf1914
+ call 018f6h ; e8 dd ff ; 0xf1916
+ jmp short 01936h ; eb 1b ; 0xf1919 print.c:107
+ dec bx ; 4b ; 0xf191b print.c:108
+ test bx, bx ; 85 db ; 0xf191c
+ jle short 0192ah ; 7e 0a ; 0xf191e
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1920 print.c:109
+ mov ax, si ; 89 f0 ; 0xf1923
+ call 018bbh ; e8 93 ff ; 0xf1925
+ jmp short 0191bh ; eb f1 ; 0xf1928
+ test cx, cx ; 85 c9 ; 0xf192a print.c:110
+ je short 01936h ; 74 08 ; 0xf192c
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf192e print.c:111
+ mov ax, si ; 89 f0 ; 0xf1931
+ call 018bbh ; e8 85 ff ; 0xf1933
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1936 print.c:113
+ mov DL, strict byte 00ah ; b2 0a ; 0xf1939
+ mul dl ; f6 e2 ; 0xf193b
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf193d
+ sub dl, al ; 28 c2 ; 0xf1940
+ mov al, dl ; 88 d0 ; 0xf1942
+ add AL, strict byte 030h ; 04 30 ; 0xf1944
+ movzx dx, al ; 0f b6 d0 ; 0xf1946
+ mov ax, si ; 89 f0 ; 0xf1949
+ call 018bbh ; e8 6d ff ; 0xf194b
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf194e print.c:114
+ pop di ; 5f ; 0xf1951
+ pop si ; 5e ; 0xf1952
+ pop bp ; 5d ; 0xf1953
+ retn ; c3 ; 0xf1954
+ ; disGetNextSymbol 0xf1955 LB 0x94c7 -> off=0x0 cb=0000000000000060 uValue=00000000000f0355 'put_uint'
+put_uint: ; 0xf1955 LB 0x60
+ push bp ; 55 ; 0xf1955 print.c:116
+ mov bp, sp ; 89 e5 ; 0xf1956
+ push si ; 56 ; 0xf1958
+ push di ; 57 ; 0xf1959
+ push ax ; 50 ; 0xf195a
+ push ax ; 50 ; 0xf195b
+ mov si, ax ; 89 c6 ; 0xf195c
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf195e
+ mov ax, dx ; 89 d0 ; 0xf1961 print.c:118
+ xor dx, dx ; 31 d2 ; 0xf1963
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf1965
+ div di ; f7 f7 ; 0xf1968
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf196a
+ test ax, ax ; 85 c0 ; 0xf196d print.c:119
+ je short 0197bh ; 74 0a ; 0xf196f
+ dec bx ; 4b ; 0xf1971 print.c:120
+ mov dx, ax ; 89 c2 ; 0xf1972
+ mov ax, si ; 89 f0 ; 0xf1974
+ call 01955h ; e8 dc ff ; 0xf1976
+ jmp short 01996h ; eb 1b ; 0xf1979 print.c:121
+ dec bx ; 4b ; 0xf197b print.c:122
+ test bx, bx ; 85 db ; 0xf197c
+ jle short 0198ah ; 7e 0a ; 0xf197e
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1980 print.c:123
+ mov ax, si ; 89 f0 ; 0xf1983
+ call 018bbh ; e8 33 ff ; 0xf1985
+ jmp short 0197bh ; eb f1 ; 0xf1988
+ test cx, cx ; 85 c9 ; 0xf198a print.c:124
+ je short 01996h ; 74 08 ; 0xf198c
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf198e print.c:125
+ mov ax, si ; 89 f0 ; 0xf1991
+ call 018bbh ; e8 25 ff ; 0xf1993
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1996 print.c:127
+ mov DL, strict byte 00ah ; b2 0a ; 0xf1999
+ mul dl ; f6 e2 ; 0xf199b
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf199d
+ sub dl, al ; 28 c2 ; 0xf19a0
+ mov al, dl ; 88 d0 ; 0xf19a2
+ add AL, strict byte 030h ; 04 30 ; 0xf19a4
+ movzx dx, al ; 0f b6 d0 ; 0xf19a6
+ mov ax, si ; 89 f0 ; 0xf19a9
+ call 018bbh ; e8 0d ff ; 0xf19ab
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf19ae print.c:128
+ pop di ; 5f ; 0xf19b1
+ pop si ; 5e ; 0xf19b2
+ pop bp ; 5d ; 0xf19b3
+ retn ; c3 ; 0xf19b4
+ ; disGetNextSymbol 0xf19b5 LB 0x9467 -> off=0x0 cb=0000000000000072 uValue=00000000000f03b5 'put_luint'
+put_luint: ; 0xf19b5 LB 0x72
+ push bp ; 55 ; 0xf19b5 print.c:130
+ mov bp, sp ; 89 e5 ; 0xf19b6
+ push si ; 56 ; 0xf19b8
+ push di ; 57 ; 0xf19b9
+ push ax ; 50 ; 0xf19ba
+ push ax ; 50 ; 0xf19bb
+ mov si, ax ; 89 c6 ; 0xf19bc
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf19be
+ mov di, dx ; 89 d7 ; 0xf19c1
+ mov ax, bx ; 89 d8 ; 0xf19c3 print.c:132
+ mov dx, cx ; 89 ca ; 0xf19c5
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf19c7
+ xor cx, cx ; 31 c9 ; 0xf19ca
+ call 0ad20h ; e8 51 93 ; 0xf19cc
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf19cf
+ mov cx, dx ; 89 d1 ; 0xf19d2
+ mov dx, ax ; 89 c2 ; 0xf19d4 print.c:133
+ or dx, cx ; 09 ca ; 0xf19d6
+ je short 019e9h ; 74 0f ; 0xf19d8
+ push word [bp+004h] ; ff 76 04 ; 0xf19da print.c:134
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf19dd
+ mov bx, ax ; 89 c3 ; 0xf19e0
+ mov ax, si ; 89 f0 ; 0xf19e2
+ call 019b5h ; e8 ce ff ; 0xf19e4
+ jmp short 01a06h ; eb 1d ; 0xf19e7 print.c:135
+ dec di ; 4f ; 0xf19e9 print.c:136
+ test di, di ; 85 ff ; 0xf19ea
+ jle short 019f8h ; 7e 0a ; 0xf19ec
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf19ee print.c:137
+ mov ax, si ; 89 f0 ; 0xf19f1
+ call 018bbh ; e8 c5 fe ; 0xf19f3
+ jmp short 019e9h ; eb f1 ; 0xf19f6
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf19f8 print.c:138
+ je short 01a06h ; 74 08 ; 0xf19fc
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf19fe print.c:139
+ mov ax, si ; 89 f0 ; 0xf1a01
+ call 018bbh ; e8 b5 fe ; 0xf1a03
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf1a06 print.c:141
+ mov DL, strict byte 00ah ; b2 0a ; 0xf1a09
+ mul dl ; f6 e2 ; 0xf1a0b
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf1a0d
+ sub dl, al ; 28 c2 ; 0xf1a10
+ mov al, dl ; 88 d0 ; 0xf1a12
+ add AL, strict byte 030h ; 04 30 ; 0xf1a14
+ movzx dx, al ; 0f b6 d0 ; 0xf1a16
+ mov ax, si ; 89 f0 ; 0xf1a19
+ call 018bbh ; e8 9d fe ; 0xf1a1b
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1a1e print.c:142
+ pop di ; 5f ; 0xf1a21
+ pop si ; 5e ; 0xf1a22
+ pop bp ; 5d ; 0xf1a23
+ retn 00002h ; c2 02 00 ; 0xf1a24
+ ; disGetNextSymbol 0xf1a27 LB 0x93f5 -> off=0x0 cb=0000000000000021 uValue=00000000000f0427 'put_str'
+put_str: ; 0xf1a27 LB 0x21
+ push bp ; 55 ; 0xf1a27 print.c:144
+ mov bp, sp ; 89 e5 ; 0xf1a28
+ push dx ; 52 ; 0xf1a2a
+ push si ; 56 ; 0xf1a2b
+ mov si, ax ; 89 c6 ; 0xf1a2c
+ mov es, cx ; 8e c1 ; 0xf1a2e print.c:148
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf1a30
+ test dl, dl ; 84 d2 ; 0xf1a33
+ je short 01a41h ; 74 0a ; 0xf1a35
+ xor dh, dh ; 30 f6 ; 0xf1a37 print.c:149
+ mov ax, si ; 89 f0 ; 0xf1a39
+ call 018bbh ; e8 7d fe ; 0xf1a3b
+ inc bx ; 43 ; 0xf1a3e print.c:150
+ jmp short 01a2eh ; eb ed ; 0xf1a3f print.c:151
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1a41 print.c:152
+ pop si ; 5e ; 0xf1a44
+ pop dx ; 5a ; 0xf1a45
+ pop bp ; 5d ; 0xf1a46
+ retn ; c3 ; 0xf1a47
+ ; disGetNextSymbol 0xf1a48 LB 0x93d4 -> off=0x0 cb=0000000000000020 uValue=00000000000f0448 'put_str_near'
+put_str_near: ; 0xf1a48 LB 0x20
+ push bp ; 55 ; 0xf1a48 print.c:154
+ mov bp, sp ; 89 e5 ; 0xf1a49
+ push bx ; 53 ; 0xf1a4b
+ push cx ; 51 ; 0xf1a4c
+ mov cx, ax ; 89 c1 ; 0xf1a4d
+ mov bx, dx ; 89 d3 ; 0xf1a4f
+ mov dl, byte [bx] ; 8a 17 ; 0xf1a51 print.c:158
+ test dl, dl ; 84 d2 ; 0xf1a53
+ je short 01a61h ; 74 0a ; 0xf1a55
+ xor dh, dh ; 30 f6 ; 0xf1a57 print.c:159
+ mov ax, cx ; 89 c8 ; 0xf1a59
+ call 018bbh ; e8 5d fe ; 0xf1a5b
+ inc bx ; 43 ; 0xf1a5e print.c:160
+ jmp short 01a51h ; eb f0 ; 0xf1a5f print.c:161
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1a61 print.c:162
+ pop cx ; 59 ; 0xf1a64
+ pop bx ; 5b ; 0xf1a65
+ pop bp ; 5d ; 0xf1a66
+ retn ; c3 ; 0xf1a67
+ ; disGetNextSymbol 0xf1a68 LB 0x93b4 -> off=0x0 cb=000000000000033d uValue=00000000000f0468 'bios_printf'
+bios_printf: ; 0xf1a68 LB 0x33d
+ push bp ; 55 ; 0xf1a68 print.c:175
+ mov bp, sp ; 89 e5 ; 0xf1a69
+ push bx ; 53 ; 0xf1a6b
+ push cx ; 51 ; 0xf1a6c
+ push dx ; 52 ; 0xf1a6d
+ push si ; 56 ; 0xf1a6e
+ push di ; 57 ; 0xf1a6f
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1a70
+ lea bx, [bp+008h] ; 8d 5e 08 ; 0xf1a73 print.c:183
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf1a76
+ mov [bp-014h], ss ; 8c 56 ec ; 0xf1a79
+ xor bx, bx ; 31 db ; 0xf1a7c print.c:185
+ xor di, di ; 31 ff ; 0xf1a7e print.c:186
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a80 print.c:188
+ and ax, strict word 00007h ; 25 07 00 ; 0xf1a83
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf1a86
+ jne short 01a96h ; 75 0b ; 0xf1a89
+ push 00138h ; 68 38 01 ; 0xf1a8b print.c:189
+ push strict byte 00002h ; 6a 02 ; 0xf1a8e
+ call 01a68h ; e8 d5 ff ; 0xf1a90
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1a93
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1a96 print.c:192
+ mov dl, byte [si] ; 8a 14 ; 0xf1a99
+ test dl, dl ; 84 d2 ; 0xf1a9b
+ je near 01d89h ; 0f 84 e8 02 ; 0xf1a9d
+ cmp dl, 025h ; 80 fa 25 ; 0xf1aa1 print.c:193
+ jne short 01aaeh ; 75 08 ; 0xf1aa4
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf1aa6 print.c:194
+ xor di, di ; 31 ff ; 0xf1aa9 print.c:195
+ jmp near 01d83h ; e9 d5 02 ; 0xf1aab print.c:197
+ test bx, bx ; 85 db ; 0xf1aae
+ je near 01d7bh ; 0f 84 c7 02 ; 0xf1ab0
+ cmp dl, 030h ; 80 fa 30 ; 0xf1ab4 print.c:198
+ jc short 01acch ; 72 13 ; 0xf1ab7
+ cmp dl, 039h ; 80 fa 39 ; 0xf1ab9
+ jnbe short 01acch ; 77 0e ; 0xf1abc
+ movzx ax, dl ; 0f b6 c2 ; 0xf1abe print.c:199
+ imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf1ac1
+ sub ax, strict word 00030h ; 2d 30 00 ; 0xf1ac4
+ add di, ax ; 01 c7 ; 0xf1ac7
+ jmp near 01d83h ; e9 b7 02 ; 0xf1ac9 print.c:201
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1acc print.c:202
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1acf
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1ad2
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1ad6
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1ad9
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1add
+ cmp dl, 078h ; 80 fa 78 ; 0xf1ae0 print.c:203
+ je short 01aeah ; 74 05 ; 0xf1ae3
+ cmp dl, 058h ; 80 fa 58 ; 0xf1ae5
+ jne short 01b40h ; 75 56 ; 0xf1ae8
+ test di, di ; 85 ff ; 0xf1aea print.c:204
+ jne short 01af1h ; 75 03 ; 0xf1aec
+ mov di, strict word 00004h ; bf 04 00 ; 0xf1aee print.c:205
+ cmp dl, 078h ; 80 fa 78 ; 0xf1af1 print.c:206
+ jne short 01afdh ; 75 07 ; 0xf1af4
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1af6 print.c:207
+ jmp short 01b02h ; eb 05 ; 0xf1afb print.c:208
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1afd print.c:209
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1b02 print.c:210
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1b05
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b08
+ test ax, ax ; 85 c0 ; 0xf1b0b
+ jl near 01d77h ; 0f 8c 66 02 ; 0xf1b0d
+ mov cx, ax ; 89 c1 ; 0xf1b11 print.c:211
+ sal cx, 002h ; c1 e1 02 ; 0xf1b13
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1b16
+ shr ax, CL ; d3 e8 ; 0xf1b19
+ xor ah, ah ; 30 e4 ; 0xf1b1b
+ and AL, strict byte 00fh ; 24 0f ; 0xf1b1d
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1b1f print.c:212
+ jnbe short 01b2bh ; 77 07 ; 0xf1b22
+ mov dx, ax ; 89 c2 ; 0xf1b24
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1b26
+ jmp short 01b33h ; eb 08 ; 0xf1b29
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1b2b
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1b2e
+ add dx, ax ; 01 c2 ; 0xf1b31
+ xor dh, dh ; 30 f6 ; 0xf1b33
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b35
+ call 018bbh ; e8 80 fd ; 0xf1b38
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1b3b print.c:213
+ jmp short 01b08h ; eb c8 ; 0xf1b3e
+ cmp dl, 075h ; 80 fa 75 ; 0xf1b40 print.c:215
+ jne short 01b54h ; 75 0f ; 0xf1b43
+ xor cx, cx ; 31 c9 ; 0xf1b45 print.c:216
+ mov bx, di ; 89 fb ; 0xf1b47
+ mov dx, ax ; 89 c2 ; 0xf1b49
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b4b
+ call 01955h ; e8 04 fe ; 0xf1b4e
+ jmp near 01d77h ; e9 23 02 ; 0xf1b51 print.c:218
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1b54
+ jne near 01c36h ; 0f 85 db 00 ; 0xf1b57
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1b5b
+ cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1b5e
+ jne near 01c36h ; 0f 85 d1 00 ; 0xf1b61
+ add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1b65 print.c:222
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1b69 print.c:223
+ mov dl, byte [bx] ; 8a 17 ; 0xf1b6c
+ mov word [bp-026h], ax ; 89 46 da ; 0xf1b6e print.c:225
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b71 print.c:226
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b74
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b77
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1b7b
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b7e
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf1b82
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b85 print.c:227
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b88
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b8b
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1b8f
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b92
+ mov word [bp-022h], ax ; 89 46 de ; 0xf1b96
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b99 print.c:228
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b9c
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b9f
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1ba3
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1ba6
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf1baa
+ cmp dl, 078h ; 80 fa 78 ; 0xf1bad print.c:229
+ je short 01bb7h ; 74 05 ; 0xf1bb0
+ cmp dl, 058h ; 80 fa 58 ; 0xf1bb2
+ jne short 01c28h ; 75 71 ; 0xf1bb5
+ test di, di ; 85 ff ; 0xf1bb7 print.c:230
+ jne short 01bbeh ; 75 03 ; 0xf1bb9
+ mov di, strict word 00010h ; bf 10 00 ; 0xf1bbb print.c:231
+ cmp dl, 078h ; 80 fa 78 ; 0xf1bbe print.c:232
+ jne short 01bcah ; 75 07 ; 0xf1bc1
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1bc3 print.c:233
+ jmp short 01bcfh ; eb 05 ; 0xf1bc8 print.c:234
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1bca print.c:235
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1bcf print.c:236
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1bd2
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1bd5
+ test ax, ax ; 85 c0 ; 0xf1bd8
+ jl near 01d77h ; 0f 8c 99 01 ; 0xf1bda
+ sal ax, 002h ; c1 e0 02 ; 0xf1bde print.c:237
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1be1
+ xor ax, ax ; 31 c0 ; 0xf1be4
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1be6
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1be9
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf1bec
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1bef
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf1bf2
+ mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1bf5
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf1bf8
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1bfb
+ call 0ad60h ; e8 5f 91 ; 0xf1bfe
+ mov ax, dx ; 89 d0 ; 0xf1c01
+ xor ah, dh ; 30 f4 ; 0xf1c03
+ and AL, strict byte 00fh ; 24 0f ; 0xf1c05
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1c07 print.c:238
+ jnbe short 01c13h ; 77 07 ; 0xf1c0a
+ mov dx, ax ; 89 c2 ; 0xf1c0c
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1c0e
+ jmp short 01c1bh ; eb 08 ; 0xf1c11
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1c13
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1c16
+ add dx, ax ; 01 c2 ; 0xf1c19
+ xor dh, dh ; 30 f6 ; 0xf1c1b
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c1d
+ call 018bbh ; e8 98 fc ; 0xf1c20
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1c23 print.c:239
+ jmp short 01bd5h ; eb ad ; 0xf1c26
+ push 00140h ; 68 40 01 ; 0xf1c28 print.c:241
+ push strict byte 00007h ; 6a 07 ; 0xf1c2b
+ call 01a68h ; e8 38 fe ; 0xf1c2d
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c30
+ jmp near 01d77h ; e9 41 01 ; 0xf1c33 print.c:244
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf1c36
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1c39
+ jne near 01cffh ; 0f 85 bf 00 ; 0xf1c3c
+ inc word [bp+006h] ; ff 46 06 ; 0xf1c40 print.c:245
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1c43 print.c:246
+ mov dl, byte [si] ; 8a 14 ; 0xf1c46
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1c48 print.c:247
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c4b
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1c4e
+ les si, [bp-016h] ; c4 76 ea ; 0xf1c52
+ mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1c55
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1c59
+ cmp dl, 064h ; 80 fa 64 ; 0xf1c5c print.c:248
+ jne short 01c8eh ; 75 2d ; 0xf1c5f
+ test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1c61 print.c:249
+ je short 01c7ch ; 74 15 ; 0xf1c65
+ push strict byte 00001h ; 6a 01 ; 0xf1c67 print.c:250
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1c69
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1c6c
+ neg cx ; f7 d9 ; 0xf1c6f
+ neg ax ; f7 d8 ; 0xf1c71
+ sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1c73
+ mov dx, bx ; 89 da ; 0xf1c76
+ mov bx, ax ; 89 c3 ; 0xf1c78
+ jmp short 01c85h ; eb 09 ; 0xf1c7a print.c:251
+ push strict byte 00000h ; 6a 00 ; 0xf1c7c print.c:252
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1c7e
+ mov dx, di ; 89 fa ; 0xf1c81
+ mov cx, ax ; 89 c1 ; 0xf1c83
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c85
+ call 019b5h ; e8 2a fd ; 0xf1c88
+ jmp near 01d77h ; e9 e9 00 ; 0xf1c8b print.c:254
+ cmp dl, 075h ; 80 fa 75 ; 0xf1c8e
+ jne short 01c95h ; 75 02 ; 0xf1c91
+ jmp short 01c7ch ; eb e7 ; 0xf1c93
+ cmp dl, 078h ; 80 fa 78 ; 0xf1c95 print.c:257
+ je short 01ca1h ; 74 07 ; 0xf1c98
+ cmp dl, 058h ; 80 fa 58 ; 0xf1c9a
+ jne near 01d77h ; 0f 85 d6 00 ; 0xf1c9d
+ test di, di ; 85 ff ; 0xf1ca1 print.c:259
+ jne short 01ca8h ; 75 03 ; 0xf1ca3
+ mov di, strict word 00008h ; bf 08 00 ; 0xf1ca5 print.c:260
+ cmp dl, 078h ; 80 fa 78 ; 0xf1ca8 print.c:261
+ jne short 01cb4h ; 75 07 ; 0xf1cab
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1cad print.c:262
+ jmp short 01cb9h ; eb 05 ; 0xf1cb2 print.c:263
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1cb4 print.c:264
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1cb9 print.c:265
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1cbc
+ cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf1cbf
+ jl near 01d77h ; 0f 8c b0 00 ; 0xf1cc3
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1cc7 print.c:266
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf1cca
+ sal cx, 002h ; c1 e1 02 ; 0xf1ccd
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1cd0
+ jcxz 01cdbh ; e3 06 ; 0xf1cd3
+ shr dx, 1 ; d1 ea ; 0xf1cd5
+ rcr ax, 1 ; d1 d8 ; 0xf1cd7
+ loop 01cd5h ; e2 fa ; 0xf1cd9
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf1cdb
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1cde print.c:267
+ jnbe short 01ceah ; 77 07 ; 0xf1ce1
+ mov dx, ax ; 89 c2 ; 0xf1ce3
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1ce5
+ jmp short 01cf2h ; eb 08 ; 0xf1ce8
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1cea
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ced
+ add dx, ax ; 01 c2 ; 0xf1cf0
+ xor dh, dh ; 30 f6 ; 0xf1cf2
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1cf4
+ call 018bbh ; e8 c1 fb ; 0xf1cf7
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1cfa print.c:268
+ jmp short 01cbfh ; eb c0 ; 0xf1cfd
+ cmp dl, 064h ; 80 fa 64 ; 0xf1cff print.c:271
+ jne short 01d23h ; 75 1f ; 0xf1d02
+ test byte [bp-011h], 080h ; f6 46 ef 80 ; 0xf1d04 print.c:272
+ je short 01d14h ; 74 0a ; 0xf1d08
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1d0a print.c:273
+ neg dx ; f7 da ; 0xf1d0d
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf1d0f
+ jmp short 01d1bh ; eb 07 ; 0xf1d12 print.c:274
+ xor cx, cx ; 31 c9 ; 0xf1d14 print.c:275
+ mov bx, di ; 89 fb ; 0xf1d16
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1d18
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d1b
+ call 018f6h ; e8 d5 fb ; 0xf1d1e
+ jmp short 01d77h ; eb 54 ; 0xf1d21 print.c:277
+ cmp dl, 073h ; 80 fa 73 ; 0xf1d23
+ jne short 01d35h ; 75 0d ; 0xf1d26
+ mov cx, ds ; 8c d9 ; 0xf1d28 print.c:278
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1d2a
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d2d
+ call 01a27h ; e8 f4 fc ; 0xf1d30
+ jmp short 01d77h ; eb 42 ; 0xf1d33 print.c:280
+ cmp dl, 053h ; 80 fa 53 ; 0xf1d35
+ jne short 01d5bh ; 75 21 ; 0xf1d38
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1d3a print.c:281
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1d3d
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1d40 print.c:282
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1d43
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1d46
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1d4a
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1d4d
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1d51
+ mov bx, ax ; 89 c3 ; 0xf1d54 print.c:283
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1d56
+ jmp short 01d2dh ; eb d2 ; 0xf1d59
+ cmp dl, 063h ; 80 fa 63 ; 0xf1d5b print.c:285
+ jne short 01d6ch ; 75 0c ; 0xf1d5e
+ movzx dx, byte [bp-012h] ; 0f b6 56 ee ; 0xf1d60 print.c:286
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d64
+ call 018bbh ; e8 51 fb ; 0xf1d67
+ jmp short 01d77h ; eb 0b ; 0xf1d6a print.c:288
+ push 00161h ; 68 61 01 ; 0xf1d6c print.c:289
+ push strict byte 00007h ; 6a 07 ; 0xf1d6f
+ call 01a68h ; e8 f4 fc ; 0xf1d71
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1d74
+ xor bx, bx ; 31 db ; 0xf1d77 print.c:290
+ jmp short 01d83h ; eb 08 ; 0xf1d79 print.c:293
+ xor dh, dh ; 30 f6 ; 0xf1d7b print.c:294
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d7d
+ call 018bbh ; e8 38 fb ; 0xf1d80
+ inc word [bp+006h] ; ff 46 06 ; 0xf1d83 print.c:296
+ jmp near 01a96h ; e9 0d fd ; 0xf1d86 print.c:297
+ xor ax, ax ; 31 c0 ; 0xf1d89 print.c:298
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1d8b
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1d8e
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1d91 print.c:299
+ je short 01d9bh ; 74 04 ; 0xf1d95
+ cli ; fa ; 0xf1d97 print.c:301
+ hlt ; f4 ; 0xf1d98 print.c:302
+ jmp short 01d98h ; eb fd ; 0xf1d99
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1d9b print.c:304
+ pop di ; 5f ; 0xf1d9e
+ pop si ; 5e ; 0xf1d9f
+ pop dx ; 5a ; 0xf1da0
+ pop cx ; 59 ; 0xf1da1
+ pop bx ; 5b ; 0xf1da2
+ pop bp ; 5d ; 0xf1da3
+ retn ; c3 ; 0xf1da4
+ ; disGetNextSymbol 0xf1da5 LB 0x9077 -> off=0x0 cb=00000000000000cc uValue=00000000000f07a5 'ata_init'
+ata_init: ; 0xf1da5 LB 0xcc
+ push si ; 56 ; 0xf1da5 ata.c:89
+ push bp ; 55 ; 0xf1da6
+ mov bp, sp ; 89 e5 ; 0xf1da7
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1da9 ata.c:58
+ mov si, strict word 00040h ; be 40 00 ; 0xf1dac
+ mov es, si ; 8e c6 ; 0xf1daf
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf1db1
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf1db4 ata.c:59
+ mov dx, bx ; 89 da ; 0xf1db7
+ xor al, al ; 30 c0 ; 0xf1db9 ata.c:97
+ jmp short 01dc1h ; eb 04 ; 0xf1dbb
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf1dbd
+ jnc short 01de5h ; 73 24 ; 0xf1dbf
+ movzx bx, al ; 0f b6 d8 ; 0xf1dc1 ata.c:98
+ imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf1dc4
+ mov es, dx ; 8e c2 ; 0xf1dc7
+ add bx, si ; 01 f3 ; 0xf1dc9
+ mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf1dcb
+ db 066h, 026h, 0c7h, 087h, 07ah, 002h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+0027ah], strict dword 000000000h ; 66 26 c7 87 7a 02 00 00 00 00; 0xf1dd1 ata.c:99
+ mov byte [es:bx+00279h], 000h ; 26 c6 87 79 02 00 ; 0xf1ddb ata.c:101
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1de1 ata.c:102
+ jmp short 01dbdh ; eb d8 ; 0xf1de3
+ xor al, al ; 30 c0 ; 0xf1de5 ata.c:105
+ jmp short 01dedh ; eb 04 ; 0xf1de7
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf1de9
+ jnc short 01e41h ; 73 54 ; 0xf1deb
+ movzx bx, al ; 0f b6 d8 ; 0xf1ded ata.c:106
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1df0
+ mov es, dx ; 8e c2 ; 0xf1df3
+ add bx, si ; 01 f3 ; 0xf1df5
+ db 066h, 026h, 0c7h, 047h, 01eh, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+01eh], strict dword 000000000h ; 66 26 c7 47 1e 00 00 00 00; 0xf1df7
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf1e00 ata.c:110
+ mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf1e05 ata.c:111
+ mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf1e0b ata.c:112
+ db 066h, 026h, 0c7h, 047h, 026h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+026h], strict dword 000000000h ; 66 26 c7 47 26 00 00 00 00; 0xf1e10 ata.c:113
+ 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; 0xf1e19 ata.c:115
+ 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; 0xf1e22 ata.c:117
+ 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; 0xf1e2b ata.c:119
+ 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; 0xf1e34
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1e3d ata.c:120
+ jmp short 01de9h ; eb a8 ; 0xf1e3f
+ xor al, al ; 30 c0 ; 0xf1e41 ata.c:123
+ jmp short 01e49h ; eb 04 ; 0xf1e43
+ cmp AL, strict byte 014h ; 3c 14 ; 0xf1e45
+ jnc short 01e60h ; 73 17 ; 0xf1e47
+ movzx bx, al ; 0f b6 d8 ; 0xf1e49 ata.c:124
+ mov es, dx ; 8e c2 ; 0xf1e4c
+ add bx, si ; 01 f3 ; 0xf1e4e
+ mov byte [es:bx+0024fh], 014h ; 26 c6 87 4f 02 14 ; 0xf1e50
+ mov byte [es:bx+00264h], 014h ; 26 c6 87 64 02 14 ; 0xf1e56 ata.c:125
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1e5c ata.c:126
+ jmp short 01e45h ; eb e5 ; 0xf1e5e
+ mov es, dx ; 8e c2 ; 0xf1e60 ata.c:128
+ mov byte [es:si+0024eh], 000h ; 26 c6 84 4e 02 00 ; 0xf1e62
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf1e68 ata.c:129
+ pop bp ; 5d ; 0xf1e6e ata.c:130
+ pop si ; 5e ; 0xf1e6f
+ retn ; c3 ; 0xf1e70
+ ; disGetNextSymbol 0xf1e71 LB 0x8fab -> off=0x0 cb=00000000000000dd uValue=00000000000f0871 'ata_reset'
+ata_reset: ; 0xf1e71 LB 0xdd
+ push bp ; 55 ; 0xf1e71 ata.c:138
+ mov bp, sp ; 89 e5 ; 0xf1e72
+ push bx ; 53 ; 0xf1e74
+ push cx ; 51 ; 0xf1e75
+ push dx ; 52 ; 0xf1e76
+ push si ; 56 ; 0xf1e77
+ push di ; 57 ; 0xf1e78
+ push ax ; 50 ; 0xf1e79
+ push ax ; 50 ; 0xf1e7a
+ push ax ; 50 ; 0xf1e7b
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1e7c ata.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1e7f
+ mov es, ax ; 8e c0 ; 0xf1e82
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1e84
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf1e87 ata.c:59
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e8a
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1e8d ata.c:147
+ shr dx, 1 ; d1 ea ; 0xf1e90
+ mov dh, byte [bp-010h] ; 8a 76 f0 ; 0xf1e92 ata.c:148
+ and dh, 001h ; 80 e6 01 ; 0xf1e95
+ mov byte [bp-00ch], dh ; 88 76 f4 ; 0xf1e98
+ xor dh, dh ; 30 f6 ; 0xf1e9b ata.c:150
+ imul bx, dx, strict byte 00006h ; 6b da 06 ; 0xf1e9d
+ mov es, ax ; 8e c0 ; 0xf1ea0
+ add bx, di ; 01 fb ; 0xf1ea2
+ mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf1ea4
+ mov si, word [es:bx+0027ch] ; 26 8b b7 7c 02 ; 0xf1ea9 ata.c:151
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1eae ata.c:156
+ mov AL, strict byte 00eh ; b0 0e ; 0xf1eb1
+ out DX, AL ; ee ; 0xf1eb3
+ mov bx, 000ffh ; bb ff 00 ; 0xf1eb4 ata.c:159
+ dec bx ; 4b ; 0xf1eb7 ata.c:160
+ test bx, bx ; 85 db ; 0xf1eb8
+ jbe short 01ec8h ; 76 0c ; 0xf1eba
+ mov dx, cx ; 89 ca ; 0xf1ebc ata.c:161
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ebe
+ in AL, DX ; ec ; 0xf1ec1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1ec2
+ test AL, strict byte 080h ; a8 80 ; 0xf1ec4 ata.c:162
+ je short 01eb7h ; 74 ef ; 0xf1ec6
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1ec8 ata.c:167
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1ecb
+ out DX, AL ; ee ; 0xf1ecd
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf1ece ata.c:170
+ dec bx ; 4b ; 0xf1ed1 ata.c:171
+ test bx, bx ; 85 db ; 0xf1ed2
+ jbe short 01eech ; 76 16 ; 0xf1ed4
+ mov dx, cx ; 89 ca ; 0xf1ed6 ata.c:172
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ed8
+ in AL, DX ; ec ; 0xf1edb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1edc
+ test AL, strict byte 080h ; a8 80 ; 0xf1ede ata.c:173
+ je short 01eech ; 74 0a ; 0xf1ee0
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1ee2 ata.c:175
+ dec ax ; 48 ; 0xf1ee5 ata.c:176
+ test ax, ax ; 85 c0 ; 0xf1ee6
+ jnbe short 01ee5h ; 77 fb ; 0xf1ee8
+ jmp short 01ed1h ; eb e5 ; 0xf1eea ata.c:179
+ imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c ; 0xf1eec ata.c:181
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf1ef0
+ add bx, di ; 01 fb ; 0xf1ef3
+ cmp byte [es:bx+01eh], 000h ; 26 80 7f 1e 00 ; 0xf1ef5
+ je short 01f3eh ; 74 42 ; 0xf1efa
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1efc ata.c:184
+ je short 01f07h ; 74 05 ; 0xf1f00
+ mov ax, 000b0h ; b8 b0 00 ; 0xf1f02
+ jmp short 01f0ah ; eb 03 ; 0xf1f05
+ mov ax, 000a0h ; b8 a0 00 ; 0xf1f07
+ mov dx, cx ; 89 ca ; 0xf1f0a
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1f0c
+ out DX, AL ; ee ; 0xf1f0f
+ mov dx, cx ; 89 ca ; 0xf1f10 ata.c:185
+ inc dx ; 42 ; 0xf1f12
+ inc dx ; 42 ; 0xf1f13
+ in AL, DX ; ec ; 0xf1f14
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1f15
+ mov bx, ax ; 89 c3 ; 0xf1f17
+ mov dx, cx ; 89 ca ; 0xf1f19 ata.c:186
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f1b
+ in AL, DX ; ec ; 0xf1f1e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1f1f
+ cmp bl, 001h ; 80 fb 01 ; 0xf1f21 ata.c:188
+ jne short 01f3eh ; 75 18 ; 0xf1f24
+ cmp al, bl ; 38 d8 ; 0xf1f26
+ jne short 01f3eh ; 75 14 ; 0xf1f28
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf1f2a ata.c:190
+ dec bx ; 4b ; 0xf1f2d ata.c:191
+ test bx, bx ; 85 db ; 0xf1f2e
+ jbe short 01f3eh ; 76 0c ; 0xf1f30
+ mov dx, cx ; 89 ca ; 0xf1f32 ata.c:192
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1f34
+ in AL, DX ; ec ; 0xf1f37
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1f38
+ test AL, strict byte 040h ; a8 40 ; 0xf1f3a ata.c:193
+ je short 01f2dh ; 74 ef ; 0xf1f3c
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1f3e ata.c:200
+ mov AL, strict byte 008h ; b0 08 ; 0xf1f41
+ out DX, AL ; ee ; 0xf1f43
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1f44 ata.c:201
+ pop di ; 5f ; 0xf1f47
+ pop si ; 5e ; 0xf1f48
+ pop dx ; 5a ; 0xf1f49
+ pop cx ; 59 ; 0xf1f4a
+ pop bx ; 5b ; 0xf1f4b
+ pop bp ; 5d ; 0xf1f4c
+ retn ; c3 ; 0xf1f4d
+ ; disGetNextSymbol 0xf1f4e LB 0x8ece -> off=0x0 cb=00000000000002e2 uValue=00000000000f094e 'ata_cmd_data_in'
+ata_cmd_data_in: ; 0xf1f4e LB 0x2e2
+ push bp ; 55 ; 0xf1f4e ata.c:215
+ mov bp, sp ; 89 e5 ; 0xf1f4f
+ push si ; 56 ; 0xf1f51
+ push di ; 57 ; 0xf1f52
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf1f53
+ push ax ; 50 ; 0xf1f56
+ push dx ; 52 ; 0xf1f57
+ push bx ; 53 ; 0xf1f58
+ push cx ; 51 ; 0xf1f59
+ mov es, dx ; 8e c2 ; 0xf1f5a ata.c:225
+ mov bx, ax ; 89 c3 ; 0xf1f5c
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1f5e
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf1f62
+ movzx bx, al ; 0f b6 d8 ; 0xf1f65 ata.c:227
+ mov ax, bx ; 89 d8 ; 0xf1f68
+ cwd ; 99 ; 0xf1f6a
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf1f6b
+ sar ax, 1 ; d1 f8 ; 0xf1f6d
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf1f6f
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f72
+ add di, ax ; 01 c7 ; 0xf1f75
+ mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf1f77
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1f7c
+ mov ax, word [es:di+0027ch] ; 26 8b 85 7c 02 ; 0xf1f7f ata.c:228
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1f84
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1f87 ata.c:229
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f8a
+ add di, bx ; 01 df ; 0xf1f8d
+ mov al, byte [es:di+022h] ; 26 8a 45 22 ; 0xf1f8f
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf1f93
+ mov ax, word [es:di+024h] ; 26 8b 45 24 ; 0xf1f96 ata.c:230
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1f9a
+ test ax, ax ; 85 c0 ; 0xf1f9d ata.c:231
+ jne short 01fb5h ; 75 14 ; 0xf1f9f
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf1fa1 ata.c:233
+ jne short 01faeh ; 75 07 ; 0xf1fa5
+ mov word [bp-00eh], 04000h ; c7 46 f2 00 40 ; 0xf1fa7 ata.c:234
+ jmp short 01fc4h ; eb 16 ; 0xf1fac ata.c:235
+ mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1fae ata.c:237
+ jmp short 01fc4h ; eb 0f ; 0xf1fb3 ata.c:238
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf1fb5 ata.c:240
+ jne short 01fc1h ; 75 06 ; 0xf1fb9
+ shr word [bp-00eh], 002h ; c1 6e f2 02 ; 0xf1fbb ata.c:241
+ jmp short 01fc4h ; eb 03 ; 0xf1fbf ata.c:242
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1fc1 ata.c:244
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1fc4 ata.c:247
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1fc7
+ in AL, DX ; ec ; 0xf1fca
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1fcb
+ test AL, strict byte 080h ; a8 80 ; 0xf1fcd ata.c:248
+ je short 01fe0h ; 74 0f ; 0xf1fcf
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1fd1 ata.c:252
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1fd4
+ mov AL, strict byte 008h ; b0 08 ; 0xf1fd7
+ out DX, AL ; ee ; 0xf1fd9
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf1fda ata.c:253
+ jmp near 02227h ; e9 47 02 ; 0xf1fdd
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf1fe0 ata.c:256
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1fe3
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1fe6
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf1fea
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1fed
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1ff1
+ mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1ff4 ata.c:257
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1ff8
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1ffb ata.c:258
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1fff
+ mov bl, byte [es:bx+014h] ; 26 8a 5f 14 ; 0xf2002 ata.c:259
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2006 ata.c:262
+ test al, al ; 84 c0 ; 0xf2009
+ jne near 020f2h ; 0f 85 e3 00 ; 0xf200b
+ xor bx, bx ; 31 db ; 0xf200f ata.c:263
+ xor dx, dx ; 31 d2 ; 0xf2011
+ xor ah, ah ; 30 e4 ; 0xf2013
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf2015
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2018
+ mov cx, word [es:si] ; 26 8b 0c ; 0xf201b
+ add cx, word [bp-01eh] ; 03 4e e2 ; 0xf201e
+ adc bx, word [es:si+002h] ; 26 13 5c 02 ; 0xf2021
+ adc dx, word [es:si+004h] ; 26 13 54 04 ; 0xf2025
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf2029
+ adc ax, word [bp-016h] ; 13 46 ea ; 0xf202d
+ test ax, ax ; 85 c0 ; 0xf2030
+ jnbe short 02044h ; 77 10 ; 0xf2032
+ jne short 020a8h ; 75 72 ; 0xf2034
+ test dx, dx ; 85 d2 ; 0xf2036
+ jnbe short 02044h ; 77 0a ; 0xf2038
+ jne short 020a8h ; 75 6c ; 0xf203a
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf203c
+ jnbe short 02044h ; 77 02 ; 0xf2040
+ jne short 020a8h ; 75 64 ; 0xf2042
+ mov bx, si ; 89 f3 ; 0xf2044 ata.c:265
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf2046
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf204a
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf204e
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf2052
+ mov si, strict word 00018h ; be 18 00 ; 0xf2055
+ call 0ad60h ; e8 05 8d ; 0xf2058
+ xor dh, dh ; 30 f6 ; 0xf205b
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf205d
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf2060 ata.c:266
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf2063
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2067
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf206b
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf206e
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf2072
+ mov si, strict word 00020h ; be 20 00 ; 0xf2075
+ call 0ad60h ; e8 e5 8c ; 0xf2078
+ mov bx, dx ; 89 d3 ; 0xf207b
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf207d ata.c:267
+ xor al, al ; 30 c0 ; 0xf2080
+ shr ax, 008h ; c1 e8 08 ; 0xf2082
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2085
+ inc dx ; 42 ; 0xf2088
+ inc dx ; 42 ; 0xf2089
+ out DX, AL ; ee ; 0xf208a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf208b ata.c:268
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf208e
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2091
+ out DX, AL ; ee ; 0xf2094
+ mov ax, bx ; 89 d8 ; 0xf2095 ata.c:269
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2097
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf209a
+ out DX, AL ; ee ; 0xf209d
+ shr ax, 008h ; c1 e8 08 ; 0xf209e ata.c:270
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20a1
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf20a4
+ out DX, AL ; ee ; 0xf20a7
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf20a8 ata.c:274
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf20ab
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf20ae
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf20b1
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf20b4 ata.c:275
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf20b8
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf20bc
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf20bf
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf20c3
+ mov si, strict word 00008h ; be 08 00 ; 0xf20c6
+ call 0ad60h ; e8 94 8c ; 0xf20c9
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf20cc
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf20cf ata.c:276
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf20d2
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf20d6
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf20da
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf20dd
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf20e1
+ mov si, strict word 00018h ; be 18 00 ; 0xf20e4
+ call 0ad60h ; e8 76 8c ; 0xf20e7
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf20ea
+ or dl, 040h ; 80 ca 40 ; 0xf20ed
+ mov bx, dx ; 89 d3 ; 0xf20f0
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf20f2 ata.c:279
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20f5
+ mov AL, strict byte 00ah ; b0 0a ; 0xf20f8
+ out DX, AL ; ee ; 0xf20fa
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20fb ata.c:280
+ inc dx ; 42 ; 0xf20fe
+ xor al, al ; 30 c0 ; 0xf20ff
+ out DX, AL ; ee ; 0xf2101
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2102 ata.c:281
+ inc dx ; 42 ; 0xf2105
+ inc dx ; 42 ; 0xf2106
+ mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf2107
+ out DX, AL ; ee ; 0xf210a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf210b ata.c:282
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf210e
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2111
+ out DX, AL ; ee ; 0xf2114
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2115 ata.c:283
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2118
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf211b
+ out DX, AL ; ee ; 0xf211e
+ shr ax, 008h ; c1 e8 08 ; 0xf211f ata.c:284
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2122
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2125
+ out DX, AL ; ee ; 0xf2128
+ test byte [bp-00ah], 001h ; f6 46 f6 01 ; 0xf2129 ata.c:285
+ je short 02134h ; 74 05 ; 0xf212d
+ mov ax, 000b0h ; b8 b0 00 ; 0xf212f
+ jmp short 02137h ; eb 03 ; 0xf2132
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2134
+ movzx dx, bl ; 0f b6 d3 ; 0xf2137
+ or ax, dx ; 09 d0 ; 0xf213a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf213c
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf213f
+ out DX, AL ; ee ; 0xf2142
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2143 ata.c:286
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2146
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2149
+ out DX, AL ; ee ; 0xf214c
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf214d ata.c:288
+ cmp ax, 000c4h ; 3d c4 00 ; 0xf2150
+ je short 0215ah ; 74 05 ; 0xf2153
+ cmp ax, strict word 00029h ; 3d 29 00 ; 0xf2155
+ jne short 02164h ; 75 0a ; 0xf2158
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf215a ata.c:289
+ mov word [bp-01eh], strict word 00001h ; c7 46 e2 01 00 ; 0xf215d ata.c:290
+ jmp short 02167h ; eb 03 ; 0xf2162 ata.c:291
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2164 ata.c:292
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2167 ata.c:296
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf216a
+ in AL, DX ; ec ; 0xf216d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf216e
+ mov dl, al ; 88 c2 ; 0xf2170
+ test AL, strict byte 080h ; a8 80 ; 0xf2172 ata.c:297
+ jne short 02167h ; 75 f1 ; 0xf2174
+ test AL, strict byte 001h ; a8 01 ; 0xf2176 ata.c:301
+ je short 02189h ; 74 0f ; 0xf2178
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf217a ata.c:304
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf217d
+ mov AL, strict byte 008h ; b0 08 ; 0xf2180
+ out DX, AL ; ee ; 0xf2182
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf2183 ata.c:305
+ jmp near 02227h ; e9 9e 00 ; 0xf2186
+ test dl, 008h ; f6 c2 08 ; 0xf2189 ata.c:306
+ jne short 0219dh ; 75 0f ; 0xf218c
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf218e ata.c:309
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2191
+ mov AL, strict byte 008h ; b0 08 ; 0xf2194
+ out DX, AL ; ee ; 0xf2196
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf2197 ata.c:310
+ jmp near 02227h ; e9 8a 00 ; 0xf219a
+ sti ; fb ; 0xf219d ata.c:315
+ cmp di, 0f800h ; 81 ff 00 f8 ; 0xf219e ata.c:320
+ jc short 021b1h ; 72 0d ; 0xf21a2
+ sub di, 00800h ; 81 ef 00 08 ; 0xf21a4 ata.c:321
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf21a8
+ add ax, 00080h ; 05 80 00 ; 0xf21ab
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf21ae
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf21b1 ata.c:324
+ jne short 021c5h ; 75 0e ; 0xf21b5
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf21b7 ata.c:325
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf21ba
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf21bd
+ db 0f3h, 066h, 06dh
+ ; rep insd ; f3 66 6d ; 0xf21c0
+ jmp short 021d0h ; eb 0b ; 0xf21c3 ata.c:326
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf21c5 ata.c:328
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf21c8
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf21cb
+ rep insw ; f3 6d ; 0xf21ce
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf21d0 ata.c:329
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf21d3
+ add word [es:si+018h], bx ; 26 01 5c 18 ; 0xf21d6
+ dec word [bp-01eh] ; ff 4e e2 ; 0xf21da ata.c:330
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf21dd ata.c:332
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf21e0
+ in AL, DX ; ec ; 0xf21e3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf21e4
+ mov dl, al ; 88 c2 ; 0xf21e6
+ test AL, strict byte 080h ; a8 80 ; 0xf21e8 ata.c:333
+ jne short 021ddh ; 75 f1 ; 0xf21ea
+ cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf21ec ata.c:336
+ jne short 02206h ; 75 14 ; 0xf21f0
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf21f2 ata.c:337
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf21f4
+ je short 0221ch ; 74 24 ; 0xf21f6
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21f8 ata.c:341
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf21fb
+ mov AL, strict byte 008h ; b0 08 ; 0xf21fe
+ out DX, AL ; ee ; 0xf2200
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf2201 ata.c:342
+ jmp short 02227h ; eb 21 ; 0xf2204
+ mov al, dl ; 88 d0 ; 0xf2206 ata.c:347
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2208
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf220a
+ je short 0219eh ; 74 90 ; 0xf220c
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf220e ata.c:351
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2211
+ mov AL, strict byte 008h ; b0 08 ; 0xf2214
+ out DX, AL ; ee ; 0xf2216
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf2217 ata.c:352
+ jmp short 02227h ; eb 0b ; 0xf221a
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf221c ata.c:358
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf221f
+ mov AL, strict byte 008h ; b0 08 ; 0xf2222
+ out DX, AL ; ee ; 0xf2224
+ xor dx, dx ; 31 d2 ; 0xf2225 ata.c:359
+ mov ax, dx ; 89 d0 ; 0xf2227 ata.c:360
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2229
+ pop di ; 5f ; 0xf222c
+ pop si ; 5e ; 0xf222d
+ pop bp ; 5d ; 0xf222e
+ retn ; c3 ; 0xf222f
+ ; disGetNextSymbol 0xf2230 LB 0x8bec -> off=0x0 cb=0000000000000094 uValue=00000000000f0c30 'ata_signature'
+ata_signature: ; 0xf2230 LB 0x94
+ push bp ; 55 ; 0xf2230 ata.c:366
+ mov bp, sp ; 89 e5 ; 0xf2231
+ push cx ; 51 ; 0xf2233
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf2234
+ mov cx, ax ; 89 c1 ; 0xf2237
+ mov al, bl ; 88 d8 ; 0xf2239
+ xor bx, bx ; 31 db ; 0xf223b ata.c:368
+ test al, al ; 84 c0 ; 0xf223d ata.c:376
+ je short 02246h ; 74 05 ; 0xf223f
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2241
+ jmp short 02249h ; eb 03 ; 0xf2244
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2246
+ mov dx, cx ; 89 ca ; 0xf2249
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf224b
+ out DX, AL ; ee ; 0xf224e
+ mov dx, cx ; 89 ca ; 0xf224f ata.c:378
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2251
+ in AL, DX ; ec ; 0xf2254
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2255
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf2257
+ test AL, strict byte 080h ; a8 80 ; 0xf225a ata.c:379
+ jne short 0224fh ; 75 f1 ; 0xf225c
+ mov dx, cx ; 89 ca ; 0xf225e ata.c:387
+ inc dx ; 42 ; 0xf2260
+ inc dx ; 42 ; 0xf2261
+ in AL, DX ; ec ; 0xf2262
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2263
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2265
+ mov dx, cx ; 89 ca ; 0xf2268 ata.c:388
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf226a
+ in AL, DX ; ec ; 0xf226d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf226e
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf2270 ata.c:389
+ jne short 022bch ; 75 46 ; 0xf2274
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2276
+ jne short 022bch ; 75 42 ; 0xf2278
+ mov dx, cx ; 89 ca ; 0xf227a ata.c:390
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf227c
+ in AL, DX ; ec ; 0xf227f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2280
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2282
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2285
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf2288
+ mov dx, cx ; 89 ca ; 0xf228b ata.c:391
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf228d
+ in AL, DX ; ec ; 0xf2290
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2291
+ mov dl, al ; 88 c2 ; 0xf2293
+ cmp byte [bp-008h], 014h ; 80 7e f8 14 ; 0xf2295 ata.c:398
+ jne short 022a4h ; 75 09 ; 0xf2299
+ cmp AL, strict byte 0ebh ; 3c eb ; 0xf229b
+ jne short 022a4h ; 75 05 ; 0xf229d
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf229f ata.c:399
+ jmp short 022bch ; eb 18 ; 0xf22a2 ata.c:401
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf22a4
+ jne short 022b9h ; 75 0f ; 0xf22a8
+ test dl, dl ; 84 d2 ; 0xf22aa
+ jne short 022b9h ; 75 0b ; 0xf22ac
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf22ae ata.c:402
+ je short 022bch ; 74 08 ; 0xf22b2
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf22b4 ata.c:403
+ jmp short 022bch ; eb 03 ; 0xf22b7 ata.c:408
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf22b9 ata.c:409
+ mov ax, bx ; 89 d8 ; 0xf22bc ata.c:416
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf22be
+ pop cx ; 59 ; 0xf22c1
+ pop bp ; 5d ; 0xf22c2
+ retn ; c3 ; 0xf22c3
+ ; disGetNextSymbol 0xf22c4 LB 0x8b58 -> off=0x0 cb=0000000000000619 uValue=00000000000f0cc4 'ata_detect'
+ata_detect: ; 0xf22c4 LB 0x619
+ push bp ; 55 ; 0xf22c4 ata.c:418
+ mov bp, sp ; 89 e5 ; 0xf22c5
+ push si ; 56 ; 0xf22c7
+ push di ; 57 ; 0xf22c8
+ sub sp, 0025eh ; 81 ec 5e 02 ; 0xf22c9
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf22cd ata.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf22d0
+ mov es, ax ; 8e c0 ; 0xf22d3
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf22d5
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf22d8 ata.c:59
+ mov ax, 00101h ; b8 01 01 ; 0xf22db ata.c:434
+ call 0aae3h ; e8 02 88 ; 0xf22de
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf22e1 ata.c:435
+ jne short 022ffh ; 75 19 ; 0xf22e4
+ mov bx, 00e16h ; bb 16 0e ; 0xf22e6 ata.c:436
+ mov cx, ds ; 8c d9 ; 0xf22e9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf22eb
+ call 01a27h ; e8 36 f7 ; 0xf22ee
+ push 0017eh ; 68 7e 01 ; 0xf22f1
+ push strict byte 00004h ; 6a 04 ; 0xf22f4
+ call 01a68h ; e8 6f f7 ; 0xf22f6
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf22f9
+ jmp near 028d6h ; e9 d7 05 ; 0xf22fc ata.c:437
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf22ff ata.c:441
+ mov es, [bp-02ch] ; 8e 46 d4 ; 0xf2302
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf2305
+ mov [bp-02ah], es ; 8c 46 d6 ; 0xf2308
+ mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf230b ata.c:444
+ db 066h, 026h, 0c7h, 087h, 07ah, 002h, 0f0h, 001h, 0f0h, 003h
+ ; mov dword [es:bx+0027ah], strict dword 003f001f0h ; 66 26 c7 87 7a 02 f0 01 f0 03; 0xf2311 ata.c:445
+ mov byte [es:bx+00279h], 00eh ; 26 c6 87 79 02 0e ; 0xf231b ata.c:447
+ mov byte [es:bx+0027eh], 000h ; 26 c6 87 7e 02 00 ; 0xf2321 ata.c:450
+ db 066h, 026h, 0c7h, 087h, 080h, 002h, 070h, 001h, 070h, 003h
+ ; mov dword [es:bx+00280h], strict dword 003700170h ; 66 26 c7 87 80 02 70 01 70 03; 0xf2327 ata.c:451
+ mov byte [es:bx+0027fh], 00fh ; 26 c6 87 7f 02 0f ; 0xf2331 ata.c:453
+ mov byte [es:bx+00284h], 000h ; 26 c6 87 84 02 00 ; 0xf2337 ata.c:456
+ db 066h, 026h, 0c7h, 087h, 086h, 002h, 0e8h, 001h, 0e0h, 003h
+ ; mov dword [es:bx+00286h], strict dword 003e001e8h ; 66 26 c7 87 86 02 e8 01 e0 03; 0xf233d ata.c:457
+ mov byte [es:bx+00285h], 00ch ; 26 c6 87 85 02 0c ; 0xf2347 ata.c:459
+ mov byte [es:bx+0028ah], 000h ; 26 c6 87 8a 02 00 ; 0xf234d ata.c:462
+ db 066h, 026h, 0c7h, 087h, 08ch, 002h, 068h, 001h, 060h, 003h
+ ; mov dword [es:bx+0028ch], strict dword 003600168h ; 66 26 c7 87 8c 02 68 01 60 03; 0xf2353 ata.c:463
+ mov byte [es:bx+0028bh], 00bh ; 26 c6 87 8b 02 0b ; 0xf235d ata.c:465
+ xor al, al ; 30 c0 ; 0xf2363 ata.c:472
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf2365
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf2368
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf236b ata.c:474
+ jmp near 02867h ; e9 f6 04 ; 0xf236e
+ test cl, cl ; 84 c9 ; 0xf2371 ata.c:519
+ jne short 023d1h ; 75 5c ; 0xf2373
+ mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf2375 ata.c:520
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2378
+ mov AL, strict byte 00eh ; b0 0e ; 0xf237b
+ out DX, AL ; ee ; 0xf237d
+ mov bx, strict word 00020h ; bb 20 00 ; 0xf237e ata.c:526
+ dec bx ; 4b ; 0xf2381 ata.c:527
+ test bx, bx ; 85 db ; 0xf2382
+ jbe short 02390h ; 76 0a ; 0xf2384
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf2386 ata.c:528
+ in AL, DX ; ec ; 0xf2389
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf238a
+ test AL, strict byte 080h ; a8 80 ; 0xf238c ata.c:529
+ je short 02381h ; 74 f1 ; 0xf238e
+ mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf2390 ata.c:533
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2393
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2396
+ out DX, AL ; ee ; 0xf2398
+ movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf2399 ata.c:540
+ xor bx, bx ; 31 db ; 0xf239d
+ mov dx, di ; 89 fa ; 0xf239f
+ mov ax, si ; 89 f0 ; 0xf23a1
+ call 02230h ; e8 8a fe ; 0xf23a3
+ movzx cx, byte [bp-016h] ; 0f b6 4e ea ; 0xf23a6
+ imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf23aa
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf23ad
+ add bx, word [bp-018h] ; 03 5e e8 ; 0xf23b0
+ mov byte [es:bx+01eh], al ; 26 88 47 1e ; 0xf23b3
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf23b7 ata.c:541
+ mov dx, di ; 89 fa ; 0xf23ba
+ mov ax, si ; 89 f0 ; 0xf23bc
+ call 02230h ; e8 6f fe ; 0xf23be
+ mov bx, cx ; 89 cb ; 0xf23c1
+ inc bx ; 43 ; 0xf23c3
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf23c4
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf23c7
+ add bx, word [bp-018h] ; 03 5e e8 ; 0xf23ca
+ mov byte [es:bx+01eh], al ; 26 88 47 1e ; 0xf23cd
+ mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf23d1 ata.c:545
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf23d4
+ mov AL, strict byte 008h ; b0 08 ; 0xf23d7
+ out DX, AL ; ee ; 0xf23d9
+ movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf23da ata.c:547
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf23de
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf23e1
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf23e4
+ add bx, ax ; 01 c3 ; 0xf23e7
+ mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf23e9
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf23ed
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf23f0 ata.c:550
+ jne near 02639h ; 0f 85 43 02 ; 0xf23f2
+ mov byte [es:bx+01fh], 0ffh ; 26 c6 47 1f ff ; 0xf23f6 ata.c:558
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf23fb ata.c:559
+ lea dx, [bp-00262h] ; 8d 96 9e fd ; 0xf2400 ata.c:560
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf2404
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf2407
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf240b
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf240f ata.c:561
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2412
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf2416 ata.c:563
+ mov bx, 000ech ; bb ec 00 ; 0xf2419
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf241c
+ mov dx, es ; 8c c2 ; 0xf241f
+ call 01f4eh ; e8 2a fb ; 0xf2421
+ test ax, ax ; 85 c0 ; 0xf2424
+ je short 02433h ; 74 0b ; 0xf2426
+ push 001a6h ; 68 a6 01 ; 0xf2428 ata.c:564
+ push strict byte 00007h ; 6a 07 ; 0xf242b
+ call 01a68h ; e8 38 f6 ; 0xf242d
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2430
+ test byte [bp-00262h], 080h ; f6 86 9e fd 80 ; 0xf2433 ata.c:566
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf2438
+ xor ah, ah ; 30 e4 ; 0xf243b
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf243d
+ cmp byte [bp-00202h], 000h ; 80 be fe fd 00 ; 0xf2440 ata.c:568
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf2445
+ xor ah, ah ; 30 e4 ; 0xf2448
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf244a
+ mov word [bp-028h], 00200h ; c7 46 d8 00 02 ; 0xf244d ata.c:572
+ mov ax, word [bp-00260h] ; 8b 86 a0 fd ; 0xf2452 ata.c:574
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2456
+ mov ax, word [bp-0025ch] ; 8b 86 a4 fd ; 0xf2459 ata.c:575
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf245d
+ mov ax, word [bp-00256h] ; 8b 86 aa fd ; 0xf2460 ata.c:576
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf2464
+ mov si, word [bp-001eah] ; 8b b6 16 fe ; 0xf2467 ata.c:578
+ mov ax, word [bp-001e8h] ; 8b 86 18 fe ; 0xf246b
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf246f
+ xor ax, ax ; 31 c0 ; 0xf2472
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf2474
+ mov word [bp-022h], ax ; 89 46 de ; 0xf2477
+ cmp word [bp-02eh], 00fffh ; 81 7e d2 ff 0f ; 0xf247a ata.c:579
+ jne short 0249fh ; 75 1e ; 0xf247f
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf2481
+ jne short 0249fh ; 75 19 ; 0xf2484
+ mov ax, word [bp-00194h] ; 8b 86 6c fe ; 0xf2486 ata.c:580
+ mov word [bp-022h], ax ; 89 46 de ; 0xf248a
+ mov ax, word [bp-00196h] ; 8b 86 6a fe ; 0xf248d
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf2491
+ mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf2494
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf2498
+ mov si, word [bp-0019ah] ; 8b b6 66 fe ; 0xf249b
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf249f ata.c:581
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf24a2
+ jc short 024b2h ; 72 0c ; 0xf24a4
+ jbe short 024bah ; 76 12 ; 0xf24a6
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf24a8
+ je short 024c2h ; 74 16 ; 0xf24aa
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf24ac
+ je short 024beh ; 74 0e ; 0xf24ae
+ jmp short 024ebh ; eb 39 ; 0xf24b0
+ test al, al ; 84 c0 ; 0xf24b2
+ jne short 024ebh ; 75 35 ; 0xf24b4
+ mov BL, strict byte 01eh ; b3 1e ; 0xf24b6 ata.c:584
+ jmp short 024c4h ; eb 0a ; 0xf24b8 ata.c:585
+ mov BL, strict byte 026h ; b3 26 ; 0xf24ba ata.c:587
+ jmp short 024c4h ; eb 06 ; 0xf24bc ata.c:588
+ mov BL, strict byte 067h ; b3 67 ; 0xf24be ata.c:590
+ jmp short 024c4h ; eb 02 ; 0xf24c0 ata.c:591
+ mov BL, strict byte 070h ; b3 70 ; 0xf24c2 ata.c:593
+ movzx ax, bl ; 0f b6 c3 ; 0xf24c4 ata.c:600
+ call 017a6h ; e8 dc f2 ; 0xf24c7
+ mov word [bp-036h], ax ; 89 46 ca ; 0xf24ca
+ mov al, bl ; 88 d8 ; 0xf24cd ata.c:601
+ add AL, strict byte 002h ; 04 02 ; 0xf24cf
+ xor ah, ah ; 30 e4 ; 0xf24d1
+ call 0176ah ; e8 94 f2 ; 0xf24d3
+ xor ah, ah ; 30 e4 ; 0xf24d6
+ mov word [bp-038h], ax ; 89 46 c8 ; 0xf24d8
+ mov al, bl ; 88 d8 ; 0xf24db ata.c:602
+ add AL, strict byte 007h ; 04 07 ; 0xf24dd
+ xor ah, ah ; 30 e4 ; 0xf24df
+ call 0176ah ; e8 86 f2 ; 0xf24e1
+ xor ah, ah ; 30 e4 ; 0xf24e4
+ mov word [bp-034h], ax ; 89 46 cc ; 0xf24e6
+ jmp short 024fdh ; eb 12 ; 0xf24e9 ata.c:604
+ push word [bp-022h] ; ff 76 de ; 0xf24eb ata.c:605
+ push word [bp-020h] ; ff 76 e0 ; 0xf24ee
+ push word [bp-02eh] ; ff 76 d2 ; 0xf24f1
+ push si ; 56 ; 0xf24f4
+ mov dx, ss ; 8c d2 ; 0xf24f5
+ lea ax, [bp-038h] ; 8d 46 c8 ; 0xf24f7
+ call 05880h ; e8 83 33 ; 0xf24fa
+ mov bx, 00e16h ; bb 16 0e ; 0xf24fd ata.c:608
+ mov cx, ds ; 8c d9 ; 0xf2500
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2502
+ call 01a27h ; e8 1f f5 ; 0xf2505
+ mov ax, word [bp-034h] ; 8b 46 cc ; 0xf2508
+ push ax ; 50 ; 0xf250b
+ mov ax, word [bp-038h] ; 8b 46 c8 ; 0xf250c
+ push ax ; 50 ; 0xf250f
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf2510
+ push ax ; 50 ; 0xf2513
+ push word [bp-024h] ; ff 76 dc ; 0xf2514
+ push word [bp-01ah] ; ff 76 e6 ; 0xf2517
+ push word [bp-01eh] ; ff 76 e2 ; 0xf251a
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf251d
+ push ax ; 50 ; 0xf2521
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf2522
+ push ax ; 50 ; 0xf2526
+ push 001cfh ; 68 cf 01 ; 0xf2527
+ push strict byte 00004h ; 6a 04 ; 0xf252a
+ call 01a68h ; e8 39 f5 ; 0xf252c
+ add sp, strict byte 00014h ; 83 c4 14 ; 0xf252f
+ movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf2532 ata.c:610
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2536
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf2539
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf253c
+ add di, ax ; 01 c7 ; 0xf253f
+ mov byte [es:di+01fh], 0ffh ; 26 c6 45 1f ff ; 0xf2541
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2546 ata.c:611
+ mov byte [es:di+020h], al ; 26 88 45 20 ; 0xf2549
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf254d ata.c:612
+ mov byte [es:di+022h], al ; 26 88 45 22 ; 0xf2550
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf2554 ata.c:613
+ mov word [es:di+024h], ax ; 26 89 45 24 ; 0xf2557
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf255b ata.c:614
+ mov word [es:di+02ch], ax ; 26 89 45 2c ; 0xf255e
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2562 ata.c:615
+ mov word [es:di+02eh], ax ; 26 89 45 2e ; 0xf2565
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2569 ata.c:616
+ mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf256c
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf2570 ata.c:617
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf2573
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf2577
+ mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf257a
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf257e
+ mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf2581
+ mov word [es:di+032h], si ; 26 89 75 32 ; 0xf2585
+ lea di, [di+026h] ; 8d 7d 26 ; 0xf2589 ata.c:618
+ push DS ; 1e ; 0xf258c
+ push SS ; 16 ; 0xf258d
+ pop DS ; 1f ; 0xf258e
+ lea si, [bp-038h] ; 8d 76 c8 ; 0xf258f
+ movsw ; a5 ; 0xf2592
+ movsw ; a5 ; 0xf2593
+ movsw ; a5 ; 0xf2594
+ pop DS ; 1f ; 0xf2595
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2596 ata.c:619
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2599
+ jnc near 02624h ; 0f 83 85 00 ; 0xf259b
+ test al, al ; 84 c0 ; 0xf259f ata.c:625
+ jne short 025a8h ; 75 05 ; 0xf25a1
+ mov bx, strict word 0003dh ; bb 3d 00 ; 0xf25a3 ata.c:626
+ jmp short 025abh ; eb 03 ; 0xf25a6 ata.c:627
+ mov bx, strict word 0004dh ; bb 4d 00 ; 0xf25a8 ata.c:628
+ mov dx, word [bp-02ch] ; 8b 56 d4 ; 0xf25ab
+ movzx si, byte [bp-016h] ; 0f b6 76 ea ; 0xf25ae ata.c:640
+ imul si, si, strict byte 00005h ; 6b f6 05 ; 0xf25b2
+ sal si, 002h ; c1 e6 02 ; 0xf25b5
+ add si, 00104h ; 81 c6 04 01 ; 0xf25b8
+ xor ax, ax ; 31 c0 ; 0xf25bc
+ mov es, ax ; 8e c0 ; 0xf25be
+ mov word [es:si], bx ; 26 89 1c ; 0xf25c0 ata.c:641
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf25c3
+ mov es, dx ; 8e c2 ; 0xf25c7 ata.c:647
+ mov word [es:bx+00ch], ax ; 26 89 47 0c ; 0xf25c9
+ mov word [es:bx+005h], ax ; 26 89 47 05 ; 0xf25cd
+ mov word [es:bx+007h], ax ; 26 89 47 07 ; 0xf25d1
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf25d5 ata.c:649
+ mov word [es:bx], ax ; 26 89 07 ; 0xf25d8
+ mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf25db ata.c:650
+ mov byte [es:bx+002h], al ; 26 88 47 02 ; 0xf25de
+ mov byte [es:bx+003h], 0a0h ; 26 c6 47 03 a0 ; 0xf25e2 ata.c:651
+ mov al, byte [bp-024h] ; 8a 46 dc ; 0xf25e7 ata.c:652
+ mov byte [es:bx+004h], al ; 26 88 47 04 ; 0xf25ea
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf25ee ata.c:653
+ mov word [es:bx+009h], ax ; 26 89 47 09 ; 0xf25f1
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf25f5 ata.c:654
+ mov byte [es:bx+00bh], al ; 26 88 47 0b ; 0xf25f8
+ mov al, byte [bp-034h] ; 8a 46 cc ; 0xf25fc ata.c:655
+ mov byte [es:bx+00eh], al ; 26 88 47 0e ; 0xf25ff
+ xor al, al ; 30 c0 ; 0xf2603 ata.c:656
+ xor ah, ah ; 30 e4 ; 0xf2605 ata.c:657
+ jmp short 0260eh ; eb 05 ; 0xf2607
+ cmp ah, 00fh ; 80 fc 0f ; 0xf2609
+ jnc short 0261ch ; 73 0e ; 0xf260c
+ movzx si, ah ; 0f b6 f4 ; 0xf260e ata.c:658
+ mov es, dx ; 8e c2 ; 0xf2611
+ add si, bx ; 01 de ; 0xf2613
+ add al, byte [es:si] ; 26 02 04 ; 0xf2615
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf2618
+ jmp short 02609h ; eb ed ; 0xf261a
+ neg al ; f6 d8 ; 0xf261c ata.c:659
+ mov es, dx ; 8e c2 ; 0xf261e ata.c:660
+ mov byte [es:bx+00fh], al ; 26 88 47 0f ; 0xf2620
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf2624 ata.c:664
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf2628
+ add bx, word [bp-018h] ; 03 5e e8 ; 0xf262b
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf262e
+ mov byte [es:bx+0024fh], al ; 26 88 87 4f 02 ; 0xf2631
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf2636 ata.c:665
+ cmp byte [bp-008h], 003h ; 80 7e f8 03 ; 0xf2639 ata.c:669
+ jne near 026d9h ; 0f 85 98 00 ; 0xf263d
+ movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf2641 ata.c:674
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf2645
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf2648
+ add bx, word [bp-018h] ; 03 5e e8 ; 0xf264b
+ mov byte [es:bx+01fh], 005h ; 26 c6 47 1f 05 ; 0xf264e
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf2653 ata.c:675
+ lea dx, [bp-00262h] ; 8d 96 9e fd ; 0xf2658 ata.c:676
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf265c
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf265f
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf2663
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2667 ata.c:677
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf266a
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf266e ata.c:679
+ mov bx, 000a1h ; bb a1 00 ; 0xf2671
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf2674
+ mov dx, es ; 8c c2 ; 0xf2677
+ call 01f4eh ; e8 d2 f8 ; 0xf2679
+ test ax, ax ; 85 c0 ; 0xf267c
+ je short 0268bh ; 74 0b ; 0xf267e
+ push 001f6h ; 68 f6 01 ; 0xf2680 ata.c:680
+ push strict byte 00007h ; 6a 07 ; 0xf2683
+ call 01a68h ; e8 e0 f3 ; 0xf2685
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2688
+ mov cl, byte [bp-00261h] ; 8a 8e 9f fd ; 0xf268b ata.c:682
+ and cl, 01fh ; 80 e1 1f ; 0xf268f
+ test byte [bp-00262h], 080h ; f6 86 9e fd 80 ; 0xf2692 ata.c:683
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf2697
+ xor ah, ah ; 30 e4 ; 0xf269a
+ mov dx, ax ; 89 c2 ; 0xf269c
+ cmp byte [bp-00202h], 000h ; 80 be fe fd 00 ; 0xf269e ata.c:685
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf26a3
+ xor ah, ah ; 30 e4 ; 0xf26a6
+ movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf26a8 ata.c:691
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf26ac
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf26af
+ add bx, word [bp-018h] ; 03 5e e8 ; 0xf26b2
+ mov byte [es:bx+01fh], cl ; 26 88 4f 1f ; 0xf26b5
+ mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf26b9 ata.c:692
+ mov byte [es:bx+022h], al ; 26 88 47 22 ; 0xf26bd ata.c:693
+ mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf26c1 ata.c:694
+ movzx bx, byte [bp-010h] ; 0f b6 5e f0 ; 0xf26c7 ata.c:697
+ add bx, word [bp-018h] ; 03 5e e8 ; 0xf26cb
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf26ce
+ mov byte [es:bx+00264h], al ; 26 88 87 64 02 ; 0xf26d1
+ inc byte [bp-010h] ; fe 46 f0 ; 0xf26d6 ata.c:698
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf26d9 ata.c:707
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf26dc
+ je short 0270fh ; 74 2f ; 0xf26de
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf26e0
+ jne near 02772h ; 0f 85 8c 00 ; 0xf26e2
+ movzx si, byte [bp-016h] ; 0f b6 76 ea ; 0xf26e6 ata.c:709
+ imul si, si, strict byte 0001ch ; 6b f6 1c ; 0xf26ea
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf26ed
+ add si, word [bp-018h] ; 03 76 e8 ; 0xf26f0
+ mov ax, word [es:si+038h] ; 26 8b 44 38 ; 0xf26f3
+ mov bx, word [es:si+036h] ; 26 8b 5c 36 ; 0xf26f7
+ mov cx, word [es:si+034h] ; 26 8b 4c 34 ; 0xf26fb
+ mov dx, word [es:si+032h] ; 26 8b 54 32 ; 0xf26ff
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf2703
+ call 0ad60h ; e8 57 86 ; 0xf2706
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf2709
+ mov word [bp-026h], cx ; 89 4e da ; 0xf270c
+ movzx dx, byte [bp-001c1h] ; 0f b6 96 3f fe ; 0xf270f ata.c:712
+ sal dx, 008h ; c1 e2 08 ; 0xf2714
+ movzx ax, byte [bp-001c2h] ; 0f b6 86 3e fe ; 0xf2717
+ or dx, ax ; 09 c2 ; 0xf271c
+ mov byte [bp-006h], 00fh ; c6 46 fa 0f ; 0xf271e ata.c:713
+ jmp short 0272dh ; eb 09 ; 0xf2722
+ dec byte [bp-006h] ; fe 4e fa ; 0xf2724 ata.c:716
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2727
+ jbe short 0273ah ; 76 0d ; 0xf272b
+ movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf272d
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2731
+ sal ax, CL ; d3 e0 ; 0xf2734
+ test dx, ax ; 85 c2 ; 0xf2736
+ je short 02724h ; 74 ea ; 0xf2738
+ xor di, di ; 31 ff ; 0xf273a ata.c:719
+ jmp short 02743h ; eb 05 ; 0xf273c
+ cmp di, strict byte 00014h ; 83 ff 14 ; 0xf273e
+ jnl short 02758h ; 7d 15 ; 0xf2741
+ mov si, di ; 89 fe ; 0xf2743 ata.c:720
+ add si, di ; 01 fe ; 0xf2745
+ mov al, byte [bp+si-0022bh] ; 8a 82 d5 fd ; 0xf2747
+ mov byte [bp+si-062h], al ; 88 42 9e ; 0xf274b
+ mov al, byte [bp+si-0022ch] ; 8a 82 d4 fd ; 0xf274e ata.c:721
+ mov byte [bp+si-061h], al ; 88 42 9f ; 0xf2752
+ inc di ; 47 ; 0xf2755 ata.c:722
+ jmp short 0273eh ; eb e6 ; 0xf2756
+ mov byte [bp-03ah], 000h ; c6 46 c6 00 ; 0xf2758 ata.c:725
+ mov di, strict word 00027h ; bf 27 00 ; 0xf275c ata.c:726
+ jmp short 02766h ; eb 05 ; 0xf275f
+ dec di ; 4f ; 0xf2761 ata.c:731
+ test di, di ; 85 ff ; 0xf2762
+ jle short 02772h ; 7e 0c ; 0xf2764
+ cmp byte [bp+di-062h], 020h ; 80 7b 9e 20 ; 0xf2766
+ jne short 02772h ; 75 06 ; 0xf276a
+ mov byte [bp+di-062h], 000h ; c6 43 9e 00 ; 0xf276c
+ jmp short 02761h ; eb ef ; 0xf2770
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2772 ata.c:738
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2775
+ je short 027d7h ; 74 5e ; 0xf2777
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2779
+ je short 02786h ; 74 09 ; 0xf277b
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf277d
+ je near 0283fh ; 0f 84 bc 00 ; 0xf277f
+ jmp near 0285eh ; e9 d8 00 ; 0xf2783
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf2786 ata.c:741
+ je short 02791h ; 74 05 ; 0xf278a
+ mov ax, 00221h ; b8 21 02 ; 0xf278c
+ jmp short 02794h ; eb 03 ; 0xf278f
+ mov ax, 00228h ; b8 28 02 ; 0xf2791
+ push ax ; 50 ; 0xf2794
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf2795
+ push ax ; 50 ; 0xf2799
+ push 0022fh ; 68 2f 02 ; 0xf279a
+ push strict byte 00002h ; 6a 02 ; 0xf279d
+ call 01a68h ; e8 c6 f2 ; 0xf279f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf27a2
+ xor di, di ; 31 ff ; 0xf27a5 ata.c:742
+ movzx ax, byte [bp+di-062h] ; 0f b6 43 9e ; 0xf27a7 ata.c:743
+ inc di ; 47 ; 0xf27ab
+ test ax, ax ; 85 c0 ; 0xf27ac
+ je short 027beh ; 74 0e ; 0xf27ae
+ push ax ; 50 ; 0xf27b0 ata.c:744
+ push 0023ah ; 68 3a 02 ; 0xf27b1
+ push strict byte 00002h ; 6a 02 ; 0xf27b4
+ call 01a68h ; e8 af f2 ; 0xf27b6
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf27b9
+ jmp short 027a7h ; eb e9 ; 0xf27bc
+ push word [bp-026h] ; ff 76 da ; 0xf27be ata.c:745
+ push word [bp-030h] ; ff 76 d0 ; 0xf27c1
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf27c4
+ push ax ; 50 ; 0xf27c8
+ push 0023dh ; 68 3d 02 ; 0xf27c9
+ push strict byte 00002h ; 6a 02 ; 0xf27cc
+ call 01a68h ; e8 97 f2 ; 0xf27ce
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf27d1
+ jmp near 0285eh ; e9 87 00 ; 0xf27d4 ata.c:746
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf27d7 ata.c:748
+ je short 027e2h ; 74 05 ; 0xf27db
+ mov ax, 00221h ; b8 21 02 ; 0xf27dd
+ jmp short 027e5h ; eb 03 ; 0xf27e0
+ mov ax, 00228h ; b8 28 02 ; 0xf27e2
+ push ax ; 50 ; 0xf27e5
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf27e6
+ push ax ; 50 ; 0xf27ea
+ push 0022fh ; 68 2f 02 ; 0xf27eb
+ push strict byte 00002h ; 6a 02 ; 0xf27ee
+ call 01a68h ; e8 75 f2 ; 0xf27f0
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf27f3
+ xor di, di ; 31 ff ; 0xf27f6 ata.c:749
+ movzx ax, byte [bp+di-062h] ; 0f b6 43 9e ; 0xf27f8 ata.c:750
+ inc di ; 47 ; 0xf27fc
+ test ax, ax ; 85 c0 ; 0xf27fd
+ je short 0280fh ; 74 0e ; 0xf27ff
+ push ax ; 50 ; 0xf2801 ata.c:751
+ push 0023ah ; 68 3a 02 ; 0xf2802
+ push strict byte 00002h ; 6a 02 ; 0xf2805
+ call 01a68h ; e8 5e f2 ; 0xf2807
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf280a
+ jmp short 027f8h ; eb e9 ; 0xf280d
+ movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf280f ata.c:752
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf2813
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf2816
+ add bx, word [bp-018h] ; 03 5e e8 ; 0xf2819
+ cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf281c
+ jne short 0282dh ; 75 0a ; 0xf2821
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf2823 ata.c:753
+ push ax ; 50 ; 0xf2827
+ push 0025dh ; 68 5d 02 ; 0xf2828
+ jmp short 02835h ; eb 08 ; 0xf282b ata.c:754
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf282d ata.c:755
+ push ax ; 50 ; 0xf2831
+ push 00277h ; 68 77 02 ; 0xf2832
+ push strict byte 00002h ; 6a 02 ; 0xf2835
+ call 01a68h ; e8 2e f2 ; 0xf2837
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf283a
+ jmp short 0285eh ; eb 1f ; 0xf283d ata.c:756
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf283f ata.c:758
+ je short 0284ah ; 74 05 ; 0xf2843
+ mov ax, 00221h ; b8 21 02 ; 0xf2845
+ jmp short 0284dh ; eb 03 ; 0xf2848
+ mov ax, 00228h ; b8 28 02 ; 0xf284a
+ push ax ; 50 ; 0xf284d
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf284e
+ push ax ; 50 ; 0xf2852
+ push 00289h ; 68 89 02 ; 0xf2853
+ push strict byte 00002h ; 6a 02 ; 0xf2856
+ call 01a68h ; e8 0d f2 ; 0xf2858
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf285b
+ inc byte [bp-016h] ; fe 46 ea ; 0xf285e ata.c:763
+ cmp byte [bp-016h], 008h ; 80 7e ea 08 ; 0xf2861
+ jnc short 028b2h ; 73 4b ; 0xf2865
+ movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf2867
+ mov ax, bx ; 89 d8 ; 0xf286b
+ cwd ; 99 ; 0xf286d
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf286e
+ sar ax, 1 ; d1 f8 ; 0xf2870
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf2872
+ mov al, byte [bp-032h] ; 8a 46 ce ; 0xf2875
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf2878
+ mov ax, bx ; 89 d8 ; 0xf287b
+ cwd ; 99 ; 0xf287d
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf287e
+ idiv bx ; f7 fb ; 0xf2881
+ mov cx, dx ; 89 d1 ; 0xf2883
+ mov byte [bp-00eh], dl ; 88 56 f2 ; 0xf2885
+ movzx ax, byte [bp-032h] ; 0f b6 46 ce ; 0xf2888
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf288c
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf288f
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf2892
+ add bx, ax ; 01 c3 ; 0xf2895
+ mov si, word [es:bx+0027ah] ; 26 8b b7 7a 02 ; 0xf2897
+ mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf289c
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf28a1
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf28a4
+ in AL, DX ; ec ; 0xf28a7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf28a8
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf28aa
+ jne near 02371h ; 0f 85 c1 fa ; 0xf28ac
+ jmp short 0285eh ; eb ac ; 0xf28b0
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf28b2 ata.c:766
+ mov es, [bp-02ah] ; 8e 46 d6 ; 0xf28b5
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf28b8
+ mov byte [es:bx+0024eh], al ; 26 88 87 4e 02 ; 0xf28bb
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf28c0 ata.c:767
+ mov byte [es:bx+00263h], al ; 26 88 87 63 02 ; 0xf28c3
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf28c8 ata.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf28cb
+ mov es, ax ; 8e c0 ; 0xf28ce
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf28d0
+ mov byte [es:bx], al ; 26 88 07 ; 0xf28d3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf28d6 ata.c:780
+ pop di ; 5f ; 0xf28d9
+ pop si ; 5e ; 0xf28da
+ pop bp ; 5d ; 0xf28db
+ retn ; c3 ; 0xf28dc
+ ; disGetNextSymbol 0xf28dd LB 0x853f -> off=0x0 cb=00000000000002bc uValue=00000000000f12dd 'ata_cmd_data_out'
+ata_cmd_data_out: ; 0xf28dd LB 0x2bc
+ push bp ; 55 ; 0xf28dd ata.c:794
+ mov bp, sp ; 89 e5 ; 0xf28de
+ push si ; 56 ; 0xf28e0
+ push di ; 57 ; 0xf28e1
+ sub sp, strict byte 00022h ; 83 ec 22 ; 0xf28e2
+ mov di, ax ; 89 c7 ; 0xf28e5
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf28e7
+ mov word [bp-024h], bx ; 89 5e dc ; 0xf28ea
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf28ed
+ mov es, dx ; 8e c2 ; 0xf28f0 ata.c:806
+ movzx ax, byte [es:di+00ch] ; 26 0f b6 45 0c ; 0xf28f2
+ mov dx, ax ; 89 c2 ; 0xf28f7 ata.c:807
+ shr dx, 1 ; d1 ea ; 0xf28f9
+ mov dh, al ; 88 c6 ; 0xf28fb ata.c:808
+ and dh, 001h ; 80 e6 01 ; 0xf28fd
+ mov byte [bp-006h], dh ; 88 76 fa ; 0xf2900
+ xor dh, dh ; 30 f6 ; 0xf2903 ata.c:810
+ imul dx, dx, strict byte 00006h ; 6b d2 06 ; 0xf2905
+ mov bx, di ; 89 fb ; 0xf2908
+ add bx, dx ; 01 d3 ; 0xf290a
+ mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf290c
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf2911
+ mov dx, word [es:bx+0027ch] ; 26 8b 97 7c 02 ; 0xf2914 ata.c:811
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf2919
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf291c ata.c:812
+ mov bx, di ; 89 fb ; 0xf291f
+ add bx, ax ; 01 c3 ; 0xf2921
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf2923
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2927
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf292a ata.c:815
+ jne short 02935h ; 75 07 ; 0xf292c
+ mov word [bp-020h], 00080h ; c7 46 e0 80 00 ; 0xf292e ata.c:816
+ jmp short 0293ah ; eb 05 ; 0xf2933 ata.c:817
+ mov word [bp-020h], 00100h ; c7 46 e0 00 01 ; 0xf2935 ata.c:819
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf293a ata.c:821
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf293d
+ in AL, DX ; ec ; 0xf2940
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2941
+ test AL, strict byte 080h ; a8 80 ; 0xf2943 ata.c:822
+ je short 02956h ; 74 0f ; 0xf2945
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2947 ata.c:825
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf294a
+ mov AL, strict byte 008h ; b0 08 ; 0xf294d
+ out DX, AL ; ee ; 0xf294f
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf2950 ata.c:826
+ jmp near 02b90h ; e9 3a 02 ; 0xf2953
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2956 ata.c:829
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf2959
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf295d
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf2960
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2964
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf2967
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf296b
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf296e
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2971
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf2974 ata.c:830
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2978
+ mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf297b
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf297f
+ mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf2982 ata.c:831
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2986
+ mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf2989 ata.c:832
+ mov word [bp-026h], ax ; 89 46 da ; 0xf298d
+ mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf2990 ata.c:833
+ mov word [bp-022h], ax ; 89 46 de ; 0xf2994
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf2997 ata.c:836
+ test ax, ax ; 85 c0 ; 0xf299a
+ jne near 02a67h ; 0f 85 c7 00 ; 0xf299c
+ xor dx, dx ; 31 d2 ; 0xf29a0 ata.c:837
+ xor bx, bx ; 31 db ; 0xf29a2
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf29a4
+ add si, word [bp-01ah] ; 03 76 e6 ; 0xf29a7
+ adc dx, word [bp-016h] ; 13 56 ea ; 0xf29aa
+ adc bx, word [bp-014h] ; 13 5e ec ; 0xf29ad
+ adc ax, word [bp-010h] ; 13 46 f0 ; 0xf29b0
+ test ax, ax ; 85 c0 ; 0xf29b3
+ jnbe short 029c7h ; 77 10 ; 0xf29b5
+ jne short 02a2ah ; 75 71 ; 0xf29b7
+ test bx, bx ; 85 db ; 0xf29b9
+ jnbe short 029c7h ; 77 0a ; 0xf29bb
+ jne short 02a2ah ; 75 6b ; 0xf29bd
+ cmp dx, 01000h ; 81 fa 00 10 ; 0xf29bf
+ jnbe short 029c7h ; 77 02 ; 0xf29c3
+ jne short 02a2ah ; 75 63 ; 0xf29c5
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf29c7 ata.c:839
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf29ca
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf29cd
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf29d0
+ mov si, strict word 00018h ; be 18 00 ; 0xf29d3
+ call 0ad60h ; e8 87 83 ; 0xf29d6
+ xor dh, dh ; 30 f6 ; 0xf29d9
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf29db
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf29de ata.c:840
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf29e1
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf29e4
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf29e7
+ mov si, strict word 00020h ; be 20 00 ; 0xf29ea
+ call 0ad60h ; e8 70 83 ; 0xf29ed
+ mov bx, dx ; 89 d3 ; 0xf29f0
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf29f2 ata.c:841
+ xor al, al ; 30 c0 ; 0xf29f5
+ shr ax, 008h ; c1 e8 08 ; 0xf29f7
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf29fa
+ inc dx ; 42 ; 0xf29fd
+ inc dx ; 42 ; 0xf29fe
+ out DX, AL ; ee ; 0xf29ff
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a00 ata.c:842
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2a03
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2a06
+ out DX, AL ; ee ; 0xf2a09
+ mov ax, bx ; 89 d8 ; 0xf2a0a ata.c:843
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a0c
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2a0f
+ out DX, AL ; ee ; 0xf2a12
+ shr ax, 008h ; c1 e8 08 ; 0xf2a13 ata.c:844
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a16
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2a19
+ out DX, AL ; ee ; 0xf2a1c
+ xor al, al ; 30 c0 ; 0xf2a1d ata.c:847
+ mov byte [bp-015h], al ; 88 46 eb ; 0xf2a1f
+ xor ah, ah ; 30 e4 ; 0xf2a22
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2a24
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf2a27
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2a2a ata.c:849
+ xor ah, ah ; 30 e4 ; 0xf2a2d
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2a2f
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2a32 ata.c:850
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf2a35
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf2a38
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf2a3b
+ mov si, strict word 00008h ; be 08 00 ; 0xf2a3e
+ call 0ad60h ; e8 1c 83 ; 0xf2a41
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf2a44
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf2a47
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf2a4a
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf2a4d
+ mov word [bp-026h], dx ; 89 56 da ; 0xf2a50 ata.c:851
+ mov si, strict word 00010h ; be 10 00 ; 0xf2a53 ata.c:852
+ call 0ad60h ; e8 07 83 ; 0xf2a56
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf2a59
+ mov ax, dx ; 89 d0 ; 0xf2a5c ata.c:853
+ xor ah, dh ; 30 f4 ; 0xf2a5e
+ and AL, strict byte 00fh ; 24 0f ; 0xf2a60
+ or AL, strict byte 040h ; 0c 40 ; 0xf2a62
+ mov word [bp-022h], ax ; 89 46 de ; 0xf2a64
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2a67 ata.c:856
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a6a
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2a6d
+ out DX, AL ; ee ; 0xf2a6f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a70 ata.c:857
+ inc dx ; 42 ; 0xf2a73
+ xor al, al ; 30 c0 ; 0xf2a74
+ out DX, AL ; ee ; 0xf2a76
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a77 ata.c:858
+ inc dx ; 42 ; 0xf2a7a
+ inc dx ; 42 ; 0xf2a7b
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2a7c
+ out DX, AL ; ee ; 0xf2a7f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a80 ata.c:859
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2a83
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2a86
+ out DX, AL ; ee ; 0xf2a89
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf2a8a ata.c:860
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a8d
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2a90
+ out DX, AL ; ee ; 0xf2a93
+ shr ax, 008h ; c1 e8 08 ; 0xf2a94 ata.c:861
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a97
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2a9a
+ out DX, AL ; ee ; 0xf2a9d
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2a9e ata.c:862
+ je short 02aa9h ; 74 05 ; 0xf2aa2
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2aa4
+ jmp short 02aach ; eb 03 ; 0xf2aa7
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2aa9
+ movzx dx, byte [bp-022h] ; 0f b6 56 de ; 0xf2aac
+ or ax, dx ; 09 d0 ; 0xf2ab0
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2ab2
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ab5
+ out DX, AL ; ee ; 0xf2ab8
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2ab9 ata.c:863
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2abc
+ mov al, byte [bp-024h] ; 8a 46 dc ; 0xf2abf
+ out DX, AL ; ee ; 0xf2ac2
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2ac3 ata.c:866
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2ac6
+ in AL, DX ; ec ; 0xf2ac9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2aca
+ mov dl, al ; 88 c2 ; 0xf2acc
+ test AL, strict byte 080h ; a8 80 ; 0xf2ace ata.c:867
+ jne short 02ac3h ; 75 f1 ; 0xf2ad0
+ test AL, strict byte 001h ; a8 01 ; 0xf2ad2 ata.c:871
+ je short 02ae5h ; 74 0f ; 0xf2ad4
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2ad6 ata.c:874
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ad9
+ mov AL, strict byte 008h ; b0 08 ; 0xf2adc
+ out DX, AL ; ee ; 0xf2ade
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf2adf ata.c:875
+ jmp near 02b90h ; e9 ab 00 ; 0xf2ae2
+ test dl, 008h ; f6 c2 08 ; 0xf2ae5 ata.c:876
+ jne short 02af9h ; 75 0f ; 0xf2ae8
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2aea ata.c:879
+ 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 00003h ; ba 03 00 ; 0xf2af3 ata.c:880
+ jmp near 02b90h ; e9 97 00 ; 0xf2af6
+ sti ; fb ; 0xf2af9 ata.c:885
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2afa ata.c:890
+ cmp ax, 0f800h ; 3d 00 f8 ; 0xf2afd
+ jc short 02b12h ; 72 10 ; 0xf2b00
+ sub ax, 00800h ; 2d 00 08 ; 0xf2b02 ata.c:891
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2b05
+ add dx, 00080h ; 81 c2 80 00 ; 0xf2b08
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2b0c
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf2b0f
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf2b12 ata.c:894
+ jne short 02b2ah ; 75 12 ; 0xf2b16
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2b18 ata.c:895
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2b1b
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf2b1e
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf2b21
+ db 0f3h, 066h, 026h, 06fh
+ ; rep es outsd ; f3 66 26 6f ; 0xf2b24
+ jmp short 02b39h ; eb 0f ; 0xf2b28 ata.c:896
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2b2a ata.c:898
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2b2d
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf2b30
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf2b33
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2b36
+ mov word [bp-00eh], si ; 89 76 f2 ; 0xf2b39
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2b3c ata.c:900
+ inc word [es:di+018h] ; 26 ff 45 18 ; 0xf2b3f
+ dec word [bp-01ah] ; ff 4e e6 ; 0xf2b43 ata.c:901
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2b46 ata.c:903
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2b49
+ in AL, DX ; ec ; 0xf2b4c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2b4d
+ mov dl, al ; 88 c2 ; 0xf2b4f
+ test AL, strict byte 080h ; a8 80 ; 0xf2b51 ata.c:904
+ jne short 02b46h ; 75 f1 ; 0xf2b53
+ cmp word [bp-01ah], strict byte 00000h ; 83 7e e6 00 ; 0xf2b55 ata.c:907
+ jne short 02b6fh ; 75 14 ; 0xf2b59
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2b5b ata.c:908
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2b5d
+ je short 02b85h ; 74 24 ; 0xf2b5f
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b61 ata.c:912
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b64
+ mov AL, strict byte 008h ; b0 08 ; 0xf2b67
+ out DX, AL ; ee ; 0xf2b69
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2b6a ata.c:913
+ jmp short 02b90h ; eb 21 ; 0xf2b6d
+ mov al, dl ; 88 d0 ; 0xf2b6f ata.c:918
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2b71
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2b73
+ je short 02afah ; 74 83 ; 0xf2b75
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b77 ata.c:922
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b7a
+ mov AL, strict byte 008h ; b0 08 ; 0xf2b7d
+ out DX, AL ; ee ; 0xf2b7f
+ mov dx, strict word 00007h ; ba 07 00 ; 0xf2b80 ata.c:923
+ jmp short 02b90h ; eb 0b ; 0xf2b83
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b85 ata.c:929
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b88
+ mov AL, strict byte 008h ; b0 08 ; 0xf2b8b
+ out DX, AL ; ee ; 0xf2b8d
+ xor dx, dx ; 31 d2 ; 0xf2b8e ata.c:930
+ mov ax, dx ; 89 d0 ; 0xf2b90 ata.c:931
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b92
+ pop di ; 5f ; 0xf2b95
+ pop si ; 5e ; 0xf2b96
+ pop bp ; 5d ; 0xf2b97
+ retn ; c3 ; 0xf2b98
+ ; disGetNextSymbol 0xf2b99 LB 0x8283 -> off=0x0 cb=00000000000000b5 uValue=00000000000f1599 'ata_read_sectors'
+ata_read_sectors: ; 0xf2b99 LB 0xb5
+ push bp ; 55 ; 0xf2b99 ata.c:941
+ mov bp, sp ; 89 e5 ; 0xf2b9a
+ push si ; 56 ; 0xf2b9c
+ push di ; 57 ; 0xf2b9d
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf2b9e
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf2ba1
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf2ba4 ata.c:947
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2ba7
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2bab ata.c:948
+ mov dx, cx ; 89 ca ; 0xf2baf
+ sal dx, 009h ; c1 e2 09 ; 0xf2bb1
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2bb4 ata.c:950
+ je short 02bdah ; 74 1f ; 0xf2bb9
+ xor ah, ah ; 30 e4 ; 0xf2bbb ata.c:952
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2bbd
+ mov [bp-00ah], es ; 8c 46 f6 ; 0xf2bc0
+ mov di, si ; 89 f7 ; 0xf2bc3
+ add di, ax ; 01 c7 ; 0xf2bc5
+ mov word [es:di+024h], dx ; 26 89 55 24 ; 0xf2bc7
+ mov bx, 000c4h ; bb c4 00 ; 0xf2bcb ata.c:954
+ mov ax, si ; 89 f0 ; 0xf2bce
+ mov dx, es ; 8c c2 ; 0xf2bd0
+ call 01f4eh ; e8 79 f3 ; 0xf2bd2
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2bd5 ata.c:955
+ jmp short 02c3fh ; eb 65 ; 0xf2bd8 ata.c:956
+ xor bx, bx ; 31 db ; 0xf2bda ata.c:958
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf2bdc
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf2bdf
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2be2
+ add di, cx ; 01 cf ; 0xf2be5
+ mov word [bp-008h], di ; 89 7e f8 ; 0xf2be7
+ mov di, word [es:si+002h] ; 26 8b 7c 02 ; 0xf2bea
+ adc di, bx ; 11 df ; 0xf2bee
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2bf0
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf2bf3
+ adc bx, word [bp-00ah] ; 13 5e f6 ; 0xf2bf7
+ mov di, word [es:si+006h] ; 26 8b 7c 06 ; 0xf2bfa
+ adc di, word [bp-00ch] ; 13 7e f4 ; 0xf2bfe
+ test di, di ; 85 ff ; 0xf2c01
+ jnbe short 02c16h ; 77 11 ; 0xf2c03
+ jne short 02c22h ; 75 1b ; 0xf2c05
+ test bx, bx ; 85 db ; 0xf2c07
+ jnbe short 02c16h ; 77 0b ; 0xf2c09
+ jne short 02c22h ; 75 15 ; 0xf2c0b
+ cmp word [bp-006h], 01000h ; 81 7e fa 00 10 ; 0xf2c0d
+ jnbe short 02c16h ; 77 02 ; 0xf2c12
+ jne short 02c22h ; 75 0c ; 0xf2c14
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf2c16 ata.c:960
+ mov ax, si ; 89 f0 ; 0xf2c19
+ mov dx, es ; 8c c2 ; 0xf2c1b
+ call 01f4eh ; e8 2e f3 ; 0xf2c1d
+ jmp short 02c45h ; eb 23 ; 0xf2c20 ata.c:961
+ xor ah, ah ; 30 e4 ; 0xf2c22 ata.c:962
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2c24
+ mov [bp-006h], es ; 8c 46 fa ; 0xf2c27
+ mov di, si ; 89 f7 ; 0xf2c2a
+ add di, ax ; 01 c7 ; 0xf2c2c
+ mov word [es:di+024h], dx ; 26 89 55 24 ; 0xf2c2e
+ mov bx, 000c4h ; bb c4 00 ; 0xf2c32 ata.c:964
+ mov ax, si ; 89 f0 ; 0xf2c35
+ mov dx, es ; 8c c2 ; 0xf2c37
+ call 01f4eh ; e8 12 f3 ; 0xf2c39
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf2c3c ata.c:965
+ mov word [es:di+024h], 00200h ; 26 c7 45 24 00 02 ; 0xf2c3f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2c45 ata.c:969
+ pop di ; 5f ; 0xf2c48
+ pop si ; 5e ; 0xf2c49
+ pop bp ; 5d ; 0xf2c4a
+ retn 00004h ; c2 04 00 ; 0xf2c4b
+ ; disGetNextSymbol 0xf2c4e LB 0x81ce -> off=0x0 cb=000000000000005b uValue=00000000000f164e 'ata_write_sectors'
+ata_write_sectors: ; 0xf2c4e LB 0x5b
+ push bp ; 55 ; 0xf2c4e ata.c:978
+ mov bp, sp ; 89 e5 ; 0xf2c4f
+ push si ; 56 ; 0xf2c51
+ push di ; 57 ; 0xf2c52
+ push ax ; 50 ; 0xf2c53
+ les si, [bp+004h] ; c4 76 04 ; 0xf2c54
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2c57 ata.c:982
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2c5b ata.c:984
+ je short 02c6eh ; 74 0c ; 0xf2c60
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf2c62 ata.c:986
+ mov ax, si ; 89 f0 ; 0xf2c65
+ mov dx, es ; 8c c2 ; 0xf2c67
+ call 028ddh ; e8 71 fc ; 0xf2c69
+ jmp short 02ca0h ; eb 32 ; 0xf2c6c
+ xor ax, ax ; 31 c0 ; 0xf2c6e ata.c:989
+ xor bx, bx ; 31 db ; 0xf2c70
+ xor dx, dx ; 31 d2 ; 0xf2c72
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2c74
+ add di, cx ; 01 cf ; 0xf2c77
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2c79
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2c7c
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2c80
+ adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2c84
+ test dx, dx ; 85 d2 ; 0xf2c88
+ jnbe short 02c9bh ; 77 0f ; 0xf2c8a
+ jne short 02c62h ; 75 d4 ; 0xf2c8c
+ test bx, bx ; 85 db ; 0xf2c8e
+ jnbe short 02c9bh ; 77 09 ; 0xf2c90
+ jne short 02c62h ; 75 ce ; 0xf2c92
+ cmp ax, 01000h ; 3d 00 10 ; 0xf2c94
+ jnbe short 02c9bh ; 77 02 ; 0xf2c97
+ jne short 02c62h ; 75 c7 ; 0xf2c99
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf2c9b ata.c:990
+ jmp short 02c65h ; eb c5 ; 0xf2c9e
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2ca0 ata.c:994
+ pop di ; 5f ; 0xf2ca3
+ pop si ; 5e ; 0xf2ca4
+ pop bp ; 5d ; 0xf2ca5
+ retn 00004h ; c2 04 00 ; 0xf2ca6
+ ; disGetNextSymbol 0xf2ca9 LB 0x8173 -> off=0x0 cb=000000000000023f uValue=00000000000f16a9 'ata_cmd_packet'
+ata_cmd_packet: ; 0xf2ca9 LB 0x23f
+ push bp ; 55 ; 0xf2ca9 ata.c:1006
+ mov bp, sp ; 89 e5 ; 0xf2caa
+ push si ; 56 ; 0xf2cac
+ push di ; 57 ; 0xf2cad
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf2cae
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2cb1
+ mov di, bx ; 89 df ; 0xf2cb4
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2cb6 ata.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2cb9
+ mov es, dx ; 8e c2 ; 0xf2cbc
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf2cbe
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf2cc1 ata.c:59
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf2cc4
+ mov dx, ax ; 89 c2 ; 0xf2cc7 ata.c:1018
+ shr dx, 1 ; d1 ea ; 0xf2cc9
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf2ccb
+ mov dl, byte [bp-016h] ; 8a 56 ea ; 0xf2cce
+ mov dh, al ; 88 c6 ; 0xf2cd1 ata.c:1019
+ and dh, 001h ; 80 e6 01 ; 0xf2cd3
+ mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf2cd6
+ cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf2cd9 ata.c:1022
+ jne short 02cfeh ; 75 1f ; 0xf2cdd
+ mov bx, 00e16h ; bb 16 0e ; 0xf2cdf ata.c:1023
+ mov cx, ds ; 8c d9 ; 0xf2ce2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2ce4
+ call 01a27h ; e8 3d ed ; 0xf2ce7
+ push 002a3h ; 68 a3 02 ; 0xf2cea
+ push 002b2h ; 68 b2 02 ; 0xf2ced
+ push strict byte 00004h ; 6a 04 ; 0xf2cf0
+ call 01a68h ; e8 73 ed ; 0xf2cf2
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2cf5
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf2cf8 ata.c:1024
+ jmp near 02eddh ; e9 df 01 ; 0xf2cfb
+ xor dh, dh ; 30 f6 ; 0xf2cfe ata.c:1027
+ imul dx, dx, strict byte 00006h ; 6b d2 06 ; 0xf2d00
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf2d03
+ mov si, bx ; 89 de ; 0xf2d06
+ add si, dx ; 01 d6 ; 0xf2d08
+ mov dx, word [es:si+0027ah] ; 26 8b 94 7a 02 ; 0xf2d0a
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf2d0f
+ mov dx, word [es:si+0027ch] ; 26 8b 94 7c 02 ; 0xf2d12 ata.c:1028
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf2d17
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2d1a ata.c:1029
+ mov si, bx ; 89 de ; 0xf2d1d
+ add si, ax ; 01 c6 ; 0xf2d1f
+ mov al, byte [es:si+022h] ; 26 8a 44 22 ; 0xf2d21
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2d25
+ xor ax, ax ; 31 c0 ; 0xf2d28 ata.c:1030
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2d2a
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2d2d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2d30 ata.c:1032
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf2d33
+ jnc short 02d3dh ; 73 06 ; 0xf2d35
+ mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2d37 ata.c:1033
+ jmp short 02d43h ; eb 06 ; 0xf2d3b
+ jbe short 02d43h ; 76 04 ; 0xf2d3d ata.c:1034
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2d3f ata.c:1035
+ shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2d43 ata.c:1036
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf2d46 ata.c:1040
+ db 066h, 026h, 0c7h, 047h, 018h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+018h], strict dword 000000000h ; 66 26 c7 47 18 00 00 00 00; 0xf2d49
+ mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2d52 ata.c:1041
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d58 ata.c:1043
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2d5b
+ in AL, DX ; ec ; 0xf2d5e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d5f
+ test AL, strict byte 080h ; a8 80 ; 0xf2d61 ata.c:1044
+ je short 02d6bh ; 74 06 ; 0xf2d63
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf2d65 ata.c:1045
+ jmp near 02eddh ; e9 72 01 ; 0xf2d68
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2d6b ata.c:1047
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d6e
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2d71
+ out DX, AL ; ee ; 0xf2d73
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d74 ata.c:1051
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2d77
+ mov AL, strict byte 0f0h ; b0 f0 ; 0xf2d7a
+ out DX, AL ; ee ; 0xf2d7c
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d7d ata.c:1052
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2d80
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf2d83
+ out DX, AL ; ee ; 0xf2d85
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf2d86 ata.c:1053
+ je short 02d91h ; 74 05 ; 0xf2d8a
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2d8c
+ jmp short 02d94h ; eb 03 ; 0xf2d8f
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2d91
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d94
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d97
+ out DX, AL ; ee ; 0xf2d9a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d9b ata.c:1054
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2d9e
+ mov AL, strict byte 0a0h ; b0 a0 ; 0xf2da1
+ out DX, AL ; ee ; 0xf2da3
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2da4 ata.c:1058
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2da7
+ in AL, DX ; ec ; 0xf2daa
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2dab
+ mov dl, al ; 88 c2 ; 0xf2dad
+ test AL, strict byte 080h ; a8 80 ; 0xf2daf ata.c:1059
+ jne short 02da4h ; 75 f1 ; 0xf2db1
+ test AL, strict byte 001h ; a8 01 ; 0xf2db3 ata.c:1062
+ je short 02dc6h ; 74 0f ; 0xf2db5
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2db7 ata.c:1065
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dba
+ mov AL, strict byte 008h ; b0 08 ; 0xf2dbd
+ out DX, AL ; ee ; 0xf2dbf
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf2dc0 ata.c:1066
+ jmp near 02eddh ; e9 17 01 ; 0xf2dc3
+ test dl, 008h ; f6 c2 08 ; 0xf2dc6 ata.c:1067
+ jne short 02ddah ; 75 0f ; 0xf2dc9
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2dcb ata.c:1070
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dce
+ mov AL, strict byte 008h ; b0 08 ; 0xf2dd1
+ out DX, AL ; ee ; 0xf2dd3
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf2dd4 ata.c:1071
+ jmp near 02eddh ; e9 03 01 ; 0xf2dd7
+ sti ; fb ; 0xf2dda ata.c:1074
+ mov ax, di ; 89 f8 ; 0xf2ddb ata.c:1078
+ shr ax, 004h ; c1 e8 04 ; 0xf2ddd
+ add ax, cx ; 01 c8 ; 0xf2de0
+ mov si, di ; 89 fe ; 0xf2de2
+ and si, strict byte 0000fh ; 83 e6 0f ; 0xf2de4
+ movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf2de7 ata.c:1083
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2deb
+ mov es, ax ; 8e c0 ; 0xf2dee
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2df0
+ cmp byte [bp+008h], 000h ; 80 7e 08 00 ; 0xf2df3 ata.c:1085
+ jne short 02e04h ; 75 0b ; 0xf2df7
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2df9 ata.c:1086
+ in AL, DX ; ec ; 0xf2dfc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2dfd
+ mov dl, al ; 88 c2 ; 0xf2dff
+ jmp near 02ebeh ; e9 ba 00 ; 0xf2e01 ata.c:1088
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e04 ata.c:1092
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e07
+ in AL, DX ; ec ; 0xf2e0a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e0b
+ mov dl, al ; 88 c2 ; 0xf2e0d
+ test AL, strict byte 080h ; a8 80 ; 0xf2e0f ata.c:1093
+ jne short 02e04h ; 75 f1 ; 0xf2e11
+ test AL, strict byte 088h ; a8 88 ; 0xf2e13 ata.c:1098
+ je near 02ebeh ; 0f 84 a5 00 ; 0xf2e15
+ test AL, strict byte 001h ; a8 01 ; 0xf2e19 ata.c:1101
+ je short 02e28h ; 74 0b ; 0xf2e1b
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2e1d ata.c:1104
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2e20
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e23
+ out DX, AL ; ee ; 0xf2e25
+ jmp short 02dc0h ; eb 98 ; 0xf2e26
+ mov al, dl ; 88 d0 ; 0xf2e28 ata.c:1109
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2e2a
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2e2c
+ je short 02e3bh ; 74 0b ; 0xf2e2e
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2e30 ata.c:1113
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2e33
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e36
+ out DX, AL ; ee ; 0xf2e38
+ jmp short 02dd4h ; eb 99 ; 0xf2e39
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf2e3b ata.c:1119
+ shr ax, 004h ; c1 e8 04 ; 0xf2e3e
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf2e41
+ add dx, ax ; 01 c2 ; 0xf2e44
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf2e46
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf2e49
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf2e4c
+ mov word [bp+00ch], dx ; 89 56 0c ; 0xf2e4f
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e52 ata.c:1124
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2e55
+ in AL, DX ; ec ; 0xf2e58
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e59
+ mov cx, ax ; 89 c1 ; 0xf2e5b
+ sal cx, 008h ; c1 e1 08 ; 0xf2e5d
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e60
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2e63
+ in AL, DX ; ec ; 0xf2e66
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e67
+ add cx, ax ; 01 c1 ; 0xf2e69
+ mov si, cx ; 89 ce ; 0xf2e6b ata.c:1127
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2e6d ata.c:1133
+ test cl, 003h ; f6 c1 03 ; 0xf2e70 ata.c:1134
+ je short 02e77h ; 74 02 ; 0xf2e73
+ xor al, al ; 30 c0 ; 0xf2e75 ata.c:1135
+ test cl, 001h ; f6 c1 01 ; 0xf2e77 ata.c:1138
+ je short 02e7dh ; 74 01 ; 0xf2e7a
+ inc cx ; 41 ; 0xf2e7c ata.c:1139
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2e7d ata.c:1143
+ jne short 02e86h ; 75 05 ; 0xf2e7f
+ shr cx, 002h ; c1 e9 02 ; 0xf2e81 ata.c:1144
+ jmp short 02e88h ; eb 02 ; 0xf2e84 ata.c:1145
+ shr cx, 1 ; d1 e9 ; 0xf2e86 ata.c:1148
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2e88 ata.c:1152
+ jne short 02e97h ; 75 0b ; 0xf2e8a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e8c ata.c:1153
+ les di, [bp+00ah] ; c4 7e 0a ; 0xf2e8f
+ db 0f3h, 066h, 06dh
+ ; rep insd ; f3 66 6d ; 0xf2e92
+ jmp short 02e9fh ; eb 08 ; 0xf2e95 ata.c:1154
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e97 ata.c:1157
+ les di, [bp+00ah] ; c4 7e 0a ; 0xf2e9a
+ rep insw ; f3 6d ; 0xf2e9d
+ add word [bp+00ah], si ; 01 76 0a ; 0xf2e9f ata.c:1162
+ xor ax, ax ; 31 c0 ; 0xf2ea2 ata.c:1165
+ add word [bp-014h], si ; 01 76 ec ; 0xf2ea4
+ adc word [bp-012h], ax ; 11 46 ee ; 0xf2ea7
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2eaa ata.c:1166
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf2ead
+ mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2eb0
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2eb4
+ mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2eb7
+ jmp near 02e04h ; e9 46 ff ; 0xf2ebb ata.c:1167
+ mov al, dl ; 88 d0 ; 0xf2ebe ata.c:1171
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2ec0
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2ec2
+ je short 02ed2h ; 74 0c ; 0xf2ec4
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2ec6 ata.c:1175
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ec9
+ mov AL, strict byte 008h ; b0 08 ; 0xf2ecc
+ out DX, AL ; ee ; 0xf2ece
+ jmp near 02dd4h ; e9 02 ff ; 0xf2ecf
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2ed2 ata.c:1180
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ed5
+ mov AL, strict byte 008h ; b0 08 ; 0xf2ed8
+ out DX, AL ; ee ; 0xf2eda
+ xor dx, dx ; 31 d2 ; 0xf2edb ata.c:1181
+ mov ax, dx ; 89 d0 ; 0xf2edd ata.c:1182
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2edf
+ pop di ; 5f ; 0xf2ee2
+ pop si ; 5e ; 0xf2ee3
+ pop bp ; 5d ; 0xf2ee4
+ retn 0000ah ; c2 0a 00 ; 0xf2ee5
+ ; disGetNextSymbol 0xf2ee8 LB 0x7f34 -> off=0x0 cb=000000000000007a uValue=00000000000f18e8 'ata_soft_reset'
+ata_soft_reset: ; 0xf2ee8 LB 0x7a
+ push bp ; 55 ; 0xf2ee8 ata.c:1190
+ mov bp, sp ; 89 e5 ; 0xf2ee9
+ push bx ; 53 ; 0xf2eeb
+ push cx ; 51 ; 0xf2eec
+ push dx ; 52 ; 0xf2eed
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2eee ata.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2ef1
+ mov es, dx ; 8e c2 ; 0xf2ef4
+ mov es, [es:bx] ; 26 8e 07 ; 0xf2ef6
+ mov dx, ax ; 89 c2 ; 0xf2ef9 ata.c:1199
+ shr dx, 1 ; d1 ea ; 0xf2efb
+ mov ah, al ; 88 c4 ; 0xf2efd ata.c:1200
+ and ah, 001h ; 80 e4 01 ; 0xf2eff
+ movzx bx, dl ; 0f b6 da ; 0xf2f02 ata.c:1202
+ imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf2f05
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf2f08
+ mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf2f0b
+ mov bx, word [es:bx+0027ch] ; 26 8b 9f 7c 02 ; 0xf2f10 ata.c:1203
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f15 ata.c:1206
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2f18
+ out DX, AL ; ee ; 0xf2f1a
+ test ah, ah ; 84 e4 ; 0xf2f1b ata.c:1207
+ je short 02f24h ; 74 05 ; 0xf2f1d
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2f1f
+ jmp short 02f27h ; eb 03 ; 0xf2f22
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2f24
+ mov dx, cx ; 89 ca ; 0xf2f27
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2f29
+ out DX, AL ; ee ; 0xf2f2c
+ mov dx, cx ; 89 ca ; 0xf2f2d ata.c:1208
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2f2f
+ mov AL, strict byte 008h ; b0 08 ; 0xf2f32
+ out DX, AL ; ee ; 0xf2f34
+ mov dx, cx ; 89 ca ; 0xf2f35 ata.c:1212
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2f37
+ in AL, DX ; ec ; 0xf2f3a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f3b
+ test AL, strict byte 080h ; a8 80 ; 0xf2f3d ata.c:1213
+ jne short 02f35h ; 75 f4 ; 0xf2f3f
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2f41 ata.c:1217
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2f43
+ je short 02f52h ; 74 0b ; 0xf2f45
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f47 ata.c:1221
+ mov AL, strict byte 008h ; b0 08 ; 0xf2f4a
+ out DX, AL ; ee ; 0xf2f4c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2f4d ata.c:1222
+ jmp short 02f5ah ; eb 08 ; 0xf2f50
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f52 ata.c:1226
+ mov AL, strict byte 008h ; b0 08 ; 0xf2f55
+ out DX, AL ; ee ; 0xf2f57
+ xor ax, ax ; 31 c0 ; 0xf2f58 ata.c:1227
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f5a ata.c:1228
+ pop dx ; 5a ; 0xf2f5d
+ pop cx ; 59 ; 0xf2f5e
+ pop bx ; 5b ; 0xf2f5f
+ pop bp ; 5d ; 0xf2f60
+ retn ; c3 ; 0xf2f61
+ ; disGetNextSymbol 0xf2f62 LB 0x7eba -> off=0x0 cb=000000000000002a uValue=00000000000f1962 'set_diskette_current_cyl'
+set_diskette_current_cyl: ; 0xf2f62 LB 0x2a
+ push bp ; 55 ; 0xf2f62 floppy.c:81
+ mov bp, sp ; 89 e5 ; 0xf2f63
+ push bx ; 53 ; 0xf2f65
+ mov dh, al ; 88 c6 ; 0xf2f66
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2f68 floppy.c:83
+ jbe short 02f77h ; 76 0b ; 0xf2f6a
+ push 002d2h ; 68 d2 02 ; 0xf2f6c floppy.c:84
+ push strict byte 00007h ; 6a 07 ; 0xf2f6f
+ call 01a68h ; e8 f4 ea ; 0xf2f71
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2f74
+ movzx bx, dh ; 0f b6 de ; 0xf2f77 floppy.c:85
+ add bx, 00094h ; 81 c3 94 00 ; 0xf2f7a
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f7e floppy.c:53
+ mov es, ax ; 8e c0 ; 0xf2f81
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf2f83
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2f86 floppy.c:86
+ pop bx ; 5b ; 0xf2f89
+ pop bp ; 5d ; 0xf2f8a
+ retn ; c3 ; 0xf2f8b
+ ; disGetNextSymbol 0xf2f8c LB 0x7e90 -> off=0x0 cb=0000000000000023 uValue=00000000000f198c 'floppy_wait_for_interrupt'
+floppy_wait_for_interrupt: ; 0xf2f8c LB 0x23
+ push bp ; 55 ; 0xf2f8c floppy.c:106
+ mov bp, sp ; 89 e5 ; 0xf2f8d
+ push bx ; 53 ; 0xf2f8f
+ cli ; fa ; 0xf2f90 floppy.c:108
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f91 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f94
+ mov es, ax ; 8e c0 ; 0xf2f97
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f99
+ test AL, strict byte 080h ; a8 80 ; 0xf2f9c floppy.c:112
+ je short 02fa4h ; 74 04 ; 0xf2f9e
+ and AL, strict byte 080h ; 24 80 ; 0xf2fa0 floppy.c:113
+ jmp short 02fa9h ; eb 05 ; 0xf2fa2
+ sti ; fb ; 0xf2fa4 floppy.c:114
+ hlt ; f4 ; 0xf2fa5
+ cli ; fa ; 0xf2fa6
+ jmp short 02f91h ; eb e8 ; 0xf2fa7 floppy.c:115
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2fa9 floppy.c:116
+ pop bx ; 5b ; 0xf2fac
+ pop bp ; 5d ; 0xf2fad
+ retn ; c3 ; 0xf2fae
+ ; disGetNextSymbol 0xf2faf LB 0x7e6d -> off=0x0 cb=0000000000000038 uValue=00000000000f19af 'floppy_wait_for_interrupt_or_timeout'
+floppy_wait_for_interrupt_or_timeout: ; 0xf2faf LB 0x38
+ push bp ; 55 ; 0xf2faf floppy.c:126
+ mov bp, sp ; 89 e5 ; 0xf2fb0
+ push bx ; 53 ; 0xf2fb2
+ cli ; fa ; 0xf2fb3 floppy.c:128
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2fb4 floppy.c:48
+ mov es, bx ; 8e c3 ; 0xf2fb7
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fb9
+ test al, al ; 84 c0 ; 0xf2fbc floppy.c:132
+ jne short 02fc3h ; 75 03 ; 0xf2fbe
+ sti ; fb ; 0xf2fc0 floppy.c:133
+ jmp short 02fe1h ; eb 1e ; 0xf2fc1 floppy.c:134
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2fc3 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2fc6
+ mov es, ax ; 8e c0 ; 0xf2fc9
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fcb
+ test AL, strict byte 080h ; a8 80 ; 0xf2fce floppy.c:138
+ je short 02fdch ; 74 0a ; 0xf2fd0
+ mov ah, al ; 88 c4 ; 0xf2fd2 floppy.c:139
+ and ah, 07fh ; 80 e4 7f ; 0xf2fd4
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf2fd7 floppy.c:53
+ jmp short 02fe1h ; eb 05 ; 0xf2fda floppy.c:140
+ sti ; fb ; 0xf2fdc floppy.c:142
+ hlt ; f4 ; 0xf2fdd
+ cli ; fa ; 0xf2fde
+ jmp short 02fb4h ; eb d3 ; 0xf2fdf floppy.c:143
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2fe1 floppy.c:144
+ pop bx ; 5b ; 0xf2fe4
+ pop bp ; 5d ; 0xf2fe5
+ retn ; c3 ; 0xf2fe6
+ ; disGetNextSymbol 0xf2fe7 LB 0x7e35 -> off=0x0 cb=0000000000000042 uValue=00000000000f19e7 'floppy_reset_controller'
+floppy_reset_controller: ; 0xf2fe7 LB 0x42
+ push bp ; 55 ; 0xf2fe7 floppy.c:148
+ mov bp, sp ; 89 e5 ; 0xf2fe8
+ push bx ; 53 ; 0xf2fea
+ push cx ; 51 ; 0xf2feb
+ push dx ; 52 ; 0xf2fec
+ mov cx, ax ; 89 c1 ; 0xf2fed
+ mov dx, 003f2h ; ba f2 03 ; 0xf2fef floppy.c:153
+ in AL, DX ; ec ; 0xf2ff2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ff3
+ mov bx, ax ; 89 c3 ; 0xf2ff5
+ movzx ax, bl ; 0f b6 c3 ; 0xf2ff7 floppy.c:154
+ and AL, strict byte 0fbh ; 24 fb ; 0xf2ffa
+ out DX, AL ; ee ; 0xf2ffc
+ mov al, bl ; 88 d8 ; 0xf2ffd floppy.c:155
+ or AL, strict byte 004h ; 0c 04 ; 0xf2fff
+ out DX, AL ; ee ; 0xf3001
+ mov dx, 003f4h ; ba f4 03 ; 0xf3002 floppy.c:159
+ in AL, DX ; ec ; 0xf3005
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3006
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3008 floppy.c:160
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf300a
+ jne short 03002h ; 75 f4 ; 0xf300c
+ mov bx, cx ; 89 cb ; 0xf300e floppy.c:163
+ add bx, 00090h ; 81 c3 90 00 ; 0xf3010
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3014 floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf3017
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3019
+ and AL, strict byte 0efh ; 24 ef ; 0xf301c floppy.c:164
+ mov byte [es:bx], al ; 26 88 07 ; 0xf301e floppy.c:53
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf3021 floppy.c:167
+ pop dx ; 5a ; 0xf3024
+ pop cx ; 59 ; 0xf3025
+ pop bx ; 5b ; 0xf3026
+ pop bp ; 5d ; 0xf3027
+ retn ; c3 ; 0xf3028
+ ; disGetNextSymbol 0xf3029 LB 0x7df3 -> off=0x0 cb=0000000000000074 uValue=00000000000f1a29 'floppy_prepare_controller'
+floppy_prepare_controller: ; 0xf3029 LB 0x74
+ push bp ; 55 ; 0xf3029 floppy.c:169
+ mov bp, sp ; 89 e5 ; 0xf302a
+ push bx ; 53 ; 0xf302c
+ push cx ; 51 ; 0xf302d
+ push dx ; 52 ; 0xf302e
+ push ax ; 50 ; 0xf302f
+ mov cx, ax ; 89 c1 ; 0xf3030
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf3032 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3035
+ mov es, ax ; 8e c0 ; 0xf3038
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf303a
+ and AL, strict byte 07fh ; 24 7f ; 0xf303d floppy.c:175
+ mov byte [es:bx], al ; 26 88 07 ; 0xf303f floppy.c:53
+ mov dx, 003f2h ; ba f2 03 ; 0xf3042 floppy.c:179
+ in AL, DX ; ec ; 0xf3045
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3046
+ and AL, strict byte 004h ; 24 04 ; 0xf3048
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf304a
+ test cx, cx ; 85 c9 ; 0xf304d floppy.c:180
+ je short 03055h ; 74 04 ; 0xf304f
+ mov AL, strict byte 020h ; b0 20 ; 0xf3051 floppy.c:181
+ jmp short 03057h ; eb 02 ; 0xf3053 floppy.c:182
+ mov AL, strict byte 010h ; b0 10 ; 0xf3055 floppy.c:183
+ or AL, strict byte 00ch ; 0c 0c ; 0xf3057 floppy.c:184
+ or al, cl ; 08 c8 ; 0xf3059 floppy.c:185
+ mov dx, 003f2h ; ba f2 03 ; 0xf305b floppy.c:186
+ out DX, AL ; ee ; 0xf305e
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf305f floppy.c:53
+ mov es, bx ; 8e c3 ; 0xf3062
+ mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf3064
+ mov bx, 0008bh ; bb 8b 00 ; 0xf3068 floppy.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf306b
+ shr al, 006h ; c0 e8 06 ; 0xf306e floppy.c:193
+ mov dx, 003f7h ; ba f7 03 ; 0xf3071 floppy.c:194
+ out DX, AL ; ee ; 0xf3074
+ mov dx, 003f4h ; ba f4 03 ; 0xf3075 floppy.c:198
+ in AL, DX ; ec ; 0xf3078
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3079
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf307b floppy.c:199
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf307d
+ jne short 03075h ; 75 f4 ; 0xf307f
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf3081 floppy.c:201
+ jne short 03095h ; 75 0e ; 0xf3085
+ call 02f8ch ; e8 02 ff ; 0xf3087 floppy.c:212
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf308a floppy.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf308d
+ mov es, dx ; 8e c2 ; 0xf3090
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3092
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf3095 floppy.c:216
+ pop dx ; 5a ; 0xf3098
+ pop cx ; 59 ; 0xf3099
+ pop bx ; 5b ; 0xf309a
+ pop bp ; 5d ; 0xf309b
+ retn ; c3 ; 0xf309c
+ ; disGetNextSymbol 0xf309d LB 0x7d7f -> off=0x0 cb=0000000000000049 uValue=00000000000f1a9d 'floppy_media_known'
+floppy_media_known: ; 0xf309d LB 0x49
+ push bx ; 53 ; 0xf309d floppy.c:218
+ push dx ; 52 ; 0xf309e
+ push bp ; 55 ; 0xf309f
+ mov bp, sp ; 89 e5 ; 0xf30a0
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf30a2 floppy.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf30a5
+ mov es, dx ; 8e c2 ; 0xf30a8
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf30aa
+ mov bl, bh ; 88 fb ; 0xf30ad floppy.c:49
+ test ax, ax ; 85 c0 ; 0xf30af floppy.c:224
+ je short 030b5h ; 74 02 ; 0xf30b1
+ shr bl, 1 ; d0 eb ; 0xf30b3 floppy.c:225
+ and bl, 001h ; 80 e3 01 ; 0xf30b5 floppy.c:226
+ jne short 030beh ; 75 04 ; 0xf30b8 floppy.c:227
+ xor bh, bh ; 30 ff ; 0xf30ba floppy.c:228
+ jmp short 030e0h ; eb 22 ; 0xf30bc
+ mov bx, 00090h ; bb 90 00 ; 0xf30be floppy.c:230
+ test ax, ax ; 85 c0 ; 0xf30c1 floppy.c:231
+ je short 030c8h ; 74 03 ; 0xf30c3
+ mov bx, 00091h ; bb 91 00 ; 0xf30c5 floppy.c:232
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf30c8 floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf30cb
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf30cd
+ xor ah, ah ; 30 e4 ; 0xf30d0 floppy.c:235
+ sar ax, 004h ; c1 f8 04 ; 0xf30d2
+ and AL, strict byte 001h ; 24 01 ; 0xf30d5
+ jne short 030ddh ; 75 04 ; 0xf30d7 floppy.c:236
+ xor bx, bx ; 31 db ; 0xf30d9 floppy.c:237
+ jmp short 030e0h ; eb 03 ; 0xf30db
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf30dd floppy.c:240
+ mov ax, bx ; 89 d8 ; 0xf30e0 floppy.c:241
+ pop bp ; 5d ; 0xf30e2
+ pop dx ; 5a ; 0xf30e3
+ pop bx ; 5b ; 0xf30e4
+ retn ; c3 ; 0xf30e5
+ ; disGetNextSymbol 0xf30e6 LB 0x7d36 -> off=0x0 cb=000000000000004e uValue=00000000000f1ae6 'floppy_read_id'
+floppy_read_id: ; 0xf30e6 LB 0x4e
+ push bp ; 55 ; 0xf30e6 floppy.c:243
+ mov bp, sp ; 89 e5 ; 0xf30e7
+ push bx ; 53 ; 0xf30e9
+ push dx ; 52 ; 0xf30ea
+ push si ; 56 ; 0xf30eb
+ mov bx, ax ; 89 c3 ; 0xf30ec
+ call 03029h ; e8 38 ff ; 0xf30ee floppy.c:250
+ mov AL, strict byte 04ah ; b0 4a ; 0xf30f1 floppy.c:253
+ mov dx, 003f5h ; ba f5 03 ; 0xf30f3
+ out DX, AL ; ee ; 0xf30f6
+ mov al, bl ; 88 d8 ; 0xf30f7 floppy.c:254
+ out DX, AL ; ee ; 0xf30f9
+ call 02f8ch ; e8 8f fe ; 0xf30fa floppy.c:269
+ xor bx, bx ; 31 db ; 0xf30fd floppy.c:273
+ jmp short 03106h ; eb 05 ; 0xf30ff
+ cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf3101
+ jnl short 0311ah ; 7d 14 ; 0xf3104
+ mov dx, 003f5h ; ba f5 03 ; 0xf3106 floppy.c:274
+ in AL, DX ; ec ; 0xf3109
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf310a
+ lea si, [bx+042h] ; 8d 77 42 ; 0xf310c
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf310f floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf3112
+ mov byte [es:si], al ; 26 88 04 ; 0xf3114
+ inc bx ; 43 ; 0xf3117 floppy.c:274
+ jmp short 03101h ; eb e7 ; 0xf3118
+ mov bx, strict word 00042h ; bb 42 00 ; 0xf311a floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf311d
+ mov es, ax ; 8e c0 ; 0xf3120
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3122
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3125 floppy.c:49
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf3127
+ xor ah, ah ; 30 e4 ; 0xf312a
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf312c floppy.c:280
+ pop si ; 5e ; 0xf312f
+ pop dx ; 5a ; 0xf3130
+ pop bx ; 5b ; 0xf3131
+ pop bp ; 5d ; 0xf3132
+ retn ; c3 ; 0xf3133
+ ; disGetNextSymbol 0xf3134 LB 0x7ce8 -> off=0x0 cb=0000000000000041 uValue=00000000000f1b34 'floppy_drive_recal'
+floppy_drive_recal: ; 0xf3134 LB 0x41
+ push bp ; 55 ; 0xf3134 floppy.c:282
+ mov bp, sp ; 89 e5 ; 0xf3135
+ push bx ; 53 ; 0xf3137
+ push dx ; 52 ; 0xf3138
+ push si ; 56 ; 0xf3139
+ mov bx, ax ; 89 c3 ; 0xf313a
+ call 03029h ; e8 ea fe ; 0xf313c floppy.c:287
+ mov AL, strict byte 007h ; b0 07 ; 0xf313f floppy.c:290
+ mov dx, 003f5h ; ba f5 03 ; 0xf3141
+ out DX, AL ; ee ; 0xf3144
+ mov al, bl ; 88 d8 ; 0xf3145 floppy.c:291
+ out DX, AL ; ee ; 0xf3147
+ call 02f8ch ; e8 41 fe ; 0xf3148 floppy.c:310
+ test bx, bx ; 85 db ; 0xf314b floppy.c:314
+ je short 03156h ; 74 07 ; 0xf314d
+ or AL, strict byte 002h ; 0c 02 ; 0xf314f floppy.c:315
+ mov bx, 00095h ; bb 95 00 ; 0xf3151 floppy.c:316
+ jmp short 0315bh ; eb 05 ; 0xf3154 floppy.c:317
+ or AL, strict byte 001h ; 0c 01 ; 0xf3156 floppy.c:318
+ mov bx, 00094h ; bb 94 00 ; 0xf3158 floppy.c:319
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf315b floppy.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf315e
+ mov es, dx ; 8e c2 ; 0xf3161
+ mov byte [es:si], al ; 26 88 04 ; 0xf3163
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3166 floppy.c:53
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf316a floppy.c:325
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf316d
+ pop si ; 5e ; 0xf3170
+ pop dx ; 5a ; 0xf3171
+ pop bx ; 5b ; 0xf3172
+ pop bp ; 5d ; 0xf3173
+ retn ; c3 ; 0xf3174
+ ; disGetNextSymbol 0xf3175 LB 0x7ca7 -> off=0x0 cb=00000000000000e4 uValue=00000000000f1b75 'floppy_media_sense'
+floppy_media_sense: ; 0xf3175 LB 0xe4
+ push bp ; 55 ; 0xf3175 floppy.c:328
+ mov bp, sp ; 89 e5 ; 0xf3176
+ push bx ; 53 ; 0xf3178
+ push cx ; 51 ; 0xf3179
+ push dx ; 52 ; 0xf317a
+ push si ; 56 ; 0xf317b
+ mov bx, ax ; 89 c3 ; 0xf317c
+ call 03134h ; e8 b3 ff ; 0xf317e floppy.c:334
+ test ax, ax ; 85 c0 ; 0xf3181
+ jne short 0318ah ; 75 05 ; 0xf3183
+ xor dx, dx ; 31 d2 ; 0xf3185 floppy.c:335
+ jmp near 0324eh ; e9 c4 00 ; 0xf3187
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf318a floppy.c:370
+ call 0176ah ; e8 da e5 ; 0xf318d
+ test bx, bx ; 85 db ; 0xf3190 floppy.c:371
+ jne short 0319bh ; 75 07 ; 0xf3192
+ mov dl, al ; 88 c2 ; 0xf3194 floppy.c:372
+ shr dl, 004h ; c0 ea 04 ; 0xf3196
+ jmp short 031a0h ; eb 05 ; 0xf3199 floppy.c:373
+ mov dl, al ; 88 c2 ; 0xf319b floppy.c:374
+ and dl, 00fh ; 80 e2 0f ; 0xf319d
+ cmp dl, 001h ; 80 fa 01 ; 0xf31a0 floppy.c:375
+ jne short 031aeh ; 75 09 ; 0xf31a3
+ xor dl, dl ; 30 d2 ; 0xf31a5 floppy.c:377
+ mov DH, strict byte 015h ; b6 15 ; 0xf31a7 floppy.c:378
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf31a9 floppy.c:379
+ jmp short 031ech ; eb 3e ; 0xf31ac floppy.c:381
+ cmp dl, 002h ; 80 fa 02 ; 0xf31ae
+ jne short 031b9h ; 75 06 ; 0xf31b1
+ xor dl, dl ; 30 d2 ; 0xf31b3 floppy.c:383
+ mov DH, strict byte 035h ; b6 35 ; 0xf31b5 floppy.c:384
+ jmp short 031a9h ; eb f0 ; 0xf31b7
+ cmp dl, 003h ; 80 fa 03 ; 0xf31b9 floppy.c:387
+ jne short 031c4h ; 75 06 ; 0xf31bc
+ xor dl, dl ; 30 d2 ; 0xf31be floppy.c:389
+ mov DH, strict byte 017h ; b6 17 ; 0xf31c0 floppy.c:390
+ jmp short 031a9h ; eb e5 ; 0xf31c2
+ cmp dl, 004h ; 80 fa 04 ; 0xf31c4 floppy.c:393
+ jne short 031cfh ; 75 06 ; 0xf31c7
+ xor dl, dl ; 30 d2 ; 0xf31c9 floppy.c:395
+ mov DH, strict byte 017h ; b6 17 ; 0xf31cb floppy.c:396
+ jmp short 031a9h ; eb da ; 0xf31cd
+ cmp dl, 005h ; 80 fa 05 ; 0xf31cf floppy.c:399
+ jne short 031dah ; 75 06 ; 0xf31d2
+ mov DL, strict byte 0cch ; b2 cc ; 0xf31d4 floppy.c:401
+ mov DH, strict byte 0d7h ; b6 d7 ; 0xf31d6 floppy.c:402
+ jmp short 031a9h ; eb cf ; 0xf31d8
+ cmp dl, 00eh ; 80 fa 0e ; 0xf31da floppy.c:406
+ je short 031e4h ; 74 05 ; 0xf31dd
+ cmp dl, 00fh ; 80 fa 0f ; 0xf31df
+ jne short 031e6h ; 75 02 ; 0xf31e2
+ jmp short 031d4h ; eb ee ; 0xf31e4
+ xor dl, dl ; 30 d2 ; 0xf31e6 floppy.c:414
+ xor dh, dh ; 30 f6 ; 0xf31e8 floppy.c:415
+ xor cx, cx ; 31 c9 ; 0xf31ea floppy.c:416
+ mov si, 0008bh ; be 8b 00 ; 0xf31ec floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf31ef
+ mov es, ax ; 8e c0 ; 0xf31f2
+ mov byte [es:si], dl ; 26 88 14 ; 0xf31f4
+ mov ax, bx ; 89 d8 ; 0xf31f7 floppy.c:420
+ call 030e6h ; e8 ea fe ; 0xf31f9
+ test ax, ax ; 85 c0 ; 0xf31fc
+ jne short 03232h ; 75 32 ; 0xf31fe
+ mov al, dl ; 88 d0 ; 0xf3200 floppy.c:421
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3202
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf3204
+ je short 03232h ; 74 2a ; 0xf3206
+ mov al, dl ; 88 d0 ; 0xf3208 floppy.c:425
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf320a
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf320c
+ je short 0321fh ; 74 0f ; 0xf320e
+ mov ah, dl ; 88 d4 ; 0xf3210
+ and ah, 03fh ; 80 e4 3f ; 0xf3212
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf3215
+ je short 0322bh ; 74 12 ; 0xf3217
+ test al, al ; 84 c0 ; 0xf3219
+ je short 03224h ; 74 07 ; 0xf321b
+ jmp short 031ech ; eb cd ; 0xf321d
+ and dl, 03fh ; 80 e2 3f ; 0xf321f floppy.c:427
+ jmp short 031ech ; eb c8 ; 0xf3222 floppy.c:428
+ mov dl, ah ; 88 e2 ; 0xf3224 floppy.c:430
+ or dl, 040h ; 80 ca 40 ; 0xf3226
+ jmp short 031ech ; eb c1 ; 0xf3229 floppy.c:431
+ mov dl, ah ; 88 e2 ; 0xf322b floppy.c:433
+ or dl, 080h ; 80 ca 80 ; 0xf322d
+ jmp short 031ech ; eb ba ; 0xf3230 floppy.c:437
+ test bx, bx ; 85 db ; 0xf3232 floppy.c:439
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf3234
+ movzx bx, al ; 0f b6 d8 ; 0xf3237
+ add bx, 00090h ; 81 c3 90 00 ; 0xf323a
+ mov si, 0008bh ; be 8b 00 ; 0xf323e floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3241
+ mov es, ax ; 8e c0 ; 0xf3244
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3246
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf3249 floppy.c:53
+ mov dx, cx ; 89 ca ; 0xf324c floppy.c:446
+ mov ax, dx ; 89 d0 ; 0xf324e floppy.c:447
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf3250
+ pop si ; 5e ; 0xf3253
+ pop dx ; 5a ; 0xf3254
+ pop cx ; 59 ; 0xf3255
+ pop bx ; 5b ; 0xf3256
+ pop bp ; 5d ; 0xf3257
+ retn ; c3 ; 0xf3258
+ ; disGetNextSymbol 0xf3259 LB 0x7bc3 -> off=0x0 cb=0000000000000024 uValue=00000000000f1c59 'floppy_drive_exists'
+floppy_drive_exists: ; 0xf3259 LB 0x24
+ push bp ; 55 ; 0xf3259 floppy.c:450
+ mov bp, sp ; 89 e5 ; 0xf325a
+ push dx ; 52 ; 0xf325c
+ mov dx, ax ; 89 c2 ; 0xf325d
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf325f floppy.c:456
+ call 0176ah ; e8 05 e5 ; 0xf3262
+ test dx, dx ; 85 d2 ; 0xf3265 floppy.c:457
+ jne short 0326eh ; 75 05 ; 0xf3267
+ shr al, 004h ; c0 e8 04 ; 0xf3269 floppy.c:458
+ jmp short 03270h ; eb 02 ; 0xf326c floppy.c:459
+ and AL, strict byte 00fh ; 24 0f ; 0xf326e floppy.c:460
+ test al, al ; 84 c0 ; 0xf3270 floppy.c:461
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf3272
+ xor ah, ah ; 30 e4 ; 0xf3275
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf3277 floppy.c:462
+ pop dx ; 5a ; 0xf327a
+ pop bp ; 5d ; 0xf327b
+ retn ; c3 ; 0xf327c
+ ; disGetNextSymbol 0xf327d LB 0x7b9f -> off=0x23 cb=0000000000000984 uValue=00000000000f1ca0 'int13_diskette_function'
+ db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 001h, 03ch, 0e0h, 032h, 05dh
+ db 033h, 07dh, 033h, 07dh, 033h, 07dh, 033h, 0f8h, 036h, 0b6h, 038h, 0a6h, 039h, 0e8h, 039h, 01ch
+ db 03ah, 08eh, 03ah
+int13_diskette_function: ; 0xf32a0 LB 0x984
+ push bp ; 55 ; 0xf32a0 floppy.c:477
+ mov bp, sp ; 89 e5 ; 0xf32a1
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf32a3
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf32a6 floppy.c:488
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32aa floppy.c:490
+ shr ax, 008h ; c1 e8 08 ; 0xf32ad
+ cmp ax, strict word 00018h ; 3d 18 00 ; 0xf32b0
+ jnbe near 03c01h ; 0f 87 4a 09 ; 0xf32b3
+ push CS ; 0e ; 0xf32b7
+ pop ES ; 07 ; 0xf32b8
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf32b9
+ mov di, 0327dh ; bf 7d 32 ; 0xf32bc
+ repne scasb ; f2 ae ; 0xf32bf
+ sal cx, 1 ; d1 e1 ; 0xf32c1
+ mov di, cx ; 89 cf ; 0xf32c3
+ mov di, word [cs:di+03288h] ; 2e 8b bd 88 32 ; 0xf32c5
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf32ca
+ xor dh, dh ; 30 f6 ; 0xf32cd
+ mov ah, byte [bp+00eh] ; 8a 66 0e ; 0xf32cf
+ mov cx, word [bp+01ch] ; 8b 4e 1c ; 0xf32d2
+ or cl, 001h ; 80 c9 01 ; 0xf32d5
+ mov si, dx ; 89 d6 ; 0xf32d8
+ or si, 00100h ; 81 ce 00 01 ; 0xf32da
+ jmp di ; ff e7 ; 0xf32de
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf32e0 floppy.c:493
+ cmp bl, 001h ; 80 fb 01 ; 0xf32e3 floppy.c:494
+ jbe short 03302h ; 76 1a ; 0xf32e6
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32e8 floppy.c:495
+ xor ah, ah ; 30 e4 ; 0xf32eb
+ or ah, 001h ; 80 cc 01 ; 0xf32ed
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf32f0
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf32f3 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf32f6
+ mov es, ax ; 8e c0 ; 0xf32f9
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf32fb
+ jmp near 03aeeh ; e9 ec 07 ; 0xf32ff
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3302 floppy.c:501
+ call 0176ah ; e8 62 e4 ; 0xf3305
+ test bl, bl ; 84 db ; 0xf3308 floppy.c:502
+ jne short 03313h ; 75 07 ; 0xf330a
+ mov dl, al ; 88 c2 ; 0xf330c floppy.c:503
+ shr dl, 004h ; c0 ea 04 ; 0xf330e
+ jmp short 03318h ; eb 05 ; 0xf3311 floppy.c:504
+ mov dl, al ; 88 c2 ; 0xf3313 floppy.c:505
+ and dl, 00fh ; 80 e2 0f ; 0xf3315
+ test dl, dl ; 84 d2 ; 0xf3318 floppy.c:506
+ jne short 03336h ; 75 1a ; 0xf331a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf331c floppy.c:507
+ xor ah, ah ; 30 e4 ; 0xf331f
+ or ah, 080h ; 80 cc 80 ; 0xf3321
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3324
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3327 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf332a
+ mov es, ax ; 8e c0 ; 0xf332d
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf332f
+ jmp near 03aeeh ; e9 b8 07 ; 0xf3333
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf3336 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3339
+ mov es, ax ; 8e c0 ; 0xf333c
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf333e
+ xor al, al ; 30 c0 ; 0xf3342 floppy.c:516
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf3344
+ mov si, strict word 00041h ; be 41 00 ; 0xf3347 floppy.c:53
+ mov byte [es:si], al ; 26 88 04 ; 0xf334a
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf334d floppy.c:518
+ movzx ax, bl ; 0f b6 c3 ; 0xf3351 floppy.c:519
+ xor dx, dx ; 31 d2 ; 0xf3354
+ call 02f62h ; e8 09 fc ; 0xf3356
+ mov sp, bp ; 89 ec ; 0xf3359 floppy.c:520
+ pop bp ; 5d ; 0xf335b
+ retn ; c3 ; 0xf335c
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf335d floppy.c:523
+ mov bx, 00441h ; bb 41 04 ; 0xf3361 floppy.c:48
+ xor ax, ax ; 31 c0 ; 0xf3364
+ mov es, ax ; 8e c0 ; 0xf3366
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3368
+ movzx bx, al ; 0f b6 d8 ; 0xf336b floppy.c:525
+ sal bx, 008h ; c1 e3 08 ; 0xf336e
+ or dx, bx ; 09 da ; 0xf3371
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf3373
+ test al, al ; 84 c0 ; 0xf3376 floppy.c:526
+ je short 03359h ; 74 df ; 0xf3378
+ jmp near 03aeeh ; e9 71 07 ; 0xf337a
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf337d floppy.c:534
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf3380 floppy.c:535
+ shr ax, 008h ; c1 e8 08 ; 0xf3383
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf3386
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf3389 floppy.c:536
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf338c
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf338f floppy.c:537
+ shr ax, 008h ; c1 e8 08 ; 0xf3392
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf3395
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3398 floppy.c:538
+ cmp bl, 001h ; 80 fb 01 ; 0xf339b floppy.c:540
+ jnbe short 033adh ; 77 0d ; 0xf339e
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf33a0
+ jnbe short 033adh ; 77 09 ; 0xf33a2
+ test bh, bh ; 84 ff ; 0xf33a4
+ je short 033adh ; 74 05 ; 0xf33a6
+ cmp bh, 048h ; 80 ff 48 ; 0xf33a8
+ jbe short 033e0h ; 76 33 ; 0xf33ab
+ mov bx, 00e16h ; bb 16 0e ; 0xf33ad floppy.c:542
+ mov cx, ds ; 8c d9 ; 0xf33b0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf33b2
+ call 01a27h ; e8 6f e6 ; 0xf33b5
+ push 002f7h ; 68 f7 02 ; 0xf33b8
+ push 0030fh ; 68 0f 03 ; 0xf33bb
+ push strict byte 00004h ; 6a 04 ; 0xf33be
+ call 01a68h ; e8 a5 e6 ; 0xf33c0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf33c3
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf33c6 floppy.c:543
+ xor ah, ah ; 30 e4 ; 0xf33c9
+ or ah, 001h ; 80 cc 01 ; 0xf33cb
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf33ce
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf33d1 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf33d4
+ mov es, ax ; 8e c0 ; 0xf33d7
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf33d9
+ jmp near 0346bh ; e9 8b 00 ; 0xf33dd
+ movzx ax, bl ; 0f b6 c3 ; 0xf33e0 floppy.c:545
+ call 03259h ; e8 73 fe ; 0xf33e3
+ test ax, ax ; 85 c0 ; 0xf33e6
+ je near 03502h ; 0f 84 16 01 ; 0xf33e8
+ movzx cx, bl ; 0f b6 cb ; 0xf33ec floppy.c:561
+ mov ax, cx ; 89 c8 ; 0xf33ef
+ call 0309dh ; e8 a9 fc ; 0xf33f1
+ test ax, ax ; 85 c0 ; 0xf33f4
+ jne short 0341ah ; 75 22 ; 0xf33f6
+ mov ax, cx ; 89 c8 ; 0xf33f8 floppy.c:562
+ call 03175h ; e8 78 fd ; 0xf33fa
+ test ax, ax ; 85 c0 ; 0xf33fd
+ jne short 0341ah ; 75 19 ; 0xf33ff
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3401 floppy.c:564
+ xor ah, ah ; 30 e4 ; 0xf3404
+ or ah, 00ch ; 80 cc 0c ; 0xf3406
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3409
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf340c floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf340f
+ mov es, ax ; 8e c0 ; 0xf3412
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3414
+ jmp short 0346bh ; eb 51 ; 0xf3418
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf341a floppy.c:572
+ shr ax, 008h ; c1 e8 08 ; 0xf341d
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf3420
+ jne near 035b6h ; 0f 85 8f 01 ; 0xf3423
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3427 floppy.c:583
+ shr dx, 00ch ; c1 ea 0c ; 0xf342a
+ mov ah, dl ; 88 d4 ; 0xf342d
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf342f floppy.c:584
+ sal cx, 004h ; c1 e1 04 ; 0xf3432
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3435 floppy.c:585
+ add si, cx ; 01 ce ; 0xf3438
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf343a
+ cmp cx, si ; 39 f1 ; 0xf343d floppy.c:587
+ jbe short 03443h ; 76 02 ; 0xf343f
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf3441 floppy.c:589
+ movzx cx, bh ; 0f b6 cf ; 0xf3443 floppy.c:591
+ sal cx, 009h ; c1 e1 09 ; 0xf3446
+ dec cx ; 49 ; 0xf3449
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf344a floppy.c:594
+ add dx, cx ; 01 ca ; 0xf344d
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf344f floppy.c:595
+ jnc short 03472h ; 73 1e ; 0xf3452
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3454 floppy.c:596
+ xor ah, ah ; 30 e4 ; 0xf3457
+ or ah, 009h ; 80 cc 09 ; 0xf3459
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf345c
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf345f floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3462
+ mov es, ax ; 8e c0 ; 0xf3465
+ mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf3467
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf346b
+ jmp near 03aeeh ; e9 7c 06 ; 0xf346f
+ mov AL, strict byte 006h ; b0 06 ; 0xf3472 floppy.c:604
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3474
+ out DX, AL ; ee ; 0xf3477
+ xor al, al ; 30 c0 ; 0xf3478 floppy.c:607
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf347a
+ out DX, AL ; ee ; 0xf347d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf347e floppy.c:608
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3481
+ out DX, AL ; ee ; 0xf3484
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3485 floppy.c:609
+ shr dx, 008h ; c1 ea 08 ; 0xf3488
+ mov al, dl ; 88 d0 ; 0xf348b
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf348d
+ out DX, AL ; ee ; 0xf3490
+ xor al, al ; 30 c0 ; 0xf3491 floppy.c:611
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3493
+ out DX, AL ; ee ; 0xf3496
+ mov al, cl ; 88 c8 ; 0xf3497 floppy.c:612
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3499
+ out DX, AL ; ee ; 0xf349c
+ shr cx, 008h ; c1 e9 08 ; 0xf349d floppy.c:613
+ mov al, cl ; 88 c8 ; 0xf34a0
+ out DX, AL ; ee ; 0xf34a2
+ mov AL, strict byte 046h ; b0 46 ; 0xf34a3 floppy.c:621
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf34a5
+ out DX, AL ; ee ; 0xf34a8
+ mov al, ah ; 88 e0 ; 0xf34a9 floppy.c:625
+ mov dx, 00081h ; ba 81 00 ; 0xf34ab
+ out DX, AL ; ee ; 0xf34ae
+ mov AL, strict byte 002h ; b0 02 ; 0xf34af floppy.c:628
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf34b1
+ out DX, AL ; ee ; 0xf34b4
+ movzx cx, bl ; 0f b6 cb ; 0xf34b5 floppy.c:633
+ mov ax, cx ; 89 c8 ; 0xf34b8
+ call 03029h ; e8 6c fb ; 0xf34ba
+ mov AL, strict byte 0e6h ; b0 e6 ; 0xf34bd floppy.c:636
+ mov dx, 003f5h ; ba f5 03 ; 0xf34bf
+ out DX, AL ; ee ; 0xf34c2
+ movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf34c3 floppy.c:637
+ sal dx, 002h ; c1 e2 02 ; 0xf34c7
+ movzx ax, bl ; 0f b6 c3 ; 0xf34ca
+ or ax, dx ; 09 d0 ; 0xf34cd
+ mov dx, 003f5h ; ba f5 03 ; 0xf34cf
+ out DX, AL ; ee ; 0xf34d2
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf34d3 floppy.c:638
+ out DX, AL ; ee ; 0xf34d6
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf34d7 floppy.c:639
+ out DX, AL ; ee ; 0xf34da
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf34db floppy.c:640
+ out DX, AL ; ee ; 0xf34de
+ mov AL, strict byte 002h ; b0 02 ; 0xf34df floppy.c:641
+ out DX, AL ; ee ; 0xf34e1
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf34e2 floppy.c:642
+ movzx dx, bh ; 0f b6 d7 ; 0xf34e6
+ add ax, dx ; 01 d0 ; 0xf34e9
+ dec ax ; 48 ; 0xf34eb
+ mov dx, 003f5h ; ba f5 03 ; 0xf34ec
+ out DX, AL ; ee ; 0xf34ef
+ xor al, al ; 30 c0 ; 0xf34f0 floppy.c:643
+ out DX, AL ; ee ; 0xf34f2
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf34f3 floppy.c:644
+ out DX, AL ; ee ; 0xf34f5
+ call 02fafh ; e8 b6 fa ; 0xf34f6 floppy.c:676
+ test al, al ; 84 c0 ; 0xf34f9 floppy.c:677
+ jne short 0351ch ; 75 1f ; 0xf34fb
+ mov ax, cx ; 89 c8 ; 0xf34fd floppy.c:679
+ call 02fe7h ; e8 e5 fa ; 0xf34ff
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3502 floppy.c:78
+ xor ah, ah ; 30 e4 ; 0xf3505
+ or ah, 080h ; 80 cc 80 ; 0xf3507
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf350a
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf350d
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3510
+ mov es, ax ; 8e c0 ; 0xf3513
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3515
+ jmp near 0346bh ; e9 4f ff ; 0xf3519
+ mov dx, 003f4h ; ba f4 03 ; 0xf351c floppy.c:689
+ in AL, DX ; ec ; 0xf351f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3520
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3522 floppy.c:690
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3524
+ je short 03536h ; 74 0e ; 0xf3526
+ push 002f7h ; 68 f7 02 ; 0xf3528 floppy.c:691
+ push 0032ah ; 68 2a 03 ; 0xf352b
+ push strict byte 00007h ; 6a 07 ; 0xf352e
+ call 01a68h ; e8 35 e5 ; 0xf3530
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3533
+ xor cx, cx ; 31 c9 ; 0xf3536 floppy.c:694
+ jmp short 0353fh ; eb 05 ; 0xf3538
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf353a
+ jnl short 03555h ; 7d 16 ; 0xf353d
+ mov dx, 003f5h ; ba f5 03 ; 0xf353f floppy.c:695
+ in AL, DX ; ec ; 0xf3542
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3543
+ mov si, cx ; 89 ce ; 0xf3545
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf3547
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf354a floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf354d
+ mov byte [es:si], al ; 26 88 04 ; 0xf354f
+ inc cx ; 41 ; 0xf3552 floppy.c:695
+ jmp short 0353ah ; eb e5 ; 0xf3553
+ mov si, strict word 00042h ; be 42 00 ; 0xf3555 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3558
+ mov es, ax ; 8e c0 ; 0xf355b
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf355d
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3560 floppy.c:49
+ je short 03584h ; 74 20 ; 0xf3562
+ movzx ax, bl ; 0f b6 c3 ; 0xf3564 floppy.c:699
+ call 02fe7h ; e8 7d fa ; 0xf3567
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf356a floppy.c:700
+ xor ah, ah ; 30 e4 ; 0xf356d
+ or ah, 020h ; 80 cc 20 ; 0xf356f
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3572
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3575 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3578
+ mov es, ax ; 8e c0 ; 0xf357b
+ mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf357d
+ jmp near 0346bh ; e9 e7 fe ; 0xf3581
+ movzx ax, bh ; 0f b6 c7 ; 0xf3584 floppy.c:708
+ sal ax, 009h ; c1 e0 09 ; 0xf3587
+ cwd ; 99 ; 0xf358a
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf358b
+ sar ax, 1 ; d1 f8 ; 0xf358d
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf358f
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3592
+ mov di, si ; 89 f7 ; 0xf3595
+ mov cx, ax ; 89 c1 ; 0xf3597
+ mov es, dx ; 8e c2 ; 0xf3599
+ push DS ; 1e ; 0xf359b
+ mov ds, dx ; 8e da ; 0xf359c
+ rep movsw ; f3 a5 ; 0xf359e
+ pop DS ; 1f ; 0xf35a0
+ movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf35a1 floppy.c:712
+ movzx ax, bl ; 0f b6 c3 ; 0xf35a5
+ call 02f62h ; e8 b7 f9 ; 0xf35a8
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf35ab floppy.c:714
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf35af floppy.c:715
+ jmp near 03359h ; e9 a3 fd ; 0xf35b3 floppy.c:716
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf35b6 floppy.c:717
+ shr ax, 008h ; c1 e8 08 ; 0xf35b9
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf35bc
+ jne near 036e3h ; 0f 85 20 01 ; 0xf35bf
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf35c3 floppy.c:728
+ shr cx, 00ch ; c1 e9 0c ; 0xf35c6
+ mov ah, cl ; 88 cc ; 0xf35c9
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf35cb floppy.c:729
+ sal dx, 004h ; c1 e2 04 ; 0xf35ce
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf35d1 floppy.c:730
+ add si, dx ; 01 d6 ; 0xf35d4
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf35d6
+ cmp dx, si ; 39 f2 ; 0xf35d9 floppy.c:732
+ jbe short 035dfh ; 76 02 ; 0xf35db
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf35dd floppy.c:734
+ movzx cx, bh ; 0f b6 cf ; 0xf35df floppy.c:736
+ sal cx, 009h ; c1 e1 09 ; 0xf35e2
+ dec cx ; 49 ; 0xf35e5
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf35e6 floppy.c:739
+ add dx, cx ; 01 ca ; 0xf35e9
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf35eb floppy.c:740
+ jc near 03454h ; 0f 82 62 fe ; 0xf35ee
+ mov AL, strict byte 006h ; b0 06 ; 0xf35f2 floppy.c:749
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf35f4
+ out DX, AL ; ee ; 0xf35f7
+ xor al, al ; 30 c0 ; 0xf35f8 floppy.c:751
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf35fa
+ out DX, AL ; ee ; 0xf35fd
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf35fe floppy.c:752
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3601
+ out DX, AL ; ee ; 0xf3604
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3605 floppy.c:753
+ shr dx, 008h ; c1 ea 08 ; 0xf3608
+ mov al, dl ; 88 d0 ; 0xf360b
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf360d
+ out DX, AL ; ee ; 0xf3610
+ xor al, al ; 30 c0 ; 0xf3611 floppy.c:754
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3613
+ out DX, AL ; ee ; 0xf3616
+ mov al, cl ; 88 c8 ; 0xf3617 floppy.c:755
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3619
+ out DX, AL ; ee ; 0xf361c
+ shr cx, 008h ; c1 e9 08 ; 0xf361d floppy.c:756
+ mov al, cl ; 88 c8 ; 0xf3620
+ out DX, AL ; ee ; 0xf3622
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3623 floppy.c:763
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3625
+ out DX, AL ; ee ; 0xf3628
+ mov al, ah ; 88 e0 ; 0xf3629 floppy.c:766
+ mov dx, 00081h ; ba 81 00 ; 0xf362b
+ out DX, AL ; ee ; 0xf362e
+ mov AL, strict byte 002h ; b0 02 ; 0xf362f floppy.c:769
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3631
+ out DX, AL ; ee ; 0xf3634
+ movzx cx, bl ; 0f b6 cb ; 0xf3635 floppy.c:774
+ mov ax, cx ; 89 c8 ; 0xf3638
+ call 03029h ; e8 ec f9 ; 0xf363a
+ mov AL, strict byte 0c5h ; b0 c5 ; 0xf363d floppy.c:777
+ mov dx, 003f5h ; ba f5 03 ; 0xf363f
+ out DX, AL ; ee ; 0xf3642
+ movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf3643 floppy.c:778
+ sal dx, 002h ; c1 e2 02 ; 0xf3647
+ movzx ax, bl ; 0f b6 c3 ; 0xf364a
+ or ax, dx ; 09 d0 ; 0xf364d
+ mov dx, 003f5h ; ba f5 03 ; 0xf364f
+ out DX, AL ; ee ; 0xf3652
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3653 floppy.c:779
+ out DX, AL ; ee ; 0xf3656
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3657 floppy.c:780
+ out DX, AL ; ee ; 0xf365a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf365b floppy.c:781
+ out DX, AL ; ee ; 0xf365e
+ mov AL, strict byte 002h ; b0 02 ; 0xf365f floppy.c:782
+ out DX, AL ; ee ; 0xf3661
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf3662 floppy.c:783
+ movzx ax, bh ; 0f b6 c7 ; 0xf3666
+ add ax, dx ; 01 d0 ; 0xf3669
+ dec ax ; 48 ; 0xf366b
+ mov dx, 003f5h ; ba f5 03 ; 0xf366c
+ out DX, AL ; ee ; 0xf366f
+ xor al, al ; 30 c0 ; 0xf3670 floppy.c:784
+ out DX, AL ; ee ; 0xf3672
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf3673 floppy.c:785
+ out DX, AL ; ee ; 0xf3675
+ call 02fafh ; e8 36 f9 ; 0xf3676 floppy.c:814
+ test al, al ; 84 c0 ; 0xf3679 floppy.c:815
+ je near 034fdh ; 0f 84 7e fe ; 0xf367b
+ mov dx, 003f4h ; ba f4 03 ; 0xf367f floppy.c:826
+ in AL, DX ; ec ; 0xf3682
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3683
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3685 floppy.c:827
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3687
+ je short 03699h ; 74 0e ; 0xf3689
+ push 002f7h ; 68 f7 02 ; 0xf368b floppy.c:828
+ push 0032ah ; 68 2a 03 ; 0xf368e
+ push strict byte 00007h ; 6a 07 ; 0xf3691
+ call 01a68h ; e8 d2 e3 ; 0xf3693
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3696
+ xor cx, cx ; 31 c9 ; 0xf3699 floppy.c:831
+ jmp short 036a2h ; eb 05 ; 0xf369b
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf369d
+ jnl short 036b8h ; 7d 16 ; 0xf36a0
+ mov dx, 003f5h ; ba f5 03 ; 0xf36a2 floppy.c:832
+ in AL, DX ; ec ; 0xf36a5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf36a6
+ mov si, cx ; 89 ce ; 0xf36a8
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf36aa
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf36ad floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf36b0
+ mov byte [es:si], al ; 26 88 04 ; 0xf36b2
+ inc cx ; 41 ; 0xf36b5 floppy.c:832
+ jmp short 0369dh ; eb e5 ; 0xf36b6
+ mov si, strict word 00042h ; be 42 00 ; 0xf36b8 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf36bb
+ mov es, ax ; 8e c0 ; 0xf36be
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf36c0
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf36c3 floppy.c:49
+ je near 035a1h ; 0f 84 d8 fe ; 0xf36c5
+ mov bx, strict word 00043h ; bb 43 00 ; 0xf36c9 floppy.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf36cc
+ test AL, strict byte 002h ; a8 02 ; 0xf36cf floppy.c:49
+ je short 036dbh ; 74 08 ; 0xf36d1
+ mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf36d3 floppy.c:839
+ jmp near 03aeeh ; e9 13 04 ; 0xf36d8
+ mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf36db floppy.c:842
+ jmp near 03aeeh ; e9 0b 04 ; 0xf36e0 floppy.c:843
+ movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf36e3 floppy.c:858
+ movzx ax, bl ; 0f b6 c3 ; 0xf36e7
+ call 02f62h ; e8 75 f8 ; 0xf36ea
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf36ed floppy.c:860
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf36f1 floppy.c:861
+ jmp near 03359h ; e9 61 fc ; 0xf36f5 floppy.c:862
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf36f8 floppy.c:869
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf36fb floppy.c:870
+ shr ax, 008h ; c1 e8 08 ; 0xf36fe
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf3701
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf3704 floppy.c:871
+ shr dx, 008h ; c1 ea 08 ; 0xf3707
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf370a
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf370d floppy.c:872
+ cmp bl, 001h ; 80 fb 01 ; 0xf3710 floppy.c:874
+ jnbe short 03727h ; 77 12 ; 0xf3713
+ cmp dl, 001h ; 80 fa 01 ; 0xf3715
+ jnbe short 03727h ; 77 0d ; 0xf3718
+ cmp AL, strict byte 04fh ; 3c 4f ; 0xf371a
+ jnbe short 03727h ; 77 09 ; 0xf371c
+ test bh, bh ; 84 ff ; 0xf371e
+ je short 03727h ; 74 05 ; 0xf3720
+ cmp bh, 012h ; 80 ff 12 ; 0xf3722
+ jbe short 03742h ; 76 1b ; 0xf3725
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3727 floppy.c:876
+ xor ah, ah ; 30 e4 ; 0xf372a
+ or ah, 001h ; 80 cc 01 ; 0xf372c
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf372f
+ mov si, strict word 00041h ; be 41 00 ; 0xf3732 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3735
+ mov es, ax ; 8e c0 ; 0xf3738
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf373a
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf373e floppy.c:878
+ movzx ax, bl ; 0f b6 c3 ; 0xf3742 floppy.c:882
+ call 03259h ; e8 11 fb ; 0xf3745
+ test ax, ax ; 85 c0 ; 0xf3748
+ jne short 03766h ; 75 1a ; 0xf374a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf374c floppy.c:883
+ xor ah, ah ; 30 e4 ; 0xf374f
+ or ah, 080h ; 80 cc 80 ; 0xf3751
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3754
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3757 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf375a
+ mov es, ax ; 8e c0 ; 0xf375d
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf375f
+ jmp near 03aeeh ; e9 88 03 ; 0xf3763
+ movzx cx, bl ; 0f b6 cb ; 0xf3766 floppy.c:890
+ mov ax, cx ; 89 c8 ; 0xf3769
+ call 0309dh ; e8 2f f9 ; 0xf376b
+ test ax, ax ; 85 c0 ; 0xf376e
+ jne short 0377dh ; 75 0b ; 0xf3770
+ mov ax, cx ; 89 c8 ; 0xf3772 floppy.c:891
+ call 03175h ; e8 fe f9 ; 0xf3774
+ test ax, ax ; 85 c0 ; 0xf3777
+ je near 03401h ; 0f 84 84 fc ; 0xf3779
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf377d floppy.c:902
+ shr dx, 00ch ; c1 ea 0c ; 0xf3780
+ mov ah, dl ; 88 d4 ; 0xf3783
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf3785 floppy.c:903
+ sal cx, 004h ; c1 e1 04 ; 0xf3788
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf378b floppy.c:904
+ add si, cx ; 01 ce ; 0xf378e
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3790
+ cmp cx, si ; 39 f1 ; 0xf3793 floppy.c:906
+ jbe short 03799h ; 76 02 ; 0xf3795
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf3797 floppy.c:908
+ movzx cx, bh ; 0f b6 cf ; 0xf3799 floppy.c:910
+ sal cx, 002h ; c1 e1 02 ; 0xf379c
+ dec cx ; 49 ; 0xf379f
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf37a0 floppy.c:913
+ add dx, cx ; 01 ca ; 0xf37a3
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf37a5 floppy.c:914
+ jc near 03454h ; 0f 82 a8 fc ; 0xf37a8
+ mov AL, strict byte 006h ; b0 06 ; 0xf37ac floppy.c:922
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf37ae
+ out DX, AL ; ee ; 0xf37b1
+ xor al, al ; 30 c0 ; 0xf37b2 floppy.c:923
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf37b4
+ out DX, AL ; ee ; 0xf37b7
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf37b8 floppy.c:924
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf37bb
+ out DX, AL ; ee ; 0xf37be
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf37bf floppy.c:925
+ shr dx, 008h ; c1 ea 08 ; 0xf37c2
+ mov al, dl ; 88 d0 ; 0xf37c5
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf37c7
+ out DX, AL ; ee ; 0xf37ca
+ xor al, al ; 30 c0 ; 0xf37cb floppy.c:926
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf37cd
+ out DX, AL ; ee ; 0xf37d0
+ mov al, cl ; 88 c8 ; 0xf37d1 floppy.c:927
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf37d3
+ out DX, AL ; ee ; 0xf37d6
+ shr cx, 008h ; c1 e9 08 ; 0xf37d7 floppy.c:928
+ mov al, cl ; 88 c8 ; 0xf37da
+ out DX, AL ; ee ; 0xf37dc
+ mov AL, strict byte 04ah ; b0 4a ; 0xf37dd floppy.c:931
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf37df
+ out DX, AL ; ee ; 0xf37e2
+ mov al, ah ; 88 e0 ; 0xf37e3 floppy.c:933
+ mov dx, 00081h ; ba 81 00 ; 0xf37e5
+ out DX, AL ; ee ; 0xf37e8
+ mov AL, strict byte 002h ; b0 02 ; 0xf37e9 floppy.c:934
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf37eb
+ out DX, AL ; ee ; 0xf37ee
+ movzx cx, bl ; 0f b6 cb ; 0xf37ef floppy.c:937
+ mov ax, cx ; 89 c8 ; 0xf37f2
+ call 03029h ; e8 32 f8 ; 0xf37f4
+ mov AL, strict byte 00fh ; b0 0f ; 0xf37f7 floppy.c:940
+ mov dx, 003f5h ; ba f5 03 ; 0xf37f9
+ out DX, AL ; ee ; 0xf37fc
+ movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf37fd floppy.c:941
+ sal dx, 002h ; c1 e2 02 ; 0xf3801
+ movzx ax, bl ; 0f b6 c3 ; 0xf3804
+ or dx, ax ; 09 c2 ; 0xf3807
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3809
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf380c
+ mov dx, 003f5h ; ba f5 03 ; 0xf380f
+ out DX, AL ; ee ; 0xf3812
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3813 floppy.c:942
+ out DX, AL ; ee ; 0xf3816
+ mov AL, strict byte 04dh ; b0 4d ; 0xf3817 floppy.c:945
+ out DX, AL ; ee ; 0xf3819
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf381a floppy.c:946
+ out DX, AL ; ee ; 0xf381d
+ mov AL, strict byte 002h ; b0 02 ; 0xf381e floppy.c:947
+ out DX, AL ; ee ; 0xf3820
+ mov al, bh ; 88 f8 ; 0xf3821 floppy.c:948
+ out DX, AL ; ee ; 0xf3823
+ xor al, bh ; 30 f8 ; 0xf3824 floppy.c:949
+ out DX, AL ; ee ; 0xf3826
+ mov AL, strict byte 0f6h ; b0 f6 ; 0xf3827 floppy.c:950
+ out DX, AL ; ee ; 0xf3829
+ call 02fafh ; e8 82 f7 ; 0xf382a floppy.c:978
+ test al, al ; 84 c0 ; 0xf382d floppy.c:979
+ jne short 03839h ; 75 08 ; 0xf382f
+ mov ax, cx ; 89 c8 ; 0xf3831 floppy.c:980
+ call 02fe7h ; e8 b1 f7 ; 0xf3833
+ jmp near 0374ch ; e9 13 ff ; 0xf3836 floppy.c:78
+ mov dx, 003f4h ; ba f4 03 ; 0xf3839 floppy.c:989
+ in AL, DX ; ec ; 0xf383c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf383d
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf383f floppy.c:990
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3841
+ je short 03853h ; 74 0e ; 0xf3843
+ push 002f7h ; 68 f7 02 ; 0xf3845 floppy.c:991
+ push 0032ah ; 68 2a 03 ; 0xf3848
+ push strict byte 00007h ; 6a 07 ; 0xf384b
+ call 01a68h ; e8 18 e2 ; 0xf384d
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3850
+ xor cx, cx ; 31 c9 ; 0xf3853 floppy.c:994
+ jmp short 0385ch ; eb 05 ; 0xf3855
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3857
+ jnl short 03872h ; 7d 16 ; 0xf385a
+ mov dx, 003f5h ; ba f5 03 ; 0xf385c floppy.c:995
+ in AL, DX ; ec ; 0xf385f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3860
+ mov si, cx ; 89 ce ; 0xf3862
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf3864
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3867 floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf386a
+ mov byte [es:si], al ; 26 88 04 ; 0xf386c
+ inc cx ; 41 ; 0xf386f floppy.c:995
+ jmp short 03857h ; eb e5 ; 0xf3870
+ mov si, strict word 00042h ; be 42 00 ; 0xf3872 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3875
+ mov es, ax ; 8e c0 ; 0xf3878
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf387a
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf387d floppy.c:49
+ je short 0389bh ; 74 1a ; 0xf387f
+ mov si, strict word 00043h ; be 43 00 ; 0xf3881 floppy.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3884
+ test AL, strict byte 002h ; a8 02 ; 0xf3887 floppy.c:49
+ jne near 036d3h ; 0f 85 46 fe ; 0xf3889
+ push 002f7h ; 68 f7 02 ; 0xf388d floppy.c:1006
+ push 0033eh ; 68 3e 03 ; 0xf3890
+ push strict byte 00007h ; 6a 07 ; 0xf3893
+ call 01a68h ; e8 d0 e1 ; 0xf3895
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3898
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf389b floppy.c:1010
+ mov si, strict word 00041h ; be 41 00 ; 0xf389f floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf38a2
+ mov es, ax ; 8e c0 ; 0xf38a5
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf38a7
+ movzx ax, bl ; 0f b6 c3 ; 0xf38ab floppy.c:1012
+ xor dx, dx ; 31 d2 ; 0xf38ae
+ call 02f62h ; e8 af f6 ; 0xf38b0
+ jmp near 035afh ; e9 f9 fc ; 0xf38b3
+ mov bl, ah ; 88 e3 ; 0xf38b6 floppy.c:1019
+ cmp ah, 001h ; 80 fc 01 ; 0xf38b8 floppy.c:1021
+ jbe short 038dah ; 76 1d ; 0xf38bb
+ xor ax, ax ; 31 c0 ; 0xf38bd floppy.c:1022
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf38bf
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf38c2 floppy.c:1023
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf38c5 floppy.c:1024
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf38c8 floppy.c:1025
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf38cb floppy.c:1026
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf38ce floppy.c:1027
+ movzx ax, bh ; 0f b6 c7 ; 0xf38d1 floppy.c:1028
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf38d4
+ jmp near 039fch ; e9 22 01 ; 0xf38d7
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf38da floppy.c:1029
+ call 0176ah ; e8 8a de ; 0xf38dd
+ mov dl, al ; 88 c2 ; 0xf38e0
+ xor bh, bh ; 30 ff ; 0xf38e2 floppy.c:1035
+ test AL, strict byte 0f0h ; a8 f0 ; 0xf38e4 floppy.c:1036
+ je short 038eah ; 74 02 ; 0xf38e6
+ mov BH, strict byte 001h ; b7 01 ; 0xf38e8 floppy.c:1037
+ test dl, 00fh ; f6 c2 0f ; 0xf38ea floppy.c:1038
+ je short 038f1h ; 74 02 ; 0xf38ed
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf38ef floppy.c:1039
+ test bl, bl ; 84 db ; 0xf38f1 floppy.c:1041
+ jne short 038fah ; 75 05 ; 0xf38f3
+ shr dl, 004h ; c0 ea 04 ; 0xf38f5 floppy.c:1042
+ jmp short 038fdh ; eb 03 ; 0xf38f8 floppy.c:1043
+ and dl, 00fh ; 80 e2 0f ; 0xf38fa floppy.c:1044
+ mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf38fd floppy.c:1047
+ movzx ax, dl ; 0f b6 c2 ; 0xf3901
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf3904
+ mov word [bp+016h], strict word 00000h ; c7 46 16 00 00 ; 0xf3907 floppy.c:1048
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf390c floppy.c:1050
+ xor cl, cl ; 30 c9 ; 0xf390f
+ movzx ax, bh ; 0f b6 c7 ; 0xf3911
+ or cx, ax ; 09 c1 ; 0xf3914
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf3916
+ mov ax, cx ; 89 c8 ; 0xf3919 floppy.c:1051
+ xor ah, ch ; 30 ec ; 0xf391b
+ or ah, 001h ; 80 cc 01 ; 0xf391d
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf3920
+ cmp dl, 003h ; 80 fa 03 ; 0xf3923 floppy.c:1053
+ jc short 0393dh ; 72 15 ; 0xf3926
+ jbe short 03964h ; 76 3a ; 0xf3928
+ cmp dl, 005h ; 80 fa 05 ; 0xf392a
+ jc short 0396bh ; 72 3c ; 0xf392d
+ jbe short 03972h ; 76 41 ; 0xf392f
+ cmp dl, 00fh ; 80 fa 0f ; 0xf3931
+ je short 03980h ; 74 4a ; 0xf3934
+ cmp dl, 00eh ; 80 fa 0e ; 0xf3936
+ je short 03979h ; 74 3e ; 0xf3939
+ jmp short 03987h ; eb 4a ; 0xf393b
+ cmp dl, 002h ; 80 fa 02 ; 0xf393d
+ je short 0395dh ; 74 1b ; 0xf3940
+ cmp dl, 001h ; 80 fa 01 ; 0xf3942
+ je short 03956h ; 74 0f ; 0xf3945
+ test dl, dl ; 84 d2 ; 0xf3947
+ jne short 03987h ; 75 3c ; 0xf3949
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf394b floppy.c:1055
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf3950 floppy.c:1056
+ jmp short 03995h ; eb 3f ; 0xf3954 floppy.c:1057
+ mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf3956 floppy.c:1060
+ jmp short 03995h ; eb 38 ; 0xf395b floppy.c:1061
+ mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf395d floppy.c:1064
+ jmp short 03995h ; eb 31 ; 0xf3962 floppy.c:1065
+ mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf3964 floppy.c:1068
+ jmp short 03995h ; eb 2a ; 0xf3969 floppy.c:1069
+ mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf396b floppy.c:1072
+ jmp short 03995h ; eb 23 ; 0xf3970 floppy.c:1073
+ mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf3972 floppy.c:1076
+ jmp short 03995h ; eb 1c ; 0xf3977 floppy.c:1077
+ mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf3979 floppy.c:1080
+ jmp short 03995h ; eb 15 ; 0xf397e floppy.c:1081
+ mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf3980 floppy.c:1084
+ jmp short 03995h ; eb 0e ; 0xf3985 floppy.c:1085
+ push 002f7h ; 68 f7 02 ; 0xf3987 floppy.c:1089
+ push 0034fh ; 68 4f 03 ; 0xf398a
+ push strict byte 00007h ; 6a 07 ; 0xf398d
+ call 01a68h ; e8 d6 e0 ; 0xf398f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3992
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3995 floppy.c:1093
+ movzx ax, dl ; 0f b6 c2 ; 0xf399a floppy.c:1094
+ call 03c24h ; e8 84 02 ; 0xf399d
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf39a0
+ jmp near 035afh ; e9 09 fc ; 0xf39a3
+ mov bl, ah ; 88 e3 ; 0xf39a6 floppy.c:1101
+ cmp ah, 001h ; 80 fc 01 ; 0xf39a8 floppy.c:1102
+ jbe short 039b2h ; 76 05 ; 0xf39ab
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf39ad floppy.c:1103
+ jmp short 039fch ; eb 4a ; 0xf39b0
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf39b2 floppy.c:1109
+ call 0176ah ; e8 b2 dd ; 0xf39b5
+ test bl, bl ; 84 db ; 0xf39b8 floppy.c:1110
+ jne short 039c3h ; 75 07 ; 0xf39ba
+ mov dl, al ; 88 c2 ; 0xf39bc floppy.c:1111
+ shr dl, 004h ; c0 ea 04 ; 0xf39be
+ jmp short 039c8h ; eb 05 ; 0xf39c1 floppy.c:1112
+ mov dl, al ; 88 c2 ; 0xf39c3 floppy.c:1113
+ and dl, 00fh ; 80 e2 0f ; 0xf39c5
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf39c8 floppy.c:1114
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf39cc
+ xor ah, ah ; 30 e4 ; 0xf39cf
+ test dl, dl ; 84 d2 ; 0xf39d1 floppy.c:1115
+ je short 039e2h ; 74 0d ; 0xf39d3
+ cmp dl, 001h ; 80 fa 01 ; 0xf39d5 floppy.c:1116
+ jbe short 039dfh ; 76 05 ; 0xf39d8
+ or ah, 002h ; 80 cc 02 ; 0xf39da floppy.c:1118
+ jmp short 039e2h ; eb 03 ; 0xf39dd floppy.c:1119
+ or ah, 001h ; 80 cc 01 ; 0xf39df floppy.c:1120
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf39e2
+ jmp near 03359h ; e9 71 f9 ; 0xf39e5 floppy.c:1123
+ cmp ah, 001h ; 80 fc 01 ; 0xf39e8 floppy.c:1128
+ jbe short 03a02h ; 76 15 ; 0xf39eb
+ mov word [bp+016h], si ; 89 76 16 ; 0xf39ed floppy.c:1129
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf39f0 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf39f3
+ mov es, ax ; 8e c0 ; 0xf39f6
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf39f8
+ mov word [bp+01ch], cx ; 89 4e 1c ; 0xf39fc
+ jmp near 03359h ; e9 57 f9 ; 0xf39ff
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a02 floppy.c:1135
+ xor ah, ah ; 30 e4 ; 0xf3a05
+ or ah, 006h ; 80 cc 06 ; 0xf3a07
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3a0a
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a0d floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a10
+ mov es, ax ; 8e c0 ; 0xf3a13
+ mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf3a15
+ jmp near 03aeeh ; e9 d2 00 ; 0xf3a19
+ mov bl, ah ; 88 e3 ; 0xf3a1c floppy.c:1144
+ mov dl, byte [bp+016h] ; 8a 56 16 ; 0xf3a1e floppy.c:1152
+ cmp ah, 001h ; 80 fc 01 ; 0xf3a21 floppy.c:1156
+ jnbe short 039edh ; 77 c7 ; 0xf3a24
+ movzx ax, bl ; 0f b6 c3 ; 0xf3a26 floppy.c:1164
+ call 03259h ; e8 2d f8 ; 0xf3a29
+ test ax, ax ; 85 c0 ; 0xf3a2c
+ je near 0374ch ; 0f 84 1a fd ; 0xf3a2e
+ test bl, bl ; 84 db ; 0xf3a32 floppy.c:1172
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf3a34
+ movzx bx, al ; 0f b6 d8 ; 0xf3a37
+ add bx, 00090h ; 81 c3 90 00 ; 0xf3a3a
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf3a3e
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a41 floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf3a44
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf3a46
+ and bl, 00fh ; 80 e3 0f ; 0xf3a49 floppy.c:1176
+ cmp dl, 002h ; 80 fa 02 ; 0xf3a4c floppy.c:1178
+ jc short 03a60h ; 72 0f ; 0xf3a4f
+ jbe short 03a6dh ; 76 1a ; 0xf3a51
+ cmp dl, 004h ; 80 fa 04 ; 0xf3a53
+ je short 03a68h ; 74 10 ; 0xf3a56
+ cmp dl, 003h ; 80 fa 03 ; 0xf3a58
+ je short 03a72h ; 74 15 ; 0xf3a5b
+ jmp near 032e8h ; e9 88 f8 ; 0xf3a5d
+ cmp dl, 001h ; 80 fa 01 ; 0xf3a60
+ je short 03a68h ; 74 03 ; 0xf3a63
+ jmp near 032e8h ; e9 80 f8 ; 0xf3a65
+ or bl, 090h ; 80 cb 90 ; 0xf3a68 floppy.c:1181
+ jmp short 03a75h ; eb 08 ; 0xf3a6b floppy.c:1182
+ or bl, 070h ; 80 cb 70 ; 0xf3a6d floppy.c:1185
+ jmp short 03a75h ; eb 03 ; 0xf3a70 floppy.c:1186
+ or bl, 010h ; 80 cb 10 ; 0xf3a72 floppy.c:1189
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a75 floppy.c:53
+ mov es, ax ; 8e c0 ; 0xf3a78
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3a7a
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3a7d
+ xor al, al ; 30 c0 ; 0xf3a80 floppy.c:1208
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf3a82
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a85 floppy.c:53
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3a88
+ jmp near 035afh ; e9 21 fb ; 0xf3a8b
+ mov bl, ah ; 88 e3 ; 0xf3a8e floppy.c:1218
+ mov dl, byte [bp+014h] ; 8a 56 14 ; 0xf3a90 floppy.c:1220
+ mov bh, dl ; 88 d7 ; 0xf3a93 floppy.c:1221
+ and bh, 03fh ; 80 e7 3f ; 0xf3a95
+ xor dh, dh ; 30 f6 ; 0xf3a98 floppy.c:1222
+ sar dx, 006h ; c1 fa 06 ; 0xf3a9a
+ sal dx, 008h ; c1 e2 08 ; 0xf3a9d
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3aa0
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf3aa3
+ shr dx, 008h ; c1 ea 08 ; 0xf3aa6
+ add dx, word [bp-00ch] ; 03 56 f4 ; 0xf3aa9
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf3aac
+ cmp ah, 001h ; 80 fc 01 ; 0xf3aaf floppy.c:1227
+ jnbe near 039edh ; 0f 87 37 ff ; 0xf3ab2
+ movzx ax, bl ; 0f b6 c3 ; 0xf3ab6 floppy.c:1235
+ call 03259h ; e8 9d f7 ; 0xf3ab9
+ test ax, ax ; 85 c0 ; 0xf3abc
+ je near 0374ch ; 0f 84 8a fc ; 0xf3abe
+ movzx cx, bl ; 0f b6 cb ; 0xf3ac2 floppy.c:1243
+ mov ax, cx ; 89 c8 ; 0xf3ac5
+ call 0309dh ; e8 d3 f5 ; 0xf3ac7
+ test ax, ax ; 85 c0 ; 0xf3aca
+ jne short 03af5h ; 75 27 ; 0xf3acc
+ mov ax, cx ; 89 c8 ; 0xf3ace floppy.c:1244
+ call 03175h ; e8 a2 f6 ; 0xf3ad0
+ test ax, ax ; 85 c0 ; 0xf3ad3
+ jne short 03af5h ; 75 1e ; 0xf3ad5
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3ad7 floppy.c:1245
+ xor ah, ah ; 30 e4 ; 0xf3ada
+ or ah, 00ch ; 80 cc 0c ; 0xf3adc
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3adf
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3ae2 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3ae5
+ mov es, ax ; 8e c0 ; 0xf3ae8
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3aea
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3aee
+ jmp near 03359h ; e9 64 f8 ; 0xf3af2
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3af5 floppy.c:1253
+ call 0176ah ; e8 6f dc ; 0xf3af8
+ test bl, bl ; 84 db ; 0xf3afb floppy.c:1254
+ jne short 03b06h ; 75 07 ; 0xf3afd
+ mov dl, al ; 88 c2 ; 0xf3aff floppy.c:1255
+ shr dl, 004h ; c0 ea 04 ; 0xf3b01
+ jmp short 03b0bh ; eb 05 ; 0xf3b04 floppy.c:1256
+ mov dl, al ; 88 c2 ; 0xf3b06 floppy.c:1257
+ and dl, 00fh ; 80 e2 0f ; 0xf3b08
+ test bl, bl ; 84 db ; 0xf3b0b floppy.c:1260
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf3b0d
+ movzx si, al ; 0f b6 f0 ; 0xf3b10
+ add si, 00090h ; 81 c6 90 00 ; 0xf3b13
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3b17
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b1a floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf3b1d
+ mov bl, byte [es:si] ; 26 8a 1c ; 0xf3b1f
+ and bl, 00fh ; 80 e3 0f ; 0xf3b22 floppy.c:49
+ cmp dl, 003h ; 80 fa 03 ; 0xf3b25 floppy.c:1266
+ jc short 03b47h ; 72 1d ; 0xf3b28
+ mov al, bl ; 88 d8 ; 0xf3b2a
+ or AL, strict byte 090h ; 0c 90 ; 0xf3b2c
+ cmp dl, 003h ; 80 fa 03 ; 0xf3b2e
+ jbe short 03b88h ; 76 55 ; 0xf3b31
+ mov ah, bl ; 88 dc ; 0xf3b33
+ or ah, 010h ; 80 cc 10 ; 0xf3b35
+ cmp dl, 005h ; 80 fa 05 ; 0xf3b38
+ je near 03badh ; 0f 84 6e 00 ; 0xf3b3b
+ cmp dl, 004h ; 80 fa 04 ; 0xf3b3f
+ je short 03b97h ; 74 53 ; 0xf3b42
+ jmp near 03bc9h ; e9 82 00 ; 0xf3b44
+ cmp dl, 002h ; 80 fa 02 ; 0xf3b47
+ je short 03b68h ; 74 1c ; 0xf3b4a
+ cmp dl, 001h ; 80 fa 01 ; 0xf3b4c
+ jne near 03bc9h ; 0f 85 76 00 ; 0xf3b4f
+ cmp byte [bp-002h], 027h ; 80 7e fe 27 ; 0xf3b53 floppy.c:1268
+ jne near 03bc9h ; 0f 85 6e 00 ; 0xf3b57
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b5b
+ jne near 03bc9h ; 0f 85 67 00 ; 0xf3b5e
+ or bl, 090h ; 80 cb 90 ; 0xf3b62 floppy.c:1269
+ jmp near 03bc9h ; e9 61 00 ; 0xf3b65 floppy.c:1271
+ cmp byte [bp-002h], 027h ; 80 7e fe 27 ; 0xf3b68 floppy.c:1273
+ jne short 03b78h ; 75 0a ; 0xf3b6c
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b6e
+ jne short 03b78h ; 75 05 ; 0xf3b71
+ or bl, 070h ; 80 cb 70 ; 0xf3b73 floppy.c:1274
+ jmp short 03bc9h ; eb 51 ; 0xf3b76 floppy.c:1275
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3b78
+ jne short 03bc9h ; 75 4b ; 0xf3b7c
+ cmp bh, 00fh ; 80 ff 0f ; 0xf3b7e
+ jne short 03bc9h ; 75 46 ; 0xf3b81
+ or bl, 010h ; 80 cb 10 ; 0xf3b83 floppy.c:1276
+ jmp short 03bc9h ; eb 41 ; 0xf3b86 floppy.c:1278
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3b88 floppy.c:1280
+ jne short 03bc9h ; 75 3b ; 0xf3b8c
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b8e
+ jne short 03bc9h ; 75 36 ; 0xf3b91
+ mov bl, al ; 88 c3 ; 0xf3b93 floppy.c:1281
+ jmp short 03bc9h ; eb 32 ; 0xf3b95 floppy.c:1283
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3b97 floppy.c:1285
+ jne short 03bc9h ; 75 2c ; 0xf3b9b
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b9d floppy.c:1286
+ jne short 03ba4h ; 75 02 ; 0xf3ba0
+ jmp short 03b93h ; eb ef ; 0xf3ba2
+ cmp bh, 012h ; 80 ff 12 ; 0xf3ba4 floppy.c:1287
+ jne short 03bc9h ; 75 20 ; 0xf3ba7
+ mov bl, ah ; 88 e3 ; 0xf3ba9 floppy.c:1289
+ jmp short 03bc9h ; eb 1c ; 0xf3bab floppy.c:1292
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3bad floppy.c:1294
+ jne short 03bc9h ; 75 16 ; 0xf3bb1
+ cmp bh, 009h ; 80 ff 09 ; 0xf3bb3 floppy.c:1295
+ jne short 03bbah ; 75 02 ; 0xf3bb6
+ jmp short 03b93h ; eb d9 ; 0xf3bb8
+ cmp bh, 012h ; 80 ff 12 ; 0xf3bba floppy.c:1296
+ jne short 03bc1h ; 75 02 ; 0xf3bbd
+ jmp short 03ba9h ; eb e8 ; 0xf3bbf
+ cmp bh, 024h ; 80 ff 24 ; 0xf3bc1 floppy.c:1298
+ jne short 03bc9h ; 75 03 ; 0xf3bc4
+ or bl, 0d0h ; 80 cb d0 ; 0xf3bc6 floppy.c:1300
+ movzx ax, bl ; 0f b6 c3 ; 0xf3bc9 floppy.c:1309
+ sar ax, 004h ; c1 f8 04 ; 0xf3bcc
+ test AL, strict byte 001h ; a8 01 ; 0xf3bcf
+ je near 03ad7h ; 0f 84 02 ff ; 0xf3bd1
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3bd5 floppy.c:53
+ mov es, ax ; 8e c0 ; 0xf3bd8
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3bda
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3bdd
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3be0 floppy.c:1322
+ movzx ax, dl ; 0f b6 c2 ; 0xf3be5 floppy.c:1323
+ call 03c24h ; e8 39 00 ; 0xf3be8
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3beb
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3bee floppy.c:1326
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3bf2 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3bf5
+ mov es, ax ; 8e c0 ; 0xf3bf8
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3bfa
+ jmp near 035afh ; e9 ae f9 ; 0xf3bfe
+ mov bx, 00e16h ; bb 16 0e ; 0xf3c01 floppy.c:1332
+ mov cx, ds ; 8c d9 ; 0xf3c04
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3c06
+ call 01a27h ; e8 1b de ; 0xf3c09
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3c0c
+ shr ax, 008h ; c1 e8 08 ; 0xf3c0f
+ push ax ; 50 ; 0xf3c12
+ push 002f7h ; 68 f7 02 ; 0xf3c13
+ push 00364h ; 68 64 03 ; 0xf3c16
+ push strict byte 00004h ; 6a 04 ; 0xf3c19
+ call 01a68h ; e8 4a de ; 0xf3c1b
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3c1e
+ jmp near 032e8h ; e9 c4 f6 ; 0xf3c21 floppy.c:78
+ ; disGetNextSymbol 0xf3c24 LB 0x71f8 -> off=0x0 cb=000000000000002f uValue=00000000000f2624 'get_floppy_dpt'
+get_floppy_dpt: ; 0xf3c24 LB 0x2f
+ push bx ; 53 ; 0xf3c24 floppyt.c:104
+ push dx ; 52 ; 0xf3c25
+ push bp ; 55 ; 0xf3c26
+ mov bp, sp ; 89 e5 ; 0xf3c27
+ mov dl, al ; 88 c2 ; 0xf3c29
+ xor ax, ax ; 31 c0 ; 0xf3c2b floppyt.c:108
+ jmp short 03c35h ; eb 06 ; 0xf3c2d
+ inc ax ; 40 ; 0xf3c2f floppyt.c:110
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3c30
+ jnc short 03c4ch ; 73 17 ; 0xf3c33
+ mov bx, ax ; 89 c3 ; 0xf3c35
+ add bx, ax ; 01 c3 ; 0xf3c37
+ cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3c39
+ jne short 03c2fh ; 75 f0 ; 0xf3c3d
+ movzx ax, byte [word bx+0005ch] ; 0f b6 87 5c 00 ; 0xf3c3f
+ imul ax, ax, strict byte 0000dh ; 6b c0 0d ; 0xf3c44
+ add ax, strict word 00000h ; 05 00 00 ; 0xf3c47
+ jmp short 03c4fh ; eb 03 ; 0xf3c4a
+ mov ax, strict word 00041h ; b8 41 00 ; 0xf3c4c floppyt.c:113
+ pop bp ; 5d ; 0xf3c4f floppyt.c:114
+ pop dx ; 5a ; 0xf3c50
+ pop bx ; 5b ; 0xf3c51
+ retn ; c3 ; 0xf3c52
+ ; disGetNextSymbol 0xf3c53 LB 0x71c9 -> off=0x0 cb=0000000000000007 uValue=00000000000f2653 'dummy_soft_reset'
+dummy_soft_reset: ; 0xf3c53 LB 0x7
+ push bp ; 55 ; 0xf3c53 eltorito.c:137
+ mov bp, sp ; 89 e5 ; 0xf3c54
+ xor ax, ax ; 31 c0 ; 0xf3c56 eltorito.c:140
+ pop bp ; 5d ; 0xf3c58
+ retn ; c3 ; 0xf3c59
+ ; disGetNextSymbol 0xf3c5a LB 0x71c2 -> off=0x0 cb=000000000000003b uValue=00000000000f265a 'cdemu_bounce_buf_alloc'
+cdemu_bounce_buf_alloc: ; 0xf3c5a LB 0x3b
+ push bx ; 53 ; 0xf3c5a eltorito.c:169
+ push cx ; 51 ; 0xf3c5b
+ push dx ; 52 ; 0xf3c5c
+ push di ; 57 ; 0xf3c5d
+ push bp ; 55 ; 0xf3c5e
+ mov bp, sp ; 89 e5 ; 0xf3c5f
+ mov di, 00413h ; bf 13 04 ; 0xf3c61 eltorito.c:58
+ xor ax, ax ; 31 c0 ; 0xf3c64
+ mov es, ax ; 8e c0 ; 0xf3c66
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf3c68
+ test ax, ax ; 85 c0 ; 0xf3c6b eltorito.c:175
+ je short 03c8fh ; 74 20 ; 0xf3c6d
+ dec ax ; 48 ; 0xf3c6f eltorito.c:176
+ dec ax ; 48 ; 0xf3c70
+ mov bx, ax ; 89 c3 ; 0xf3c71
+ xor dx, dx ; 31 d2 ; 0xf3c73 eltorito.c:179
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf3c75
+ sal ax, 1 ; d1 e0 ; 0xf3c78
+ rcl dx, 1 ; d1 d2 ; 0xf3c7a
+ loop 03c78h ; e2 fa ; 0xf3c7c
+ mov di, dx ; 89 d7 ; 0xf3c7e
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf3c80
+ shr di, 1 ; d1 ef ; 0xf3c83
+ rcr ax, 1 ; d1 d8 ; 0xf3c85
+ loop 03c83h ; e2 fa ; 0xf3c87
+ mov di, 00413h ; bf 13 04 ; 0xf3c89 eltorito.c:63
+ mov word [es:di], bx ; 26 89 1d ; 0xf3c8c
+ pop bp ; 5d ; 0xf3c8f eltorito.c:184
+ pop di ; 5f ; 0xf3c90
+ pop dx ; 5a ; 0xf3c91
+ pop cx ; 59 ; 0xf3c92
+ pop bx ; 5b ; 0xf3c93
+ retn ; c3 ; 0xf3c94
+ ; disGetNextSymbol 0xf3c95 LB 0x7187 -> off=0x0 cb=0000000000000017 uValue=00000000000f2695 'cdemu_init'
+cdemu_init: ; 0xf3c95 LB 0x17
+ push bp ; 55 ; 0xf3c95 eltorito.c:186
+ mov bp, sp ; 89 e5 ; 0xf3c96
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c98 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c9b
+ mov es, ax ; 8e c0 ; 0xf3c9e
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3ca0
+ mov bx, 00316h ; bb 16 03 ; 0xf3ca3 eltorito.c:190
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3ca6 eltorito.c:193
+ pop bp ; 5d ; 0xf3caa eltorito.c:194
+ retn ; c3 ; 0xf3cab
+ ; disGetNextSymbol 0xf3cac LB 0x7170 -> off=0x0 cb=0000000000000016 uValue=00000000000f26ac 'cdemu_isactive'
+cdemu_isactive: ; 0xf3cac LB 0x16
+ push bp ; 55 ; 0xf3cac eltorito.c:196
+ mov bp, sp ; 89 e5 ; 0xf3cad
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3caf eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3cb2
+ mov es, ax ; 8e c0 ; 0xf3cb5
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3cb7
+ mov bx, 00316h ; bb 16 03 ; 0xf3cba eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3cbd
+ pop bp ; 5d ; 0xf3cc0 eltorito.c:202
+ retn ; c3 ; 0xf3cc1
+ ; disGetNextSymbol 0xf3cc2 LB 0x715a -> off=0x0 cb=0000000000000016 uValue=00000000000f26c2 'cdemu_emulated_drive'
+cdemu_emulated_drive: ; 0xf3cc2 LB 0x16
+ push bp ; 55 ; 0xf3cc2 eltorito.c:204
+ mov bp, sp ; 89 e5 ; 0xf3cc3
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3cc5 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3cc8
+ mov es, ax ; 8e c0 ; 0xf3ccb
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3ccd
+ mov bx, 00318h ; bb 18 03 ; 0xf3cd0 eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3cd3
+ pop bp ; 5d ; 0xf3cd6 eltorito.c:210
+ retn ; c3 ; 0xf3cd7
+ ; disGetNextSymbol 0xf3cd8 LB 0x7144 -> off=0x0 cb=000000000000017a uValue=00000000000f26d8 'int13_eltorito'
+int13_eltorito: ; 0xf3cd8 LB 0x17a
+ push bp ; 55 ; 0xf3cd8 eltorito.c:216
+ mov bp, sp ; 89 e5 ; 0xf3cd9
+ push si ; 56 ; 0xf3cdb
+ push di ; 57 ; 0xf3cdc
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3cdd eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3ce0
+ mov es, ax ; 8e c0 ; 0xf3ce3
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf3ce5
+ mov bx, 00316h ; bb 16 03 ; 0xf3ce8 eltorito.c:222
+ mov si, word [bp+016h] ; 8b 76 16 ; 0xf3ceb eltorito.c:228
+ shr si, 008h ; c1 ee 08 ; 0xf3cee
+ cmp si, strict byte 0004bh ; 83 fe 4b ; 0xf3cf1
+ jc short 03d00h ; 72 0a ; 0xf3cf4
+ jbe short 03d26h ; 76 2e ; 0xf3cf6
+ cmp si, strict byte 0004dh ; 83 fe 4d ; 0xf3cf8
+ jbe short 03d07h ; 76 0a ; 0xf3cfb
+ jmp near 03e18h ; e9 18 01 ; 0xf3cfd
+ cmp si, strict byte 0004ah ; 83 fe 4a ; 0xf3d00
+ jne near 03e18h ; 0f 85 11 01 ; 0xf3d03
+ mov bx, 00e16h ; bb 16 0e ; 0xf3d07 eltorito.c:234
+ mov cx, ds ; 8c d9 ; 0xf3d0a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3d0c
+ call 01a27h ; e8 15 dd ; 0xf3d0f
+ push word [bp+016h] ; ff 76 16 ; 0xf3d12
+ push 0037eh ; 68 7e 03 ; 0xf3d15
+ push 0038dh ; 68 8d 03 ; 0xf3d18
+ push strict byte 00004h ; 6a 04 ; 0xf3d1b
+ call 01a68h ; e8 48 dd ; 0xf3d1d
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3d20
+ jmp near 03e33h ; e9 0d 01 ; 0xf3d23 eltorito.c:235
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf3d26 eltorito.c:51
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d29
+ mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3d2c
+ inc si ; 46 ; 0xf3d30 eltorito.c:242
+ mov ax, es ; 8c c0 ; 0xf3d31 eltorito.c:51
+ mov es, di ; 8e c7 ; 0xf3d33
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3d35
+ mov es, ax ; 8e c0 ; 0xf3d39 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d3b
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d3e eltorito.c:243
+ inc si ; 46 ; 0xf3d41
+ inc si ; 46 ; 0xf3d42
+ mov es, di ; 8e c7 ; 0xf3d43 eltorito.c:51
+ mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3d45
+ mov es, ax ; 8e c0 ; 0xf3d49 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d4b
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d4e eltorito.c:244
+ add si, strict byte 00003h ; 83 c6 03 ; 0xf3d51
+ mov es, di ; 8e c7 ; 0xf3d54 eltorito.c:51
+ mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3d56
+ mov es, ax ; 8e c0 ; 0xf3d5a eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d5c
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d5f eltorito.c:245
+ add si, strict byte 00004h ; 83 c6 04 ; 0xf3d62
+ mov es, di ; 8e c7 ; 0xf3d65 eltorito.c:71
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3d67
+ mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3d6b
+ mov es, ax ; 8e c0 ; 0xf3d6f eltorito.c:73
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d71
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3d74
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d78 eltorito.c:246
+ add si, strict byte 00008h ; 83 c6 08 ; 0xf3d7b
+ mov es, di ; 8e c7 ; 0xf3d7e eltorito.c:61
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3d80
+ mov es, ax ; 8e c0 ; 0xf3d84 eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d86
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d89 eltorito.c:247
+ add si, strict byte 0000ah ; 83 c6 0a ; 0xf3d8c
+ mov es, di ; 8e c7 ; 0xf3d8f eltorito.c:61
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3d91
+ mov es, ax ; 8e c0 ; 0xf3d95 eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d97
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d9a eltorito.c:248
+ add si, strict byte 0000ch ; 83 c6 0c ; 0xf3d9d
+ mov es, di ; 8e c7 ; 0xf3da0 eltorito.c:61
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3da2
+ mov es, ax ; 8e c0 ; 0xf3da6 eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3da8
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dab eltorito.c:249
+ add si, strict byte 0000eh ; 83 c6 0e ; 0xf3dae
+ mov es, di ; 8e c7 ; 0xf3db1 eltorito.c:61
+ mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3db3
+ mov es, ax ; 8e c0 ; 0xf3db7 eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3db9
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dbc eltorito.c:250
+ add si, strict byte 00010h ; 83 c6 10 ; 0xf3dbf
+ mov es, di ; 8e c7 ; 0xf3dc2 eltorito.c:51
+ mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3dc4
+ mov es, ax ; 8e c0 ; 0xf3dc8 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3dca
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dcd eltorito.c:251
+ add si, strict byte 00011h ; 83 c6 11 ; 0xf3dd0
+ mov es, di ; 8e c7 ; 0xf3dd3 eltorito.c:51
+ mov dl, byte [es:bx+014h] ; 26 8a 57 14 ; 0xf3dd5
+ mov es, ax ; 8e c0 ; 0xf3dd9 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3ddb
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dde eltorito.c:252
+ add si, strict byte 00012h ; 83 c6 12 ; 0xf3de1
+ mov dx, ax ; 89 c2 ; 0xf3de4 eltorito.c:51
+ mov es, di ; 8e c7 ; 0xf3de6
+ mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3de8
+ mov es, dx ; 8e c2 ; 0xf3dec eltorito.c:53
+ mov byte [es:si], al ; 26 88 04 ; 0xf3dee
+ test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3df1 eltorito.c:255
+ jne short 03dfdh ; 75 06 ; 0xf3df5
+ mov es, di ; 8e c7 ; 0xf3df7 eltorito.c:257
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3df9
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3dfd eltorito.c:260
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3e01
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3e04
+ mov es, ax ; 8e c0 ; 0xf3e07
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3e09
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3e0d
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3e11
+ pop di ; 5f ; 0xf3e14
+ pop si ; 5e ; 0xf3e15
+ pop bp ; 5d ; 0xf3e16
+ retn ; c3 ; 0xf3e17
+ mov bx, 00e16h ; bb 16 0e ; 0xf3e18 eltorito.c:264
+ mov cx, ds ; 8c d9 ; 0xf3e1b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3e1d
+ call 01a27h ; e8 04 dc ; 0xf3e20
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf3e23
+ shr bx, 008h ; c1 eb 08 ; 0xf3e26
+ push bx ; 53 ; 0xf3e29
+ push 0037eh ; 68 7e 03 ; 0xf3e2a
+ push 003b5h ; 68 b5 03 ; 0xf3e2d
+ jmp near 03d1bh ; e9 e8 fe ; 0xf3e30
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3e33 eltorito.c:270
+ xor ah, ah ; 30 e4 ; 0xf3e36
+ or ah, 001h ; 80 cc 01 ; 0xf3e38
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3e3b
+ shr ax, 008h ; c1 e8 08 ; 0xf3e3e eltorito.c:271
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3e41 eltorito.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3e44
+ mov es, dx ; 8e c2 ; 0xf3e47
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3e49
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3e4c eltorito.c:272
+ jmp short 03e11h ; eb bf ; 0xf3e50 eltorito.c:273
+ ; disGetNextSymbol 0xf3e52 LB 0x6fca -> off=0x0 cb=0000000000000032 uValue=00000000000f2852 'device_is_cdrom'
+device_is_cdrom: ; 0xf3e52 LB 0x32
+ push bx ; 53 ; 0xf3e52 eltorito.c:288
+ push dx ; 52 ; 0xf3e53
+ push bp ; 55 ; 0xf3e54
+ mov bp, sp ; 89 e5 ; 0xf3e55
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e57 eltorito.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3e5a
+ mov es, dx ; 8e c2 ; 0xf3e5d
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf3e5f
+ cmp AL, strict byte 014h ; 3c 14 ; 0xf3e62 eltorito.c:294
+ jc short 03e6ah ; 72 04 ; 0xf3e64
+ xor ax, ax ; 31 c0 ; 0xf3e66 eltorito.c:295
+ jmp short 03e80h ; eb 16 ; 0xf3e68
+ xor ah, ah ; 30 e4 ; 0xf3e6a eltorito.c:300
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3e6c
+ mov es, bx ; 8e c3 ; 0xf3e6f
+ mov bx, ax ; 89 c3 ; 0xf3e71
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3e73
+ cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf3e76
+ jne short 03e66h ; 75 e9 ; 0xf3e7b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3e7d eltorito.c:301
+ pop bp ; 5d ; 0xf3e80 eltorito.c:304
+ pop dx ; 5a ; 0xf3e81
+ pop bx ; 5b ; 0xf3e82
+ retn ; c3 ; 0xf3e83
+ ; disGetNextSymbol 0xf3e84 LB 0x6f98 -> off=0x0 cb=000000000000007f uValue=00000000000f2884 'cdrom_read'
+cdrom_read: ; 0xf3e84 LB 0x7f
+ push bp ; 55 ; 0xf3e84 eltorito.c:306
+ mov bp, sp ; 89 e5 ; 0xf3e85
+ push si ; 56 ; 0xf3e87
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf3e88
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf3e8b
+ mov ax, bx ; 89 d8 ; 0xf3e8e
+ mov si, cx ; 89 ce ; 0xf3e90
+ mov cx, dx ; 89 d1 ; 0xf3e92
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e94 eltorito.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3e97
+ mov es, dx ; 8e c2 ; 0xf3e9a
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3e9c
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf3e9f eltorito.c:310
+ mov word [bp-010h], strict word 00028h ; c7 46 f0 28 00 ; 0xf3ea2 eltorito.c:312
+ mov dx, si ; 89 f2 ; 0xf3ea7 eltorito.c:313
+ xchg ah, al ; 86 c4 ; 0xf3ea9
+ xchg dh, dl ; 86 d6 ; 0xf3eab
+ xchg dx, ax ; 92 ; 0xf3ead
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3eae
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3eb1
+ mov ax, cx ; 89 c8 ; 0xf3eb4 eltorito.c:314
+ xchg ah, al ; 86 c4 ; 0xf3eb6
+ mov word [bp-009h], ax ; 89 46 f7 ; 0xf3eb8
+ mov word [es:bx+00eh], cx ; 26 89 4f 0e ; 0xf3ebb eltorito.c:316
+ mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3ebf eltorito.c:317
+ movzx bx, byte [bp-004h] ; 0f b6 5e fc ; 0xf3ec5 eltorito.c:319
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf3ec9
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3ecc
+ movzx si, byte [es:bx+01eh] ; 26 0f b6 77 1e ; 0xf3ecf
+ add si, si ; 01 f6 ; 0xf3ed4
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf3ed6
+ push strict byte 00001h ; 6a 01 ; 0xf3eda
+ mov ax, cx ; 89 c8 ; 0xf3edc
+ xor dx, dx ; 31 d2 ; 0xf3ede
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf3ee0
+ sal ax, 1 ; d1 e0 ; 0xf3ee3
+ rcl dx, 1 ; d1 d2 ; 0xf3ee5
+ loop 03ee3h ; e2 fa ; 0xf3ee7
+ push dx ; 52 ; 0xf3ee9
+ push ax ; 50 ; 0xf3eea
+ movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf3eeb
+ mov cx, ss ; 8c d1 ; 0xf3eef
+ lea bx, [bp-010h] ; 8d 5e f0 ; 0xf3ef1
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3ef4
+ call word [word si+0006ah] ; ff 94 6a 00 ; 0xf3ef7
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf3efb eltorito.c:320
+ pop si ; 5e ; 0xf3efe
+ pop bp ; 5d ; 0xf3eff
+ retn 00004h ; c2 04 00 ; 0xf3f00
+ ; disGetNextSymbol 0xf3f03 LB 0x6f19 -> off=0x0 cb=0000000000000167 uValue=00000000000f2903 'cdemu_read'
+cdemu_read: ; 0xf3f03 LB 0x167
+ push bp ; 55 ; 0xf3f03 eltorito.c:322
+ mov bp, sp ; 89 e5 ; 0xf3f04
+ push si ; 56 ; 0xf3f06
+ push di ; 57 ; 0xf3f07
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf3f08
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf3f0b
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf3f0e
+ mov di, dx ; 89 d7 ; 0xf3f11
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3f13 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3f16
+ mov es, ax ; 8e c0 ; 0xf3f19
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf3f1b
+ mov bx, 00316h ; bb 16 03 ; 0xf3f1e eltorito.c:326
+ mov es, ax ; 8e c0 ; 0xf3f21
+ mov si, bx ; 89 de ; 0xf3f23
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf3f25
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf3f28 eltorito.c:327
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf3f2c
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf3f2f
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf3f33
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf3f36 eltorito.c:330
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3f39
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf3f3c
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf3f3f
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3f42 eltorito.c:335
+ mov dx, cx ; 89 ca ; 0xf3f45
+ shr dx, 1 ; d1 ea ; 0xf3f47
+ rcr ax, 1 ; d1 d8 ; 0xf3f49
+ shr dx, 1 ; d1 ea ; 0xf3f4b
+ rcr ax, 1 ; d1 d8 ; 0xf3f4d
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf3f4f
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3f52
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3f55 eltorito.c:336
+ and ax, strict word 00003h ; 25 03 00 ; 0xf3f58
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf3f5b
+ test ax, ax ; 85 c0 ; 0xf3f5e eltorito.c:339
+ je short 03fd2h ; 74 70 ; 0xf3f60
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3f62 eltorito.c:341
+ sub ax, word [bp-016h] ; 2b 46 ea ; 0xf3f65
+ cmp di, ax ; 39 c7 ; 0xf3f68
+ jnc short 03f71h ; 73 05 ; 0xf3f6a
+ mov word [bp-01ch], di ; 89 7e e4 ; 0xf3f6c
+ jmp short 03f74h ; eb 03 ; 0xf3f6f
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf3f71
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf3f74 eltorito.c:343
+ db 066h, 026h, 0ffh, 074h, 016h
+ ; push dword [es:si+016h] ; 66 26 ff 74 16 ; 0xf3f77
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf3f7c
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3f7f
+ mov cx, word [bp-014h] ; 8b 4e ec ; 0xf3f82
+ adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3f85
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf3f88
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf3f8c
+ call 03e84h ; e8 f2 fe ; 0xf3f8f
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf3f92
+ test ax, ax ; 85 c0 ; 0xf3f95 eltorito.c:344
+ jne near 04061h ; 0f 85 c6 00 ; 0xf3f97
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf3f9b eltorito.c:345
+ sal ax, 009h ; c1 e0 09 ; 0xf3f9e
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf3fa1
+ push ax ; 50 ; 0xf3fa4
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf3fa5
+ sal ax, 009h ; c1 e0 09 ; 0xf3fa8
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf3fab
+ mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf3fae
+ mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf3fb2
+ add bx, ax ; 01 c3 ; 0xf3fb6
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf3fb8
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf3fbb
+ call 0ad90h ; e8 cf 6d ; 0xf3fbe
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf3fc1 eltorito.c:348
+ add word [bp-00eh], ax ; 01 46 f2 ; 0xf3fc4
+ sub di, word [bp-01ch] ; 2b 7e e4 ; 0xf3fc7 eltorito.c:349
+ add word [bp-00ch], strict byte 00001h ; 83 46 f4 01 ; 0xf3fca eltorito.c:350
+ adc word [bp-00ah], strict byte 00000h ; 83 56 f6 00 ; 0xf3fce
+ mov ax, di ; 89 f8 ; 0xf3fd2 eltorito.c:354
+ shr ax, 002h ; c1 e8 02 ; 0xf3fd4
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf3fd7
+ test ax, ax ; 85 c0 ; 0xf3fda
+ je short 0401dh ; 74 3f ; 0xf3fdc
+ push word [bp-01ah] ; ff 76 e6 ; 0xf3fde eltorito.c:358
+ push word [bp-00eh] ; ff 76 f2 ; 0xf3fe1
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf3fe4
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3fe7
+ mov cx, word [bp-014h] ; 8b 4e ec ; 0xf3fea
+ adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3fed
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf3ff0
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf3ff4
+ call 03e84h ; e8 8a fe ; 0xf3ff7
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf3ffa
+ test ax, ax ; 85 c0 ; 0xf3ffd eltorito.c:359
+ jne short 04061h ; 75 60 ; 0xf3fff
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf4001 eltorito.c:360
+ sal ax, 00bh ; c1 e0 0b ; 0xf4004
+ add word [bp-00eh], ax ; 01 46 f2 ; 0xf4007
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf400a eltorito.c:362
+ sal ax, 002h ; c1 e0 02 ; 0xf400d
+ sub di, ax ; 29 c7 ; 0xf4010
+ xor ax, ax ; 31 c0 ; 0xf4012 eltorito.c:363
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf4014
+ add word [bp-00ch], dx ; 01 56 f4 ; 0xf4017
+ adc word [bp-00ah], ax ; 11 46 f6 ; 0xf401a
+ test di, di ; 85 ff ; 0xf401d eltorito.c:367
+ je short 0405eh ; 74 3d ; 0xf401f
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4021 eltorito.c:369
+ db 066h, 026h, 0ffh, 074h, 016h
+ ; push dword [es:si+016h] ; 66 26 ff 74 16 ; 0xf4024
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf4029
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xf402c
+ mov cx, word [bp-014h] ; 8b 4e ec ; 0xf402f
+ adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf4032
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4035
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4039
+ call 03e84h ; e8 45 fe ; 0xf403c
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf403f
+ test ax, ax ; 85 c0 ; 0xf4042 eltorito.c:370
+ jne short 04061h ; 75 1b ; 0xf4044
+ sal di, 009h ; c1 e7 09 ; 0xf4046 eltorito.c:371
+ push di ; 57 ; 0xf4049
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf404a
+ mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf404d
+ mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf4051
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf4055
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf4058
+ call 0ad90h ; e8 32 6d ; 0xf405b
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf405e eltorito.c:376
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4061 eltorito.c:377
+ pop di ; 5f ; 0xf4064
+ pop si ; 5e ; 0xf4065
+ pop bp ; 5d ; 0xf4066
+ retn 00004h ; c2 04 00 ; 0xf4067
+ ; disGetNextSymbol 0xf406a LB 0x6db2 -> off=0x0 cb=00000000000002ba uValue=00000000000f2a6a 'cdrom_boot'
+cdrom_boot: ; 0xf406a LB 0x2ba
+ push bp ; 55 ; 0xf406a eltorito.c:387
+ mov bp, sp ; 89 e5 ; 0xf406b
+ push bx ; 53 ; 0xf406d
+ push cx ; 51 ; 0xf406e
+ push dx ; 52 ; 0xf406f
+ push si ; 56 ; 0xf4070
+ push di ; 57 ; 0xf4071
+ sub sp, 00808h ; 81 ec 08 08 ; 0xf4072
+ mov si, strict word 0000eh ; be 0e 00 ; 0xf4076 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4079
+ mov es, ax ; 8e c0 ; 0xf407c
+ mov ax, word [es:si] ; 26 8b 04 ; 0xf407e
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf4081 eltorito.c:59
+ mov si, 00316h ; be 16 03 ; 0xf4084 eltorito.c:399
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf4087
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf408a eltorito.c:403
+ jmp short 04099h ; eb 09 ; 0xf408e
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf4090 eltorito.c:406
+ cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf4093
+ jnc short 040a4h ; 73 0b ; 0xf4097
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf4099
+ call 03e52h ; e8 b2 fd ; 0xf409d
+ test ax, ax ; 85 c0 ; 0xf40a0
+ je short 04090h ; 74 ec ; 0xf40a2
+ cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf40a4 eltorito.c:409
+ jc short 040b0h ; 72 06 ; 0xf40a8
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf40aa eltorito.c:410
+ jmp near 0431ah ; e9 6a 02 ; 0xf40ad
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf40b0 eltorito.c:413
+ jmp short 040bfh ; eb 09 ; 0xf40b4
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf40b6 eltorito.c:418
+ cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf40b9
+ jnbe short 040d8h ; 77 19 ; 0xf40bd
+ lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf40bf
+ push SS ; 16 ; 0xf40c3
+ push dx ; 52 ; 0xf40c4
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf40c5
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf40c9
+ mov bx, strict word 00011h ; bb 11 00 ; 0xf40cc
+ xor cx, cx ; 31 c9 ; 0xf40cf
+ call 03e84h ; e8 b0 fd ; 0xf40d1
+ test ax, ax ; 85 c0 ; 0xf40d4
+ jne short 040b6h ; 75 de ; 0xf40d6
+ test ax, ax ; 85 c0 ; 0xf40d8 eltorito.c:419
+ je short 040e2h ; 74 06 ; 0xf40da
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf40dc eltorito.c:420
+ jmp near 0431ah ; e9 38 02 ; 0xf40df
+ cmp byte [bp-00812h], 000h ; 80 be ee f7 00 ; 0xf40e2 eltorito.c:423
+ je short 040efh ; 74 06 ; 0xf40e7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf40e9 eltorito.c:424
+ jmp near 0431ah ; e9 2b 02 ; 0xf40ec
+ xor di, di ; 31 ff ; 0xf40ef eltorito.c:426
+ jmp short 040f9h ; eb 06 ; 0xf40f1
+ inc di ; 47 ; 0xf40f3 eltorito.c:428
+ cmp di, strict byte 00005h ; 83 ff 05 ; 0xf40f4
+ jnc short 04109h ; 73 10 ; 0xf40f7
+ mov al, byte [bp+di-00811h] ; 8a 83 ef f7 ; 0xf40f9
+ cmp al, byte [di+00e1eh] ; 3a 85 1e 0e ; 0xf40fd
+ je short 040f3h ; 74 f0 ; 0xf4101
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf4103
+ jmp near 0431ah ; e9 11 02 ; 0xf4106
+ xor di, di ; 31 ff ; 0xf4109 eltorito.c:430
+ jmp short 04113h ; eb 06 ; 0xf410b
+ inc di ; 47 ; 0xf410d eltorito.c:432
+ cmp di, strict byte 00017h ; 83 ff 17 ; 0xf410e
+ jnc short 04123h ; 73 10 ; 0xf4111
+ mov al, byte [bp+di-0080bh] ; 8a 83 f5 f7 ; 0xf4113
+ cmp al, byte [di+00e24h] ; 3a 85 24 0e ; 0xf4117
+ je short 0410dh ; 74 f0 ; 0xf411b
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf411d
+ jmp near 0431ah ; e9 f7 01 ; 0xf4120
+ mov bx, word [bp-007cbh] ; 8b 9e 35 f8 ; 0xf4123 eltorito.c:435
+ mov cx, word [bp-007c9h] ; 8b 8e 37 f8 ; 0xf4127
+ lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf412b eltorito.c:439
+ push SS ; 16 ; 0xf412f
+ push dx ; 52 ; 0xf4130
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf4131
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4135
+ call 03e84h ; e8 49 fd ; 0xf4138
+ test ax, ax ; 85 c0 ; 0xf413b eltorito.c:440
+ je short 04145h ; 74 06 ; 0xf413d
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf413f eltorito.c:441
+ jmp near 0431ah ; e9 d5 01 ; 0xf4142
+ cmp byte [bp-00812h], 001h ; 80 be ee f7 01 ; 0xf4145 eltorito.c:446
+ je short 04152h ; 74 06 ; 0xf414a
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf414c eltorito.c:447
+ jmp near 0431ah ; e9 c8 01 ; 0xf414f
+ cmp byte [bp-00811h], 000h ; 80 be ef f7 00 ; 0xf4152 eltorito.c:448
+ je short 0415fh ; 74 06 ; 0xf4157
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf4159 eltorito.c:449
+ jmp near 0431ah ; e9 bb 01 ; 0xf415c
+ cmp byte [bp-007f4h], 055h ; 80 be 0c f8 55 ; 0xf415f eltorito.c:450
+ je short 0416ch ; 74 06 ; 0xf4164
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4166 eltorito.c:451
+ jmp near 0431ah ; e9 ae 01 ; 0xf4169
+ cmp byte [bp-007f3h], 0aah ; 80 be 0d f8 aa ; 0xf416c eltorito.c:452
+ jne short 04166h ; 75 f3 ; 0xf4171
+ cmp byte [bp-007f2h], 088h ; 80 be 0e f8 88 ; 0xf4173 eltorito.c:453
+ je short 04180h ; 74 06 ; 0xf4178
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf417a eltorito.c:457
+ jmp near 0431ah ; e9 9a 01 ; 0xf417d
+ mov al, byte [bp-007f1h] ; 8a 86 0f f8 ; 0xf4180 eltorito.c:459
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4184
+ mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf4187
+ cmp byte [bp-007f1h], 000h ; 80 be 0f f8 00 ; 0xf418b eltorito.c:460
+ jne short 04199h ; 75 07 ; 0xf4190
+ mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf4192 eltorito.c:463
+ jmp short 041ach ; eb 13 ; 0xf4197 eltorito.c:465
+ cmp byte [bp-007f1h], 004h ; 80 be 0f f8 04 ; 0xf4199
+ jnc short 041a7h ; 73 07 ; 0xf419e
+ mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf41a0 eltorito.c:466
+ jmp short 041ach ; eb 05 ; 0xf41a5 eltorito.c:467
+ mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf41a7 eltorito.c:468
+ movzx di, byte [bp-00ch] ; 0f b6 7e f4 ; 0xf41ac eltorito.c:470
+ mov ax, di ; 89 f8 ; 0xf41b0
+ cwd ; 99 ; 0xf41b2
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf41b3
+ sar ax, 1 ; d1 f8 ; 0xf41b5
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf41b7
+ mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf41ba
+ mov ax, di ; 89 f8 ; 0xf41be eltorito.c:471
+ cwd ; 99 ; 0xf41c0
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf41c1
+ idiv bx ; f7 fb ; 0xf41c4
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf41c6
+ mov di, word [bp-007f0h] ; 8b be 10 f8 ; 0xf41ca eltorito.c:473
+ test di, di ; 85 ff ; 0xf41ce eltorito.c:474
+ jne short 041d5h ; 75 03 ; 0xf41d0
+ mov di, 007c0h ; bf c0 07 ; 0xf41d2 eltorito.c:475
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf41d5 eltorito.c:477
+ mov word [es:si+00ch], di ; 26 89 7c 0c ; 0xf41d8
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf41dc eltorito.c:478
+ mov dx, word [bp-007ech] ; 8b 96 14 f8 ; 0xf41e2 eltorito.c:480
+ mov word [es:si+00eh], dx ; 26 89 54 0e ; 0xf41e6 eltorito.c:481
+ test dx, dx ; 85 d2 ; 0xf41ea eltorito.c:486
+ je short 041f4h ; 74 06 ; 0xf41ec
+ cmp dx, 00400h ; 81 fa 00 04 ; 0xf41ee
+ jbe short 041fah ; 76 06 ; 0xf41f2
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf41f4 eltorito.c:487
+ jmp near 0431ah ; e9 20 01 ; 0xf41f7
+ mov ax, word [bp-007eah] ; 8b 86 16 f8 ; 0xf41fa eltorito.c:489
+ mov bx, word [bp-007e8h] ; 8b 9e 18 f8 ; 0xf41fe
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf4202 eltorito.c:490
+ mov word [es:si+00ah], bx ; 26 89 5c 0a ; 0xf4206
+ call 03c5ah ; e8 4d fa ; 0xf420a eltorito.c:496
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf420d
+ mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf4210
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf4216
+ mov ax, word [es:si+016h] ; 26 8b 44 16 ; 0xf421a eltorito.c:497
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf421e
+ test bx, bx ; 85 db ; 0xf4222
+ jne short 04230h ; 75 0a ; 0xf4224
+ test ax, ax ; 85 c0 ; 0xf4226
+ jne short 04230h ; 75 06 ; 0xf4228
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf422a eltorito.c:498
+ jmp near 0431ah ; e9 ea 00 ; 0xf422d
+ push di ; 57 ; 0xf4230 eltorito.c:501
+ push strict byte 00000h ; 6a 00 ; 0xf4231
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf4233
+ xor bx, bx ; 31 db ; 0xf4237
+ xor cx, cx ; 31 c9 ; 0xf4239
+ call 03f03h ; e8 c5 fc ; 0xf423b
+ test ax, ax ; 85 c0 ; 0xf423e eltorito.c:502
+ je short 04248h ; 74 06 ; 0xf4240
+ mov ax, strict word 0000eh ; b8 0e 00 ; 0xf4242 eltorito.c:503
+ jmp near 0431ah ; e9 d2 00 ; 0xf4245
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4248 eltorito.c:508
+ mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf424b
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf424f
+ jc short 0425fh ; 72 0c ; 0xf4251
+ jbe short 04277h ; 76 22 ; 0xf4253
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf4255
+ je short 0428dh ; 74 34 ; 0xf4257
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf4259
+ je short 04282h ; 74 25 ; 0xf425b
+ jmp short 042d1h ; eb 72 ; 0xf425d
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf425f
+ jne short 042d1h ; 75 6e ; 0xf4261
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4263 eltorito.c:510
+ 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; 0xf4266
+ mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf426f eltorito.c:512
+ jmp short 042d1h ; eb 5a ; 0xf4275 eltorito.c:513
+ 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; 0xf4277 eltorito.c:515
+ jmp short 0426fh ; eb ed ; 0xf4280
+ 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; 0xf4282 eltorito.c:520
+ jmp short 0426fh ; eb e2 ; 0xf428b
+ mov bx, 001c4h ; bb c4 01 ; 0xf428d eltorito.c:48
+ mov es, di ; 8e c7 ; 0xf4290
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4292
+ and AL, strict byte 03fh ; 24 3f ; 0xf4295 eltorito.c:49
+ xor ah, ah ; 30 e4 ; 0xf4297
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4299
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf429c
+ mov es, di ; 8e c7 ; 0xf42a0 eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf42a2
+ and ax, 000c0h ; 25 c0 00 ; 0xf42a5 eltorito.c:49
+ mov dx, ax ; 89 c2 ; 0xf42a8
+ sal dx, 002h ; c1 e2 02 ; 0xf42aa
+ mov bx, 001c5h ; bb c5 01 ; 0xf42ad eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf42b0
+ xor ah, ah ; 30 e4 ; 0xf42b3 eltorito.c:49
+ add ax, dx ; 01 d0 ; 0xf42b5
+ inc ax ; 40 ; 0xf42b7
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf42b8
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf42bb
+ mov bx, 001c3h ; bb c3 01 ; 0xf42bf eltorito.c:48
+ mov es, di ; 8e c7 ; 0xf42c2
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf42c4
+ xor ah, ah ; 30 e4 ; 0xf42c7 eltorito.c:49
+ inc ax ; 40 ; 0xf42c9
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf42ca
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf42cd
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf42d1 eltorito.c:533
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf42d4
+ je short 04301h ; 74 26 ; 0xf42d9
+ cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf42db eltorito.c:535
+ jne short 042f3h ; 75 11 ; 0xf42e0
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf42e2 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf42e5
+ mov es, ax ; 8e c0 ; 0xf42e8
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf42ea
+ or AL, strict byte 041h ; 0c 41 ; 0xf42ed eltorito.c:49
+ mov di, bx ; 89 df ; 0xf42ef eltorito.c:53
+ jmp short 042feh ; eb 0b ; 0xf42f1 eltorito.c:537
+ mov di, 002ach ; bf ac 02 ; 0xf42f3 eltorito.c:48
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf42f6
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf42f9
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf42fc eltorito.c:49
+ mov byte [es:di], al ; 26 88 05 ; 0xf42fe eltorito.c:53
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4301 eltorito.c:542
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4304
+ je short 0430fh ; 74 04 ; 0xf4309
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf430b eltorito.c:543
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf430f eltorito.c:546
+ movzx ax, byte [es:si+002h] ; 26 0f b6 44 02 ; 0xf4312
+ sal ax, 008h ; c1 e0 08 ; 0xf4317
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf431a eltorito.c:547
+ pop di ; 5f ; 0xf431d
+ pop si ; 5e ; 0xf431e
+ pop dx ; 5a ; 0xf431f
+ pop cx ; 59 ; 0xf4320
+ pop bx ; 5b ; 0xf4321
+ pop bp ; 5d ; 0xf4322
+ retn ; c3 ; 0xf4323
+ ; disGetNextSymbol 0xf4324 LB 0x6af8 -> off=0x59 cb=00000000000003eb uValue=00000000000f2d7d '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, 04bh, 047h, 026h
+ db 044h, 071h, 044h, 095h, 044h, 066h, 044h, 095h, 044h, 066h, 044h, 086h, 045h, 04bh, 044h, 04bh
+ db 047h, 04bh, 047h, 04bh, 044h, 04bh, 044h, 04bh, 044h, 04bh, 044h, 04bh, 044h, 02dh, 046h, 04bh
+ db 044h, 04bh, 047h, 036h, 046h, 049h, 046h, 04bh, 047h, 049h, 046h, 04bh, 047h, 04bh, 047h, 049h
+ db 046h, 00eh, 047h, 04bh, 047h, 04bh, 047h, 04bh, 047h
+int13_cdemu: ; 0xf437d LB 0x3eb
+ push bp ; 55 ; 0xf437d eltorito.c:557
+ mov bp, sp ; 89 e5 ; 0xf437e
+ push si ; 56 ; 0xf4380
+ push di ; 57 ; 0xf4381
+ sub sp, strict byte 00018h ; 83 ec 18 ; 0xf4382
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4385 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4388
+ mov es, ax ; 8e c0 ; 0xf438b
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf438d
+ mov si, 00316h ; be 16 03 ; 0xf4390 eltorito.c:572
+ mov dx, ax ; 89 c2 ; 0xf4393
+ mov bx, si ; 89 f3 ; 0xf4395
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf4397
+ mov word [bp-00ch], strict word 0005eh ; c7 46 f4 5e 00 ; 0xf439a eltorito.c:573
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf439f
+ mov es, ax ; 8e c0 ; 0xf43a2 eltorito.c:580
+ mov al, byte [es:si+003h] ; 26 8a 44 03 ; 0xf43a4
+ add al, al ; 00 c0 ; 0xf43a8
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf43aa
+ mov al, byte [es:si+004h] ; 26 8a 44 04 ; 0xf43ad eltorito.c:581
+ add byte [bp-006h], al ; 00 46 fa ; 0xf43b1
+ mov di, strict word 00074h ; bf 74 00 ; 0xf43b4 eltorito.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf43b7
+ mov es, ax ; 8e c0 ; 0xf43ba
+ mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf43bc
+ mov es, dx ; 8e c2 ; 0xf43c0 eltorito.c:586
+ cmp byte [es:si], 000h ; 26 80 3c 00 ; 0xf43c2
+ je short 043d6h ; 74 0e ; 0xf43c6
+ movzx dx, byte [es:si+002h] ; 26 0f b6 54 02 ; 0xf43c8
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf43cd
+ xor ah, ah ; 30 e4 ; 0xf43d0
+ cmp dx, ax ; 39 c2 ; 0xf43d2
+ je short 043ffh ; 74 29 ; 0xf43d4
+ mov bx, 00e16h ; bb 16 0e ; 0xf43d6 eltorito.c:587
+ mov cx, ds ; 8c d9 ; 0xf43d9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf43db
+ call 01a27h ; e8 46 d6 ; 0xf43de
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf43e1
+ xor ah, ah ; 30 e4 ; 0xf43e4
+ push ax ; 50 ; 0xf43e6
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43e7
+ shr ax, 008h ; c1 e8 08 ; 0xf43ea
+ push ax ; 50 ; 0xf43ed
+ push 003ceh ; 68 ce 03 ; 0xf43ee
+ push 003dah ; 68 da 03 ; 0xf43f1
+ push strict byte 00004h ; 6a 04 ; 0xf43f4
+ call 01a68h ; e8 6f d6 ; 0xf43f6
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf43f9
+ jmp near 04728h ; e9 29 03 ; 0xf43fc eltorito.c:588
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43ff eltorito.c:591
+ shr ax, 008h ; c1 e8 08 ; 0xf4402
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf4405
+ jnbe near 0474bh ; 0f 87 3f 03 ; 0xf4408
+ push CS ; 0e ; 0xf440c
+ pop ES ; 07 ; 0xf440d
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf440e
+ mov di, 04324h ; bf 24 43 ; 0xf4411
+ repne scasb ; f2 ae ; 0xf4414
+ sal cx, 1 ; d1 e1 ; 0xf4416
+ mov di, cx ; 89 cf ; 0xf4418
+ mov dx, word [cs:di+04341h] ; 2e 8b 95 41 43 ; 0xf441a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf441f
+ xor ah, ah ; 30 e4 ; 0xf4422
+ jmp dx ; ff e2 ; 0xf4424
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf4426 eltorito.c:594
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf442a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf442d
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xf4430
+ movzx bx, byte [es:bx+01eh] ; 26 0f b6 5f 1e ; 0xf4433
+ add bx, bx ; 01 db ; 0xf4438
+ cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf443a
+ je near 0444bh ; 0f 84 08 00 ; 0xf443f
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4443 eltorito.c:596
+ call word [word bx+00076h] ; ff 97 76 00 ; 0xf4447
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf444b eltorito.c:598
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf444f
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4452
+ mov es, ax ; 8e c0 ; 0xf4455
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4457
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf445b
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf445f
+ pop di ; 5f ; 0xf4462
+ pop si ; 5e ; 0xf4463
+ pop bp ; 5d ; 0xf4464
+ retn ; c3 ; 0xf4465
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4466 eltorito.c:614
+ xor ah, ah ; 30 e4 ; 0xf4469
+ or ah, 003h ; 80 cc 03 ; 0xf446b
+ jmp near 04730h ; e9 bf 02 ; 0xf446e eltorito.c:615
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4471 eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4474
+ mov es, dx ; 8e c2 ; 0xf4477
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf4479
+ movzx bx, dl ; 0f b6 da ; 0xf447c eltorito.c:620
+ sal bx, 008h ; c1 e3 08 ; 0xf447f
+ or ax, bx ; 09 d8 ; 0xf4482
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4484
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4487 eltorito.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf448a
+ test dl, dl ; 84 d2 ; 0xf448e eltorito.c:624
+ je short 0444fh ; 74 bd ; 0xf4490
+ jmp near 04744h ; e9 af 02 ; 0xf4492 eltorito.c:625
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4495 eltorito.c:632
+ mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf4498
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf449c eltorito.c:633
+ mov cx, word [es:bx+010h] ; 26 8b 4f 10 ; 0xf44a0 eltorito.c:634
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf44a4 eltorito.c:636
+ and dx, strict byte 0003fh ; 83 e2 3f ; 0xf44a7
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf44aa
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf44ad eltorito.c:637
+ and bx, 000c0h ; 81 e3 c0 00 ; 0xf44b0
+ sal bx, 002h ; c1 e3 02 ; 0xf44b4
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf44b7
+ shr dx, 008h ; c1 ea 08 ; 0xf44ba
+ or dx, bx ; 09 da ; 0xf44bd
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf44bf eltorito.c:638
+ shr bx, 008h ; c1 eb 08 ; 0xf44c2
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf44c5
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf44c8 eltorito.c:639
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf44cb
+ jne short 044d4h ; 75 03 ; 0xf44cf eltorito.c:647
+ jmp near 0444bh ; e9 77 ff ; 0xf44d1 eltorito.c:648
+ cmp si, word [bp-018h] ; 3b 76 e8 ; 0xf44d4 eltorito.c:651
+ jc near 04728h ; 0f 82 4d 02 ; 0xf44d7
+ cmp dx, ax ; 39 c2 ; 0xf44db
+ jnc near 04728h ; 0f 83 47 02 ; 0xf44dd
+ cmp cx, bx ; 39 d9 ; 0xf44e1
+ jbe near 04728h ; 0f 86 41 02 ; 0xf44e3
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf44e7 eltorito.c:658
+ shr ax, 008h ; c1 e8 08 ; 0xf44ea
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf44ed
+ jne short 044f5h ; 75 03 ; 0xf44f0
+ jmp near 0444bh ; e9 56 ff ; 0xf44f2 eltorito.c:659
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf44f5 eltorito.c:661
+ shr ax, 004h ; c1 e8 04 ; 0xf44f8
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf44fb
+ add bx, ax ; 01 c3 ; 0xf44fe
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf4500
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4503 eltorito.c:662
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf4506
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4509
+ mov ax, dx ; 89 d0 ; 0xf450c eltorito.c:665
+ xor dx, dx ; 31 d2 ; 0xf450e
+ mov bx, cx ; 89 cb ; 0xf4510
+ xor cx, cx ; 31 c9 ; 0xf4512
+ call 0ace0h ; e8 c9 67 ; 0xf4514
+ xor bx, bx ; 31 db ; 0xf4517
+ add ax, word [bp-014h] ; 03 46 ec ; 0xf4519
+ adc dx, bx ; 11 da ; 0xf451c
+ mov bx, si ; 89 f3 ; 0xf451e
+ xor cx, cx ; 31 c9 ; 0xf4520
+ call 0ace0h ; e8 bb 67 ; 0xf4522
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf4525
+ dec bx ; 4b ; 0xf4528
+ xor cx, cx ; 31 c9 ; 0xf4529
+ add bx, ax ; 01 c3 ; 0xf452b
+ adc cx, dx ; 11 d1 ; 0xf452d
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf452f eltorito.c:668
+ xor al, al ; 30 c0 ; 0xf4532
+ or ax, di ; 09 f8 ; 0xf4534
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4536
+ push word [bp-010h] ; ff 76 f0 ; 0xf4539 eltorito.c:670
+ push word [bp-00eh] ; ff 76 f2 ; 0xf453c
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf453f
+ mov dx, di ; 89 fa ; 0xf4543
+ call 03f03h ; e8 bb f9 ; 0xf4545
+ mov dx, ax ; 89 c2 ; 0xf4548
+ test al, al ; 84 c0 ; 0xf454a eltorito.c:671
+ je near 0444bh ; 0f 84 fb fe ; 0xf454c
+ mov bx, 00e16h ; bb 16 0e ; 0xf4550 eltorito.c:672
+ mov cx, ds ; 8c d9 ; 0xf4553
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4555
+ call 01a27h ; e8 cc d4 ; 0xf4558
+ movzx ax, dl ; 0f b6 c2 ; 0xf455b
+ push ax ; 50 ; 0xf455e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf455f
+ shr ax, 008h ; c1 e8 08 ; 0xf4562
+ push ax ; 50 ; 0xf4565
+ push 003ceh ; 68 ce 03 ; 0xf4566
+ push 00410h ; 68 10 04 ; 0xf4569
+ push strict byte 00004h ; 6a 04 ; 0xf456c
+ call 01a68h ; e8 f7 d4 ; 0xf456e
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4571
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4574 eltorito.c:673
+ xor ah, ah ; 30 e4 ; 0xf4577
+ or ah, 002h ; 80 cc 02 ; 0xf4579
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf457c
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf457f eltorito.c:674
+ jmp near 04733h ; e9 ad 01 ; 0xf4583 eltorito.c:675
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4586 eltorito.c:682
+ mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf4589
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf458d eltorito.c:683
+ dec ax ; 48 ; 0xf4591
+ mov cx, word [es:bx+010h] ; 26 8b 4f 10 ; 0xf4592 eltorito.c:684
+ dec cx ; 49 ; 0xf4596
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4597 eltorito.c:686
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf459b eltorito.c:687
+ xor dl, dl ; 30 d2 ; 0xf459e
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf45a0 eltorito.c:688
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf45a3
+ mov word [bp-01ch], di ; 89 7e e4 ; 0xf45a7
+ mov di, ax ; 89 c7 ; 0xf45aa
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf45ac
+ sal di, 008h ; c1 e7 08 ; 0xf45b0
+ mov word [bp-01ah], di ; 89 7e e6 ; 0xf45b3
+ mov di, word [bp-01ch] ; 8b 7e e4 ; 0xf45b6
+ or di, word [bp-01ah] ; 0b 7e e6 ; 0xf45b9
+ mov word [bp+014h], di ; 89 7e 14 ; 0xf45bc
+ shr ax, 002h ; c1 e8 02 ; 0xf45bf eltorito.c:689
+ xor ah, ah ; 30 e4 ; 0xf45c2
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf45c4
+ and si, strict byte 0003fh ; 83 e6 3f ; 0xf45c6
+ or si, ax ; 09 c6 ; 0xf45c9
+ mov ax, di ; 89 f8 ; 0xf45cb
+ xor al, al ; 30 c0 ; 0xf45cd
+ or ax, si ; 09 f0 ; 0xf45cf
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf45d1
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf45d4 eltorito.c:690
+ xor ah, ah ; 30 e4 ; 0xf45d7
+ sal cx, 008h ; c1 e1 08 ; 0xf45d9
+ or ax, cx ; 09 c8 ; 0xf45dc
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf45de
+ xor al, al ; 30 c0 ; 0xf45e1 eltorito.c:691
+ or AL, strict byte 002h ; 0c 02 ; 0xf45e3
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf45e5
+ mov al, byte [es:bx+001h] ; 26 8a 47 01 ; 0xf45e8 eltorito.c:694
+ mov word [bp+010h], dx ; 89 56 10 ; 0xf45ec
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf45ef
+ je short 0460fh ; 74 1c ; 0xf45f1
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf45f3
+ je short 04607h ; 74 10 ; 0xf45f5
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf45f7
+ jne short 04614h ; 75 19 ; 0xf45f9
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf45fb eltorito.c:695
+ xor al, al ; 30 c0 ; 0xf45fe
+ or AL, strict byte 002h ; 0c 02 ; 0xf4600
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf4602
+ jmp short 04614h ; eb 0d ; 0xf4605
+ or dl, 004h ; 80 ca 04 ; 0xf4607 eltorito.c:696
+ mov word [bp+010h], dx ; 89 56 10 ; 0xf460a
+ jmp short 04614h ; eb 05 ; 0xf460d
+ or dl, 005h ; 80 ca 05 ; 0xf460f eltorito.c:697
+ jmp short 0460ah ; eb f6 ; 0xf4612
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4614 eltorito.c:701
+ cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf4617
+ jnc near 0444bh ; 0f 83 2b fe ; 0xf461c
+ mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf4620 eltorito.c:702
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf4625 eltorito.c:703
+ jmp near 0444bh ; e9 1e fe ; 0xf462a eltorito.c:705
+ or ah, 003h ; 80 cc 03 ; 0xf462d eltorito.c:710
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4630
+ jmp near 0444fh ; e9 19 fe ; 0xf4633 eltorito.c:711
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf4636 eltorito.c:715
+ or ah, 030h ; 80 cc 30 ; 0xf463b eltorito.c:716
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf463e
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf4641 eltorito.c:717
+ jmp near 0444fh ; e9 06 fe ; 0xf4646 eltorito.c:718
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf4649 eltorito.c:726
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf464c
+ mov si, bx ; 89 de ; 0xf464f
+ mov [bp-012h], es ; 8c 46 ee ; 0xf4651
+ mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf4654 eltorito.c:728
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf4658 eltorito.c:729
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf465c
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf465f eltorito.c:730
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4663
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf4666 eltorito.c:733
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf466a
+ or ax, cx ; 09 c8 ; 0xf466e eltorito.c:734
+ je short 0468ah ; 74 18 ; 0xf4670
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4672 eltorito.c:735
+ shr ax, 008h ; c1 e8 08 ; 0xf4675
+ push ax ; 50 ; 0xf4678
+ push 003ceh ; 68 ce 03 ; 0xf4679
+ push 00431h ; 68 31 04 ; 0xf467c
+ push strict byte 00007h ; 6a 07 ; 0xf467f
+ call 01a68h ; e8 e4 d3 ; 0xf4681
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4684
+ jmp near 04728h ; e9 9e 00 ; 0xf4687 eltorito.c:736
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf468a eltorito.c:740
+ mov ax, word [es:si+008h] ; 26 8b 44 08 ; 0xf468d
+ mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf4691
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf4695 eltorito.c:743
+ shr di, 008h ; c1 ef 08 ; 0xf4698
+ cmp di, strict byte 00044h ; 83 ff 44 ; 0xf469b
+ je near 0444bh ; 0f 84 a9 fd ; 0xf469e
+ cmp di, strict byte 00047h ; 83 ff 47 ; 0xf46a2
+ jne short 046aah ; 75 03 ; 0xf46a5
+ jmp near 0444bh ; e9 a1 fd ; 0xf46a7 eltorito.c:744
+ push word [bp-010h] ; ff 76 f0 ; 0xf46aa eltorito.c:749
+ push word [bp-00eh] ; ff 76 f2 ; 0xf46ad
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf46b0
+ mov word [bp-01ah], bx ; 89 5e e6 ; 0xf46b4
+ mov bx, ax ; 89 c3 ; 0xf46b7
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf46b9
+ call 03f03h ; e8 44 f8 ; 0xf46bc
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf46bf
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf46c2 eltorito.c:750
+ mov ax, word [es:bx+01ah] ; 26 8b 47 1a ; 0xf46c5
+ mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf46c9
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf46cd
+ shr dx, 1 ; d1 ea ; 0xf46d0
+ rcr ax, 1 ; d1 d8 ; 0xf46d2
+ loop 046d0h ; e2 fa ; 0xf46d4
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf46d6 eltorito.c:751
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf46d9
+ cmp byte [bp-016h], 000h ; 80 7e ea 00 ; 0xf46dd eltorito.c:753
+ je near 0444bh ; 0f 84 66 fd ; 0xf46e1
+ mov bx, 00e16h ; bb 16 0e ; 0xf46e5 eltorito.c:754
+ mov cx, ds ; 8c d9 ; 0xf46e8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf46ea
+ call 01a27h ; e8 37 d3 ; 0xf46ed
+ movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf46f0
+ push ax ; 50 ; 0xf46f4
+ push di ; 57 ; 0xf46f5
+ push 003ceh ; 68 ce 03 ; 0xf46f6
+ push 0045ah ; 68 5a 04 ; 0xf46f9
+ push strict byte 00004h ; 6a 04 ; 0xf46fc
+ call 01a68h ; e8 67 d3 ; 0xf46fe
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4701
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4704 eltorito.c:755
+ xor ah, ah ; 30 e4 ; 0xf4707
+ or ah, 00ch ; 80 cc 0c ; 0xf4709
+ jmp short 04730h ; eb 22 ; 0xf470c
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf470e eltorito.c:763
+ push ax ; 50 ; 0xf4712
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf4713
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf4716
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf4719
+ mov cx, word [bp-00ah] ; 8b 4e f6 ; 0xf471c
+ call 05933h ; e8 11 12 ; 0xf471f
+ test ax, ax ; 85 c0 ; 0xf4722
+ je near 0444bh ; 0f 84 23 fd ; 0xf4724
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4728 eltorito.c:764
+ xor ah, ah ; 30 e4 ; 0xf472b
+ or ah, 001h ; 80 cc 01 ; 0xf472d
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4730
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4733
+ shr ax, 008h ; c1 e8 08 ; 0xf4736
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4739
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf473c
+ mov es, dx ; 8e c2 ; 0xf473f
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4741
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf4744
+ jmp near 0445fh ; e9 14 fd ; 0xf4748
+ mov bx, 00e16h ; bb 16 0e ; 0xf474b eltorito.c:780
+ mov cx, ds ; 8c d9 ; 0xf474e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4750
+ call 01a27h ; e8 d1 d2 ; 0xf4753
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4756
+ shr ax, 008h ; c1 e8 08 ; 0xf4759
+ push ax ; 50 ; 0xf475c
+ push 003ceh ; 68 ce 03 ; 0xf475d
+ push 0047ch ; 68 7c 04 ; 0xf4760
+ push strict byte 00004h ; 6a 04 ; 0xf4763
+ jmp near 04681h ; e9 19 ff ; 0xf4765
+ ; disGetNextSymbol 0xf4768 LB 0x66b4 -> off=0x59 cb=0000000000000301 uValue=00000000000f31c1 '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, 0a5h, 04ah, 009h
+ db 04ah, 066h, 048h, 0a5h, 04ah, 05bh, 048h, 0a5h, 04ah, 05bh, 048h, 0a5h, 04ah, 009h, 04ah, 0a5h
+ db 04ah, 0a5h, 04ah, 009h, 04ah, 009h, 04ah, 009h, 04ah, 009h, 04ah, 009h, 04ah, 08ch, 048h, 009h
+ db 04ah, 0a5h, 04ah, 092h, 048h, 0a5h, 048h, 05bh, 048h, 0a5h, 048h, 06dh, 049h, 024h, 04ah, 0a5h
+ db 048h, 047h, 04ah, 07fh, 04ah, 087h, 04ah, 0a5h, 04ah
+int13_cdrom: ; 0xf47c1 LB 0x301
+ push bp ; 55 ; 0xf47c1 eltorito.c:805
+ mov bp, sp ; 89 e5 ; 0xf47c2
+ push si ; 56 ; 0xf47c4
+ push di ; 57 ; 0xf47c5
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf47c6
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf47c9 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf47cc
+ mov es, ax ; 8e c0 ; 0xf47cf
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf47d1
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf47d4 eltorito.c:814
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf47d7
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf47da eltorito.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf47dd
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47e1 eltorito.c:821
+ xor ah, ah ; 30 e4 ; 0xf47e4
+ cmp ax, 000e0h ; 3d e0 00 ; 0xf47e6
+ jc short 047f0h ; 72 05 ; 0xf47e9
+ cmp ax, 000f4h ; 3d f4 00 ; 0xf47eb
+ jc short 0480eh ; 72 1e ; 0xf47ee
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47f0 eltorito.c:822
+ xor ah, ah ; 30 e4 ; 0xf47f3
+ push ax ; 50 ; 0xf47f5
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47f6
+ shr ax, 008h ; c1 e8 08 ; 0xf47f9
+ push ax ; 50 ; 0xf47fc
+ push 004ach ; 68 ac 04 ; 0xf47fd
+ push 004b8h ; 68 b8 04 ; 0xf4800
+ push strict byte 00004h ; 6a 04 ; 0xf4803
+ call 01a68h ; e8 60 d2 ; 0xf4805
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4808
+ jmp near 04a5dh ; e9 4f 02 ; 0xf480b eltorito.c:823
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf480e eltorito.c:827
+ xor ah, ah ; 30 e4 ; 0xf4811
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf4813
+ mov bx, si ; 89 f3 ; 0xf4816
+ add bx, ax ; 01 c3 ; 0xf4818
+ mov dl, byte [es:bx+00184h] ; 26 8a 97 84 01 ; 0xf481a
+ cmp dl, 014h ; 80 fa 14 ; 0xf481f eltorito.c:830
+ jc short 04834h ; 72 10 ; 0xf4822
+ push ax ; 50 ; 0xf4824 eltorito.c:831
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4825
+ shr ax, 008h ; c1 e8 08 ; 0xf4828
+ push ax ; 50 ; 0xf482b
+ push 004ach ; 68 ac 04 ; 0xf482c
+ push 004e3h ; 68 e3 04 ; 0xf482f
+ jmp short 04803h ; eb cf ; 0xf4832
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4834 eltorito.c:835
+ shr ax, 008h ; c1 e8 08 ; 0xf4837
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf483a
+ jnbe near 04aa5h ; 0f 87 64 02 ; 0xf483d
+ push CS ; 0e ; 0xf4841
+ pop ES ; 07 ; 0xf4842
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4843
+ mov di, 04768h ; bf 68 47 ; 0xf4846
+ repne scasb ; f2 ae ; 0xf4849
+ sal cx, 1 ; d1 e1 ; 0xf484b
+ mov di, cx ; 89 cf ; 0xf484d
+ mov bx, word [cs:di+04785h] ; 2e 8b 9d 85 47 ; 0xf484f
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4854
+ xor ah, ah ; 30 e4 ; 0xf4857
+ jmp bx ; ff e3 ; 0xf4859
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf485b eltorito.c:853
+ xor ah, ah ; 30 e4 ; 0xf485e
+ or ah, 003h ; 80 cc 03 ; 0xf4860
+ jmp near 04a65h ; e9 ff 01 ; 0xf4863
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4866 eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4869
+ mov es, dx ; 8e c2 ; 0xf486c
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf486e
+ movzx bx, dl ; 0f b6 da ; 0xf4871 eltorito.c:859
+ sal bx, 008h ; c1 e3 08 ; 0xf4874
+ or ax, bx ; 09 d8 ; 0xf4877
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4879
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf487c eltorito.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf487f
+ test dl, dl ; 84 d2 ; 0xf4883 eltorito.c:863
+ je near 04a0dh ; 0f 84 84 01 ; 0xf4885
+ jmp near 04a79h ; e9 ed 01 ; 0xf4889 eltorito.c:864
+ or ah, 002h ; 80 cc 02 ; 0xf488c eltorito.c:870
+ jmp near 04a65h ; e9 d3 01 ; 0xf488f
+ mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf4892 eltorito.c:875
+ or ah, 030h ; 80 cc 30 ; 0xf4897 eltorito.c:876
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf489a
+ mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf489d eltorito.c:877
+ jmp near 04a0dh ; e9 68 01 ; 0xf48a2 eltorito.c:878
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf48a5 eltorito.c:886
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf48a8
+ mov di, bx ; 89 df ; 0xf48ab
+ mov [bp-00ah], es ; 8c 46 f6 ; 0xf48ad
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf48b0 eltorito.c:888
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf48b4
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf48b7 eltorito.c:889
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf48bb
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf48be eltorito.c:890
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf48c2
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf48c5 eltorito.c:893
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf48c9
+ or ax, cx ; 09 c8 ; 0xf48cd eltorito.c:894
+ je short 048e9h ; 74 18 ; 0xf48cf
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48d1 eltorito.c:895
+ shr ax, 008h ; c1 e8 08 ; 0xf48d4
+ push ax ; 50 ; 0xf48d7
+ push 004ach ; 68 ac 04 ; 0xf48d8
+ push 00431h ; 68 31 04 ; 0xf48db
+ push strict byte 00007h ; 6a 07 ; 0xf48de
+ call 01a68h ; e8 85 d1 ; 0xf48e0
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf48e3
+ jmp near 04a5dh ; e9 74 01 ; 0xf48e6 eltorito.c:896
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf48e9 eltorito.c:900
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf48ec
+ mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf48f0
+ mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf48f4 eltorito.c:903
+ shr bx, 008h ; c1 eb 08 ; 0xf48f7
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf48fa
+ cmp bx, strict byte 00044h ; 83 fb 44 ; 0xf48fd
+ je near 04a09h ; 0f 84 05 01 ; 0xf4900
+ cmp bx, strict byte 00047h ; 83 fb 47 ; 0xf4904
+ je near 04a09h ; 0f 84 fe 00 ; 0xf4907
+ push dword [bp-010h] ; 66 ff 76 f0 ; 0xf490b eltorito.c:909
+ xor dh, dh ; 30 f6 ; 0xf490f
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf4911
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf4914
+ mov bx, ax ; 89 c3 ; 0xf4917
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf4919
+ call 03e84h ; e8 65 f5 ; 0xf491c
+ mov dx, ax ; 89 c2 ; 0xf491f
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf4921 eltorito.c:910
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4924
+ mov bx, word [es:si+01ch] ; 26 8b 5c 1c ; 0xf4928
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf492c
+ shr bx, 1 ; d1 eb ; 0xf492f
+ rcr ax, 1 ; d1 d8 ; 0xf4931
+ loop 0492fh ; e2 fa ; 0xf4933
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4935 eltorito.c:911
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf4938
+ test dl, dl ; 84 d2 ; 0xf493c eltorito.c:913
+ je near 04a09h ; 0f 84 c7 00 ; 0xf493e
+ mov bx, 00e16h ; bb 16 0e ; 0xf4942 eltorito.c:914
+ mov cx, ds ; 8c d9 ; 0xf4945
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4947
+ call 01a27h ; e8 da d0 ; 0xf494a
+ movzx ax, dl ; 0f b6 c2 ; 0xf494d
+ push ax ; 50 ; 0xf4950
+ push word [bp-008h] ; ff 76 f8 ; 0xf4951
+ push 004ach ; 68 ac 04 ; 0xf4954
+ push 0045ah ; 68 5a 04 ; 0xf4957
+ push strict byte 00004h ; 6a 04 ; 0xf495a
+ call 01a68h ; e8 09 d1 ; 0xf495c
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf495f
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4962 eltorito.c:915
+ xor ah, ah ; 30 e4 ; 0xf4965
+ or ah, 00ch ; 80 cc 0c ; 0xf4967
+ jmp near 04a65h ; e9 f8 00 ; 0xf496a
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf496d eltorito.c:923
+ jnbe near 04a5dh ; 0f 87 e9 00 ; 0xf4970
+ movzx bx, dl ; 0f b6 da ; 0xf4974 eltorito.c:926
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf4977
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf497a
+ add bx, si ; 01 f3 ; 0xf497d
+ mov bl, byte [es:bx+021h] ; 26 8a 5f 21 ; 0xf497f
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4983 eltorito.c:928
+ je short 049fah ; 74 72 ; 0xf4986
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4988
+ je short 049c8h ; 74 3b ; 0xf498b
+ test ax, ax ; 85 c0 ; 0xf498d
+ jne near 04a09h ; 0f 85 76 00 ; 0xf498f
+ cmp bl, 0ffh ; 80 fb ff ; 0xf4993 eltorito.c:930
+ jne short 049aah ; 75 12 ; 0xf4996
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4998 eltorito.c:931
+ xor ah, ah ; 30 e4 ; 0xf499b
+ or ah, 0b4h ; 80 cc b4 ; 0xf499d
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf49a0
+ xor al, al ; 30 c0 ; 0xf49a3 eltorito.c:932
+ or AL, strict byte 001h ; 0c 01 ; 0xf49a5
+ jmp near 04a65h ; e9 bb 00 ; 0xf49a7
+ movzx ax, dl ; 0f b6 c2 ; 0xf49aa eltorito.c:934
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf49ad
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf49b0 eltorito.c:935
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf49b2
+ add si, ax ; 01 c6 ; 0xf49b5
+ mov byte [es:si+021h], bl ; 26 88 5c 21 ; 0xf49b7
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49bb eltorito.c:936
+ xor al, al ; 30 c0 ; 0xf49be
+ or AL, strict byte 001h ; 0c 01 ; 0xf49c0
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf49c2
+ jmp near 04a09h ; e9 41 00 ; 0xf49c5 eltorito.c:937
+ test bl, bl ; 84 db ; 0xf49c8 eltorito.c:939
+ jne short 049d8h ; 75 0c ; 0xf49ca
+ or ah, 0b0h ; 80 cc b0 ; 0xf49cc eltorito.c:940
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf49cf
+ mov byte [bp+018h], bl ; 88 5e 18 ; 0xf49d2 eltorito.c:941
+ jmp near 04a68h ; e9 90 00 ; 0xf49d5 eltorito.c:942
+ movzx ax, dl ; 0f b6 c2 ; 0xf49d8 eltorito.c:943
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf49db
+ db 0feh, 0cbh
+ ; dec bl ; fe cb ; 0xf49de eltorito.c:944
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf49e0
+ add si, ax ; 01 c6 ; 0xf49e3
+ mov byte [es:si+021h], bl ; 26 88 5c 21 ; 0xf49e5
+ test bl, bl ; 84 db ; 0xf49e9 eltorito.c:945
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf49eb
+ movzx dx, al ; 0f b6 d0 ; 0xf49ee
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49f1
+ xor al, al ; 30 c0 ; 0xf49f4
+ or ax, dx ; 09 d0 ; 0xf49f6
+ jmp short 049c2h ; eb c8 ; 0xf49f8
+ test bl, bl ; 84 db ; 0xf49fa eltorito.c:948
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf49fc
+ xor ah, ah ; 30 e4 ; 0xf49ff
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf4a01
+ mov dl, al ; 88 c2 ; 0xf4a04
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf4a06
+ mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4a09 eltorito.c:951
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4a0d
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4a10
+ mov es, ax ; 8e c0 ; 0xf4a13
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4a15
+ and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4a19
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4a1d
+ pop di ; 5f ; 0xf4a20
+ pop si ; 5e ; 0xf4a21
+ pop bp ; 5d ; 0xf4a22
+ retn ; c3 ; 0xf4a23
+ movzx bx, dl ; 0f b6 da ; 0xf4a24 eltorito.c:955
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf4a27
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf4a2a
+ add bx, si ; 01 f3 ; 0xf4a2d
+ mov bl, byte [es:bx+021h] ; 26 8a 5f 21 ; 0xf4a2f
+ test bl, bl ; 84 db ; 0xf4a33 eltorito.c:957
+ je short 04a3ch ; 74 05 ; 0xf4a35
+ or ah, 0b1h ; 80 cc b1 ; 0xf4a37 eltorito.c:958
+ jmp short 04a65h ; eb 29 ; 0xf4a3a
+ test dh, dh ; 84 f6 ; 0xf4a3c eltorito.c:980
+ je short 04a09h ; 74 c9 ; 0xf4a3e
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a40 eltorito.c:981
+ xor ah, ah ; 30 e4 ; 0xf4a43
+ jmp short 04a37h ; eb f0 ; 0xf4a45
+ movzx ax, dl ; 0f b6 c2 ; 0xf4a47 eltorito.c:989
+ push ax ; 50 ; 0xf4a4a
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4a4b
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4a4e
+ mov bx, si ; 89 f3 ; 0xf4a51
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf4a53
+ call 05933h ; e8 da 0e ; 0xf4a56
+ test ax, ax ; 85 c0 ; 0xf4a59
+ je short 04a09h ; 74 ac ; 0xf4a5b
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a5d eltorito.c:990
+ xor ah, ah ; 30 e4 ; 0xf4a60
+ or ah, 001h ; 80 cc 01 ; 0xf4a62
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4a65
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a68
+ shr ax, 008h ; c1 e8 08 ; 0xf4a6b
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4a6e
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4a71
+ mov es, dx ; 8e c2 ; 0xf4a74
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4a76
+ or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4a79
+ jmp short 04a1dh ; eb 9e ; 0xf4a7d
+ or ah, 006h ; 80 cc 06 ; 0xf4a7f eltorito.c:997
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4a82
+ jmp short 04a79h ; eb f2 ; 0xf4a85 eltorito.c:998
+ cmp ax, strict word 00006h ; 3d 06 00 ; 0xf4a87 eltorito.c:1003
+ je near 04a09h ; 0f 84 7b ff ; 0xf4a8a
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4a8e
+ jc short 04a5dh ; 72 ca ; 0xf4a91
+ jbe near 04a09h ; 0f 86 72 ff ; 0xf4a93
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf4a97
+ jc short 04a5dh ; 72 c1 ; 0xf4a9a
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf4a9c
+ jbe near 04a09h ; 0f 86 66 ff ; 0xf4a9f
+ jmp short 04a5dh ; eb b8 ; 0xf4aa3 eltorito.c:1011
+ mov bx, 00e16h ; bb 16 0e ; 0xf4aa5 eltorito.c:1024
+ mov cx, ds ; 8c d9 ; 0xf4aa8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4aaa
+ call 01a27h ; e8 77 cf ; 0xf4aad
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ab0
+ shr ax, 008h ; c1 e8 08 ; 0xf4ab3
+ push ax ; 50 ; 0xf4ab6
+ push 004ach ; 68 ac 04 ; 0xf4ab7
+ push 003b5h ; 68 b5 03 ; 0xf4aba
+ push strict byte 00004h ; 6a 04 ; 0xf4abd
+ jmp near 048e0h ; e9 1e fe ; 0xf4abf
+ ; disGetNextSymbol 0xf4ac2 LB 0x635a -> off=0x0 cb=000000000000004b uValue=00000000000f34c2 'print_boot_device'
+print_boot_device: ; 0xf4ac2 LB 0x4b
+ push bp ; 55 ; 0xf4ac2 boot.c:119
+ mov bp, sp ; 89 e5 ; 0xf4ac3
+ push cx ; 51 ; 0xf4ac5
+ test al, al ; 84 c0 ; 0xf4ac6 boot.c:127
+ je short 04acfh ; 74 05 ; 0xf4ac8
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf4aca
+ jmp short 04ae9h ; eb 1a ; 0xf4acd boot.c:128
+ test dl, dl ; 84 d2 ; 0xf4acf
+ je short 04ad8h ; 74 05 ; 0xf4ad1
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf4ad3
+ jmp short 04ae9h ; eb 11 ; 0xf4ad6 boot.c:129
+ test bl, 080h ; f6 c3 80 ; 0xf4ad8
+ jne short 04ae1h ; 75 04 ; 0xf4adb
+ xor dh, dh ; 30 f6 ; 0xf4add
+ jmp short 04ae9h ; eb 08 ; 0xf4adf boot.c:130
+ test bl, 080h ; f6 c3 80 ; 0xf4ae1
+ je short 04b07h ; 74 21 ; 0xf4ae4
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4ae6
+ mov bx, 00e16h ; bb 16 0e ; 0xf4ae9 boot.c:133
+ mov cx, ds ; 8c d9 ; 0xf4aec
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4aee
+ call 01a27h ; e8 33 cf ; 0xf4af1
+ imul dx, dx, strict byte 0000ah ; 6b d2 0a ; 0xf4af4
+ add dx, 00e3ch ; 81 c2 3c 0e ; 0xf4af7
+ push dx ; 52 ; 0xf4afb
+ push 00516h ; 68 16 05 ; 0xf4afc
+ push strict byte 00004h ; 6a 04 ; 0xf4aff
+ call 01a68h ; e8 64 cf ; 0xf4b01
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4b04
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4b07 boot.c:134
+ pop cx ; 59 ; 0xf4b0a
+ pop bp ; 5d ; 0xf4b0b
+ retn ; c3 ; 0xf4b0c
+ ; disGetNextSymbol 0xf4b0d LB 0x630f -> off=0x0 cb=00000000000000bf uValue=00000000000f350d 'print_boot_failure'
+print_boot_failure: ; 0xf4b0d LB 0xbf
+ push bp ; 55 ; 0xf4b0d boot.c:141
+ mov bp, sp ; 89 e5 ; 0xf4b0e
+ push si ; 56 ; 0xf4b10
+ mov dh, cl ; 88 ce ; 0xf4b11
+ mov ah, bl ; 88 dc ; 0xf4b13 boot.c:144
+ and ah, 07fh ; 80 e4 7f ; 0xf4b15
+ movzx si, ah ; 0f b6 f4 ; 0xf4b18
+ test al, al ; 84 c0 ; 0xf4b1b boot.c:152
+ je short 04b3ah ; 74 1b ; 0xf4b1d
+ mov bx, 00e16h ; bb 16 0e ; 0xf4b1f boot.c:153
+ mov cx, ds ; 8c d9 ; 0xf4b22
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b24
+ call 01a27h ; e8 fd ce ; 0xf4b27
+ push 00e50h ; 68 50 0e ; 0xf4b2a
+ push 0052ah ; 68 2a 05 ; 0xf4b2d
+ push strict byte 00004h ; 6a 04 ; 0xf4b30
+ call 01a68h ; e8 33 cf ; 0xf4b32
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4b35
+ jmp short 04b7eh ; eb 44 ; 0xf4b38 boot.c:154
+ test dl, dl ; 84 d2 ; 0xf4b3a
+ je short 04b4eh ; 74 10 ; 0xf4b3c
+ mov bx, 00e16h ; bb 16 0e ; 0xf4b3e boot.c:155
+ mov cx, ds ; 8c d9 ; 0xf4b41
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b43
+ call 01a27h ; e8 de ce ; 0xf4b46
+ push 00e5ah ; 68 5a 0e ; 0xf4b49
+ jmp short 04b2dh ; eb df ; 0xf4b4c
+ test bl, 080h ; f6 c3 80 ; 0xf4b4e boot.c:156
+ je short 04b64h ; 74 11 ; 0xf4b51
+ mov bx, 00e16h ; bb 16 0e ; 0xf4b53 boot.c:157
+ mov cx, ds ; 8c d9 ; 0xf4b56
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b58
+ call 01a27h ; e8 c9 ce ; 0xf4b5b
+ push si ; 56 ; 0xf4b5e
+ push 00e46h ; 68 46 0e ; 0xf4b5f
+ jmp short 04b73h ; eb 0f ; 0xf4b62 boot.c:158
+ mov bx, 00e16h ; bb 16 0e ; 0xf4b64 boot.c:159
+ mov cx, ds ; 8c d9 ; 0xf4b67
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b69
+ call 01a27h ; e8 b8 ce ; 0xf4b6c
+ push si ; 56 ; 0xf4b6f
+ push 00e3ch ; 68 3c 0e ; 0xf4b70
+ push 0053fh ; 68 3f 05 ; 0xf4b73
+ push strict byte 00004h ; 6a 04 ; 0xf4b76
+ call 01a68h ; e8 ed ce ; 0xf4b78
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4b7b
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4b7e boot.c:161
+ jne short 04bc4h ; 75 40 ; 0xf4b82
+ test dh, dh ; 84 f6 ; 0xf4b84 boot.c:162
+ jne short 04b98h ; 75 10 ; 0xf4b86
+ mov bx, 00e16h ; bb 16 0e ; 0xf4b88 boot.c:163
+ mov cx, ds ; 8c d9 ; 0xf4b8b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b8d
+ call 01a27h ; e8 94 ce ; 0xf4b90
+ push 00557h ; 68 57 05 ; 0xf4b93
+ jmp short 04ba6h ; eb 0e ; 0xf4b96 boot.c:164
+ mov bx, 00e16h ; bb 16 0e ; 0xf4b98 boot.c:165
+ mov cx, ds ; 8c d9 ; 0xf4b9b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b9d
+ call 01a27h ; e8 84 ce ; 0xf4ba0
+ push 00572h ; 68 72 05 ; 0xf4ba3
+ push strict byte 00006h ; 6a 06 ; 0xf4ba6
+ call 01a68h ; e8 bd ce ; 0xf4ba8
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4bab
+ mov bx, 00e16h ; bb 16 0e ; 0xf4bae boot.c:166
+ mov cx, ds ; 8c d9 ; 0xf4bb1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4bb3
+ call 01a27h ; e8 6e ce ; 0xf4bb6
+ push 00598h ; 68 98 05 ; 0xf4bb9
+ push strict byte 00006h ; 6a 06 ; 0xf4bbc
+ call 01a68h ; e8 a7 ce ; 0xf4bbe
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4bc1
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4bc4 boot.c:168
+ pop si ; 5e ; 0xf4bc7
+ pop bp ; 5d ; 0xf4bc8
+ retn 00002h ; c2 02 00 ; 0xf4bc9
+ ; disGetNextSymbol 0xf4bcc LB 0x6250 -> off=0x0 cb=0000000000000027 uValue=00000000000f35cc 'print_cdromboot_failure'
+print_cdromboot_failure: ; 0xf4bcc LB 0x27
+ push bp ; 55 ; 0xf4bcc boot.c:174
+ mov bp, sp ; 89 e5 ; 0xf4bcd
+ push bx ; 53 ; 0xf4bcf
+ push cx ; 51 ; 0xf4bd0
+ push dx ; 52 ; 0xf4bd1
+ mov dx, ax ; 89 c2 ; 0xf4bd2
+ mov bx, 00e16h ; bb 16 0e ; 0xf4bd4 boot.c:176
+ mov cx, ds ; 8c d9 ; 0xf4bd7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4bd9
+ call 01a27h ; e8 48 ce ; 0xf4bdc
+ push dx ; 52 ; 0xf4bdf
+ push 005c5h ; 68 c5 05 ; 0xf4be0
+ push strict byte 00004h ; 6a 04 ; 0xf4be3
+ call 01a68h ; e8 80 ce ; 0xf4be5
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4be8
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf4beb boot.c:178
+ pop dx ; 5a ; 0xf4bee
+ pop cx ; 59 ; 0xf4bef
+ pop bx ; 5b ; 0xf4bf0
+ pop bp ; 5d ; 0xf4bf1
+ retn ; c3 ; 0xf4bf2
+ ; disGetNextSymbol 0xf4bf3 LB 0x6229 -> off=0x0 cb=0000000000000245 uValue=00000000000f35f3 'int19_function'
+int19_function: ; 0xf4bf3 LB 0x245
+ push bp ; 55 ; 0xf4bf3 boot.c:181
+ mov bp, sp ; 89 e5 ; 0xf4bf4
+ push si ; 56 ; 0xf4bf6
+ push di ; 57 ; 0xf4bf7
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf4bf8
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4bfb boot.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4bfe
+ mov es, ax ; 8e c0 ; 0xf4c01
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf4c03
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf4c06 boot.c:59
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4c09 boot.c:192
+ mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4c0d boot.c:215
+ call 0176ah ; e8 57 cb ; 0xf4c10
+ movzx dx, al ; 0f b6 d0 ; 0xf4c13
+ mov ax, strict word 00038h ; b8 38 00 ; 0xf4c16 boot.c:216
+ call 0176ah ; e8 4e cb ; 0xf4c19
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4c1c
+ xor ah, ah ; 30 e4 ; 0xf4c1e
+ sal ax, 004h ; c1 e0 04 ; 0xf4c20
+ or dx, ax ; 09 c2 ; 0xf4c23
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c25 boot.c:217
+ call 0176ah ; e8 3f cb ; 0xf4c28
+ and AL, strict byte 00fh ; 24 0f ; 0xf4c2b
+ xor ah, ah ; 30 e4 ; 0xf4c2d
+ sal ax, 00ch ; c1 e0 0c ; 0xf4c2f
+ or dx, ax ; 09 c2 ; 0xf4c32
+ mov di, 00331h ; bf 31 03 ; 0xf4c34 boot.c:48
+ mov es, bx ; 8e c3 ; 0xf4c37
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf4c39
+ test al, al ; 84 c0 ; 0xf4c3c boot.c:49
+ je short 04c43h ; 74 03 ; 0xf4c3e
+ movzx dx, al ; 0f b6 d0 ; 0xf4c40 boot.c:49
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4c43 boot.c:221
+ jne short 04c59h ; 75 10 ; 0xf4c47
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c49 boot.c:222
+ call 0176ah ; e8 1b cb ; 0xf4c4c
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4c4f
+ xor ah, ah ; 30 e4 ; 0xf4c51
+ sar ax, 004h ; c1 f8 04 ; 0xf4c53
+ call 07b25h ; e8 cc 2e ; 0xf4c56
+ cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4c59 boot.c:224
+ jne short 04c62h ; 75 03 ; 0xf4c5d
+ shr dx, 004h ; c1 ea 04 ; 0xf4c5f
+ cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4c62 boot.c:225
+ jne short 04c6bh ; 75 03 ; 0xf4c66
+ shr dx, 008h ; c1 ea 08 ; 0xf4c68
+ cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4c6b boot.c:226
+ jne short 04c74h ; 75 03 ; 0xf4c6f
+ shr dx, 00ch ; c1 ea 0c ; 0xf4c71
+ cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4c74 boot.c:227
+ jnc short 04c7dh ; 73 04 ; 0xf4c77
+ mov byte [bp-006h], 001h ; c6 46 fa 01 ; 0xf4c79
+ xor al, al ; 30 c0 ; 0xf4c7d boot.c:228
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4c7f
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4c82
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf4c85 boot.c:229
+ mov bx, 00e16h ; bb 16 0e ; 0xf4c88 boot.c:230
+ mov cx, ds ; 8c d9 ; 0xf4c8b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c8d
+ call 01a27h ; e8 94 cd ; 0xf4c90
+ push dx ; 52 ; 0xf4c93
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf4c94
+ push ax ; 50 ; 0xf4c98
+ push 005e5h ; 68 e5 05 ; 0xf4c99
+ push strict byte 00004h ; 6a 04 ; 0xf4c9c
+ call 01a68h ; e8 c7 cd ; 0xf4c9e
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4ca1
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4ca4 boot.c:232
+ cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4ca7
+ jc short 04cbah ; 72 0e ; 0xf4caa
+ jbe short 04cc9h ; 76 1b ; 0xf4cac
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4cae
+ je short 04ce6h ; 74 33 ; 0xf4cb1
+ cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4cb3
+ je short 04cdch ; 74 24 ; 0xf4cb6
+ jmp short 04d13h ; eb 59 ; 0xf4cb8
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4cba
+ jne short 04d13h ; 75 54 ; 0xf4cbd
+ xor al, al ; 30 c0 ; 0xf4cbf boot.c:234
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4cc1
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4cc4 boot.c:235
+ jmp short 04d29h ; eb 60 ; 0xf4cc7 boot.c:236
+ mov bx, 00330h ; bb 30 03 ; 0xf4cc9 boot.c:48
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4ccc
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4ccf
+ add AL, strict byte 080h ; 04 80 ; 0xf4cd2 boot.c:242
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4cd4
+ mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf4cd7 boot.c:243
+ jmp short 04d29h ; eb 4d ; 0xf4cda boot.c:244
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf4cdc boot.c:247
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4ce0 boot.c:248
+ jmp short 04cf0h ; eb 0a ; 0xf4ce4 boot.c:249
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4ce6 boot.c:250
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4cea boot.c:266
+ je short 04d29h ; 74 39 ; 0xf4cee
+ call 0406ah ; e8 77 f3 ; 0xf4cf0 boot.c:267
+ mov dx, ax ; 89 c2 ; 0xf4cf3
+ test AL, strict byte 0ffh ; a8 ff ; 0xf4cf5 boot.c:270
+ je short 04d1ah ; 74 21 ; 0xf4cf7
+ call 04bcch ; e8 d0 fe ; 0xf4cf9 boot.c:271
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4cfc boot.c:272
+ push ax ; 50 ; 0xf4d00
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4d01
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4d05
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4d09
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4d0d
+ call 04b0dh ; e8 fa fd ; 0xf4d10
+ xor ax, ax ; 31 c0 ; 0xf4d13
+ xor dx, dx ; 31 d2 ; 0xf4d15
+ jmp near 04e31h ; e9 17 01 ; 0xf4d17
+ mov bx, 00322h ; bb 22 03 ; 0xf4d1a boot.c:58
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4d1d
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf4d20
+ shr dx, 008h ; c1 ea 08 ; 0xf4d23 boot.c:277
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf4d26
+ cmp byte [bp-00ch], 001h ; 80 7e f4 01 ; 0xf4d29 boot.c:283
+ jne near 04da5h ; 0f 85 74 00 ; 0xf4d2d
+ xor si, si ; 31 f6 ; 0xf4d31 boot.c:286
+ mov ax, 0e200h ; b8 00 e2 ; 0xf4d33
+ mov es, ax ; 8e c0 ; 0xf4d36
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4d38 boot.c:287
+ jne short 04cfch ; 75 bd ; 0xf4d3d
+ mov di, ax ; 89 c7 ; 0xf4d3f boot.c:293
+ mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4d41
+ cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4d45 boot.c:294
+ jne short 04cfch ; 75 af ; 0xf4d4b
+ cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4d4d
+ jne short 04cfch ; 75 a8 ; 0xf4d52
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4d54 boot.c:296
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4d58
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf4d5b
+ cmp ax, 06568h ; 3d 68 65 ; 0xf4d5f boot.c:297
+ jne short 04d83h ; 75 1f ; 0xf4d62
+ cmp dx, 07445h ; 81 fa 45 74 ; 0xf4d64
+ jne short 04d83h ; 75 19 ; 0xf4d68
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4d6a boot.c:299
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4d6e
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4d72
+ call 04ac2h ; e8 49 fd ; 0xf4d76
+ mov word [bp-012h], strict word 00006h ; c7 46 ee 06 00 ; 0xf4d79 boot.c:300
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4d7e
+ jmp short 04d9fh ; eb 1c ; 0xf4d81 boot.c:303
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4d83 boot.c:306
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4d87
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4d8b
+ call 04ac2h ; e8 30 fd ; 0xf4d8f
+ sti ; fb ; 0xf4d92 boot.c:307
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4d93 boot.c:308
+ mov es, di ; 8e c7 ; 0xf4d96
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4d98
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf4d9c
+ call far [bp-012h] ; ff 5e ee ; 0xf4d9f boot.c:309
+ jmp near 04cfch ; e9 57 ff ; 0xf4da2 boot.c:312
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4da5 boot.c:320
+ jne short 04dd1h ; 75 26 ; 0xf4da9
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf4dab
+ jne short 04dd1h ; 75 20 ; 0xf4daf
+ mov si, 007c0h ; be c0 07 ; 0xf4db1 boot.c:321
+ mov es, si ; 8e c6 ; 0xf4db4 boot.c:323
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf4db6
+ mov ax, 00201h ; b8 01 02 ; 0xf4db9
+ mov DH, strict byte 000h ; b6 00 ; 0xf4dbc
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4dbe
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf4dc1
+ int 013h ; cd 13 ; 0xf4dc3
+ mov ax, strict word 00000h ; b8 00 00 ; 0xf4dc5
+ sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4dc8
+ test ax, ax ; 85 c0 ; 0xf4dcb boot.c:324
+ jne near 04cfch ; 0f 85 2b ff ; 0xf4dcd
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4dd1 boot.c:339
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf4dd5
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4dd8 boot.c:344
+ je short 04de0h ; 74 02 ; 0xf4ddc
+ mov AL, strict byte 001h ; b0 01 ; 0xf4dde boot.c:345
+ xor bx, bx ; 31 db ; 0xf4de0 boot.c:58
+ mov es, si ; 8e c6 ; 0xf4de2
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4de4
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4de7 boot.c:58
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf4dea
+ cmp dx, bx ; 39 da ; 0xf4ded boot.c:59
+ je short 04e00h ; 74 0f ; 0xf4def
+ test al, al ; 84 c0 ; 0xf4df1
+ jne short 04e16h ; 75 21 ; 0xf4df3
+ mov bx, 001feh ; bb fe 01 ; 0xf4df5 boot.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4df8
+ cmp ax, 0aa55h ; 3d 55 aa ; 0xf4dfb boot.c:59
+ je short 04e16h ; 74 16 ; 0xf4dfe
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4e00 boot.c:351
+ push ax ; 50 ; 0xf4e04
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e05
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4e09
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4e0d
+ xor cx, cx ; 31 c9 ; 0xf4e11
+ jmp near 04d10h ; e9 fa fe ; 0xf4e13
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e16 boot.c:357
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4e1a
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4e1e
+ call 04ac2h ; e8 9d fc ; 0xf4e22
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e25 boot.c:363
+ xor dx, dx ; 31 d2 ; 0xf4e29
+ xor ax, ax ; 31 c0 ; 0xf4e2b
+ add ax, si ; 01 f0 ; 0xf4e2d
+ adc dx, bx ; 11 da ; 0xf4e2f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4e31 boot.c:364
+ pop di ; 5f ; 0xf4e34
+ pop si ; 5e ; 0xf4e35
+ pop bp ; 5d ; 0xf4e36
+ retn ; c3 ; 0xf4e37
+ ; disGetNextSymbol 0xf4e38 LB 0x5fe4 -> off=0x0 cb=0000000000000013 uValue=00000000000f3838 'keyboard_panic'
+keyboard_panic: ; 0xf4e38 LB 0x13
+ push bp ; 55 ; 0xf4e38 keyboard.c:204
+ mov bp, sp ; 89 e5 ; 0xf4e39
+ push ax ; 50 ; 0xf4e3b keyboard.c:209
+ push 00604h ; 68 04 06 ; 0xf4e3c
+ push strict byte 00007h ; 6a 07 ; 0xf4e3f
+ call 01a68h ; e8 24 cc ; 0xf4e41
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4e44
+ mov sp, bp ; 89 ec ; 0xf4e47 keyboard.c:210
+ pop bp ; 5d ; 0xf4e49
+ retn ; c3 ; 0xf4e4a
+ ; disGetNextSymbol 0xf4e4b LB 0x5fd1 -> off=0x0 cb=000000000000026a uValue=00000000000f384b 'keyboard_init'
+keyboard_init: ; 0xf4e4b LB 0x26a
+ push bp ; 55 ; 0xf4e4b keyboard.c:218
+ mov bp, sp ; 89 e5 ; 0xf4e4c
+ mov AL, strict byte 0aah ; b0 aa ; 0xf4e4e keyboard.c:224
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e50
+ out DX, AL ; ee ; 0xf4e53
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e54 keyboard.c:227
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e57 keyboard.c:228
+ in AL, DX ; ec ; 0xf4e5a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e5b
+ test AL, strict byte 002h ; a8 02 ; 0xf4e5d
+ je short 04e6eh ; 74 0d ; 0xf4e5f
+ dec bx ; 4b ; 0xf4e61
+ test bx, bx ; 85 db ; 0xf4e62
+ jbe short 04e6eh ; 76 08 ; 0xf4e64
+ xor al, al ; 30 c0 ; 0xf4e66
+ mov dx, 00080h ; ba 80 00 ; 0xf4e68
+ out DX, AL ; ee ; 0xf4e6b
+ jmp short 04e57h ; eb e9 ; 0xf4e6c
+ test bx, bx ; 85 db ; 0xf4e6e keyboard.c:229
+ jne short 04e77h ; 75 05 ; 0xf4e70
+ xor ax, ax ; 31 c0 ; 0xf4e72
+ call 04e38h ; e8 c1 ff ; 0xf4e74
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e77 keyboard.c:232
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e7a keyboard.c:233
+ in AL, DX ; ec ; 0xf4e7d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e7e
+ test AL, strict byte 001h ; a8 01 ; 0xf4e80
+ jne short 04e91h ; 75 0d ; 0xf4e82
+ dec bx ; 4b ; 0xf4e84
+ test bx, bx ; 85 db ; 0xf4e85
+ jbe short 04e91h ; 76 08 ; 0xf4e87
+ mov AL, strict byte 001h ; b0 01 ; 0xf4e89
+ mov dx, 00080h ; ba 80 00 ; 0xf4e8b
+ out DX, AL ; ee ; 0xf4e8e
+ jmp short 04e7ah ; eb e9 ; 0xf4e8f
+ test bx, bx ; 85 db ; 0xf4e91 keyboard.c:234
+ jne short 04e9bh ; 75 06 ; 0xf4e93
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4e95
+ call 04e38h ; e8 9d ff ; 0xf4e98
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4e9b keyboard.c:237
+ in AL, DX ; ec ; 0xf4e9e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e9f
+ cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4ea1
+ je short 04each ; 74 06 ; 0xf4ea4
+ mov ax, 003dfh ; b8 df 03 ; 0xf4ea6 keyboard.c:238
+ call 04e38h ; e8 8c ff ; 0xf4ea9
+ mov AL, strict byte 0abh ; b0 ab ; 0xf4eac keyboard.c:242
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4eae
+ out DX, AL ; ee ; 0xf4eb1
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4eb2 keyboard.c:245
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4eb5 keyboard.c:246
+ in AL, DX ; ec ; 0xf4eb8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4eb9
+ test AL, strict byte 002h ; a8 02 ; 0xf4ebb
+ je short 04ecch ; 74 0d ; 0xf4ebd
+ dec bx ; 4b ; 0xf4ebf
+ test bx, bx ; 85 db ; 0xf4ec0
+ jbe short 04ecch ; 76 08 ; 0xf4ec2
+ mov AL, strict byte 010h ; b0 10 ; 0xf4ec4
+ mov dx, 00080h ; ba 80 00 ; 0xf4ec6
+ out DX, AL ; ee ; 0xf4ec9
+ jmp short 04eb5h ; eb e9 ; 0xf4eca
+ test bx, bx ; 85 db ; 0xf4ecc keyboard.c:247
+ jne short 04ed6h ; 75 06 ; 0xf4ece
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4ed0
+ call 04e38h ; e8 62 ff ; 0xf4ed3
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ed6 keyboard.c:250
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ed9 keyboard.c:251
+ in AL, DX ; ec ; 0xf4edc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4edd
+ test AL, strict byte 001h ; a8 01 ; 0xf4edf
+ jne short 04ef0h ; 75 0d ; 0xf4ee1
+ dec bx ; 4b ; 0xf4ee3
+ test bx, bx ; 85 db ; 0xf4ee4
+ jbe short 04ef0h ; 76 08 ; 0xf4ee6
+ mov AL, strict byte 011h ; b0 11 ; 0xf4ee8
+ mov dx, 00080h ; ba 80 00 ; 0xf4eea
+ out DX, AL ; ee ; 0xf4eed
+ jmp short 04ed9h ; eb e9 ; 0xf4eee
+ test bx, bx ; 85 db ; 0xf4ef0 keyboard.c:252
+ jne short 04efah ; 75 06 ; 0xf4ef2
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4ef4
+ call 04e38h ; e8 3e ff ; 0xf4ef7
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4efa keyboard.c:256
+ in AL, DX ; ec ; 0xf4efd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4efe
+ test ax, ax ; 85 c0 ; 0xf4f00
+ je short 04f0ah ; 74 06 ; 0xf4f02
+ mov ax, 003e0h ; b8 e0 03 ; 0xf4f04 keyboard.c:257
+ call 04e38h ; e8 2e ff ; 0xf4f07
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf4f0a keyboard.c:263
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f0c
+ out DX, AL ; ee ; 0xf4f0f
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f10 keyboard.c:266
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f13 keyboard.c:267
+ in AL, DX ; ec ; 0xf4f16
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f17
+ test AL, strict byte 002h ; a8 02 ; 0xf4f19
+ je short 04f2ah ; 74 0d ; 0xf4f1b
+ dec bx ; 4b ; 0xf4f1d
+ test bx, bx ; 85 db ; 0xf4f1e
+ jbe short 04f2ah ; 76 08 ; 0xf4f20
+ mov AL, strict byte 020h ; b0 20 ; 0xf4f22
+ mov dx, 00080h ; ba 80 00 ; 0xf4f24
+ out DX, AL ; ee ; 0xf4f27
+ jmp short 04f13h ; eb e9 ; 0xf4f28
+ test bx, bx ; 85 db ; 0xf4f2a keyboard.c:268
+ jne short 04f34h ; 75 06 ; 0xf4f2c
+ mov ax, strict word 00014h ; b8 14 00 ; 0xf4f2e
+ call 04e38h ; e8 04 ff ; 0xf4f31
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f34 keyboard.c:271
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f37 keyboard.c:272
+ in AL, DX ; ec ; 0xf4f3a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f3b
+ test AL, strict byte 001h ; a8 01 ; 0xf4f3d
+ jne short 04f4eh ; 75 0d ; 0xf4f3f
+ dec bx ; 4b ; 0xf4f41
+ test bx, bx ; 85 db ; 0xf4f42
+ jbe short 04f4eh ; 76 08 ; 0xf4f44
+ mov AL, strict byte 021h ; b0 21 ; 0xf4f46
+ mov dx, 00080h ; ba 80 00 ; 0xf4f48
+ out DX, AL ; ee ; 0xf4f4b
+ jmp short 04f37h ; eb e9 ; 0xf4f4c
+ test bx, bx ; 85 db ; 0xf4f4e keyboard.c:273
+ jne short 04f58h ; 75 06 ; 0xf4f50
+ mov ax, strict word 00015h ; b8 15 00 ; 0xf4f52
+ call 04e38h ; e8 e0 fe ; 0xf4f55
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f58 keyboard.c:276
+ in AL, DX ; ec ; 0xf4f5b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f5c
+ cmp ax, 000fah ; 3d fa 00 ; 0xf4f5e
+ je short 04f69h ; 74 06 ; 0xf4f61
+ mov ax, 003e1h ; b8 e1 03 ; 0xf4f63 keyboard.c:277
+ call 04e38h ; e8 cf fe ; 0xf4f66
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f69 keyboard.c:281
+ in AL, DX ; ec ; 0xf4f6c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f6d
+ test AL, strict byte 001h ; a8 01 ; 0xf4f6f
+ jne short 04f7bh ; 75 08 ; 0xf4f71
+ mov AL, strict byte 031h ; b0 31 ; 0xf4f73
+ mov dx, 00080h ; ba 80 00 ; 0xf4f75
+ out DX, AL ; ee ; 0xf4f78
+ jmp short 04f69h ; eb ee ; 0xf4f79
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f7b keyboard.c:283
+ in AL, DX ; ec ; 0xf4f7e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f7f
+ cmp ax, 000aah ; 3d aa 00 ; 0xf4f81
+ je short 04f94h ; 74 0e ; 0xf4f84
+ in AL, DX ; ec ; 0xf4f86
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f87
+ cmp ax, 000aah ; 3d aa 00 ; 0xf4f89
+ je short 04f94h ; 74 06 ; 0xf4f8c
+ mov ax, 003e2h ; b8 e2 03 ; 0xf4f8e keyboard.c:284
+ call 04e38h ; e8 a4 fe ; 0xf4f91
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf4f94 keyboard.c:288
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f96
+ out DX, AL ; ee ; 0xf4f99
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f9a keyboard.c:291
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f9d keyboard.c:292
+ in AL, DX ; ec ; 0xf4fa0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fa1
+ test AL, strict byte 002h ; a8 02 ; 0xf4fa3
+ je short 04fb4h ; 74 0d ; 0xf4fa5
+ dec bx ; 4b ; 0xf4fa7
+ test bx, bx ; 85 db ; 0xf4fa8
+ jbe short 04fb4h ; 76 08 ; 0xf4faa
+ mov AL, strict byte 040h ; b0 40 ; 0xf4fac
+ mov dx, 00080h ; ba 80 00 ; 0xf4fae
+ out DX, AL ; ee ; 0xf4fb1
+ jmp short 04f9dh ; eb e9 ; 0xf4fb2
+ test bx, bx ; 85 db ; 0xf4fb4 keyboard.c:293
+ jne short 04fbeh ; 75 06 ; 0xf4fb6
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf4fb8
+ call 04e38h ; e8 7a fe ; 0xf4fbb
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fbe keyboard.c:296
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fc1 keyboard.c:297
+ in AL, DX ; ec ; 0xf4fc4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fc5
+ test AL, strict byte 001h ; a8 01 ; 0xf4fc7
+ jne short 04fd8h ; 75 0d ; 0xf4fc9
+ dec bx ; 4b ; 0xf4fcb
+ test bx, bx ; 85 db ; 0xf4fcc
+ jbe short 04fd8h ; 76 08 ; 0xf4fce
+ mov AL, strict byte 041h ; b0 41 ; 0xf4fd0
+ mov dx, 00080h ; ba 80 00 ; 0xf4fd2
+ out DX, AL ; ee ; 0xf4fd5
+ jmp short 04fc1h ; eb e9 ; 0xf4fd6
+ test bx, bx ; 85 db ; 0xf4fd8 keyboard.c:298
+ jne short 04fe2h ; 75 06 ; 0xf4fda
+ mov ax, strict word 00029h ; b8 29 00 ; 0xf4fdc
+ call 04e38h ; e8 56 fe ; 0xf4fdf
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4fe2 keyboard.c:301
+ in AL, DX ; ec ; 0xf4fe5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fe6
+ cmp ax, 000fah ; 3d fa 00 ; 0xf4fe8
+ je short 04ff3h ; 74 06 ; 0xf4feb
+ mov ax, 003e3h ; b8 e3 03 ; 0xf4fed keyboard.c:302
+ call 04e38h ; e8 45 fe ; 0xf4ff0
+ mov AL, strict byte 060h ; b0 60 ; 0xf4ff3 keyboard.c:306
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ff5
+ out DX, AL ; ee ; 0xf4ff8
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ff9 keyboard.c:309
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ffc keyboard.c:310
+ in AL, DX ; ec ; 0xf4fff
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5000
+ test AL, strict byte 002h ; a8 02 ; 0xf5002
+ je short 05013h ; 74 0d ; 0xf5004
+ dec bx ; 4b ; 0xf5006
+ test bx, bx ; 85 db ; 0xf5007
+ jbe short 05013h ; 76 08 ; 0xf5009
+ mov AL, strict byte 050h ; b0 50 ; 0xf500b
+ mov dx, 00080h ; ba 80 00 ; 0xf500d
+ out DX, AL ; ee ; 0xf5010
+ jmp short 04ffch ; eb e9 ; 0xf5011
+ test bx, bx ; 85 db ; 0xf5013 keyboard.c:311
+ jne short 0501dh ; 75 06 ; 0xf5015
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf5017
+ call 04e38h ; e8 1b fe ; 0xf501a
+ mov AL, strict byte 065h ; b0 65 ; 0xf501d keyboard.c:314
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf501f
+ out DX, AL ; ee ; 0xf5022
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5023 keyboard.c:317
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5026 keyboard.c:318
+ in AL, DX ; ec ; 0xf5029
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf502a
+ test AL, strict byte 002h ; a8 02 ; 0xf502c
+ je short 0503dh ; 74 0d ; 0xf502e
+ dec bx ; 4b ; 0xf5030
+ test bx, bx ; 85 db ; 0xf5031
+ jbe short 0503dh ; 76 08 ; 0xf5033
+ mov AL, strict byte 060h ; b0 60 ; 0xf5035
+ mov dx, 00080h ; ba 80 00 ; 0xf5037
+ out DX, AL ; ee ; 0xf503a
+ jmp short 05026h ; eb e9 ; 0xf503b
+ test bx, bx ; 85 db ; 0xf503d keyboard.c:319
+ jne short 05047h ; 75 06 ; 0xf503f
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf5041
+ call 04e38h ; e8 f1 fd ; 0xf5044
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf5047 keyboard.c:322
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5049
+ out DX, AL ; ee ; 0xf504c
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf504d keyboard.c:325
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5050 keyboard.c:326
+ in AL, DX ; ec ; 0xf5053
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5054
+ test AL, strict byte 002h ; a8 02 ; 0xf5056
+ je short 05067h ; 74 0d ; 0xf5058
+ dec bx ; 4b ; 0xf505a
+ test bx, bx ; 85 db ; 0xf505b
+ jbe short 05067h ; 76 08 ; 0xf505d
+ mov AL, strict byte 070h ; b0 70 ; 0xf505f
+ mov dx, 00080h ; ba 80 00 ; 0xf5061
+ out DX, AL ; ee ; 0xf5064
+ jmp short 05050h ; eb e9 ; 0xf5065
+ test bx, bx ; 85 db ; 0xf5067 keyboard.c:327
+ jne short 05071h ; 75 06 ; 0xf5069
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf506b
+ call 04e38h ; e8 c7 fd ; 0xf506e
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5071 keyboard.c:330
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5074 keyboard.c:331
+ in AL, DX ; ec ; 0xf5077
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5078
+ test AL, strict byte 001h ; a8 01 ; 0xf507a
+ jne short 0508bh ; 75 0d ; 0xf507c
+ dec bx ; 4b ; 0xf507e
+ test bx, bx ; 85 db ; 0xf507f
+ jbe short 0508bh ; 76 08 ; 0xf5081
+ mov AL, strict byte 071h ; b0 71 ; 0xf5083
+ mov dx, 00080h ; ba 80 00 ; 0xf5085
+ out DX, AL ; ee ; 0xf5088
+ jmp short 05074h ; eb e9 ; 0xf5089
+ test bx, bx ; 85 db ; 0xf508b keyboard.c:332
+ jne short 05095h ; 75 06 ; 0xf508d
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf508f
+ call 04e38h ; e8 a3 fd ; 0xf5092
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5095 keyboard.c:335
+ in AL, DX ; ec ; 0xf5098
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5099
+ cmp ax, 000fah ; 3d fa 00 ; 0xf509b
+ je short 050a6h ; 74 06 ; 0xf509e
+ mov ax, 003e4h ; b8 e4 03 ; 0xf50a0 keyboard.c:336
+ call 04e38h ; e8 92 fd ; 0xf50a3
+ mov AL, strict byte 0a8h ; b0 a8 ; 0xf50a6 keyboard.c:340
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50a8
+ out DX, AL ; ee ; 0xf50ab
+ xor ax, ax ; 31 c0 ; 0xf50ac keyboard.c:345
+ call 06490h ; e8 df 13 ; 0xf50ae
+ mov sp, bp ; 89 ec ; 0xf50b1 keyboard.c:346
+ pop bp ; 5d ; 0xf50b3
+ retn ; c3 ; 0xf50b4
+ ; disGetNextSymbol 0xf50b5 LB 0x5d67 -> off=0x0 cb=0000000000000053 uValue=00000000000f3ab5 'enqueue_key'
+enqueue_key: ; 0xf50b5 LB 0x53
+ push bx ; 53 ; 0xf50b5 keyboard.c:349
+ push cx ; 51 ; 0xf50b6
+ push si ; 56 ; 0xf50b7
+ push di ; 57 ; 0xf50b8
+ push bp ; 55 ; 0xf50b9
+ mov bp, sp ; 89 e5 ; 0xf50ba
+ mov dh, al ; 88 c6 ; 0xf50bc
+ mov bx, 00080h ; bb 80 00 ; 0xf50be keyboard.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf50c1
+ mov es, ax ; 8e c0 ; 0xf50c4
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf50c6
+ mov bx, 00082h ; bb 82 00 ; 0xf50c9 keyboard.c:58
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf50cc
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf50cf keyboard.c:58
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf50d2
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf50d5 keyboard.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf50d8
+ mov bx, ax ; 89 c3 ; 0xf50db keyboard.c:364
+ inc ax ; 40 ; 0xf50dd keyboard.c:365
+ inc ax ; 40 ; 0xf50de
+ cmp ax, si ; 39 f0 ; 0xf50df keyboard.c:366
+ jc short 050e5h ; 72 02 ; 0xf50e1
+ mov ax, di ; 89 f8 ; 0xf50e3 keyboard.c:367
+ cmp ax, cx ; 39 c8 ; 0xf50e5 keyboard.c:369
+ jne short 050edh ; 75 04 ; 0xf50e7
+ xor ax, cx ; 31 c8 ; 0xf50e9 keyboard.c:370
+ jmp short 05102h ; eb 15 ; 0xf50eb
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf50ed keyboard.c:53
+ mov es, cx ; 8e c1 ; 0xf50f0
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf50f2
+ inc bx ; 43 ; 0xf50f5 keyboard.c:373
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf50f6 keyboard.c:53
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf50f9 keyboard.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf50fc
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf50ff keyboard.c:375
+ pop bp ; 5d ; 0xf5102 keyboard.c:376
+ pop di ; 5f ; 0xf5103
+ pop si ; 5e ; 0xf5104
+ pop cx ; 59 ; 0xf5105
+ pop bx ; 5b ; 0xf5106
+ retn ; c3 ; 0xf5107
+ ; disGetNextSymbol 0xf5108 LB 0x5d14 -> off=0x35 cb=00000000000003cd uValue=00000000000f3b3d 'int09_function'
+ db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
+ db 01dh, 0c9h, 053h, 019h, 052h, 0c2h, 051h, 0c2h, 051h, 07eh, 052h, 09dh, 051h, 0d1h, 052h, 02ch
+ db 053h, 0aeh, 053h, 091h, 053h, 049h, 052h, 0c2h, 051h, 0c2h, 051h, 0aah, 052h, 0b4h, 051h, 014h
+ db 053h, 079h, 053h, 0a9h, 053h
+int09_function: ; 0xf513d LB 0x3cd
+ push bp ; 55 ; 0xf513d keyboard.c:381
+ mov bp, sp ; 89 e5 ; 0xf513e
+ push si ; 56 ; 0xf5140
+ push di ; 57 ; 0xf5141
+ push ax ; 50 ; 0xf5142
+ push ax ; 50 ; 0xf5143
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5144 keyboard.c:392
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf5147
+ test al, al ; 84 c0 ; 0xf514a keyboard.c:394
+ jne short 05167h ; 75 19 ; 0xf514c
+ mov bx, 00e16h ; bb 16 0e ; 0xf514e keyboard.c:395
+ mov cx, ds ; 8c d9 ; 0xf5151
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5153
+ call 01a27h ; e8 ce c8 ; 0xf5156
+ push 00617h ; 68 17 06 ; 0xf5159
+ push strict byte 00004h ; 6a 04 ; 0xf515c
+ call 01a68h ; e8 07 c9 ; 0xf515e
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5161
+ jmp near 05212h ; e9 ab 00 ; 0xf5164 keyboard.c:396
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5167 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf516a
+ mov es, ax ; 8e c0 ; 0xf516d
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf516f
+ mov dl, bl ; 88 da ; 0xf5172 keyboard.c:49
+ mov si, 00096h ; be 96 00 ; 0xf5174 keyboard.c:48
+ mov bh, byte [es:si] ; 26 8a 3c ; 0xf5177
+ mov byte [bp-008h], bh ; 88 7e f8 ; 0xf517a keyboard.c:49
+ mov si, strict word 00017h ; be 17 00 ; 0xf517d keyboard.c:48
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf5180
+ mov dh, ah ; 88 e6 ; 0xf5183 keyboard.c:49
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5185 keyboard.c:404
+ push CS ; 0e ; 0xf5188
+ pop ES ; 07 ; 0xf5189
+ mov cx, strict word 00012h ; b9 12 00 ; 0xf518a
+ mov di, 05108h ; bf 08 51 ; 0xf518d
+ repne scasb ; f2 ae ; 0xf5190
+ sal cx, 1 ; d1 e1 ; 0xf5192
+ mov di, cx ; 89 cf ; 0xf5194
+ mov si, word [cs:di+05119h] ; 2e 8b b5 19 51 ; 0xf5196
+ jmp si ; ff e6 ; 0xf519b
+ xor dh, 040h ; 80 f6 40 ; 0xf519d keyboard.c:406
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf51a0 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51a3
+ mov es, ax ; 8e c0 ; 0xf51a6
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf51a8
+ or dl, 040h ; 80 ca 40 ; 0xf51ab keyboard.c:408
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf51ae keyboard.c:53
+ jmp near 053a3h ; e9 ef 01 ; 0xf51b1
+ and dl, 0bfh ; 80 e2 bf ; 0xf51b4 keyboard.c:412
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf51b7 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51ba
+ mov es, ax ; 8e c0 ; 0xf51bd
+ jmp near 053a3h ; e9 e1 01 ; 0xf51bf
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf51c2 keyboard.c:421
+ jne near 051f3h ; 0f 85 29 00 ; 0xf51c6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf51ca keyboard.c:422
+ and AL, strict byte 07fh ; 24 7f ; 0xf51cd
+ cmp AL, strict byte 02ah ; 3c 2a ; 0xf51cf
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf51d1
+ movzx bx, al ; 0f b6 d8 ; 0xf51d4
+ inc bx ; 43 ; 0xf51d7
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf51d8 keyboard.c:423
+ je short 051e6h ; 74 08 ; 0xf51dc
+ mov al, bl ; 88 d8 ; 0xf51de keyboard.c:424
+ not al ; f6 d0 ; 0xf51e0
+ and dh, al ; 20 c6 ; 0xf51e2
+ jmp short 051e8h ; eb 02 ; 0xf51e4 keyboard.c:425
+ or dh, bl ; 08 de ; 0xf51e6 keyboard.c:426
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf51e8 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51eb
+ mov es, ax ; 8e c0 ; 0xf51ee
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf51f0
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf51f3 keyboard.c:429
+ and AL, strict byte 07fh ; 24 7f ; 0xf51f6
+ cmp AL, strict byte 01dh ; 3c 1d ; 0xf51f8
+ je short 05200h ; 74 04 ; 0xf51fa
+ and byte [bp-008h], 0feh ; 80 66 f8 fe ; 0xf51fc
+ and byte [bp-008h], 0fdh ; 80 66 f8 fd ; 0xf5200
+ mov bx, 00096h ; bb 96 00 ; 0xf5204
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5207
+ mov es, ax ; 8e c0 ; 0xf520a
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf520c
+ mov byte [es:bx], al ; 26 88 07 ; 0xf520f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf5212
+ pop di ; 5f ; 0xf5215
+ pop si ; 5e ; 0xf5216
+ pop bp ; 5d ; 0xf5217
+ retn ; c3 ; 0xf5218
+ test bh, 001h ; f6 c7 01 ; 0xf5219 keyboard.c:432
+ jne short 051f3h ; 75 d5 ; 0xf521c
+ or dh, 004h ; 80 ce 04 ; 0xf521e keyboard.c:433
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5221 keyboard.c:51
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5224
+ mov es, ax ; 8e c0 ; 0xf5227 keyboard.c:53
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5229
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf522c keyboard.c:435
+ je short 0523eh ; 74 0c ; 0xf5230
+ or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xf5232 keyboard.c:436
+ mov bx, 00096h ; bb 96 00 ; 0xf5236 keyboard.c:51
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5239
+ jmp short 05244h ; eb 06 ; 0xf523c keyboard.c:438
+ or dl, 001h ; 80 ca 01 ; 0xf523e keyboard.c:439
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5241 keyboard.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5244 keyboard.c:53
+ jmp short 051f3h ; eb aa ; 0xf5247 keyboard.c:443
+ test bh, 001h ; f6 c7 01 ; 0xf5249 keyboard.c:445
+ jne short 051f3h ; 75 a5 ; 0xf524c
+ and dh, 0fbh ; 80 e6 fb ; 0xf524e keyboard.c:446
+ mov si, strict word 00017h ; be 17 00 ; 0xf5251 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5254
+ mov es, ax ; 8e c0 ; 0xf5257
+ mov byte [es:si], dh ; 26 88 34 ; 0xf5259
+ test bh, 002h ; f6 c7 02 ; 0xf525c keyboard.c:448
+ je short 05272h ; 74 11 ; 0xf525f
+ and bh, 0fbh ; 80 e7 fb ; 0xf5261 keyboard.c:449
+ mov byte [bp-008h], bh ; 88 7e f8 ; 0xf5264
+ mov bx, 00096h ; bb 96 00 ; 0xf5267 keyboard.c:53
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf526a
+ mov byte [es:bx], al ; 26 88 07 ; 0xf526d
+ jmp short 051f3h ; eb 81 ; 0xf5270 keyboard.c:451
+ and dl, 0feh ; 80 e2 fe ; 0xf5272 keyboard.c:452
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5275 keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5278
+ jmp near 051f3h ; e9 75 ff ; 0xf527b keyboard.c:456
+ or dh, 008h ; 80 ce 08 ; 0xf527e keyboard.c:459
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5281 keyboard.c:51
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5284
+ mov es, ax ; 8e c0 ; 0xf5287 keyboard.c:53
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5289
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf528c keyboard.c:461
+ je short 0529eh ; 74 0c ; 0xf5290
+ or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xf5292 keyboard.c:462
+ mov bx, 00096h ; bb 96 00 ; 0xf5296 keyboard.c:51
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5299
+ jmp short 052a4h ; eb 06 ; 0xf529c keyboard.c:464
+ or dl, 002h ; 80 ca 02 ; 0xf529e keyboard.c:465
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52a1 keyboard.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52a4 keyboard.c:53
+ jmp near 051f3h ; e9 49 ff ; 0xf52a7 keyboard.c:468
+ and dh, 0f7h ; 80 e6 f7 ; 0xf52aa keyboard.c:470
+ mov si, strict word 00017h ; be 17 00 ; 0xf52ad keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52b0
+ mov es, ax ; 8e c0 ; 0xf52b3
+ mov byte [es:si], dh ; 26 88 34 ; 0xf52b5
+ test bh, 002h ; f6 c7 02 ; 0xf52b8 keyboard.c:472
+ je short 052c5h ; 74 08 ; 0xf52bb
+ and bh, 0f7h ; 80 e7 f7 ; 0xf52bd keyboard.c:473
+ mov byte [bp-008h], bh ; 88 7e f8 ; 0xf52c0
+ jmp short 05267h ; eb a2 ; 0xf52c3 keyboard.c:474
+ and dl, 0fdh ; 80 e2 fd ; 0xf52c5 keyboard.c:476
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52c8 keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52cb
+ jmp near 051f3h ; e9 22 ff ; 0xf52ce keyboard.c:479
+ test bh, 003h ; f6 c7 03 ; 0xf52d1 keyboard.c:482
+ jne short 052eah ; 75 14 ; 0xf52d4
+ or dl, 020h ; 80 ca 20 ; 0xf52d6 keyboard.c:484
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52d9 keyboard.c:51
+ mov es, ax ; 8e c0 ; 0xf52dc
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52de
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52e1 keyboard.c:53
+ xor dh, 020h ; 80 f6 20 ; 0xf52e4 keyboard.c:486
+ jmp near 05370h ; e9 86 00 ; 0xf52e7 keyboard.c:487
+ or dl, 008h ; 80 ca 08 ; 0xf52ea keyboard.c:490
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52ed keyboard.c:51
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52f0
+ mov es, ax ; 8e c0 ; 0xf52f3 keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52f5
+ mov ax, 000aeh ; b8 ae 00 ; 0xf52f8 keyboard.c:494
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf52fb
+ out DX, AL ; ee ; 0xf52fe
+ call 0e034h ; e8 32 8d ; 0xf52ff keyboard.c:495
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5302 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5305
+ mov es, ax ; 8e c0 ; 0xf5308
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf530a
+ test AL, strict byte 008h ; a8 08 ; 0xf530d keyboard.c:49
+ jne short 05302h ; 75 f1 ; 0xf530f
+ jmp near 051f3h ; e9 df fe ; 0xf5311 keyboard.c:502
+ test bh, 003h ; f6 c7 03 ; 0xf5314 keyboard.c:504
+ jne near 051f3h ; 0f 85 d8 fe ; 0xf5317
+ and dl, 0dfh ; 80 e2 df ; 0xf531b keyboard.c:505
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf531e keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5321
+ mov es, ax ; 8e c0 ; 0xf5324
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5326
+ jmp near 051f3h ; e9 c7 fe ; 0xf5329 keyboard.c:508
+ test bh, 002h ; f6 c7 02 ; 0xf532c keyboard.c:511
+ je short 0535fh ; 74 2e ; 0xf532f
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5331 keyboard.c:56
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5334
+ mov es, ax ; 8e c0 ; 0xf5337 keyboard.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5339
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf533c keyboard.c:61
+ mov word [es:bx], ax ; 26 89 07 ; 0xf533f keyboard.c:63
+ mov bx, strict word 00071h ; bb 71 00 ; 0xf5342 keyboard.c:51
+ mov DL, strict byte 080h ; b2 80 ; 0xf5345
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5347 keyboard.c:53
+ mov ax, 000aeh ; b8 ae 00 ; 0xf534a keyboard.c:516
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf534d
+ out DX, AL ; ee ; 0xf5350
+ push bp ; 55 ; 0xf5351 keyboard.c:517
+ int 01bh ; cd 1b ; 0xf5352
+ pop bp ; 5d ; 0xf5354
+ xor dx, dx ; 31 d2 ; 0xf5355 keyboard.c:518
+ xor ax, ax ; 31 c0 ; 0xf5357
+ call 050b5h ; e8 59 fd ; 0xf5359
+ jmp near 051f3h ; e9 94 fe ; 0xf535c keyboard.c:519
+ or dl, 010h ; 80 ca 10 ; 0xf535f keyboard.c:520
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5362 keyboard.c:51
+ mov es, ax ; 8e c0 ; 0xf5365
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5367
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf536a keyboard.c:53
+ xor dh, 010h ; 80 f6 10 ; 0xf536d keyboard.c:522
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5370 keyboard.c:51
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5373 keyboard.c:53
+ jmp near 051f3h ; e9 7a fe ; 0xf5376 keyboard.c:525
+ test bh, 002h ; f6 c7 02 ; 0xf5379 keyboard.c:528
+ jne near 051f3h ; 0f 85 73 fe ; 0xf537c
+ and dl, 0efh ; 80 e2 ef ; 0xf5380 keyboard.c:529
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5383 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5386
+ mov es, ax ; 8e c0 ; 0xf5389
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf538b
+ jmp near 051f3h ; e9 62 fe ; 0xf538e keyboard.c:532
+ test bl, 004h ; f6 c3 04 ; 0xf5391 keyboard.c:535
+ jne near 051f3h ; 0f 85 5b fe ; 0xf5394
+ or dl, 004h ; 80 ca 04 ; 0xf5398 keyboard.c:536
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf539b keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf539e
+ mov es, ax ; 8e c0 ; 0xf53a1
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53a3
+ jmp near 051f3h ; e9 4a fe ; 0xf53a6 keyboard.c:540
+ and dl, 0fbh ; 80 e2 fb ; 0xf53a9 keyboard.c:543
+ jmp short 0539bh ; eb ed ; 0xf53ac keyboard.c:544
+ mov al, ah ; 88 e0 ; 0xf53ae keyboard.c:549
+ and AL, strict byte 00ch ; 24 0c ; 0xf53b0
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf53b2
+ jne short 053c9h ; 75 13 ; 0xf53b4
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53b6 keyboard.c:61
+ mov es, ax ; 8e c0 ; 0xf53b9
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf53bb
+ mov ax, 01234h ; b8 34 12 ; 0xf53be
+ mov word [es:bx], ax ; 26 89 07 ; 0xf53c1 keyboard.c:63
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf53c4 keyboard.c:552
+ test dl, 008h ; f6 c2 08 ; 0xf53c9 keyboard.c:558
+ je short 053dfh ; 74 11 ; 0xf53cc
+ and dl, 0f7h ; 80 e2 f7 ; 0xf53ce keyboard.c:560
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53d1 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53d4
+ mov es, ax ; 8e c0 ; 0xf53d7
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53d9
+ jmp near 05212h ; e9 33 fe ; 0xf53dc keyboard.c:562
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf53df keyboard.c:565
+ test AL, strict byte 080h ; a8 80 ; 0xf53e2
+ je short 05414h ; 74 2e ; 0xf53e4
+ cmp AL, strict byte 0fah ; 3c fa ; 0xf53e6 keyboard.c:567
+ jne short 053fah ; 75 10 ; 0xf53e8
+ mov bx, 00097h ; bb 97 00 ; 0xf53ea keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53ed
+ mov es, ax ; 8e c0 ; 0xf53f0
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf53f2
+ or ah, 010h ; 80 cc 10 ; 0xf53f5 keyboard.c:49
+ jmp short 0540eh ; eb 14 ; 0xf53f8 keyboard.c:570
+ cmp AL, strict byte 0feh ; 3c fe ; 0xf53fa
+ jne near 051f3h ; 0f 85 f3 fd ; 0xf53fc
+ mov bx, 00097h ; bb 97 00 ; 0xf5400 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5403
+ mov es, ax ; 8e c0 ; 0xf5406
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5408
+ or ah, 020h ; 80 cc 20 ; 0xf540b keyboard.c:49
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf540e keyboard.c:53
+ jmp near 051f3h ; e9 df fd ; 0xf5411 keyboard.c:574
+ cmp byte [bp-006h], 058h ; 80 7e fa 58 ; 0xf5414 keyboard.c:576
+ jbe short 05438h ; 76 1e ; 0xf5418
+ mov bx, 00e16h ; bb 16 0e ; 0xf541a keyboard.c:577
+ mov cx, ds ; 8c d9 ; 0xf541d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf541f
+ call 01a27h ; e8 02 c6 ; 0xf5422
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf5425
+ push ax ; 50 ; 0xf5429
+ push 00631h ; 68 31 06 ; 0xf542a
+ push strict byte 00004h ; 6a 04 ; 0xf542d
+ call 01a68h ; e8 36 c6 ; 0xf542f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf5432
+ jmp near 05212h ; e9 da fd ; 0xf5435 keyboard.c:578
+ test dh, 008h ; f6 c6 08 ; 0xf5438 keyboard.c:580
+ je short 0544fh ; 74 12 ; 0xf543b
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf543d keyboard.c:581
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5441
+ mov dl, byte [bx+00e6ah] ; 8a 97 6a 0e ; 0xf5444
+ mov ax, word [bx+00e6ah] ; 8b 87 6a 0e ; 0xf5448 keyboard.c:582
+ jmp near 054dbh ; e9 8c 00 ; 0xf544c keyboard.c:583
+ test dh, 004h ; f6 c6 04 ; 0xf544f
+ je short 05466h ; 74 12 ; 0xf5452
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf5454 keyboard.c:584
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5458
+ mov dl, byte [bx+00e68h] ; 8a 97 68 0e ; 0xf545b
+ mov ax, word [bx+00e68h] ; 8b 87 68 0e ; 0xf545f keyboard.c:585
+ jmp near 054dbh ; e9 75 00 ; 0xf5463 keyboard.c:586
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5466
+ and AL, strict byte 002h ; 24 02 ; 0xf5469
+ test al, al ; 84 c0 ; 0xf546b
+ jbe short 05484h ; 76 15 ; 0xf546d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf546f
+ cmp AL, strict byte 047h ; 3c 47 ; 0xf5472
+ jc short 05484h ; 72 0e ; 0xf5474
+ cmp AL, strict byte 053h ; 3c 53 ; 0xf5476
+ jnbe short 05484h ; 77 0a ; 0xf5478
+ mov DL, strict byte 0e0h ; b2 e0 ; 0xf547a keyboard.c:588
+ movzx bx, al ; 0f b6 d8 ; 0xf547c keyboard.c:589
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf547f
+ jmp short 054d7h ; eb 53 ; 0xf5482 keyboard.c:590
+ test dh, 003h ; f6 c6 03 ; 0xf5484
+ je short 054b6h ; 74 2d ; 0xf5487
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf5489 keyboard.c:594
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf548d
+ movzx ax, byte [bx+00e6ch] ; 0f b6 87 6c 0e ; 0xf5490
+ movzx dx, dh ; 0f b6 d6 ; 0xf5495
+ test dx, ax ; 85 c2 ; 0xf5498
+ je short 054a6h ; 74 0a ; 0xf549a
+ mov dl, byte [bx+00e64h] ; 8a 97 64 0e ; 0xf549c keyboard.c:595
+ mov ax, word [bx+00e64h] ; 8b 87 64 0e ; 0xf54a0 keyboard.c:596
+ jmp short 054aeh ; eb 08 ; 0xf54a4 keyboard.c:597
+ mov dl, byte [bx+00e66h] ; 8a 97 66 0e ; 0xf54a6 keyboard.c:598
+ mov ax, word [bx+00e66h] ; 8b 87 66 0e ; 0xf54aa keyboard.c:599
+ shr ax, 008h ; c1 e8 08 ; 0xf54ae
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf54b1
+ jmp short 054e1h ; eb 2b ; 0xf54b4 keyboard.c:601
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf54b6 keyboard.c:603
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf54ba
+ movzx si, byte [bx+00e6ch] ; 0f b6 b7 6c 0e ; 0xf54bd
+ movzx ax, dh ; 0f b6 c6 ; 0xf54c2
+ test ax, si ; 85 f0 ; 0xf54c5
+ je short 054d3h ; 74 0a ; 0xf54c7
+ mov dl, byte [bx+00e66h] ; 8a 97 66 0e ; 0xf54c9 keyboard.c:604
+ mov ax, word [bx+00e66h] ; 8b 87 66 0e ; 0xf54cd keyboard.c:605
+ jmp short 054dbh ; eb 08 ; 0xf54d1 keyboard.c:606
+ mov dl, byte [bx+00e64h] ; 8a 97 64 0e ; 0xf54d3 keyboard.c:607
+ mov ax, word [bx+00e64h] ; 8b 87 64 0e ; 0xf54d7 keyboard.c:608
+ shr ax, 008h ; c1 e8 08 ; 0xf54db
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf54de
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf54e1 keyboard.c:611
+ jne short 05501h ; 75 1a ; 0xf54e5
+ test dl, dl ; 84 d2 ; 0xf54e7
+ jne short 05501h ; 75 16 ; 0xf54e9
+ mov bx, 00e16h ; bb 16 0e ; 0xf54eb keyboard.c:612
+ mov cx, ds ; 8c d9 ; 0xf54ee
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf54f0
+ call 01a27h ; e8 31 c5 ; 0xf54f3
+ push 00668h ; 68 68 06 ; 0xf54f6
+ push strict byte 00004h ; 6a 04 ; 0xf54f9
+ call 01a68h ; e8 6a c5 ; 0xf54fb
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf54fe
+ xor dh, dh ; 30 f6 ; 0xf5501 keyboard.c:614
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf5503
+ jmp near 05359h ; e9 4f fe ; 0xf5507
+ ; disGetNextSymbol 0xf550a LB 0x5912 -> off=0x0 cb=000000000000006c uValue=00000000000f3f0a 'dequeue_key'
+dequeue_key: ; 0xf550a LB 0x6c
+ push si ; 56 ; 0xf550a keyboard.c:624
+ push di ; 57 ; 0xf550b
+ enter 00002h, 000h ; c8 02 00 00 ; 0xf550c
+ push ax ; 50 ; 0xf5510
+ push dx ; 52 ; 0xf5511
+ mov si, bx ; 89 de ; 0xf5512
+ mov bx, 00080h ; bb 80 00 ; 0xf5514 keyboard.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5517
+ mov es, ax ; 8e c0 ; 0xf551a
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf551c
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf551f
+ mov bx, 00082h ; bb 82 00 ; 0xf5522 keyboard.c:58
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf5525
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5528 keyboard.c:58
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf552b
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf552e keyboard.c:58
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf5531
+ cmp bx, ax ; 39 c3 ; 0xf5534 keyboard.c:640
+ je short 0556eh ; 74 36 ; 0xf5536
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5538 keyboard.c:48
+ lea di, [bx+001h] ; 8d 7f 01 ; 0xf553b keyboard.c:642
+ mov ah, byte [es:di] ; 26 8a 25 ; 0xf553e keyboard.c:48
+ mov es, cx ; 8e c1 ; 0xf5541 keyboard.c:643
+ mov byte [es:si], al ; 26 88 04 ; 0xf5543
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5546 keyboard.c:644
+ mov si, word [bp-004h] ; 8b 76 fc ; 0xf5549
+ mov byte [es:si], ah ; 26 88 24 ; 0xf554c
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf554f keyboard.c:647
+ je short 05569h ; 74 14 ; 0xf5553
+ inc bx ; 43 ; 0xf5555 keyboard.c:648
+ inc bx ; 43 ; 0xf5556
+ cmp bx, dx ; 39 d3 ; 0xf5557 keyboard.c:649
+ jc short 0555eh ; 72 03 ; 0xf5559
+ mov bx, word [bp-002h] ; 8b 5e fe ; 0xf555b keyboard.c:650
+ mov si, strict word 0001ah ; be 1a 00 ; 0xf555e keyboard.c:63
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5561
+ mov es, ax ; 8e c0 ; 0xf5564
+ mov word [es:si], bx ; 26 89 1c ; 0xf5566
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5569 keyboard.c:653
+ jmp short 05570h ; eb 02 ; 0xf556c
+ xor ax, ax ; 31 c0 ; 0xf556e keyboard.c:656
+ leave ; c9 ; 0xf5570 keyboard.c:658
+ pop di ; 5f ; 0xf5571
+ pop si ; 5e ; 0xf5572
+ retn 00002h ; c2 02 00 ; 0xf5573
+ ; disGetNextSymbol 0xf5576 LB 0x58a6 -> off=0x23 cb=00000000000002e7 uValue=00000000000f3f99 'int16_function'
+ db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 036h, 058h, 04eh, 056h, 095h
+ db 056h, 0e2h, 056h, 0f4h, 056h, 01eh, 057h, 027h, 057h, 098h, 057h, 0c9h, 057h, 0f7h, 057h, 02bh
+ db 058h, 079h, 058h
+int16_function: ; 0xf5599 LB 0x2e7
+ push bp ; 55 ; 0xf5599 keyboard.c:675
+ mov bp, sp ; 89 e5 ; 0xf559a
+ push si ; 56 ; 0xf559c
+ push di ; 57 ; 0xf559d
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf559e
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf55a1 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf55a4
+ mov es, ax ; 8e c0 ; 0xf55a7
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf55a9
+ mov bl, al ; 88 c3 ; 0xf55ac keyboard.c:49
+ mov si, 00097h ; be 97 00 ; 0xf55ae keyboard.c:48
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf55b1
+ mov bh, ah ; 88 e7 ; 0xf55b4 keyboard.c:49
+ movzx dx, al ; 0f b6 d0 ; 0xf55b6 keyboard.c:684
+ sar dx, 004h ; c1 fa 04 ; 0xf55b9
+ and dl, 007h ; 80 e2 07 ; 0xf55bc
+ mov al, ah ; 88 e0 ; 0xf55bf
+ and AL, strict byte 007h ; 24 07 ; 0xf55c1
+ xor ah, ah ; 30 e4 ; 0xf55c3
+ xor al, dl ; 30 d0 ; 0xf55c5
+ test ax, ax ; 85 c0 ; 0xf55c7
+ je short 0562ch ; 74 61 ; 0xf55c9
+ cli ; fa ; 0xf55cb keyboard.c:685
+ mov AL, strict byte 0edh ; b0 ed ; 0xf55cc keyboard.c:686
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf55ce
+ out DX, AL ; ee ; 0xf55d1
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf55d2 keyboard.c:687
+ in AL, DX ; ec ; 0xf55d5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf55d6
+ test AL, strict byte 001h ; a8 01 ; 0xf55d8
+ jne short 055e4h ; 75 08 ; 0xf55da
+ mov AL, strict byte 021h ; b0 21 ; 0xf55dc
+ mov dx, 00080h ; ba 80 00 ; 0xf55de
+ out DX, AL ; ee ; 0xf55e1
+ jmp short 055d2h ; eb ee ; 0xf55e2
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf55e4 keyboard.c:688
+ in AL, DX ; ec ; 0xf55e7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf55e8
+ cmp ax, 000fah ; 3d fa 00 ; 0xf55ea
+ jne short 0562bh ; 75 3c ; 0xf55ed
+ and bh, 0c8h ; 80 e7 c8 ; 0xf55ef keyboard.c:689
+ movzx dx, bl ; 0f b6 d3 ; 0xf55f2 keyboard.c:690
+ sar dx, 004h ; c1 fa 04 ; 0xf55f5
+ and dx, strict byte 00007h ; 83 e2 07 ; 0xf55f8
+ movzx ax, bh ; 0f b6 c7 ; 0xf55fb
+ or ax, dx ; 09 d0 ; 0xf55fe
+ mov bh, al ; 88 c7 ; 0xf5600
+ and AL, strict byte 007h ; 24 07 ; 0xf5602 keyboard.c:691
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5604
+ out DX, AL ; ee ; 0xf5607
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5608 keyboard.c:692
+ in AL, DX ; ec ; 0xf560b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf560c
+ test AL, strict byte 001h ; a8 01 ; 0xf560e
+ jne short 0561ah ; 75 08 ; 0xf5610
+ mov AL, strict byte 021h ; b0 21 ; 0xf5612 keyboard.c:693
+ mov dx, 00080h ; ba 80 00 ; 0xf5614
+ out DX, AL ; ee ; 0xf5617
+ jmp short 05608h ; eb ee ; 0xf5618
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf561a keyboard.c:694
+ in AL, DX ; ec ; 0xf561d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf561e
+ mov si, 00097h ; be 97 00 ; 0xf5620 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5623
+ mov es, ax ; 8e c0 ; 0xf5626
+ mov byte [es:si], bh ; 26 88 3c ; 0xf5628
+ sti ; fb ; 0xf562b keyboard.c:697
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf562c keyboard.c:700
+ shr ax, 008h ; c1 e8 08 ; 0xf562f
+ cmp ax, 000a2h ; 3d a2 00 ; 0xf5632
+ jnbe near 05836h ; 0f 87 fd 01 ; 0xf5635
+ push CS ; 0e ; 0xf5639
+ pop ES ; 07 ; 0xf563a
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf563b
+ mov di, 05576h ; bf 76 55 ; 0xf563e
+ repne scasb ; f2 ae ; 0xf5641
+ sal cx, 1 ; d1 e1 ; 0xf5643
+ mov di, cx ; 89 cf ; 0xf5645
+ mov ax, word [cs:di+05581h] ; 2e 8b 85 81 55 ; 0xf5647
+ jmp ax ; ff e0 ; 0xf564c
+ push strict byte 00001h ; 6a 01 ; 0xf564e keyboard.c:702
+ mov cx, ss ; 8c d1 ; 0xf5650
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf5652
+ mov dx, ss ; 8c d2 ; 0xf5655
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf5657
+ call 0550ah ; e8 ad fe ; 0xf565a
+ test ax, ax ; 85 c0 ; 0xf565d
+ jne short 0566ch ; 75 0b ; 0xf565f
+ push 0069fh ; 68 9f 06 ; 0xf5661 keyboard.c:703
+ push strict byte 00007h ; 6a 07 ; 0xf5664
+ call 01a68h ; e8 ff c3 ; 0xf5666
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5669
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf566c keyboard.c:705
+ je short 05678h ; 74 06 ; 0xf5670
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf5672
+ je short 0567eh ; 74 06 ; 0xf5676
+ cmp byte [bp-00ah], 0e0h ; 80 7e f6 e0 ; 0xf5678 keyboard.c:707
+ jne short 05682h ; 75 04 ; 0xf567c
+ mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf567e keyboard.c:708
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf5682 keyboard.c:709
+ sal dx, 008h ; c1 e2 08 ; 0xf5686
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf5689
+ or dx, ax ; 09 c2 ; 0xf568d
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf568f
+ jmp near 05879h ; e9 e4 01 ; 0xf5692 keyboard.c:710
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf5695 keyboard.c:714
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf5698
+ push strict byte 00000h ; 6a 00 ; 0xf569b keyboard.c:715
+ mov cx, ss ; 8c d1 ; 0xf569d
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf569f
+ mov dx, ss ; 8c d2 ; 0xf56a2
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf56a4
+ call 0550ah ; e8 60 fe ; 0xf56a7
+ test ax, ax ; 85 c0 ; 0xf56aa
+ jne short 056b5h ; 75 07 ; 0xf56ac
+ or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf56ae keyboard.c:716
+ jmp near 05879h ; e9 c4 01 ; 0xf56b2 keyboard.c:717
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf56b5 keyboard.c:719
+ je short 056c1h ; 74 06 ; 0xf56b9
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf56bb
+ je short 056c7h ; 74 06 ; 0xf56bf
+ cmp byte [bp-00ah], 0e0h ; 80 7e f6 e0 ; 0xf56c1 keyboard.c:721
+ jne short 056cbh ; 75 04 ; 0xf56c5
+ mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf56c7 keyboard.c:722
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf56cb keyboard.c:723
+ sal dx, 008h ; c1 e2 08 ; 0xf56cf
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf56d2
+ or dx, ax ; 09 c2 ; 0xf56d6
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf56d8
+ and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf56db keyboard.c:724
+ jmp near 05879h ; e9 97 01 ; 0xf56df keyboard.c:725
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf56e2 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf56e5
+ mov es, ax ; 8e c0 ; 0xf56e8
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf56ea
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf56ed keyboard.c:729
+ mov dl, al ; 88 c2 ; 0xf56f0
+ jmp short 0568fh ; eb 9b ; 0xf56f2
+ mov al, byte [bp+010h] ; 8a 46 10 ; 0xf56f4 keyboard.c:733
+ movzx dx, al ; 0f b6 d0 ; 0xf56f7
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf56fa
+ shr ax, 008h ; c1 e8 08 ; 0xf56fd
+ xor ah, ah ; 30 e4 ; 0xf5700
+ call 050b5h ; e8 b0 f9 ; 0xf5702
+ test ax, ax ; 85 c0 ; 0xf5705
+ jne short 05716h ; 75 0d ; 0xf5707
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5709 keyboard.c:734
+ xor al, al ; 30 c0 ; 0xf570c
+ or AL, strict byte 001h ; 0c 01 ; 0xf570e
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf5710
+ jmp near 05879h ; e9 63 01 ; 0xf5713 keyboard.c:736
+ and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf5716 keyboard.c:737
+ jmp near 05879h ; e9 5b 01 ; 0xf571b keyboard.c:739
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf571e keyboard.c:752
+ xor al, al ; 30 c0 ; 0xf5721
+ or AL, strict byte 030h ; 0c 30 ; 0xf5723
+ jmp short 05710h ; eb e9 ; 0xf5725
+ mov byte [bp-008h], 002h ; c6 46 f8 02 ; 0xf5727 keyboard.c:756
+ xor cx, cx ; 31 c9 ; 0xf572b keyboard.c:757
+ cli ; fa ; 0xf572d keyboard.c:759
+ mov AL, strict byte 0f2h ; b0 f2 ; 0xf572e keyboard.c:760
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5730
+ out DX, AL ; ee ; 0xf5733
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5734 keyboard.c:762
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5737 keyboard.c:763
+ in AL, DX ; ec ; 0xf573a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf573b
+ test AL, strict byte 001h ; a8 01 ; 0xf573d
+ jne short 0574eh ; 75 0d ; 0xf573f
+ dec bx ; 4b ; 0xf5741
+ test bx, bx ; 85 db ; 0xf5742
+ jbe short 0574eh ; 76 08 ; 0xf5744
+ mov dx, 00080h ; ba 80 00 ; 0xf5746 keyboard.c:764
+ in AL, DX ; ec ; 0xf5749
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf574a
+ jmp short 05737h ; eb e9 ; 0xf574c
+ test bx, bx ; 85 db ; 0xf574e keyboard.c:765
+ jbe short 05792h ; 76 40 ; 0xf5750
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5752 keyboard.c:766
+ in AL, DX ; ec ; 0xf5755
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5756
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5758
+ jne short 05792h ; 75 35 ; 0xf575b
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf575d keyboard.c:768
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5760 keyboard.c:769
+ in AL, DX ; ec ; 0xf5763
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5764
+ test AL, strict byte 001h ; a8 01 ; 0xf5766
+ jne short 05777h ; 75 0d ; 0xf5768
+ dec bx ; 4b ; 0xf576a
+ test bx, bx ; 85 db ; 0xf576b
+ jbe short 05777h ; 76 08 ; 0xf576d
+ mov dx, 00080h ; ba 80 00 ; 0xf576f keyboard.c:770
+ in AL, DX ; ec ; 0xf5772
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5773
+ jmp short 05760h ; eb e9 ; 0xf5775
+ test bx, bx ; 85 db ; 0xf5777 keyboard.c:771
+ jbe short 05789h ; 76 0e ; 0xf5779
+ shr cx, 008h ; c1 e9 08 ; 0xf577b keyboard.c:772
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf577e keyboard.c:773
+ in AL, DX ; ec ; 0xf5781
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5782
+ sal ax, 008h ; c1 e0 08 ; 0xf5784
+ or cx, ax ; 09 c1 ; 0xf5787
+ dec byte [bp-008h] ; fe 4e f8 ; 0xf5789 keyboard.c:775
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf578c
+ jnbe short 0575dh ; 77 cb ; 0xf5790
+ mov word [bp+00ch], cx ; 89 4e 0c ; 0xf5792 keyboard.c:778
+ jmp near 05879h ; e9 e1 00 ; 0xf5795 keyboard.c:779
+ push strict byte 00001h ; 6a 01 ; 0xf5798 keyboard.c:782
+ mov cx, ss ; 8c d1 ; 0xf579a
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf579c
+ mov dx, ss ; 8c d2 ; 0xf579f
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf57a1
+ call 0550ah ; e8 63 fd ; 0xf57a4
+ test ax, ax ; 85 c0 ; 0xf57a7
+ jne short 057b6h ; 75 0b ; 0xf57a9
+ push 0069fh ; 68 9f 06 ; 0xf57ab keyboard.c:783
+ push strict byte 00007h ; 6a 07 ; 0xf57ae
+ call 01a68h ; e8 b5 c2 ; 0xf57b0
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf57b3
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf57b6 keyboard.c:785
+ je near 05682h ; 0f 84 c4 fe ; 0xf57ba
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf57be
+ je near 0567eh ; 0f 84 b8 fe ; 0xf57c2
+ jmp near 05682h ; e9 b9 fe ; 0xf57c6
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf57c9 keyboard.c:792
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf57cc
+ push strict byte 00000h ; 6a 00 ; 0xf57cf keyboard.c:793
+ mov cx, ss ; 8c d1 ; 0xf57d1
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf57d3
+ mov dx, ss ; 8c d2 ; 0xf57d6
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf57d8
+ call 0550ah ; e8 2c fd ; 0xf57db
+ test ax, ax ; 85 c0 ; 0xf57de
+ je near 056aeh ; 0f 84 ca fe ; 0xf57e0
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf57e4 keyboard.c:797
+ je near 056cbh ; 0f 84 df fe ; 0xf57e8
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf57ec
+ je near 056c7h ; 0f 84 d3 fe ; 0xf57f0
+ jmp near 056cbh ; e9 d4 fe ; 0xf57f4
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf57f7 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf57fa
+ mov es, ax ; 8e c0 ; 0xf57fd
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf57ff
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5802 keyboard.c:805
+ mov dl, al ; 88 c2 ; 0xf5805
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5807
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf580a keyboard.c:48
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf580d
+ and bl, 073h ; 80 e3 73 ; 0xf5810 keyboard.c:49
+ mov si, 00096h ; be 96 00 ; 0xf5813 keyboard.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5816
+ and AL, strict byte 00ch ; 24 0c ; 0xf5819 keyboard.c:49
+ or bl, al ; 08 c3 ; 0xf581b
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf581d keyboard.c:808
+ xor dh, dh ; 30 f6 ; 0xf5820
+ movzx ax, bl ; 0f b6 c3 ; 0xf5822
+ sal ax, 008h ; c1 e0 08 ; 0xf5825
+ jmp near 0568dh ; e9 62 fe ; 0xf5828
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf582b keyboard.c:813
+ xor ah, ah ; 30 e4 ; 0xf582e
+ or ah, 080h ; 80 cc 80 ; 0xf5830
+ jmp near 05710h ; e9 da fe ; 0xf5833
+ mov bx, 00e16h ; bb 16 0e ; 0xf5836 keyboard.c:828
+ mov cx, ds ; 8c d9 ; 0xf5839
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf583b
+ call 01a27h ; e8 e6 c1 ; 0xf583e
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5841
+ shr ax, 008h ; c1 e8 08 ; 0xf5844
+ push ax ; 50 ; 0xf5847
+ push 006c3h ; 68 c3 06 ; 0xf5848
+ push strict byte 00004h ; 6a 04 ; 0xf584b
+ call 01a68h ; e8 18 c2 ; 0xf584d
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf5850
+ mov bx, 00e16h ; bb 16 0e ; 0xf5853 keyboard.c:829
+ mov cx, ds ; 8c d9 ; 0xf5856
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5858
+ call 01a27h ; e8 c9 c1 ; 0xf585b
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf585e
+ push ax ; 50 ; 0xf5861
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5862
+ push ax ; 50 ; 0xf5865
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf5866
+ push ax ; 50 ; 0xf5869
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf586a
+ push ax ; 50 ; 0xf586d
+ push 006ebh ; 68 eb 06 ; 0xf586e
+ push strict byte 00004h ; 6a 04 ; 0xf5871
+ call 01a68h ; e8 f2 c1 ; 0xf5873
+ add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5876
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf5879 keyboard.c:832
+ pop di ; 5f ; 0xf587c
+ pop si ; 5e ; 0xf587d
+ pop bp ; 5d ; 0xf587e
+ retn ; c3 ; 0xf587f
+ ; disGetNextSymbol 0xf5880 LB 0x559c -> off=0x0 cb=00000000000000b3 uValue=00000000000f4280 'set_geom_lba'
+set_geom_lba: ; 0xf5880 LB 0xb3
+ push bx ; 53 ; 0xf5880 disk.c:125
+ push cx ; 51 ; 0xf5881
+ push si ; 56 ; 0xf5882
+ push di ; 57 ; 0xf5883
+ enter 00008h, 000h ; c8 08 00 00 ; 0xf5884
+ mov di, ax ; 89 c7 ; 0xf5888
+ mov es, dx ; 8e c2 ; 0xf588a
+ mov dword [bp-008h], strict dword 0007e0000h ; 66 c7 46 f8 00 00 7e 00 ; 0xf588c disk.c:127
+ mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf5894 disk.c:129
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5899 disk.c:132
+ mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf589c
+ mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf589f
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf58a2
+ mov si, strict word 00020h ; be 20 00 ; 0xf58a5
+ call 0ad60h ; e8 b5 54 ; 0xf58a8
+ test ax, ax ; 85 c0 ; 0xf58ab
+ jne short 058bbh ; 75 0c ; 0xf58ad
+ test bx, bx ; 85 db ; 0xf58af
+ jne short 058bbh ; 75 08 ; 0xf58b1
+ test cx, cx ; 85 c9 ; 0xf58b3
+ jne short 058bbh ; 75 04 ; 0xf58b5
+ test dx, dx ; 85 d2 ; 0xf58b7
+ je short 058c2h ; 74 07 ; 0xf58b9
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf58bb
+ mov si, bx ; 89 de ; 0xf58be
+ jmp short 058c8h ; eb 06 ; 0xf58c0
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf58c2
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf58c5
+ mov word [bp-004h], bx ; 89 5e fc ; 0xf58c8
+ xor bx, bx ; 31 db ; 0xf58cb disk.c:134
+ jmp short 058d4h ; eb 05 ; 0xf58cd
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf58cf
+ jnl short 058f7h ; 7d 23 ; 0xf58d2
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf58d4 disk.c:135
+ cmp si, ax ; 39 c6 ; 0xf58d7
+ jc short 058e5h ; 72 0a ; 0xf58d9
+ jne short 058eeh ; 75 11 ; 0xf58db
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf58dd
+ cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf58e0
+ jnbe short 058eeh ; 77 09 ; 0xf58e3
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf58e5 disk.c:136
+ inc ax ; 40 ; 0xf58e8
+ shr ax, 1 ; d1 e8 ; 0xf58e9
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf58eb
+ shr word [bp-006h], 1 ; d1 6e fa ; 0xf58ee disk.c:137
+ rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf58f1
+ inc bx ; 43 ; 0xf58f4 disk.c:138
+ jmp short 058cfh ; eb d8 ; 0xf58f5
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf58f7 disk.c:140
+ xor dx, dx ; 31 d2 ; 0xf58fa
+ mov bx, strict word 0003fh ; bb 3f 00 ; 0xf58fc
+ xor cx, cx ; 31 c9 ; 0xf58ff
+ call 0ace0h ; e8 dc 53 ; 0xf5901
+ mov bx, ax ; 89 c3 ; 0xf5904
+ mov cx, dx ; 89 d1 ; 0xf5906
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5908
+ mov dx, si ; 89 f2 ; 0xf590b
+ call 0ad20h ; e8 10 54 ; 0xf590d
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5910
+ cmp ax, 00400h ; 3d 00 04 ; 0xf5914 disk.c:141
+ jbe short 0591fh ; 76 06 ; 0xf5917
+ mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf5919 disk.c:142
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf591f disk.c:143
+ mov word [es:di], ax ; 26 89 05 ; 0xf5922
+ mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5925 disk.c:144
+ leave ; c9 ; 0xf592b disk.c:145
+ pop di ; 5f ; 0xf592c
+ pop si ; 5e ; 0xf592d
+ pop cx ; 59 ; 0xf592e
+ pop bx ; 5b ; 0xf592f
+ retn 00008h ; c2 08 00 ; 0xf5930
+ ; disGetNextSymbol 0xf5933 LB 0x54e9 -> off=0x0 cb=00000000000002ed uValue=00000000000f4333 'edd_fill_dpt'
+edd_fill_dpt: ; 0xf5933 LB 0x2ed
+ push si ; 56 ; 0xf5933 disk.c:147
+ push di ; 57 ; 0xf5934
+ enter 0000eh, 000h ; c8 0e 00 00 ; 0xf5935
+ mov di, ax ; 89 c7 ; 0xf5939
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf593b
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf593e
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf5941
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5944 disk.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5947
+ mov es, ax ; 8e c0 ; 0xf594a
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf594c
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf594f disk.c:59
+ mov es, dx ; 8e c2 ; 0xf5952 disk.c:152
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf5954
+ cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5957
+ jnc short 05962h ; 73 06 ; 0xf595a
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf595c disk.c:153
+ jmp near 05c1ah ; e9 b8 02 ; 0xf595f
+ jc near 05a34h ; 0f 82 ce 00 ; 0xf5962 disk.c:156
+ mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf5966 disk.c:159
+ movzx bx, byte [bp+008h] ; 0f b6 5e 08 ; 0xf596b disk.c:160
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf596f
+ mov dx, cx ; 89 ca ; 0xf5972
+ add bx, word [bp-00eh] ; 03 5e f2 ; 0xf5974
+ mov es, cx ; 8e c1 ; 0xf5977
+ mov ax, word [es:bx+024h] ; 26 8b 47 24 ; 0xf5979
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf597d
+ mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf5980
+ mov es, cx ; 8e c1 ; 0xf5984 disk.c:162
+ cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf5986
+ jne short 059c5h ; 75 38 ; 0xf598b
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf598d disk.c:163
+ 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; 0xf5990
+ 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; 0xf5999 disk.c:164
+ 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; 0xf59a2 disk.c:165
+ 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; 0xf59ab disk.c:166
+ 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; 0xf59b4 disk.c:167
+ mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf59bd disk.c:168
+ jmp short 05a34h ; eb 6f ; 0xf59c3 disk.c:169
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59c5 disk.c:170
+ mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf59c8
+ mov es, cx ; 8e c1 ; 0xf59ce disk.c:171
+ mov ax, word [es:bx+02eh] ; 26 8b 47 2e ; 0xf59d0
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59d4
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf59d7
+ mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf59db
+ mov es, cx ; 8e c1 ; 0xf59e1 disk.c:172
+ mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf59e3
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59e7
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf59ea
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf59ee
+ mov es, cx ; 8e c1 ; 0xf59f4 disk.c:173
+ mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf59f6
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59fa
+ mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf59fd
+ mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5a01
+ mov es, cx ; 8e c1 ; 0xf5a07 disk.c:174
+ mov ax, word [es:bx+038h] ; 26 8b 47 38 ; 0xf5a09
+ mov si, word [es:bx+036h] ; 26 8b 77 36 ; 0xf5a0d
+ mov cx, word [es:bx+034h] ; 26 8b 4f 34 ; 0xf5a11
+ mov dx, word [es:bx+032h] ; 26 8b 57 32 ; 0xf5a15
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a19 disk.c:175
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5a1c
+ mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5a20
+ mov bx, si ; 89 f3 ; 0xf5a24 disk.c:176
+ mov si, strict word 00020h ; be 20 00 ; 0xf5a26
+ call 0ad60h ; e8 34 53 ; 0xf5a29
+ mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5a2c
+ mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5a30
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a34 disk.c:181
+ cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5a37
+ jc near 05b5dh ; 0f 82 1e 01 ; 0xf5a3b
+ mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5a3f disk.c:185
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5a44 disk.c:186
+ mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5a47
+ mov word [es:di+01ah], 00306h ; 26 c7 45 1a 06 03 ; 0xf5a4b disk.c:187
+ movzx cx, byte [bp+008h] ; 0f b6 4e 08 ; 0xf5a51 disk.c:190
+ mov ax, cx ; 89 c8 ; 0xf5a55
+ cwd ; 99 ; 0xf5a57
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5a58
+ sar ax, 1 ; d1 f8 ; 0xf5a5a
+ xor ah, ah ; 30 e4 ; 0xf5a5c disk.c:191
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5a5e
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5a61
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5a64
+ add bx, ax ; 01 c3 ; 0xf5a67
+ mov ax, word [es:bx+0027ah] ; 26 8b 87 7a 02 ; 0xf5a69
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5a6e
+ mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf5a71 disk.c:192
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5a76
+ mov al, byte [es:bx+00279h] ; 26 8a 87 79 02 ; 0xf5a79 disk.c:193
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf5a7e
+ imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf5a81 disk.c:194
+ add bx, word [bp-00eh] ; 03 5e f2 ; 0xf5a84
+ mov ah, byte [es:bx+022h] ; 26 8a 67 22 ; 0xf5a87
+ mov al, byte [es:bx+023h] ; 26 8a 47 23 ; 0xf5a8b disk.c:195
+ test al, al ; 84 c0 ; 0xf5a8f disk.c:197
+ jne short 05a97h ; 75 04 ; 0xf5a91
+ xor bx, bx ; 31 db ; 0xf5a93
+ jmp short 05a9ah ; eb 03 ; 0xf5a95
+ mov bx, strict word 00008h ; bb 08 00 ; 0xf5a97
+ or bl, 010h ; 80 cb 10 ; 0xf5a9a disk.c:198
+ movzx dx, byte [bp+008h] ; 0f b6 56 08 ; 0xf5a9d disk.c:199
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5aa1
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5aa4
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf5aa7
+ add si, dx ; 01 d6 ; 0xf5aaa
+ cmp byte [es:si+01fh], 005h ; 26 80 7c 1f 05 ; 0xf5aac
+ jne short 05ab6h ; 75 03 ; 0xf5ab1
+ or bl, 060h ; 80 cb 60 ; 0xf5ab3 disk.c:200
+ cmp ah, 001h ; 80 fc 01 ; 0xf5ab6 disk.c:204
+ db 00fh, 094h, 0c4h
+ ; sete ah ; 0f 94 c4 ; 0xf5ab9
+ movzx dx, ah ; 0f b6 d4 ; 0xf5abc
+ or bx, dx ; 09 d3 ; 0xf5abf
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf5ac1 disk.c:206
+ db 00fh, 094h, 0c4h
+ ; sete ah ; 0f 94 c4 ; 0xf5ac3
+ movzx dx, ah ; 0f b6 d4 ; 0xf5ac6
+ or bx, dx ; 09 d3 ; 0xf5ac9
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf5acb disk.c:207
+ jne short 05ad4h ; 75 05 ; 0xf5acd
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf5acf
+ jmp short 05ad6h ; eb 02 ; 0xf5ad2
+ xor ax, ax ; 31 c0 ; 0xf5ad4
+ or bx, ax ; 09 c3 ; 0xf5ad6
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5ad8 disk.c:209
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5adb
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf5ade
+ mov word [es:si+002a8h], ax ; 26 89 84 a8 02 ; 0xf5ae1
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5ae6 disk.c:210
+ mov word [es:si+002aah], ax ; 26 89 84 aa 02 ; 0xf5ae9
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf5aee disk.c:211
+ cwd ; 99 ; 0xf5af2
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf5af3
+ idiv cx ; f7 f9 ; 0xf5af6
+ or dl, 00eh ; 80 ca 0e ; 0xf5af8
+ sal dx, 004h ; c1 e2 04 ; 0xf5afb
+ mov byte [es:si+002ach], dl ; 26 88 94 ac 02 ; 0xf5afe
+ mov byte [es:si+002adh], 0cbh ; 26 c6 84 ad 02 cb ; 0xf5b03 disk.c:212
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5b09 disk.c:213
+ mov byte [es:si+002aeh], al ; 26 88 84 ae 02 ; 0xf5b0c
+ mov word [es:si+002afh], strict word 00001h ; 26 c7 84 af 02 01 00 ; 0xf5b11 disk.c:214
+ mov byte [es:si+002b1h], 000h ; 26 c6 84 b1 02 00 ; 0xf5b18 disk.c:216
+ mov word [es:si+002b2h], bx ; 26 89 9c b2 02 ; 0xf5b1e disk.c:217
+ mov bx, si ; 89 f3 ; 0xf5b23 disk.c:218
+ mov word [es:bx+002b4h], strict word 00000h ; 26 c7 87 b4 02 00 00 ; 0xf5b25
+ mov byte [es:bx+002b6h], 011h ; 26 c6 87 b6 02 11 ; 0xf5b2c disk.c:219
+ xor al, al ; 30 c0 ; 0xf5b32 disk.c:221
+ xor ah, ah ; 30 e4 ; 0xf5b34 disk.c:222
+ jmp short 05b3dh ; eb 05 ; 0xf5b36
+ cmp ah, 00fh ; 80 fc 0f ; 0xf5b38
+ jnc short 05b50h ; 73 13 ; 0xf5b3b
+ movzx bx, ah ; 0f b6 dc ; 0xf5b3d disk.c:223
+ add bx, 00306h ; 81 c3 06 03 ; 0xf5b40
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf5b44 disk.c:48
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5b47
+ add al, dl ; 00 d0 ; 0xf5b4a disk.c:49
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf5b4c disk.c:223
+ jmp short 05b38h ; eb e8 ; 0xf5b4e
+ neg al ; f6 d8 ; 0xf5b50 disk.c:224
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5b52 disk.c:225
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5b55
+ mov byte [es:bx+002b7h], al ; 26 88 87 b7 02 ; 0xf5b58
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b5d disk.c:229
+ cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5b60
+ jc near 05c18h ; 0f 82 b0 00 ; 0xf5b64
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf5b68 disk.c:233
+ cwd ; 99 ; 0xf5b6c
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5b6d
+ sar ax, 1 ; d1 f8 ; 0xf5b6f
+ xor ah, ah ; 30 e4 ; 0xf5b71 disk.c:234
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5b73
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5b76
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5b79
+ add bx, ax ; 01 c3 ; 0xf5b7c
+ mov al, byte [es:bx+00278h] ; 26 8a 87 78 02 ; 0xf5b7e
+ mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf5b83 disk.c:235
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b88 disk.c:237
+ mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5b8b
+ 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; 0xf5b90 disk.c:238
+ mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5b99 disk.c:241
+ test al, al ; 84 c0 ; 0xf5b9f disk.c:243
+ jne short 05bach ; 75 09 ; 0xf5ba1
+ 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; 0xf5ba3 disk.c:244
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5bac disk.c:252
+ 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; 0xf5baf
+ 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; 0xf5bb8 disk.c:256
+ test al, al ; 84 c0 ; 0xf5bc1 disk.c:261
+ jne short 05bd8h ; 75 13 ; 0xf5bc3
+ mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5bc5 disk.c:262
+ 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; 0xf5bc9 disk.c:263
+ mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5bd2 disk.c:264
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5bd8 disk.c:269
+ and AL, strict byte 001h ; 24 01 ; 0xf5bdb
+ xor ah, ah ; 30 e4 ; 0xf5bdd
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5bdf
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5be2
+ 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; 0xf5be6 disk.c:270
+ mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5bef disk.c:271
+ xor al, al ; 30 c0 ; 0xf5bf5 disk.c:273
+ mov AH, strict byte 01eh ; b4 1e ; 0xf5bf7 disk.c:274
+ jmp short 05c00h ; eb 05 ; 0xf5bf9
+ cmp ah, 040h ; 80 fc 40 ; 0xf5bfb
+ jnc short 05c0fh ; 73 0f ; 0xf5bfe
+ movzx bx, ah ; 0f b6 dc ; 0xf5c00 disk.c:275
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c03
+ add bx, di ; 01 fb ; 0xf5c06
+ add al, byte [es:bx] ; 26 02 07 ; 0xf5c08
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf5c0b
+ jmp short 05bfbh ; eb ec ; 0xf5c0d
+ neg al ; f6 d8 ; 0xf5c0f disk.c:276
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c11 disk.c:277
+ mov byte [es:di+041h], al ; 26 88 45 41 ; 0xf5c14
+ xor ax, ax ; 31 c0 ; 0xf5c18 disk.c:279
+ leave ; c9 ; 0xf5c1a disk.c:280
+ pop di ; 5f ; 0xf5c1b
+ pop si ; 5e ; 0xf5c1c
+ retn 00002h ; c2 02 00 ; 0xf5c1d
+ ; disGetNextSymbol 0xf5c20 LB 0x51fc -> off=0x32 cb=000000000000042f uValue=00000000000f4652 'int13_harddisk'
+ db 0e8h, 05ch, 00fh, 05dh, 036h, 05dh, 036h, 05dh, 036h, 05dh, 01bh, 05fh, 043h, 060h, 043h, 060h
+ db 034h, 05fh, 020h, 060h, 043h, 060h, 043h, 060h, 020h, 060h, 020h, 060h, 043h, 060h, 043h, 060h
+ db 0a1h, 05fh, 020h, 060h, 043h, 060h, 043h, 060h, 020h, 060h, 0d9h, 05fh, 043h, 060h, 043h, 060h
+ db 043h, 060h
+int13_harddisk: ; 0xf5c52 LB 0x42f
+ push bp ; 55 ; 0xf5c52 disk.c:282
+ mov bp, sp ; 89 e5 ; 0xf5c53
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf5c55
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5c58 disk.c:293
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5c5c disk.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf5c5f
+ mov es, dx ; 8e c2 ; 0xf5c62
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf5c64
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf5c67 disk.c:59
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5c6a
+ mov bx, 0008eh ; bb 8e 00 ; 0xf5c6d disk.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5c70
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5c74 disk.c:299
+ xor dh, dh ; 30 f6 ; 0xf5c77
+ cmp dx, 00080h ; 81 fa 80 00 ; 0xf5c79
+ jc short 05c85h ; 72 06 ; 0xf5c7d
+ cmp dx, 00094h ; 81 fa 94 00 ; 0xf5c7f
+ jc short 05ca3h ; 72 1e ; 0xf5c83
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5c85 disk.c:300
+ xor ah, ah ; 30 e4 ; 0xf5c88
+ push ax ; 50 ; 0xf5c8a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5c8b
+ shr ax, 008h ; c1 e8 08 ; 0xf5c8e
+ push ax ; 50 ; 0xf5c91
+ push 0070eh ; 68 0e 07 ; 0xf5c92
+ push 0071dh ; 68 1d 07 ; 0xf5c95
+ push strict byte 00004h ; 6a 04 ; 0xf5c98
+ call 01a68h ; e8 cb bd ; 0xf5c9a
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5c9d
+ jmp near 0605eh ; e9 bb 03 ; 0xf5ca0 disk.c:301
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5ca3 disk.c:305
+ xor dh, dh ; 30 f6 ; 0xf5ca6
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ca8
+ mov bx, si ; 89 f3 ; 0xf5cab
+ add bx, dx ; 01 d3 ; 0xf5cad
+ mov bl, byte [es:bx+001cfh] ; 26 8a 9f cf 01 ; 0xf5caf
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf5cb4
+ cmp bl, 014h ; 80 fb 14 ; 0xf5cb7 disk.c:308
+ jc short 05ccch ; 72 10 ; 0xf5cba
+ push dx ; 52 ; 0xf5cbc disk.c:309
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5cbd
+ shr ax, 008h ; c1 e8 08 ; 0xf5cc0
+ push ax ; 50 ; 0xf5cc3
+ push 0070eh ; 68 0e 07 ; 0xf5cc4
+ push 00748h ; 68 48 07 ; 0xf5cc7
+ jmp short 05c98h ; eb cc ; 0xf5cca
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5ccc disk.c:313
+ shr bx, 008h ; c1 eb 08 ; 0xf5ccf
+ cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5cd2
+ jnbe near 06043h ; 0f 87 6a 03 ; 0xf5cd5
+ add bx, bx ; 01 db ; 0xf5cd9
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5cdb
+ xor dh, dh ; 30 f6 ; 0xf5cde
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf5ce0
+ jmp word [cs:bx+05c20h] ; 2e ff a7 20 5c ; 0xf5ce3
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5ce8 disk.c:318
+ jnc near 05cf7h ; 0f 83 07 00 ; 0xf5cec
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5cf0 disk.c:320
+ call 01e71h ; e8 7a c1 ; 0xf5cf4
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5cf7 disk.c:321
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5cfb
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5cfe
+ mov es, ax ; 8e c0 ; 0xf5d01
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5d03
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5d07
+ mov sp, bp ; 89 ec ; 0xf5d0b
+ pop bp ; 5d ; 0xf5d0d
+ retn ; c3 ; 0xf5d0e
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5d0f disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5d12
+ mov es, ax ; 8e c0 ; 0xf5d15
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5d17
+ movzx dx, al ; 0f b6 d0 ; 0xf5d1a disk.c:326
+ sal dx, 008h ; c1 e2 08 ; 0xf5d1d
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf5d20
+ or bx, dx ; 09 d3 ; 0xf5d23
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5d25
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5d28 disk.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5d2b
+ test al, al ; 84 c0 ; 0xf5d2f disk.c:329
+ je short 05cfbh ; 74 c8 ; 0xf5d31
+ jmp near 0607ah ; e9 44 03 ; 0xf5d33
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5d36 disk.c:337
+ xor dh, dh ; 30 f6 ; 0xf5d39
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5d3b
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5d3e disk.c:338
+ shr di, 008h ; c1 ef 08 ; 0xf5d41
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d44 disk.c:339
+ xor dh, dh ; 30 f6 ; 0xf5d47
+ sal dx, 002h ; c1 e2 02 ; 0xf5d49
+ xor dl, dl ; 30 d2 ; 0xf5d4c
+ and dh, 003h ; 80 e6 03 ; 0xf5d4e
+ or di, dx ; 09 d7 ; 0xf5d51
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d53 disk.c:340
+ and dx, strict byte 0003fh ; 83 e2 3f ; 0xf5d56
+ mov word [bp-006h], dx ; 89 56 fa ; 0xf5d59
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5d5c disk.c:341
+ shr dx, 008h ; c1 ea 08 ; 0xf5d5f
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf5d62
+ cmp word [bp-00ch], 00080h ; 81 7e f4 80 00 ; 0xf5d65 disk.c:344
+ jnbe short 05d72h ; 77 06 ; 0xf5d6a
+ cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf5d6c
+ jne short 05d95h ; 75 23 ; 0xf5d70
+ mov bx, 00e16h ; bb 16 0e ; 0xf5d72 disk.c:345
+ mov cx, ds ; 8c d9 ; 0xf5d75
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5d77
+ call 01a27h ; e8 aa bc ; 0xf5d7a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5d7d
+ shr ax, 008h ; c1 e8 08 ; 0xf5d80
+ push ax ; 50 ; 0xf5d83
+ push 0070eh ; 68 0e 07 ; 0xf5d84
+ push 0077ah ; 68 7a 07 ; 0xf5d87
+ push strict byte 00004h ; 6a 04 ; 0xf5d8a
+ call 01a68h ; e8 d9 bc ; 0xf5d8c
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf5d8f
+ jmp near 0605eh ; e9 c9 02 ; 0xf5d92 disk.c:346
+ movzx bx, byte [bp-002h] ; 0f b6 5e fe ; 0xf5d95 disk.c:350
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf5d99
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d9c
+ add bx, si ; 01 f3 ; 0xf5d9f
+ mov dx, word [es:bx+028h] ; 26 8b 57 28 ; 0xf5da1
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf5da5
+ mov cx, word [es:bx+026h] ; 26 8b 4f 26 ; 0xf5da8 disk.c:351
+ mov dx, word [es:bx+02ah] ; 26 8b 57 2a ; 0xf5dac disk.c:352
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5db0
+ cmp di, word [bp-012h] ; 3b 7e ee ; 0xf5db3 disk.c:355
+ jnc short 05dc5h ; 73 0d ; 0xf5db6
+ cmp cx, word [bp-008h] ; 3b 4e f8 ; 0xf5db8
+ jbe short 05dc5h ; 76 08 ; 0xf5dbb
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf5dbd
+ cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5dc0
+ jbe short 05df3h ; 76 2e ; 0xf5dc3
+ mov bx, 00e16h ; bb 16 0e ; 0xf5dc5 disk.c:356
+ mov cx, ds ; 8c d9 ; 0xf5dc8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5dca
+ call 01a27h ; e8 57 bc ; 0xf5dcd
+ push dword [bp-008h] ; 66 ff 76 f8 ; 0xf5dd0
+ push di ; 57 ; 0xf5dd4
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5dd5
+ xor ah, ah ; 30 e4 ; 0xf5dd8
+ push ax ; 50 ; 0xf5dda
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ddb
+ shr ax, 008h ; c1 e8 08 ; 0xf5dde
+ push ax ; 50 ; 0xf5de1
+ push 0070eh ; 68 0e 07 ; 0xf5de2
+ push 007a2h ; 68 a2 07 ; 0xf5de5
+ push strict byte 00004h ; 6a 04 ; 0xf5de8
+ call 01a68h ; e8 7b bc ; 0xf5dea
+ add sp, strict byte 00010h ; 83 c4 10 ; 0xf5ded
+ jmp near 0605eh ; e9 6b 02 ; 0xf5df0 disk.c:357
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5df3 disk.c:361
+ shr dx, 008h ; c1 ea 08 ; 0xf5df6
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf5df9
+ jne short 05e01h ; 75 03 ; 0xf5dfc
+ jmp near 05cf7h ; e9 f6 fe ; 0xf5dfe disk.c:362
+ movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf5e01 disk.c:366
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5e05
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5e08
+ mov bx, si ; 89 f3 ; 0xf5e0b
+ add bx, dx ; 01 d3 ; 0xf5e0d
+ cmp cx, word [es:bx+02ch] ; 26 3b 4f 2c ; 0xf5e0f
+ jne short 05e24h ; 75 0f ; 0xf5e13
+ mov dx, word [es:bx+030h] ; 26 8b 57 30 ; 0xf5e15
+ cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5e19
+ jne short 05e24h ; 75 06 ; 0xf5e1c
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e1e
+ jc short 05e55h ; 72 31 ; 0xf5e22
+ mov ax, di ; 89 f8 ; 0xf5e24 disk.c:367
+ xor dx, dx ; 31 d2 ; 0xf5e26
+ mov bx, cx ; 89 cb ; 0xf5e28
+ xor cx, cx ; 31 c9 ; 0xf5e2a
+ call 0ace0h ; e8 b1 4e ; 0xf5e2c
+ xor bx, bx ; 31 db ; 0xf5e2f
+ add ax, word [bp-008h] ; 03 46 f8 ; 0xf5e31
+ adc dx, bx ; 11 da ; 0xf5e34
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5e36
+ xor cx, cx ; 31 c9 ; 0xf5e39
+ call 0ace0h ; e8 a2 4e ; 0xf5e3b
+ xor cx, cx ; 31 c9 ; 0xf5e3e
+ mov bx, word [bp-006h] ; 8b 5e fa ; 0xf5e40
+ add bx, ax ; 01 c3 ; 0xf5e43
+ mov ax, dx ; 89 d0 ; 0xf5e45
+ adc ax, cx ; 11 c8 ; 0xf5e47
+ add bx, strict byte 0ffffh ; 83 c3 ff ; 0xf5e49
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf5e4c
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf5e4f
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf5e52 disk.c:368
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5e55 disk.c:378
+ 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; 0xf5e58
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5e61 disk.c:379
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf5e67 disk.c:382
+ mov word [es:si], dx ; 26 89 14 ; 0xf5e6a
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5e6d
+ 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; 0xf5e71
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5e7a disk.c:383
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5e7d
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5e80
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5e84
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5e88 disk.c:384
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf5e8b
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf5e8f disk.c:385
+ mov word [es:si+012h], di ; 26 89 7c 12 ; 0xf5e95 disk.c:386
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5e99 disk.c:387
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5e9c
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5ea0 disk.c:388
+ mov word [es:si+016h], ax ; 26 89 44 16 ; 0xf5ea3
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5ea7 disk.c:389
+ mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5eaa
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5eae disk.c:391
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5eb2
+ mov bx, si ; 89 f3 ; 0xf5eb5
+ add bx, ax ; 01 c3 ; 0xf5eb7
+ movzx ax, byte [es:bx+01eh] ; 26 0f b6 47 1e ; 0xf5eb9
+ mov bx, ax ; 89 c3 ; 0xf5ebe
+ sal bx, 002h ; c1 e3 02 ; 0xf5ec0
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ec3
+ shr ax, 008h ; c1 e8 08 ; 0xf5ec6
+ add ax, ax ; 01 c0 ; 0xf5ec9
+ add bx, ax ; 01 c3 ; 0xf5ecb
+ push ES ; 06 ; 0xf5ecd
+ push si ; 56 ; 0xf5ece
+ call word [word bx+0007eh] ; ff 97 7e 00 ; 0xf5ecf
+ mov dx, ax ; 89 c2 ; 0xf5ed3
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ed5 disk.c:394
+ xor al, al ; 30 c0 ; 0xf5ed8
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5eda
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf5edd
+ or bx, ax ; 09 c3 ; 0xf5ee1
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5ee3
+ test dl, dl ; 84 d2 ; 0xf5ee6 disk.c:396
+ je near 05cf7h ; 0f 84 0b fe ; 0xf5ee8
+ mov bx, 00e16h ; bb 16 0e ; 0xf5eec disk.c:397
+ mov cx, ds ; 8c d9 ; 0xf5eef
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5ef1
+ call 01a27h ; e8 30 bb ; 0xf5ef4
+ movzx ax, dl ; 0f b6 c2 ; 0xf5ef7
+ push ax ; 50 ; 0xf5efa
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5efb
+ shr ax, 008h ; c1 e8 08 ; 0xf5efe
+ push ax ; 50 ; 0xf5f01
+ push 0070eh ; 68 0e 07 ; 0xf5f02
+ push 007e9h ; 68 e9 07 ; 0xf5f05
+ push strict byte 00004h ; 6a 04 ; 0xf5f08
+ call 01a68h ; e8 5b bb ; 0xf5f0a
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5f0d
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f10 disk.c:398
+ xor ah, ah ; 30 e4 ; 0xf5f13
+ or ah, 00ch ; 80 cc 0c ; 0xf5f15
+ jmp near 06066h ; e9 4b 01 ; 0xf5f18 disk.c:399
+ mov bx, 00e16h ; bb 16 0e ; 0xf5f1b disk.c:406
+ mov cx, ds ; 8c d9 ; 0xf5f1e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f20
+ call 01a27h ; e8 01 bb ; 0xf5f23
+ push 0080ah ; 68 0a 08 ; 0xf5f26
+ push strict byte 00004h ; 6a 04 ; 0xf5f29
+ call 01a68h ; e8 3a bb ; 0xf5f2b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5f2e
+ jmp near 05cf7h ; e9 c3 fd ; 0xf5f31 disk.c:407
+ movzx di, byte [bp-002h] ; 0f b6 7e fe ; 0xf5f34 disk.c:413
+ imul di, di, strict byte 0001ch ; 6b ff 1c ; 0xf5f38
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5f3b
+ add di, si ; 01 f7 ; 0xf5f3e
+ mov bx, word [es:di+028h] ; 26 8b 5d 28 ; 0xf5f40
+ mov cx, word [es:di+026h] ; 26 8b 4d 26 ; 0xf5f44 disk.c:414
+ mov ax, word [es:di+02ah] ; 26 8b 45 2a ; 0xf5f48 disk.c:415
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5f4c
+ movzx ax, byte [es:si+0024eh] ; 26 0f b6 84 4e 02 ; 0xf5f4f disk.c:417
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5f55
+ mov byte [bp+016h], dh ; 88 76 16 ; 0xf5f58 disk.c:423
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5f5b disk.c:424
+ xor dh, dh ; 30 f6 ; 0xf5f5e
+ dec bx ; 4b ; 0xf5f60 disk.c:422
+ mov ax, bx ; 89 d8 ; 0xf5f61
+ xor ah, bh ; 30 fc ; 0xf5f63
+ sal ax, 008h ; c1 e0 08 ; 0xf5f65
+ or dx, ax ; 09 c2 ; 0xf5f68
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf5f6a
+ shr bx, 002h ; c1 eb 02 ; 0xf5f6d disk.c:425
+ and bl, 0c0h ; 80 e3 c0 ; 0xf5f70
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5f73
+ mov dl, al ; 88 c2 ; 0xf5f76
+ and dl, 03fh ; 80 e2 3f ; 0xf5f78
+ or dl, bl ; 08 da ; 0xf5f7b
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf5f7d
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5f80 disk.c:426
+ xor dh, dh ; 30 f6 ; 0xf5f83
+ mov ax, cx ; 89 c8 ; 0xf5f85
+ sal ax, 008h ; c1 e0 08 ; 0xf5f87
+ sub ax, 00100h ; 2d 00 01 ; 0xf5f8a
+ or dx, ax ; 09 c2 ; 0xf5f8d
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5f8f
+ mov ax, dx ; 89 d0 ; 0xf5f92 disk.c:427
+ xor al, dl ; 30 d0 ; 0xf5f94
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf5f96
+ or dx, ax ; 09 c2 ; 0xf5f99
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5f9b
+ jmp near 05cf7h ; e9 56 fd ; 0xf5f9e disk.c:432
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5fa1 disk.c:440
+ jnc near 05cf7h ; 0f 83 4e fd ; 0xf5fa5
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5fa9 disk.c:443
+ cwd ; 99 ; 0xf5fad
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5fae
+ sar ax, 1 ; d1 f8 ; 0xf5fb0
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5fb2
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5fb5
+ add si, ax ; 01 c6 ; 0xf5fb8
+ mov dx, word [es:si+0027ah] ; 26 8b 94 7a 02 ; 0xf5fba
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf5fbf
+ in AL, DX ; ec ; 0xf5fc2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5fc3
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf5fc5 disk.c:444
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf5fc7
+ jne short 05fceh ; 75 03 ; 0xf5fc9
+ jmp near 05cf7h ; e9 29 fd ; 0xf5fcb disk.c:445
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5fce disk.c:447
+ xor ah, ah ; 30 e4 ; 0xf5fd1
+ or ah, 0aah ; 80 cc aa ; 0xf5fd3
+ jmp near 06066h ; e9 8d 00 ; 0xf5fd6
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5fd9 disk.c:459
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5fdd
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5fe0
+ add si, ax ; 01 c6 ; 0xf5fe3
+ mov di, word [es:si+02eh] ; 26 8b 7c 2e ; 0xf5fe5
+ mov ax, word [es:si+02ch] ; 26 8b 44 2c ; 0xf5fe9 disk.c:460
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf5fed
+ mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf5ff0 disk.c:461
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf5ff4
+ mov ax, di ; 89 f8 ; 0xf5ff7 disk.c:464
+ xor dl, dl ; 30 d2 ; 0xf5ff9
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5ffb
+ xor cx, cx ; 31 c9 ; 0xf5ffe
+ call 0ace0h ; e8 dd 4c ; 0xf6000
+ mov bx, word [bp-006h] ; 8b 5e fa ; 0xf6003
+ xor cx, cx ; 31 c9 ; 0xf6006
+ call 0ace0h ; e8 d5 4c ; 0xf6008
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf600b
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf600e disk.c:465
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6011 disk.c:466
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf6014 disk.c:468
+ or ah, 003h ; 80 cc 03 ; 0xf6017
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf601a
+ jmp near 05cfbh ; e9 db fc ; 0xf601d disk.c:469
+ mov bx, 00e16h ; bb 16 0e ; 0xf6020 disk.c:477
+ mov cx, ds ; 8c d9 ; 0xf6023
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6025
+ call 01a27h ; e8 fc b9 ; 0xf6028
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf602b
+ shr ax, 008h ; c1 e8 08 ; 0xf602e
+ push ax ; 50 ; 0xf6031
+ push 0070eh ; 68 0e 07 ; 0xf6032
+ push 00824h ; 68 24 08 ; 0xf6035
+ push strict byte 00004h ; 6a 04 ; 0xf6038
+ call 01a68h ; e8 2b ba ; 0xf603a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf603d
+ jmp near 05cf7h ; e9 b4 fc ; 0xf6040 disk.c:478
+ mov bx, 00e16h ; bb 16 0e ; 0xf6043 disk.c:485
+ mov cx, ds ; 8c d9 ; 0xf6046
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6048
+ call 01a27h ; e8 d9 b9 ; 0xf604b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf604e
+ shr ax, 008h ; c1 e8 08 ; 0xf6051
+ push ax ; 50 ; 0xf6054
+ push 0070eh ; 68 0e 07 ; 0xf6055
+ push 00857h ; 68 57 08 ; 0xf6058
+ jmp near 05d8ah ; e9 2c fd ; 0xf605b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf605e disk.c:491
+ xor ah, ah ; 30 e4 ; 0xf6061
+ or ah, 001h ; 80 cc 01 ; 0xf6063
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6066
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6069 disk.c:493
+ shr ax, 008h ; c1 e8 08 ; 0xf606c
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf606f disk.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6072
+ mov es, dx ; 8e c2 ; 0xf6075
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6077
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf607a disk.c:495
+ jmp near 05d0bh ; e9 8a fc ; 0xf607e disk.c:496
+ ; disGetNextSymbol 0xf6081 LB 0x4d9b -> off=0x20 cb=000000000000029e uValue=00000000000f4aa1 'int13_harddisk_ext'
+ db 031h, 061h, 049h, 061h, 049h, 061h, 049h, 061h, 027h, 063h, 0b3h, 062h, 049h, 061h, 0bbh, 062h
+ db 027h, 063h, 00ch, 063h, 00ch, 063h, 00ch, 063h, 00ch, 063h, 0f4h, 062h, 00ch, 063h, 00ch, 063h
+int13_harddisk_ext: ; 0xf60a1 LB 0x29e
+ push bp ; 55 ; 0xf60a1 disk.c:506
+ mov bp, sp ; 89 e5 ; 0xf60a2
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf60a4
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf60a7 disk.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf60aa
+ mov es, ax ; 8e c0 ; 0xf60ad
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf60af
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf60b2 disk.c:59
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf60b5
+ mov bx, 0008eh ; bb 8e 00 ; 0xf60b8 disk.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf60bb
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf60bf disk.c:530
+ xor ah, ah ; 30 e4 ; 0xf60c2
+ cmp ax, 00080h ; 3d 80 00 ; 0xf60c4
+ jc short 060ceh ; 72 05 ; 0xf60c7
+ cmp ax, 00094h ; 3d 94 00 ; 0xf60c9
+ jc short 060ech ; 72 1e ; 0xf60cc
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf60ce disk.c:531
+ xor ah, ah ; 30 e4 ; 0xf60d1
+ push ax ; 50 ; 0xf60d3
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60d4
+ shr ax, 008h ; c1 e8 08 ; 0xf60d7
+ push ax ; 50 ; 0xf60da
+ push 00885h ; 68 85 08 ; 0xf60db
+ push 0071dh ; 68 1d 07 ; 0xf60de
+ push strict byte 00004h ; 6a 04 ; 0xf60e1
+ call 01a68h ; e8 82 b9 ; 0xf60e3
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf60e6
+ jmp near 062d2h ; e9 e6 01 ; 0xf60e9 disk.c:532
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf60ec disk.c:536
+ xor ah, ah ; 30 e4 ; 0xf60ef
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf60f1
+ mov bx, di ; 89 fb ; 0xf60f4
+ add bx, ax ; 01 c3 ; 0xf60f6
+ mov dl, byte [es:bx+001cfh] ; 26 8a 97 cf 01 ; 0xf60f8
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf60fd
+ cmp dl, 014h ; 80 fa 14 ; 0xf6100 disk.c:539
+ jc short 06115h ; 72 10 ; 0xf6103
+ push ax ; 50 ; 0xf6105 disk.c:540
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6106
+ shr ax, 008h ; c1 e8 08 ; 0xf6109
+ push ax ; 50 ; 0xf610c
+ push 00885h ; 68 85 08 ; 0xf610d
+ push 00748h ; 68 48 07 ; 0xf6110
+ jmp short 060e1h ; eb cc ; 0xf6113
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf6115 disk.c:544
+ shr bx, 008h ; c1 eb 08 ; 0xf6118
+ sub bx, strict byte 00041h ; 83 eb 41 ; 0xf611b
+ cmp bx, strict byte 0000fh ; 83 fb 0f ; 0xf611e
+ jnbe near 0630ch ; 0f 87 e7 01 ; 0xf6121
+ add bx, bx ; 01 db ; 0xf6125
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf6127
+ xor ch, ch ; 30 ed ; 0xf612a
+ jmp word [cs:bx+06081h] ; 2e ff a7 81 60 ; 0xf612c
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf6131 disk.c:546
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6136 disk.c:547
+ xor ah, ah ; 30 e4 ; 0xf6139
+ or ah, 030h ; 80 cc 30 ; 0xf613b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf613e
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf6141 disk.c:548
+ jmp near 0632bh ; e9 e2 01 ; 0xf6146 disk.c:549
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6149 disk.c:558
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf614c
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf614f
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf6152
+ mov [bp-010h], es ; 8c 46 f0 ; 0xf6155
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf6158 disk.c:560
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf615c
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf615f disk.c:561
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf6163
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf6166 disk.c:562
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf616a
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf616d disk.c:565
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf6171
+ xor ax, ax ; 31 c0 ; 0xf6175 disk.c:566
+ xor bx, bx ; 31 db ; 0xf6177
+ mov si, strict word 00020h ; be 20 00 ; 0xf6179
+ call 0ad70h ; e8 f1 4b ; 0xf617c
+ mov si, ax ; 89 c6 ; 0xf617f
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf6181
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf6184 disk.c:567
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf6187
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf618b
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf618e
+ or dx, word [bp-016h] ; 0b 56 ea ; 0xf6192
+ or cx, ax ; 09 c1 ; 0xf6195
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf6197 disk.c:572
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf619b
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf619e
+ mov bx, di ; 89 fb ; 0xf61a1
+ add bx, ax ; 01 c3 ; 0xf61a3
+ mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf61a5
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf61a9
+ mov ax, word [es:bx+038h] ; 26 8b 47 38 ; 0xf61ac disk.c:573
+ cmp si, ax ; 39 c6 ; 0xf61b0
+ jnbe short 061d6h ; 77 22 ; 0xf61b2
+ jne short 061f9h ; 75 43 ; 0xf61b4
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf61b6
+ cmp ax, word [es:bx+036h] ; 26 3b 47 36 ; 0xf61b9
+ jnbe short 061d6h ; 77 17 ; 0xf61bd
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf61bf
+ cmp ax, word [es:bx+036h] ; 26 3b 47 36 ; 0xf61c2
+ jne short 061f9h ; 75 31 ; 0xf61c6
+ cmp cx, word [es:bx+034h] ; 26 3b 4f 34 ; 0xf61c8
+ jnbe short 061d6h ; 77 08 ; 0xf61cc
+ jne short 061f9h ; 75 29 ; 0xf61ce
+ cmp dx, word [es:bx+032h] ; 26 3b 57 32 ; 0xf61d0
+ jc short 061f9h ; 72 23 ; 0xf61d4
+ mov bx, 00e16h ; bb 16 0e ; 0xf61d6 disk.c:574
+ mov cx, ds ; 8c d9 ; 0xf61d9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf61db
+ call 01a27h ; e8 46 b8 ; 0xf61de
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61e1
+ shr ax, 008h ; c1 e8 08 ; 0xf61e4
+ push ax ; 50 ; 0xf61e7
+ push 00885h ; 68 85 08 ; 0xf61e8
+ push 00898h ; 68 98 08 ; 0xf61eb
+ push strict byte 00004h ; 6a 04 ; 0xf61ee
+ call 01a68h ; e8 75 b8 ; 0xf61f0
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf61f3
+ jmp near 062d2h ; e9 d9 00 ; 0xf61f6 disk.c:575
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61f9 disk.c:579
+ shr ax, 008h ; c1 e8 08 ; 0xf61fc
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf61ff
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf6202
+ je near 06327h ; 0f 84 1e 01 ; 0xf6205
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf6209
+ je near 06327h ; 0f 84 17 01 ; 0xf620c
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6210 disk.c:583
+ 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; 0xf6213
+ mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf621c disk.c:584
+ mov word [es:di+006h], si ; 26 89 75 06 ; 0xf6222 disk.c:587
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf6226
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf6229
+ mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf622d
+ mov word [es:di], dx ; 26 89 15 ; 0xf6231
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf6234 disk.c:588
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf6237
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf623b
+ mov word [es:di+00ah], ax ; 26 89 45 0a ; 0xf623e
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf6242 disk.c:589
+ mov word [es:di+00eh], ax ; 26 89 45 0e ; 0xf6245
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf6249 disk.c:590
+ mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf624f disk.c:591
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6255 disk.c:592
+ mov byte [es:di+00ch], al ; 26 88 45 0c ; 0xf6258
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf625c disk.c:595
+ add bx, bx ; 01 db ; 0xf625f
+ movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf6261
+ sal ax, 002h ; c1 e0 02 ; 0xf6265
+ add bx, ax ; 01 c3 ; 0xf6268
+ push ES ; 06 ; 0xf626a
+ push di ; 57 ; 0xf626b
+ call word [word bx-00002h] ; ff 97 fe ff ; 0xf626c
+ mov dx, ax ; 89 c2 ; 0xf6270
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6272 disk.c:596
+ mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf6275
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6279
+ les bx, [bp-012h] ; c4 5e ee ; 0xf627c disk.c:597
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf627f
+ test dl, dl ; 84 d2 ; 0xf6283 disk.c:599
+ je near 06327h ; 0f 84 9e 00 ; 0xf6285
+ mov bx, 00e16h ; bb 16 0e ; 0xf6289 disk.c:600
+ mov cx, ds ; 8c d9 ; 0xf628c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf628e
+ call 01a27h ; e8 93 b7 ; 0xf6291
+ movzx ax, dl ; 0f b6 c2 ; 0xf6294
+ push ax ; 50 ; 0xf6297
+ push word [bp-008h] ; ff 76 f8 ; 0xf6298
+ push 00885h ; 68 85 08 ; 0xf629b
+ push 007e9h ; 68 e9 07 ; 0xf629e
+ push strict byte 00004h ; 6a 04 ; 0xf62a1
+ call 01a68h ; e8 c2 b7 ; 0xf62a3
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf62a6
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62a9 disk.c:601
+ xor ah, ah ; 30 e4 ; 0xf62ac
+ or ah, 00ch ; 80 cc 0c ; 0xf62ae
+ jmp short 062dah ; eb 27 ; 0xf62b1 disk.c:602
+ or ch, 0b2h ; 80 cd b2 ; 0xf62b3 disk.c:614
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf62b6
+ jmp short 062ddh ; eb 22 ; 0xf62b9 disk.c:615
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf62bb disk.c:619
+ push ax ; 50 ; 0xf62bf
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf62c0
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf62c3
+ mov bx, di ; 89 fb ; 0xf62c6
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf62c8
+ call 05933h ; e8 65 f6 ; 0xf62cb
+ test ax, ax ; 85 c0 ; 0xf62ce
+ je short 06327h ; 74 55 ; 0xf62d0
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62d2 disk.c:620
+ xor ah, ah ; 30 e4 ; 0xf62d5
+ or ah, 001h ; 80 cc 01 ; 0xf62d7
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf62da
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62dd
+ shr ax, 008h ; c1 e8 08 ; 0xf62e0
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf62e3
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf62e6
+ mov es, dx ; 8e c2 ; 0xf62e9
+ mov byte [es:bx], al ; 26 88 07 ; 0xf62eb
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf62ee
+ jmp short 0633bh ; eb 47 ; 0xf62f2
+ cmp cx, strict byte 00006h ; 83 f9 06 ; 0xf62f4 disk.c:627
+ je short 06327h ; 74 2e ; 0xf62f7
+ cmp cx, strict byte 00001h ; 83 f9 01 ; 0xf62f9
+ jc short 062d2h ; 72 d4 ; 0xf62fc
+ jbe short 06327h ; 76 27 ; 0xf62fe
+ cmp cx, strict byte 00003h ; 83 f9 03 ; 0xf6300
+ jc short 062d2h ; 72 cd ; 0xf6303
+ cmp cx, strict byte 00004h ; 83 f9 04 ; 0xf6305
+ jbe short 06327h ; 76 1d ; 0xf6308
+ jmp short 062d2h ; eb c6 ; 0xf630a disk.c:635
+ mov bx, 00e16h ; bb 16 0e ; 0xf630c disk.c:641
+ mov cx, ds ; 8c d9 ; 0xf630f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6311
+ call 01a27h ; e8 10 b7 ; 0xf6314
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6317
+ shr ax, 008h ; c1 e8 08 ; 0xf631a
+ push ax ; 50 ; 0xf631d
+ push 00885h ; 68 85 08 ; 0xf631e
+ push 00857h ; 68 57 08 ; 0xf6321
+ jmp near 061eeh ; e9 c7 fe ; 0xf6324
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6327 disk.c:654
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf632b disk.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf632e
+ mov es, ax ; 8e c0 ; 0xf6331
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6333
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6337 disk.c:657
+ mov sp, bp ; 89 ec ; 0xf633b disk.c:659
+ pop bp ; 5d ; 0xf633d
+ retn ; c3 ; 0xf633e
+ ; disGetNextSymbol 0xf633f LB 0x4add -> off=0x0 cb=0000000000000151 uValue=00000000000f4d3f 'int14_function'
+int14_function: ; 0xf633f LB 0x151
+ push bp ; 55 ; 0xf633f serial.c:70
+ mov bp, sp ; 89 e5 ; 0xf6340
+ push si ; 56 ; 0xf6342
+ push di ; 57 ; 0xf6343
+ sti ; fb ; 0xf6344 serial.c:75
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf6345 serial.c:77
+ add si, si ; 01 f6 ; 0xf6348
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf634a serial.c:58
+ mov es, ax ; 8e c0 ; 0xf634d
+ mov si, word [es:si] ; 26 8b 34 ; 0xf634f
+ mov bx, si ; 89 f3 ; 0xf6352 serial.c:59
+ mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf6354 serial.c:78
+ add di, strict byte 0007ch ; 83 c7 7c ; 0xf6357
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf635a serial.c:48
+ cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf635d serial.c:79
+ jnc near 06485h ; 0f 83 20 01 ; 0xf6361
+ test si, si ; 85 f6 ; 0xf6365
+ jbe near 06485h ; 0f 86 1a 01 ; 0xf6367
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf636b serial.c:80
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf636e
+ jc short 06383h ; 72 11 ; 0xf6370
+ jbe short 063dch ; 76 68 ; 0xf6372
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf6374
+ je near 0646eh ; 0f 84 f4 00 ; 0xf6376
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf637a
+ je near 06427h ; 0f 84 a7 00 ; 0xf637c
+ jmp near 0647fh ; e9 fc 00 ; 0xf6380
+ test al, al ; 84 c0 ; 0xf6383
+ jne near 0647fh ; 0f 85 f6 00 ; 0xf6385
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf6389 serial.c:82
+ in AL, DX ; ec ; 0xf638c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf638d
+ or AL, strict byte 080h ; 0c 80 ; 0xf638f
+ out DX, AL ; ee ; 0xf6391
+ lea si, [bx+001h] ; 8d 77 01 ; 0xf6392
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6395 serial.c:83
+ test AL, strict byte 0e0h ; a8 e0 ; 0xf6398
+ jne short 063a8h ; 75 0c ; 0xf639a
+ mov AL, strict byte 017h ; b0 17 ; 0xf639c serial.c:84
+ mov dx, bx ; 89 da ; 0xf639e
+ out DX, AL ; ee ; 0xf63a0
+ mov AL, strict byte 004h ; b0 04 ; 0xf63a1 serial.c:85
+ mov dx, si ; 89 f2 ; 0xf63a3
+ out DX, AL ; ee ; 0xf63a5
+ jmp short 063beh ; eb 16 ; 0xf63a6 serial.c:86
+ and AL, strict byte 0e0h ; 24 e0 ; 0xf63a8 serial.c:87
+ movzx cx, al ; 0f b6 c8 ; 0xf63aa
+ sar cx, 005h ; c1 f9 05 ; 0xf63ad
+ mov ax, 00600h ; b8 00 06 ; 0xf63b0
+ sar ax, CL ; d3 f8 ; 0xf63b3
+ mov dx, bx ; 89 da ; 0xf63b5 serial.c:88
+ out DX, AL ; ee ; 0xf63b7
+ shr ax, 008h ; c1 e8 08 ; 0xf63b8 serial.c:89
+ mov dx, si ; 89 f2 ; 0xf63bb
+ out DX, AL ; ee ; 0xf63bd
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf63be serial.c:91
+ and AL, strict byte 01fh ; 24 1f ; 0xf63c1
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf63c3
+ out DX, AL ; ee ; 0xf63c6
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf63c7 serial.c:92
+ in AL, DX ; ec ; 0xf63ca
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf63cb
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf63cd
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf63d0 serial.c:93
+ in AL, DX ; ec ; 0xf63d3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf63d4
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf63d6
+ jmp near 06460h ; e9 84 00 ; 0xf63d9
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf63dc serial.c:58
+ mov si, word [es:si] ; 26 8b 34 ; 0xf63df
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf63e2 serial.c:98
+ in AL, DX ; ec ; 0xf63e5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf63e6
+ and ax, strict word 00060h ; 25 60 00 ; 0xf63e8
+ cmp ax, strict word 00060h ; 3d 60 00 ; 0xf63eb
+ je short 06409h ; 74 19 ; 0xf63ee
+ test cl, cl ; 84 c9 ; 0xf63f0
+ je short 06409h ; 74 15 ; 0xf63f2
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf63f4 serial.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf63f7
+ mov es, ax ; 8e c0 ; 0xf63fa
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf63fc
+ cmp ax, si ; 39 f0 ; 0xf63ff serial.c:100
+ je short 063e2h ; 74 df ; 0xf6401
+ mov si, ax ; 89 c6 ; 0xf6403 serial.c:101
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf6405 serial.c:102
+ jmp short 063e2h ; eb d9 ; 0xf6407 serial.c:104
+ test cl, cl ; 84 c9 ; 0xf6409 serial.c:105
+ je short 06413h ; 74 06 ; 0xf640b
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf640d
+ mov dx, bx ; 89 da ; 0xf6410
+ out DX, AL ; ee ; 0xf6412
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6413 serial.c:106
+ in AL, DX ; ec ; 0xf6416
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6417
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6419
+ test cl, cl ; 84 c9 ; 0xf641c serial.c:107
+ jne short 06460h ; 75 40 ; 0xf641e
+ or AL, strict byte 080h ; 0c 80 ; 0xf6420
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6422
+ jmp short 06460h ; eb 39 ; 0xf6425
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf6427 serial.c:58
+ mov si, word [es:si] ; 26 8b 34 ; 0xf642a
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf642d serial.c:112
+ in AL, DX ; ec ; 0xf6430
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6431
+ test AL, strict byte 001h ; a8 01 ; 0xf6433
+ jne short 06450h ; 75 19 ; 0xf6435
+ test cl, cl ; 84 c9 ; 0xf6437
+ je short 06450h ; 74 15 ; 0xf6439
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf643b serial.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf643e
+ mov es, ax ; 8e c0 ; 0xf6441
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf6443
+ cmp ax, si ; 39 f0 ; 0xf6446 serial.c:114
+ je short 0642dh ; 74 e3 ; 0xf6448
+ mov si, ax ; 89 c6 ; 0xf644a serial.c:115
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf644c serial.c:116
+ jmp short 0642dh ; eb dd ; 0xf644e serial.c:118
+ test cl, cl ; 84 c9 ; 0xf6450 serial.c:119
+ je short 06466h ; 74 12 ; 0xf6452
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6454 serial.c:120
+ mov dx, bx ; 89 da ; 0xf6458 serial.c:121
+ in AL, DX ; ec ; 0xf645a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf645b
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf645d
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6460 serial.c:122
+ jmp short 06489h ; eb 23 ; 0xf6464
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6466 serial.c:123
+ in AL, DX ; ec ; 0xf6469
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf646a
+ jmp short 06422h ; eb b4 ; 0xf646c
+ lea dx, [si+005h] ; 8d 54 05 ; 0xf646e serial.c:128
+ in AL, DX ; ec ; 0xf6471
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6472
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6474
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf6477 serial.c:129
+ in AL, DX ; ec ; 0xf647a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf647b
+ jmp short 0645dh ; eb de ; 0xf647d
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf647f serial.c:133
+ jmp short 06489h ; eb 04 ; 0xf6483 serial.c:135
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6485 serial.c:136
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6489 serial.c:138
+ pop di ; 5f ; 0xf648c
+ pop si ; 5e ; 0xf648d
+ pop bp ; 5d ; 0xf648e
+ retn ; c3 ; 0xf648f
+ ; disGetNextSymbol 0xf6490 LB 0x498c -> off=0x0 cb=000000000000002c uValue=00000000000f4e90 'set_enable_a20'
+set_enable_a20: ; 0xf6490 LB 0x2c
+ push bp ; 55 ; 0xf6490 system.c:298
+ mov bp, sp ; 89 e5 ; 0xf6491
+ push bx ; 53 ; 0xf6493
+ push cx ; 51 ; 0xf6494
+ push dx ; 52 ; 0xf6495
+ mov bx, ax ; 89 c3 ; 0xf6496
+ mov dx, 00092h ; ba 92 00 ; 0xf6498 system.c:305
+ in AL, DX ; ec ; 0xf649b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf649c
+ mov cl, al ; 88 c1 ; 0xf649e
+ test bx, bx ; 85 db ; 0xf64a0 system.c:308
+ je short 064a9h ; 74 05 ; 0xf64a2
+ or AL, strict byte 002h ; 0c 02 ; 0xf64a4 system.c:309
+ out DX, AL ; ee ; 0xf64a6
+ jmp short 064ach ; eb 03 ; 0xf64a7 system.c:310
+ and AL, strict byte 0fdh ; 24 fd ; 0xf64a9 system.c:311
+ out DX, AL ; ee ; 0xf64ab
+ test cl, 002h ; f6 c1 02 ; 0xf64ac system.c:313
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf64af
+ xor ah, ah ; 30 e4 ; 0xf64b2
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf64b4 system.c:314
+ pop dx ; 5a ; 0xf64b7
+ pop cx ; 59 ; 0xf64b8
+ pop bx ; 5b ; 0xf64b9
+ pop bp ; 5d ; 0xf64ba
+ retn ; c3 ; 0xf64bb
+ ; disGetNextSymbol 0xf64bc LB 0x4960 -> off=0x3b cb=0000000000000349 uValue=00000000000f4ef7 'int15_function'
+ db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h
+ db 024h, 022h, 000h, 021h, 068h, 034h, 065h, 0bch, 067h, 047h, 065h, 0bch, 067h, 01ah, 068h, 08bh
+ db 065h, 0c1h, 065h, 05bh, 066h, 0c9h, 066h, 0deh, 066h, 054h, 066h, 054h, 066h, 0a6h, 067h, 0ceh
+ db 067h, 0e1h, 067h, 0bch, 067h, 0f5h, 067h, 0fch, 067h, 002h, 068h
+int15_function: ; 0xf64f7 LB 0x349
+ push bp ; 55 ; 0xf64f7 system.c:335
+ mov bp, sp ; 89 e5 ; 0xf64f8
+ push si ; 56 ; 0xf64fa
+ push di ; 57 ; 0xf64fb
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf64fc system.c:342
+ shr ax, 008h ; c1 e8 08 ; 0xf64ff
+ cmp ax, 000ech ; 3d ec 00 ; 0xf6502
+ jnbe near 06821h ; 0f 87 18 03 ; 0xf6505
+ push CS ; 0e ; 0xf6509
+ pop ES ; 07 ; 0xf650a
+ mov cx, strict word 00014h ; b9 14 00 ; 0xf650b
+ mov di, 064bch ; bf bc 64 ; 0xf650e
+ repne scasb ; f2 ae ; 0xf6511
+ sal cx, 1 ; d1 e1 ; 0xf6513
+ mov di, cx ; 89 cf ; 0xf6515
+ mov si, word [cs:di+064cfh] ; 2e 8b b5 cf 64 ; 0xf6517
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf651c
+ xor ah, ah ; 30 e4 ; 0xf651f
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf6521
+ and dl, 0feh ; 80 e2 fe ; 0xf6524
+ mov cx, word [bp+018h] ; 8b 4e 18 ; 0xf6527
+ or cl, 001h ; 80 c9 01 ; 0xf652a
+ mov bx, ax ; 89 c3 ; 0xf652d
+ or bh, 086h ; 80 cf 86 ; 0xf652f
+ jmp si ; ff e6 ; 0xf6532
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6534 system.c:344
+ xor ah, ah ; 30 e4 ; 0xf6537
+ cmp ax, 000c0h ; 3d c0 00 ; 0xf6539
+ jne near 06821h ; 0f 85 e1 02 ; 0xf653c
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6540 system.c:351
+ jmp near 067c5h ; e9 7e 02 ; 0xf6544
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6547 system.c:355
+ xor ah, ah ; 30 e4 ; 0xf654a
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf654c
+ jc short 0655fh ; 72 0e ; 0xf654f
+ jbe short 06573h ; 76 20 ; 0xf6551
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6553
+ je short 06595h ; 74 3d ; 0xf6556
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf6558
+ je short 06578h ; 74 1b ; 0xf655b
+ jmp short 065a2h ; eb 43 ; 0xf655d
+ test ax, ax ; 85 c0 ; 0xf655f
+ jne short 065a2h ; 75 3f ; 0xf6561
+ xor ax, ax ; 31 c0 ; 0xf6563 system.c:357
+ call 06490h ; e8 28 ff ; 0xf6565
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6568 system.c:358
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf656c system.c:359
+ jmp near 06654h ; e9 e1 00 ; 0xf6570 system.c:360
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6573 system.c:362
+ jmp short 06565h ; eb ed ; 0xf6576
+ mov dx, 00092h ; ba 92 00 ; 0xf6578 system.c:367
+ in AL, DX ; ec ; 0xf657b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf657c
+ shr ax, 1 ; d1 e8 ; 0xf657e
+ and ax, strict word 00001h ; 25 01 00 ; 0xf6580
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf6583
+ mov dl, al ; 88 c2 ; 0xf6586
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6588
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf658b system.c:368
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf658f system.c:369
+ jmp near 06654h ; e9 bf 00 ; 0xf6592 system.c:370
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6595 system.c:372
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf6599 system.c:373
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf659c system.c:374
+ jmp near 06654h ; e9 b2 00 ; 0xf659f system.c:375
+ mov bx, 00e16h ; bb 16 0e ; 0xf65a2 system.c:377
+ mov cx, ds ; 8c d9 ; 0xf65a5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf65a7
+ call 01a27h ; e8 7a b4 ; 0xf65aa
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65ad
+ xor ah, ah ; 30 e4 ; 0xf65b0
+ push ax ; 50 ; 0xf65b2
+ push 008beh ; 68 be 08 ; 0xf65b3
+ push strict byte 00004h ; 6a 04 ; 0xf65b6
+ call 01a68h ; e8 ad b4 ; 0xf65b8
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf65bb
+ jmp near 067bch ; e9 fb 01 ; 0xf65be
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf65c1 system.c:409
+ jne short 06626h ; 75 5f ; 0xf65c5
+ mov bx, 000a0h ; bb a0 00 ; 0xf65c7 system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf65ca
+ mov es, ax ; 8e c0 ; 0xf65cd
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf65cf
+ test AL, strict byte 001h ; a8 01 ; 0xf65d2 system.c:49
+ jne short 06620h ; 75 4a ; 0xf65d4
+ mov DL, strict byte 001h ; b2 01 ; 0xf65d6 system.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf65d8 system.c:53
+ mov bx, 00098h ; bb 98 00 ; 0xf65db system.c:61
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf65de
+ mov word [es:bx], ax ; 26 89 07 ; 0xf65e1 system.c:63
+ mov bx, 0009ah ; bb 9a 00 ; 0xf65e4 system.c:61
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf65e7
+ mov word [es:bx], dx ; 26 89 17 ; 0xf65ea system.c:63
+ mov bx, 0009ch ; bb 9c 00 ; 0xf65ed system.c:61
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf65f0
+ mov word [es:bx], dx ; 26 89 17 ; 0xf65f3 system.c:63
+ mov bx, 0009eh ; bb 9e 00 ; 0xf65f6 system.c:61
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf65f9
+ mov word [es:bx], ax ; 26 89 07 ; 0xf65fc system.c:63
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65ff system.c:418
+ mov dx, 000a1h ; ba a1 00 ; 0xf6603 system.c:420
+ in AL, DX ; ec ; 0xf6606
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6607
+ and AL, strict byte 0feh ; 24 fe ; 0xf6609 system.c:421
+ out DX, AL ; ee ; 0xf660b
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf660c system.c:422
+ call 0176ah ; e8 58 b1 ; 0xf660f
+ or AL, strict byte 040h ; 0c 40 ; 0xf6612 system.c:424
+ movzx dx, al ; 0f b6 d0 ; 0xf6614
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6617
+ call 01787h ; e8 6a b1 ; 0xf661a
+ jmp near 06654h ; e9 34 00 ; 0xf661d system.c:425
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf6620 system.c:428
+ jmp near 06654h ; e9 2e 00 ; 0xf6623 system.c:430
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6626
+ jne short 06645h ; 75 1a ; 0xf6629
+ mov bx, 000a0h ; bb a0 00 ; 0xf662b system.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf662e
+ mov es, ax ; 8e c0 ; 0xf6631
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6633
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6637 system.c:433
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf663b system.c:434
+ call 0176ah ; e8 29 b1 ; 0xf663e
+ and AL, strict byte 0bfh ; 24 bf ; 0xf6641 system.c:435
+ jmp short 06614h ; eb cf ; 0xf6643
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf6645 system.c:438
+ mov ax, bx ; 89 d8 ; 0xf6648 system.c:440
+ xor ah, bh ; 30 fc ; 0xf664a
+ xor bl, bl ; 30 db ; 0xf664c
+ dec ax ; 48 ; 0xf664e
+ or bx, ax ; 09 c3 ; 0xf664f
+ mov word [bp+012h], bx ; 89 5e 12 ; 0xf6651
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6654 system.c:443
+ pop di ; 5f ; 0xf6657
+ pop si ; 5e ; 0xf6658
+ pop bp ; 5d ; 0xf6659
+ retn ; c3 ; 0xf665a
+ mov bx, 000a0h ; bb a0 00 ; 0xf665b system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf665e
+ mov es, ax ; 8e c0 ; 0xf6661
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6663
+ test AL, strict byte 001h ; a8 01 ; 0xf6666 system.c:49
+ jne short 066c3h ; 75 59 ; 0xf6668
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf666a system.c:53
+ mov bx, 00098h ; bb 98 00 ; 0xf666e system.c:63
+ mov [es:bx], es ; 26 8c 07 ; 0xf6671
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6674 system.c:63
+ mov word [es:bx], 000a0h ; 26 c7 07 a0 00 ; 0xf6677
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf667c system.c:61
+ mov bx, 0009ch ; bb 9c 00 ; 0xf667f system.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6682
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6685 system.c:61
+ mov bx, 0009eh ; bb 9e 00 ; 0xf6688 system.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf668b
+ mov dx, 000a1h ; ba a1 00 ; 0xf668e system.c:456
+ in AL, DX ; ec ; 0xf6691
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6692
+ and AL, strict byte 0feh ; 24 fe ; 0xf6694 system.c:457
+ out DX, AL ; ee ; 0xf6696
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6697 system.c:458
+ call 0176ah ; e8 cd b0 ; 0xf669a
+ or AL, strict byte 040h ; 0c 40 ; 0xf669d system.c:460
+ movzx dx, al ; 0f b6 d0 ; 0xf669f
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66a2
+ call 01787h ; e8 df b0 ; 0xf66a5
+ sti ; fb ; 0xf66a8 system.c:462
+ hlt ; f4 ; 0xf66a9 system.c:464
+ mov bx, 000a0h ; bb a0 00 ; 0xf66aa system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf66ad
+ mov es, ax ; 8e c0 ; 0xf66b0
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf66b2
+ test AL, strict byte 080h ; a8 80 ; 0xf66b5 system.c:467
+ je short 066a9h ; 74 f0 ; 0xf66b7
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf66b9 system.c:53
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66bd system.c:469
+ jmp short 06654h ; eb 91 ; 0xf66c1 system.c:470
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf66c3 system.c:473
+ jmp short 06654h ; eb 8b ; 0xf66c7 system.c:475
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf66c9 system.c:480
+ call 017a6h ; e8 d7 b0 ; 0xf66cc
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf66cf
+ cmp ax, strict word 0ffc0h ; 3d c0 ff ; 0xf66d2 system.c:485
+ jbe short 066bdh ; 76 e6 ; 0xf66d5
+ mov word [bp+012h], strict word 0ffc0h ; c7 46 12 c0 ff ; 0xf66d7 system.c:486
+ jmp short 066bdh ; eb df ; 0xf66dc
+ cli ; fa ; 0xf66de system.c:509
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf66df system.c:511
+ call 06490h ; e8 ab fd ; 0xf66e2
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf66e5 system.c:514
+ add bx, strict byte 00038h ; 83 c3 38 ; 0xf66e8
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf66eb system.c:61
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf66ee
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf66f3 system.c:515
+ add bx, strict byte 0003ah ; 83 c3 3a ; 0xf66f6
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf66f9 system.c:61
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf66fc
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6701 system.c:516
+ add bx, strict byte 0003ch ; 83 c3 3c ; 0xf6704
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6707 system.c:51
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf670a
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf670e system.c:517
+ add bx, strict byte 0003dh ; 83 c3 3d ; 0xf6711
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6714 system.c:51
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6717
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf671b system.c:518
+ add bx, strict byte 0003eh ; 83 c3 3e ; 0xf671e
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6721 system.c:61
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6724
+ mov AL, strict byte 011h ; b0 11 ; 0xf6729 system.c:521
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf672b
+ out DX, AL ; ee ; 0xf672e
+ mov dx, 000a0h ; ba a0 00 ; 0xf672f system.c:522
+ out DX, AL ; ee ; 0xf6732
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6733 system.c:523
+ shr ax, 008h ; c1 e8 08 ; 0xf6736
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6739
+ out DX, AL ; ee ; 0xf673c
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf673d system.c:524
+ mov dx, 000a1h ; ba a1 00 ; 0xf6740
+ out DX, AL ; ee ; 0xf6743
+ mov AL, strict byte 004h ; b0 04 ; 0xf6744 system.c:525
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6746
+ out DX, AL ; ee ; 0xf6749
+ mov AL, strict byte 002h ; b0 02 ; 0xf674a system.c:526
+ mov dx, 000a1h ; ba a1 00 ; 0xf674c
+ out DX, AL ; ee ; 0xf674f
+ mov AL, strict byte 001h ; b0 01 ; 0xf6750 system.c:527
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6752
+ out DX, AL ; ee ; 0xf6755
+ mov dx, 000a1h ; ba a1 00 ; 0xf6756 system.c:528
+ out DX, AL ; ee ; 0xf6759
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf675a system.c:530
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf675c
+ out DX, AL ; ee ; 0xf675f
+ mov dx, 000a1h ; ba a1 00 ; 0xf6760 system.c:531
+ out DX, AL ; ee ; 0xf6763
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf6764 system.c:533
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6767
+ lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf676c
+ push strict byte 00038h ; 6a 38 ; 0xf6771
+ call 06776h ; e8 00 00 ; 0xf6773
+ pop ax ; 58 ; 0xf6776
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6777
+ push ax ; 50 ; 0xf677a
+ smsw ax ; 0f 01 e0 ; 0xf677b
+ or AL, strict byte 001h ; 0c 01 ; 0xf677e
+ lmsw ax ; 0f 01 f0 ; 0xf6780
+ retf ; cb ; 0xf6783
+ mov ax, strict word 00018h ; b8 18 00 ; 0xf6784
+ mov ds, ax ; 8e d8 ; 0xf6787
+ add AL, strict byte 008h ; 04 08 ; 0xf6789
+ mov es, ax ; 8e c0 ; 0xf678b
+ add AL, strict byte 008h ; 04 08 ; 0xf678d
+ mov ss, ax ; 8e d0 ; 0xf678f
+ lea ax, [bp+004h] ; 8d 46 04 ; 0xf6791 system.c:534
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xf6794
+ popaw ; 61 ; 0xf6796
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6797
+ pop cx ; 59 ; 0xf679a
+ pop ax ; 58 ; 0xf679b
+ pop ax ; 58 ; 0xf679c
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf679d
+ push ax ; 50 ; 0xf67a0
+ push cx ; 51 ; 0xf67a1
+ retf ; cb ; 0xf67a2
+ jmp near 06654h ; e9 ae fe ; 0xf67a3 system.c:540
+ mov bx, 00e16h ; bb 16 0e ; 0xf67a6 system.c:547
+ mov cx, ds ; 8c d9 ; 0xf67a9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf67ab
+ call 01a27h ; e8 76 b2 ; 0xf67ae
+ push 008feh ; 68 fe 08 ; 0xf67b1
+ push strict byte 00004h ; 6a 04 ; 0xf67b4
+ call 01a68h ; e8 af b2 ; 0xf67b6
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf67b9
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf67bc
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf67c0
+ xor ah, ah ; 30 e4 ; 0xf67c3
+ or ah, 086h ; 80 cc 86 ; 0xf67c5
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf67c8
+ jmp near 06654h ; e9 86 fe ; 0xf67cb
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf67ce system.c:553
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf67d1 system.c:554
+ mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf67d4 system.c:555
+ mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf67d9 system.c:556
+ jmp near 06654h ; e9 73 fe ; 0xf67de system.c:557
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf67e1 system.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf67e4
+ mov es, ax ; 8e c0 ; 0xf67e7
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf67e9
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf67ec system.c:59
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf67ef system.c:561
+ jmp near 06654h ; e9 5f fe ; 0xf67f2 system.c:562
+ push 0092dh ; 68 2d 09 ; 0xf67f5 system.c:565
+ push strict byte 00008h ; 6a 08 ; 0xf67f8
+ jmp short 067b6h ; eb ba ; 0xf67fa
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf67fc system.c:573
+ jmp near 06651h ; e9 4f fe ; 0xf67ff
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6802 system.c:577
+ jne short 06821h ; 75 19 ; 0xf6806
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6808 system.c:579
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf680b system.c:580
+ xor ah, ah ; 30 e4 ; 0xf680e
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6810
+ jc short 0681ah ; 72 05 ; 0xf6813
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6815
+ jbe short 067efh ; 76 d5 ; 0xf6818
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf681a system.c:583
+ jmp near 06654h ; e9 33 fe ; 0xf681e system.c:584
+ mov bx, 00e16h ; bb 16 0e ; 0xf6821 system.c:588
+ mov cx, ds ; 8c d9 ; 0xf6824
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6826
+ call 01a27h ; e8 fb b1 ; 0xf6829
+ push word [bp+00ch] ; ff 76 0c ; 0xf682c
+ push word [bp+012h] ; ff 76 12 ; 0xf682f
+ push 00944h ; 68 44 09 ; 0xf6832
+ push strict byte 00004h ; 6a 04 ; 0xf6835
+ call 01a68h ; e8 2e b2 ; 0xf6837
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf683a
+ jmp near 067bch ; e9 7c ff ; 0xf683d
+ ; disGetNextSymbol 0xf6840 LB 0x45dc -> off=0x0 cb=0000000000000042 uValue=00000000000f5240 'set_e820_range_len'
+set_e820_range_len: ; 0xf6840 LB 0x42
+ push si ; 56 ; 0xf6840 system.c:605
+ push bp ; 55 ; 0xf6841
+ mov bp, sp ; 89 e5 ; 0xf6842
+ mov es, ax ; 8e c0 ; 0xf6844
+ mov si, dx ; 89 d6 ; 0xf6846
+ mov word [es:si], bx ; 26 89 1c ; 0xf6848 system.c:608
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf684b
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf684f system.c:609
+ mov word [es:si+008h], bx ; 26 89 5c 08 ; 0xf6852
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf6856
+ mov word [es:si+00ah], bx ; 26 89 5c 0a ; 0xf6859
+ movzx bx, byte [bp+00ah] ; 0f b6 5e 0a ; 0xf685d system.c:610
+ mov word [es:si+010h], bx ; 26 89 5c 10 ; 0xf6861
+ mov word [es:si+012h], strict word 00000h ; 26 c7 44 12 00 00 ; 0xf6865
+ db 066h, 026h, 0c7h, 044h, 00ch, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+00ch], strict dword 000000000h ; 66 26 c7 44 0c 00 00 00 00; 0xf686b system.c:611
+ 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; 0xf6874 system.c:612
+ pop bp ; 5d ; 0xf687d system.c:613
+ pop si ; 5e ; 0xf687e
+ retn 00006h ; c2 06 00 ; 0xf687f
+ ; disGetNextSymbol 0xf6882 LB 0x459a -> off=0x0 cb=0000000000000039 uValue=00000000000f5282 'set_e820_range_above_4g'
+set_e820_range_above_4g: ; 0xf6882 LB 0x39
+ push si ; 56 ; 0xf6882 system.c:617
+ push bp ; 55 ; 0xf6883
+ mov bp, sp ; 89 e5 ; 0xf6884
+ mov es, ax ; 8e c0 ; 0xf6886
+ mov si, dx ; 89 d6 ; 0xf6888
+ db 066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si], strict dword 000000000h ; 66 26 c7 04 00 00 00 00 ; 0xf688a system.c:620
+ db 066h, 026h, 0c7h, 044h, 004h, 001h, 000h, 000h, 000h
+ ; mov dword [es:si+004h], strict dword 000000001h ; 66 26 c7 44 04 01 00 00 00; 0xf6892 system.c:621
+ mov word [es:si+00ah], bx ; 26 89 5c 0a ; 0xf689b system.c:622
+ mov word [es:si+008h], strict word 00000h ; 26 c7 44 08 00 00 ; 0xf689f
+ mov word [es:si+00ch], cx ; 26 89 4c 0c ; 0xf68a5 system.c:623
+ db 066h, 026h, 0c7h, 044h, 00eh, 000h, 000h, 001h, 000h
+ ; mov dword [es:si+00eh], strict dword 000010000h ; 66 26 c7 44 0e 00 00 01 00; 0xf68a9
+ mov word [es:si+012h], strict word 00000h ; 26 c7 44 12 00 00 ; 0xf68b2 system.c:624
+ pop bp ; 5d ; 0xf68b8 system.c:625
+ pop si ; 5e ; 0xf68b9
+ retn ; c3 ; 0xf68ba
+ ; disGetNextSymbol 0xf68bb LB 0x4561 -> off=0x14 cb=00000000000002a4 uValue=00000000000f52cf 'int15_function32'
+ db 0d3h, 069h, 006h, 06ah, 026h, 06ah, 044h, 06ah, 066h, 06ah, 088h, 06ah, 0a8h, 06ah, 0c8h, 06ah
+ db 042h, 06bh, 0fbh, 06ah
+int15_function32: ; 0xf68cf LB 0x2a4
+ push bp ; 55 ; 0xf68cf system.c:627
+ mov bp, sp ; 89 e5 ; 0xf68d0
+ push si ; 56 ; 0xf68d2
+ push di ; 57 ; 0xf68d3
+ push ax ; 50 ; 0xf68d4
+ push ax ; 50 ; 0xf68d5
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf68d6 system.c:631
+ shr ax, 008h ; c1 e8 08 ; 0xf68d9
+ cmp ax, 000e8h ; 3d e8 00 ; 0xf68dc
+ je near 06955h ; 0f 84 72 00 ; 0xf68df
+ cmp ax, 000d0h ; 3d d0 00 ; 0xf68e3
+ jne near 06b42h ; 0f 85 58 02 ; 0xf68e6
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf68ea system.c:633
+ xor ah, ah ; 30 e4 ; 0xf68ed
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf68ef
+ jne near 06b42h ; 0f 85 4c 02 ; 0xf68f2
+ cmp word [bp+016h], 05052h ; 81 7e 16 52 50 ; 0xf68f6 system.c:635
+ jne near 06b42h ; 0f 85 43 02 ; 0xf68fb
+ cmp word [bp+014h], 04f43h ; 81 7e 14 43 4f ; 0xf68ff
+ jne near 06b42h ; 0f 85 3a 02 ; 0xf6904
+ cmp word [bp+01eh], 04d4fh ; 81 7e 1e 4f 4d ; 0xf6908
+ jne near 06b42h ; 0f 85 31 02 ; 0xf690d
+ cmp word [bp+01ch], 04445h ; 81 7e 1c 45 44 ; 0xf6911
+ jne near 06b42h ; 0f 85 28 02 ; 0xf6916
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf691a
+ or ax, word [bp+008h] ; 0b 46 08 ; 0xf691d
+ jne near 06b42h ; 0f 85 1e 02 ; 0xf6920
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf6924
+ or ax, word [bp+004h] ; 0b 46 04 ; 0xf6927
+ jne near 06b42h ; 0f 85 14 02 ; 0xf692a
+ and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf692e system.c:637
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf6932 system.c:638
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf6935
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6938
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf693b
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf693e system.c:639
+ mov word [bp+004h], ax ; 89 46 04 ; 0xf6941
+ mov ax, word [bp+01eh] ; 8b 46 1e ; 0xf6944
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf6947
+ mov dword [bp+020h], strict dword 049413332h ; 66 c7 46 20 32 33 41 49 ; 0xf694a system.c:640
+ jmp near 06b6ch ; e9 17 02 ; 0xf6952 system.c:644
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6955 system.c:647
+ xor ah, ah ; 30 e4 ; 0xf6958
+ cmp ax, strict word 00020h ; 3d 20 00 ; 0xf695a
+ je short 06969h ; 74 0a ; 0xf695d
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf695f
+ je near 06b15h ; 0f 84 af 01 ; 0xf6962
+ jmp near 06b42h ; e9 d9 01 ; 0xf6966
+ cmp word [bp+01ah], 0534dh ; 81 7e 1a 4d 53 ; 0xf6969 system.c:649
+ jne near 06b42h ; 0f 85 d0 01 ; 0xf696e
+ cmp word [bp+018h], 04150h ; 81 7e 18 50 41 ; 0xf6972
+ jne near 06b42h ; 0f 85 c7 01 ; 0xf6977
+ mov ax, strict word 00034h ; b8 34 00 ; 0xf697b system.c:658
+ call 017a6h ; e8 25 ae ; 0xf697e
+ mov bx, ax ; 89 c3 ; 0xf6981
+ xor dx, dx ; 31 d2 ; 0xf6983
+ test ax, ax ; 85 c0 ; 0xf6985 system.c:659
+ jbe short 06993h ; 76 0a ; 0xf6987
+ mov dx, ax ; 89 c2 ; 0xf6989 system.c:661
+ add dx, 00100h ; 81 c2 00 01 ; 0xf698b
+ xor bx, ax ; 31 c3 ; 0xf698f
+ jmp short 069aah ; eb 17 ; 0xf6991 system.c:664
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf6993 system.c:667
+ call 017a6h ; e8 0d ae ; 0xf6996
+ mov bx, ax ; 89 c3 ; 0xf6999 system.c:668
+ add bx, 00400h ; 81 c3 00 04 ; 0xf699b
+ adc dx, dx ; 11 d2 ; 0xf699f
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf69a1 system.c:669
+ sal bx, 1 ; d1 e3 ; 0xf69a4
+ rcl dx, 1 ; d1 d2 ; 0xf69a6
+ loop 069a4h ; e2 fa ; 0xf69a8
+ mov ax, strict word 00061h ; b8 61 00 ; 0xf69aa system.c:674
+ call 017a6h ; e8 f6 ad ; 0xf69ad
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf69b0
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf69b3
+ mov ax, strict word 00063h ; b8 63 00 ; 0xf69b6 system.c:675
+ call 017a6h ; e8 ea ad ; 0xf69b9
+ mov si, ax ; 89 c6 ; 0xf69bc
+ mov cx, ax ; 89 c1 ; 0xf69be
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf69c0 system.c:681
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf69c3
+ jnbe near 06b42h ; 0f 87 78 01 ; 0xf69c6
+ mov di, ax ; 89 c7 ; 0xf69ca
+ add di, ax ; 01 c7 ; 0xf69cc
+ jmp word [cs:di+068bbh] ; 2e ff a5 bb 68 ; 0xf69ce
+ push strict byte 00001h ; 6a 01 ; 0xf69d3 system.c:684
+ push strict byte 00009h ; 6a 09 ; 0xf69d5
+ push 0fc00h ; 68 00 fc ; 0xf69d7
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf69da
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf69dd
+ xor bx, bx ; 31 db ; 0xf69e0
+ xor cx, cx ; 31 c9 ; 0xf69e2
+ call 06840h ; e8 59 fe ; 0xf69e4
+ mov dword [bp+014h], strict dword 000000001h ; 66 c7 46 14 01 00 00 00 ; 0xf69e7 system.c:685
+ mov dword [bp+020h], strict dword 0534d4150h ; 66 c7 46 20 50 41 4d 53 ; 0xf69ef system.c:686
+ mov dword [bp+01ch], strict dword 000000014h ; 66 c7 46 1c 14 00 00 00 ; 0xf69f7
+ and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf69ff
+ jmp near 06b6ch ; e9 66 01 ; 0xf6a03
+ push strict byte 00002h ; 6a 02 ; 0xf6a06 system.c:688
+ push strict byte 00000h ; 6a 00 ; 0xf6a08
+ push 00400h ; 68 00 04 ; 0xf6a0a
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6a0d
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6a10
+ mov bx, 0fc00h ; bb 00 fc ; 0xf6a13
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf6a16
+ call 06840h ; e8 24 fe ; 0xf6a19
+ mov dword [bp+014h], strict dword 000000002h ; 66 c7 46 14 02 00 00 00 ; 0xf6a1c system.c:689
+ jmp short 069efh ; eb c9 ; 0xf6a24 system.c:690
+ push strict byte 00002h ; 6a 02 ; 0xf6a26 system.c:703
+ push strict byte 00001h ; 6a 01 ; 0xf6a28
+ push strict byte 00000h ; 6a 00 ; 0xf6a2a
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6a2c
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6a2f
+ xor bx, bx ; 31 db ; 0xf6a32
+ mov cx, strict word 0000fh ; b9 0f 00 ; 0xf6a34
+ call 06840h ; e8 06 fe ; 0xf6a37
+ mov dword [bp+014h], strict dword 000000003h ; 66 c7 46 14 03 00 00 00 ; 0xf6a3a system.c:704
+ jmp short 069efh ; eb ab ; 0xf6a42 system.c:705
+ push strict byte 00001h ; 6a 01 ; 0xf6a44 system.c:707
+ add bx, strict byte 00000h ; 83 c3 00 ; 0xf6a46
+ adc dx, strict byte 0ffefh ; 83 d2 ef ; 0xf6a49
+ push dx ; 52 ; 0xf6a4c
+ push bx ; 53 ; 0xf6a4d
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6a4e
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6a51
+ xor bx, bx ; 31 db ; 0xf6a54
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf6a56
+ call 06840h ; e8 e4 fd ; 0xf6a59
+ mov dword [bp+014h], strict dword 000000004h ; 66 c7 46 14 04 00 00 00 ; 0xf6a5c system.c:708
+ jmp short 069efh ; eb 89 ; 0xf6a64 system.c:709
+ push strict byte 00003h ; 6a 03 ; 0xf6a66 system.c:711
+ push strict byte 00001h ; 6a 01 ; 0xf6a68
+ push strict byte 00000h ; 6a 00 ; 0xf6a6a
+ add bx, strict byte 00000h ; 83 c3 00 ; 0xf6a6c
+ mov cx, dx ; 89 d1 ; 0xf6a6f
+ adc cx, strict byte 0ffffh ; 83 d1 ff ; 0xf6a71
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6a74
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6a77
+ call 06840h ; e8 c3 fd ; 0xf6a7a
+ mov dword [bp+014h], strict dword 000000005h ; 66 c7 46 14 05 00 00 00 ; 0xf6a7d system.c:712
+ jmp near 069efh ; e9 67 ff ; 0xf6a85 system.c:713
+ push strict byte 00002h ; 6a 02 ; 0xf6a88 system.c:715
+ push strict byte 00000h ; 6a 00 ; 0xf6a8a
+ push 01000h ; 68 00 10 ; 0xf6a8c
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6a8f
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6a92
+ xor bx, bx ; 31 db ; 0xf6a95
+ mov cx, 0fec0h ; b9 c0 fe ; 0xf6a97
+ call 06840h ; e8 a3 fd ; 0xf6a9a
+ mov dword [bp+014h], strict dword 000000006h ; 66 c7 46 14 06 00 00 00 ; 0xf6a9d system.c:716
+ jmp near 069efh ; e9 47 ff ; 0xf6aa5 system.c:717
+ push strict byte 00002h ; 6a 02 ; 0xf6aa8 system.c:719
+ push strict byte 00000h ; 6a 00 ; 0xf6aaa
+ push 01000h ; 68 00 10 ; 0xf6aac
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6aaf
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6ab2
+ xor bx, bx ; 31 db ; 0xf6ab5
+ mov cx, 0fee0h ; b9 e0 fe ; 0xf6ab7
+ call 06840h ; e8 83 fd ; 0xf6aba
+ mov dword [bp+014h], strict dword 000000007h ; 66 c7 46 14 07 00 00 00 ; 0xf6abd system.c:720
+ jmp near 069efh ; e9 27 ff ; 0xf6ac5 system.c:721
+ push strict byte 00002h ; 6a 02 ; 0xf6ac8 system.c:724
+ push strict byte 00004h ; 6a 04 ; 0xf6aca
+ push strict byte 00000h ; 6a 00 ; 0xf6acc
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6ace
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6ad1
+ xor bx, bx ; 31 db ; 0xf6ad4
+ mov cx, strict word 0fffch ; b9 fc ff ; 0xf6ad6
+ call 06840h ; e8 64 fd ; 0xf6ad9
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf6adc system.c:730
+ test ax, ax ; 85 c0 ; 0xf6adf
+ jne short 06ae7h ; 75 04 ; 0xf6ae1
+ test si, si ; 85 f6 ; 0xf6ae3
+ je short 06af2h ; 74 0b ; 0xf6ae5
+ mov dword [bp+014h], strict dword 000000009h ; 66 c7 46 14 09 00 00 00 ; 0xf6ae7 system.c:731
+ jmp near 069efh ; e9 fd fe ; 0xf6aef system.c:732
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf6af2 system.c:733
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6af5
+ jmp near 069efh ; e9 f4 fe ; 0xf6af8 system.c:734
+ cmp word [bp-006h], strict byte 00000h ; 83 7e fa 00 ; 0xf6afb system.c:747
+ jne short 06b05h ; 75 04 ; 0xf6aff
+ test si, si ; 85 f6 ; 0xf6b01
+ je short 06b42h ; 74 3d ; 0xf6b03
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b05 system.c:749
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b08
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6b0b
+ call 06882h ; e8 71 fd ; 0xf6b0e
+ xor ax, ax ; 31 c0 ; 0xf6b11 system.c:750
+ jmp short 06af2h ; eb dd ; 0xf6b13
+ and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6b15 system.c:769
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf6b19 system.c:779
+ call 017a6h ; e8 87 ac ; 0xf6b1c
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xf6b1f
+ cmp ax, 03c00h ; 3d 00 3c ; 0xf6b22 system.c:782
+ jbe short 06b2ch ; 76 05 ; 0xf6b25
+ mov word [bp+01ch], 03c00h ; c7 46 1c 00 3c ; 0xf6b27 system.c:783
+ mov ax, strict word 00034h ; b8 34 00 ; 0xf6b2c system.c:786
+ call 017a6h ; e8 74 ac ; 0xf6b2f
+ mov dx, ax ; 89 c2 ; 0xf6b32
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf6b34
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf6b37 system.c:789
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf6b3a
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf6b3d system.c:790
+ jmp short 06b6ch ; eb 2a ; 0xf6b40 system.c:795
+ mov bx, 00e16h ; bb 16 0e ; 0xf6b42 system.c:800
+ mov cx, ds ; 8c d9 ; 0xf6b45
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6b47
+ call 01a27h ; e8 da ae ; 0xf6b4a
+ push word [bp+014h] ; ff 76 14 ; 0xf6b4d
+ push word [bp+020h] ; ff 76 20 ; 0xf6b50
+ push 00944h ; 68 44 09 ; 0xf6b53
+ push strict byte 00004h ; 6a 04 ; 0xf6b56
+ call 01a68h ; e8 0d af ; 0xf6b58
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6b5b
+ or byte [bp+028h], 001h ; 80 4e 28 01 ; 0xf6b5e system.c:801
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6b62 system.c:802
+ xor al, al ; 30 c0 ; 0xf6b65
+ or AL, strict byte 086h ; 0c 86 ; 0xf6b67
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf6b69
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6b6c system.c:805
+ pop di ; 5f ; 0xf6b6f
+ pop si ; 5e ; 0xf6b70
+ pop bp ; 5d ; 0xf6b71
+ retn ; c3 ; 0xf6b72
+ ; disGetNextSymbol 0xf6b73 LB 0x42a9 -> off=0x0 cb=0000000000000156 uValue=00000000000f5573 'int15_blkmove'
+int15_blkmove: ; 0xf6b73 LB 0x156
+ push bp ; 55 ; 0xf6b73 system.c:814
+ mov bp, sp ; 89 e5 ; 0xf6b74
+ push si ; 56 ; 0xf6b76
+ push di ; 57 ; 0xf6b77
+ cli ; fa ; 0xf6b78 system.c:824
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6b79 system.c:826
+ call 06490h ; e8 11 f9 ; 0xf6b7c
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6b7f system.c:849
+ sal bx, 004h ; c1 e3 04 ; 0xf6b82
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6b85
+ add ax, bx ; 01 d8 ; 0xf6b88
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf6b8a system.c:850
+ shr dx, 00ch ; c1 ea 0c ; 0xf6b8d
+ mov cl, dl ; 88 d1 ; 0xf6b90
+ cmp ax, bx ; 39 d8 ; 0xf6b92 system.c:851
+ jnc short 06b98h ; 73 02 ; 0xf6b94
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf6b96 system.c:852
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6b98 system.c:853
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf6b9b
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6b9e system.c:61
+ mov word [es:bx], strict word 0002fh ; 26 c7 07 2f 00 ; 0xf6ba1
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6ba6 system.c:854
+ add bx, strict byte 0000ah ; 83 c3 0a ; 0xf6ba9
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6bac system.c:61
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6baf system.c:855
+ add bx, strict byte 0000ch ; 83 c3 0c ; 0xf6bb2
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf6bb5 system.c:53
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bb8 system.c:856
+ add bx, strict byte 0000dh ; 83 c3 0d ; 0xf6bbb
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6bbe system.c:53
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bc2 system.c:857
+ add bx, strict byte 0000eh ; 83 c3 0e ; 0xf6bc5
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6bc8 system.c:61
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bcd system.c:860
+ add bx, strict byte 00020h ; 83 c3 20 ; 0xf6bd0
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6bd3 system.c:61
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bd8 system.c:861
+ add bx, strict byte 00022h ; 83 c3 22 ; 0xf6bdb
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6bde system.c:63
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6be3 system.c:862
+ add bx, strict byte 00024h ; 83 c3 24 ; 0xf6be6
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf6be9 system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bed system.c:863
+ add bx, strict byte 00025h ; 83 c3 25 ; 0xf6bf0
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6bf3 system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bf7 system.c:864
+ add bx, strict byte 00026h ; 83 c3 26 ; 0xf6bfa
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6bfd system.c:61
+ mov ax, ss ; 8c d0 ; 0xf6c02 system.c:867
+ mov cx, ax ; 89 c1 ; 0xf6c04
+ sal ax, 004h ; c1 e0 04 ; 0xf6c06 system.c:868
+ shr cx, 00ch ; c1 e9 0c ; 0xf6c09
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6c0c system.c:870
+ add bx, strict byte 00028h ; 83 c3 28 ; 0xf6c0f
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6c12 system.c:61
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6c17 system.c:871
+ add bx, strict byte 0002ah ; 83 c3 2a ; 0xf6c1a
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6c1d system.c:61
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6c20 system.c:872
+ add bx, strict byte 0002ch ; 83 c3 2c ; 0xf6c23
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf6c26 system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6c29 system.c:873
+ add bx, strict byte 0002dh ; 83 c3 2d ; 0xf6c2c
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6c2f system.c:53
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6c33 system.c:874
+ add bx, strict byte 0002eh ; 83 c3 2e ; 0xf6c36
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6c39 system.c:63
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf6c3e system.c:880
+ mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf6c41
+ push DS ; 1e ; 0xf6c44
+ push eax ; 66 50 ; 0xf6c45
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf6c47
+ mov ds, ax ; 8e d8 ; 0xf6c49
+ mov word [00467h], sp ; 89 26 67 04 ; 0xf6c4b
+ mov [00469h], ss ; 8c 16 69 04 ; 0xf6c4f
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6c53 system.c:884
+ lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf6c58
+ push strict byte 00020h ; 6a 20 ; 0xf6c5e
+ call 06c63h ; e8 00 00 ; 0xf6c60
+ pop ax ; 58 ; 0xf6c63
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6c64
+ push ax ; 50 ; 0xf6c67
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6c68
+ or AL, strict byte 001h ; 0c 01 ; 0xf6c6b
+ mov cr0, eax ; 0f 22 c0 ; 0xf6c6d
+ retf ; cb ; 0xf6c70
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf6c71
+ mov ds, ax ; 8e d8 ; 0xf6c74
+ add AL, strict byte 008h ; 04 08 ; 0xf6c76
+ mov es, ax ; 8e c0 ; 0xf6c78
+ add AL, strict byte 010h ; 04 10 ; 0xf6c7a
+ mov ss, ax ; 8e d0 ; 0xf6c7c
+ db 033h, 0f6h
+ ; xor si, si ; 33 f6 ; 0xf6c7e system.c:885
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xf6c80
+ cld ; fc ; 0xf6c82
+ rep movsw ; f3 a5 ; 0xf6c83
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf6c85 system.c:886
+ mov ds, ax ; 8e d8 ; 0xf6c88
+ mov es, ax ; 8e c0 ; 0xf6c8a
+ push 0f000h ; 68 00 f0 ; 0xf6c8c
+ call 06c92h ; e8 00 00 ; 0xf6c8f
+ pop ax ; 58 ; 0xf6c92
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6c93
+ push ax ; 50 ; 0xf6c96
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6c97
+ and AL, strict byte 0feh ; 24 fe ; 0xf6c9a
+ mov cr0, eax ; 0f 22 c0 ; 0xf6c9c
+ retf ; cb ; 0xf6c9f
+ lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xf6ca0
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf6ca6 system.c:887
+ mov ds, ax ; 8e d8 ; 0xf6ca8
+ mov es, ax ; 8e c0 ; 0xf6caa
+ lss sp, [00467h] ; 0f b2 26 67 04 ; 0xf6cac
+ pop eax ; 66 58 ; 0xf6cb1
+ pop DS ; 1f ; 0xf6cb3
+ xor ax, ax ; 31 c0 ; 0xf6cb4 system.c:889
+ call 06490h ; e8 d7 f7 ; 0xf6cb6
+ sti ; fb ; 0xf6cb9 system.c:892
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6cba system.c:894
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6cbe system.c:895
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6cc2 system.c:896
+ pop di ; 5f ; 0xf6cc5
+ pop si ; 5e ; 0xf6cc6
+ pop bp ; 5d ; 0xf6cc7
+ retn ; c3 ; 0xf6cc8
+ ; disGetNextSymbol 0xf6cc9 LB 0x4153 -> off=0x0 cb=0000000000000195 uValue=00000000000f56c9 'inv_op_handler'
+inv_op_handler: ; 0xf6cc9 LB 0x195
+ push bp ; 55 ; 0xf6cc9 invop.c:247
+ mov bp, sp ; 89 e5 ; 0xf6cca
+ push si ; 56 ; 0xf6ccc
+ push di ; 57 ; 0xf6ccd
+ push ax ; 50 ; 0xf6cce
+ push ax ; 50 ; 0xf6ccf
+ les bx, [bp+018h] ; c4 5e 18 ; 0xf6cd0 invop.c:249
+ cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6cd3 invop.c:251
+ jne short 06cdfh ; 75 06 ; 0xf6cd7
+ inc word [bp+018h] ; ff 46 18 ; 0xf6cd9 invop.c:253
+ jmp near 06e57h ; e9 78 01 ; 0xf6cdc invop.c:254
+ cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf6cdf
+ jne near 06e53h ; 0f 85 6b 01 ; 0xf6ce4
+ mov si, 00800h ; be 00 08 ; 0xf6ce8 invop.c:256
+ xor ax, ax ; 31 c0 ; 0xf6ceb
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6ced
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6cf0 invop.c:259
+ mov es, ax ; 8e c0 ; 0xf6cf3 invop.c:267
+ mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6cf5
+ sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6cf9
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6cfc
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6d00 invop.c:268
+ mov es, dx ; 8e c2 ; 0xf6d04
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6d06
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6d09 invop.c:269
+ mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6d0c
+ mov es, dx ; 8e c2 ; 0xf6d10
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6d12
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6d16 invop.c:270
+ mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6d19
+ mov es, dx ; 8e c2 ; 0xf6d1d
+ mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6d1f
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6d23 invop.c:273
+ movzx bx, byte [es:si+038h] ; 26 0f b6 5c 38 ; 0xf6d26
+ mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6d2b
+ mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6d2f invop.c:274
+ xor dx, dx ; 31 d2 ; 0xf6d33
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6d35
+ sal ax, 1 ; d1 e0 ; 0xf6d38
+ rcl dx, 1 ; d1 d2 ; 0xf6d3a
+ loop 06d38h ; e2 fa ; 0xf6d3c
+ cmp bx, dx ; 39 d3 ; 0xf6d3e
+ jne short 06d46h ; 75 04 ; 0xf6d40
+ cmp di, ax ; 39 c7 ; 0xf6d42
+ je short 06d4bh ; 74 05 ; 0xf6d44
+ mov word [bp-008h], strict word 00001h ; c7 46 f8 01 00 ; 0xf6d46 invop.c:275
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6d4b invop.c:276
+ movzx di, byte [es:si+04ah] ; 26 0f b6 7c 4a ; 0xf6d4e
+ mov bx, word [es:si+048h] ; 26 8b 5c 48 ; 0xf6d53
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6d57 invop.c:277
+ xor dx, dx ; 31 d2 ; 0xf6d5b
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6d5d
+ sal ax, 1 ; d1 e0 ; 0xf6d60
+ rcl dx, 1 ; d1 d2 ; 0xf6d62
+ loop 06d60h ; e2 fa ; 0xf6d64
+ cmp di, dx ; 39 d7 ; 0xf6d66
+ jne short 06d6eh ; 75 04 ; 0xf6d68
+ cmp bx, ax ; 39 c3 ; 0xf6d6a
+ je short 06d72h ; 74 04 ; 0xf6d6c
+ or byte [bp-008h], 002h ; 80 4e f8 02 ; 0xf6d6e invop.c:278
+ push strict byte 00000h ; 6a 00 ; 0xf6d72 invop.c:281
+ push 00800h ; 68 00 08 ; 0xf6d74
+ push strict byte 0001fh ; 6a 1f ; 0xf6d77
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6d79
+ lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6d7b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6d7f
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6d82 invop.c:284
+ mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6d85
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6d89
+ mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6d8d invop.c:285
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6d91
+ movzx dx, byte [es:si+039h] ; 26 0f b6 54 39 ; 0xf6d95 invop.c:286
+ sal dx, 008h ; c1 e2 08 ; 0xf6d9a
+ movzx ax, byte [es:si+038h] ; 26 0f b6 44 38 ; 0xf6d9d
+ or dx, ax ; 09 c2 ; 0xf6da2
+ mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6da4
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6da8 invop.c:287
+ mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6dae invop.c:290
+ mov word [es:si], ax ; 26 89 04 ; 0xf6db2
+ mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6db5 invop.c:291
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6db9
+ movzx dx, byte [es:si+04bh] ; 26 0f b6 54 4b ; 0xf6dbd invop.c:292
+ sal dx, 008h ; c1 e2 08 ; 0xf6dc2
+ movzx ax, byte [es:si+04ah] ; 26 0f b6 44 4a ; 0xf6dc5
+ or dx, ax ; 09 c2 ; 0xf6dca
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6dcc
+ movzx ax, byte [es:si+05ch] ; 26 0f b6 44 5c ; 0xf6dd0 invop.c:295
+ mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6dd5
+ push ax ; 50 ; 0xf6dd9 invop.c:296
+ push dx ; 52 ; 0xf6dda
+ push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6ddb
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6ddf
+ lidt [ss:bx] ; 36 0f 01 1f ; 0xf6de1
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6de5
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf6de8 invop.c:299
+ mov ax, 00080h ; b8 80 00 ; 0xf6deb
+ mov ss, ax ; 8e d0 ; 0xf6dee
+ mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6df0
+ mov ds, ax ; 8e d8 ; 0xf6df4
+ mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf6df6
+ mov es, ax ; 8e c0 ; 0xf6dfa
+ smsw ax ; 0f 01 e0 ; 0xf6dfc invop.c:300
+ inc ax ; 40 ; 0xf6dff
+ lmsw ax ; 0f 01 f0 ; 0xf6e00
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6e03
+ test cx, strict word 00001h ; f7 c1 01 00 ; 0xf6e06
+ je near 06e10h ; 0f 84 02 00 ; 0xf6e0a
+ mov es, ax ; 8e c0 ; 0xf6e0e
+ test cx, strict word 00002h ; f7 c1 02 00 ; 0xf6e10
+ je near 06e38h ; 0f 84 20 00 ; 0xf6e14
+ mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6e18
+ mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6e1d
+ mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6e22
+ mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6e27
+ mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6e2c
+ mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6e31
+ mov ds, ax ; 8e d8 ; 0xf6e36
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6e38
+ dec ax ; 48 ; 0xf6e3b
+ mov cr0, eax ; 0f 22 c0 ; 0xf6e3c
+ mov sp, strict word 00026h ; bc 26 00 ; 0xf6e3f invop.c:301
+ popaw ; 61 ; 0xf6e42
+ mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6e43
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6e48
+ mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6e4b
+ iret ; cf ; 0xf6e50
+ jmp short 06e57h ; eb 04 ; 0xf6e51 invop.c:353
+ sti ; fb ; 0xf6e53 invop.c:357
+ hlt ; f4 ; 0xf6e54 invop.c:358
+ jmp short 06e54h ; eb fd ; 0xf6e55
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6e57 invop.c:360
+ pop di ; 5f ; 0xf6e5a
+ pop si ; 5e ; 0xf6e5b
+ pop bp ; 5d ; 0xf6e5c
+ retn ; c3 ; 0xf6e5d
+ ; disGetNextSymbol 0xf6e5e LB 0x3fbe -> off=0x0 cb=0000000000000028 uValue=00000000000f585e 'init_rtc'
+init_rtc: ; 0xf6e5e LB 0x28
+ push bp ; 55 ; 0xf6e5e timepci.c:84
+ mov bp, sp ; 89 e5 ; 0xf6e5f
+ push dx ; 52 ; 0xf6e61
+ mov dx, strict word 00026h ; ba 26 00 ; 0xf6e62 timepci.c:86
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6e65
+ call 01787h ; e8 1c a9 ; 0xf6e68
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf6e6b timepci.c:87
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e6e
+ call 01787h ; e8 13 a9 ; 0xf6e71
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6e74 timepci.c:88
+ call 0176ah ; e8 f0 a8 ; 0xf6e77
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6e7a timepci.c:89
+ call 0176ah ; e8 ea a8 ; 0xf6e7d
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6e80 timepci.c:90
+ pop dx ; 5a ; 0xf6e83
+ pop bp ; 5d ; 0xf6e84
+ retn ; c3 ; 0xf6e85
+ ; disGetNextSymbol 0xf6e86 LB 0x3f96 -> off=0x0 cb=0000000000000021 uValue=00000000000f5886 'rtc_updating'
+rtc_updating: ; 0xf6e86 LB 0x21
+ push bp ; 55 ; 0xf6e86 timepci.c:92
+ mov bp, sp ; 89 e5 ; 0xf6e87
+ push dx ; 52 ; 0xf6e89
+ mov dx, 061a8h ; ba a8 61 ; 0xf6e8a timepci.c:105
+ dec dx ; 4a ; 0xf6e8d timepci.c:106
+ je short 06e9eh ; 74 0e ; 0xf6e8e
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6e90 timepci.c:107
+ call 0176ah ; e8 d4 a8 ; 0xf6e93
+ test AL, strict byte 080h ; a8 80 ; 0xf6e96
+ jne short 06e8dh ; 75 f3 ; 0xf6e98
+ xor ax, ax ; 31 c0 ; 0xf6e9a timepci.c:108
+ jmp short 06ea1h ; eb 03 ; 0xf6e9c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6e9e timepci.c:110
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6ea1 timepci.c:111
+ pop dx ; 5a ; 0xf6ea4
+ pop bp ; 5d ; 0xf6ea5
+ retn ; c3 ; 0xf6ea6
+ ; disGetNextSymbol 0xf6ea7 LB 0x3f75 -> off=0x0 cb=0000000000000091 uValue=00000000000f58a7 'int70_function'
+int70_function: ; 0xf6ea7 LB 0x91
+ push bp ; 55 ; 0xf6ea7 timepci.c:120
+ mov bp, sp ; 89 e5 ; 0xf6ea8
+ push si ; 56 ; 0xf6eaa
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6eab timepci.c:126
+ call 0176ah ; e8 b9 a8 ; 0xf6eae
+ mov bl, al ; 88 c3 ; 0xf6eb1
+ mov dh, al ; 88 c6 ; 0xf6eb3
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6eb5 timepci.c:127
+ call 0176ah ; e8 af a8 ; 0xf6eb8
+ mov dl, al ; 88 c2 ; 0xf6ebb
+ test bl, 060h ; f6 c3 60 ; 0xf6ebd timepci.c:129
+ je short 06f2fh ; 74 6d ; 0xf6ec0
+ test AL, strict byte 020h ; a8 20 ; 0xf6ec2 timepci.c:130
+ je short 06ecah ; 74 04 ; 0xf6ec4
+ sti ; fb ; 0xf6ec6 timepci.c:132
+ int 04ah ; cd 4a ; 0xf6ec7 timepci.c:133
+ cli ; fa ; 0xf6ec9 timepci.c:134
+ test dl, 040h ; f6 c2 40 ; 0xf6eca timepci.c:136
+ je short 06f2fh ; 74 60 ; 0xf6ecd
+ mov bx, 000a0h ; bb a0 00 ; 0xf6ecf timepci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6ed2
+ mov es, ax ; 8e c0 ; 0xf6ed5
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6ed7
+ test al, al ; 84 c0 ; 0xf6eda timepci.c:49
+ je short 06f2fh ; 74 51 ; 0xf6edc
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6ede timepci.c:68
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6ee1
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6ee4
+ test bx, bx ; 85 db ; 0xf6ee8 timepci.c:144
+ jne short 06f1dh ; 75 31 ; 0xf6eea
+ cmp ax, 003d1h ; 3d d1 03 ; 0xf6eec
+ jnc short 06f1dh ; 73 2c ; 0xf6eef
+ mov bx, 00098h ; bb 98 00 ; 0xf6ef1 timepci.c:58
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf6ef4
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6ef7 timepci.c:58
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6efa
+ mov si, 000a0h ; be a0 00 ; 0xf6efd timepci.c:53
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6f00
+ mov al, dh ; 88 f0 ; 0xf6f04 timepci.c:151
+ and AL, strict byte 037h ; 24 37 ; 0xf6f06
+ movzx dx, al ; 0f b6 d0 ; 0xf6f08
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6f0b
+ call 01787h ; e8 76 a8 ; 0xf6f0e
+ mov es, cx ; 8e c1 ; 0xf6f11 timepci.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f13
+ or AL, strict byte 080h ; 0c 80 ; 0xf6f16 timepci.c:49
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6f18 timepci.c:53
+ jmp short 06f2fh ; eb 12 ; 0xf6f1b timepci.c:153
+ add ax, 0fc2fh ; 05 2f fc ; 0xf6f1d timepci.c:155
+ mov dx, bx ; 89 da ; 0xf6f20
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6f22
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6f25 timepci.c:73
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6f28
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6f2b
+ call 0e030h ; e8 fe 70 ; 0xf6f2f timepci.c:161
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6f32 timepci.c:162
+ pop si ; 5e ; 0xf6f35
+ pop bp ; 5d ; 0xf6f36
+ retn ; c3 ; 0xf6f37
+ ; disGetNextSymbol 0xf6f38 LB 0x3ee4 -> off=0x10 cb=00000000000001c8 uValue=00000000000f5948 'int1a_function'
+ db 05fh, 06fh, 088h, 06fh, 0adh, 06fh, 0dfh, 06fh, 02eh, 070h, 066h, 070h, 0a9h, 070h, 000h, 071h
+int1a_function: ; 0xf6f48 LB 0x1c8
+ push bp ; 55 ; 0xf6f48 timepci.c:167
+ mov bp, sp ; 89 e5 ; 0xf6f49
+ sti ; fb ; 0xf6f4b timepci.c:173
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6f4c timepci.c:175
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf6f4f
+ jnbe near 06f84h ; 0f 87 2f 00 ; 0xf6f51
+ movzx bx, al ; 0f b6 d8 ; 0xf6f55
+ add bx, bx ; 01 db ; 0xf6f58
+ jmp word [cs:bx+06f38h] ; 2e ff a7 38 6f ; 0xf6f5a
+ cli ; fa ; 0xf6f5f timepci.c:177
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6f60 timepci.c:178
+ xor ax, ax ; 31 c0 ; 0xf6f63
+ mov es, ax ; 8e c0 ; 0xf6f65
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6f67
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf6f6a
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6f6d timepci.c:179
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6f70
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf6f73
+ mov bx, 00470h ; bb 70 04 ; 0xf6f76 timepci.c:180
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f79
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6f7c
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6f7f timepci.c:181
+ sti ; fb ; 0xf6f83 timepci.c:182
+ mov sp, bp ; 89 ec ; 0xf6f84 timepci.c:185
+ pop bp ; 5d ; 0xf6f86
+ retn ; c3 ; 0xf6f87
+ cli ; fa ; 0xf6f88 timepci.c:188
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6f89 timepci.c:189
+ xor ax, ax ; 31 c0 ; 0xf6f8c
+ mov es, ax ; 8e c0 ; 0xf6f8e
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6f90
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6f93
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6f96 timepci.c:190
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6f99
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6f9c
+ mov bx, 00470h ; bb 70 04 ; 0xf6f9f timepci.c:191
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6fa2
+ sti ; fb ; 0xf6fa6 timepci.c:192
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6fa7 timepci.c:193
+ jmp short 06f84h ; eb d7 ; 0xf6fab timepci.c:195
+ call 06e86h ; e8 d6 fe ; 0xf6fad timepci.c:198
+ test ax, ax ; 85 c0 ; 0xf6fb0
+ je short 06fb6h ; 74 02 ; 0xf6fb2
+ jmp short 06f84h ; eb ce ; 0xf6fb4 timepci.c:200
+ xor ax, ax ; 31 c0 ; 0xf6fb6 timepci.c:203
+ call 0176ah ; e8 af a7 ; 0xf6fb8
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6fbb
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6fbe timepci.c:204
+ call 0176ah ; e8 a6 a7 ; 0xf6fc1
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6fc4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6fc7 timepci.c:205
+ call 0176ah ; e8 9d a7 ; 0xf6fca
+ mov bl, al ; 88 c3 ; 0xf6fcd
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6fcf
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6fd2 timepci.c:206
+ call 0176ah ; e8 92 a7 ; 0xf6fd5
+ and AL, strict byte 001h ; 24 01 ; 0xf6fd8
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6fda
+ jmp short 07024h ; eb 45 ; 0xf6fdd
+ call 06e86h ; e8 a4 fe ; 0xf6fdf timepci.c:223
+ test ax, ax ; 85 c0 ; 0xf6fe2
+ je short 06fe9h ; 74 03 ; 0xf6fe4
+ call 06e5eh ; e8 75 fe ; 0xf6fe6 timepci.c:224
+ movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf6fe9 timepci.c:227
+ xor ax, ax ; 31 c0 ; 0xf6fed
+ call 01787h ; e8 95 a7 ; 0xf6fef
+ movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf6ff2 timepci.c:228
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6ff6
+ call 01787h ; e8 8b a7 ; 0xf6ff9
+ movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf6ffc timepci.c:229
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7000
+ call 01787h ; e8 81 a7 ; 0xf7003
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7006 timepci.c:231
+ call 0176ah ; e8 5e a7 ; 0xf7009
+ mov bl, al ; 88 c3 ; 0xf700c
+ and bl, 060h ; 80 e3 60 ; 0xf700e
+ or bl, 002h ; 80 cb 02 ; 0xf7011
+ mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf7014
+ and AL, strict byte 001h ; 24 01 ; 0xf7017
+ or bl, al ; 08 c3 ; 0xf7019
+ movzx dx, bl ; 0f b6 d3 ; 0xf701b timepci.c:233
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf701e
+ call 01787h ; e8 63 a7 ; 0xf7021
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf7024
+ mov byte [bp+012h], bl ; 88 5e 12 ; 0xf7028
+ jmp near 06f84h ; e9 56 ff ; 0xf702b
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf702e timepci.c:240
+ call 06e86h ; e8 51 fe ; 0xf7032 timepci.c:241
+ test ax, ax ; 85 c0 ; 0xf7035
+ je short 0703ch ; 74 03 ; 0xf7037
+ jmp near 06f84h ; e9 48 ff ; 0xf7039 timepci.c:243
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf703c timepci.c:245
+ call 0176ah ; e8 28 a7 ; 0xf703f
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf7042
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf7045 timepci.c:246
+ call 0176ah ; e8 1f a7 ; 0xf7048
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf704b
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf704e timepci.c:247
+ call 0176ah ; e8 16 a7 ; 0xf7051
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf7054
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf7057 timepci.c:248
+ call 0176ah ; e8 0d a7 ; 0xf705a
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf705d
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf7060 timepci.c:249
+ jmp near 06f84h ; e9 1e ff ; 0xf7063 timepci.c:251
+ call 06e86h ; e8 1d fe ; 0xf7066 timepci.c:264
+ test ax, ax ; 85 c0 ; 0xf7069
+ je short 07073h ; 74 06 ; 0xf706b
+ call 06e5eh ; e8 ee fd ; 0xf706d timepci.c:265
+ jmp near 06f84h ; e9 11 ff ; 0xf7070 timepci.c:267
+ movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf7073 timepci.c:269
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf7077
+ call 01787h ; e8 0a a7 ; 0xf707a
+ movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf707d timepci.c:270
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf7081
+ call 01787h ; e8 00 a7 ; 0xf7084
+ movzx dx, byte [bp+00eh] ; 0f b6 56 0e ; 0xf7087 timepci.c:271
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf708b
+ call 01787h ; e8 f6 a6 ; 0xf708e
+ movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf7091 timepci.c:272
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf7095
+ call 01787h ; e8 ec a6 ; 0xf7098
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf709b timepci.c:273
+ call 0176ah ; e8 c9 a6 ; 0xf709e
+ mov bl, al ; 88 c3 ; 0xf70a1
+ and bl, 07fh ; 80 e3 7f ; 0xf70a3
+ jmp near 0701bh ; e9 72 ff ; 0xf70a6
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf70a9 timepci.c:291
+ call 0176ah ; e8 bb a6 ; 0xf70ac
+ mov bl, al ; 88 c3 ; 0xf70af
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf70b1 timepci.c:292
+ test AL, strict byte 020h ; a8 20 ; 0xf70b6 timepci.c:293
+ je short 070bdh ; 74 03 ; 0xf70b8
+ jmp near 06f84h ; e9 c7 fe ; 0xf70ba timepci.c:296
+ call 06e86h ; e8 c6 fd ; 0xf70bd timepci.c:298
+ test ax, ax ; 85 c0 ; 0xf70c0
+ je short 070c7h ; 74 03 ; 0xf70c2
+ call 06e5eh ; e8 97 fd ; 0xf70c4 timepci.c:299
+ movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf70c7 timepci.c:302
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf70cb
+ call 01787h ; e8 b6 a6 ; 0xf70ce
+ movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf70d1 timepci.c:303
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf70d5
+ call 01787h ; e8 ac a6 ; 0xf70d8
+ movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf70db timepci.c:304
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf70df
+ call 01787h ; e8 a2 a6 ; 0xf70e2
+ mov dx, 000a1h ; ba a1 00 ; 0xf70e5 timepci.c:305
+ in AL, DX ; ec ; 0xf70e8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf70e9
+ and AL, strict byte 0feh ; 24 fe ; 0xf70eb
+ out DX, AL ; ee ; 0xf70ed
+ mov al, bl ; 88 d8 ; 0xf70ee timepci.c:307
+ and AL, strict byte 05fh ; 24 5f ; 0xf70f0
+ or AL, strict byte 020h ; 0c 20 ; 0xf70f2
+ movzx dx, al ; 0f b6 d0 ; 0xf70f4
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf70f7
+ call 01787h ; e8 8a a6 ; 0xf70fa
+ jmp near 06f84h ; e9 84 fe ; 0xf70fd timepci.c:309
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7100 timepci.c:322
+ call 0176ah ; e8 64 a6 ; 0xf7103
+ mov bl, al ; 88 c3 ; 0xf7106
+ and AL, strict byte 057h ; 24 57 ; 0xf7108 timepci.c:324
+ movzx dx, al ; 0f b6 d0 ; 0xf710a
+ jmp near 0701eh ; e9 0e ff ; 0xf710d
+ ; disGetNextSymbol 0xf7110 LB 0x3d0c -> off=0x0 cb=0000000000000034 uValue=00000000000f5b10 'send_to_mouse_ctrl'
+send_to_mouse_ctrl: ; 0xf7110 LB 0x34
+ push bp ; 55 ; 0xf7110 ps2mouse.c:87
+ mov bp, sp ; 89 e5 ; 0xf7111
+ push bx ; 53 ; 0xf7113
+ push dx ; 52 ; 0xf7114
+ mov bl, al ; 88 c3 ; 0xf7115
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf7117 ps2mouse.c:91
+ in AL, DX ; ec ; 0xf711a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf711b
+ test AL, strict byte 002h ; a8 02 ; 0xf711d
+ je short 0712fh ; 74 0e ; 0xf711f
+ push 0097eh ; 68 7e 09 ; 0xf7121 ps2mouse.c:92
+ push 011deh ; 68 de 11 ; 0xf7124
+ push strict byte 00007h ; 6a 07 ; 0xf7127
+ call 01a68h ; e8 3c a9 ; 0xf7129
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf712c
+ mov AL, strict byte 0d4h ; b0 d4 ; 0xf712f ps2mouse.c:93
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf7131
+ out DX, AL ; ee ; 0xf7134
+ mov al, bl ; 88 d8 ; 0xf7135 ps2mouse.c:94
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf7137
+ out DX, AL ; ee ; 0xf713a
+ xor al, bl ; 30 d8 ; 0xf713b ps2mouse.c:96
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf713d
+ pop dx ; 5a ; 0xf7140
+ pop bx ; 5b ; 0xf7141
+ pop bp ; 5d ; 0xf7142
+ retn ; c3 ; 0xf7143
+ ; disGetNextSymbol 0xf7144 LB 0x3cd8 -> off=0x0 cb=000000000000005c uValue=00000000000f5b44 'get_mouse_data'
+get_mouse_data: ; 0xf7144 LB 0x5c
+ push bp ; 55 ; 0xf7144 ps2mouse.c:99
+ mov bp, sp ; 89 e5 ; 0xf7145
+ push bx ; 53 ; 0xf7147
+ push cx ; 51 ; 0xf7148
+ push ax ; 50 ; 0xf7149
+ mov bx, ax ; 89 c3 ; 0xf714a
+ mov es, dx ; 8e c2 ; 0xf714c
+ mov cx, 02710h ; b9 10 27 ; 0xf714e ps2mouse.c:101
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf7151 ps2mouse.c:104
+ in AL, DX ; ec ; 0xf7154
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7155
+ and ax, strict word 00021h ; 25 21 00 ; 0xf7157
+ cmp ax, strict word 00021h ; 3d 21 00 ; 0xf715a
+ je short 07186h ; 74 27 ; 0xf715d
+ test cx, cx ; 85 c9 ; 0xf715f
+ je short 07186h ; 74 23 ; 0xf7161
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf7163 ps2mouse.c:107
+ in AL, DX ; ec ; 0xf7166
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7167
+ and AL, strict byte 010h ; 24 10 ; 0xf7169
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf716b
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf716e ps2mouse.c:108
+ in AL, DX ; ec ; 0xf7171
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7172
+ mov dx, ax ; 89 c2 ; 0xf7174
+ xor dh, ah ; 30 e6 ; 0xf7176
+ and dl, 010h ; 80 e2 10 ; 0xf7178
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf717b
+ cmp dx, ax ; 39 c2 ; 0xf717f
+ je short 0716eh ; 74 eb ; 0xf7181
+ dec cx ; 49 ; 0xf7183 ps2mouse.c:110
+ jmp short 07151h ; eb cb ; 0xf7184 ps2mouse.c:111
+ test cx, cx ; 85 c9 ; 0xf7186 ps2mouse.c:113
+ jne short 0718eh ; 75 04 ; 0xf7188
+ mov AL, strict byte 001h ; b0 01 ; 0xf718a ps2mouse.c:114
+ jmp short 07199h ; eb 0b ; 0xf718c
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf718e ps2mouse.c:116
+ in AL, DX ; ec ; 0xf7191
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7192
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7194 ps2mouse.c:117
+ xor al, al ; 30 c0 ; 0xf7197 ps2mouse.c:118
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7199 ps2mouse.c:119
+ pop cx ; 59 ; 0xf719c
+ pop bx ; 5b ; 0xf719d
+ pop bp ; 5d ; 0xf719e
+ retn ; c3 ; 0xf719f
+ ; disGetNextSymbol 0xf71a0 LB 0x3c7c -> off=0x0 cb=0000000000000032 uValue=00000000000f5ba0 'set_kbd_command_byte'
+set_kbd_command_byte: ; 0xf71a0 LB 0x32
+ push bp ; 55 ; 0xf71a0 ps2mouse.c:121
+ mov bp, sp ; 89 e5 ; 0xf71a1
+ push bx ; 53 ; 0xf71a3
+ push dx ; 52 ; 0xf71a4
+ mov bl, al ; 88 c3 ; 0xf71a5
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf71a7 ps2mouse.c:123
+ in AL, DX ; ec ; 0xf71aa
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf71ab
+ test AL, strict byte 002h ; a8 02 ; 0xf71ad
+ je short 071bfh ; 74 0e ; 0xf71af
+ push 00988h ; 68 88 09 ; 0xf71b1 ps2mouse.c:124
+ push 011deh ; 68 de 11 ; 0xf71b4
+ push strict byte 00007h ; 6a 07 ; 0xf71b7
+ call 01a68h ; e8 ac a8 ; 0xf71b9
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf71bc
+ mov AL, strict byte 060h ; b0 60 ; 0xf71bf ps2mouse.c:126
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf71c1
+ out DX, AL ; ee ; 0xf71c4
+ mov al, bl ; 88 d8 ; 0xf71c5 ps2mouse.c:127
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf71c7
+ out DX, AL ; ee ; 0xf71ca
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf71cb ps2mouse.c:128
+ pop dx ; 5a ; 0xf71ce
+ pop bx ; 5b ; 0xf71cf
+ pop bp ; 5d ; 0xf71d0
+ retn ; c3 ; 0xf71d1
+ ; disGetNextSymbol 0xf71d2 LB 0x3c4a -> off=0x0 cb=0000000000000094 uValue=00000000000f5bd2 'int74_function'
+int74_function: ; 0xf71d2 LB 0x94
+ push bp ; 55 ; 0xf71d2 ps2mouse.c:131
+ mov bp, sp ; 89 e5 ; 0xf71d3
+ push si ; 56 ; 0xf71d5
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf71d6 ps2mouse.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf71d9
+ mov es, ax ; 8e c0 ; 0xf71dc
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf71de
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf71e1 ps2mouse.c:139
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf71e6 ps2mouse.c:141
+ in AL, DX ; ec ; 0xf71e9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf71ea
+ and AL, strict byte 021h ; 24 21 ; 0xf71ec ps2mouse.c:142
+ cmp AL, strict byte 021h ; 3c 21 ; 0xf71ee
+ jne short 07260h ; 75 6e ; 0xf71f0
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf71f2 ps2mouse.c:145
+ in AL, DX ; ec ; 0xf71f5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf71f6
+ mov cl, al ; 88 c1 ; 0xf71f8
+ mov si, strict word 00026h ; be 26 00 ; 0xf71fa ps2mouse.c:48
+ mov es, bx ; 8e c3 ; 0xf71fd
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf71ff
+ mov si, strict word 00027h ; be 27 00 ; 0xf7202 ps2mouse.c:48
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf7205
+ mov dl, ah ; 88 e2 ; 0xf7208 ps2mouse.c:49
+ test ah, 080h ; f6 c4 80 ; 0xf720a ps2mouse.c:151
+ je short 07260h ; 74 51 ; 0xf720d
+ mov dh, dl ; 88 d6 ; 0xf720f ps2mouse.c:155
+ and dh, 007h ; 80 e6 07 ; 0xf7211
+ mov ah, al ; 88 c4 ; 0xf7214 ps2mouse.c:156
+ and ah, 007h ; 80 e4 07 ; 0xf7216
+ movzx si, ah ; 0f b6 f4 ; 0xf7219 ps2mouse.c:157
+ add si, strict byte 00028h ; 83 c6 28 ; 0xf721c
+ mov es, bx ; 8e c3 ; 0xf721f ps2mouse.c:53
+ mov byte [es:si], cl ; 26 88 0c ; 0xf7221
+ cmp ah, dh ; 38 f4 ; 0xf7224 ps2mouse.c:159
+ jc short 07256h ; 72 2e ; 0xf7226
+ mov si, strict word 00028h ; be 28 00 ; 0xf7228 ps2mouse.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf722b
+ xor ah, ah ; 30 e4 ; 0xf722e ps2mouse.c:49
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf7230
+ mov si, strict word 00029h ; be 29 00 ; 0xf7233 ps2mouse.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7236
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf7239 ps2mouse.c:49
+ mov si, strict word 0002ah ; be 2a 00 ; 0xf723c ps2mouse.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf723f
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7242 ps2mouse.c:49
+ xor al, al ; 30 c0 ; 0xf7245 ps2mouse.c:164
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf7247
+ test dl, 080h ; f6 c2 80 ; 0xf724a ps2mouse.c:167
+ je short 07258h ; 74 09 ; 0xf724d
+ mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf724f ps2mouse.c:168
+ jmp short 07258h ; eb 02 ; 0xf7254 ps2mouse.c:170
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7256 ps2mouse.c:171
+ mov si, strict word 00026h ; be 26 00 ; 0xf7258 ps2mouse.c:53
+ mov es, bx ; 8e c3 ; 0xf725b
+ mov byte [es:si], al ; 26 88 04 ; 0xf725d
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf7260 ps2mouse.c:174
+ pop si ; 5e ; 0xf7263
+ pop bp ; 5d ; 0xf7264
+ retn ; c3 ; 0xf7265
+ ; disGetNextSymbol 0xf7266 LB 0x3bb6 -> off=0x10 cb=0000000000000370 uValue=00000000000f5c76 'int15_function_mouse'
+ db 0b9h, 072h, 027h, 073h, 0a2h, 073h, 033h, 074h, 0a1h, 074h, 005h, 073h, 0c9h, 074h, 08eh, 075h
+int15_function_mouse: ; 0xf7276 LB 0x370
+ push bp ; 55 ; 0xf7276 ps2mouse.c:176
+ mov bp, sp ; 89 e5 ; 0xf7277
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7279
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf727c ps2mouse.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf727f
+ mov es, ax ; 8e c0 ; 0xf7282
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7284
+ cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf7287 ps2mouse.c:198
+ jbe short 07298h ; 76 0b ; 0xf728b
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf728d ps2mouse.c:201
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7291 ps2mouse.c:202
+ jmp near 075e2h ; e9 4a 03 ; 0xf7295 ps2mouse.c:203
+ mov ax, strict word 00065h ; b8 65 00 ; 0xf7298 ps2mouse.c:207
+ call 071a0h ; e8 02 ff ; 0xf729b
+ and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf729e ps2mouse.c:208
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf72a2 ps2mouse.c:209
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf72a6 ps2mouse.c:211
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf72a9
+ jnbe near 075c9h ; 0f 87 1a 03 ; 0xf72ab
+ movzx bx, al ; 0f b6 d8 ; 0xf72af
+ add bx, bx ; 01 db ; 0xf72b2
+ jmp word [cs:bx+07266h] ; 2e ff a7 66 72 ; 0xf72b4
+ cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf72b9 ps2mouse.c:214
+ jnbe near 075d4h ; 0f 87 13 03 ; 0xf72bd
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf72c1 ps2mouse.c:48
+ mov es, dx ; 8e c2 ; 0xf72c4
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf72c6
+ test AL, strict byte 080h ; a8 80 ; 0xf72c9 ps2mouse.c:222
+ jne short 072d8h ; 75 0b ; 0xf72cb
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72cd ps2mouse.c:224
+ mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf72d1 ps2mouse.c:225
+ jmp near 075dch ; e9 04 03 ; 0xf72d5 ps2mouse.c:226
+ cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf72d8 ps2mouse.c:228
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf72dc
+ add AL, strict byte 0f4h ; 04 f4 ; 0xf72df
+ xor ah, ah ; 30 e4 ; 0xf72e1 ps2mouse.c:236
+ call 07110h ; e8 2a fe ; 0xf72e3
+ test al, al ; 84 c0 ; 0xf72e6 ps2mouse.c:237
+ jne near 0756ah ; 0f 85 7e 02 ; 0xf72e8
+ mov dx, ss ; 8c d2 ; 0xf72ec ps2mouse.c:238
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf72ee
+ call 07144h ; e8 50 fe ; 0xf72f1
+ test al, al ; 84 c0 ; 0xf72f4 ps2mouse.c:239
+ je near 075dch ; 0f 84 e2 02 ; 0xf72f6
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf72fa
+ jne near 0756ah ; 0f 85 68 02 ; 0xf72fe
+ jmp near 075dch ; e9 d7 02 ; 0xf7302 ps2mouse.c:241
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7305 ps2mouse.c:252
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7308
+ jc short 07310h ; 72 04 ; 0xf730a
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf730c
+ jbe short 07313h ; 76 03 ; 0xf730e
+ jmp near 07496h ; e9 83 01 ; 0xf7310
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7313 ps2mouse.c:48
+ mov es, dx ; 8e c2 ; 0xf7316
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7318
+ mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf731b ps2mouse.c:258
+ db 0feh, 0cch
+ ; dec ah ; fe cc ; 0xf731e
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf7320
+ or al, ah ; 08 e0 ; 0xf7322
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7324 ps2mouse.c:53
+ mov bx, strict word 00026h ; bb 26 00 ; 0xf7327 ps2mouse.c:48
+ mov es, dx ; 8e c2 ; 0xf732a
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf732c
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf732f ps2mouse.c:266
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7331 ps2mouse.c:53
+ mov ax, 000ffh ; b8 ff 00 ; 0xf7334 ps2mouse.c:268
+ call 07110h ; e8 d6 fd ; 0xf7337
+ test al, al ; 84 c0 ; 0xf733a ps2mouse.c:269
+ jne near 0756ah ; 0f 85 2a 02 ; 0xf733c
+ mov dx, ss ; 8c d2 ; 0xf7340 ps2mouse.c:270
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7342
+ call 07144h ; e8 fc fd ; 0xf7345
+ mov dl, al ; 88 c2 ; 0xf7348
+ cmp byte [bp-004h], 0feh ; 80 7e fc fe ; 0xf734a ps2mouse.c:272
+ jne short 0735bh ; 75 0b ; 0xf734e
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7350 ps2mouse.c:273
+ mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf7354 ps2mouse.c:274
+ jmp near 075dch ; e9 81 02 ; 0xf7358 ps2mouse.c:275
+ cmp byte [bp-004h], 0fah ; 80 7e fc fa ; 0xf735b ps2mouse.c:277
+ je short 07371h ; 74 10 ; 0xf735f
+ movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf7361 ps2mouse.c:278
+ push ax ; 50 ; 0xf7365
+ push 00993h ; 68 93 09 ; 0xf7366
+ push strict byte 00007h ; 6a 07 ; 0xf7369
+ call 01a68h ; e8 fa a6 ; 0xf736b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf736e
+ test dl, dl ; 84 d2 ; 0xf7371 ps2mouse.c:279
+ jne near 0756ah ; 0f 85 f3 01 ; 0xf7373
+ mov dx, ss ; 8c d2 ; 0xf7377 ps2mouse.c:280
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7379
+ call 07144h ; e8 c5 fd ; 0xf737c
+ test al, al ; 84 c0 ; 0xf737f ps2mouse.c:281
+ jne near 0756ah ; 0f 85 e5 01 ; 0xf7381
+ mov dx, ss ; 8c d2 ; 0xf7385 ps2mouse.c:282
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7387
+ call 07144h ; e8 b7 fd ; 0xf738a
+ test al, al ; 84 c0 ; 0xf738d ps2mouse.c:283
+ jne near 0756ah ; 0f 85 d7 01 ; 0xf738f
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7393 ps2mouse.c:285
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf7396
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7399 ps2mouse.c:286
+ mov byte [bp+00dh], al ; 88 46 0d ; 0xf739c
+ jmp near 075dch ; e9 3a 02 ; 0xf739f ps2mouse.c:287
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf73a2 ps2mouse.c:300
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf73a5
+ jc short 073b9h ; 72 10 ; 0xf73a7
+ jbe short 073d7h ; 76 2c ; 0xf73a9
+ cmp AL, strict byte 006h ; 3c 06 ; 0xf73ab
+ je short 073e9h ; 74 3a ; 0xf73ad
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf73af
+ je short 073e3h ; 74 30 ; 0xf73b1
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf73b3
+ je short 073ddh ; 74 26 ; 0xf73b5
+ jmp short 073efh ; eb 36 ; 0xf73b7
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf73b9
+ je short 073d1h ; 74 14 ; 0xf73bb
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf73bd
+ je short 073cbh ; 74 0a ; 0xf73bf
+ test al, al ; 84 c0 ; 0xf73c1
+ jne short 073efh ; 75 2a ; 0xf73c3
+ mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf73c5 ps2mouse.c:301
+ jmp short 073f3h ; eb 28 ; 0xf73c9
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf73cb ps2mouse.c:302
+ jmp short 073f3h ; eb 22 ; 0xf73cf
+ mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf73d1 ps2mouse.c:303
+ jmp short 073f3h ; eb 1c ; 0xf73d5
+ mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf73d7 ps2mouse.c:304
+ jmp short 073f3h ; eb 16 ; 0xf73db
+ mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf73dd ps2mouse.c:305
+ jmp short 073f3h ; eb 10 ; 0xf73e1
+ mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf73e3 ps2mouse.c:306
+ jmp short 073f3h ; eb 0a ; 0xf73e7
+ mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf73e9 ps2mouse.c:307
+ jmp short 073f3h ; eb 04 ; 0xf73ed
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf73ef ps2mouse.c:308
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf73f3 ps2mouse.c:310
+ jbe short 07428h ; 76 2f ; 0xf73f7
+ mov ax, 000f3h ; b8 f3 00 ; 0xf73f9 ps2mouse.c:311
+ call 07110h ; e8 11 fd ; 0xf73fc
+ test al, al ; 84 c0 ; 0xf73ff ps2mouse.c:312
+ jne short 0741dh ; 75 1a ; 0xf7401
+ mov dx, ss ; 8c d2 ; 0xf7403 ps2mouse.c:313
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7405
+ call 07144h ; e8 39 fd ; 0xf7408
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf740b ps2mouse.c:314
+ call 07110h ; e8 fe fc ; 0xf740f
+ mov dx, ss ; 8c d2 ; 0xf7412 ps2mouse.c:315
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7414
+ call 07144h ; e8 2a fd ; 0xf7417
+ jmp near 075dch ; e9 bf 01 ; 0xf741a ps2mouse.c:317
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf741d ps2mouse.c:319
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7421 ps2mouse.c:320
+ jmp near 075dch ; e9 b4 01 ; 0xf7425 ps2mouse.c:322
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7428 ps2mouse.c:324
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf742c ps2mouse.c:325
+ jmp near 075dch ; e9 a9 01 ; 0xf7430 ps2mouse.c:327
+ cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf7433 ps2mouse.c:336
+ jnc short 07496h ; 73 5d ; 0xf7437
+ mov ax, 000e8h ; b8 e8 00 ; 0xf7439 ps2mouse.c:337
+ call 07110h ; e8 d1 fc ; 0xf743c
+ test al, al ; 84 c0 ; 0xf743f ps2mouse.c:338
+ jne short 0748bh ; 75 48 ; 0xf7441
+ mov dx, ss ; 8c d2 ; 0xf7443 ps2mouse.c:339
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7445
+ call 07144h ; e8 f9 fc ; 0xf7448
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf744b ps2mouse.c:340
+ je short 07461h ; 74 10 ; 0xf744f
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7451 ps2mouse.c:341
+ push ax ; 50 ; 0xf7455
+ push 009beh ; 68 be 09 ; 0xf7456
+ push strict byte 00007h ; 6a 07 ; 0xf7459
+ call 01a68h ; e8 0a a6 ; 0xf745b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf745e
+ movzx ax, byte [bp+00dh] ; 0f b6 46 0d ; 0xf7461 ps2mouse.c:342
+ call 07110h ; e8 a8 fc ; 0xf7465
+ mov dx, ss ; 8c d2 ; 0xf7468 ps2mouse.c:343
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf746a
+ call 07144h ; e8 d4 fc ; 0xf746d
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7470 ps2mouse.c:344
+ je near 075dch ; 0f 84 64 01 ; 0xf7474
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7478 ps2mouse.c:345
+ push ax ; 50 ; 0xf747c
+ push 009beh ; 68 be 09 ; 0xf747d
+ push strict byte 00007h ; 6a 07 ; 0xf7480
+ call 01a68h ; e8 e3 a5 ; 0xf7482
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7485
+ jmp near 075dch ; e9 51 01 ; 0xf7488 ps2mouse.c:347
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf748b ps2mouse.c:349
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf748f ps2mouse.c:350
+ jmp near 075dch ; e9 46 01 ; 0xf7493 ps2mouse.c:352
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7496 ps2mouse.c:354
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf749a ps2mouse.c:355
+ jmp near 075dch ; e9 3b 01 ; 0xf749e ps2mouse.c:357
+ mov ax, 000f2h ; b8 f2 00 ; 0xf74a1 ps2mouse.c:361
+ call 07110h ; e8 69 fc ; 0xf74a4
+ test al, al ; 84 c0 ; 0xf74a7 ps2mouse.c:362
+ jne short 074beh ; 75 13 ; 0xf74a9
+ mov dx, ss ; 8c d2 ; 0xf74ab ps2mouse.c:363
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf74ad
+ call 07144h ; e8 91 fc ; 0xf74b0
+ mov dx, ss ; 8c d2 ; 0xf74b3 ps2mouse.c:364
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf74b5
+ call 07144h ; e8 89 fc ; 0xf74b8
+ jmp near 07399h ; e9 db fe ; 0xf74bb
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf74be ps2mouse.c:365
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf74c2 ps2mouse.c:370
+ jmp near 075dch ; e9 13 01 ; 0xf74c6 ps2mouse.c:372
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf74c9 ps2mouse.c:376
+ test al, al ; 84 c0 ; 0xf74cc
+ jbe short 074d7h ; 76 07 ; 0xf74ce
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf74d0
+ jbe short 07540h ; 76 6c ; 0xf74d2
+ jmp near 07574h ; e9 9d 00 ; 0xf74d4
+ mov ax, 000e9h ; b8 e9 00 ; 0xf74d7 ps2mouse.c:378
+ call 07110h ; e8 33 fc ; 0xf74da
+ test al, al ; 84 c0 ; 0xf74dd ps2mouse.c:379
+ jne near 0756ah ; 0f 85 87 00 ; 0xf74df
+ mov dx, ss ; 8c d2 ; 0xf74e3 ps2mouse.c:380
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf74e5
+ call 07144h ; e8 59 fc ; 0xf74e8
+ mov dl, al ; 88 c2 ; 0xf74eb
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf74ed ps2mouse.c:381
+ je short 07503h ; 74 10 ; 0xf74f1
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf74f3 ps2mouse.c:382
+ push ax ; 50 ; 0xf74f7
+ push 009beh ; 68 be 09 ; 0xf74f8
+ push strict byte 00007h ; 6a 07 ; 0xf74fb
+ call 01a68h ; e8 68 a5 ; 0xf74fd
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7500
+ test dl, dl ; 84 d2 ; 0xf7503 ps2mouse.c:383
+ jne short 0756ah ; 75 63 ; 0xf7505
+ mov dx, ss ; 8c d2 ; 0xf7507 ps2mouse.c:384
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7509
+ call 07144h ; e8 35 fc ; 0xf750c
+ test al, al ; 84 c0 ; 0xf750f ps2mouse.c:385
+ jne short 0756ah ; 75 57 ; 0xf7511
+ mov dx, ss ; 8c d2 ; 0xf7513 ps2mouse.c:386
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7515
+ call 07144h ; e8 29 fc ; 0xf7518
+ test al, al ; 84 c0 ; 0xf751b ps2mouse.c:387
+ jne short 0756ah ; 75 4b ; 0xf751d
+ mov dx, ss ; 8c d2 ; 0xf751f ps2mouse.c:388
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7521
+ call 07144h ; e8 1d fc ; 0xf7524
+ test al, al ; 84 c0 ; 0xf7527 ps2mouse.c:389
+ jne short 0756ah ; 75 3f ; 0xf7529
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf752b ps2mouse.c:390
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf752e
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7531 ps2mouse.c:391
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf7534
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf7537 ps2mouse.c:392
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf753a
+ jmp near 075dch ; e9 9c 00 ; 0xf753d ps2mouse.c:394
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7540 ps2mouse.c:408
+ jne short 07549h ; 75 05 ; 0xf7542
+ mov ax, 000e6h ; b8 e6 00 ; 0xf7544 ps2mouse.c:409
+ jmp short 0754ch ; eb 03 ; 0xf7547 ps2mouse.c:410
+ mov ax, 000e7h ; b8 e7 00 ; 0xf7549 ps2mouse.c:411
+ call 07110h ; e8 c1 fb ; 0xf754c
+ mov dl, al ; 88 c2 ; 0xf754f
+ test dl, dl ; 84 d2 ; 0xf7551 ps2mouse.c:413
+ jne short 07564h ; 75 0f ; 0xf7553
+ mov dx, ss ; 8c d2 ; 0xf7555 ps2mouse.c:414
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7557
+ call 07144h ; e8 e7 fb ; 0xf755a
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf755d ps2mouse.c:415
+ db 00fh, 095h, 0c2h
+ ; setne dl ; 0f 95 c2 ; 0xf7561
+ test dl, dl ; 84 d2 ; 0xf7564 ps2mouse.c:417
+ je near 075dch ; 0f 84 72 00 ; 0xf7566
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf756a ps2mouse.c:419
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf756e ps2mouse.c:420
+ jmp short 075dch ; eb 68 ; 0xf7572 ps2mouse.c:422
+ movzx ax, byte [bp+00dh] ; 0f b6 46 0d ; 0xf7574 ps2mouse.c:425
+ push ax ; 50 ; 0xf7578
+ push 009eah ; 68 ea 09 ; 0xf7579
+ push strict byte 00007h ; 6a 07 ; 0xf757c
+ call 01a68h ; e8 e7 a4 ; 0xf757e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7581
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7584 ps2mouse.c:427
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7588 ps2mouse.c:428
+ jmp short 075dch ; eb 4e ; 0xf758c ps2mouse.c:430
+ mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf758e ps2mouse.c:435
+ mov bx, strict word 00022h ; bb 22 00 ; 0xf7591 ps2mouse.c:63
+ mov es, dx ; 8e c2 ; 0xf7594
+ mov word [es:bx], cx ; 26 89 0f ; 0xf7596
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf7599 ps2mouse.c:63
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf759c
+ mov word [es:bx], ax ; 26 89 07 ; 0xf759f
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf75a2 ps2mouse.c:48
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf75a5
+ mov al, bl ; 88 d8 ; 0xf75a8 ps2mouse.c:49
+ test cx, cx ; 85 c9 ; 0xf75aa ps2mouse.c:439
+ jne short 075bdh ; 75 0f ; 0xf75ac
+ cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf75ae
+ jne short 075bdh ; 75 09 ; 0xf75b2
+ test bl, 080h ; f6 c3 80 ; 0xf75b4 ps2mouse.c:441
+ je short 075bfh ; 74 06 ; 0xf75b7
+ and AL, strict byte 07fh ; 24 7f ; 0xf75b9 ps2mouse.c:442
+ jmp short 075bfh ; eb 02 ; 0xf75bb ps2mouse.c:445
+ or AL, strict byte 080h ; 0c 80 ; 0xf75bd ps2mouse.c:447
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf75bf ps2mouse.c:53
+ mov es, dx ; 8e c2 ; 0xf75c2
+ mov byte [es:bx], al ; 26 88 07 ; 0xf75c4
+ jmp short 075dch ; eb 13 ; 0xf75c7 ps2mouse.c:450
+ push 00a04h ; 68 04 0a ; 0xf75c9 ps2mouse.c:453
+ push strict byte 00007h ; 6a 07 ; 0xf75cc
+ call 01a68h ; e8 97 a4 ; 0xf75ce
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75d1
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf75d4 ps2mouse.c:455
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf75d8 ps2mouse.c:456
+ mov ax, strict word 00047h ; b8 47 00 ; 0xf75dc ps2mouse.c:460
+ call 071a0h ; e8 be fb ; 0xf75df
+ mov sp, bp ; 89 ec ; 0xf75e2 ps2mouse.c:461
+ pop bp ; 5d ; 0xf75e4
+ retn ; c3 ; 0xf75e5
+ ; disGetNextSymbol 0xf75e6 LB 0x3836 -> off=0x0 cb=00000000000000b2 uValue=00000000000f5fe6 'int17_function'
+int17_function: ; 0xf75e6 LB 0xb2
+ push bp ; 55 ; 0xf75e6 parallel.c:70
+ mov bp, sp ; 89 e5 ; 0xf75e7
+ push si ; 56 ; 0xf75e9
+ push di ; 57 ; 0xf75ea
+ push ax ; 50 ; 0xf75eb
+ sti ; fb ; 0xf75ec parallel.c:75
+ mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf75ed parallel.c:77
+ add bx, bx ; 01 db ; 0xf75f0
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf75f2
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf75f5 parallel.c:58
+ mov es, ax ; 8e c0 ; 0xf75f8
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf75fa
+ mov si, bx ; 89 de ; 0xf75fd parallel.c:59
+ cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf75ff parallel.c:78
+ jnc near 0768dh ; 0f 83 86 00 ; 0xf7603
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7607
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf760a
+ jnc near 0768dh ; 0f 83 7c 00 ; 0xf760d
+ test bx, bx ; 85 db ; 0xf7611
+ jbe near 0768dh ; 0f 86 76 00 ; 0xf7613
+ mov di, ax ; 89 c7 ; 0xf7617 parallel.c:79
+ add di, strict byte 00078h ; 83 c7 78 ; 0xf7619
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf761c parallel.c:48
+ movzx cx, al ; 0f b6 c8 ; 0xf761f parallel.c:49
+ sal cx, 008h ; c1 e1 08 ; 0xf7622
+ cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf7625 parallel.c:80
+ jne short 07658h ; 75 2d ; 0xf7629
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf762b parallel.c:81
+ mov dx, bx ; 89 da ; 0xf762e
+ out DX, AL ; ee ; 0xf7630
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf7631 parallel.c:82
+ in AL, DX ; ec ; 0xf7634
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7635
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf7637
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf763a parallel.c:83
+ or AL, strict byte 001h ; 0c 01 ; 0xf763d
+ out DX, AL ; ee ; 0xf763f
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7640 parallel.c:84
+ and AL, strict byte 0feh ; 24 fe ; 0xf7644
+ out DX, AL ; ee ; 0xf7646
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf7647 parallel.c:85
+ in AL, DX ; ec ; 0xf764a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf764b
+ test AL, strict byte 040h ; a8 40 ; 0xf764d
+ je short 07658h ; 74 07 ; 0xf764f
+ test cx, cx ; 85 c9 ; 0xf7651
+ je short 07658h ; 74 03 ; 0xf7653
+ dec cx ; 49 ; 0xf7655 parallel.c:86
+ jmp short 07647h ; eb ef ; 0xf7656 parallel.c:87
+ cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf7658 parallel.c:89
+ jne short 07674h ; 75 16 ; 0xf765c
+ lea dx, [si+002h] ; 8d 54 02 ; 0xf765e parallel.c:90
+ in AL, DX ; ec ; 0xf7661
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7662
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf7664
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7667 parallel.c:91
+ and AL, strict byte 0fbh ; 24 fb ; 0xf766b
+ out DX, AL ; ee ; 0xf766d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf766e parallel.c:92
+ or AL, strict byte 004h ; 0c 04 ; 0xf7671
+ out DX, AL ; ee ; 0xf7673
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf7674 parallel.c:94
+ in AL, DX ; ec ; 0xf7677
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7678
+ xor AL, strict byte 048h ; 34 48 ; 0xf767a parallel.c:95
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf767c
+ test cx, cx ; 85 c9 ; 0xf767f parallel.c:96
+ jne short 07687h ; 75 04 ; 0xf7681
+ or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf7683
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf7687 parallel.c:97
+ jmp short 07691h ; eb 04 ; 0xf768b parallel.c:98
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf768d parallel.c:99
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7691 parallel.c:101
+ pop di ; 5f ; 0xf7694
+ pop si ; 5e ; 0xf7695
+ pop bp ; 5d ; 0xf7696
+ retn ; c3 ; 0xf7697
+ ; disGetNextSymbol 0xf7698 LB 0x3784 -> off=0x0 cb=00000000000000b8 uValue=00000000000f6098 '_wait_'
+_wait_: ; 0xf7698 LB 0xb8
+ push bp ; 55 ; 0xf7698 logo.c:181
+ mov bp, sp ; 89 e5 ; 0xf7699
+ push bx ; 53 ; 0xf769b
+ push cx ; 51 ; 0xf769c
+ push si ; 56 ; 0xf769d
+ push di ; 57 ; 0xf769e
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf769f
+ mov di, ax ; 89 c7 ; 0xf76a2
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf76a4
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf76a7 logo.c:186
+ pushfw ; 9c ; 0xf76ab logo.c:192
+ pop ax ; 58 ; 0xf76ac
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf76ad
+ sti ; fb ; 0xf76b0 logo.c:193
+ xor dx, dx ; 31 d2 ; 0xf76b1 logo.c:199
+ mov bx, 0046ch ; bb 6c 04 ; 0xf76b3 logo.c:68
+ mov es, dx ; 8e c2 ; 0xf76b6
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf76b8
+ mov cx, word [es:bx+002h] ; 26 8b 4f 02 ; 0xf76bb
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf76bf logo.c:69
+ hlt ; f4 ; 0xf76c2 logo.c:203
+ mov bx, 0046ch ; bb 6c 04 ; 0xf76c3 logo.c:68
+ xor ax, ax ; 31 c0 ; 0xf76c6
+ mov es, ax ; 8e c0 ; 0xf76c8
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf76ca
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf76cd
+ mov bx, si ; 89 f3 ; 0xf76d1 logo.c:69
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf76d3
+ cmp ax, cx ; 39 c8 ; 0xf76d6 logo.c:205
+ jnbe short 076e1h ; 77 07 ; 0xf76d8
+ jne short 076e8h ; 75 0c ; 0xf76da
+ cmp si, word [bp-00eh] ; 3b 76 f2 ; 0xf76dc
+ jbe short 076e8h ; 76 07 ; 0xf76df
+ sub si, word [bp-00eh] ; 2b 76 f2 ; 0xf76e1 logo.c:207
+ sbb ax, cx ; 19 c8 ; 0xf76e4
+ jmp short 076f3h ; eb 0b ; 0xf76e6 logo.c:210
+ cmp ax, cx ; 39 c8 ; 0xf76e8
+ jc short 076f3h ; 72 07 ; 0xf76ea
+ jne short 076f7h ; 75 09 ; 0xf76ec
+ cmp si, word [bp-00eh] ; 3b 76 f2 ; 0xf76ee
+ jnc short 076f7h ; 73 04 ; 0xf76f1
+ sub di, si ; 29 f7 ; 0xf76f3 logo.c:211
+ sbb dx, ax ; 19 c2 ; 0xf76f5
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf76f7 logo.c:212
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf76fa
+ mov ax, 00100h ; b8 00 01 ; 0xf76fd logo.c:214
+ int 016h ; cd 16 ; 0xf7700
+ je near 0770bh ; 0f 84 05 00 ; 0xf7702
+ mov AL, strict byte 001h ; b0 01 ; 0xf7706
+ jmp near 0770dh ; e9 02 00 ; 0xf7708
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf770b
+ test al, al ; 84 c0 ; 0xf770d
+ je short 07735h ; 74 24 ; 0xf770f
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7711 logo.c:216
+ int 016h ; cd 16 ; 0xf7713
+ xchg ah, al ; 86 c4 ; 0xf7715
+ mov bl, al ; 88 c3 ; 0xf7717
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7719
+ movzx ax, bl ; 0f b6 c3 ; 0xf771c logo.c:217
+ push ax ; 50 ; 0xf771f
+ push 00a26h ; 68 26 0a ; 0xf7720
+ push strict byte 00004h ; 6a 04 ; 0xf7723
+ call 01a68h ; e8 40 a3 ; 0xf7725
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7728
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf772b logo.c:218
+ je short 07735h ; 74 04 ; 0xf772f
+ mov al, bl ; 88 d8 ; 0xf7731 logo.c:219
+ jmp short 07747h ; eb 12 ; 0xf7733
+ test dx, dx ; 85 d2 ; 0xf7735 logo.c:221
+ jnle short 076c2h ; 7f 89 ; 0xf7737
+ jne short 0773fh ; 75 04 ; 0xf7739
+ test di, di ; 85 ff ; 0xf773b
+ jnbe short 076c2h ; 77 83 ; 0xf773d
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf773f logo.c:222
+ push ax ; 50 ; 0xf7742
+ popfw ; 9d ; 0xf7743
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7744 logo.c:223
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7747 logo.c:224
+ pop di ; 5f ; 0xf774a
+ pop si ; 5e ; 0xf774b
+ pop cx ; 59 ; 0xf774c
+ pop bx ; 5b ; 0xf774d
+ pop bp ; 5d ; 0xf774e
+ retn ; c3 ; 0xf774f
+ ; disGetNextSymbol 0xf7750 LB 0x36cc -> off=0x0 cb=0000000000000016 uValue=00000000000f6150 'read_logo_byte'
+read_logo_byte: ; 0xf7750 LB 0x16
+ push bp ; 55 ; 0xf7750 logo.c:226
+ mov bp, sp ; 89 e5 ; 0xf7751
+ push dx ; 52 ; 0xf7753
+ xor ah, ah ; 30 e4 ; 0xf7754 logo.c:228
+ or ah, 001h ; 80 cc 01 ; 0xf7756
+ mov dx, 003b8h ; ba b8 03 ; 0xf7759
+ out DX, ax ; ef ; 0xf775c
+ in AL, DX ; ec ; 0xf775d logo.c:229
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf775e
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf7760 logo.c:230
+ pop dx ; 5a ; 0xf7763
+ pop bp ; 5d ; 0xf7764
+ retn ; c3 ; 0xf7765
+ ; disGetNextSymbol 0xf7766 LB 0x36b6 -> off=0x0 cb=0000000000000014 uValue=00000000000f6166 'read_logo_word'
+read_logo_word: ; 0xf7766 LB 0x14
+ push bp ; 55 ; 0xf7766 logo.c:232
+ mov bp, sp ; 89 e5 ; 0xf7767
+ push dx ; 52 ; 0xf7769
+ xor ah, ah ; 30 e4 ; 0xf776a logo.c:234
+ or ah, 001h ; 80 cc 01 ; 0xf776c
+ mov dx, 003b8h ; ba b8 03 ; 0xf776f
+ out DX, ax ; ef ; 0xf7772
+ in ax, DX ; ed ; 0xf7773 logo.c:235
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf7774 logo.c:236
+ pop dx ; 5a ; 0xf7777
+ pop bp ; 5d ; 0xf7778
+ retn ; c3 ; 0xf7779
+ ; disGetNextSymbol 0xf777a LB 0x36a2 -> off=0x0 cb=0000000000000133 uValue=00000000000f617a 'print_detected_harddisks'
+print_detected_harddisks: ; 0xf777a LB 0x133
+ push bp ; 55 ; 0xf777a logo.c:255
+ mov bp, sp ; 89 e5 ; 0xf777b
+ push bx ; 53 ; 0xf777d
+ push cx ; 51 ; 0xf777e
+ push dx ; 52 ; 0xf777f
+ push si ; 56 ; 0xf7780
+ push di ; 57 ; 0xf7781
+ push ax ; 50 ; 0xf7782
+ push ax ; 50 ; 0xf7783
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7784 logo.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7787
+ mov es, ax ; 8e c0 ; 0xf778a
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf778c
+ mov di, si ; 89 f7 ; 0xf778f logo.c:59
+ xor ch, ch ; 30 ed ; 0xf7791 logo.c:260
+ xor cl, cl ; 30 c9 ; 0xf7793 logo.c:261
+ mov byte [bp-00eh], ch ; 88 6e f2 ; 0xf7795 logo.c:262
+ mov bx, 002ach ; bb ac 02 ; 0xf7798 logo.c:48
+ mov es, si ; 8e c6 ; 0xf779b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf779d
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf77a0 logo.c:49
+ xor bl, bl ; 30 db ; 0xf77a3 logo.c:267
+ cmp bl, byte [bp-00ch] ; 3a 5e f4 ; 0xf77a5
+ jnc near 0787fh ; 0f 83 d3 00 ; 0xf77a8
+ movzx si, bl ; 0f b6 f3 ; 0xf77ac logo.c:269
+ add si, 002adh ; 81 c6 ad 02 ; 0xf77af
+ mov es, di ; 8e c7 ; 0xf77b3 logo.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf77b5
+ mov bh, al ; 88 c7 ; 0xf77b8 logo.c:49
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf77ba logo.c:272
+ jc short 077e2h ; 72 24 ; 0xf77bc
+ test cl, cl ; 84 c9 ; 0xf77be logo.c:274
+ jne short 077cfh ; 75 0d ; 0xf77c0
+ push 00a37h ; 68 37 0a ; 0xf77c2 logo.c:276
+ push strict byte 00002h ; 6a 02 ; 0xf77c5
+ call 01a68h ; e8 9e a2 ; 0xf77c7
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf77ca
+ mov CL, strict byte 001h ; b1 01 ; 0xf77cd logo.c:277
+ movzx ax, bl ; 0f b6 c3 ; 0xf77cf logo.c:280
+ inc ax ; 40 ; 0xf77d2
+ push ax ; 50 ; 0xf77d3
+ push 00a4ch ; 68 4c 0a ; 0xf77d4
+ push strict byte 00002h ; 6a 02 ; 0xf77d7
+ call 01a68h ; e8 8c a2 ; 0xf77d9
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf77dc
+ jmp near 0787ah ; e9 98 00 ; 0xf77df logo.c:283
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf77e2 logo.c:286
+ jc short 077fdh ; 72 17 ; 0xf77e4
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf77e6 logo.c:288
+ jne short 077fbh ; 75 0f ; 0xf77ea
+ push 00a5fh ; 68 5f 0a ; 0xf77ec logo.c:290
+ push strict byte 00002h ; 6a 02 ; 0xf77ef
+ call 01a68h ; e8 74 a2 ; 0xf77f1
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf77f4
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf77f7 logo.c:291
+ jmp short 077cfh ; eb d2 ; 0xf77fb logo.c:292
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf77fd logo.c:301
+ jnc short 07814h ; 73 13 ; 0xf77ff
+ test ch, ch ; 84 ed ; 0xf7801
+ jne short 07814h ; 75 0f ; 0xf7803
+ push 00a74h ; 68 74 0a ; 0xf7805 logo.c:303
+ push strict byte 00002h ; 6a 02 ; 0xf7808
+ call 01a68h ; e8 5b a2 ; 0xf780a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf780d
+ mov CH, strict byte 001h ; b5 01 ; 0xf7810 logo.c:304
+ jmp short 0782ah ; eb 16 ; 0xf7812 logo.c:306
+ cmp bh, 004h ; 80 ff 04 ; 0xf7814
+ jc short 0782ah ; 72 11 ; 0xf7817
+ test cl, cl ; 84 c9 ; 0xf7819
+ jne short 0782ah ; 75 0d ; 0xf781b
+ push 00a86h ; 68 86 0a ; 0xf781d logo.c:308
+ push strict byte 00002h ; 6a 02 ; 0xf7820
+ call 01a68h ; e8 43 a2 ; 0xf7822
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7825
+ mov CL, strict byte 001h ; b1 01 ; 0xf7828 logo.c:309
+ movzx ax, bl ; 0f b6 c3 ; 0xf782a logo.c:312
+ inc ax ; 40 ; 0xf782d
+ push ax ; 50 ; 0xf782e
+ push 00a9ah ; 68 9a 0a ; 0xf782f
+ push strict byte 00002h ; 6a 02 ; 0xf7832
+ call 01a68h ; e8 31 a2 ; 0xf7834
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7837
+ cmp bh, 004h ; 80 ff 04 ; 0xf783a logo.c:319
+ jc short 07842h ; 72 03 ; 0xf783d
+ sub bh, 004h ; 80 ef 04 ; 0xf783f logo.c:320
+ movzx ax, bh ; 0f b6 c7 ; 0xf7842 logo.c:322
+ cwd ; 99 ; 0xf7845
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf7846
+ sar ax, 1 ; d1 f8 ; 0xf7848
+ test ax, ax ; 85 c0 ; 0xf784a
+ je short 07853h ; 74 05 ; 0xf784c
+ push 00aa4h ; 68 a4 0a ; 0xf784e logo.c:323
+ jmp short 07856h ; eb 03 ; 0xf7851 logo.c:324
+ push 00aafh ; 68 af 0a ; 0xf7853 logo.c:325
+ push strict byte 00002h ; 6a 02 ; 0xf7856
+ call 01a68h ; e8 0d a2 ; 0xf7858
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf785b
+ movzx ax, bh ; 0f b6 c7 ; 0xf785e logo.c:327
+ cwd ; 99 ; 0xf7861
+ mov si, strict word 00002h ; be 02 00 ; 0xf7862
+ idiv si ; f7 fe ; 0xf7865
+ test dx, dx ; 85 d2 ; 0xf7867
+ je short 07870h ; 74 05 ; 0xf7869
+ push 00ab8h ; 68 b8 0a ; 0xf786b logo.c:328
+ jmp short 07873h ; eb 03 ; 0xf786e logo.c:329
+ push 00abeh ; 68 be 0a ; 0xf7870 logo.c:330
+ push si ; 56 ; 0xf7873
+ call 01a68h ; e8 f1 a1 ; 0xf7874
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7877
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf787a logo.c:332
+ jmp near 077a5h ; e9 26 ff ; 0xf787c
+ test ch, ch ; 84 ed ; 0xf787f logo.c:334
+ jne short 07898h ; 75 15 ; 0xf7881
+ test cl, cl ; 84 c9 ; 0xf7883
+ jne short 07898h ; 75 11 ; 0xf7885
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7887
+ jne short 07898h ; 75 0b ; 0xf788b
+ push 00ac5h ; 68 c5 0a ; 0xf788d logo.c:337
+ push strict byte 00002h ; 6a 02 ; 0xf7890
+ call 01a68h ; e8 d3 a1 ; 0xf7892
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7895
+ push 00ad9h ; 68 d9 0a ; 0xf7898 logo.c:339
+ push strict byte 00002h ; 6a 02 ; 0xf789b
+ call 01a68h ; e8 c8 a1 ; 0xf789d
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf78a0
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf78a3 logo.c:340
+ pop di ; 5f ; 0xf78a6
+ pop si ; 5e ; 0xf78a7
+ pop dx ; 5a ; 0xf78a8
+ pop cx ; 59 ; 0xf78a9
+ pop bx ; 5b ; 0xf78aa
+ pop bp ; 5d ; 0xf78ab
+ retn ; c3 ; 0xf78ac
+ ; disGetNextSymbol 0xf78ad LB 0x356f -> off=0x0 cb=0000000000000024 uValue=00000000000f62ad 'get_boot_drive'
+get_boot_drive: ; 0xf78ad LB 0x24
+ push bx ; 53 ; 0xf78ad logo.c:342
+ push dx ; 52 ; 0xf78ae
+ push bp ; 55 ; 0xf78af
+ mov bp, sp ; 89 e5 ; 0xf78b0
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf78b2 logo.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf78b5
+ mov es, dx ; 8e c2 ; 0xf78b8
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf78ba
+ mov bx, 002ach ; bb ac 02 ; 0xf78bd logo.c:48
+ mov es, dx ; 8e c2 ; 0xf78c0
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf78c2
+ sub AL, strict byte 002h ; 2c 02 ; 0xf78c5 logo.c:350
+ cmp al, dl ; 38 d0 ; 0xf78c7 logo.c:352
+ jc short 078cdh ; 72 02 ; 0xf78c9
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf78cb logo.c:353
+ pop bp ; 5d ; 0xf78cd logo.c:357
+ pop dx ; 5a ; 0xf78ce
+ pop bx ; 5b ; 0xf78cf
+ retn ; c3 ; 0xf78d0
+ ; disGetNextSymbol 0xf78d1 LB 0x354b -> off=0x0 cb=0000000000000254 uValue=00000000000f62d1 'show_logo'
+show_logo: ; 0xf78d1 LB 0x254
+ push bp ; 55 ; 0xf78d1 logo.c:359
+ mov bp, sp ; 89 e5 ; 0xf78d2
+ push bx ; 53 ; 0xf78d4
+ push cx ; 51 ; 0xf78d5
+ push dx ; 52 ; 0xf78d6
+ push si ; 56 ; 0xf78d7
+ push di ; 57 ; 0xf78d8
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf78d9
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf78dc logo.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf78df
+ mov es, ax ; 8e c0 ; 0xf78e2
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf78e4
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf78e7 logo.c:362
+ xor dx, dx ; 31 d2 ; 0xf78eb logo.c:366
+ mov AL, strict byte 034h ; b0 34 ; 0xf78ed logo.c:373
+ out strict byte 043h, AL ; e6 43 ; 0xf78ef
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf78f1
+ out strict byte 040h, AL ; e6 40 ; 0xf78f3
+ mov AL, strict byte 048h ; b0 48 ; 0xf78f5
+ out strict byte 040h, AL ; e6 40 ; 0xf78f7
+ movzx ax, dl ; 0f b6 c2 ; 0xf78f9 logo.c:376
+ call 07766h ; e8 67 fe ; 0xf78fc
+ cmp ax, 066bbh ; 3d bb 66 ; 0xf78ff logo.c:377
+ jne near 07a04h ; 0f 85 fe 00 ; 0xf7902
+ push SS ; 16 ; 0xf7906 logo.c:381
+ pop ES ; 07 ; 0xf7907
+ lea di, [bp-018h] ; 8d 7e e8 ; 0xf7908
+ mov ax, 04f03h ; b8 03 4f ; 0xf790b
+ int 010h ; cd 10 ; 0xf790e
+ mov word [es:di], bx ; 26 89 1d ; 0xf7910
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7913
+ jne near 07a04h ; 0f 85 ea 00 ; 0xf7916
+ mov al, dl ; 88 d0 ; 0xf791a logo.c:385
+ add AL, strict byte 004h ; 04 04 ; 0xf791c
+ xor ah, ah ; 30 e4 ; 0xf791e
+ call 07750h ; e8 2d fe ; 0xf7920
+ mov bl, al ; 88 c3 ; 0xf7923
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf7925
+ mov al, dl ; 88 d0 ; 0xf7928 logo.c:386
+ add AL, strict byte 005h ; 04 05 ; 0xf792a
+ xor ah, ah ; 30 e4 ; 0xf792c
+ call 07750h ; e8 1f fe ; 0xf792e
+ mov dh, al ; 88 c6 ; 0xf7931
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7933
+ mov al, dl ; 88 d0 ; 0xf7936 logo.c:387
+ add AL, strict byte 002h ; 04 02 ; 0xf7938
+ xor ah, ah ; 30 e4 ; 0xf793a
+ call 07766h ; e8 27 fe ; 0xf793c
+ mov cx, ax ; 89 c1 ; 0xf793f
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf7941
+ mov al, dl ; 88 d0 ; 0xf7944 logo.c:388
+ add AL, strict byte 006h ; 04 06 ; 0xf7946
+ xor ah, ah ; 30 e4 ; 0xf7948
+ call 07750h ; e8 03 fe ; 0xf794a
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf794d
+ test bl, bl ; 84 db ; 0xf7950 logo.c:391
+ jne short 0795eh ; 75 0a ; 0xf7952
+ test dh, dh ; 84 f6 ; 0xf7954
+ jne short 0795eh ; 75 06 ; 0xf7956
+ test cx, cx ; 85 c9 ; 0xf7958
+ je near 07a04h ; 0f 84 a6 00 ; 0xf795a
+ mov BH, strict byte 020h ; b7 20 ; 0xf795e logo.c:395
+ mov dx, 001e0h ; ba e0 01 ; 0xf7960
+ mov cx, 00280h ; b9 80 02 ; 0xf7963
+ mov ax, 05642h ; b8 42 56 ; 0xf7966
+ mov BL, strict byte 000h ; b3 00 ; 0xf7969
+ int 010h ; cd 10 ; 0xf796b
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf796d logo.c:397
+ je short 0797ah ; 74 08 ; 0xf7970
+ mov bx, 00142h ; bb 42 01 ; 0xf7972 logo.c:398
+ mov ax, 04f02h ; b8 02 4f ; 0xf7975
+ int 010h ; cd 10 ; 0xf7978
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf797a logo.c:400
+ je short 079a5h ; 74 25 ; 0xf797e
+ xor bx, bx ; 31 db ; 0xf7980 logo.c:402
+ jmp short 0798ah ; eb 06 ; 0xf7982
+ inc bx ; 43 ; 0xf7984 logo.c:404
+ cmp bx, strict byte 00010h ; 83 fb 10 ; 0xf7985
+ jnbe short 079ach ; 77 22 ; 0xf7988
+ mov ax, bx ; 89 d8 ; 0xf798a
+ or ah, 002h ; 80 cc 02 ; 0xf798c
+ mov dx, 003b8h ; ba b8 03 ; 0xf798f
+ out DX, ax ; ef ; 0xf7992
+ xor dx, dx ; 31 d2 ; 0xf7993
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7995
+ call 07698h ; e8 fd fc ; 0xf7998
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf799b
+ jne short 07984h ; 75 e5 ; 0xf799d
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf799f
+ jmp short 079ach ; eb 07 ; 0xf79a3
+ mov ax, 00210h ; b8 10 02 ; 0xf79a5 logo.c:414
+ mov dx, 003b8h ; ba b8 03 ; 0xf79a8
+ out DX, ax ; ef ; 0xf79ab
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf79ac logo.c:417
+ jne short 079c6h ; 75 14 ; 0xf79b0
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf79b2 logo.c:419
+ shr ax, 004h ; c1 e8 04 ; 0xf79b5
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf79b8
+ call 07698h ; e8 da fc ; 0xf79bb
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf79be logo.c:420
+ jne short 079c6h ; 75 04 ; 0xf79c0
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf79c2 logo.c:421
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf79c6 logo.c:425
+ je short 079f7h ; 74 2b ; 0xf79ca
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf79cc
+ jne short 079f7h ; 75 25 ; 0xf79d0
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf79d2 logo.c:427
+ jmp short 079dch ; eb 05 ; 0xf79d5
+ dec bx ; 4b ; 0xf79d7 logo.c:429
+ test bx, bx ; 85 db ; 0xf79d8
+ jbe short 07a04h ; 76 28 ; 0xf79da
+ mov ax, bx ; 89 d8 ; 0xf79dc
+ or ah, 002h ; 80 cc 02 ; 0xf79de
+ mov dx, 003b8h ; ba b8 03 ; 0xf79e1
+ out DX, ax ; ef ; 0xf79e4
+ xor dx, dx ; 31 d2 ; 0xf79e5
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf79e7
+ call 07698h ; e8 ab fc ; 0xf79ea
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf79ed
+ jne short 079d7h ; 75 e6 ; 0xf79ef
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf79f1
+ jmp short 07a04h ; eb 0d ; 0xf79f5
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf79f7 logo.c:438
+ jne short 07a04h ; 75 07 ; 0xf79fb
+ mov ax, 00200h ; b8 00 02 ; 0xf79fd logo.c:439
+ mov dx, 003b8h ; ba b8 03 ; 0xf7a00
+ out DX, ax ; ef ; 0xf7a03
+ mov bx, 00331h ; bb 31 03 ; 0xf7a04 logo.c:53
+ mov es, si ; 8e c6 ; 0xf7a07
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7a09
+ mov AL, strict byte 003h ; b0 03 ; 0xf7a0d logo.c:447
+ mov AH, strict byte 000h ; b4 00 ; 0xf7a0f
+ int 010h ; cd 10 ; 0xf7a11
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7a13 logo.c:450
+ je near 07b06h ; 0f 84 eb 00 ; 0xf7a17
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7a1b logo.c:453
+ jne short 07a55h ; 75 34 ; 0xf7a1f
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7a21
+ jne short 07a55h ; 75 2e ; 0xf7a25
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf7a27
+ jne short 07a55h ; 75 28 ; 0xf7a2b
+ cmp byte [bp-014h], 002h ; 80 7e ec 02 ; 0xf7a2d logo.c:455
+ jne short 07a3eh ; 75 0b ; 0xf7a31
+ push 00adbh ; 68 db 0a ; 0xf7a33 logo.c:456
+ push strict byte 00002h ; 6a 02 ; 0xf7a36
+ call 01a68h ; e8 2d a0 ; 0xf7a38
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a3b
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7a3e logo.c:459
+ jne short 07a55h ; 75 11 ; 0xf7a42
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7a44 logo.c:462
+ mov ax, 000c0h ; b8 c0 00 ; 0xf7a47
+ call 07698h ; e8 4b fc ; 0xf7a4a
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7a4d logo.c:463
+ jne short 07a55h ; 75 04 ; 0xf7a4f
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7a51 logo.c:464
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7a55 logo.c:469
+ je near 07b06h ; 0f 84 a9 00 ; 0xf7a59
+ mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7a5d logo.c:471
+ mov ax, 00100h ; b8 00 01 ; 0xf7a61 logo.c:474
+ mov cx, 01000h ; b9 00 10 ; 0xf7a64
+ int 010h ; cd 10 ; 0xf7a67
+ mov ax, 00700h ; b8 00 07 ; 0xf7a69
+ mov BH, strict byte 007h ; b7 07 ; 0xf7a6c
+ db 033h, 0c9h
+ ; xor cx, cx ; 33 c9 ; 0xf7a6e
+ mov dx, 0184fh ; ba 4f 18 ; 0xf7a70
+ int 010h ; cd 10 ; 0xf7a73
+ mov ax, 00200h ; b8 00 02 ; 0xf7a75
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf7a78
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf7a7a
+ int 010h ; cd 10 ; 0xf7a7c
+ push 00afdh ; 68 fd 0a ; 0xf7a7e logo.c:477
+ push strict byte 00002h ; 6a 02 ; 0xf7a81
+ call 01a68h ; e8 e2 9f ; 0xf7a83
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a86
+ call 0777ah ; e8 ee fc ; 0xf7a89 logo.c:478
+ push 00b41h ; 68 41 0b ; 0xf7a8c logo.c:479
+ push strict byte 00002h ; 6a 02 ; 0xf7a8f
+ call 01a68h ; e8 d4 9f ; 0xf7a91
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a94
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7a97 logo.c:488
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7a9a
+ call 07698h ; e8 f8 fb ; 0xf7a9d
+ mov bl, al ; 88 c3 ; 0xf7aa0
+ test al, al ; 84 c0 ; 0xf7aa2 logo.c:489
+ je short 07a97h ; 74 f1 ; 0xf7aa4
+ cmp AL, strict byte 030h ; 3c 30 ; 0xf7aa6 logo.c:491
+ je short 07af5h ; 74 4b ; 0xf7aa8
+ cmp bl, 002h ; 80 fb 02 ; 0xf7aaa logo.c:498
+ jc short 07aceh ; 72 1f ; 0xf7aad
+ cmp bl, 009h ; 80 fb 09 ; 0xf7aaf
+ jnbe short 07aceh ; 77 1a ; 0xf7ab2
+ movzx ax, bl ; 0f b6 c3 ; 0xf7ab4 logo.c:500
+ call 078adh ; e8 f3 fd ; 0xf7ab7
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf7aba logo.c:507
+ jne short 07ac0h ; 75 02 ; 0xf7abc
+ jmp short 07a97h ; eb d7 ; 0xf7abe logo.c:508
+ mov bx, 00330h ; bb 30 03 ; 0xf7ac0 logo.c:53
+ mov es, si ; 8e c6 ; 0xf7ac3
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7ac5
+ mov byte [bp-010h], 002h ; c6 46 f0 02 ; 0xf7ac8 logo.c:511
+ jmp short 07af5h ; eb 27 ; 0xf7acc logo.c:512
+ cmp bl, 02eh ; 80 fb 2e ; 0xf7ace logo.c:515
+ je short 07ae3h ; 74 10 ; 0xf7ad1
+ cmp bl, 026h ; 80 fb 26 ; 0xf7ad3
+ je short 07ae9h ; 74 11 ; 0xf7ad6
+ cmp bl, 021h ; 80 fb 21 ; 0xf7ad8
+ jne short 07aefh ; 75 12 ; 0xf7adb
+ mov byte [bp-010h], 001h ; c6 46 f0 01 ; 0xf7add logo.c:519
+ jmp short 07af5h ; eb 12 ; 0xf7ae1 logo.c:520
+ mov byte [bp-010h], 003h ; c6 46 f0 03 ; 0xf7ae3 logo.c:523
+ jmp short 07af5h ; eb 0c ; 0xf7ae7 logo.c:524
+ mov byte [bp-010h], 004h ; c6 46 f0 04 ; 0xf7ae9 logo.c:527
+ jmp short 07af5h ; eb 06 ; 0xf7aed logo.c:528
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf7aef logo.c:531
+ je short 07a97h ; 74 a2 ; 0xf7af3
+ mov bx, 00331h ; bb 31 03 ; 0xf7af5 logo.c:53
+ mov es, si ; 8e c6 ; 0xf7af8
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7afa
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7afd
+ mov AL, strict byte 003h ; b0 03 ; 0xf7b00 logo.c:538
+ mov AH, strict byte 000h ; b4 00 ; 0xf7b02
+ int 010h ; cd 10 ; 0xf7b04
+ mov AL, strict byte 034h ; b0 34 ; 0xf7b06 logo.c:543
+ out strict byte 043h, AL ; e6 43 ; 0xf7b08
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7b0a
+ out strict byte 040h, AL ; e6 40 ; 0xf7b0c
+ out strict byte 040h, AL ; e6 40 ; 0xf7b0e
+ pushad ; 66 60 ; 0xf7b10
+ push DS ; 1e ; 0xf7b12
+ mov ds, ax ; 8e d8 ; 0xf7b13
+ call 0edbfh ; e8 a7 72 ; 0xf7b15
+ pop DS ; 1f ; 0xf7b18
+ popad ; 66 61 ; 0xf7b19
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7b1b logo.c:546
+ pop di ; 5f ; 0xf7b1e
+ pop si ; 5e ; 0xf7b1f
+ pop dx ; 5a ; 0xf7b20
+ pop cx ; 59 ; 0xf7b21
+ pop bx ; 5b ; 0xf7b22
+ pop bp ; 5d ; 0xf7b23
+ retn ; c3 ; 0xf7b24
+ ; disGetNextSymbol 0xf7b25 LB 0x32f7 -> off=0x0 cb=0000000000000067 uValue=00000000000f6525 'delay_boot'
+delay_boot: ; 0xf7b25 LB 0x67
+ push bp ; 55 ; 0xf7b25 logo.c:549
+ mov bp, sp ; 89 e5 ; 0xf7b26
+ push bx ; 53 ; 0xf7b28
+ push dx ; 52 ; 0xf7b29
+ mov dx, ax ; 89 c2 ; 0xf7b2a
+ test ax, ax ; 85 c0 ; 0xf7b2c logo.c:553
+ je short 07b85h ; 74 55 ; 0xf7b2e
+ mov AL, strict byte 034h ; b0 34 ; 0xf7b30 logo.c:557
+ out strict byte 043h, AL ; e6 43 ; 0xf7b32
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7b34
+ out strict byte 040h, AL ; e6 40 ; 0xf7b36
+ mov AL, strict byte 048h ; b0 48 ; 0xf7b38
+ out strict byte 040h, AL ; e6 40 ; 0xf7b3a
+ push dx ; 52 ; 0xf7b3c logo.c:559
+ push 00b8bh ; 68 8b 0b ; 0xf7b3d
+ push strict byte 00002h ; 6a 02 ; 0xf7b40
+ call 01a68h ; e8 23 9f ; 0xf7b42
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7b45
+ mov bx, dx ; 89 d3 ; 0xf7b48 logo.c:560
+ test bx, bx ; 85 db ; 0xf7b4a
+ jbe short 07b65h ; 76 17 ; 0xf7b4c
+ push bx ; 53 ; 0xf7b4e logo.c:562
+ push 00ba9h ; 68 a9 0b ; 0xf7b4f
+ push strict byte 00002h ; 6a 02 ; 0xf7b52
+ call 01a68h ; e8 11 9f ; 0xf7b54
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7b57
+ xor dx, dx ; 31 d2 ; 0xf7b5a logo.c:563
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7b5c
+ call 07698h ; e8 36 fb ; 0xf7b5f
+ dec bx ; 4b ; 0xf7b62 logo.c:564
+ jmp short 07b4ah ; eb e5 ; 0xf7b63
+ push 00ad9h ; 68 d9 0a ; 0xf7b65 logo.c:565
+ push strict byte 00002h ; 6a 02 ; 0xf7b68
+ call 01a68h ; e8 fb 9e ; 0xf7b6a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7b6d
+ mov AL, strict byte 034h ; b0 34 ; 0xf7b70 logo.c:567
+ out strict byte 043h, AL ; e6 43 ; 0xf7b72
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7b74
+ out strict byte 040h, AL ; e6 40 ; 0xf7b76
+ out strict byte 040h, AL ; e6 40 ; 0xf7b78
+ pushad ; 66 60 ; 0xf7b7a
+ push DS ; 1e ; 0xf7b7c
+ mov ds, ax ; 8e d8 ; 0xf7b7d
+ call 0edbfh ; e8 3d 72 ; 0xf7b7f
+ pop DS ; 1f ; 0xf7b82
+ popad ; 66 61 ; 0xf7b83
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7b85 logo.c:568
+ pop dx ; 5a ; 0xf7b88
+ pop bx ; 5b ; 0xf7b89
+ pop bp ; 5d ; 0xf7b8a
+ retn ; c3 ; 0xf7b8b
+ ; disGetNextSymbol 0xf7b8c LB 0x3290 -> off=0x0 cb=000000000000003a uValue=00000000000f658c 'scsi_hba_mem_alloc'
+scsi_hba_mem_alloc: ; 0xf7b8c LB 0x3a
+ push bx ; 53 ; 0xf7b8c scsi.c:108
+ push cx ; 51 ; 0xf7b8d
+ push dx ; 52 ; 0xf7b8e
+ push di ; 57 ; 0xf7b8f
+ push bp ; 55 ; 0xf7b90
+ mov bp, sp ; 89 e5 ; 0xf7b91
+ mov di, 00413h ; bf 13 04 ; 0xf7b93 scsi.c:58
+ xor ax, ax ; 31 c0 ; 0xf7b96
+ mov es, ax ; 8e c0 ; 0xf7b98
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf7b9a
+ test ax, ax ; 85 c0 ; 0xf7b9d scsi.c:117
+ je short 07bc0h ; 74 1f ; 0xf7b9f
+ dec ax ; 48 ; 0xf7ba1 scsi.c:118
+ mov bx, ax ; 89 c3 ; 0xf7ba2
+ xor dx, dx ; 31 d2 ; 0xf7ba4 scsi.c:121
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf7ba6
+ sal ax, 1 ; d1 e0 ; 0xf7ba9
+ rcl dx, 1 ; d1 d2 ; 0xf7bab
+ loop 07ba9h ; e2 fa ; 0xf7bad
+ mov di, dx ; 89 d7 ; 0xf7baf
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf7bb1
+ shr di, 1 ; d1 ef ; 0xf7bb4
+ rcr ax, 1 ; d1 d8 ; 0xf7bb6
+ loop 07bb4h ; e2 fa ; 0xf7bb8
+ mov di, 00413h ; bf 13 04 ; 0xf7bba scsi.c:63
+ mov word [es:di], bx ; 26 89 1d ; 0xf7bbd
+ pop bp ; 5d ; 0xf7bc0 scsi.c:126
+ pop di ; 5f ; 0xf7bc1
+ pop dx ; 5a ; 0xf7bc2
+ pop cx ; 59 ; 0xf7bc3
+ pop bx ; 5b ; 0xf7bc4
+ retn ; c3 ; 0xf7bc5
+ ; disGetNextSymbol 0xf7bc6 LB 0x3256 -> off=0x0 cb=0000000000000102 uValue=00000000000f65c6 'scsi_read_sectors'
+scsi_read_sectors: ; 0xf7bc6 LB 0x102
+ push bp ; 55 ; 0xf7bc6 scsi.c:135
+ mov bp, sp ; 89 e5 ; 0xf7bc7
+ push si ; 56 ; 0xf7bc9
+ push di ; 57 ; 0xf7bca
+ sub sp, strict byte 0001ah ; 83 ec 1a ; 0xf7bcb
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7bce
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7bd1 scsi.c:146
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7bd4
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7bd8
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7bda
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7bdd scsi.c:147
+ jbe short 07bf4h ; 76 13 ; 0xf7bdf
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7be1 scsi.c:148
+ push ax ; 50 ; 0xf7be5
+ push 00baeh ; 68 ae 0b ; 0xf7be6
+ push 00bc0h ; 68 c0 0b ; 0xf7be9
+ push strict byte 00007h ; 6a 07 ; 0xf7bec
+ call 01a68h ; e8 77 9e ; 0xf7bee
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7bf1
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7bf4 scsi.c:150
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf7bf7
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf7bfb
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf7bfe scsi.c:85
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf7c02
+ mov word [bp-01eh], 00088h ; c7 46 e2 88 00 ; 0xf7c05 scsi.c:155
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7c0a scsi.c:156
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7c0d
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7c11
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7c15
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7c19
+ xchg ah, al ; 86 c4 ; 0xf7c1c
+ xchg bh, bl ; 86 df ; 0xf7c1e
+ xchg ch, cl ; 86 cd ; 0xf7c20
+ xchg dh, dl ; 86 d6 ; 0xf7c22
+ xchg dx, ax ; 92 ; 0xf7c24
+ xchg bx, cx ; 87 cb ; 0xf7c25
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf7c27
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf7c2a
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf7c2d
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf7c30
+ mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7c33 scsi.c:157
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7c37 scsi.c:158
+ xor dx, dx ; 31 d2 ; 0xf7c3a
+ xchg ah, al ; 86 c4 ; 0xf7c3c
+ xchg dh, dl ; 86 d6 ; 0xf7c3e
+ xchg dx, ax ; 92 ; 0xf7c40
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf7c41
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf7c44
+ mov byte [bp-00fh], 000h ; c6 46 f1 00 ; 0xf7c47 scsi.c:159
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7c4b scsi.c:162
+ sal ax, 002h ; c1 e0 02 ; 0xf7c4f
+ mov bx, si ; 89 f3 ; 0xf7c52
+ add bx, ax ; 01 c3 ; 0xf7c54
+ mov dx, word [es:bx+00290h] ; 26 8b 97 90 02 ; 0xf7c56
+ mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7c5b scsi.c:163
+ mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf7c60 scsi.c:164
+ movzx di, al ; 0f b6 f8 ; 0xf7c65 scsi.c:169
+ imul di, di, strict byte 0000ch ; 6b ff 0c ; 0xf7c68
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7c6b
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7c6e
+ xor ax, ax ; 31 c0 ; 0xf7c71
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf7c73
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7c76
+ sal word [bp-00eh], 1 ; d1 66 f2 ; 0xf7c79
+ rcl word [bp-00ch], 1 ; d1 56 f4 ; 0xf7c7c
+ loop 07c79h ; e2 f8 ; 0xf7c7f
+ push dword [bp-00eh] ; 66 ff 76 f2 ; 0xf7c81
+ db 066h, 026h, 0ffh, 074h, 008h
+ ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf7c85
+ push strict byte 00010h ; 6a 10 ; 0xf7c8a
+ lea cx, [bp-01eh] ; 8d 4e e2 ; 0xf7c8c
+ push SS ; 16 ; 0xf7c8f
+ push cx ; 51 ; 0xf7c90
+ xor bh, bh ; 30 ff ; 0xf7c91
+ call word [di+000a4h] ; ff 95 a4 00 ; 0xf7c93
+ mov dl, al ; 88 c2 ; 0xf7c97
+ test al, al ; 84 c0 ; 0xf7c99 scsi.c:171
+ jne short 07cb5h ; 75 18 ; 0xf7c9b
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7c9d scsi.c:173
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7ca0
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf7ca3
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7ca7 scsi.c:174
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7caa
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf7cae
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7cb1
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf7cb5 scsi.c:88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf7cb8 scsi.c:90
+ movzx ax, dl ; 0f b6 c2 ; 0xf7cbc scsi.c:179
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7cbf scsi.c:180
+ pop di ; 5f ; 0xf7cc2
+ pop si ; 5e ; 0xf7cc3
+ pop bp ; 5d ; 0xf7cc4
+ retn 00004h ; c2 04 00 ; 0xf7cc5
+ ; disGetNextSymbol 0xf7cc8 LB 0x3154 -> off=0x0 cb=0000000000000102 uValue=00000000000f66c8 'scsi_write_sectors'
+scsi_write_sectors: ; 0xf7cc8 LB 0x102
+ push bp ; 55 ; 0xf7cc8 scsi.c:189
+ mov bp, sp ; 89 e5 ; 0xf7cc9
+ push si ; 56 ; 0xf7ccb
+ push di ; 57 ; 0xf7ccc
+ sub sp, strict byte 0001ah ; 83 ec 1a ; 0xf7ccd
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7cd0
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7cd3 scsi.c:200
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7cd6
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7cda
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7cdc
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7cdf scsi.c:201
+ jbe short 07cf6h ; 76 13 ; 0xf7ce1
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7ce3 scsi.c:202
+ push ax ; 50 ; 0xf7ce7
+ push 00bdfh ; 68 df 0b ; 0xf7ce8
+ push 00bc0h ; 68 c0 0b ; 0xf7ceb
+ push strict byte 00007h ; 6a 07 ; 0xf7cee
+ call 01a68h ; e8 75 9d ; 0xf7cf0
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7cf3
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7cf6 scsi.c:204
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf7cf9
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf7cfd
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf7d00 scsi.c:85
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf7d04
+ mov word [bp-01eh], 0008ah ; c7 46 e2 8a 00 ; 0xf7d07 scsi.c:209
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7d0c scsi.c:210
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7d0f
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7d13
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7d17
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7d1b
+ xchg ah, al ; 86 c4 ; 0xf7d1e
+ xchg bh, bl ; 86 df ; 0xf7d20
+ xchg ch, cl ; 86 cd ; 0xf7d22
+ xchg dh, dl ; 86 d6 ; 0xf7d24
+ xchg dx, ax ; 92 ; 0xf7d26
+ xchg bx, cx ; 87 cb ; 0xf7d27
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf7d29
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf7d2c
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf7d2f
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf7d32
+ mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7d35 scsi.c:211
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7d39 scsi.c:212
+ xor dx, dx ; 31 d2 ; 0xf7d3c
+ xchg ah, al ; 86 c4 ; 0xf7d3e
+ xchg dh, dl ; 86 d6 ; 0xf7d40
+ xchg dx, ax ; 92 ; 0xf7d42
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf7d43
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf7d46
+ mov byte [bp-00fh], 000h ; c6 46 f1 00 ; 0xf7d49 scsi.c:213
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7d4d scsi.c:215
+ sal ax, 002h ; c1 e0 02 ; 0xf7d51
+ mov bx, si ; 89 f3 ; 0xf7d54
+ add bx, ax ; 01 c3 ; 0xf7d56
+ mov dx, word [es:bx+00290h] ; 26 8b 97 90 02 ; 0xf7d58
+ mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7d5d scsi.c:216
+ mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf7d62 scsi.c:217
+ movzx di, al ; 0f b6 f8 ; 0xf7d67 scsi.c:222
+ imul di, di, strict byte 0000ch ; 6b ff 0c ; 0xf7d6a
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7d6d
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7d70
+ xor ax, ax ; 31 c0 ; 0xf7d73
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf7d75
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7d78
+ sal word [bp-00eh], 1 ; d1 66 f2 ; 0xf7d7b
+ rcl word [bp-00ch], 1 ; d1 56 f4 ; 0xf7d7e
+ loop 07d7bh ; e2 f8 ; 0xf7d81
+ push dword [bp-00eh] ; 66 ff 76 f2 ; 0xf7d83
+ db 066h, 026h, 0ffh, 074h, 008h
+ ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf7d87
+ push strict byte 00010h ; 6a 10 ; 0xf7d8c
+ lea cx, [bp-01eh] ; 8d 4e e2 ; 0xf7d8e
+ push SS ; 16 ; 0xf7d91
+ push cx ; 51 ; 0xf7d92
+ xor bh, bh ; 30 ff ; 0xf7d93
+ call word [di+000a2h] ; ff 95 a2 00 ; 0xf7d95
+ mov dl, al ; 88 c2 ; 0xf7d99
+ test al, al ; 84 c0 ; 0xf7d9b scsi.c:224
+ jne short 07db7h ; 75 18 ; 0xf7d9d
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7d9f scsi.c:226
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7da2
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf7da5
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7da9 scsi.c:227
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7dac
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf7db0
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7db3
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf7db7 scsi.c:88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf7dba scsi.c:90
+ movzx ax, dl ; 0f b6 c2 ; 0xf7dbe scsi.c:232
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7dc1 scsi.c:233
+ pop di ; 5f ; 0xf7dc4
+ pop si ; 5e ; 0xf7dc5
+ pop bp ; 5d ; 0xf7dc6
+ retn 00004h ; c2 04 00 ; 0xf7dc7
+ ; disGetNextSymbol 0xf7dca LB 0x3052 -> off=0x0 cb=0000000000000107 uValue=00000000000f67ca 'scsi_cmd_packet'
+scsi_cmd_packet: ; 0xf7dca LB 0x107
+ push bp ; 55 ; 0xf7dca scsi.c:252
+ mov bp, sp ; 89 e5 ; 0xf7dcb
+ push si ; 56 ; 0xf7dcd
+ push di ; 57 ; 0xf7dce
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf7dcf
+ mov di, ax ; 89 c7 ; 0xf7dd2
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf7dd4
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf7dd7
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xf7dda
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7ddd scsi.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7de0
+ mov es, ax ; 8e c0 ; 0xf7de3
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7de5
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf7de8 scsi.c:59
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf7deb
+ cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf7dee scsi.c:263
+ jne short 07e13h ; 75 1f ; 0xf7df2
+ mov bx, 00e16h ; bb 16 0e ; 0xf7df4 scsi.c:264
+ mov cx, ds ; 8c d9 ; 0xf7df7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7df9
+ call 01a27h ; e8 28 9c ; 0xf7dfc
+ push 00bf2h ; 68 f2 0b ; 0xf7dff
+ push 00c02h ; 68 02 0c ; 0xf7e02
+ push strict byte 00004h ; 6a 04 ; 0xf7e05
+ call 01a68h ; e8 5e 9c ; 0xf7e07
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7e0a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7e0d scsi.c:265
+ jmp near 07ec8h ; e9 b5 00 ; 0xf7e10
+ sub di, strict byte 00008h ; 83 ef 08 ; 0xf7e13 scsi.c:269
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf7e16 scsi.c:85
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7e1a
+ mov bx, di ; 89 fb ; 0xf7e1d scsi.c:277
+ sal bx, 002h ; c1 e3 02 ; 0xf7e1f
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf7e22
+ add bx, si ; 01 f3 ; 0xf7e25
+ mov ax, word [es:bx+00290h] ; 26 8b 87 90 02 ; 0xf7e27
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf7e2c
+ mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7e2f scsi.c:278
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7e34
+ mov al, byte [es:bx+00293h] ; 26 8a 87 93 02 ; 0xf7e37 scsi.c:279
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf7e3c
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7e3f scsi.c:281
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7e42
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7e45
+ sal ax, 1 ; d1 e0 ; 0xf7e48
+ rcl dx, 1 ; d1 d2 ; 0xf7e4a
+ loop 07e48h ; e2 fa ; 0xf7e4c
+ mov word [es:si], ax ; 26 89 04 ; 0xf7e4e
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf7e51
+ 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; 0xf7e55
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf7e5e scsi.c:282
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf7e61
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf7e65
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf7e68
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf7e6c scsi.c:283
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7e70
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7e73
+ xor cx, cx ; 31 c9 ; 0xf7e76
+ call 0ad20h ; e8 a5 2e ; 0xf7e78
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf7e7b
+ movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf7e7f scsi.c:288
+ imul di, di, strict byte 0000ch ; 6b ff 0c ; 0xf7e83
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf7e86
+ db 066h, 026h, 0ffh, 074h, 008h
+ ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf7e8a
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7e8f
+ push ax ; 50 ; 0xf7e93
+ push word [bp-00eh] ; ff 76 f2 ; 0xf7e94
+ push word [bp-012h] ; ff 76 ee ; 0xf7e97
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf7e9a
+ xor ax, ax ; 31 c0 ; 0xf7e9e
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf7ea0
+ call word [di+000a4h] ; ff 95 a4 00 ; 0xf7ea3
+ mov dl, al ; 88 c2 ; 0xf7ea7
+ test al, al ; 84 c0 ; 0xf7ea9 scsi.c:290
+ jne short 07ebeh ; 75 11 ; 0xf7eab
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7ead scsi.c:291
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf7eb0
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7eb3
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7eb7
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7eba
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf7ebe scsi.c:88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf7ec1 scsi.c:90
+ movzx ax, dl ; 0f b6 c2 ; 0xf7ec5 scsi.c:296
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7ec8 scsi.c:297
+ pop di ; 5f ; 0xf7ecb
+ pop si ; 5e ; 0xf7ecc
+ pop bp ; 5d ; 0xf7ecd
+ retn 0000ah ; c2 0a 00 ; 0xf7ece
+ ; disGetNextSymbol 0xf7ed1 LB 0x2f4b -> off=0x0 cb=000000000000048b uValue=00000000000f68d1 'scsi_enumerate_attached_devices'
+scsi_enumerate_attached_devices: ; 0xf7ed1 LB 0x48b
+ push bp ; 55 ; 0xf7ed1 scsi.c:305
+ mov bp, sp ; 89 e5 ; 0xf7ed2
+ push bx ; 53 ; 0xf7ed4
+ push cx ; 51 ; 0xf7ed5
+ push si ; 56 ; 0xf7ed6
+ push di ; 57 ; 0xf7ed7
+ sub sp, 0023eh ; 81 ec 3e 02 ; 0xf7ed8
+ push ax ; 50 ; 0xf7edc
+ mov byte [bp-00eh], dl ; 88 56 f2 ; 0xf7edd
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7ee0 scsi.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7ee3
+ mov es, ax ; 8e c0 ; 0xf7ee6
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7ee8
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf7eeb scsi.c:59
+ mov word [bp-022h], ax ; 89 46 de ; 0xf7eee
+ mov word [bp-030h], strict word 00000h ; c7 46 d0 00 00 ; 0xf7ef1 scsi.c:314
+ jmp near 08310h ; e9 17 04 ; 0xf7ef6
+ mov es, [bp-022h] ; 8e 46 de ; 0xf7ef9 scsi.c:320
+ mov al, byte [es:di+002a0h] ; 26 8a 85 a0 02 ; 0xf7efc
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7f01
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf7f04 scsi.c:337
+ jne near 08252h ; 0f 85 45 03 ; 0xf7f09
+ test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xf7f0d
+ jne near 08252h ; 0f 85 3c 03 ; 0xf7f12
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7f16 scsi.c:343
+ jnc near 08353h ; 0f 83 37 04 ; 0xf7f18
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf7f1c scsi.c:352
+ xor bx, bx ; 31 db ; 0xf7f1f
+ mov dx, ss ; 8c d2 ; 0xf7f21
+ lea ax, [bp-046h] ; 8d 46 ba ; 0xf7f23
+ call 0ad80h ; e8 57 2e ; 0xf7f26
+ mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xf7f29 scsi.c:353
+ mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xf7f2d scsi.c:354
+ mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xf7f31 scsi.c:355
+ movzx si, byte [bp-00eh] ; 0f b6 76 f2 ; 0xf7f35 scsi.c:357
+ imul si, si, strict byte 0000ch ; 6b f6 0c ; 0xf7f39
+ push dword 000000020h ; 66 6a 20 ; 0xf7f3c
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf7f3f
+ push SS ; 16 ; 0xf7f43
+ push dx ; 52 ; 0xf7f44
+ push strict byte 00010h ; 6a 10 ; 0xf7f45
+ lea dx, [bp-046h] ; 8d 56 ba ; 0xf7f47
+ push SS ; 16 ; 0xf7f4a
+ push dx ; 52 ; 0xf7f4b
+ movzx bx, byte [bp-030h] ; 0f b6 5e d0 ; 0xf7f4c
+ xor ax, ax ; 31 c0 ; 0xf7f50
+ mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7f52
+ call word [si+000a4h] ; ff 94 a4 00 ; 0xf7f56
+ test al, al ; 84 c0 ; 0xf7f5a scsi.c:358
+ je short 07f6ch ; 74 0e ; 0xf7f5c
+ push 00c22h ; 68 22 0c ; 0xf7f5e scsi.c:359
+ push 00c42h ; 68 42 0c ; 0xf7f61
+ push strict byte 00007h ; 6a 07 ; 0xf7f64
+ call 01a68h ; e8 ff 9a ; 0xf7f66
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7f69
+ mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xf7f6c scsi.c:364
+ mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xf7f70
+ mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xf7f74
+ mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xf7f78
+ xchg ah, al ; 86 c4 ; 0xf7f7c
+ xchg bh, bl ; 86 df ; 0xf7f7e
+ xchg ch, cl ; 86 cd ; 0xf7f80
+ xchg dh, dl ; 86 d6 ; 0xf7f82
+ xchg dx, ax ; 92 ; 0xf7f84
+ xchg bx, cx ; 87 cb ; 0xf7f85
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xf7f87
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf7f8a
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7f8d
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf7f90
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7f93
+ mov word [bp-032h], bx ; 89 5e ce ; 0xf7f96
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf7f99
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7f9c
+ movzx si, byte [bp-0023eh] ; 0f b6 b6 c2 fd ; 0xf7f9f scsi.c:366
+ sal si, 008h ; c1 e6 08 ; 0xf7fa4
+ movzx ax, byte [bp-0023dh] ; 0f b6 86 c3 fd ; 0xf7fa7
+ xor bx, bx ; 31 db ; 0xf7fac
+ or si, ax ; 09 c6 ; 0xf7fae
+ movzx ax, byte [bp-0023ch] ; 0f b6 86 c4 fd ; 0xf7fb0
+ xor dx, dx ; 31 d2 ; 0xf7fb5
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7fb7
+ sal ax, 1 ; d1 e0 ; 0xf7fba
+ rcl dx, 1 ; d1 d2 ; 0xf7fbc
+ loop 07fbah ; e2 fa ; 0xf7fbe
+ or bx, ax ; 09 c3 ; 0xf7fc0
+ or dx, si ; 09 f2 ; 0xf7fc2
+ movzx ax, byte [bp-0023bh] ; 0f b6 86 c5 fd ; 0xf7fc4
+ or bx, ax ; 09 c3 ; 0xf7fc9
+ mov word [bp-026h], bx ; 89 5e da ; 0xf7fcb
+ test dx, dx ; 85 d2 ; 0xf7fce scsi.c:372
+ jne short 07fd8h ; 75 06 ; 0xf7fd0
+ cmp bx, 00200h ; 81 fb 00 02 ; 0xf7fd2
+ je short 07ff8h ; 74 20 ; 0xf7fd6
+ mov bx, 00e16h ; bb 16 0e ; 0xf7fd8 scsi.c:375
+ mov cx, ds ; 8c d9 ; 0xf7fdb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7fdd
+ call 01a27h ; e8 44 9a ; 0xf7fe0
+ push dx ; 52 ; 0xf7fe3
+ push word [bp-026h] ; ff 76 da ; 0xf7fe4
+ push word [bp-030h] ; ff 76 d0 ; 0xf7fe7
+ push 00c61h ; 68 61 0c ; 0xf7fea
+ push strict byte 00004h ; 6a 04 ; 0xf7fed
+ call 01a68h ; e8 76 9a ; 0xf7fef
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7ff2
+ jmp near 08307h ; e9 0f 03 ; 0xf7ff5 scsi.c:376
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7ff8 scsi.c:380
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7ffb
+ jc short 0800bh ; 72 0c ; 0xf7ffd
+ jbe short 08013h ; 76 12 ; 0xf7fff
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf8001
+ je short 0801bh ; 74 16 ; 0xf8003
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf8005
+ je short 08017h ; 74 0e ; 0xf8007
+ jmp short 08052h ; eb 47 ; 0xf8009
+ test al, al ; 84 c0 ; 0xf800b
+ jne short 08052h ; 75 43 ; 0xf800d
+ mov BL, strict byte 090h ; b3 90 ; 0xf800f scsi.c:383
+ jmp short 0801dh ; eb 0a ; 0xf8011 scsi.c:384
+ mov BL, strict byte 098h ; b3 98 ; 0xf8013 scsi.c:386
+ jmp short 0801dh ; eb 06 ; 0xf8015 scsi.c:387
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xf8017 scsi.c:389
+ jmp short 0801dh ; eb 02 ; 0xf8019 scsi.c:390
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xf801b scsi.c:392
+ mov al, bl ; 88 d8 ; 0xf801d scsi.c:396
+ add AL, strict byte 007h ; 04 07 ; 0xf801f
+ movzx cx, al ; 0f b6 c8 ; 0xf8021
+ mov ax, cx ; 89 c8 ; 0xf8024
+ call 0176ah ; e8 41 97 ; 0xf8026
+ test al, al ; 84 c0 ; 0xf8029
+ je short 08052h ; 74 25 ; 0xf802b
+ movzx ax, bl ; 0f b6 c3 ; 0xf802d scsi.c:401
+ call 017a6h ; e8 73 97 ; 0xf8030
+ mov dx, ax ; 89 c2 ; 0xf8033
+ xor si, si ; 31 f6 ; 0xf8035
+ mov al, bl ; 88 d8 ; 0xf8037 scsi.c:402
+ add AL, strict byte 002h ; 04 02 ; 0xf8039
+ xor ah, ah ; 30 e4 ; 0xf803b
+ call 0176ah ; e8 2a 97 ; 0xf803d
+ xor ah, ah ; 30 e4 ; 0xf8040
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf8042
+ mov ax, cx ; 89 c8 ; 0xf8045 scsi.c:403
+ call 0176ah ; e8 20 97 ; 0xf8047
+ xor ah, ah ; 30 e4 ; 0xf804a
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf804c
+ jmp near 0813dh ; e9 eb 00 ; 0xf804f scsi.c:405
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8052 scsi.c:406
+ mov bx, word [bp-032h] ; 8b 5e ce ; 0xf8055
+ mov cx, word [bp-01ah] ; 8b 4e e6 ; 0xf8058
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf805b
+ mov si, strict word 0000ch ; be 0c 00 ; 0xf805e
+ call 0ad60h ; e8 fc 2c ; 0xf8061
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf8064
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf8067
+ mov word [bp-024h], cx ; 89 4e dc ; 0xf806a
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf806d
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8070 scsi.c:410
+ test ax, ax ; 85 c0 ; 0xf8073
+ jnbe short 0808dh ; 77 16 ; 0xf8075
+ jne near 08100h ; 0f 85 85 00 ; 0xf8077
+ cmp word [bp-032h], strict byte 00000h ; 83 7e ce 00 ; 0xf807b
+ jnbe short 0808dh ; 77 0c ; 0xf807f
+ jne near 08100h ; 0f 85 7b 00 ; 0xf8081
+ cmp word [bp-01ah], strict byte 00040h ; 83 7e e6 40 ; 0xf8085
+ jnbe short 0808dh ; 77 02 ; 0xf8089
+ jne short 08100h ; 75 73 ; 0xf808b
+ mov word [bp-012h], 000ffh ; c7 46 ee ff 00 ; 0xf808d scsi.c:412
+ mov word [bp-016h], strict word 0003fh ; c7 46 ea 3f 00 ; 0xf8092 scsi.c:413
+ mov bx, word [bp-032h] ; 8b 5e ce ; 0xf8097 scsi.c:415
+ mov cx, word [bp-01ah] ; 8b 4e e6 ; 0xf809a
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf809d
+ mov si, strict word 00006h ; be 06 00 ; 0xf80a0
+ call 0ad60h ; e8 ba 2c ; 0xf80a3
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf80a6
+ add si, dx ; 01 d6 ; 0xf80a9
+ mov word [bp-028h], si ; 89 76 d8 ; 0xf80ab
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf80ae
+ adc dx, cx ; 11 ca ; 0xf80b1
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf80b3
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf80b6
+ adc dx, bx ; 11 da ; 0xf80b9
+ mov word [bp-036h], dx ; 89 56 ca ; 0xf80bb
+ mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf80be
+ adc dx, ax ; 11 c2 ; 0xf80c1
+ mov word [bp-034h], dx ; 89 56 cc ; 0xf80c3
+ mov ax, dx ; 89 d0 ; 0xf80c6 scsi.c:416
+ mov bx, word [bp-036h] ; 8b 5e ca ; 0xf80c8
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf80cb
+ mov dx, si ; 89 f2 ; 0xf80ce
+ mov si, strict word 00008h ; be 08 00 ; 0xf80d0
+ call 0ad60h ; e8 8a 2c ; 0xf80d3
+ mov word [bp-02ah], bx ; 89 5e d6 ; 0xf80d6
+ mov word [bp-02ch], cx ; 89 4e d4 ; 0xf80d9
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf80dc
+ mov ax, word [bp-034h] ; 8b 46 cc ; 0xf80df
+ mov bx, word [bp-036h] ; 8b 5e ca ; 0xf80e2
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf80e5
+ mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf80e8
+ mov si, strict word 00010h ; be 10 00 ; 0xf80eb
+ call 0ad60h ; e8 6f 2c ; 0xf80ee
+ add dx, word [bp-02eh] ; 03 56 d2 ; 0xf80f1
+ mov si, word [bp-02ch] ; 8b 76 d4 ; 0xf80f4
+ adc si, cx ; 11 ce ; 0xf80f7
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf80f9
+ adc ax, bx ; 11 d8 ; 0xf80fc
+ jmp short 0813dh ; eb 3d ; 0xf80fe scsi.c:418
+ test ax, ax ; 85 c0 ; 0xf8100
+ jnbe short 08116h ; 77 12 ; 0xf8102
+ jne short 08122h ; 75 1c ; 0xf8104
+ cmp word [bp-032h], strict byte 00000h ; 83 7e ce 00 ; 0xf8106
+ jnbe short 08116h ; 77 0a ; 0xf810a
+ jne short 08122h ; 75 14 ; 0xf810c
+ cmp word [bp-01ah], strict byte 00020h ; 83 7e e6 20 ; 0xf810e
+ jnbe short 08116h ; 77 02 ; 0xf8112
+ jne short 08122h ; 75 0c ; 0xf8114
+ mov word [bp-012h], 00080h ; c7 46 ee 80 00 ; 0xf8116 scsi.c:420
+ mov word [bp-016h], strict word 00020h ; c7 46 ea 20 00 ; 0xf811b scsi.c:421
+ jmp short 0813bh ; eb 19 ; 0xf8120 scsi.c:424
+ mov word [bp-012h], strict word 00040h ; c7 46 ee 40 00 ; 0xf8122 scsi.c:426
+ mov word [bp-016h], strict word 00020h ; c7 46 ea 20 00 ; 0xf8127 scsi.c:427
+ mov bx, word [bp-032h] ; 8b 5e ce ; 0xf812c scsi.c:428
+ mov cx, word [bp-01ah] ; 8b 4e e6 ; 0xf812f
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf8132
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf8135
+ call 0ad60h ; e8 25 2c ; 0xf8138
+ mov si, cx ; 89 ce ; 0xf813b
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf813d scsi.c:433
+ add AL, strict byte 008h ; 04 08 ; 0xf8140
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf8142
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf8145 scsi.c:435
+ sal ax, 002h ; c1 e0 02 ; 0xf8149
+ mov es, [bp-022h] ; 8e 46 de ; 0xf814c
+ mov bx, di ; 89 fb ; 0xf814f
+ add bx, ax ; 01 c3 ; 0xf8151
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8153
+ mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf8157
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf815c scsi.c:436
+ mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf815f
+ mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf8164 scsi.c:437
+ mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf8167
+ movzx bx, byte [bp-00ah] ; 0f b6 5e f6 ; 0xf816c scsi.c:438
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf8170
+ add bx, di ; 01 fb ; 0xf8173
+ db 066h, 026h, 0c7h, 047h, 01eh, 004h, 0ffh, 000h, 000h
+ ; mov dword [es:bx+01eh], strict dword 00000ff04h ; 66 26 c7 47 1e 04 ff 00 00; 0xf8175
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf817e scsi.c:442
+ mov word [es:bx+024h], ax ; 26 89 47 24 ; 0xf8181
+ mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf8185 scsi.c:443
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf818a scsi.c:446
+ mov word [es:bx+026h], ax ; 26 89 47 26 ; 0xf818d
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf8191 scsi.c:447
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf8194
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8198 scsi.c:448
+ mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf819b
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf819f scsi.c:449
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf81a2
+ test si, si ; 85 f6 ; 0xf81a6 scsi.c:451
+ jne short 081b0h ; 75 06 ; 0xf81a8
+ cmp dx, 00400h ; 81 fa 00 04 ; 0xf81aa
+ jbe short 081beh ; 76 0e ; 0xf81ae
+ mov word [es:bx+028h], 00400h ; 26 c7 47 28 00 04 ; 0xf81b0 scsi.c:452
+ mov word [es:bx+02eh], 00400h ; 26 c7 47 2e 00 04 ; 0xf81b6 scsi.c:453
+ jmp short 081c6h ; eb 08 ; 0xf81bc scsi.c:454
+ mov word [es:bx+028h], dx ; 26 89 57 28 ; 0xf81be scsi.c:455
+ mov word [es:bx+02eh], dx ; 26 89 57 2e ; 0xf81c2 scsi.c:456
+ mov bx, 00e16h ; bb 16 0e ; 0xf81c6 scsi.c:460
+ mov cx, ds ; 8c d9 ; 0xf81c9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf81cb
+ call 01a27h ; e8 56 98 ; 0xf81ce
+ push word [bp-010h] ; ff 76 f0 ; 0xf81d1
+ push word [bp-032h] ; ff 76 ce ; 0xf81d4
+ push word [bp-01ah] ; ff 76 e6 ; 0xf81d7
+ push dword [bp-016h] ; 66 ff 76 ea ; 0xf81da
+ push word [bp-012h] ; ff 76 ee ; 0xf81de
+ push si ; 56 ; 0xf81e1
+ push dx ; 52 ; 0xf81e2
+ push word [bp-030h] ; ff 76 d0 ; 0xf81e3
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf81e6
+ push ax ; 50 ; 0xf81ea
+ push 00c8fh ; 68 8f 0c ; 0xf81eb
+ push strict byte 00004h ; 6a 04 ; 0xf81ee
+ call 01a68h ; e8 75 98 ; 0xf81f0
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xf81f3
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf81f6 scsi.c:462
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf81fa
+ mov es, [bp-022h] ; 8e 46 de ; 0xf81fd
+ mov bx, di ; 89 fb ; 0xf8200
+ add bx, ax ; 01 c3 ; 0xf8202
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8204
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8207
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf820b
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf820e
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf8212
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf8215
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf8219
+ mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf821c
+ mov al, byte [es:di+0024eh] ; 26 8a 85 4e 02 ; 0xf8220 scsi.c:465
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8225 scsi.c:466
+ add ah, 008h ; 80 c4 08 ; 0xf8228
+ movzx bx, al ; 0f b6 d8 ; 0xf822b
+ add bx, di ; 01 fb ; 0xf822e
+ mov byte [es:bx+0024fh], ah ; 26 88 a7 4f 02 ; 0xf8230
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8235 scsi.c:467
+ mov byte [es:di+0024eh], al ; 26 88 85 4e 02 ; 0xf8237 scsi.c:468
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf823c scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf823f
+ mov es, ax ; 8e c0 ; 0xf8242
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf8244
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8247 scsi.c:472
+ mov byte [es:bx], al ; 26 88 07 ; 0xf8249 scsi.c:53
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf824c scsi.c:475
+ jmp near 082fch ; e9 aa 00 ; 0xf824f scsi.c:477
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf8252 scsi.c:483
+ jne near 082fch ; 0f 85 a1 00 ; 0xf8257
+ mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xf825b
+ and AL, strict byte 01fh ; 24 1f ; 0xf825f
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf8261
+ jne near 082fch ; 0f 85 95 00 ; 0xf8263
+ mov bx, 00e16h ; bb 16 0e ; 0xf8267 scsi.c:489
+ mov cx, ds ; 8c d9 ; 0xf826a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf826c
+ call 01a27h ; e8 b5 97 ; 0xf826f
+ push word [bp-030h] ; ff 76 d0 ; 0xf8272
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf8275
+ push ax ; 50 ; 0xf8279
+ push 00cbdh ; 68 bd 0c ; 0xf827a
+ push strict byte 00004h ; 6a 04 ; 0xf827d
+ call 01a68h ; e8 e6 97 ; 0xf827f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8282
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8285 scsi.c:492
+ add AL, strict byte 008h ; 04 08 ; 0xf8288
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf828a
+ test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xf828d scsi.c:494
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf8292
+ xor ah, ah ; 30 e4 ; 0xf8295
+ mov dx, ax ; 89 c2 ; 0xf8297
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf8299 scsi.c:496
+ sal bx, 002h ; c1 e3 02 ; 0xf829d
+ mov es, [bp-022h] ; 8e 46 de ; 0xf82a0
+ add bx, di ; 01 fb ; 0xf82a3
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf82a5
+ mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf82a9
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf82ae scsi.c:497
+ mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf82b1
+ mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf82b6 scsi.c:498
+ mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf82b9
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf82be scsi.c:499
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf82c2
+ mov bx, di ; 89 fb ; 0xf82c5
+ add bx, ax ; 01 c3 ; 0xf82c7
+ mov word [es:bx+01eh], 00504h ; 26 c7 47 1e 04 05 ; 0xf82c9
+ mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf82cf scsi.c:501
+ mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf82d3 scsi.c:502
+ mov byte [es:bx+023h], dh ; 26 88 77 23 ; 0xf82d9 scsi.c:503
+ mov al, byte [es:di+00263h] ; 26 8a 85 63 02 ; 0xf82dd scsi.c:506
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf82e2 scsi.c:507
+ add ah, 008h ; 80 c4 08 ; 0xf82e5
+ movzx bx, al ; 0f b6 d8 ; 0xf82e8
+ add bx, di ; 01 fb ; 0xf82eb
+ mov byte [es:bx+00264h], ah ; 26 88 a7 64 02 ; 0xf82ed
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf82f2 scsi.c:508
+ mov byte [es:di+00263h], al ; 26 88 85 63 02 ; 0xf82f4 scsi.c:509
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf82f9 scsi.c:511
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf82fc scsi.c:516
+ mov es, [bp-022h] ; 8e 46 de ; 0xf82ff
+ mov byte [es:di+002a0h], al ; 26 88 85 a0 02 ; 0xf8302
+ inc word [bp-030h] ; ff 46 d0 ; 0xf8307 scsi.c:517
+ cmp word [bp-030h], strict byte 00010h ; 83 7e d0 10 ; 0xf830a
+ jnl short 08353h ; 7d 43 ; 0xf830e
+ mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xf8310
+ xor al, al ; 30 c0 ; 0xf8314
+ mov byte [bp-045h], al ; 88 46 bb ; 0xf8316
+ mov byte [bp-044h], al ; 88 46 bc ; 0xf8319
+ mov byte [bp-043h], al ; 88 46 bd ; 0xf831c
+ mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xf831f
+ mov byte [bp-041h], al ; 88 46 bf ; 0xf8323
+ movzx si, byte [bp-00eh] ; 0f b6 76 f2 ; 0xf8326
+ imul si, si, strict byte 0000ch ; 6b f6 0c ; 0xf832a
+ push dword 000000005h ; 66 6a 05 ; 0xf832d
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf8330
+ push SS ; 16 ; 0xf8334
+ push dx ; 52 ; 0xf8335
+ push strict byte 00006h ; 6a 06 ; 0xf8336
+ lea dx, [bp-046h] ; 8d 56 ba ; 0xf8338
+ push SS ; 16 ; 0xf833b
+ push dx ; 52 ; 0xf833c
+ movzx bx, byte [bp-030h] ; 0f b6 5e d0 ; 0xf833d
+ xor ah, ah ; 30 e4 ; 0xf8341
+ mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf8343
+ call word [si+000a4h] ; ff 94 a4 00 ; 0xf8347
+ test al, al ; 84 c0 ; 0xf834b
+ je near 07ef9h ; 0f 84 a8 fb ; 0xf834d
+ jmp short 08307h ; eb b4 ; 0xf8351
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf8353 scsi.c:518
+ pop di ; 5f ; 0xf8356
+ pop si ; 5e ; 0xf8357
+ pop cx ; 59 ; 0xf8358
+ pop bx ; 5b ; 0xf8359
+ pop bp ; 5d ; 0xf835a
+ retn ; c3 ; 0xf835b
+ ; disGetNextSymbol 0xf835c LB 0x2ac0 -> off=0x0 cb=0000000000000081 uValue=00000000000f6d5c 'scsi_init'
+scsi_init: ; 0xf835c LB 0x81
+ push bp ; 55 ; 0xf835c scsi.c:523
+ mov bp, sp ; 89 e5 ; 0xf835d
+ push si ; 56 ; 0xf835f
+ push di ; 57 ; 0xf8360
+ push ax ; 50 ; 0xf8361
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8362 scsi.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8365
+ mov es, ax ; 8e c0 ; 0xf8368
+ mov es, [es:bx] ; 26 8e 07 ; 0xf836a
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf836d scsi.c:59
+ mov byte [es:bx+002a0h], 000h ; 26 c6 87 a0 02 00 ; 0xf8370 scsi.c:529
+ mov word [bp-006h], strict word 00000h ; c7 46 fa 00 00 ; 0xf8376 scsi.c:532
+ jmp short 083c5h ; eb 48 ; 0xf837b
+ mov dx, word [bx+0009ch] ; 8b 97 9c 00 ; 0xf837d scsi.c:536
+ mov ax, word [bx+0009ah] ; 8b 87 9a 00 ; 0xf8381
+ call 0aafdh ; e8 75 27 ; 0xf8385
+ mov cx, ax ; 89 c1 ; 0xf8388
+ cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf838a scsi.c:542
+ je short 083bch ; 74 2d ; 0xf838d
+ call 07b8ch ; e8 fa f7 ; 0xf838f scsi.c:546
+ mov si, ax ; 89 c6 ; 0xf8392
+ test ax, ax ; 85 c0 ; 0xf8394 scsi.c:547
+ je short 083d6h ; 74 3e ; 0xf8396
+ mov bx, cx ; 89 cb ; 0xf8398 scsi.c:550
+ xor bl, cl ; 30 cb ; 0xf839a
+ shr bx, 008h ; c1 eb 08 ; 0xf839c
+ imul di, word [bp-006h], strict byte 0000ch ; 6b 7e fa 0c ; 0xf839f scsi.c:554
+ xor ch, ch ; 30 ed ; 0xf83a3
+ xor bh, bh ; 30 ff ; 0xf83a5
+ xor ax, ax ; 31 c0 ; 0xf83a7
+ mov dx, si ; 89 f2 ; 0xf83a9
+ call word [di+000a0h] ; ff 95 a0 00 ; 0xf83ab
+ test ax, ax ; 85 c0 ; 0xf83af scsi.c:555
+ jne short 083bch ; 75 09 ; 0xf83b1
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf83b3 scsi.c:556
+ mov ax, si ; 89 f0 ; 0xf83b7
+ call 07ed1h ; e8 15 fb ; 0xf83b9
+ inc word [bp-006h] ; ff 46 fa ; 0xf83bc scsi.c:559
+ cmp word [bp-006h], strict byte 00005h ; 83 7e fa 05 ; 0xf83bf
+ jnc short 083d6h ; 73 11 ; 0xf83c3
+ imul bx, word [bp-006h], strict byte 0000ch ; 6b 5e fa 0c ; 0xf83c5
+ cmp word [bx+0009eh], strict byte 00000h ; 83 bf 9e 00 00 ; 0xf83c9
+ je short 0837dh ; 74 ad ; 0xf83ce
+ call word [bx+0009eh] ; ff 97 9e 00 ; 0xf83d0
+ jmp short 08388h ; eb b2 ; 0xf83d4
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf83d6 scsi.c:560
+ pop di ; 5f ; 0xf83d9
+ pop si ; 5e ; 0xf83da
+ pop bp ; 5d ; 0xf83db
+ retn ; c3 ; 0xf83dc
+ ; disGetNextSymbol 0xf83dd LB 0x2a3f -> off=0x0 cb=000000000000001b uValue=00000000000f6ddd 'ahci_ctrl_extract_bits'
+ahci_ctrl_extract_bits: ; 0xf83dd LB 0x1b
+ push si ; 56 ; 0xf83dd ahci.c:287
+ push bp ; 55 ; 0xf83de
+ mov bp, sp ; 89 e5 ; 0xf83df
+ mov si, bx ; 89 de ; 0xf83e1
+ and ax, bx ; 21 d8 ; 0xf83e3 ahci.c:289
+ and dx, cx ; 21 ca ; 0xf83e5
+ movzx cx, byte [bp+006h] ; 0f b6 4e 06 ; 0xf83e7
+ jcxz 083f3h ; e3 06 ; 0xf83eb
+ shr dx, 1 ; d1 ea ; 0xf83ed
+ rcr ax, 1 ; d1 d8 ; 0xf83ef
+ loop 083edh ; e2 fa ; 0xf83f1
+ pop bp ; 5d ; 0xf83f3 ahci.c:290
+ pop si ; 5e ; 0xf83f4
+ retn 00002h ; c2 02 00 ; 0xf83f5
+ ; disGetNextSymbol 0xf83f8 LB 0x2a24 -> off=0x0 cb=000000000000001e uValue=00000000000f6df8 'ahci_addr_to_phys'
+ahci_addr_to_phys: ; 0xf83f8 LB 0x1e
+ push bx ; 53 ; 0xf83f8 ahci.c:295
+ push cx ; 51 ; 0xf83f9
+ push bp ; 55 ; 0xf83fa
+ mov bp, sp ; 89 e5 ; 0xf83fb
+ mov bx, ax ; 89 c3 ; 0xf83fd
+ mov ax, dx ; 89 d0 ; 0xf83ff
+ xor dx, dx ; 31 d2 ; 0xf8401 ahci.c:297
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf8403
+ sal ax, 1 ; d1 e0 ; 0xf8406
+ rcl dx, 1 ; d1 d2 ; 0xf8408
+ loop 08406h ; e2 fa ; 0xf840a
+ xor cx, cx ; 31 c9 ; 0xf840c
+ add ax, bx ; 01 d8 ; 0xf840e
+ adc dx, cx ; 11 ca ; 0xf8410
+ pop bp ; 5d ; 0xf8412 ahci.c:298
+ pop cx ; 59 ; 0xf8413
+ pop bx ; 5b ; 0xf8414
+ retn ; c3 ; 0xf8415
+ ; disGetNextSymbol 0xf8416 LB 0x2a06 -> off=0x0 cb=000000000000014b uValue=00000000000f6e16 'ahci_port_cmd_sync'
+ahci_port_cmd_sync: ; 0xf8416 LB 0x14b
+ push bp ; 55 ; 0xf8416 ahci.c:303
+ mov bp, sp ; 89 e5 ; 0xf8417
+ push cx ; 51 ; 0xf8419
+ push si ; 56 ; 0xf841a
+ push di ; 57 ; 0xf841b
+ push ax ; 50 ; 0xf841c
+ mov si, ax ; 89 c6 ; 0xf841d
+ mov cx, dx ; 89 d1 ; 0xf841f
+ mov al, bl ; 88 d8 ; 0xf8421
+ mov es, dx ; 8e c2 ; 0xf8423 ahci.c:308
+ mov ah, byte [es:si+00262h] ; 26 8a a4 62 02 ; 0xf8425
+ mov byte [bp-008h], ah ; 88 66 f8 ; 0xf842a
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf842d ahci.c:309
+ cmp ah, 0ffh ; 80 fc ff ; 0xf8432 ahci.c:311
+ je near 08559h ; 0f 84 20 01 ; 0xf8435
+ movzx dx, byte [es:si+00263h] ; 26 0f b6 94 63 02 ; 0xf8439 ahci.c:314
+ xor di, di ; 31 ff ; 0xf843f
+ or di, 00080h ; 81 cf 80 00 ; 0xf8441
+ xor ah, ah ; 30 e4 ; 0xf8445
+ or di, ax ; 09 c7 ; 0xf8447
+ mov word [es:si], di ; 26 89 3c ; 0xf8449
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf844c
+ 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; 0xf8450 ahci.c:315
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf8459 ahci.c:316
+ mov dx, cx ; 89 ca ; 0xf845d
+ call 083f8h ; e8 96 ff ; 0xf845f
+ mov es, cx ; 8e c1 ; 0xf8462
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8464
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf8468
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf846c ahci.c:319
+ sal di, 007h ; c1 e7 07 ; 0xf8470
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8473
+ xor cx, cx ; 31 c9 ; 0xf8477 ahci.c:260
+ mov dx, bx ; 89 da ; 0xf8479
+ xchg cx, ax ; 91 ; 0xf847b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf847c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8480
+ out DX, eax ; 66 ef ; 0xf8482
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf8484 ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf8487
+ in eax, DX ; 66 ed ; 0xf8489
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf848b
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf848d
+ xchg dx, ax ; 92 ; 0xf8491
+ or AL, strict byte 011h ; 0c 11 ; 0xf8492
+ mov cx, dx ; 89 d1 ; 0xf8494
+ mov dx, si ; 89 f2 ; 0xf8496
+ xchg cx, ax ; 91 ; 0xf8498
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8499
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf849d
+ out DX, eax ; 66 ef ; 0xf849f
+ lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf84a1 ahci.c:323
+ cwd ; 99 ; 0xf84a5
+ mov cx, dx ; 89 d1 ; 0xf84a6
+ mov dx, bx ; 89 da ; 0xf84a8
+ xchg cx, ax ; 91 ; 0xf84aa
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84ab
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84af
+ out DX, eax ; 66 ef ; 0xf84b1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf84b3
+ xor cx, cx ; 31 c9 ; 0xf84b6
+ mov dx, si ; 89 f2 ; 0xf84b8
+ xchg cx, ax ; 91 ; 0xf84ba
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84bb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84bf
+ out DX, eax ; 66 ef ; 0xf84c1
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf84c3 ahci.c:327
+ sal ax, 007h ; c1 e0 07 ; 0xf84c7
+ add ax, 00110h ; 05 10 01 ; 0xf84ca
+ xor cx, cx ; 31 c9 ; 0xf84cd ahci.c:279
+ mov dx, bx ; 89 da ; 0xf84cf
+ xchg cx, ax ; 91 ; 0xf84d1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84d2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84d6
+ out DX, eax ; 66 ef ; 0xf84d8
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf84da ahci.c:280
+ in eax, DX ; 66 ed ; 0xf84dd
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf84df
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf84e1
+ xchg dx, ax ; 92 ; 0xf84e5
+ test dh, 040h ; f6 c6 40 ; 0xf84e6
+ jne short 084efh ; 75 04 ; 0xf84e9
+ test AL, strict byte 001h ; a8 01 ; 0xf84eb
+ je short 084f3h ; 74 04 ; 0xf84ed
+ mov AL, strict byte 001h ; b0 01 ; 0xf84ef
+ jmp short 084f5h ; eb 02 ; 0xf84f1
+ xor al, al ; 30 c0 ; 0xf84f3
+ test al, al ; 84 c0 ; 0xf84f5 ahci.c:281
+ je short 084c3h ; 74 ca ; 0xf84f7
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf84f9 ahci.c:333
+ sal di, 007h ; c1 e7 07 ; 0xf84fd
+ lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf8500
+ xor cx, cx ; 31 c9 ; 0xf8504 ahci.c:260
+ mov dx, bx ; 89 da ; 0xf8506
+ xchg cx, ax ; 91 ; 0xf8508
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8509
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf850d
+ out DX, eax ; 66 ef ; 0xf850f
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf8511 ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf8514
+ in eax, DX ; 66 ed ; 0xf8516
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8518
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf851a
+ xchg dx, ax ; 92 ; 0xf851e
+ or AL, strict byte 001h ; 0c 01 ; 0xf851f
+ mov cx, dx ; 89 d1 ; 0xf8521
+ mov dx, si ; 89 f2 ; 0xf8523
+ xchg cx, ax ; 91 ; 0xf8525
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8526
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf852a
+ out DX, eax ; 66 ef ; 0xf852c
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf852e ahci.c:337
+ xor cx, cx ; 31 c9 ; 0xf8532 ahci.c:269
+ mov dx, bx ; 89 da ; 0xf8534
+ xchg cx, ax ; 91 ; 0xf8536
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8537
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf853b
+ out DX, eax ; 66 ef ; 0xf853d
+ mov dx, si ; 89 f2 ; 0xf853f ahci.c:270
+ in eax, DX ; 66 ed ; 0xf8541
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8543
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8545
+ xchg dx, ax ; 92 ; 0xf8549
+ and AL, strict byte 0feh ; 24 fe ; 0xf854a
+ mov cx, dx ; 89 d1 ; 0xf854c
+ mov dx, si ; 89 f2 ; 0xf854e
+ xchg cx, ax ; 91 ; 0xf8550
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8551
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8555
+ out DX, eax ; 66 ef ; 0xf8557
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8559 ahci.c:343
+ pop di ; 5f ; 0xf855c
+ pop si ; 5e ; 0xf855d
+ pop cx ; 59 ; 0xf855e
+ pop bp ; 5d ; 0xf855f
+ retn ; c3 ; 0xf8560
+ ; disGetNextSymbol 0xf8561 LB 0x28bb -> off=0x0 cb=0000000000000216 uValue=00000000000f6f61 'ahci_cmd_data'
+ahci_cmd_data: ; 0xf8561 LB 0x216
+ push bp ; 55 ; 0xf8561 ahci.c:348
+ mov bp, sp ; 89 e5 ; 0xf8562
+ push cx ; 51 ; 0xf8564
+ push si ; 56 ; 0xf8565
+ push di ; 57 ; 0xf8566
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf8567
+ mov di, ax ; 89 c7 ; 0xf856a
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf856c
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf856f
+ mov word [bp-012h], strict word 00000h ; c7 46 ee 00 00 ; 0xf8572 ahci.c:350
+ mov es, dx ; 8e c2 ; 0xf8577
+ mov ax, word [es:di+002a6h] ; 26 8b 85 a6 02 ; 0xf8579
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf857e
+ mov word [bp-010h], strict word 00000h ; c7 46 f0 00 00 ; 0xf8581
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf8586
+ mov ax, word [es:di+00eh] ; 26 8b 45 0e ; 0xf8589 ahci.c:351
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf858d
+ mov ax, word [es:di+010h] ; 26 8b 45 10 ; 0xf8590 ahci.c:352
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf8594
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8597 ahci.c:355
+ xor bx, bx ; 31 db ; 0xf859a
+ mov ax, 00080h ; b8 80 00 ; 0xf859c
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf859f
+ call 0ad80h ; e8 db 27 ; 0xf85a2
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85a5 ahci.c:358
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf85a8
+ mov word [es:bx+00080h], 08027h ; 26 c7 87 80 00 27 80 ; 0xf85ab
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf85b2 ahci.c:360
+ mov byte [es:bx+00082h], al ; 26 88 87 82 00 ; 0xf85b5
+ mov byte [es:bx+00083h], 000h ; 26 c6 87 83 00 00 ; 0xf85ba ahci.c:361
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf85c0 ahci.c:363
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf85c3
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85c6
+ mov byte [es:bx+00084h], al ; 26 88 87 84 00 ; 0xf85c9
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf85ce ahci.c:364
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf85d1
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf85d5
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf85d9
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf85dd
+ mov si, strict word 00008h ; be 08 00 ; 0xf85e0
+ call 0ad60h ; e8 7a 27 ; 0xf85e3
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85e6
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf85e9
+ mov byte [es:bx+00085h], dl ; 26 88 97 85 00 ; 0xf85ec
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf85f1 ahci.c:365
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf85f4
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf85f8
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf85fc
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf8600
+ mov si, strict word 00010h ; be 10 00 ; 0xf8603
+ call 0ad60h ; e8 57 27 ; 0xf8606
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8609
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf860c
+ mov byte [es:bx+00086h], dl ; 26 88 97 86 00 ; 0xf860f
+ mov byte [es:bx+00087h], 040h ; 26 c6 87 87 00 40 ; 0xf8614 ahci.c:366
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf861a ahci.c:368
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf861d
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8621
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8625
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf8629
+ mov si, strict word 00018h ; be 18 00 ; 0xf862c
+ call 0ad60h ; e8 2e 27 ; 0xf862f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8632
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf8635
+ mov byte [es:bx+00088h], dl ; 26 88 97 88 00 ; 0xf8638
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf863d ahci.c:369
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8640
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8644
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8648
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf864c
+ mov si, strict word 00020h ; be 20 00 ; 0xf864f
+ call 0ad60h ; e8 0b 27 ; 0xf8652
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8655
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf8658
+ mov byte [es:bx+00089h], dl ; 26 88 97 89 00 ; 0xf865b
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8660 ahci.c:370
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8663
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8667
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf866b
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf866f
+ mov si, strict word 00028h ; be 28 00 ; 0xf8672
+ call 0ad60h ; e8 e8 26 ; 0xf8675
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8678
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf867b
+ mov byte [es:bx+0008ah], dl ; 26 88 97 8a 00 ; 0xf867e
+ mov byte [es:bx+0008bh], 000h ; 26 c6 87 8b 00 00 ; 0xf8683 ahci.c:371
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf8689 ahci.c:373
+ mov byte [es:bx+0008ch], al ; 26 88 87 8c 00 ; 0xf868c
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf8691 ahci.c:374
+ shr ax, 008h ; c1 e8 08 ; 0xf8694
+ mov byte [es:bx+0008dh], al ; 26 88 87 8d 00 ; 0xf8697
+ mov word [es:bx+00272h], strict word 00010h ; 26 c7 87 72 02 10 00 ; 0xf869c ahci.c:377
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf86a3 ahci.c:379
+ xor dx, dx ; 31 d2 ; 0xf86a6
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf86a8
+ xor cx, cx ; 31 c9 ; 0xf86ab
+ call 0ace0h ; e8 30 26 ; 0xf86ad
+ push dx ; 52 ; 0xf86b0
+ push ax ; 50 ; 0xf86b1
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf86b2
+ mov bx, word [es:di+008h] ; 26 8b 5d 08 ; 0xf86b5
+ mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf86b9
+ mov ax, 00266h ; b8 66 02 ; 0xf86bd
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf86c0
+ call 0ac31h ; e8 6b 25 ; 0xf86c3
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86c6 ahci.c:382
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf86c9
+ mov ax, word [es:bx+0027ah] ; 26 8b 87 7a 02 ; 0xf86cc
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf86d1
+ mov dx, word [es:bx+0027ch] ; 26 8b 97 7c 02 ; 0xf86d4
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf86d9
+ mov di, bx ; 89 df ; 0xf86dc
+ movzx di, byte [es:di+00263h] ; 26 0f b6 bd 63 02 ; 0xf86de
+ sal di, 004h ; c1 e7 04 ; 0xf86e4
+ mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf86e7
+ mov word [es:di+0010eh], dx ; 26 89 95 0e 01 ; 0xf86ec
+ mov di, bx ; 89 df ; 0xf86f1 ahci.c:383
+ movzx di, byte [es:di+00263h] ; 26 0f b6 bd 63 02 ; 0xf86f3
+ sal di, 004h ; c1 e7 04 ; 0xf86f9
+ mov si, bx ; 89 de ; 0xf86fc
+ mov dx, word [es:si+00276h] ; 26 8b 94 76 02 ; 0xf86fe
+ mov ax, word [es:si+00278h] ; 26 8b 84 78 02 ; 0xf8703
+ mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf8708
+ mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf870d
+ inc byte [es:bx+00263h] ; 26 fe 87 63 02 ; 0xf8712 ahci.c:384
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8717 ahci.c:398
+ cmp AL, strict byte 035h ; 3c 35 ; 0xf871a
+ jne short 08724h ; 75 06 ; 0xf871c
+ mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf871e ahci.c:399
+ jmp short 08738h ; eb 14 ; 0xf8722 ahci.c:400
+ cmp AL, strict byte 0a0h ; 3c a0 ; 0xf8724
+ jne short 08734h ; 75 0c ; 0xf8726
+ or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf8728 ahci.c:401
+ or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf872c ahci.c:402
+ jmp short 08738h ; eb 04 ; 0xf8732 ahci.c:403
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf8734 ahci.c:404
+ or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf8738 ahci.c:406
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf873c ahci.c:408
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8740
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8743
+ call 08416h ; e8 cd fc ; 0xf8746
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8749 ahci.c:411
+ mov di, word [bp-010h] ; 8b 7e f0 ; 0xf874c
+ add di, 00240h ; 81 c7 40 02 ; 0xf874f
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8753 ahci.c:415
+ add ax, 00266h ; 05 66 02 ; 0xf8756
+ mov dx, bx ; 89 da ; 0xf8759
+ call 0acaah ; e8 4c 25 ; 0xf875b
+ mov es, bx ; 8e c3 ; 0xf875e ahci.c:416
+ mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf8760
+ test al, al ; 84 c0 ; 0xf8764
+ je short 0876dh ; 74 05 ; 0xf8766
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8768
+ jmp short 0876fh ; eb 02 ; 0xf876b
+ xor ah, ah ; 30 e4 ; 0xf876d
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf876f ahci.c:417
+ pop di ; 5f ; 0xf8772
+ pop si ; 5e ; 0xf8773
+ pop cx ; 59 ; 0xf8774
+ pop bp ; 5d ; 0xf8775
+ retn ; c3 ; 0xf8776
+ ; disGetNextSymbol 0xf8777 LB 0x26a5 -> off=0x0 cb=000000000000017f uValue=00000000000f7177 'ahci_port_deinit_current'
+ahci_port_deinit_current: ; 0xf8777 LB 0x17f
+ push bp ; 55 ; 0xf8777 ahci.c:422
+ mov bp, sp ; 89 e5 ; 0xf8778
+ push bx ; 53 ; 0xf877a
+ push cx ; 51 ; 0xf877b
+ push si ; 56 ; 0xf877c
+ push di ; 57 ; 0xf877d
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf877e
+ mov di, ax ; 89 c7 ; 0xf8781
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf8783
+ mov es, dx ; 8e c2 ; 0xf8786 ahci.c:427
+ mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf8788
+ mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf878d ahci.c:428
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf8792
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf8795 ahci.c:430
+ je near 088edh ; 0f 84 52 01 ; 0xf8797
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf879b ahci.c:433
+ sal ax, 007h ; c1 e0 07 ; 0xf879f
+ add ax, 00118h ; 05 18 01 ; 0xf87a2
+ xor cx, cx ; 31 c9 ; 0xf87a5 ahci.c:269
+ mov dx, si ; 89 f2 ; 0xf87a7
+ xchg cx, ax ; 91 ; 0xf87a9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87aa
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87ae
+ out DX, eax ; 66 ef ; 0xf87b0
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf87b2 ahci.c:270
+ mov dx, bx ; 89 da ; 0xf87b5
+ in eax, DX ; 66 ed ; 0xf87b7
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf87b9
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf87bb
+ xchg dx, ax ; 92 ; 0xf87bf
+ and AL, strict byte 0eeh ; 24 ee ; 0xf87c0
+ mov cx, dx ; 89 d1 ; 0xf87c2
+ mov dx, bx ; 89 da ; 0xf87c4
+ xchg cx, ax ; 91 ; 0xf87c6
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87c7
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87cb
+ out DX, eax ; 66 ef ; 0xf87cd
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf87cf ahci.c:436
+ sal ax, 007h ; c1 e0 07 ; 0xf87d3
+ add ax, 00118h ; 05 18 01 ; 0xf87d6
+ xor cx, cx ; 31 c9 ; 0xf87d9 ahci.c:279
+ mov dx, si ; 89 f2 ; 0xf87db
+ xchg cx, ax ; 91 ; 0xf87dd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87de
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87e2
+ out DX, eax ; 66 ef ; 0xf87e4
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf87e6 ahci.c:280
+ in eax, DX ; 66 ed ; 0xf87e9
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf87eb
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf87ed
+ xchg dx, ax ; 92 ; 0xf87f1
+ test ax, 0c011h ; a9 11 c0 ; 0xf87f2
+ je short 087fbh ; 74 04 ; 0xf87f5
+ mov AL, strict byte 001h ; b0 01 ; 0xf87f7
+ jmp short 087fdh ; eb 02 ; 0xf87f9
+ xor al, al ; 30 c0 ; 0xf87fb
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf87fd ahci.c:281
+ je short 087cfh ; 74 ce ; 0xf87ff
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf8801 ahci.c:447
+ xor bx, bx ; 31 db ; 0xf8804
+ mov ax, di ; 89 f8 ; 0xf8806
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8808
+ call 0ad80h ; e8 72 25 ; 0xf880b
+ lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf880e ahci.c:448
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8812
+ xor bx, bx ; 31 db ; 0xf8815
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8817
+ call 0ad80h ; e8 63 25 ; 0xf881a
+ lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf881d ahci.c:449
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf8821
+ xor bx, bx ; 31 db ; 0xf8824
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8826
+ call 0ad80h ; e8 54 25 ; 0xf8829
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf882c ahci.c:451
+ sal ax, 007h ; c1 e0 07 ; 0xf8830
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf8833
+ add ax, 00108h ; 05 08 01 ; 0xf8836
+ cwd ; 99 ; 0xf8839
+ mov cx, dx ; 89 d1 ; 0xf883a
+ mov dx, si ; 89 f2 ; 0xf883c
+ xchg cx, ax ; 91 ; 0xf883e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf883f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8843
+ out DX, eax ; 66 ef ; 0xf8845
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8847
+ xor ax, ax ; 31 c0 ; 0xf884a
+ xor cx, cx ; 31 c9 ; 0xf884c
+ mov dx, bx ; 89 da ; 0xf884e
+ xchg cx, ax ; 91 ; 0xf8850
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8851
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8855
+ out DX, eax ; 66 ef ; 0xf8857
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8859 ahci.c:452
+ add ax, 0010ch ; 05 0c 01 ; 0xf885c
+ cwd ; 99 ; 0xf885f
+ mov cx, dx ; 89 d1 ; 0xf8860
+ mov dx, si ; 89 f2 ; 0xf8862
+ xchg cx, ax ; 91 ; 0xf8864
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8865
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8869
+ out DX, eax ; 66 ef ; 0xf886b
+ xor ax, ax ; 31 c0 ; 0xf886d
+ xor cx, cx ; 31 c9 ; 0xf886f
+ mov dx, bx ; 89 da ; 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
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf887c ahci.c:454
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf887f
+ cwd ; 99 ; 0xf8881
+ mov cx, dx ; 89 d1 ; 0xf8882
+ mov dx, si ; 89 f2 ; 0xf8884
+ xchg cx, ax ; 91 ; 0xf8886
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8887
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf888b
+ out DX, eax ; 66 ef ; 0xf888d
+ xor ax, ax ; 31 c0 ; 0xf888f
+ xor cx, cx ; 31 c9 ; 0xf8891
+ mov dx, bx ; 89 da ; 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
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf889e ahci.c:455
+ add ax, 00104h ; 05 04 01 ; 0xf88a1
+ cwd ; 99 ; 0xf88a4
+ mov cx, dx ; 89 d1 ; 0xf88a5
+ mov dx, si ; 89 f2 ; 0xf88a7
+ xchg cx, ax ; 91 ; 0xf88a9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88aa
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88ae
+ out DX, eax ; 66 ef ; 0xf88b0
+ xor ax, ax ; 31 c0 ; 0xf88b2
+ xor cx, cx ; 31 c9 ; 0xf88b4
+ mov dx, bx ; 89 da ; 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
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf88c1 ahci.c:458
+ add ax, 00114h ; 05 14 01 ; 0xf88c4
+ cwd ; 99 ; 0xf88c7
+ mov cx, dx ; 89 d1 ; 0xf88c8
+ mov dx, si ; 89 f2 ; 0xf88ca
+ xchg cx, ax ; 91 ; 0xf88cc
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88cd
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88d1
+ out DX, eax ; 66 ef ; 0xf88d3
+ xor ax, ax ; 31 c0 ; 0xf88d5
+ xor cx, cx ; 31 c9 ; 0xf88d7
+ mov dx, bx ; 89 da ; 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
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf88e4 ahci.c:460
+ mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf88e7
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf88ed ahci.c:462
+ pop di ; 5f ; 0xf88f0
+ pop si ; 5e ; 0xf88f1
+ pop cx ; 59 ; 0xf88f2
+ pop bx ; 5b ; 0xf88f3
+ pop bp ; 5d ; 0xf88f4
+ retn ; c3 ; 0xf88f5
+ ; disGetNextSymbol 0xf88f6 LB 0x2526 -> off=0x0 cb=000000000000024a uValue=00000000000f72f6 'ahci_port_init'
+ahci_port_init: ; 0xf88f6 LB 0x24a
+ push bp ; 55 ; 0xf88f6 ahci.c:468
+ mov bp, sp ; 89 e5 ; 0xf88f7
+ push cx ; 51 ; 0xf88f9
+ push si ; 56 ; 0xf88fa
+ push di ; 57 ; 0xf88fb
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf88fc
+ mov si, ax ; 89 c6 ; 0xf88ff
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8901
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8904
+ call 08777h ; e8 6d fe ; 0xf8907 ahci.c:471
+ movzx ax, bl ; 0f b6 c3 ; 0xf890a ahci.c:474
+ sal ax, 007h ; c1 e0 07 ; 0xf890d
+ add ax, 00118h ; 05 18 01 ; 0xf8910
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8913 ahci.c:267
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8916
+ xor cx, cx ; 31 c9 ; 0xf891b ahci.c:269
+ mov dx, bx ; 89 da ; 0xf891d
+ xchg cx, ax ; 91 ; 0xf891f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8920
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8924
+ out DX, eax ; 66 ef ; 0xf8926
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8928 ahci.c:270
+ mov dx, bx ; 89 da ; 0xf892b
+ in eax, DX ; 66 ed ; 0xf892d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf892f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8931
+ xchg dx, ax ; 92 ; 0xf8935
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8936
+ mov cx, dx ; 89 d1 ; 0xf8938
+ mov dx, bx ; 89 da ; 0xf893a
+ xchg cx, ax ; 91 ; 0xf893c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf893d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8941
+ out DX, eax ; 66 ef ; 0xf8943
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf8945 ahci.c:477
+ sal ax, 007h ; c1 e0 07 ; 0xf8949
+ add ax, 00118h ; 05 18 01 ; 0xf894c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf894f ahci.c:277
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8952
+ xor cx, cx ; 31 c9 ; 0xf8957 ahci.c:279
+ mov dx, bx ; 89 da ; 0xf8959
+ xchg cx, ax ; 91 ; 0xf895b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf895c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8960
+ out DX, eax ; 66 ef ; 0xf8962
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf8964 ahci.c:280
+ in eax, DX ; 66 ed ; 0xf8967
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8969
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf896b
+ xchg dx, ax ; 92 ; 0xf896f
+ test ax, 0c011h ; a9 11 c0 ; 0xf8970
+ je short 08979h ; 74 04 ; 0xf8973
+ mov AL, strict byte 001h ; b0 01 ; 0xf8975
+ jmp short 0897bh ; eb 02 ; 0xf8977
+ xor al, al ; 30 c0 ; 0xf8979
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf897b ahci.c:281
+ je short 08945h ; 74 c6 ; 0xf897d
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf897f ahci.c:488
+ xor bx, bx ; 31 db ; 0xf8982
+ mov ax, si ; 89 f0 ; 0xf8984
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8986
+ call 0ad80h ; e8 f4 23 ; 0xf8989
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf898c ahci.c:489
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8990
+ xor bx, bx ; 31 db ; 0xf8993
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8995
+ call 0ad80h ; e8 e5 23 ; 0xf8998
+ lea di, [si+00200h] ; 8d bc 00 02 ; 0xf899b ahci.c:490
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf899f
+ xor bx, bx ; 31 db ; 0xf89a2
+ mov ax, di ; 89 f8 ; 0xf89a4
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89a6
+ call 0ad80h ; e8 d4 23 ; 0xf89a9
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf89ac ahci.c:494
+ sal bx, 007h ; c1 e3 07 ; 0xf89b0
+ lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf89b3
+ cwd ; 99 ; 0xf89b7
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89b8
+ mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf89bb
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf89c0
+ mov cx, dx ; 89 d1 ; 0xf89c3
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf89c5
+ xchg cx, ax ; 91 ; 0xf89c8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89c9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89cd
+ out DX, eax ; 66 ef ; 0xf89cf
+ mov ax, di ; 89 f8 ; 0xf89d1
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89d3
+ call 083f8h ; e8 1f fa ; 0xf89d6
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89d9
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89dc
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf89e1
+ mov cx, dx ; 89 d1 ; 0xf89e4
+ mov dx, di ; 89 fa ; 0xf89e6
+ xchg cx, ax ; 91 ; 0xf89e8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89e9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89ed
+ out DX, eax ; 66 ef ; 0xf89ef
+ lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf89f1 ahci.c:495
+ cwd ; 99 ; 0xf89f5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89f6
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89f9
+ mov cx, dx ; 89 d1 ; 0xf89fe
+ mov dx, di ; 89 fa ; 0xf8a00
+ xchg cx, ax ; 91 ; 0xf8a02
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a03
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a07
+ out DX, eax ; 66 ef ; 0xf8a09
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a0b
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a0e
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a13
+ xor ax, ax ; 31 c0 ; 0xf8a16
+ xor cx, cx ; 31 c9 ; 0xf8a18
+ xchg cx, ax ; 91 ; 0xf8a1a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a1b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a1f
+ out DX, eax ; 66 ef ; 0xf8a21
+ lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf8a23 ahci.c:498
+ cwd ; 99 ; 0xf8a27
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a28
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a2b
+ mov cx, dx ; 89 d1 ; 0xf8a30
+ mov dx, di ; 89 fa ; 0xf8a32
+ xchg cx, ax ; 91 ; 0xf8a34
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a35
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a39
+ out DX, eax ; 66 ef ; 0xf8a3b
+ mov ax, si ; 89 f0 ; 0xf8a3d
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a3f
+ call 083f8h ; e8 b3 f9 ; 0xf8a42
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a45
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a48
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8a4d
+ mov cx, dx ; 89 d1 ; 0xf8a50
+ mov dx, di ; 89 fa ; 0xf8a52
+ xchg cx, ax ; 91 ; 0xf8a54
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a55
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a59
+ out DX, eax ; 66 ef ; 0xf8a5b
+ lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8a5d ahci.c:499
+ cwd ; 99 ; 0xf8a61
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a62
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a65
+ mov cx, dx ; 89 d1 ; 0xf8a6a
+ mov dx, di ; 89 fa ; 0xf8a6c
+ xchg cx, ax ; 91 ; 0xf8a6e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a6f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a73
+ out DX, eax ; 66 ef ; 0xf8a75
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a77
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a7a
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a7f
+ xor ax, ax ; 31 c0 ; 0xf8a82
+ xor cx, cx ; 31 c9 ; 0xf8a84
+ xchg cx, ax ; 91 ; 0xf8a86
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a87
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a8b
+ out DX, eax ; 66 ef ; 0xf8a8d
+ lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8a8f ahci.c:502
+ cwd ; 99 ; 0xf8a93
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a94
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a97
+ mov cx, dx ; 89 d1 ; 0xf8a9c
+ mov dx, di ; 89 fa ; 0xf8a9e
+ xchg cx, ax ; 91 ; 0xf8aa0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8aa1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8aa5
+ out DX, eax ; 66 ef ; 0xf8aa7
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8aa9
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8aac
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ab1
+ xor ax, ax ; 31 c0 ; 0xf8ab4
+ xor cx, cx ; 31 c9 ; 0xf8ab6
+ xchg cx, ax ; 91 ; 0xf8ab8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ab9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8abd
+ out DX, eax ; 66 ef ; 0xf8abf
+ lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8ac1 ahci.c:503
+ cwd ; 99 ; 0xf8ac5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ac6
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8ac9
+ mov cx, dx ; 89 d1 ; 0xf8ace
+ mov dx, di ; 89 fa ; 0xf8ad0
+ xchg cx, ax ; 91 ; 0xf8ad2
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ad3
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ad7
+ out DX, eax ; 66 ef ; 0xf8ad9
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8adb
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ade
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ae3
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8ae6
+ mov cx, ax ; 89 c1 ; 0xf8ae9
+ xchg cx, ax ; 91 ; 0xf8aeb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8aec
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8af0
+ out DX, eax ; 66 ef ; 0xf8af2
+ lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8af4 ahci.c:505
+ cwd ; 99 ; 0xf8af8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8af9
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8afc
+ mov cx, dx ; 89 d1 ; 0xf8b01
+ mov dx, bx ; 89 da ; 0xf8b03
+ xchg cx, ax ; 91 ; 0xf8b05
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b06
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b0a
+ out DX, eax ; 66 ef ; 0xf8b0c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b0e
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b11
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b16
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8b19
+ mov cx, ax ; 89 c1 ; 0xf8b1c
+ xchg cx, ax ; 91 ; 0xf8b1e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b1f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b23
+ out DX, eax ; 66 ef ; 0xf8b25
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8b27 ahci.c:507
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b2a
+ mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8b2d
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8b32 ahci.c:508
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8b38 ahci.c:509
+ pop di ; 5f ; 0xf8b3b
+ pop si ; 5e ; 0xf8b3c
+ pop cx ; 59 ; 0xf8b3d
+ pop bp ; 5d ; 0xf8b3e
+ retn ; c3 ; 0xf8b3f
+ ; disGetNextSymbol 0xf8b40 LB 0x22dc -> off=0x0 cb=00000000000000a6 uValue=00000000000f7540 'ahci_read_sectors'
+ahci_read_sectors: ; 0xf8b40 LB 0xa6
+ push bp ; 55 ; 0xf8b40 ahci.c:518
+ mov bp, sp ; 89 e5 ; 0xf8b41
+ push si ; 56 ; 0xf8b43
+ push di ; 57 ; 0xf8b44
+ push ax ; 50 ; 0xf8b45
+ les di, [bp+004h] ; c4 7e 04 ; 0xf8b46 ahci.c:523
+ movzx di, byte [es:di+00ch] ; 26 0f b6 7d 0c ; 0xf8b49
+ sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8b4e
+ cmp di, strict byte 00004h ; 83 ff 04 ; 0xf8b51 ahci.c:524
+ jbe short 08b65h ; 76 0f ; 0xf8b54
+ push di ; 57 ; 0xf8b56 ahci.c:525
+ push 00cd8h ; 68 d8 0c ; 0xf8b57
+ push 00ceah ; 68 ea 0c ; 0xf8b5a
+ push strict byte 00007h ; 6a 07 ; 0xf8b5d
+ call 01a68h ; e8 06 8f ; 0xf8b5f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8b62
+ xor bx, bx ; 31 db ; 0xf8b65 ahci.c:531
+ les si, [bp+004h] ; c4 76 04 ; 0xf8b67
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8b6a
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8b6f ahci.c:247
+ mov es, dx ; 8e c2 ; 0xf8b73
+ mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8b75
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8b7a ahci.c:532
+ add di, si ; 01 f7 ; 0xf8b7d
+ movzx bx, byte [es:di+002a1h] ; 26 0f b6 9d a1 02 ; 0xf8b7f
+ mov di, si ; 89 f7 ; 0xf8b85
+ mov dx, word [es:di+002a6h] ; 26 8b 95 a6 02 ; 0xf8b87
+ xor ax, ax ; 31 c0 ; 0xf8b8c
+ call 088f6h ; e8 65 fd ; 0xf8b8e
+ mov bx, strict word 00025h ; bb 25 00 ; 0xf8b91 ahci.c:533
+ mov ax, si ; 89 f0 ; 0xf8b94
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8b96
+ call 08561h ; e8 c5 f9 ; 0xf8b99
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf8b9c
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8b9f ahci.c:535
+ mov bx, si ; 89 f3 ; 0xf8ba2
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8ba4
+ mov word [es:bx+018h], ax ; 26 89 47 18 ; 0xf8ba8
+ mov cx, ax ; 89 c1 ; 0xf8bac ahci.c:537
+ sal cx, 009h ; c1 e1 09 ; 0xf8bae
+ shr cx, 1 ; d1 e9 ; 0xf8bb1
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8bb3
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf8bb7
+ mov si, di ; 89 fe ; 0xf8bbb
+ mov dx, ax ; 89 c2 ; 0xf8bbd
+ mov es, ax ; 8e c0 ; 0xf8bbf
+ push DS ; 1e ; 0xf8bc1
+ mov ds, dx ; 8e da ; 0xf8bc2
+ rep movsw ; f3 a5 ; 0xf8bc4
+ pop DS ; 1f ; 0xf8bc6
+ xor bx, bx ; 31 db ; 0xf8bc7 ahci.c:539
+ les di, [bp+004h] ; c4 7e 04 ; 0xf8bc9
+ mov es, [es:di+002a6h] ; 26 8e 85 a6 02 ; 0xf8bcc
+ mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8bd1 ahci.c:252
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8bd6
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf8bda ahci.c:541
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8bdd
+ pop di ; 5f ; 0xf8be0
+ pop si ; 5e ; 0xf8be1
+ pop bp ; 5d ; 0xf8be2
+ retn 00004h ; c2 04 00 ; 0xf8be3
+ ; disGetNextSymbol 0xf8be6 LB 0x2236 -> off=0x0 cb=0000000000000084 uValue=00000000000f75e6 'ahci_write_sectors'
+ahci_write_sectors: ; 0xf8be6 LB 0x84
+ push bp ; 55 ; 0xf8be6 ahci.c:550
+ mov bp, sp ; 89 e5 ; 0xf8be7
+ push si ; 56 ; 0xf8be9
+ push di ; 57 ; 0xf8bea
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf8beb
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8bee
+ mov es, cx ; 8e c1 ; 0xf8bf1 ahci.c:555
+ movzx dx, byte [es:si+00ch] ; 26 0f b6 54 0c ; 0xf8bf3
+ sub dx, strict byte 0000ch ; 83 ea 0c ; 0xf8bf8
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf8bfb ahci.c:556
+ jbe short 08c0fh ; 76 0f ; 0xf8bfe
+ push dx ; 52 ; 0xf8c00 ahci.c:557
+ push 00d09h ; 68 09 0d ; 0xf8c01
+ push 00ceah ; 68 ea 0c ; 0xf8c04
+ push strict byte 00007h ; 6a 07 ; 0xf8c07
+ call 01a68h ; e8 5c 8e ; 0xf8c09
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8c0c
+ xor bx, bx ; 31 db ; 0xf8c0f ahci.c:563
+ mov es, cx ; 8e c1 ; 0xf8c11
+ mov di, word [es:si+002a6h] ; 26 8b bc a6 02 ; 0xf8c13
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8c18 ahci.c:247
+ mov es, di ; 8e c7 ; 0xf8c1c
+ mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8c1e
+ mov es, cx ; 8e c1 ; 0xf8c23 ahci.c:564
+ mov bx, si ; 89 f3 ; 0xf8c25
+ add bx, dx ; 01 d3 ; 0xf8c27
+ movzx bx, byte [es:bx+002a1h] ; 26 0f b6 9f a1 02 ; 0xf8c29
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8c2f
+ xor ax, ax ; 31 c0 ; 0xf8c34
+ call 088f6h ; e8 bd fc ; 0xf8c36
+ mov bx, strict word 00035h ; bb 35 00 ; 0xf8c39 ahci.c:565
+ mov ax, si ; 89 f0 ; 0xf8c3c
+ mov dx, cx ; 89 ca ; 0xf8c3e
+ call 08561h ; e8 1e f9 ; 0xf8c40
+ mov dx, ax ; 89 c2 ; 0xf8c43
+ mov es, cx ; 8e c1 ; 0xf8c45 ahci.c:567
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8c47
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8c4b
+ xor bx, bx ; 31 db ; 0xf8c4f ahci.c:568
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf8c51
+ mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8c56 ahci.c:252
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c5b
+ mov ax, dx ; 89 d0 ; 0xf8c5f ahci.c:570
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8c61
+ pop di ; 5f ; 0xf8c64
+ pop si ; 5e ; 0xf8c65
+ pop bp ; 5d ; 0xf8c66
+ retn 00004h ; c2 04 00 ; 0xf8c67
+ ; disGetNextSymbol 0xf8c6a LB 0x21b2 -> off=0x0 cb=000000000000014c uValue=00000000000f766a 'ahci_cmd_packet'
+ahci_cmd_packet: ; 0xf8c6a LB 0x14c
+ push bp ; 55 ; 0xf8c6a ahci.c:577
+ mov bp, sp ; 89 e5 ; 0xf8c6b
+ push si ; 56 ; 0xf8c6d
+ push di ; 57 ; 0xf8c6e
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf8c6f
+ mov di, ax ; 89 c7 ; 0xf8c72
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf8c74
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf8c77
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf8c7a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8c7d ahci.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8c80
+ mov es, ax ; 8e c0 ; 0xf8c83
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8c85
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf8c88 ahci.c:59
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf8c8b
+ cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf8c8e ahci.c:584
+ jne short 08cb3h ; 75 1f ; 0xf8c92
+ mov bx, 00e16h ; bb 16 0e ; 0xf8c94 ahci.c:585
+ mov cx, ds ; 8c d9 ; 0xf8c97
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8c99
+ call 01a27h ; e8 88 8d ; 0xf8c9c
+ push 00d1ch ; 68 1c 0d ; 0xf8c9f
+ push 00d2ch ; 68 2c 0d ; 0xf8ca2
+ push strict byte 00004h ; 6a 04 ; 0xf8ca5
+ call 01a68h ; e8 be 8d ; 0xf8ca7
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf8caa
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8cad ahci.c:586
+ jmp near 08dadh ; e9 fa 00 ; 0xf8cb0
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf8cb3 ahci.c:597
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8cb6
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf8cb9
+ sal ax, 1 ; d1 e0 ; 0xf8cbc
+ rcl dx, 1 ; d1 d2 ; 0xf8cbe
+ loop 08cbch ; e2 fa ; 0xf8cc0
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8cc2
+ mov word [es:si], ax ; 26 89 04 ; 0xf8cc5
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf8cc8
+ 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; 0xf8ccc
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf8cd5 ahci.c:598
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8cd8
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf8cdc
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf8cdf
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf8ce3 ahci.c:599
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf8ce7
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8cea
+ xor cx, cx ; 31 c9 ; 0xf8ced
+ call 0ad20h ; e8 2e 20 ; 0xf8cef
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8cf2
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf8cf6 ahci.c:602
+ mov ax, word [es:si+002a6h] ; 26 8b 84 a6 02 ; 0xf8cfb
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8d00
+ sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8d03 ahci.c:590
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8d06 ahci.c:247
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf8d0a
+ mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8d0d
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d12 ahci.c:605
+ add di, si ; 01 f7 ; 0xf8d15
+ movzx bx, byte [es:di+002a1h] ; 26 0f b6 9d a1 02 ; 0xf8d17
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8d1d
+ xor ax, ax ; 31 c0 ; 0xf8d22
+ call 088f6h ; e8 cf fb ; 0xf8d24
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf8d27 ahci.c:608
+ push ax ; 50 ; 0xf8d2b
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8d2c
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf8d2f
+ mov ax, 000c0h ; b8 c0 00 ; 0xf8d32
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d35
+ call 0ad90h ; e8 55 20 ; 0xf8d38
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d3b ahci.c:612
+ 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; 0xf8d3e
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf8d47 ahci.c:613
+ mov bx, 000a0h ; bb a0 00 ; 0xf8d4d ahci.c:615
+ mov ax, si ; 89 f0 ; 0xf8d50
+ mov dx, es ; 8c c2 ; 0xf8d52
+ call 08561h ; e8 0a f8 ; 0xf8d54
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf8d57 ahci.c:617
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf8d5a
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8d5e
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d62
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf8d65
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf8d69
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf8d6d ahci.c:619
+ mov cx, ax ; 89 c1 ; 0xf8d71
+ shr cx, 1 ; d1 e9 ; 0xf8d73
+ rcr bx, 1 ; d1 db ; 0xf8d75
+ mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf8d77
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8d7b
+ mov cx, bx ; 89 d9 ; 0xf8d7f
+ mov si, di ; 89 fe ; 0xf8d81
+ mov dx, ax ; 89 c2 ; 0xf8d83
+ mov es, ax ; 8e c0 ; 0xf8d85
+ push DS ; 1e ; 0xf8d87
+ mov ds, dx ; 8e da ; 0xf8d88
+ rep movsw ; f3 a5 ; 0xf8d8a
+ pop DS ; 1f ; 0xf8d8c
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf8d8d ahci.c:252
+ mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8d90
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8d95
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d99 ahci.c:623
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8d9c
+ or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf8da0
+ jne short 08dabh ; 75 05 ; 0xf8da4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8da6
+ jmp short 08dadh ; eb 02 ; 0xf8da9
+ xor ax, ax ; 31 c0 ; 0xf8dab
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8dad ahci.c:624
+ pop di ; 5f ; 0xf8db0
+ pop si ; 5e ; 0xf8db1
+ pop bp ; 5d ; 0xf8db2
+ retn 0000ah ; c2 0a 00 ; 0xf8db3
+ ; disGetNextSymbol 0xf8db6 LB 0x2066 -> off=0x0 cb=0000000000000005 uValue=00000000000f77b6 'wait_ticks_device_init'
+wait_ticks_device_init: ; 0xf8db6 LB 0x5
+ push bp ; 55 ; 0xf8db6 ahci.c:627
+ mov bp, sp ; 89 e5 ; 0xf8db7
+ pop bp ; 5d ; 0xf8db9 ahci.c:629
+ retn ; c3 ; 0xf8dba
+ ; disGetNextSymbol 0xf8dbb LB 0x2061 -> off=0x0 cb=000000000000049f uValue=00000000000f77bb 'ahci_port_detect_device'
+ahci_port_detect_device: ; 0xf8dbb LB 0x49f
+ push bp ; 55 ; 0xf8dbb ahci.c:631
+ mov bp, sp ; 89 e5 ; 0xf8dbc
+ push cx ; 51 ; 0xf8dbe
+ push si ; 56 ; 0xf8dbf
+ push di ; 57 ; 0xf8dc0
+ sub sp, 00228h ; 81 ec 28 02 ; 0xf8dc1
+ mov si, ax ; 89 c6 ; 0xf8dc5
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf8dc7
+ mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf8dca
+ mov word [bp-028h], strict word 00000h ; c7 46 d8 00 00 ; 0xf8dcd ahci.c:637
+ movzx di, bl ; 0f b6 fb ; 0xf8dd2 ahci.c:639
+ mov bx, di ; 89 fb ; 0xf8dd5
+ call 088f6h ; e8 1c fb ; 0xf8dd7
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8dda ahci.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8ddd
+ mov es, ax ; 8e c0 ; 0xf8de0
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8de2
+ mov word [bp-010h], strict word 0005eh ; c7 46 f0 5e 00 ; 0xf8de5 ahci.c:59
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf8dea
+ mov ax, di ; 89 f8 ; 0xf8ded ahci.c:644
+ sal ax, 007h ; c1 e0 07 ; 0xf8def
+ add ax, 0012ch ; 05 2c 01 ; 0xf8df2
+ cwd ; 99 ; 0xf8df5
+ mov di, ax ; 89 c7 ; 0xf8df6
+ mov bx, dx ; 89 d3 ; 0xf8df8
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8dfa
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8dfd
+ mov cx, bx ; 89 d9 ; 0xf8e02
+ xchg cx, ax ; 91 ; 0xf8e04
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e05
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e09
+ out DX, eax ; 66 ef ; 0xf8e0b
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8e0d
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e10
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e15
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8e18
+ xor cx, cx ; 31 c9 ; 0xf8e1b
+ xchg cx, ax ; 91 ; 0xf8e1d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e1e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e22
+ out DX, eax ; 66 ef ; 0xf8e24
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8e26 ahci.c:649
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e29
+ mov ax, di ; 89 f8 ; 0xf8e2e
+ mov cx, bx ; 89 d9 ; 0xf8e30
+ xchg cx, ax ; 91 ; 0xf8e32
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e33
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e37
+ out DX, eax ; 66 ef ; 0xf8e39
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8e3b
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e3e
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e43
+ xor ax, ax ; 31 c0 ; 0xf8e46
+ xor cx, cx ; 31 c9 ; 0xf8e48
+ xchg cx, ax ; 91 ; 0xf8e4a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e4b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e4f
+ out DX, eax ; 66 ef ; 0xf8e51
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf8e53 ahci.c:658
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8e56
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf8e59
+ mov es, ax ; 8e c0 ; 0xf8e5c ahci.c:659
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8e5e
+ add ax, strict word 00003h ; 05 03 00 ; 0xf8e61
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf8e64
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e67
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf8e6b
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf8e6e
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8e71 ahci.c:661
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e74
+ cmp ax, word [bp-020h] ; 3b 46 e0 ; 0xf8e78
+ jc short 08e8eh ; 72 11 ; 0xf8e7b
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e7d
+ cmp ax, word [bp-020h] ; 3b 46 e0 ; 0xf8e81
+ jne short 08ed9h ; 75 53 ; 0xf8e84
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8e86
+ cmp ax, word [bp-024h] ; 3b 46 dc ; 0xf8e89
+ jnc short 08ed9h ; 73 4b ; 0xf8e8c
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8e8e ahci.c:664
+ sal ax, 007h ; c1 e0 07 ; 0xf8e92
+ add ax, 00128h ; 05 28 01 ; 0xf8e95
+ cwd ; 99 ; 0xf8e98
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8e99
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8e9c
+ mov cx, dx ; 89 d1 ; 0xf8ea1
+ mov dx, bx ; 89 da ; 0xf8ea3
+ xchg cx, ax ; 91 ; 0xf8ea5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ea6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8eaa
+ out DX, eax ; 66 ef ; 0xf8eac
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8eae
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8eb1
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8eb6
+ in eax, DX ; 66 ed ; 0xf8eb9
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8ebb
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8ebd
+ xchg dx, ax ; 92 ; 0xf8ec1
+ mov word [bp-026h], ax ; 89 46 da ; 0xf8ec2
+ mov word [bp-022h], dx ; 89 56 de ; 0xf8ec5
+ push strict byte 00000h ; 6a 00 ; 0xf8ec8 ahci.c:665
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8eca
+ xor cx, cx ; 31 c9 ; 0xf8ecd
+ call 083ddh ; e8 0b f5 ; 0xf8ecf
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8ed2
+ jne short 08e71h ; 75 9a ; 0xf8ed5
+ jmp short 08ee1h ; eb 08 ; 0xf8ed7 ahci.c:667
+ cmp word [bp-028h], strict byte 00000h ; 83 7e d8 00 ; 0xf8ed9 ahci.c:672
+ je near 09252h ; 0f 84 71 03 ; 0xf8edd
+ push strict byte 00000h ; 6a 00 ; 0xf8ee1 ahci.c:677
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8ee3
+ xor cx, cx ; 31 c9 ; 0xf8ee6
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf8ee8
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf8eeb
+ call 083ddh ; e8 ec f4 ; 0xf8eee
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8ef1
+ jne near 09252h ; 0f 85 5a 03 ; 0xf8ef4
+ movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf8ef8 ahci.c:685
+ sal di, 007h ; c1 e7 07 ; 0xf8efc
+ lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8eff
+ cwd ; 99 ; 0xf8f03
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8f04
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f07
+ mov cx, dx ; 89 d1 ; 0xf8f0c
+ mov dx, bx ; 89 da ; 0xf8f0e
+ xchg cx, ax ; 91 ; 0xf8f10
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f11
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f15
+ out DX, eax ; 66 ef ; 0xf8f17
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8f19
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f1c
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f21
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8f24
+ mov cx, ax ; 89 c1 ; 0xf8f27
+ xchg cx, ax ; 91 ; 0xf8f29
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f2a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f2e
+ out DX, eax ; 66 ef ; 0xf8f30
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf8f32 ahci.c:687
+ mov al, byte [es:bx+002a5h] ; 26 8a 87 a5 02 ; 0xf8f35
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf8f3a
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf8f3d ahci.c:692
+ jnc near 09252h ; 0f 83 0f 03 ; 0xf8f3f
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8f43 ahci.c:695
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8f47 ahci.c:258
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f4a
+ xor cx, cx ; 31 c9 ; 0xf8f4f ahci.c:260
+ 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
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8f5c ahci.c:261
+ mov dx, bx ; 89 da ; 0xf8f5f
+ in eax, DX ; 66 ed ; 0xf8f61
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8f63
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8f65
+ xchg dx, ax ; 92 ; 0xf8f69
+ or AL, strict byte 010h ; 0c 10 ; 0xf8f6a
+ mov cx, dx ; 89 d1 ; 0xf8f6c
+ mov dx, bx ; 89 da ; 0xf8f6e
+ xchg cx, ax ; 91 ; 0xf8f70
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f71
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f75
+ out DX, eax ; 66 ef ; 0xf8f77
+ lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8f79 ahci.c:699
+ cwd ; 99 ; 0xf8f7d
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8f7e
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f81
+ mov cx, dx ; 89 d1 ; 0xf8f86
+ mov dx, bx ; 89 da ; 0xf8f88
+ xchg cx, ax ; 91 ; 0xf8f8a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f8b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f8f
+ out DX, eax ; 66 ef ; 0xf8f91
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8f93
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f96
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f9b
+ in eax, DX ; 66 ed ; 0xf8f9e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8fa0
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8fa2
+ xchg dx, ax ; 92 ; 0xf8fa6
+ mov bx, ax ; 89 c3 ; 0xf8fa7
+ mov ax, dx ; 89 d0 ; 0xf8fa9
+ mov cl, byte [bp-008h] ; 8a 4e f8 ; 0xf8fab
+ add cl, 00ch ; 80 c1 0c ; 0xf8fae
+ test dx, dx ; 85 d2 ; 0xf8fb1 ahci.c:700
+ jne near 091a0h ; 0f 85 e9 01 ; 0xf8fb3
+ cmp bx, 00101h ; 81 fb 01 01 ; 0xf8fb7
+ jne near 091a0h ; 0f 85 e1 01 ; 0xf8fbb
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf8fbf ahci.c:710
+ 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; 0xf8fc2
+ db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf8fcb
+ lea dx, [bp-0022eh] ; 8d 96 d2 fd ; 0xf8fd3 ahci.c:711
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8fd7
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8fdb
+ 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; 0xf8fdf ahci.c:712
+ mov bx, 000ech ; bb ec 00 ; 0xf8fe8 ahci.c:714
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8feb
+ mov dx, es ; 8c c2 ; 0xf8fee
+ call 08561h ; e8 6e f5 ; 0xf8ff0
+ mov byte [bp-00ch], cl ; 88 4e f4 ; 0xf8ff3 ahci.c:717
+ test byte [bp-0022eh], 080h ; f6 86 d2 fd 80 ; 0xf8ff6 ahci.c:719
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf8ffb
+ xor ah, ah ; 30 e4 ; 0xf8ffe
+ mov dx, word [bp-0022ch] ; 8b 96 d4 fd ; 0xf9000 ahci.c:720
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf9004
+ mov dx, word [bp-00228h] ; 8b 96 d8 fd ; 0xf9007 ahci.c:721
+ mov word [bp-01ah], dx ; 89 56 e6 ; 0xf900b
+ mov dx, word [bp-00222h] ; 8b 96 de fd ; 0xf900e ahci.c:722
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf9012
+ mov si, word [bp-001b6h] ; 8b b6 4a fe ; 0xf9015 ahci.c:723
+ mov di, word [bp-001b4h] ; 8b be 4c fe ; 0xf9019
+ mov word [bp-018h], strict word 00000h ; c7 46 e8 00 00 ; 0xf901d
+ mov word [bp-014h], strict word 00000h ; c7 46 ec 00 00 ; 0xf9022
+ cmp di, 00fffh ; 81 ff ff 0f ; 0xf9027 ahci.c:725
+ jne short 09048h ; 75 1b ; 0xf902b
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf902d
+ jne short 09048h ; 75 16 ; 0xf9030
+ mov dx, word [bp-00160h] ; 8b 96 a0 fe ; 0xf9032 ahci.c:726
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf9036
+ mov dx, word [bp-00162h] ; 8b 96 9e fe ; 0xf9039
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf903d
+ mov di, word [bp-00164h] ; 8b be 9c fe ; 0xf9040
+ mov si, word [bp-00166h] ; 8b b6 9a fe ; 0xf9044
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf9048 ahci.c:730
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf904c
+ add bx, word [bp-010h] ; 03 5e f0 ; 0xf904f
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xf9052
+ mov byte [es:bx+002a1h], ah ; 26 88 a7 a1 02 ; 0xf9055
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf905a ahci.c:731
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf905e
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9061
+ add bx, dx ; 01 d3 ; 0xf9064
+ mov word [es:bx+01eh], 0ff05h ; 26 c7 47 1e 05 ff ; 0xf9066
+ mov byte [es:bx+020h], al ; 26 88 47 20 ; 0xf906c ahci.c:733
+ mov byte [es:bx+021h], 000h ; 26 c6 47 21 00 ; 0xf9070 ahci.c:734
+ mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf9075 ahci.c:735
+ mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf907b ahci.c:736
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9080 ahci.c:737
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf9083
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9087
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf908a
+ mov word [es:bx+034h], di ; 26 89 7f 34 ; 0xf908e
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf9092
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf9096 ahci.c:739
+ mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf9099
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf909d ahci.c:740
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf90a0
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf90a4 ahci.c:741
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf90a7
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf90ab ahci.c:744
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf90ae
+ jc short 090beh ; 72 0c ; 0xf90b0
+ jbe short 090c6h ; 76 12 ; 0xf90b2
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf90b4
+ je short 090ceh ; 74 16 ; 0xf90b6
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf90b8
+ je short 090cah ; 74 0e ; 0xf90ba
+ jmp short 09103h ; eb 45 ; 0xf90bc
+ test al, al ; 84 c0 ; 0xf90be
+ jne short 09103h ; 75 41 ; 0xf90c0
+ mov BL, strict byte 040h ; b3 40 ; 0xf90c2 ahci.c:747
+ jmp short 090d0h ; eb 0a ; 0xf90c4 ahci.c:748
+ mov BL, strict byte 048h ; b3 48 ; 0xf90c6 ahci.c:750
+ jmp short 090d0h ; eb 06 ; 0xf90c8 ahci.c:751
+ mov BL, strict byte 050h ; b3 50 ; 0xf90ca ahci.c:753
+ jmp short 090d0h ; eb 02 ; 0xf90cc ahci.c:754
+ mov BL, strict byte 058h ; b3 58 ; 0xf90ce ahci.c:756
+ mov al, bl ; 88 d8 ; 0xf90d0 ahci.c:760
+ add AL, strict byte 007h ; 04 07 ; 0xf90d2
+ movzx dx, al ; 0f b6 d0 ; 0xf90d4
+ mov ax, dx ; 89 d0 ; 0xf90d7
+ call 0176ah ; e8 8e 86 ; 0xf90d9
+ test al, al ; 84 c0 ; 0xf90dc
+ je short 09103h ; 74 23 ; 0xf90de
+ movzx ax, bl ; 0f b6 c3 ; 0xf90e0 ahci.c:763
+ call 017a6h ; e8 c0 86 ; 0xf90e3
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf90e6
+ mov al, bl ; 88 d8 ; 0xf90e9 ahci.c:764
+ add AL, strict byte 002h ; 04 02 ; 0xf90eb
+ xor ah, ah ; 30 e4 ; 0xf90ed
+ call 0176ah ; e8 78 86 ; 0xf90ef
+ xor ah, ah ; 30 e4 ; 0xf90f2
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf90f4
+ mov ax, dx ; 89 d0 ; 0xf90f7 ahci.c:765
+ call 0176ah ; e8 6e 86 ; 0xf90f9
+ xor ah, ah ; 30 e4 ; 0xf90fc
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf90fe
+ jmp short 09113h ; eb 10 ; 0xf9101 ahci.c:767
+ push word [bp-014h] ; ff 76 ec ; 0xf9103 ahci.c:768
+ push word [bp-018h] ; ff 76 e8 ; 0xf9106
+ push di ; 57 ; 0xf9109
+ push si ; 56 ; 0xf910a
+ mov dx, ss ; 8c d2 ; 0xf910b
+ lea ax, [bp-02eh] ; 8d 46 d2 ; 0xf910d
+ call 05880h ; e8 6d c7 ; 0xf9110
+ mov bx, 00e16h ; bb 16 0e ; 0xf9113 ahci.c:772
+ mov cx, ds ; 8c d9 ; 0xf9116
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9118
+ call 01a27h ; e8 09 89 ; 0xf911b
+ push word [bp-014h] ; ff 76 ec ; 0xf911e
+ push word [bp-018h] ; ff 76 e8 ; 0xf9121
+ push di ; 57 ; 0xf9124
+ push si ; 56 ; 0xf9125
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf9126
+ push ax ; 50 ; 0xf9129
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf912a
+ push ax ; 50 ; 0xf912d
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf912e
+ push ax ; 50 ; 0xf9131
+ push word [bp-01eh] ; ff 76 e2 ; 0xf9132
+ push dword [bp-01ch] ; 66 ff 76 e4 ; 0xf9135
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf9139
+ push ax ; 50 ; 0xf913d
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf913e
+ push ax ; 50 ; 0xf9142
+ push 00d4ch ; 68 4c 0d ; 0xf9143
+ push strict byte 00004h ; 6a 04 ; 0xf9146
+ call 01a68h ; e8 1d 89 ; 0xf9148
+ add sp, strict byte 0001ch ; 83 c4 1c ; 0xf914b
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf914e ahci.c:774
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9152
+ mov di, word [bp-010h] ; 8b 7e f0 ; 0xf9155
+ add di, ax ; 01 c7 ; 0xf9158
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf915a
+ lea di, [di+026h] ; 8d 7d 26 ; 0xf915d
+ push DS ; 1e ; 0xf9160
+ push SS ; 16 ; 0xf9161
+ pop DS ; 1f ; 0xf9162
+ lea si, [bp-02eh] ; 8d 76 d2 ; 0xf9163
+ movsw ; a5 ; 0xf9166
+ movsw ; a5 ; 0xf9167
+ movsw ; a5 ; 0xf9168
+ pop DS ; 1f ; 0xf9169
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf916a ahci.c:777
+ mov al, byte [es:bx+0024eh] ; 26 8a 87 4e 02 ; 0xf916d
+ mov ah, byte [bp-008h] ; 8a 66 f8 ; 0xf9172 ahci.c:778
+ add ah, 00ch ; 80 c4 0c ; 0xf9175
+ movzx bx, al ; 0f b6 d8 ; 0xf9178
+ add bx, word [bp-010h] ; 03 5e f0 ; 0xf917b
+ mov byte [es:bx+0024fh], ah ; 26 88 a7 4f 02 ; 0xf917e
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9183 ahci.c:779
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9185 ahci.c:780
+ mov byte [es:bx+0024eh], al ; 26 88 87 4e 02 ; 0xf9188
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf918d ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9190
+ mov es, ax ; 8e c0 ; 0xf9193
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf9195
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9198 ahci.c:784
+ mov byte [es:bx], al ; 26 88 07 ; 0xf919a ahci.c:53
+ jmp near 09244h ; e9 a4 00 ; 0xf919d ahci.c:787
+ cmp dx, 0eb14h ; 81 fa 14 eb ; 0xf91a0
+ jne near 09244h ; 0f 85 9c 00 ; 0xf91a4
+ cmp bx, 00101h ; 81 fb 01 01 ; 0xf91a8
+ jne near 09244h ; 0f 85 94 00 ; 0xf91ac
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf91b0 ahci.c:792
+ 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; 0xf91b3
+ db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf91bc
+ lea dx, [bp-0022eh] ; 8d 96 d2 fd ; 0xf91c4 ahci.c:793
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf91c8
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf91cc
+ 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; 0xf91d0 ahci.c:794
+ mov bx, 000a1h ; bb a1 00 ; 0xf91d9 ahci.c:796
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf91dc
+ mov dx, es ; 8c c2 ; 0xf91df
+ call 08561h ; e8 7d f3 ; 0xf91e1
+ test byte [bp-0022eh], 080h ; f6 86 d2 fd 80 ; 0xf91e4 ahci.c:801
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf91e9
+ movzx dx, al ; 0f b6 d0 ; 0xf91ec
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf91ef ahci.c:803
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf91f3
+ add bx, word [bp-010h] ; 03 5e f0 ; 0xf91f6
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf91f9
+ mov byte [es:bx+002a1h], al ; 26 88 87 a1 02 ; 0xf91fc
+ movzx ax, cl ; 0f b6 c1 ; 0xf9201 ahci.c:804
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9204
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9207
+ add bx, ax ; 01 c3 ; 0xf920a
+ mov word [es:bx+01eh], 00505h ; 26 c7 47 1e 05 05 ; 0xf920c
+ mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf9212 ahci.c:806
+ mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf9216 ahci.c:807
+ mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf921c ahci.c:808
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9221 ahci.c:811
+ mov al, byte [es:bx+00263h] ; 26 8a 87 63 02 ; 0xf9224
+ mov ah, byte [bp-008h] ; 8a 66 f8 ; 0xf9229 ahci.c:812
+ add ah, 00ch ; 80 c4 0c ; 0xf922c
+ movzx bx, al ; 0f b6 d8 ; 0xf922f
+ add bx, word [bp-010h] ; 03 5e f0 ; 0xf9232
+ mov byte [es:bx+00264h], ah ; 26 88 a7 64 02 ; 0xf9235
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf923a ahci.c:813
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf923c ahci.c:814
+ mov byte [es:bx+00263h], al ; 26 88 87 63 02 ; 0xf923f
+ inc byte [bp-008h] ; fe 46 f8 ; 0xf9244 ahci.c:819
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9247 ahci.c:820
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf924a
+ mov byte [es:bx+002a5h], al ; 26 88 87 a5 02 ; 0xf924d
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9252 ahci.c:825
+ pop di ; 5f ; 0xf9255
+ pop si ; 5e ; 0xf9256
+ pop cx ; 59 ; 0xf9257
+ pop bp ; 5d ; 0xf9258
+ retn ; c3 ; 0xf9259
+ ; disGetNextSymbol 0xf925a LB 0x1bc2 -> off=0x0 cb=000000000000003a uValue=00000000000f7c5a 'ahci_mem_alloc'
+ahci_mem_alloc: ; 0xf925a LB 0x3a
+ push bx ; 53 ; 0xf925a ahci.c:830
+ push cx ; 51 ; 0xf925b
+ push dx ; 52 ; 0xf925c
+ push di ; 57 ; 0xf925d
+ push bp ; 55 ; 0xf925e
+ mov bp, sp ; 89 e5 ; 0xf925f
+ mov di, 00413h ; bf 13 04 ; 0xf9261 ahci.c:58
+ xor ax, ax ; 31 c0 ; 0xf9264
+ mov es, ax ; 8e c0 ; 0xf9266
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf9268
+ test ax, ax ; 85 c0 ; 0xf926b ahci.c:839
+ je short 0928eh ; 74 1f ; 0xf926d
+ dec ax ; 48 ; 0xf926f ahci.c:840
+ mov bx, ax ; 89 c3 ; 0xf9270
+ xor dx, dx ; 31 d2 ; 0xf9272 ahci.c:843
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf9274
+ sal ax, 1 ; d1 e0 ; 0xf9277
+ rcl dx, 1 ; d1 d2 ; 0xf9279
+ loop 09277h ; e2 fa ; 0xf927b
+ mov di, dx ; 89 d7 ; 0xf927d
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf927f
+ shr di, 1 ; d1 ef ; 0xf9282
+ rcr ax, 1 ; d1 d8 ; 0xf9284
+ loop 09282h ; e2 fa ; 0xf9286
+ mov di, 00413h ; bf 13 04 ; 0xf9288 ahci.c:63
+ mov word [es:di], bx ; 26 89 1d ; 0xf928b
+ pop bp ; 5d ; 0xf928e ahci.c:848
+ pop di ; 5f ; 0xf928f
+ pop dx ; 5a ; 0xf9290
+ pop cx ; 59 ; 0xf9291
+ pop bx ; 5b ; 0xf9292
+ retn ; c3 ; 0xf9293
+ ; disGetNextSymbol 0xf9294 LB 0x1b88 -> off=0x0 cb=0000000000000145 uValue=00000000000f7c94 'ahci_hba_init'
+ahci_hba_init: ; 0xf9294 LB 0x145
+ push bp ; 55 ; 0xf9294 ahci.c:853
+ mov bp, sp ; 89 e5 ; 0xf9295
+ push bx ; 53 ; 0xf9297
+ push cx ; 51 ; 0xf9298
+ push dx ; 52 ; 0xf9299
+ push si ; 56 ; 0xf929a
+ push di ; 57 ; 0xf929b
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf929c
+ mov si, ax ; 89 c6 ; 0xf929f
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf92a1 ahci.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf92a4
+ mov es, ax ; 8e c0 ; 0xf92a7
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf92a9
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf92ac ahci.c:864
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf92af ahci.c:866
+ xor cx, cx ; 31 c9 ; 0xf92b2
+ mov dx, si ; 89 f2 ; 0xf92b4
+ xchg cx, ax ; 91 ; 0xf92b6
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf92b7
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf92bb
+ out DX, eax ; 66 ef ; 0xf92bd
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf92bf
+ in eax, DX ; 66 ed ; 0xf92c2
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf92c4
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf92c6
+ xchg dx, ax ; 92 ; 0xf92ca
+ call 0925ah ; e8 8c ff ; 0xf92cb ahci.c:872
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf92ce
+ test ax, ax ; 85 c0 ; 0xf92d1 ahci.c:873
+ je near 093cfh ; 0f 84 f8 00 ; 0xf92d3
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf92d7 ahci.c:876
+ mov es, di ; 8e c7 ; 0xf92da
+ mov word [es:bx+002a6h], ax ; 26 89 87 a6 02 ; 0xf92dc
+ mov byte [es:bx+002a5h], 000h ; 26 c6 87 a5 02 00 ; 0xf92e1 ahci.c:882
+ xor bx, bx ; 31 db ; 0xf92e7 ahci.c:884
+ mov es, ax ; 8e c0 ; 0xf92e9
+ mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf92eb ahci.c:885
+ mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf92f1 ahci.c:886
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf92f6 ahci.c:260
+ xor cx, cx ; 31 c9 ; 0xf92f9
+ mov dx, si ; 89 f2 ; 0xf92fb
+ xchg cx, ax ; 91 ; 0xf92fd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf92fe
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9302
+ out DX, eax ; 66 ef ; 0xf9304
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf9306 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf9309
+ in eax, DX ; 66 ed ; 0xf930b
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf930d
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf930f
+ xchg dx, ax ; 92 ; 0xf9313
+ or AL, strict byte 001h ; 0c 01 ; 0xf9314
+ mov cx, dx ; 89 d1 ; 0xf9316
+ mov dx, bx ; 89 da ; 0xf9318
+ xchg cx, ax ; 91 ; 0xf931a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf931b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf931f
+ out DX, eax ; 66 ef ; 0xf9321
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9323 ahci.c:892
+ xor cx, cx ; 31 c9 ; 0xf9326
+ mov dx, si ; 89 f2 ; 0xf9328
+ xchg cx, ax ; 91 ; 0xf932a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf932b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf932f
+ out DX, eax ; 66 ef ; 0xf9331
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf9333
+ mov dx, bx ; 89 da ; 0xf9336
+ in eax, DX ; 66 ed ; 0xf9338
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf933a
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf933c
+ xchg dx, ax ; 92 ; 0xf9340
+ test AL, strict byte 001h ; a8 01 ; 0xf9341 ahci.c:893
+ jne short 09323h ; 75 de ; 0xf9343
+ xor ax, ax ; 31 c0 ; 0xf9345 ahci.c:895
+ xor cx, cx ; 31 c9 ; 0xf9347
+ mov dx, si ; 89 f2 ; 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
+ mov dx, bx ; 89 da ; 0xf9354
+ in eax, DX ; 66 ed ; 0xf9356
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9358
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf935a
+ xchg dx, ax ; 92 ; 0xf935e
+ push strict byte 00000h ; 6a 00 ; 0xf935f ahci.c:896
+ mov bx, strict word 0001fh ; bb 1f 00 ; 0xf9361
+ xor cx, cx ; 31 c9 ; 0xf9364
+ call 083ddh ; e8 74 f0 ; 0xf9366
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9369
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf936b
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf936e ahci.c:901
+ jmp short 09394h ; eb 20 ; 0xf9372 ahci.c:902
+ xor al, al ; 30 c0 ; 0xf9374 ahci.c:280
+ test al, al ; 84 c0 ; 0xf9376 ahci.c:281
+ je short 0938bh ; 74 11 ; 0xf9378
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf937a ahci.c:907
+ xor ax, ax ; 31 c0 ; 0xf937e
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9380
+ call 08dbbh ; e8 35 fa ; 0xf9383
+ dec byte [bp-00eh] ; fe 4e f2 ; 0xf9386 ahci.c:908
+ je short 093cdh ; 74 42 ; 0xf9389 ahci.c:909
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf938b ahci.c:912
+ cmp byte [bp-00ch], 020h ; 80 7e f4 20 ; 0xf938e ahci.c:913
+ jnc short 093cdh ; 73 39 ; 0xf9392
+ movzx cx, byte [bp-00ch] ; 0f b6 4e f4 ; 0xf9394
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf9398
+ xor di, di ; 31 ff ; 0xf939b
+ jcxz 093a5h ; e3 06 ; 0xf939d
+ sal bx, 1 ; d1 e3 ; 0xf939f
+ rcl di, 1 ; d1 d7 ; 0xf93a1
+ loop 0939fh ; e2 fa ; 0xf93a3
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf93a5
+ xor cx, cx ; 31 c9 ; 0xf93a8
+ mov dx, si ; 89 f2 ; 0xf93aa
+ xchg cx, ax ; 91 ; 0xf93ac
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf93ad
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf93b1
+ out DX, eax ; 66 ef ; 0xf93b3
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf93b5
+ in eax, DX ; 66 ed ; 0xf93b8
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf93ba
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf93bc
+ xchg dx, ax ; 92 ; 0xf93c0
+ test dx, di ; 85 fa ; 0xf93c1
+ jne short 093c9h ; 75 04 ; 0xf93c3
+ test ax, bx ; 85 d8 ; 0xf93c5
+ je short 09374h ; 74 ab ; 0xf93c7
+ mov AL, strict byte 001h ; b0 01 ; 0xf93c9
+ jmp short 09376h ; eb a9 ; 0xf93cb
+ xor ax, ax ; 31 c0 ; 0xf93cd ahci.c:915
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf93cf ahci.c:916
+ pop di ; 5f ; 0xf93d2
+ pop si ; 5e ; 0xf93d3
+ pop dx ; 5a ; 0xf93d4
+ pop cx ; 59 ; 0xf93d5
+ pop bx ; 5b ; 0xf93d6
+ pop bp ; 5d ; 0xf93d7
+ retn ; c3 ; 0xf93d8
+ ; disGetNextSymbol 0xf93d9 LB 0x1a43 -> off=0x17 cb=0000000000000116 uValue=00000000000f7df0 'ahci_init'
+ db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0c0h, 094h, 09eh, 094h, 0a4h, 094h, 0aah, 094h, 0b0h
+ db 094h, 0b6h, 094h, 0bch, 094h, 0c0h, 094h
+ahci_init: ; 0xf93f0 LB 0x116
+ push bp ; 55 ; 0xf93f0 ahci.c:921
+ mov bp, sp ; 89 e5 ; 0xf93f1
+ push si ; 56 ; 0xf93f3
+ push di ; 57 ; 0xf93f4
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf93f5
+ mov ax, 00601h ; b8 01 06 ; 0xf93f8 ahci.c:925
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf93fb
+ call 0aab8h ; e8 b7 16 ; 0xf93fe
+ mov bx, ax ; 89 c3 ; 0xf9401
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9403 ahci.c:926
+ je near 094ffh ; 0f 84 f5 00 ; 0xf9406
+ xor al, al ; 30 c0 ; 0xf940a ahci.c:931
+ shr ax, 008h ; c1 e8 08 ; 0xf940c
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf940f
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9412 ahci.c:932
+ movzx dx, bl ; 0f b6 d3 ; 0xf9415 ahci.c:937
+ xor ah, ah ; 30 e4 ; 0xf9418
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf941a
+ call 0ab22h ; e8 02 17 ; 0xf941d
+ mov cl, al ; 88 c1 ; 0xf9420
+ test cl, cl ; 84 c9 ; 0xf9422 ahci.c:939
+ je short 09449h ; 74 23 ; 0xf9424
+ movzx bx, cl ; 0f b6 d9 ; 0xf9426 ahci.c:941
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf9429
+ movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf942d
+ mov dx, di ; 89 fa ; 0xf9431
+ mov ax, si ; 89 f0 ; 0xf9433
+ call 0ab22h ; e8 ea 16 ; 0xf9435
+ cmp AL, strict byte 012h ; 3c 12 ; 0xf9438 ahci.c:945
+ je short 09449h ; 74 0d ; 0xf943a
+ mov al, cl ; 88 c8 ; 0xf943c ahci.c:949
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf943e
+ movzx bx, al ; 0f b6 d8 ; 0xf9440
+ mov dx, di ; 89 fa ; 0xf9443
+ mov ax, si ; 89 f0 ; 0xf9445
+ jmp short 0941dh ; eb d4 ; 0xf9447 ahci.c:950
+ test cl, cl ; 84 c9 ; 0xf9449 ahci.c:952
+ je near 094ffh ; 0f 84 b0 00 ; 0xf944b
+ add cl, 002h ; 80 c1 02 ; 0xf944f ahci.c:959
+ movzx bx, cl ; 0f b6 d9 ; 0xf9452 ahci.c:961
+ movzx si, byte [bp-008h] ; 0f b6 76 f8 ; 0xf9455
+ movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf9459
+ mov dx, si ; 89 f2 ; 0xf945d
+ mov ax, di ; 89 f8 ; 0xf945f
+ call 0ab22h ; e8 be 16 ; 0xf9461
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf9464 ahci.c:962
+ jne near 094ffh ; 0f 85 95 00 ; 0xf9466
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf946a ahci.c:965
+ mov al, cl ; 88 c8 ; 0xf946e ahci.c:967
+ add AL, strict byte 002h ; 04 02 ; 0xf9470
+ movzx bx, al ; 0f b6 d8 ; 0xf9472
+ mov dx, si ; 89 f2 ; 0xf9475
+ mov ax, di ; 89 f8 ; 0xf9477
+ call 0ab46h ; e8 ca 16 ; 0xf9479
+ mov dx, ax ; 89 c2 ; 0xf947c
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf947e ahci.c:971
+ sub ax, strict word 00004h ; 2d 04 00 ; 0xf9481
+ cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf9484
+ jnbe short 094c0h ; 77 37 ; 0xf9487
+ push CS ; 0e ; 0xf9489
+ pop ES ; 07 ; 0xf948a
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf948b
+ mov di, 093d9h ; bf d9 93 ; 0xf948e
+ repne scasb ; f2 ae ; 0xf9491
+ sal cx, 1 ; d1 e1 ; 0xf9493
+ mov di, cx ; 89 cf ; 0xf9495
+ mov ax, word [cs:di-06c20h] ; 2e 8b 85 e0 93 ; 0xf9497
+ jmp ax ; ff e0 ; 0xf949c
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf949e ahci.c:974
+ jmp short 094c0h ; eb 1c ; 0xf94a2 ahci.c:975
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf94a4 ahci.c:977
+ jmp short 094c0h ; eb 16 ; 0xf94a8 ahci.c:978
+ mov byte [bp-006h], 018h ; c6 46 fa 18 ; 0xf94aa ahci.c:980
+ jmp short 094c0h ; eb 10 ; 0xf94ae ahci.c:981
+ mov byte [bp-006h], 01ch ; c6 46 fa 1c ; 0xf94b0 ahci.c:983
+ jmp short 094c0h ; eb 0a ; 0xf94b4 ahci.c:984
+ mov byte [bp-006h], 020h ; c6 46 fa 20 ; 0xf94b6 ahci.c:986
+ jmp short 094c0h ; eb 04 ; 0xf94ba ahci.c:987
+ mov byte [bp-006h], 024h ; c6 46 fa 24 ; 0xf94bc ahci.c:989
+ mov cx, dx ; 89 d1 ; 0xf94c0 ahci.c:998
+ shr cx, 004h ; c1 e9 04 ; 0xf94c2
+ sal cx, 002h ; c1 e1 02 ; 0xf94c5
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf94c8 ahci.c:1000
+ test al, al ; 84 c0 ; 0xf94cb
+ je short 094ffh ; 74 30 ; 0xf94cd
+ movzx bx, al ; 0f b6 d8 ; 0xf94cf ahci.c:1002
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf94d2
+ movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf94d6
+ mov dx, di ; 89 fa ; 0xf94da
+ mov ax, si ; 89 f0 ; 0xf94dc
+ call 0ab68h ; e8 87 16 ; 0xf94de
+ test AL, strict byte 001h ; a8 01 ; 0xf94e1 ahci.c:1006
+ je short 094ffh ; 74 1a ; 0xf94e3
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf94e5 ahci.c:1009
+ add ax, cx ; 01 c8 ; 0xf94e7
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf94e9
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf94ec ahci.c:1012
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf94ef
+ mov dx, di ; 89 fa ; 0xf94f2
+ mov ax, si ; 89 f0 ; 0xf94f4
+ call 0ab8fh ; e8 96 16 ; 0xf94f6
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf94f9 ahci.c:1015
+ call 09294h ; e8 95 fd ; 0xf94fc
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf94ff ahci.c:1029
+ pop di ; 5f ; 0xf9502
+ pop si ; 5e ; 0xf9503
+ pop bp ; 5d ; 0xf9504
+ retn ; c3 ; 0xf9505
+ ; disGetNextSymbol 0xf9506 LB 0x1916 -> off=0x0 cb=0000000000000070 uValue=00000000000f7f06 'virtio_reg_set_bar_offset_length'
+virtio_reg_set_bar_offset_length: ; 0xf9506 LB 0x70
+ push bp ; 55 ; 0xf9506 virtio.c:287
+ mov bp, sp ; 89 e5 ; 0xf9507
+ push cx ; 51 ; 0xf9509
+ push si ; 56 ; 0xf950a
+ push di ; 57 ; 0xf950b
+ mov si, ax ; 89 c6 ; 0xf950c
+ mov di, dx ; 89 d7 ; 0xf950e
+ movzx cx, bl ; 0f b6 cb ; 0xf9510 virtio.c:289
+ mov es, dx ; 8e c2 ; 0xf9513
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9515
+ add AL, strict byte 004h ; 04 04 ; 0xf951a
+ movzx bx, al ; 0f b6 d8 ; 0xf951c
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf951f
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9525
+ call 0ababh ; e8 7d 16 ; 0xf952b
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf952e virtio.c:290
+ mov es, di ; 8e c7 ; 0xf9532
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9534
+ add AL, strict byte 008h ; 04 08 ; 0xf9539
+ movzx bx, al ; 0f b6 d8 ; 0xf953b
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf953e
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9544
+ call 0abc7h ; e8 7a 16 ; 0xf954a
+ push dword [bp+008h] ; 66 ff 76 08 ; 0xf954d virtio.c:291
+ mov es, di ; 8e c7 ; 0xf9551
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9553
+ add AL, strict byte 00ch ; 04 0c ; 0xf9558
+ movzx bx, al ; 0f b6 d8 ; 0xf955a
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf955d
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9563
+ call 0abc7h ; e8 5b 16 ; 0xf9569
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf956c virtio.c:292
+ pop di ; 5f ; 0xf956f
+ pop si ; 5e ; 0xf9570
+ pop cx ; 59 ; 0xf9571
+ pop bp ; 5d ; 0xf9572
+ retn 00008h ; c2 08 00 ; 0xf9573
+ ; disGetNextSymbol 0xf9576 LB 0x18a6 -> off=0x0 cb=0000000000000030 uValue=00000000000f7f76 'virtio_reg_common_access_prepare'
+virtio_reg_common_access_prepare: ; 0xf9576 LB 0x30
+ push bp ; 55 ; 0xf9576 virtio.c:294
+ mov bp, sp ; 89 e5 ; 0xf9577
+ push si ; 56 ; 0xf9579
+ mov si, ax ; 89 c6 ; 0xf957a
+ mov es, dx ; 8e c2 ; 0xf957c
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf957e virtio.c:296
+ xor dx, dx ; 31 d2 ; 0xf9582
+ mov ax, word [es:si+060h] ; 26 8b 44 60 ; 0xf9584
+ add ax, bx ; 01 d8 ; 0xf9588
+ mov bx, word [es:si+062h] ; 26 8b 5c 62 ; 0xf958a
+ adc bx, dx ; 11 d3 ; 0xf958e
+ push bx ; 53 ; 0xf9590
+ push ax ; 50 ; 0xf9591
+ movzx bx, byte [es:si+05ch] ; 26 0f b6 5c 5c ; 0xf9592
+ mov ax, si ; 89 f0 ; 0xf9597
+ mov dx, es ; 8c c2 ; 0xf9599
+ call 09506h ; e8 68 ff ; 0xf959b
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf959e virtio.c:300
+ pop si ; 5e ; 0xf95a1
+ pop bp ; 5d ; 0xf95a2
+ retn 00004h ; c2 04 00 ; 0xf95a3
+ ; disGetNextSymbol 0xf95a6 LB 0x1876 -> off=0x0 cb=0000000000000033 uValue=00000000000f7fa6 'virtio_reg_dev_access_prepare'
+virtio_reg_dev_access_prepare: ; 0xf95a6 LB 0x33
+ push bp ; 55 ; 0xf95a6 virtio.c:302
+ mov bp, sp ; 89 e5 ; 0xf95a7
+ push si ; 56 ; 0xf95a9
+ mov si, ax ; 89 c6 ; 0xf95aa
+ mov es, dx ; 8e c2 ; 0xf95ac
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf95ae virtio.c:304
+ xor dx, dx ; 31 d2 ; 0xf95b2
+ mov ax, word [es:si+00084h] ; 26 8b 84 84 00 ; 0xf95b4
+ add ax, bx ; 01 d8 ; 0xf95b9
+ mov bx, word [es:si+00086h] ; 26 8b 9c 86 00 ; 0xf95bb
+ adc bx, dx ; 11 d3 ; 0xf95c0
+ push bx ; 53 ; 0xf95c2
+ push ax ; 50 ; 0xf95c3
+ movzx bx, byte [es:si+00080h] ; 26 0f b6 9c 80 00 ; 0xf95c4
+ mov ax, si ; 89 f0 ; 0xf95ca
+ mov dx, es ; 8c c2 ; 0xf95cc
+ call 09506h ; e8 35 ff ; 0xf95ce
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf95d1 virtio.c:308
+ pop si ; 5e ; 0xf95d4
+ pop bp ; 5d ; 0xf95d5
+ retn 00004h ; c2 04 00 ; 0xf95d6
+ ; disGetNextSymbol 0xf95d9 LB 0x1843 -> off=0x0 cb=0000000000000030 uValue=00000000000f7fd9 'virtio_reg_notify_access_prepare'
+virtio_reg_notify_access_prepare: ; 0xf95d9 LB 0x30
+ push bp ; 55 ; 0xf95d9 virtio.c:310
+ mov bp, sp ; 89 e5 ; 0xf95da
+ push si ; 56 ; 0xf95dc
+ mov si, ax ; 89 c6 ; 0xf95dd
+ mov es, dx ; 8e c2 ; 0xf95df
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf95e1 virtio.c:312
+ xor dx, dx ; 31 d2 ; 0xf95e5
+ mov ax, word [es:si+06ch] ; 26 8b 44 6c ; 0xf95e7
+ add ax, bx ; 01 d8 ; 0xf95eb
+ mov bx, word [es:si+06eh] ; 26 8b 5c 6e ; 0xf95ed
+ adc bx, dx ; 11 d3 ; 0xf95f1
+ push bx ; 53 ; 0xf95f3
+ push ax ; 50 ; 0xf95f4
+ movzx bx, byte [es:si+068h] ; 26 0f b6 5c 68 ; 0xf95f5
+ mov ax, si ; 89 f0 ; 0xf95fa
+ mov dx, es ; 8c c2 ; 0xf95fc
+ call 09506h ; e8 05 ff ; 0xf95fe
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9601 virtio.c:316
+ pop si ; 5e ; 0xf9604
+ pop bp ; 5d ; 0xf9605
+ retn 00004h ; c2 04 00 ; 0xf9606
+ ; disGetNextSymbol 0xf9609 LB 0x1813 -> off=0x0 cb=000000000000001d uValue=00000000000f8009 'virtio_reg_isr_prepare'
+virtio_reg_isr_prepare: ; 0xf9609 LB 0x1d
+ push bp ; 55 ; 0xf9609 virtio.c:318
+ mov bp, sp ; 89 e5 ; 0xf960a
+ push si ; 56 ; 0xf960c
+ mov si, ax ; 89 c6 ; 0xf960d
+ mov es, dx ; 8e c2 ; 0xf960f
+ push cx ; 51 ; 0xf9611 virtio.c:320
+ push bx ; 53 ; 0xf9612
+ db 066h, 026h, 0ffh, 074h, 078h
+ ; push dword [es:si+078h] ; 66 26 ff 74 78 ; 0xf9613
+ movzx bx, byte [es:si+074h] ; 26 0f b6 5c 74 ; 0xf9618
+ call 09506h ; e8 e6 fe ; 0xf961d
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9620 virtio.c:324
+ pop si ; 5e ; 0xf9623
+ pop bp ; 5d ; 0xf9624
+ retn ; c3 ; 0xf9625
+ ; disGetNextSymbol 0xf9626 LB 0x17f6 -> off=0x0 cb=0000000000000031 uValue=00000000000f8026 'virtio_reg_common_read_u8'
+virtio_reg_common_read_u8: ; 0xf9626 LB 0x31
+ push bp ; 55 ; 0xf9626 virtio.c:326
+ mov bp, sp ; 89 e5 ; 0xf9627
+ push cx ; 51 ; 0xf9629
+ push si ; 56 ; 0xf962a
+ mov si, ax ; 89 c6 ; 0xf962b
+ mov cx, dx ; 89 d1 ; 0xf962d
+ push dword 000000001h ; 66 6a 01 ; 0xf962f virtio.c:328
+ call 09576h ; e8 41 ff ; 0xf9632
+ mov es, cx ; 8e c1 ; 0xf9635 virtio.c:329
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9637
+ add AL, strict byte 010h ; 04 10 ; 0xf963c
+ movzx bx, al ; 0f b6 d8 ; 0xf963e
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9641
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9647
+ call 0ab22h ; e8 d2 14 ; 0xf964d
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9650 virtio.c:330
+ pop si ; 5e ; 0xf9653
+ pop cx ; 59 ; 0xf9654
+ pop bp ; 5d ; 0xf9655
+ retn ; c3 ; 0xf9656
+ ; disGetNextSymbol 0xf9657 LB 0x17c5 -> off=0x0 cb=0000000000000033 uValue=00000000000f8057 'virtio_reg_common_write_u8'
+virtio_reg_common_write_u8: ; 0xf9657 LB 0x33
+ push bp ; 55 ; 0xf9657 virtio.c:332
+ mov bp, sp ; 89 e5 ; 0xf9658
+ push si ; 56 ; 0xf965a
+ push di ; 57 ; 0xf965b
+ mov si, ax ; 89 c6 ; 0xf965c
+ mov di, dx ; 89 d7 ; 0xf965e
+ push dword 000000001h ; 66 6a 01 ; 0xf9660 virtio.c:334
+ call 09576h ; e8 10 ff ; 0xf9663
+ xor ch, ch ; 30 ed ; 0xf9666 virtio.c:335
+ mov es, di ; 8e c7 ; 0xf9668
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf966a
+ add AL, strict byte 010h ; 04 10 ; 0xf966f
+ movzx bx, al ; 0f b6 d8 ; 0xf9671
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9674
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf967a
+ call 0ababh ; e8 28 15 ; 0xf9680
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9683 virtio.c:336
+ pop di ; 5f ; 0xf9686
+ pop si ; 5e ; 0xf9687
+ pop bp ; 5d ; 0xf9688
+ retn ; c3 ; 0xf9689
+ ; disGetNextSymbol 0xf968a LB 0x1792 -> off=0x0 cb=0000000000000031 uValue=00000000000f808a 'virtio_reg_common_read_u16'
+virtio_reg_common_read_u16: ; 0xf968a LB 0x31
+ push bp ; 55 ; 0xf968a virtio.c:338
+ mov bp, sp ; 89 e5 ; 0xf968b
+ push cx ; 51 ; 0xf968d
+ push si ; 56 ; 0xf968e
+ mov si, ax ; 89 c6 ; 0xf968f
+ mov cx, dx ; 89 d1 ; 0xf9691
+ push dword 000000002h ; 66 6a 02 ; 0xf9693 virtio.c:340
+ call 09576h ; e8 dd fe ; 0xf9696
+ mov es, cx ; 8e c1 ; 0xf9699 virtio.c:341
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf969b
+ add AL, strict byte 010h ; 04 10 ; 0xf96a0
+ movzx bx, al ; 0f b6 d8 ; 0xf96a2
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf96a5
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf96ab
+ call 0ab46h ; e8 92 14 ; 0xf96b1
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf96b4 virtio.c:342
+ pop si ; 5e ; 0xf96b7
+ pop cx ; 59 ; 0xf96b8
+ pop bp ; 5d ; 0xf96b9
+ retn ; c3 ; 0xf96ba
+ ; disGetNextSymbol 0xf96bb LB 0x1761 -> off=0x0 cb=0000000000000031 uValue=00000000000f80bb 'virtio_reg_common_write_u16'
+virtio_reg_common_write_u16: ; 0xf96bb LB 0x31
+ push bp ; 55 ; 0xf96bb virtio.c:344
+ mov bp, sp ; 89 e5 ; 0xf96bc
+ push si ; 56 ; 0xf96be
+ push di ; 57 ; 0xf96bf
+ mov si, ax ; 89 c6 ; 0xf96c0
+ mov di, dx ; 89 d7 ; 0xf96c2
+ push dword 000000002h ; 66 6a 02 ; 0xf96c4 virtio.c:346
+ call 09576h ; e8 ac fe ; 0xf96c7
+ mov es, di ; 8e c7 ; 0xf96ca virtio.c:347
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf96cc
+ add AL, strict byte 010h ; 04 10 ; 0xf96d1
+ movzx bx, al ; 0f b6 d8 ; 0xf96d3
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf96d6
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf96dc
+ call 0ab8fh ; e8 aa 14 ; 0xf96e2
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf96e5 virtio.c:348
+ pop di ; 5f ; 0xf96e8
+ pop si ; 5e ; 0xf96e9
+ pop bp ; 5d ; 0xf96ea
+ retn ; c3 ; 0xf96eb
+ ; disGetNextSymbol 0xf96ec LB 0x1730 -> off=0x0 cb=0000000000000037 uValue=00000000000f80ec 'virtio_reg_common_write_u32'
+virtio_reg_common_write_u32: ; 0xf96ec LB 0x37
+ push bp ; 55 ; 0xf96ec virtio.c:350
+ mov bp, sp ; 89 e5 ; 0xf96ed
+ push cx ; 51 ; 0xf96ef
+ push si ; 56 ; 0xf96f0
+ mov si, ax ; 89 c6 ; 0xf96f1
+ mov cx, dx ; 89 d1 ; 0xf96f3
+ push dword 000000004h ; 66 6a 04 ; 0xf96f5 virtio.c:352
+ call 09576h ; e8 7b fe ; 0xf96f8
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf96fb virtio.c:353
+ mov es, cx ; 8e c1 ; 0xf96ff
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9701
+ add AL, strict byte 010h ; 04 10 ; 0xf9706
+ movzx bx, al ; 0f b6 d8 ; 0xf9708
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf970b
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9711
+ call 0abc7h ; e8 ad 14 ; 0xf9717
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf971a virtio.c:354
+ pop si ; 5e ; 0xf971d
+ pop cx ; 59 ; 0xf971e
+ pop bp ; 5d ; 0xf971f
+ retn 00004h ; c2 04 00 ; 0xf9720
+ ; disGetNextSymbol 0xf9723 LB 0x16f9 -> off=0x0 cb=0000000000000031 uValue=00000000000f8123 'virtio_reg_dev_cfg_read_u32'
+virtio_reg_dev_cfg_read_u32: ; 0xf9723 LB 0x31
+ push bp ; 55 ; 0xf9723 virtio.c:356
+ mov bp, sp ; 89 e5 ; 0xf9724
+ push cx ; 51 ; 0xf9726
+ push si ; 56 ; 0xf9727
+ mov si, ax ; 89 c6 ; 0xf9728
+ mov cx, dx ; 89 d1 ; 0xf972a
+ push dword 000000004h ; 66 6a 04 ; 0xf972c virtio.c:358
+ call 095a6h ; e8 74 fe ; 0xf972f
+ mov es, cx ; 8e c1 ; 0xf9732 virtio.c:359
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9734
+ add AL, strict byte 010h ; 04 10 ; 0xf9739
+ movzx bx, al ; 0f b6 d8 ; 0xf973b
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf973e
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9744
+ call 0ab68h ; e8 1b 14 ; 0xf974a
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf974d virtio.c:360
+ pop si ; 5e ; 0xf9750
+ pop cx ; 59 ; 0xf9751
+ pop bp ; 5d ; 0xf9752
+ retn ; c3 ; 0xf9753
+ ; disGetNextSymbol 0xf9754 LB 0x16c8 -> off=0x0 cb=0000000000000037 uValue=00000000000f8154 'virtio_reg_dev_cfg_write_u32'
+virtio_reg_dev_cfg_write_u32: ; 0xf9754 LB 0x37
+ push bp ; 55 ; 0xf9754 virtio.c:362
+ mov bp, sp ; 89 e5 ; 0xf9755
+ push cx ; 51 ; 0xf9757
+ push si ; 56 ; 0xf9758
+ mov si, ax ; 89 c6 ; 0xf9759
+ mov cx, dx ; 89 d1 ; 0xf975b
+ push dword 000000004h ; 66 6a 04 ; 0xf975d virtio.c:364
+ call 095a6h ; e8 43 fe ; 0xf9760
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf9763 virtio.c:365
+ mov es, cx ; 8e c1 ; 0xf9767
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9769
+ add AL, strict byte 010h ; 04 10 ; 0xf976e
+ movzx bx, al ; 0f b6 d8 ; 0xf9770
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9773
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9779
+ call 0abc7h ; e8 45 14 ; 0xf977f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9782 virtio.c:366
+ pop si ; 5e ; 0xf9785
+ pop cx ; 59 ; 0xf9786
+ pop bp ; 5d ; 0xf9787
+ retn 00004h ; c2 04 00 ; 0xf9788
+ ; disGetNextSymbol 0xf978b LB 0x1691 -> off=0x0 cb=0000000000000031 uValue=00000000000f818b 'virtio_reg_notify_write_u16'
+virtio_reg_notify_write_u16: ; 0xf978b LB 0x31
+ push bp ; 55 ; 0xf978b virtio.c:368
+ mov bp, sp ; 89 e5 ; 0xf978c
+ push si ; 56 ; 0xf978e
+ push di ; 57 ; 0xf978f
+ mov si, ax ; 89 c6 ; 0xf9790
+ mov di, dx ; 89 d7 ; 0xf9792
+ push dword 000000002h ; 66 6a 02 ; 0xf9794 virtio.c:370
+ call 095d9h ; e8 3f fe ; 0xf9797
+ mov es, di ; 8e c7 ; 0xf979a virtio.c:371
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf979c
+ add AL, strict byte 010h ; 04 10 ; 0xf97a1
+ movzx bx, al ; 0f b6 d8 ; 0xf97a3
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf97a6
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf97ac
+ call 0ab8fh ; e8 da 13 ; 0xf97b2
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf97b5 virtio.c:372
+ pop di ; 5f ; 0xf97b8
+ pop si ; 5e ; 0xf97b9
+ pop bp ; 5d ; 0xf97ba
+ retn ; c3 ; 0xf97bb
+ ; disGetNextSymbol 0xf97bc LB 0x1660 -> off=0x0 cb=0000000000000037 uValue=00000000000f81bc 'virtio_reg_isr_read_u8'
+virtio_reg_isr_read_u8: ; 0xf97bc LB 0x37
+ push bp ; 55 ; 0xf97bc virtio.c:374
+ mov bp, sp ; 89 e5 ; 0xf97bd
+ push bx ; 53 ; 0xf97bf
+ push cx ; 51 ; 0xf97c0
+ push si ; 56 ; 0xf97c1
+ push di ; 57 ; 0xf97c2
+ mov si, ax ; 89 c6 ; 0xf97c3
+ mov di, dx ; 89 d7 ; 0xf97c5
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf97c7 virtio.c:376
+ xor cx, cx ; 31 c9 ; 0xf97ca
+ call 09609h ; e8 3a fe ; 0xf97cc
+ mov es, di ; 8e c7 ; 0xf97cf virtio.c:377
+ mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf97d1
+ add AL, strict byte 010h ; 04 10 ; 0xf97d6
+ movzx bx, al ; 0f b6 d8 ; 0xf97d8
+ movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf97db
+ movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf97e1
+ call 0ab22h ; e8 38 13 ; 0xf97e7
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf97ea virtio.c:378
+ pop di ; 5f ; 0xf97ed
+ pop si ; 5e ; 0xf97ee
+ pop cx ; 59 ; 0xf97ef
+ pop bx ; 5b ; 0xf97f0
+ pop bp ; 5d ; 0xf97f1
+ retn ; c3 ; 0xf97f2
+ ; disGetNextSymbol 0xf97f3 LB 0x1629 -> off=0x0 cb=000000000000001e uValue=00000000000f81f3 'virtio_addr_to_phys'
+virtio_addr_to_phys: ; 0xf97f3 LB 0x1e
+ push bx ; 53 ; 0xf97f3 virtio.c:383
+ push cx ; 51 ; 0xf97f4
+ push bp ; 55 ; 0xf97f5
+ mov bp, sp ; 89 e5 ; 0xf97f6
+ mov bx, ax ; 89 c3 ; 0xf97f8
+ mov ax, dx ; 89 d0 ; 0xf97fa
+ xor dx, dx ; 31 d2 ; 0xf97fc virtio.c:385
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf97fe
+ sal ax, 1 ; d1 e0 ; 0xf9801
+ rcl dx, 1 ; d1 d2 ; 0xf9803
+ loop 09801h ; e2 fa ; 0xf9805
+ xor cx, cx ; 31 c9 ; 0xf9807
+ add ax, bx ; 01 d8 ; 0xf9809
+ adc dx, cx ; 11 ca ; 0xf980b
+ pop bp ; 5d ; 0xf980d virtio.c:386
+ pop cx ; 59 ; 0xf980e
+ pop bx ; 5b ; 0xf980f
+ retn ; c3 ; 0xf9810
+ ; disGetNextSymbol 0xf9811 LB 0x160b -> off=0x0 cb=0000000000000156 uValue=00000000000f8211 'virtio_scsi_cmd_data_out'
+virtio_scsi_cmd_data_out: ; 0xf9811 LB 0x156
+ push bp ; 55 ; 0xf9811 virtio.c:388
+ mov bp, sp ; 89 e5 ; 0xf9812
+ push cx ; 51 ; 0xf9814
+ push si ; 56 ; 0xf9815
+ push di ; 57 ; 0xf9816
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9817
+ mov si, ax ; 89 c6 ; 0xf981a
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf981c
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf981f
+ mov di, ax ; 89 c7 ; 0xf9822 virtio.c:391
+ mov es, dx ; 8e c2 ; 0xf9824
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf9826
+ mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf9829
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf982d
+ lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf9830 virtio.c:394
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9834
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf9837
+ xor bx, bx ; 31 db ; 0xf983a
+ call 0ad80h ; e8 41 15 ; 0xf983c
+ lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf983f virtio.c:395
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9843
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf9846
+ xor bx, bx ; 31 db ; 0xf9849
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf984b
+ call 0ad80h ; e8 2f 15 ; 0xf984e
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9851 virtio.c:397
+ mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf9854
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf985a virtio.c:398
+ mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf985d
+ mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf9862 virtio.c:399
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf9869 virtio.c:401
+ push ax ; 50 ; 0xf986d
+ lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf986e
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9872
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf9875
+ mov dx, es ; 8c c2 ; 0xf9878
+ call 0ad90h ; e8 13 15 ; 0xf987a
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf987d virtio.c:404
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9880
+ call 097f3h ; e8 6d ff ; 0xf9883
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9886
+ mov word [es:si], ax ; 26 89 04 ; 0xf9889
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf988c
+ 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; 0xf9890 virtio.c:405
+ db 066h, 026h, 0c7h, 044h, 008h, 024h, 000h, 000h, 000h
+ ; mov dword [es:si+008h], strict dword 000000024h ; 66 26 c7 44 08 24 00 00 00; 0xf9899 virtio.c:406
+ db 066h, 026h, 0c7h, 044h, 00ch, 001h, 000h, 001h, 000h
+ ; mov dword [es:si+00ch], strict dword 000010001h ; 66 26 c7 44 0c 01 00 01 00; 0xf98a2 virtio.c:407
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf98ab virtio.c:410
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf98ae
+ call 097f3h ; e8 3f ff ; 0xf98b1
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf98b4
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf98b7
+ mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf98bb
+ db 066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+014h], strict dword 000000000h ; 66 26 c7 44 14 00 00 00 00; 0xf98bf virtio.c:411
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf98c8 virtio.c:412
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf98cb
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf98cf
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf98d2
+ db 066h, 026h, 0c7h, 044h, 01ch, 001h, 000h, 002h, 000h
+ ; mov dword [es:si+01ch], strict dword 000020001h ; 66 26 c7 44 1c 01 00 02 00; 0xf98d6 virtio.c:413
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf98df virtio.c:416
+ mov dx, es ; 8c c2 ; 0xf98e2
+ call 097f3h ; e8 0c ff ; 0xf98e4
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf98e7
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf98ea
+ mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf98ee
+ db 066h, 026h, 0c7h, 044h, 024h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+024h], strict dword 000000000h ; 66 26 c7 44 24 00 00 00 00; 0xf98f2 virtio.c:417
+ db 066h, 026h, 0c7h, 044h, 028h, 02ch, 000h, 000h, 000h
+ ; mov dword [es:si+028h], strict dword 00000002ch ; 66 26 c7 44 28 2c 00 00 00; 0xf98fb virtio.c:418
+ db 066h, 026h, 0c7h, 044h, 02ch, 002h, 000h, 000h, 000h
+ ; mov dword [es:si+02ch], strict dword 000000002h ; 66 26 c7 44 2c 02 00 00 00; 0xf9904 virtio.c:419
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf990d virtio.c:420
+ xor dx, dx ; 31 d2 ; 0xf9911
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf9913
+ div bx ; f7 f3 ; 0xf9916
+ add dx, dx ; 01 d2 ; 0xf9918
+ mov bx, si ; 89 f3 ; 0xf991a
+ add bx, dx ; 01 d3 ; 0xf991c
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf991e
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9924 virtio.c:424
+ inc word [es:si+032h] ; 26 ff 44 32 ; 0xf9928
+ mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf992c virtio.c:428
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9930
+ mov ax, si ; 89 f0 ; 0xf9933
+ mov dx, es ; 8c c2 ; 0xf9935
+ call 0978bh ; e8 51 fe ; 0xf9937
+ les ax, [bp-00ch] ; c4 46 f4 ; 0xf993a virtio.c:431
+ cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf993d
+ je short 0993ah ; 74 f7 ; 0xf9941
+ mov ax, di ; 89 f8 ; 0xf9943 virtio.c:436
+ mov dx, es ; 8c c2 ; 0xf9945
+ call 097bch ; e8 72 fe ; 0xf9947
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf994a virtio.c:438
+ mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf994d
+ test al, al ; 84 c0 ; 0xf9952
+ je short 0995bh ; 74 05 ; 0xf9954
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9956 virtio.c:439
+ jmp short 0995dh ; eb 02 ; 0xf9959
+ xor ah, ah ; 30 e4 ; 0xf995b virtio.c:441
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf995d virtio.c:442
+ pop di ; 5f ; 0xf9960
+ pop si ; 5e ; 0xf9961
+ pop cx ; 59 ; 0xf9962
+ pop bp ; 5d ; 0xf9963
+ retn 0000eh ; c2 0e 00 ; 0xf9964
+ ; disGetNextSymbol 0xf9967 LB 0x14b5 -> off=0x0 cb=0000000000000156 uValue=00000000000f8367 'virtio_scsi_cmd_data_in'
+virtio_scsi_cmd_data_in: ; 0xf9967 LB 0x156
+ push bp ; 55 ; 0xf9967 virtio.c:444
+ mov bp, sp ; 89 e5 ; 0xf9968
+ push cx ; 51 ; 0xf996a
+ push si ; 56 ; 0xf996b
+ push di ; 57 ; 0xf996c
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf996d
+ mov si, ax ; 89 c6 ; 0xf9970
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf9972
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9975
+ mov di, ax ; 89 c7 ; 0xf9978 virtio.c:447
+ mov es, dx ; 8e c2 ; 0xf997a
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf997c
+ mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf997f
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9983
+ lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf9986 virtio.c:450
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf998a
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf998d
+ xor bx, bx ; 31 db ; 0xf9990
+ call 0ad80h ; e8 eb 13 ; 0xf9992
+ lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf9995 virtio.c:451
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9999
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf999c
+ xor bx, bx ; 31 db ; 0xf999f
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf99a1
+ call 0ad80h ; e8 d9 13 ; 0xf99a4
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf99a7 virtio.c:453
+ mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf99aa
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf99b0 virtio.c:454
+ mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf99b3
+ mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf99b8 virtio.c:455
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf99bf virtio.c:457
+ push ax ; 50 ; 0xf99c3
+ lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf99c4
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf99c8
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf99cb
+ mov dx, es ; 8c c2 ; 0xf99ce
+ call 0ad90h ; e8 bd 13 ; 0xf99d0
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf99d3 virtio.c:460
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf99d6
+ call 097f3h ; e8 17 fe ; 0xf99d9
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf99dc
+ mov word [es:si], ax ; 26 89 04 ; 0xf99df
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf99e2
+ 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; 0xf99e6 virtio.c:461
+ db 066h, 026h, 0c7h, 044h, 008h, 024h, 000h, 000h, 000h
+ ; mov dword [es:si+008h], strict dword 000000024h ; 66 26 c7 44 08 24 00 00 00; 0xf99ef virtio.c:462
+ db 066h, 026h, 0c7h, 044h, 00ch, 001h, 000h, 001h, 000h
+ ; mov dword [es:si+00ch], strict dword 000010001h ; 66 26 c7 44 0c 01 00 01 00; 0xf99f8 virtio.c:463
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9a01 virtio.c:467
+ mov dx, es ; 8c c2 ; 0xf9a04
+ call 097f3h ; e8 ea fd ; 0xf9a06
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9a09
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf9a0c
+ mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf9a10
+ db 066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+014h], strict dword 000000000h ; 66 26 c7 44 14 00 00 00 00; 0xf9a14 virtio.c:468
+ db 066h, 026h, 0c7h, 044h, 018h, 02ch, 000h, 000h, 000h
+ ; mov dword [es:si+018h], strict dword 00000002ch ; 66 26 c7 44 18 2c 00 00 00; 0xf9a1d virtio.c:469
+ db 066h, 026h, 0c7h, 044h, 01ch, 003h, 000h, 002h, 000h
+ ; mov dword [es:si+01ch], strict dword 000020003h ; 66 26 c7 44 1c 03 00 02 00; 0xf9a26 virtio.c:470
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9a2f virtio.c:473
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9a32
+ call 097f3h ; e8 bb fd ; 0xf9a35
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9a38
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf9a3b
+ mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf9a3f
+ db 066h, 026h, 0c7h, 044h, 024h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+024h], strict dword 000000000h ; 66 26 c7 44 24 00 00 00 00; 0xf9a43 virtio.c:474
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9a4c virtio.c:475
+ mov word [es:si+028h], ax ; 26 89 44 28 ; 0xf9a4f
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9a53
+ mov word [es:si+02ah], ax ; 26 89 44 2a ; 0xf9a56
+ db 066h, 026h, 0c7h, 044h, 02ch, 002h, 000h, 000h, 000h
+ ; mov dword [es:si+02ch], strict dword 000000002h ; 66 26 c7 44 2c 02 00 00 00; 0xf9a5a virtio.c:476
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9a63 virtio.c:477
+ xor dx, dx ; 31 d2 ; 0xf9a67
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf9a69
+ div bx ; f7 f3 ; 0xf9a6c
+ add dx, dx ; 01 d2 ; 0xf9a6e
+ mov bx, si ; 89 f3 ; 0xf9a70
+ add bx, dx ; 01 d3 ; 0xf9a72
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf9a74
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9a7a virtio.c:482
+ inc word [es:si+032h] ; 26 ff 44 32 ; 0xf9a7e
+ mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf9a82 virtio.c:486
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9a86
+ mov ax, si ; 89 f0 ; 0xf9a89
+ mov dx, es ; 8c c2 ; 0xf9a8b
+ call 0978bh ; e8 fb fc ; 0xf9a8d
+ les ax, [bp-00ch] ; c4 46 f4 ; 0xf9a90 virtio.c:489
+ cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf9a93
+ je short 09a90h ; 74 f7 ; 0xf9a97
+ mov ax, di ; 89 f8 ; 0xf9a99 virtio.c:494
+ mov dx, es ; 8c c2 ; 0xf9a9b
+ call 097bch ; e8 1c fd ; 0xf9a9d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9aa0 virtio.c:496
+ mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf9aa3
+ test al, al ; 84 c0 ; 0xf9aa8
+ je short 09ab1h ; 74 05 ; 0xf9aaa
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9aac virtio.c:497
+ jmp short 09ab3h ; eb 02 ; 0xf9aaf
+ xor ah, ah ; 30 e4 ; 0xf9ab1 virtio.c:499
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9ab3 virtio.c:500
+ pop di ; 5f ; 0xf9ab6
+ pop si ; 5e ; 0xf9ab7
+ pop cx ; 59 ; 0xf9ab8
+ pop bp ; 5d ; 0xf9ab9
+ retn 0000eh ; c2 0e 00 ; 0xf9aba
+ ; disGetNextSymbol 0xf9abd LB 0x135f -> off=0x0 cb=000000000000031f uValue=00000000000f84bd 'virtio_scsi_hba_init'
+virtio_scsi_hba_init: ; 0xf9abd LB 0x31f
+ push bp ; 55 ; 0xf9abd virtio.c:505
+ mov bp, sp ; 89 e5 ; 0xf9abe
+ push si ; 56 ; 0xf9ac0
+ push di ; 57 ; 0xf9ac1
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf9ac2
+ mov si, ax ; 89 c6 ; 0xf9ac5
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9ac7
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xf9aca
+ mov ch, cl ; 88 cd ; 0xf9acd
+ mov es, dx ; 8e c2 ; 0xf9acf virtio.c:510
+ mov byte [es:si+00092h], bl ; 26 88 9c 92 00 ; 0xf9ad1
+ mov byte [es:si+00093h], cl ; 26 88 8c 93 00 ; 0xf9ad6 virtio.c:511
+ mov cl, byte [bp+004h] ; 8a 4e 04 ; 0xf9adb virtio.c:517
+ test cl, cl ; 84 c9 ; 0xf9ade virtio.c:518
+ je near 09be8h ; 0f 84 04 01 ; 0xf9ae0
+ movzx bx, cl ; 0f b6 d9 ; 0xf9ae4 virtio.c:520
+ movzx ax, ch ; 0f b6 c5 ; 0xf9ae7
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9aea
+ movzx di, byte [bp-006h] ; 0f b6 7e fa ; 0xf9aed
+ mov dx, ax ; 89 c2 ; 0xf9af1
+ mov ax, di ; 89 f8 ; 0xf9af3
+ call 0ab22h ; e8 2a 10 ; 0xf9af5
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9af8
+ mov al, cl ; 88 c8 ; 0xf9afb virtio.c:521
+ add AL, strict byte 002h ; 04 02 ; 0xf9afd
+ movzx bx, al ; 0f b6 d8 ; 0xf9aff
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b02
+ mov ax, di ; 89 f8 ; 0xf9b05
+ call 0ab22h ; e8 18 10 ; 0xf9b07
+ cmp byte [bp-012h], 009h ; 80 7e ee 09 ; 0xf9b0a virtio.c:525
+ jne near 09bd2h ; 0f 85 c0 00 ; 0xf9b0e
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf9b12
+ jc near 09bd2h ; 0f 82 ba 00 ; 0xf9b14
+ mov al, cl ; 88 c8 ; 0xf9b18 virtio.c:529
+ add AL, strict byte 003h ; 04 03 ; 0xf9b1a
+ movzx bx, al ; 0f b6 d8 ; 0xf9b1c
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b1f
+ mov ax, di ; 89 f8 ; 0xf9b22
+ call 0ab22h ; e8 fb 0f ; 0xf9b24
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf9b27
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf9b2a virtio.c:532
+ je near 09bcah ; 0f 84 9a 00 ; 0xf9b2c
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf9b30
+ jc near 09bd2h ; 0f 82 9c 00 ; 0xf9b32
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf9b36
+ jnbe near 09bd2h ; 0f 87 96 00 ; 0xf9b38
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf9b3c virtio.c:539
+ dec ax ; 48 ; 0xf9b40
+ imul ax, ax, strict byte 0000ch ; 6b c0 0c ; 0xf9b41
+ lea di, [si+05ch] ; 8d 7c 5c ; 0xf9b44
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9b47
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf9b4a
+ add di, ax ; 01 c7 ; 0xf9b4d
+ mov al, cl ; 88 c8 ; 0xf9b4f virtio.c:541
+ add AL, strict byte 004h ; 04 04 ; 0xf9b51
+ movzx bx, al ; 0f b6 d8 ; 0xf9b53
+ movzx ax, ch ; 0f b6 c5 ; 0xf9b56
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf9b59
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf9b5c
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf9b60
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b63
+ call 0ab22h ; e8 b9 0f ; 0xf9b66
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf9b69
+ mov byte [es:di], al ; 26 88 05 ; 0xf9b6c
+ mov al, cl ; 88 c8 ; 0xf9b6f virtio.c:542
+ add AL, strict byte 008h ; 04 08 ; 0xf9b71
+ movzx bx, al ; 0f b6 d8 ; 0xf9b73
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b76
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9b79
+ call 0ab68h ; e8 e9 0f ; 0xf9b7c
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf9b7f
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf9b82
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf9b86
+ mov al, cl ; 88 c8 ; 0xf9b8a virtio.c:543
+ add AL, strict byte 00ch ; 04 0c ; 0xf9b8c
+ movzx bx, al ; 0f b6 d8 ; 0xf9b8e
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b91
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9b94
+ call 0ab68h ; e8 ce 0f ; 0xf9b97
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf9b9a
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf9b9d
+ mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf9ba1
+ cmp byte [bp-008h], 002h ; 80 7e f8 02 ; 0xf9ba5 virtio.c:544
+ jne short 09bd2h ; 75 27 ; 0xf9ba9
+ mov al, cl ; 88 c8 ; 0xf9bab virtio.c:546
+ add AL, strict byte 010h ; 04 10 ; 0xf9bad
+ movzx bx, al ; 0f b6 d8 ; 0xf9baf
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9bb2
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9bb5
+ call 0ab68h ; e8 ad 0f ; 0xf9bb8
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9bbb
+ mov word [es:si+0008eh], ax ; 26 89 84 8e 00 ; 0xf9bbe
+ mov word [es:si+00090h], dx ; 26 89 94 90 00 ; 0xf9bc3
+ jmp short 09bd2h ; eb 08 ; 0xf9bc8 virtio.c:549
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9bca virtio.c:552
+ mov byte [es:si+0008ch], cl ; 26 88 8c 8c 00 ; 0xf9bcd
+ mov al, cl ; 88 c8 ; 0xf9bd2 virtio.c:561
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9bd4
+ movzx bx, al ; 0f b6 d8 ; 0xf9bd6
+ movzx dx, ch ; 0f b6 d5 ; 0xf9bd9
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf9bdc
+ call 0ab22h ; e8 3f 0f ; 0xf9be0
+ mov cl, al ; 88 c1 ; 0xf9be3
+ jmp near 09adeh ; e9 f6 fe ; 0xf9be5 virtio.c:562
+ xor ch, ch ; 30 ed ; 0xf9be8 virtio.c:566
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9bea
+ mov ax, si ; 89 f0 ; 0xf9bed
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9bef
+ call 09657h ; e8 62 fa ; 0xf9bf2
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf9bf5 virtio.c:569
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9bf8
+ mov ax, si ; 89 f0 ; 0xf9bfb
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9bfd
+ call 09657h ; e8 54 fa ; 0xf9c00
+ mov byte [bp-00ah], 003h ; c6 46 f6 03 ; 0xf9c03 virtio.c:571
+ mov cx, strict word 00003h ; b9 03 00 ; 0xf9c07 virtio.c:572
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9c0a
+ mov ax, si ; 89 f0 ; 0xf9c0d
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c0f
+ call 09657h ; e8 42 fa ; 0xf9c12
+ xor bx, bx ; 31 db ; 0xf9c15 virtio.c:581
+ mov ax, si ; 89 f0 ; 0xf9c17
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c19
+ call 09723h ; e8 04 fb ; 0xf9c1c
+ test dx, dx ; 85 d2 ; 0xf9c1f
+ jne short 09c28h ; 75 05 ; 0xf9c21
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9c23
+ jc short 09c64h ; 72 3c ; 0xf9c26
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9c28
+ mov ax, si ; 89 f0 ; 0xf9c2b
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c2d
+ call 09723h ; e8 f0 fa ; 0xf9c30
+ test dx, dx ; 85 d2 ; 0xf9c33
+ jne short 09c3ch ; 75 05 ; 0xf9c35
+ cmp ax, strict word 00010h ; 3d 10 00 ; 0xf9c37
+ jc short 09c64h ; 72 28 ; 0xf9c3a
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9c3c
+ mov ax, si ; 89 f0 ; 0xf9c3f
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c41
+ call 09723h ; e8 dc fa ; 0xf9c44
+ test dx, dx ; 85 d2 ; 0xf9c47
+ jne short 09c50h ; 75 05 ; 0xf9c49
+ cmp ax, strict word 00020h ; 3d 20 00 ; 0xf9c4b
+ jc short 09c64h ; 72 14 ; 0xf9c4e
+ mov bx, strict word 00008h ; bb 08 00 ; 0xf9c50
+ mov ax, si ; 89 f0 ; 0xf9c53
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c55
+ call 09723h ; e8 c8 fa ; 0xf9c58
+ test dx, dx ; 85 d2 ; 0xf9c5b
+ jne short 09c6ah ; 75 0b ; 0xf9c5d
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9c5f
+ jnc short 09c6ah ; 73 06 ; 0xf9c62
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9c64 virtio.c:587
+ jmp near 09dd3h ; e9 69 01 ; 0xf9c67
+ push dword 000000001h ; 66 6a 01 ; 0xf9c6a virtio.c:590
+ mov bx, strict word 0000ch ; bb 0c 00 ; 0xf9c6d
+ mov ax, si ; 89 f0 ; 0xf9c70
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c72
+ call 096ech ; e8 74 fa ; 0xf9c75
+ or byte [bp-00ah], 008h ; 80 4e f6 08 ; 0xf9c78 virtio.c:593
+ movzx cx, byte [bp-00ah] ; 0f b6 4e f6 ; 0xf9c7c virtio.c:594
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9c80
+ mov ax, si ; 89 f0 ; 0xf9c83
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c85
+ call 09657h ; e8 cc f9 ; 0xf9c88
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9c8b virtio.c:597
+ mov ax, si ; 89 f0 ; 0xf9c8e
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c90
+ call 09626h ; e8 90 f9 ; 0xf9c93
+ test AL, strict byte 008h ; a8 08 ; 0xf9c96
+ je short 09c64h ; 74 ca ; 0xf9c98
+ xor cx, cx ; 31 c9 ; 0xf9c9a virtio.c:604
+ mov bx, strict word 00016h ; bb 16 00 ; 0xf9c9c
+ mov ax, si ; 89 f0 ; 0xf9c9f
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9ca1
+ call 096bbh ; e8 14 fa ; 0xf9ca4
+ xor cx, cx ; 31 c9 ; 0xf9ca7 virtio.c:605
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9ca9
+ mov ax, si ; 89 f0 ; 0xf9cac
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9cae
+ call 096bbh ; e8 07 fa ; 0xf9cb1
+ xor cx, cx ; 31 c9 ; 0xf9cb4 virtio.c:606
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9cb6
+ mov ax, si ; 89 f0 ; 0xf9cb9
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9cbb
+ call 096bbh ; e8 fa f9 ; 0xf9cbe
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf9cc1 virtio.c:608
+ mov bx, strict word 00016h ; bb 16 00 ; 0xf9cc4
+ mov ax, si ; 89 f0 ; 0xf9cc7
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9cc9
+ call 096bbh ; e8 ec f9 ; 0xf9ccc
+ xor cx, cx ; 31 c9 ; 0xf9ccf virtio.c:609
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9cd1
+ mov ax, si ; 89 f0 ; 0xf9cd4
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9cd6
+ call 096bbh ; e8 df f9 ; 0xf9cd9
+ xor cx, cx ; 31 c9 ; 0xf9cdc virtio.c:610
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9cde
+ mov ax, si ; 89 f0 ; 0xf9ce1
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9ce3
+ call 096bbh ; e8 d2 f9 ; 0xf9ce6
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9ce9 virtio.c:613
+ mov bx, strict word 00016h ; bb 16 00 ; 0xf9cec
+ mov ax, si ; 89 f0 ; 0xf9cef
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9cf1
+ call 096bbh ; e8 c4 f9 ; 0xf9cf4
+ mov cx, strict word 00003h ; b9 03 00 ; 0xf9cf7 virtio.c:614
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9cfa
+ mov ax, si ; 89 f0 ; 0xf9cfd
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9cff
+ call 096bbh ; e8 b6 f9 ; 0xf9d02
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf9d05 virtio.c:615
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9d08
+ mov ax, si ; 89 f0 ; 0xf9d0b
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d0d
+ call 096bbh ; e8 a8 f9 ; 0xf9d10
+ mov ax, si ; 89 f0 ; 0xf9d13 virtio.c:618
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d15
+ call 097f3h ; e8 d8 fa ; 0xf9d18
+ push dx ; 52 ; 0xf9d1b
+ push ax ; 50 ; 0xf9d1c
+ mov bx, strict word 00020h ; bb 20 00 ; 0xf9d1d
+ mov ax, si ; 89 f0 ; 0xf9d20
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d22
+ call 096ech ; e8 c4 f9 ; 0xf9d25
+ push dword 000000000h ; 66 6a 00 ; 0xf9d28 virtio.c:619
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf9d2b
+ mov ax, si ; 89 f0 ; 0xf9d2e
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d30
+ call 096ech ; e8 b6 f9 ; 0xf9d33
+ lea ax, [si+030h] ; 8d 44 30 ; 0xf9d36 virtio.c:621
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d39
+ call 097f3h ; e8 b4 fa ; 0xf9d3c
+ push dx ; 52 ; 0xf9d3f
+ push ax ; 50 ; 0xf9d40
+ mov bx, strict word 00028h ; bb 28 00 ; 0xf9d41
+ mov ax, si ; 89 f0 ; 0xf9d44
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d46
+ call 096ech ; e8 a0 f9 ; 0xf9d49
+ push dword 000000000h ; 66 6a 00 ; 0xf9d4c virtio.c:622
+ mov bx, strict word 0002ch ; bb 2c 00 ; 0xf9d4f
+ mov ax, si ; 89 f0 ; 0xf9d52
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d54
+ call 096ech ; e8 92 f9 ; 0xf9d57
+ lea ax, [si+03ch] ; 8d 44 3c ; 0xf9d5a virtio.c:624
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d5d
+ call 097f3h ; e8 90 fa ; 0xf9d60
+ push dx ; 52 ; 0xf9d63
+ push ax ; 50 ; 0xf9d64
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf9d65
+ mov ax, si ; 89 f0 ; 0xf9d68
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d6a
+ call 096ech ; e8 7c f9 ; 0xf9d6d
+ push dword 000000000h ; 66 6a 00 ; 0xf9d70 virtio.c:625
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf9d73
+ mov ax, si ; 89 f0 ; 0xf9d76
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d78
+ call 096ech ; e8 6e f9 ; 0xf9d7b
+ push dword 000000010h ; 66 6a 10 ; 0xf9d7e virtio.c:627
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9d81
+ mov ax, si ; 89 f0 ; 0xf9d84
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d86
+ call 09754h ; e8 c8 f9 ; 0xf9d89
+ push dword 000000020h ; 66 6a 20 ; 0xf9d8c virtio.c:628
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9d8f
+ mov ax, si ; 89 f0 ; 0xf9d92
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d94
+ call 09754h ; e8 ba f9 ; 0xf9d97
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xf9d9a virtio.c:631
+ mov ax, si ; 89 f0 ; 0xf9d9d
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d9f
+ call 0968ah ; e8 e5 f8 ; 0xf9da2
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9da5
+ mov bx, word [es:si+0008eh] ; 26 8b 9c 8e 00 ; 0xf9da8
+ mov cx, word [es:si+00090h] ; 26 8b 8c 90 00 ; 0xf9dad
+ xor dx, dx ; 31 d2 ; 0xf9db2
+ call 0ace0h ; e8 29 0f ; 0xf9db4
+ mov word [es:si+058h], ax ; 26 89 44 58 ; 0xf9db7
+ mov word [es:si+05ah], dx ; 26 89 54 5a ; 0xf9dbb
+ or byte [bp-00ah], 004h ; 80 4e f6 04 ; 0xf9dbf virtio.c:634
+ movzx cx, byte [bp-00ah] ; 0f b6 4e f6 ; 0xf9dc3 virtio.c:635
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9dc7
+ mov ax, si ; 89 f0 ; 0xf9dca
+ mov dx, es ; 8c c2 ; 0xf9dcc
+ call 09657h ; e8 86 f8 ; 0xf9dce
+ xor ax, ax ; 31 c0 ; 0xf9dd1 virtio.c:637
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9dd3 virtio.c:638
+ pop di ; 5f ; 0xf9dd6
+ pop si ; 5e ; 0xf9dd7
+ pop bp ; 5d ; 0xf9dd8
+ retn 00002h ; c2 02 00 ; 0xf9dd9
+ ; disGetNextSymbol 0xf9ddc LB 0x1040 -> off=0x0 cb=00000000000000d5 uValue=00000000000f87dc 'virtio_scsi_init'
+virtio_scsi_init: ; 0xf9ddc LB 0xd5
+ push bp ; 55 ; 0xf9ddc virtio.c:643
+ mov bp, sp ; 89 e5 ; 0xf9ddd
+ push si ; 56 ; 0xf9ddf
+ push di ; 57 ; 0xf9de0
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf9de1
+ mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf9de4
+ mov byte [bp-006h], cl ; 88 4e fa ; 0xf9de7
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9dea virtio.c:645
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9ded
+ mov byte [bp-008h], 0ffh ; c6 46 f8 ff ; 0xf9df0 virtio.c:647
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9df4 virtio.c:648
+ movzx dx, cl ; 0f b6 d1 ; 0xf9df8 virtio.c:651
+ movzx ax, bl ; 0f b6 c3 ; 0xf9dfb
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf9dfe
+ call 0ab22h ; e8 1e 0d ; 0xf9e01
+ mov ch, al ; 88 c5 ; 0xf9e04
+ test ch, ch ; 84 ed ; 0xf9e06 virtio.c:653
+ je short 09e72h ; 74 68 ; 0xf9e08
+ movzx bx, ch ; 0f b6 dd ; 0xf9e0a virtio.c:655
+ movzx si, byte [bp-006h] ; 0f b6 76 fa ; 0xf9e0d
+ movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf9e11
+ mov dx, si ; 89 f2 ; 0xf9e15
+ mov ax, di ; 89 f8 ; 0xf9e17
+ call 0ab22h ; e8 06 0d ; 0xf9e19
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9e1c
+ mov al, ch ; 88 e8 ; 0xf9e1f virtio.c:656
+ add AL, strict byte 002h ; 04 02 ; 0xf9e21
+ movzx bx, al ; 0f b6 d8 ; 0xf9e23
+ mov dx, si ; 89 f2 ; 0xf9e26
+ mov ax, di ; 89 f8 ; 0xf9e28
+ call 0ab22h ; e8 f5 0c ; 0xf9e2a
+ cmp byte [bp-010h], 009h ; 80 7e f0 09 ; 0xf9e2d virtio.c:660
+ jne short 09e61h ; 75 2e ; 0xf9e31
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf9e33
+ jc short 09e61h ; 72 2a ; 0xf9e35
+ mov al, ch ; 88 e8 ; 0xf9e37 virtio.c:664
+ add AL, strict byte 003h ; 04 03 ; 0xf9e39
+ movzx bx, al ; 0f b6 d8 ; 0xf9e3b
+ mov dx, si ; 89 f2 ; 0xf9e3e
+ mov ax, di ; 89 f8 ; 0xf9e40
+ call 0ab22h ; e8 dd 0c ; 0xf9e42
+ cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9e45 virtio.c:666
+ jne short 09e4eh ; 75 03 ; 0xf9e49
+ mov byte [bp-008h], ch ; 88 6e f8 ; 0xf9e4b virtio.c:667
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf9e4e virtio.c:670
+ jc short 09e61h ; 72 0f ; 0xf9e50
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf9e52
+ jnbe short 09e61h ; 77 0b ; 0xf9e54
+ mov cl, al ; 88 c1 ; 0xf9e56 virtio.c:677
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf9e58
+ mov AL, strict byte 001h ; b0 01 ; 0xf9e5a
+ sal al, CL ; d2 e0 ; 0xf9e5c
+ or byte [bp-00ch], al ; 08 46 f4 ; 0xf9e5e
+ mov al, ch ; 88 e8 ; 0xf9e61 virtio.c:684
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9e63
+ movzx bx, al ; 0f b6 d8 ; 0xf9e65
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf9e68
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf9e6c
+ jmp short 09e01h ; eb 8f ; 0xf9e70 virtio.c:685
+ cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9e72 virtio.c:688
+ je short 09ea7h ; 74 2f ; 0xf9e76
+ cmp byte [bp-00ch], 01fh ; 80 7e f4 1f ; 0xf9e78
+ jne short 09ea7h ; 75 29 ; 0xf9e7c
+ movzx di, byte [bp-006h] ; 0f b6 7e fa ; 0xf9e7e virtio.c:694
+ movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf9e82
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf9e86
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf9e89
+ mov dx, di ; 89 fa ; 0xf9e8c
+ mov ax, si ; 89 f0 ; 0xf9e8e
+ call 0ab8fh ; e8 fc 0c ; 0xf9e90
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf9e93 virtio.c:695
+ push ax ; 50 ; 0xf9e97
+ mov cx, di ; 89 f9 ; 0xf9e98
+ mov bx, si ; 89 f3 ; 0xf9e9a
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf9e9c
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9e9f
+ call 09abdh ; e8 18 fc ; 0xf9ea2
+ jmp short 09eaah ; eb 03 ; 0xf9ea5
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9ea7 virtio.c:700
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9eaa virtio.c:701
+ pop di ; 5f ; 0xf9ead
+ pop si ; 5e ; 0xf9eae
+ pop bp ; 5d ; 0xf9eaf
+ retn ; c3 ; 0xf9eb0
+ ; disGetNextSymbol 0xf9eb1 LB 0xf6b -> off=0x0 cb=000000000000001e uValue=00000000000f88b1 'buslogic_addr_to_phys'
+buslogic_addr_to_phys: ; 0xf9eb1 LB 0x1e
+ push bx ; 53 ; 0xf9eb1 buslogic.c:122
+ push cx ; 51 ; 0xf9eb2
+ push bp ; 55 ; 0xf9eb3
+ mov bp, sp ; 89 e5 ; 0xf9eb4
+ mov bx, ax ; 89 c3 ; 0xf9eb6
+ mov ax, dx ; 89 d0 ; 0xf9eb8
+ xor dx, dx ; 31 d2 ; 0xf9eba buslogic.c:124
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9ebc
+ sal ax, 1 ; d1 e0 ; 0xf9ebf
+ rcl dx, 1 ; d1 d2 ; 0xf9ec1
+ loop 09ebfh ; e2 fa ; 0xf9ec3
+ xor cx, cx ; 31 c9 ; 0xf9ec5
+ add ax, bx ; 01 d8 ; 0xf9ec7
+ adc dx, cx ; 11 ca ; 0xf9ec9
+ pop bp ; 5d ; 0xf9ecb buslogic.c:125
+ pop cx ; 59 ; 0xf9ecc
+ pop bx ; 5b ; 0xf9ecd
+ retn ; c3 ; 0xf9ece
+ ; disGetNextSymbol 0xf9ecf LB 0xf4d -> off=0x0 cb=0000000000000084 uValue=00000000000f88cf 'buslogic_cmd'
+buslogic_cmd: ; 0xf9ecf LB 0x84
+ push bp ; 55 ; 0xf9ecf buslogic.c:127
+ mov bp, sp ; 89 e5 ; 0xf9ed0
+ push cx ; 51 ; 0xf9ed2
+ push si ; 56 ; 0xf9ed3
+ push di ; 57 ; 0xf9ed4
+ mov si, ax ; 89 c6 ; 0xf9ed5
+ mov cx, dx ; 89 d1 ; 0xf9ed7
+ mov es, dx ; 8e c2 ; 0xf9ed9 buslogic.c:132
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9edb
+ inc dx ; 42 ; 0xf9edf
+ mov al, bl ; 88 d8 ; 0xf9ee0
+ out DX, AL ; ee ; 0xf9ee2
+ xor bx, bx ; 31 db ; 0xf9ee3 buslogic.c:133
+ cmp bx, word [bp+008h] ; 3b 5e 08 ; 0xf9ee5
+ jnc short 09f03h ; 73 19 ; 0xf9ee8
+ mov di, word [bp+004h] ; 8b 7e 04 ; 0xf9eea buslogic.c:134
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9eed
+ inc word [bp+004h] ; ff 46 04 ; 0xf9ef0
+ mov es, cx ; 8e c1 ; 0xf9ef3
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9ef5
+ inc dx ; 42 ; 0xf9ef9
+ mov es, ax ; 8e c0 ; 0xf9efa
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf9efc
+ out DX, AL ; ee ; 0xf9eff
+ inc bx ; 43 ; 0xf9f00
+ jmp short 09ee5h ; eb e2 ; 0xf9f01
+ cmp word [bp+00eh], strict byte 00000h ; 83 7e 0e 00 ; 0xf9f03 buslogic.c:137
+ je short 09f33h ; 74 2a ; 0xf9f07
+ mov es, cx ; 8e c1 ; 0xf9f09 buslogic.c:139
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9f0b
+ in AL, DX ; ec ; 0xf9f0f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9f10
+ test AL, strict byte 004h ; a8 04 ; 0xf9f12
+ je short 09f09h ; 74 f3 ; 0xf9f14
+ xor bx, bx ; 31 db ; 0xf9f16 buslogic.c:140
+ cmp bx, word [bp+00eh] ; 3b 5e 0e ; 0xf9f18
+ jnc short 09f33h ; 73 16 ; 0xf9f1b
+ mov es, cx ; 8e c1 ; 0xf9f1d buslogic.c:141
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9f1f
+ inc dx ; 42 ; 0xf9f23
+ in AL, DX ; ec ; 0xf9f24
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9f25
+ les di, [bp+00ah] ; c4 7e 0a ; 0xf9f27
+ mov byte [es:di], al ; 26 88 05 ; 0xf9f2a
+ inc word [bp+00ah] ; ff 46 0a ; 0xf9f2d
+ inc bx ; 43 ; 0xf9f30
+ jmp short 09f18h ; eb e5 ; 0xf9f31
+ mov es, cx ; 8e c1 ; 0xf9f33 buslogic.c:144
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9f35
+ in AL, DX ; ec ; 0xf9f39
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9f3a
+ test AL, strict byte 010h ; a8 10 ; 0xf9f3c
+ je short 09f33h ; 74 f3 ; 0xf9f3e
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9f40 buslogic.c:147
+ mov AL, strict byte 020h ; b0 20 ; 0xf9f44
+ out DX, AL ; ee ; 0xf9f46
+ xor ax, ax ; 31 c0 ; 0xf9f47 buslogic.c:150
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9f49
+ pop di ; 5f ; 0xf9f4c
+ pop si ; 5e ; 0xf9f4d
+ pop cx ; 59 ; 0xf9f4e
+ pop bp ; 5d ; 0xf9f4f
+ retn 0000ch ; c2 0c 00 ; 0xf9f50
+ ; disGetNextSymbol 0xf9f53 LB 0xec9 -> off=0x0 cb=00000000000000b4 uValue=00000000000f8953 'buslogic_scsi_cmd_data_out'
+buslogic_scsi_cmd_data_out: ; 0xf9f53 LB 0xb4
+ push bp ; 55 ; 0xf9f53 buslogic.c:152
+ mov bp, sp ; 89 e5 ; 0xf9f54
+ push cx ; 51 ; 0xf9f56
+ push si ; 56 ; 0xf9f57
+ push di ; 57 ; 0xf9f58
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9f59
+ mov si, ax ; 89 c6 ; 0xf9f5c
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9f5e
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9f61 buslogic.c:155
+ mov di, dx ; 89 d7 ; 0xf9f64
+ mov cx, strict word 0001ch ; b9 1c 00 ; 0xf9f66 buslogic.c:160
+ xor bx, bx ; 31 db ; 0xf9f69
+ call 0ad80h ; e8 12 0e ; 0xf9f6b
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9f6e buslogic.c:161
+ xor bx, bx ; 31 db ; 0xf9f71
+ mov dx, ss ; 8c d2 ; 0xf9f73
+ lea ax, [bp-00eh] ; 8d 46 f2 ; 0xf9f75
+ call 0ad80h ; e8 05 0e ; 0xf9f78
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9f7b buslogic.c:163
+ mov es, di ; 8e c7 ; 0xf9f7e
+ mov word [es:si], ax ; 26 89 04 ; 0xf9f80
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9f83
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf9f86
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9f8a buslogic.c:164
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9f8d
+ call 09eb1h ; e8 1e ff ; 0xf9f90
+ mov es, di ; 8e c7 ; 0xf9f93
+ mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf9f95
+ mov word [es:si+006h], dx ; 26 89 54 06 ; 0xf9f99
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9f9d buslogic.c:165
+ mov byte [es:si+008h], al ; 26 88 44 08 ; 0xf9fa0
+ mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xf9fa4 buslogic.c:166
+ and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xf9fa9 buslogic.c:167
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9fae buslogic.c:168
+ mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf9fb1
+ xor si, si ; 31 f6 ; 0xf9fb5 buslogic.c:170
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf9fb7
+ cmp si, ax ; 39 c6 ; 0xf9fbb
+ jnl short 09fd7h ; 7d 18 ; 0xf9fbd
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf9fbf buslogic.c:171
+ add bx, si ; 01 f3 ; 0xf9fc2
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9fc4
+ add dx, si ; 01 f2 ; 0xf9fc7
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf9fc9
+ mov es, di ; 8e c7 ; 0xf9fcc
+ mov bx, dx ; 89 d3 ; 0xf9fce
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf9fd0
+ inc si ; 46 ; 0xf9fd4
+ jmp short 09fb7h ; eb e0 ; 0xf9fd5
+ push strict byte 00004h ; 6a 04 ; 0xf9fd7 buslogic.c:173
+ lea dx, [bp-00eh] ; 8d 56 f2 ; 0xf9fd9
+ push SS ; 16 ; 0xf9fdc
+ push dx ; 52 ; 0xf9fdd
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf9fde
+ add ax, strict word 0000ch ; 05 0c 00 ; 0xf9fe2
+ push ax ; 50 ; 0xf9fe5
+ push di ; 57 ; 0xf9fe6
+ push word [bp-00ah] ; ff 76 f6 ; 0xf9fe7
+ mov bx, 00083h ; bb 83 00 ; 0xf9fea
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9fed
+ mov dx, di ; 89 fa ; 0xf9ff0
+ call 09ecfh ; e8 da fe ; 0xf9ff2
+ test ax, ax ; 85 c0 ; 0xf9ff5 buslogic.c:175
+ jne short 09ffdh ; 75 04 ; 0xf9ff7
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf9ff9 buslogic.c:176
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9ffd buslogic.c:179
+ pop di ; 5f ; 0xfa000
+ pop si ; 5e ; 0xfa001
+ pop cx ; 59 ; 0xfa002
+ pop bp ; 5d ; 0xfa003
+ retn 0000eh ; c2 0e 00 ; 0xfa004
+ ; disGetNextSymbol 0xfa007 LB 0xe15 -> off=0x0 cb=00000000000000b4 uValue=00000000000f8a07 'buslogic_scsi_cmd_data_in'
+buslogic_scsi_cmd_data_in: ; 0xfa007 LB 0xb4
+ push bp ; 55 ; 0xfa007 buslogic.c:181
+ mov bp, sp ; 89 e5 ; 0xfa008
+ push cx ; 51 ; 0xfa00a
+ push si ; 56 ; 0xfa00b
+ push di ; 57 ; 0xfa00c
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xfa00d
+ mov si, ax ; 89 c6 ; 0xfa010
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa012
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa015 buslogic.c:184
+ mov di, dx ; 89 d7 ; 0xfa018
+ mov cx, strict word 0001ch ; b9 1c 00 ; 0xfa01a buslogic.c:191
+ xor bx, bx ; 31 db ; 0xfa01d
+ call 0ad80h ; e8 5e 0d ; 0xfa01f
+ mov cx, strict word 00004h ; b9 04 00 ; 0xfa022 buslogic.c:192
+ xor bx, bx ; 31 db ; 0xfa025
+ mov dx, ss ; 8c d2 ; 0xfa027
+ lea ax, [bp-00eh] ; 8d 46 f2 ; 0xfa029
+ call 0ad80h ; e8 51 0d ; 0xfa02c
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa02f buslogic.c:194
+ mov es, di ; 8e c7 ; 0xfa032
+ mov word [es:si], ax ; 26 89 04 ; 0xfa034
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa037
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xfa03a
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa03e buslogic.c:195
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa041
+ call 09eb1h ; e8 6a fe ; 0xfa044
+ mov es, di ; 8e c7 ; 0xfa047
+ mov word [es:si+004h], ax ; 26 89 44 04 ; 0xfa049
+ mov word [es:si+006h], dx ; 26 89 54 06 ; 0xfa04d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa051 buslogic.c:196
+ mov byte [es:si+008h], al ; 26 88 44 08 ; 0xfa054
+ mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xfa058 buslogic.c:197
+ and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xfa05d buslogic.c:198
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa062 buslogic.c:199
+ mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xfa065
+ xor si, si ; 31 f6 ; 0xfa069 buslogic.c:201
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xfa06b
+ cmp si, ax ; 39 c6 ; 0xfa06f
+ jnl short 0a08bh ; 7d 18 ; 0xfa071
+ les bx, [bp+004h] ; c4 5e 04 ; 0xfa073 buslogic.c:202
+ add bx, si ; 01 f3 ; 0xfa076
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfa078
+ add dx, si ; 01 f2 ; 0xfa07b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xfa07d
+ mov es, di ; 8e c7 ; 0xfa080
+ mov bx, dx ; 89 d3 ; 0xfa082
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xfa084
+ inc si ; 46 ; 0xfa088
+ jmp short 0a06bh ; eb e0 ; 0xfa089
+ push strict byte 00004h ; 6a 04 ; 0xfa08b buslogic.c:204
+ lea dx, [bp-00eh] ; 8d 56 f2 ; 0xfa08d
+ push SS ; 16 ; 0xfa090
+ push dx ; 52 ; 0xfa091
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xfa092
+ add ax, strict word 0000ch ; 05 0c 00 ; 0xfa096
+ push ax ; 50 ; 0xfa099
+ push di ; 57 ; 0xfa09a
+ push word [bp-00ah] ; ff 76 f6 ; 0xfa09b
+ mov bx, 00083h ; bb 83 00 ; 0xfa09e
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa0a1
+ mov dx, di ; 89 fa ; 0xfa0a4
+ call 09ecfh ; e8 26 fe ; 0xfa0a6
+ test ax, ax ; 85 c0 ; 0xfa0a9 buslogic.c:206
+ jne short 0a0b1h ; 75 04 ; 0xfa0ab
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xfa0ad buslogic.c:207
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa0b1 buslogic.c:210
+ pop di ; 5f ; 0xfa0b4
+ pop si ; 5e ; 0xfa0b5
+ pop cx ; 59 ; 0xfa0b6
+ pop bp ; 5d ; 0xfa0b7
+ retn 0000eh ; c2 0e 00 ; 0xfa0b8
+ ; disGetNextSymbol 0xfa0bb LB 0xd61 -> off=0x0 cb=0000000000000022 uValue=00000000000f8abb 'buslogic_scsi_hba_init'
+buslogic_scsi_hba_init: ; 0xfa0bb LB 0x22
+ push bp ; 55 ; 0xfa0bb buslogic.c:215
+ mov bp, sp ; 89 e5 ; 0xfa0bc
+ push bx ; 53 ; 0xfa0be
+ mov bx, ax ; 89 c3 ; 0xfa0bf
+ mov es, dx ; 8e c2 ; 0xfa0c1
+ mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xfa0c3 buslogic.c:218
+ mov AL, strict byte 080h ; b0 80 ; 0xfa0c7
+ out DX, AL ; ee ; 0xfa0c9
+ mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xfa0ca buslogic.c:219
+ in AL, DX ; ec ; 0xfa0ce
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa0cf
+ test AL, strict byte 010h ; a8 10 ; 0xfa0d1
+ je short 0a0cah ; 74 f5 ; 0xfa0d3
+ xor ax, ax ; 31 c0 ; 0xfa0d5 buslogic.c:222
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfa0d7
+ pop bx ; 5b ; 0xfa0da
+ pop bp ; 5d ; 0xfa0db
+ retn ; c3 ; 0xfa0dc
+ ; disGetNextSymbol 0xfa0dd LB 0xd3f -> off=0x0 cb=0000000000000051 uValue=00000000000f8add 'buslogic_scsi_init'
+buslogic_scsi_init: ; 0xfa0dd LB 0x51
+ push bp ; 55 ; 0xfa0dd buslogic.c:227
+ mov bp, sp ; 89 e5 ; 0xfa0de
+ push si ; 56 ; 0xfa0e0
+ push di ; 57 ; 0xfa0e1
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa0e2
+ mov si, ax ; 89 c6 ; 0xfa0e5
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xfa0e7
+ movzx ax, cl ; 0f b6 c1 ; 0xfa0ea buslogic.c:234
+ mov word [bp-006h], ax ; 89 46 fa ; 0xfa0ed
+ movzx di, bl ; 0f b6 fb ; 0xfa0f0
+ mov bx, strict word 00010h ; bb 10 00 ; 0xfa0f3
+ mov dx, ax ; 89 c2 ; 0xfa0f6
+ mov ax, di ; 89 f8 ; 0xfa0f8
+ call 0ab68h ; e8 6b 0a ; 0xfa0fa
+ test AL, strict byte 001h ; a8 01 ; 0xfa0fd buslogic.c:238
+ je short 0a124h ; 74 23 ; 0xfa0ff
+ and AL, strict byte 0f0h ; 24 f0 ; 0xfa101 buslogic.c:240
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa103
+ mov cx, strict word 00007h ; b9 07 00 ; 0xfa106 buslogic.c:243
+ mov bx, strict word 00004h ; bb 04 00 ; 0xfa109
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa10c
+ mov ax, di ; 89 f8 ; 0xfa10f
+ call 0ab8fh ; e8 7b 0a ; 0xfa111
+ les ax, [bp-00ah] ; c4 46 f6 ; 0xfa114 buslogic.c:246
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xfa117
+ mov ax, si ; 89 f0 ; 0xfa11b buslogic.c:247
+ mov dx, es ; 8c c2 ; 0xfa11d
+ call 0a0bbh ; e8 99 ff ; 0xfa11f
+ jmp short 0a127h ; eb 03 ; 0xfa122
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa124 buslogic.c:252
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa127 buslogic.c:253
+ pop di ; 5f ; 0xfa12a
+ pop si ; 5e ; 0xfa12b
+ pop bp ; 5d ; 0xfa12c
+ retn ; c3 ; 0xfa12d
+ ; disGetNextSymbol 0xfa12e LB 0xcee -> off=0x0 cb=0000000000000024 uValue=00000000000f8b2e 'btaha_scsi_init'
+btaha_scsi_init: ; 0xfa12e LB 0x24
+ push bp ; 55 ; 0xfa12e buslogic.c:259
+ mov bp, sp ; 89 e5 ; 0xfa12f
+ push si ; 56 ; 0xfa131
+ mov si, ax ; 89 c6 ; 0xfa132
+ mov es, dx ; 8e c2 ; 0xfa134
+ movzx dx, bl ; 0f b6 d3 ; 0xfa136 buslogic.c:263
+ sal dx, 008h ; c1 e2 08 ; 0xfa139
+ movzx ax, cl ; 0f b6 c1 ; 0xfa13c
+ or dx, ax ; 09 c2 ; 0xfa13f
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xfa141
+ mov ax, si ; 89 f0 ; 0xfa145 buslogic.c:266
+ mov dx, es ; 8c c2 ; 0xfa147
+ call 0a0bbh ; e8 6f ff ; 0xfa149
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfa14c buslogic.c:267
+ pop si ; 5e ; 0xfa14f
+ pop bp ; 5d ; 0xfa150
+ retn ; c3 ; 0xfa151
+ ; disGetNextSymbol 0xfa152 LB 0xcca -> off=0x0 cb=0000000000000055 uValue=00000000000f8b52 'btaha_scsi_detect'
+btaha_scsi_detect: ; 0xfa152 LB 0x55
+ push bp ; 55 ; 0xfa152 buslogic.c:272
+ mov bp, sp ; 89 e5 ; 0xfa153
+ push bx ; 53 ; 0xfa155
+ push cx ; 51 ; 0xfa156
+ push dx ; 52 ; 0xfa157
+ push si ; 56 ; 0xfa158
+ push di ; 57 ; 0xfa159
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa15a
+ push SS ; 16 ; 0xfa15d buslogic.c:274
+ pop ES ; 07 ; 0xfa15e
+ lea di, [bp-010h] ; 8d 7e f0 ; 0xfa15f
+ mov si, 000d6h ; be d6 00 ; 0xfa162
+ movsw ; a5 ; 0xfa165
+ movsw ; a5 ; 0xfa166
+ movsw ; a5 ; 0xfa167
+ xor cx, cx ; 31 c9 ; 0xfa168 buslogic.c:279
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xfa16a
+ test bx, bx ; 85 db ; 0xfa16d
+ je short 0a192h ; 74 21 ; 0xfa16f
+ mov dx, bx ; 89 da ; 0xfa171 buslogic.c:284
+ in AL, DX ; ec ; 0xfa173
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa174
+ cmp AL, strict byte 030h ; 3c 30 ; 0xfa176 buslogic.c:285
+ je short 0a17eh ; 74 04 ; 0xfa178
+ cmp AL, strict byte 010h ; 3c 10 ; 0xfa17a
+ jne short 0a188h ; 75 0a ; 0xfa17c
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xfa17e buslogic.c:303
+ in AL, DX ; ec ; 0xfa181
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa182
+ test AL, strict byte 040h ; a8 40 ; 0xfa184 buslogic.c:304
+ jne short 0a192h ; 75 0a ; 0xfa186
+ inc cx ; 41 ; 0xfa188 buslogic.c:309
+ mov si, cx ; 89 ce ; 0xfa189
+ add si, cx ; 01 ce ; 0xfa18b
+ mov bx, word [bp+si-010h] ; 8b 5a f0 ; 0xfa18d
+ jmp short 0a16dh ; eb db ; 0xfa190
+ test bx, bx ; 85 db ; 0xfa192 buslogic.c:311
+ je short 0a19ah ; 74 04 ; 0xfa194
+ mov ax, bx ; 89 d8 ; 0xfa196
+ jmp short 0a19dh ; eb 03 ; 0xfa198
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa19a
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xfa19d buslogic.c:312
+ pop di ; 5f ; 0xfa1a0
+ pop si ; 5e ; 0xfa1a1
+ pop dx ; 5a ; 0xfa1a2
+ pop cx ; 59 ; 0xfa1a3
+ pop bx ; 5b ; 0xfa1a4
+ pop bp ; 5d ; 0xfa1a5
+ retn ; c3 ; 0xfa1a6
+ ; disGetNextSymbol 0xfa1a7 LB 0xc75 -> off=0x0 cb=000000000000001e uValue=00000000000f8ba7 'lsilogic_addr_to_phys'
+lsilogic_addr_to_phys: ; 0xfa1a7 LB 0x1e
+ push bx ; 53 ; 0xfa1a7 lsilogic.c:331
+ push cx ; 51 ; 0xfa1a8
+ push bp ; 55 ; 0xfa1a9
+ mov bp, sp ; 89 e5 ; 0xfa1aa
+ mov bx, ax ; 89 c3 ; 0xfa1ac
+ mov ax, dx ; 89 d0 ; 0xfa1ae
+ xor dx, dx ; 31 d2 ; 0xfa1b0 lsilogic.c:333
+ mov cx, strict word 00004h ; b9 04 00 ; 0xfa1b2
+ sal ax, 1 ; d1 e0 ; 0xfa1b5
+ rcl dx, 1 ; d1 d2 ; 0xfa1b7
+ loop 0a1b5h ; e2 fa ; 0xfa1b9
+ xor cx, cx ; 31 c9 ; 0xfa1bb
+ add ax, bx ; 01 d8 ; 0xfa1bd
+ adc dx, cx ; 11 ca ; 0xfa1bf
+ pop bp ; 5d ; 0xfa1c1 lsilogic.c:334
+ pop cx ; 59 ; 0xfa1c2
+ pop bx ; 5b ; 0xfa1c3
+ retn ; c3 ; 0xfa1c4
+ ; disGetNextSymbol 0xfa1c5 LB 0xc57 -> off=0x0 cb=00000000000000f6 uValue=00000000000f8bc5 'lsilogic_cmd'
+lsilogic_cmd: ; 0xfa1c5 LB 0xf6
+ push bp ; 55 ; 0xfa1c5 lsilogic.c:336
+ mov bp, sp ; 89 e5 ; 0xfa1c6
+ push si ; 56 ; 0xfa1c8
+ push di ; 57 ; 0xfa1c9
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xfa1ca
+ mov si, ax ; 89 c6 ; 0xfa1cd
+ mov word [bp-006h], dx ; 89 56 fa ; 0xfa1cf
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xfa1d2 lsilogic.c:340
+ mov word [bp-014h], cx ; 89 4e ec ; 0xfa1d5
+ mov [bp-00ch], ds ; 8c 5e f4 ; 0xfa1d8 lsilogic.c:341
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xfa1db
+ mov word [bp-012h], ax ; 89 46 ee ; 0xfa1de
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xfa1e1 lsilogic.c:342
+ shr ax, 002h ; c1 e8 02 ; 0xfa1e4
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xfa1e7
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xfa1ea
+ mov dx, word [bp+00ah] ; 8b 56 0a ; 0xfa1ef lsilogic.c:343
+ shr dx, 1 ; d1 ea ; 0xfa1f2
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xfa1f4
+ or ah, 042h ; 80 cc 42 ; 0xfa1f7 lsilogic.c:344
+ mov cx, ax ; 89 c1 ; 0xfa1fa
+ test byte [bp+004h], 003h ; f6 46 04 03 ; 0xfa1fc lsilogic.c:346
+ jne short 0a208h ; 75 06 ; 0xfa200
+ test byte [bp+00ah], 001h ; f6 46 0a 01 ; 0xfa202
+ je short 0a20eh ; 74 06 ; 0xfa206
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa208 lsilogic.c:348
+ jmp near 0a2b2h ; e9 a4 00 ; 0xfa20b
+ mov es, [bp-006h] ; 8e 46 fa ; 0xfa20e lsilogic.c:350
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa211
+ xor ax, ax ; 31 c0 ; 0xfa216
+ xchg cx, ax ; 91 ; 0xfa218
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa219
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa21d
+ out DX, eax ; 66 ef ; 0xfa21f
+ xor bx, bx ; 31 db ; 0xfa221 lsilogic.c:351
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xfa223
+ test ax, ax ; 85 c0 ; 0xfa226
+ jnbe short 0a231h ; 77 07 ; 0xfa228
+ jne short 0a257h ; 75 2b ; 0xfa22a
+ cmp bx, word [bp-00eh] ; 3b 5e f2 ; 0xfa22c
+ jnc short 0a257h ; 73 26 ; 0xfa22f
+ mov di, bx ; 89 df ; 0xfa231 lsilogic.c:352
+ sal di, 002h ; c1 e7 02 ; 0xfa233
+ mov es, [bp-014h] ; 8e 46 ec ; 0xfa236
+ add di, word [bp-00ah] ; 03 7e f6 ; 0xfa239
+ mov ax, word [es:di] ; 26 8b 05 ; 0xfa23c
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xfa23f
+ mov es, [bp-006h] ; 8e 46 fa ; 0xfa243
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa246
+ xchg cx, ax ; 91 ; 0xfa24b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa24c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa250
+ out DX, eax ; 66 ef ; 0xfa252
+ inc bx ; 43 ; 0xfa254
+ jmp short 0a223h ; eb cc ; 0xfa255
+ xor bx, bx ; 31 db ; 0xfa257 lsilogic.c:354
+ cmp bx, word [bp-010h] ; 3b 5e f0 ; 0xfa259
+ jnc short 0a2b0h ; 73 52 ; 0xfa25c
+ mov es, [bp-006h] ; 8e 46 fa ; 0xfa25e lsilogic.c:357
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa261
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xfa266
+ in eax, DX ; 66 ed ; 0xfa269
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa26b
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa26d
+ xchg dx, ax ; 92 ; 0xfa271
+ test AL, strict byte 001h ; a8 01 ; 0xfa272
+ je short 0a25eh ; 74 e8 ; 0xfa274
+ mov es, [bp-006h] ; 8e 46 fa ; 0xfa276 lsilogic.c:359
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa279
+ in eax, DX ; 66 ed ; 0xfa27e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa280
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa282
+ xchg dx, ax ; 92 ; 0xfa286
+ mov di, bx ; 89 df ; 0xfa287
+ add di, bx ; 01 df ; 0xfa289
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa28b
+ add di, word [bp-012h] ; 03 7e ee ; 0xfa28e
+ mov word [es:di], ax ; 26 89 05 ; 0xfa291
+ mov es, [bp-006h] ; 8e 46 fa ; 0xfa294 lsilogic.c:360
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa297
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xfa29c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa29f
+ xor cx, cx ; 31 c9 ; 0xfa2a2
+ xchg cx, ax ; 91 ; 0xfa2a4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa2a5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa2a9
+ out DX, eax ; 66 ef ; 0xfa2ab
+ inc bx ; 43 ; 0xfa2ad lsilogic.c:361
+ jmp short 0a259h ; eb a9 ; 0xfa2ae
+ xor ax, ax ; 31 c0 ; 0xfa2b0 lsilogic.c:363
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa2b2 lsilogic.c:364
+ pop di ; 5f ; 0xfa2b5
+ pop si ; 5e ; 0xfa2b6
+ pop bp ; 5d ; 0xfa2b7
+ retn 00008h ; c2 08 00 ; 0xfa2b8
+ ; disGetNextSymbol 0xfa2bb LB 0xb61 -> off=0x0 cb=00000000000000d7 uValue=00000000000f8cbb 'lsilogic_scsi_cmd_exec'
+lsilogic_scsi_cmd_exec: ; 0xfa2bb LB 0xd7
+ push bp ; 55 ; 0xfa2bb lsilogic.c:366
+ mov bp, sp ; 89 e5 ; 0xfa2bc
+ push bx ; 53 ; 0xfa2be
+ push cx ; 51 ; 0xfa2bf
+ push si ; 56 ; 0xfa2c0
+ push di ; 57 ; 0xfa2c1
+ push ax ; 50 ; 0xfa2c2
+ mov bx, ax ; 89 c3 ; 0xfa2c3
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa2c5
+ call 0a1a7h ; e8 dc fe ; 0xfa2c8 lsilogic.c:372
+ mov cx, dx ; 89 d1 ; 0xfa2cb
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa2cd
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa2d0
+ add dx, strict byte 00040h ; 83 c2 40 ; 0xfa2d5
+ xchg cx, ax ; 91 ; 0xfa2d8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa2d9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa2dd
+ out DX, eax ; 66 ef ; 0xfa2df
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa2e1 lsilogic.c:375
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa2e4
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xfa2e9
+ in eax, DX ; 66 ed ; 0xfa2ec
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa2ee
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa2f0
+ xchg dx, ax ; 92 ; 0xfa2f4
+ test AL, strict byte 008h ; a8 08 ; 0xfa2f5
+ je short 0a2e1h ; 74 e8 ; 0xfa2f7
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa2f9 lsilogic.c:377
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa2fc
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xfa301
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa304
+ xor cx, cx ; 31 c9 ; 0xfa307
+ xchg cx, ax ; 91 ; 0xfa309
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa30a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa30e
+ out DX, eax ; 66 ef ; 0xfa310
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa312 lsilogic.c:380
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa315
+ add dx, strict byte 00044h ; 83 c2 44 ; 0xfa31a
+ in eax, DX ; 66 ed ; 0xfa31d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa31f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa321
+ xchg dx, ax ; 92 ; 0xfa325
+ mov cx, dx ; 89 d1 ; 0xfa326
+ mov di, ax ; 89 c7 ; 0xfa328
+ mov si, dx ; 89 d6 ; 0xfa32a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa32c lsilogic.c:381
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa32f
+ add dx, strict byte 00044h ; 83 c2 44 ; 0xfa334
+ in eax, DX ; 66 ed ; 0xfa337
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa339
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa33b
+ xchg dx, ax ; 92 ; 0xfa33f
+ cmp dx, strict byte 0ffffh ; 83 fa ff ; 0xfa340 lsilogic.c:382
+ jne short 0a34ah ; 75 05 ; 0xfa343
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa345
+ je short 0a34fh ; 74 05 ; 0xfa348
+ mov ax, strict word 00005h ; b8 05 00 ; 0xfa34a lsilogic.c:383
+ jmp short 0a389h ; eb 3a ; 0xfa34d
+ test ch, 080h ; f6 c5 80 ; 0xfa34f lsilogic.c:384
+ je short 0a378h ; 74 24 ; 0xfa352
+ lea ax, [bx+038h] ; 8d 47 38 ; 0xfa354 lsilogic.c:392
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfa357
+ call 0a1a7h ; e8 4a fe ; 0xfa35a
+ mov cx, dx ; 89 d1 ; 0xfa35d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa35f
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa362
+ add dx, strict byte 00044h ; 83 c2 44 ; 0xfa367
+ xchg cx, ax ; 91 ; 0xfa36a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa36b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa36f
+ out DX, eax ; 66 ef ; 0xfa371
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa373 lsilogic.c:393
+ jmp short 0a389h ; eb 11 ; 0xfa376
+ test si, si ; 85 f6 ; 0xfa378 lsilogic.c:396
+ jne short 0a382h ; 75 06 ; 0xfa37a
+ cmp di, 0cafeh ; 81 ff fe ca ; 0xfa37c
+ je short 0a387h ; 74 05 ; 0xfa380
+ mov ax, strict word 00003h ; b8 03 00 ; 0xfa382 lsilogic.c:397
+ jmp short 0a389h ; eb 02 ; 0xfa385
+ xor ax, ax ; 31 c0 ; 0xfa387 lsilogic.c:399
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa389 lsilogic.c:400
+ pop di ; 5f ; 0xfa38c
+ pop si ; 5e ; 0xfa38d
+ pop cx ; 59 ; 0xfa38e
+ pop bx ; 5b ; 0xfa38f
+ pop bp ; 5d ; 0xfa390
+ retn ; c3 ; 0xfa391
+ ; disGetNextSymbol 0xfa392 LB 0xa8a -> off=0x0 cb=00000000000000d6 uValue=00000000000f8d92 'lsilogic_scsi_cmd_data_out'
+lsilogic_scsi_cmd_data_out: ; 0xfa392 LB 0xd6
+ push bp ; 55 ; 0xfa392 lsilogic.c:402
+ mov bp, sp ; 89 e5 ; 0xfa393
+ push cx ; 51 ; 0xfa395
+ push si ; 56 ; 0xfa396
+ push di ; 57 ; 0xfa397
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa398
+ mov di, ax ; 89 c7 ; 0xfa39b
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa39d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa3a0
+ mov si, ax ; 89 c6 ; 0xfa3a3 lsilogic.c:405
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa3a5
+ mov cx, strict word 00030h ; b9 30 00 ; 0xfa3a8 lsilogic.c:408
+ xor bx, bx ; 31 db ; 0xfa3ab
+ call 0ad80h ; e8 d0 09 ; 0xfa3ad
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa3b0 lsilogic.c:410
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa3b3
+ mov byte [es:di], al ; 26 88 05 ; 0xfa3b6
+ mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa3b9 lsilogic.c:411
+ mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa3bf lsilogic.c:413
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa3c4 lsilogic.c:414
+ mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa3c7
+ mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa3cb lsilogic.c:415
+ db 066h, 026h, 0c7h, 045h, 008h, 0feh, 0cah, 000h, 000h
+ ; mov dword [es:di+008h], strict dword 00000cafeh ; 66 26 c7 45 08 fe ca 00 00; 0xfa3d0 lsilogic.c:416
+ db 066h, 026h, 0c7h, 045h, 014h, 000h, 000h, 000h, 001h
+ ; mov dword [es:di+014h], strict dword 001000000h ; 66 26 c7 45 14 00 00 00 01; 0xfa3d9 lsilogic.c:417
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa3e2 lsilogic.c:418
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa3e5
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa3e9
+ mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa3ec
+ xor di, di ; 31 ff ; 0xfa3f0 lsilogic.c:419
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xfa3f2
+ cmp di, ax ; 39 c7 ; 0xfa3f6
+ jnl short 0a414h ; 7d 1a ; 0xfa3f8
+ les bx, [bp+004h] ; c4 5e 04 ; 0xfa3fa lsilogic.c:420
+ add bx, di ; 01 fb ; 0xfa3fd
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa3ff
+ mov dx, si ; 89 f2 ; 0xfa402
+ add dx, di ; 01 fa ; 0xfa404
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xfa406
+ mov es, cx ; 8e c1 ; 0xfa409
+ mov bx, dx ; 89 d3 ; 0xfa40b
+ mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa40d
+ inc di ; 47 ; 0xfa411
+ jmp short 0a3f2h ; eb de ; 0xfa412
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa414 lsilogic.c:422
+ xor ah, ah ; 30 e4 ; 0xfa417
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa419
+ mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa41c
+ mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa422
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa426
+ or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa429
+ or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa42d
+ mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa431 lsilogic.c:423
+ or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa435
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa43a lsilogic.c:430
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa43d
+ call 0a1a7h ; e8 64 fd ; 0xfa440
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa443
+ db 066h, 026h, 0c7h, 044h, 034h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+034h], strict dword 000000000h ; 66 26 c7 44 34 00 00 00 00; 0xfa446
+ or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa44f
+ or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa453
+ mov ax, si ; 89 f0 ; 0xfa457 lsilogic.c:432
+ mov dx, es ; 8c c2 ; 0xfa459
+ call 0a2bbh ; e8 5d fe ; 0xfa45b
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa45e lsilogic.c:433
+ pop di ; 5f ; 0xfa461
+ pop si ; 5e ; 0xfa462
+ pop cx ; 59 ; 0xfa463
+ pop bp ; 5d ; 0xfa464
+ retn 0000eh ; c2 0e 00 ; 0xfa465
+ ; disGetNextSymbol 0xfa468 LB 0x9b4 -> off=0x0 cb=00000000000000d6 uValue=00000000000f8e68 'lsilogic_scsi_cmd_data_in'
+lsilogic_scsi_cmd_data_in: ; 0xfa468 LB 0xd6
+ push bp ; 55 ; 0xfa468 lsilogic.c:435
+ mov bp, sp ; 89 e5 ; 0xfa469
+ push cx ; 51 ; 0xfa46b
+ push si ; 56 ; 0xfa46c
+ push di ; 57 ; 0xfa46d
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa46e
+ mov di, ax ; 89 c7 ; 0xfa471
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa473
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa476
+ mov si, ax ; 89 c6 ; 0xfa479 lsilogic.c:438
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa47b
+ mov cx, strict word 00030h ; b9 30 00 ; 0xfa47e lsilogic.c:441
+ xor bx, bx ; 31 db ; 0xfa481
+ call 0ad80h ; e8 fa 08 ; 0xfa483
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa486 lsilogic.c:443
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa489
+ mov byte [es:di], al ; 26 88 05 ; 0xfa48c
+ mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa48f lsilogic.c:444
+ mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa495 lsilogic.c:446
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa49a lsilogic.c:447
+ mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa49d
+ mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa4a1 lsilogic.c:448
+ db 066h, 026h, 0c7h, 045h, 008h, 0feh, 0cah, 000h, 000h
+ ; mov dword [es:di+008h], strict dword 00000cafeh ; 66 26 c7 45 08 fe ca 00 00; 0xfa4a6 lsilogic.c:449
+ db 066h, 026h, 0c7h, 045h, 014h, 000h, 000h, 000h, 002h
+ ; mov dword [es:di+014h], strict dword 002000000h ; 66 26 c7 45 14 00 00 00 02; 0xfa4af lsilogic.c:450
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa4b8 lsilogic.c:451
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa4bb
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa4bf
+ mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa4c2
+ xor di, di ; 31 ff ; 0xfa4c6 lsilogic.c:452
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xfa4c8
+ cmp di, ax ; 39 c7 ; 0xfa4cc
+ jnl short 0a4eah ; 7d 1a ; 0xfa4ce
+ les bx, [bp+004h] ; c4 5e 04 ; 0xfa4d0 lsilogic.c:453
+ add bx, di ; 01 fb ; 0xfa4d3
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa4d5
+ mov dx, si ; 89 f2 ; 0xfa4d8
+ add dx, di ; 01 fa ; 0xfa4da
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xfa4dc
+ mov es, cx ; 8e c1 ; 0xfa4df
+ mov bx, dx ; 89 d3 ; 0xfa4e1
+ mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa4e3
+ inc di ; 47 ; 0xfa4e7
+ jmp short 0a4c8h ; eb de ; 0xfa4e8
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa4ea lsilogic.c:455
+ xor ah, ah ; 30 e4 ; 0xfa4ed
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa4ef
+ mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa4f2
+ mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa4f8
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa4fc
+ or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa4ff
+ or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa503
+ mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa507 lsilogic.c:456
+ or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa50b
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa510 lsilogic.c:463
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa513
+ call 0a1a7h ; e8 8e fc ; 0xfa516
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa519
+ db 066h, 026h, 0c7h, 044h, 034h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+034h], strict dword 000000000h ; 66 26 c7 44 34 00 00 00 00; 0xfa51c
+ or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa525
+ or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa529
+ mov ax, si ; 89 f0 ; 0xfa52d lsilogic.c:465
+ mov dx, es ; 8c c2 ; 0xfa52f
+ call 0a2bbh ; e8 87 fd ; 0xfa531
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa534 lsilogic.c:466
+ pop di ; 5f ; 0xfa537
+ pop si ; 5e ; 0xfa538
+ pop cx ; 59 ; 0xfa539
+ pop bp ; 5d ; 0xfa53a
+ retn 0000eh ; c2 0e 00 ; 0xfa53b
+ ; disGetNextSymbol 0xfa53e LB 0x8de -> off=0x0 cb=00000000000000f1 uValue=00000000000f8f3e 'lsilogic_scsi_hba_init'
+lsilogic_scsi_hba_init: ; 0xfa53e LB 0xf1
+ push bp ; 55 ; 0xfa53e lsilogic.c:471
+ mov bp, sp ; 89 e5 ; 0xfa53f
+ push bx ; 53 ; 0xfa541
+ push cx ; 51 ; 0xfa542
+ push si ; 56 ; 0xfa543
+ push di ; 57 ; 0xfa544
+ sub sp, strict byte 0002ch ; 83 ec 2c ; 0xfa545
+ mov si, ax ; 89 c6 ; 0xfa548
+ mov di, dx ; 89 d7 ; 0xfa54a
+ mov es, dx ; 8e c2 ; 0xfa54c lsilogic.c:483
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa54e
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa553
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa556
+ xor cx, cx ; 31 c9 ; 0xfa559
+ xchg cx, ax ; 91 ; 0xfa55b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa55c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa560
+ out DX, eax ; 66 ef ; 0xfa562
+ mov es, di ; 8e c7 ; 0xfa564 lsilogic.c:484
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa566
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa56b
+ mov ax, strict word 00002h ; b8 02 00 ; 0xfa56e
+ xor cx, cx ; 31 c9 ; 0xfa571
+ xchg cx, ax ; 91 ; 0xfa573
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa574
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa578
+ out DX, eax ; 66 ef ; 0xfa57a
+ mov es, di ; 8e c7 ; 0xfa57c lsilogic.c:485
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa57e
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa583
+ mov ax, strict word 00007h ; b8 07 00 ; 0xfa586
+ xor cx, cx ; 31 c9 ; 0xfa589
+ xchg cx, ax ; 91 ; 0xfa58b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa58c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa590
+ out DX, eax ; 66 ef ; 0xfa592
+ mov es, di ; 8e c7 ; 0xfa594 lsilogic.c:486
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa596
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa59b
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xfa59e
+ xor cx, cx ; 31 c9 ; 0xfa5a1
+ xchg cx, ax ; 91 ; 0xfa5a3
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa5a4
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa5a8
+ out DX, eax ; 66 ef ; 0xfa5aa
+ mov es, di ; 8e c7 ; 0xfa5ac lsilogic.c:487
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa5ae
+ add dx, strict byte 00008h ; 83 c2 08 ; 0xfa5b3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa5b6
+ xor cx, cx ; 31 c9 ; 0xfa5b9
+ xchg cx, ax ; 91 ; 0xfa5bb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa5bc
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa5c0
+ out DX, eax ; 66 ef ; 0xfa5c2
+ mov byte [bp-034h], 001h ; c6 46 cc 01 ; 0xfa5c4 lsilogic.c:489
+ mov byte [bp-031h], 002h ; c6 46 cf 02 ; 0xfa5c8 lsilogic.c:490
+ xor ax, ax ; 31 c0 ; 0xfa5cc lsilogic.c:491
+ mov word [bp-024h], ax ; 89 46 dc ; 0xfa5ce
+ mov word [bp-022h], ax ; 89 46 de ; 0xfa5d1
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xfa5d4 lsilogic.c:492
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xfa5d7
+ mov byte [bp-02eh], 001h ; c6 46 d2 01 ; 0xfa5da lsilogic.c:493
+ mov byte [bp-02fh], 004h ; c6 46 d1 04 ; 0xfa5de lsilogic.c:494
+ mov word [bp-028h], 00080h ; c7 46 d8 80 00 ; 0xfa5e2 lsilogic.c:495
+ push strict byte 00014h ; 6a 14 ; 0xfa5e7 lsilogic.c:496
+ lea dx, [bp-01ch] ; 8d 56 e4 ; 0xfa5e9
+ push SS ; 16 ; 0xfa5ec
+ push dx ; 52 ; 0xfa5ed
+ push strict byte 00018h ; 6a 18 ; 0xfa5ee
+ mov cx, ss ; 8c d1 ; 0xfa5f0
+ lea bx, [bp-034h] ; 8d 5e cc ; 0xfa5f2
+ mov ax, si ; 89 f0 ; 0xfa5f5
+ mov dx, di ; 89 fa ; 0xfa5f7
+ call 0a1c5h ; e8 c9 fb ; 0xfa5f9
+ test ax, ax ; 85 c0 ; 0xfa5fc lsilogic.c:497
+ jne short 0a623h ; 75 23 ; 0xfa5fe
+ lea ax, [si+038h] ; 8d 44 38 ; 0xfa600 lsilogic.c:500
+ mov dx, di ; 89 fa ; 0xfa603
+ call 0a1a7h ; e8 9f fb ; 0xfa605
+ mov es, di ; 8e c7 ; 0xfa608
+ mov si, word [es:si+000b8h] ; 26 8b b4 b8 00 ; 0xfa60a
+ add si, strict byte 00044h ; 83 c6 44 ; 0xfa60f
+ mov cx, dx ; 89 d1 ; 0xfa612
+ mov dx, si ; 89 f2 ; 0xfa614
+ xchg cx, ax ; 91 ; 0xfa616
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa617
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa61b
+ out DX, eax ; 66 ef ; 0xfa61d
+ xor ax, ax ; 31 c0 ; 0xfa61f lsilogic.c:501
+ jmp short 0a626h ; eb 03 ; 0xfa621
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa623 lsilogic.c:504
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa626 lsilogic.c:505
+ pop di ; 5f ; 0xfa629
+ pop si ; 5e ; 0xfa62a
+ pop cx ; 59 ; 0xfa62b
+ pop bx ; 5b ; 0xfa62c
+ pop bp ; 5d ; 0xfa62d
+ retn ; c3 ; 0xfa62e
+ ; disGetNextSymbol 0xfa62f LB 0x7ed -> off=0x0 cb=0000000000000052 uValue=00000000000f902f 'lsilogic_scsi_init'
+lsilogic_scsi_init: ; 0xfa62f LB 0x52
+ push bp ; 55 ; 0xfa62f lsilogic.c:510
+ mov bp, sp ; 89 e5 ; 0xfa630
+ push si ; 56 ; 0xfa632
+ push di ; 57 ; 0xfa633
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa634
+ mov si, ax ; 89 c6 ; 0xfa637
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xfa639
+ movzx ax, cl ; 0f b6 c1 ; 0xfa63c lsilogic.c:517
+ mov word [bp-006h], ax ; 89 46 fa ; 0xfa63f
+ movzx di, bl ; 0f b6 fb ; 0xfa642
+ mov bx, strict word 00010h ; bb 10 00 ; 0xfa645
+ mov dx, ax ; 89 c2 ; 0xfa648
+ mov ax, di ; 89 f8 ; 0xfa64a
+ call 0ab68h ; e8 19 05 ; 0xfa64c
+ test AL, strict byte 001h ; a8 01 ; 0xfa64f lsilogic.c:521
+ je short 0a677h ; 74 24 ; 0xfa651
+ and AL, strict byte 0f0h ; 24 f0 ; 0xfa653 lsilogic.c:523
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa655
+ mov cx, strict word 00007h ; b9 07 00 ; 0xfa658 lsilogic.c:526
+ mov bx, strict word 00004h ; bb 04 00 ; 0xfa65b
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa65e
+ mov ax, di ; 89 f8 ; 0xfa661
+ call 0ab8fh ; e8 29 05 ; 0xfa663
+ les ax, [bp-00ah] ; c4 46 f6 ; 0xfa666 lsilogic.c:529
+ mov word [es:si+000b8h], ax ; 26 89 84 b8 00 ; 0xfa669
+ mov ax, si ; 89 f0 ; 0xfa66e lsilogic.c:530
+ mov dx, es ; 8c c2 ; 0xfa670
+ call 0a53eh ; e8 c9 fe ; 0xfa672
+ jmp short 0a67ah ; eb 03 ; 0xfa675
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa677 lsilogic.c:535
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa67a lsilogic.c:536
+ pop di ; 5f ; 0xfa67d
+ pop si ; 5e ; 0xfa67e
+ pop bp ; 5d ; 0xfa67f
+ retn ; c3 ; 0xfa680
+ ; disGetNextSymbol 0xfa681 LB 0x79b -> off=0x0 cb=0000000000000020 uValue=00000000000f9081 'apm_out_str'
+apm_out_str: ; 0xfa681 LB 0x20
+ push bp ; 55 ; 0xfa681 apm.c:142
+ mov bp, sp ; 89 e5 ; 0xfa682
+ push bx ; 53 ; 0xfa684
+ push dx ; 52 ; 0xfa685
+ mov bx, ax ; 89 c3 ; 0xfa686
+ cmp byte [bx], 000h ; 80 3f 00 ; 0xfa688 apm.c:144
+ je short 0a69ah ; 74 0d ; 0xfa68b
+ mov dx, 0040fh ; ba 0f 04 ; 0xfa68d apm.c:145
+ mov al, byte [bx] ; 8a 07 ; 0xfa690
+ out DX, AL ; ee ; 0xfa692
+ inc bx ; 43 ; 0xfa693
+ mov al, byte [bx] ; 8a 07 ; 0xfa694
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfa696
+ jne short 0a692h ; 75 f8 ; 0xfa698
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa69a apm.c:146
+ pop dx ; 5a ; 0xfa69d
+ pop bx ; 5b ; 0xfa69e
+ pop bp ; 5d ; 0xfa69f
+ retn ; c3 ; 0xfa6a0
+ ; disGetNextSymbol 0xfa6a1 LB 0x77b -> off=0x1e cb=00000000000000fb uValue=00000000000f90bf 'apm_function'
+ db 0e2h, 0a6h, 0b4h, 0a7h, 0f4h, 0a6h, 00fh, 0a7h, 0b4h, 0a7h, 03ah, 0a7h, 0b4h, 0a7h, 03fh, 0a7h
+ db 089h, 0a7h, 089h, 0a7h, 075h, 0a7h, 084h, 0a7h, 089h, 0a7h, 089h, 0a7h, 06eh, 0a7h
+apm_function: ; 0xfa6bf LB 0xfb
+ push bp ; 55 ; 0xfa6bf apm.c:148
+ mov bp, sp ; 89 e5 ; 0xfa6c0
+ push si ; 56 ; 0xfa6c2
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xfa6c3 apm.c:152
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa6c7 apm.c:153
+ xor ah, ah ; 30 e4 ; 0xfa6ca
+ cmp ax, strict word 0000eh ; 3d 0e 00 ; 0xfa6cc
+ jnbe near 0a789h ; 0f 87 b6 00 ; 0xfa6cf
+ mov bx, ax ; 89 c3 ; 0xfa6d3
+ add bx, ax ; 01 c3 ; 0xfa6d5
+ mov si, word [bp+018h] ; 8b 76 18 ; 0xfa6d7
+ or si, strict byte 00001h ; 83 ce 01 ; 0xfa6da
+ jmp word [cs:bx-0595fh] ; 2e ff a7 a1 a6 ; 0xfa6dd
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa6e2 apm.c:155
+ mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xfa6e7 apm.c:156
+ mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xfa6ec apm.c:157
+ jmp near 0a7b4h ; e9 c0 00 ; 0xfa6f1 apm.c:158
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfa6f4 apm.c:168
+ mov word [bp+00ch], 0ae0bh ; c7 46 0c 0b ae ; 0xfa6f9 apm.c:169
+ mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xfa6fe apm.c:170
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfa703 apm.c:171
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfa706
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfa709 apm.c:172
+ jmp near 0a7b4h ; e9 a5 00 ; 0xfa70c apm.c:173
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfa70f apm.c:179
+ mov word [bp+00ch], 0da40h ; c7 46 0c 40 da ; 0xfa714 apm.c:180
+ mov ax, 0f000h ; b8 00 f0 ; 0xfa719 apm.c:181
+ mov word [bp+010h], ax ; 89 46 10 ; 0xfa71c
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xfa71f apm.c:182
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfa722 apm.c:183
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfa725
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfa728 apm.c:184
+ xor bx, bx ; 31 db ; 0xfa72b apm.c:185
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfa72d
+ mov si, ax ; 89 c6 ; 0xfa731 apm.c:186
+ sal esi, 010h ; 66 c1 e6 10 ; 0xfa733
+ jmp near 0a7b4h ; e9 7a 00 ; 0xfa737 apm.c:187
+ sti ; fb ; 0xfa73a apm.c:190
+ hlt ; f4 ; 0xfa73b apm.c:191
+ jmp near 0a7b4h ; e9 75 00 ; 0xfa73c apm.c:192
+ cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xfa73f apm.c:196
+ je short 0a75eh ; 74 19 ; 0xfa743
+ cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xfa745
+ je short 0a759h ; 74 0e ; 0xfa749
+ cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xfa74b
+ jne short 0a763h ; 75 12 ; 0xfa74f
+ mov ax, 00d86h ; b8 86 0d ; 0xfa751 apm.c:198
+ call 0a681h ; e8 2a ff ; 0xfa754
+ jmp short 0a7b4h ; eb 5b ; 0xfa757 apm.c:199
+ mov ax, 00d8eh ; b8 8e 0d ; 0xfa759 apm.c:201
+ jmp short 0a754h ; eb f6 ; 0xfa75c
+ mov ax, 00d96h ; b8 96 0d ; 0xfa75e apm.c:204
+ jmp short 0a754h ; eb f1 ; 0xfa761
+ or ah, 00ah ; 80 cc 0a ; 0xfa763 apm.c:207
+ mov word [bp+012h], ax ; 89 46 12 ; 0xfa766
+ mov word [bp+018h], si ; 89 76 18 ; 0xfa769 apm.c:208
+ jmp short 0a7b4h ; eb 46 ; 0xfa76c apm.c:210
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa76e apm.c:212
+ jmp short 0a7b4h ; eb 3f ; 0xfa773 apm.c:213
+ mov word [bp+00ch], 001ffh ; c7 46 0c ff 01 ; 0xfa775 apm.c:220
+ mov dword [bp+00eh], strict dword 080ffffffh ; 66 c7 46 0e ff ff ff 80 ; 0xfa77a apm.c:221
+ jmp short 0a7b4h ; eb 30 ; 0xfa782 apm.c:223
+ or ah, 080h ; 80 cc 80 ; 0xfa784 apm.c:226
+ jmp short 0a766h ; eb dd ; 0xfa787
+ mov bx, 00e16h ; bb 16 0e ; 0xfa789 apm.c:230
+ mov cx, ds ; 8c d9 ; 0xfa78c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa78e
+ call 01a27h ; e8 93 72 ; 0xfa791
+ push word [bp+00ch] ; ff 76 0c ; 0xfa794
+ push word [bp+012h] ; ff 76 12 ; 0xfa797
+ push 00d9fh ; 68 9f 0d ; 0xfa79a
+ push strict byte 00004h ; 6a 04 ; 0xfa79d
+ call 01a68h ; e8 c6 72 ; 0xfa79f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa7a2
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa7a5 apm.c:231
+ xor ah, ah ; 30 e4 ; 0xfa7a8
+ or ah, 00ch ; 80 cc 0c ; 0xfa7aa
+ mov word [bp+012h], ax ; 89 46 12 ; 0xfa7ad
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xfa7b0 apm.c:232
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfa7b4 apm.c:234
+ pop si ; 5e ; 0xfa7b7
+ pop bp ; 5d ; 0xfa7b8
+ retn ; c3 ; 0xfa7b9
+ ; disGetNextSymbol 0xfa7ba LB 0x662 -> off=0x0 cb=0000000000000024 uValue=00000000000f91ba 'pci16_select_reg'
+pci16_select_reg: ; 0xfa7ba LB 0x24
+ push bp ; 55 ; 0xfa7ba pcibios.c:198
+ mov bp, sp ; 89 e5 ; 0xfa7bb
+ push bx ; 53 ; 0xfa7bd
+ and dl, 0fch ; 80 e2 fc ; 0xfa7be pcibios.c:200
+ mov bx, dx ; 89 d3 ; 0xfa7c1
+ mov dx, 00cf8h ; ba f8 0c ; 0xfa7c3
+ movzx eax, ax ; 66 0f b7 c0 ; 0xfa7c6
+ sal eax, 008h ; 66 c1 e0 08 ; 0xfa7ca
+ or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xfa7ce
+ db 08ah, 0c3h
+ ; mov al, bl ; 8a c3 ; 0xfa7d4
+ out DX, eax ; 66 ef ; 0xfa7d6
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfa7d8 pcibios.c:201
+ pop bx ; 5b ; 0xfa7db
+ pop bp ; 5d ; 0xfa7dc
+ retn ; c3 ; 0xfa7dd
+ ; disGetNextSymbol 0xfa7de LB 0x63e -> off=0x0 cb=00000000000000f3 uValue=00000000000f91de 'pci16_find_device'
+pci16_find_device: ; 0xfa7de LB 0xf3
+ push bp ; 55 ; 0xfa7de pcibios.c:233
+ mov bp, sp ; 89 e5 ; 0xfa7df
+ push si ; 56 ; 0xfa7e1
+ push di ; 57 ; 0xfa7e2
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xfa7e3
+ push ax ; 50 ; 0xfa7e6
+ push dx ; 52 ; 0xfa7e7
+ mov si, bx ; 89 de ; 0xfa7e8
+ mov di, cx ; 89 cf ; 0xfa7ea
+ test cx, cx ; 85 c9 ; 0xfa7ec pcibios.c:243
+ xor bx, bx ; 31 db ; 0xfa7ee pcibios.c:250
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xfa7f0 pcibios.c:251
+ test bl, 007h ; f6 c3 07 ; 0xfa7f4 pcibios.c:261
+ jne short 0a826h ; 75 2d ; 0xfa7f7
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xfa7f9 pcibios.c:262
+ mov ax, bx ; 89 d8 ; 0xfa7fc
+ call 0a7bah ; e8 b9 ff ; 0xfa7fe
+ mov dx, 00cfeh ; ba fe 0c ; 0xfa801 pcibios.c:263
+ in AL, DX ; ec ; 0xfa804
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa805
+ mov byte [bp-006h], al ; 88 46 fa ; 0xfa807
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfa80a pcibios.c:264
+ jne short 0a814h ; 75 06 ; 0xfa80c
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfa80e pcibios.c:265
+ jmp near 0a8adh ; e9 99 00 ; 0xfa811 pcibios.c:266
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xfa814 pcibios.c:268
+ je short 0a821h ; 74 07 ; 0xfa818
+ mov word [bp-00ch], strict word 00001h ; c7 46 f4 01 00 ; 0xfa81a pcibios.c:269
+ jmp short 0a826h ; eb 05 ; 0xfa81f pcibios.c:270
+ mov word [bp-00ch], strict word 00008h ; c7 46 f4 08 00 ; 0xfa821 pcibios.c:271
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa826 pcibios.c:282
+ and AL, strict byte 007h ; 24 07 ; 0xfa829
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa82b
+ jne short 0a84eh ; 75 1f ; 0xfa82d
+ mov ax, bx ; 89 d8 ; 0xfa82f
+ shr ax, 008h ; c1 e8 08 ; 0xfa831
+ test ax, ax ; 85 c0 ; 0xfa834
+ jne short 0a84eh ; 75 16 ; 0xfa836
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfa838 pcibios.c:284
+ mov ax, bx ; 89 d8 ; 0xfa83b
+ call 0a7bah ; e8 7a ff ; 0xfa83d
+ mov dx, 00cfeh ; ba fe 0c ; 0xfa840 pcibios.c:285
+ in AL, DX ; ec ; 0xfa843
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa844
+ cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xfa846 pcibios.c:286
+ jbe short 0a84eh ; 76 03 ; 0xfa849
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xfa84b pcibios.c:287
+ test di, di ; 85 ff ; 0xfa84e pcibios.c:291
+ je short 0a857h ; 74 05 ; 0xfa850
+ mov dx, strict word 00008h ; ba 08 00 ; 0xfa852
+ jmp short 0a859h ; eb 02 ; 0xfa855
+ xor dx, dx ; 31 d2 ; 0xfa857
+ mov ax, bx ; 89 d8 ; 0xfa859
+ call 0a7bah ; e8 5c ff ; 0xfa85b
+ mov dx, 00cfch ; ba fc 0c ; 0xfa85e pcibios.c:292
+ in eax, DX ; 66 ed ; 0xfa861
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa863
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa865
+ xchg dx, ax ; 92 ; 0xfa869
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa86a
+ mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xfa86d pcibios.c:293
+ test di, di ; 85 ff ; 0xfa872 pcibios.c:296
+ je short 0a891h ; 74 1b ; 0xfa874
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xfa876 pcibios.c:297
+ je short 0a885h ; 74 09 ; 0xfa87a
+ mov ax, dx ; 89 d0 ; 0xfa87c pcibios.c:298
+ mov word [bp-00ah], strict word 00000h ; c7 46 f6 00 00 ; 0xfa87e
+ jmp short 0a891h ; eb 0c ; 0xfa883 pcibios.c:299
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfa885 pcibios.c:300
+ shr dx, 1 ; d1 ea ; 0xfa888
+ rcr ax, 1 ; d1 d8 ; 0xfa88a
+ loop 0a888h ; e2 fa ; 0xfa88c
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa88e
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfa891 pcibios.c:307
+ cmp dx, word [bp-012h] ; 3b 56 ee ; 0xfa894
+ jne short 0a89eh ; 75 05 ; 0xfa897
+ cmp ax, word [bp-010h] ; 3b 46 f0 ; 0xfa899
+ je short 0a8a4h ; 74 06 ; 0xfa89c
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xfa89e pcibios.c:308
+ je short 0a8aah ; 74 06 ; 0xfa8a2
+ dec si ; 4e ; 0xfa8a4
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa8a5
+ je short 0a8bch ; 74 12 ; 0xfa8a8
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xfa8aa pcibios.c:316
+ mov ax, bx ; 89 d8 ; 0xfa8ad pcibios.c:317
+ shr ax, 008h ; c1 e8 08 ; 0xfa8af
+ movzx dx, byte [bp-008h] ; 0f b6 56 f8 ; 0xfa8b2
+ cmp ax, dx ; 39 d0 ; 0xfa8b6
+ jbe near 0a7f4h ; 0f 86 38 ff ; 0xfa8b8
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa8bc pcibios.c:319
+ jne short 0a8c5h ; 75 04 ; 0xfa8bf pcibios.c:323
+ mov ax, bx ; 89 d8 ; 0xfa8c1
+ jmp short 0a8c8h ; eb 03 ; 0xfa8c3
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa8c5
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa8c8 pcibios.c:324
+ pop di ; 5f ; 0xfa8cb
+ pop si ; 5e ; 0xfa8cc
+ pop bp ; 5d ; 0xfa8cd
+ retn 00002h ; c2 02 00 ; 0xfa8ce
+ ; disGetNextSymbol 0xfa8d1 LB 0x54b -> off=0xc cb=00000000000001db uValue=00000000000f92dd 'pci16_function'
+ db 0c3h, 0a9h, 0ddh, 0a9h, 0f0h, 0a9h, 005h, 0aah, 018h, 0aah, 02bh, 0aah
+pci16_function: ; 0xfa8dd LB 0x1db
+ push bp ; 55 ; 0xfa8dd pcibios.c:326
+ mov bp, sp ; 89 e5 ; 0xfa8de
+ push si ; 56 ; 0xfa8e0
+ push di ; 57 ; 0xfa8e1
+ push ax ; 50 ; 0xfa8e2
+ push ax ; 50 ; 0xfa8e3
+ and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xfa8e4 pcibios.c:333
+ and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xfa8e9 pcibios.c:334
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa8ed pcibios.c:336
+ xor bh, bh ; 30 ff ; 0xfa8f0
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa8f2
+ xor ah, ah ; 30 e4 ; 0xfa8f5
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xfa8f7
+ jc short 0a916h ; 72 1a ; 0xfa8fa
+ jbe short 0a970h ; 76 72 ; 0xfa8fc
+ cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xfa8fe
+ je near 0aa3fh ; 0f 84 3a 01 ; 0xfa901
+ cmp bx, strict byte 00008h ; 83 fb 08 ; 0xfa905
+ jc near 0aa84h ; 0f 82 78 01 ; 0xfa908
+ cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xfa90c
+ jbe near 0a997h ; 0f 86 84 00 ; 0xfa90f
+ jmp near 0aa84h ; e9 6e 01 ; 0xfa913
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xfa916
+ je short 0a93eh ; 74 23 ; 0xfa919
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xfa91b
+ jne near 0aa84h ; 0f 85 62 01 ; 0xfa91e
+ mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xfa922 pcibios.c:338
+ mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xfa927 pcibios.c:339
+ mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xfa92c pcibios.c:341
+ mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xfa931 pcibios.c:342
+ mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xfa936
+ jmp near 0aab1h ; e9 73 01 ; 0xfa93b pcibios.c:343
+ cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xfa93e pcibios.c:348
+ jne short 0a94ah ; 75 06 ; 0xfa942
+ or ah, 083h ; 80 cc 83 ; 0xfa944 pcibios.c:349
+ jmp near 0aaaah ; e9 60 01 ; 0xfa947 pcibios.c:350
+ push strict byte 00000h ; 6a 00 ; 0xfa94a pcibios.c:352
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa94c
+ mov dx, word [bp+01ch] ; 8b 56 1c ; 0xfa94f
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xfa952
+ xor cx, cx ; 31 c9 ; 0xfa955
+ call 0a7deh ; e8 84 fe ; 0xfa957
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa95a pcibios.c:353
+ jne short 0a96ah ; 75 0b ; 0xfa95d
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa95f pcibios.c:354
+ xor ah, ah ; 30 e4 ; 0xfa962
+ or ah, 086h ; 80 cc 86 ; 0xfa964
+ jmp near 0aaaah ; e9 40 01 ; 0xfa967
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfa96a pcibios.c:355
+ jmp near 0aab1h ; e9 41 01 ; 0xfa96d pcibios.c:360
+ push strict byte 00000h ; 6a 00 ; 0xfa970 pcibios.c:362
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa972
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa975
+ mov dx, word [bp+01eh] ; 8b 56 1e ; 0xfa978
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa97b
+ call 0a7deh ; e8 5d fe ; 0xfa97e
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa981 pcibios.c:363
+ jne short 0a991h ; 75 0b ; 0xfa984
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa986 pcibios.c:364
+ xor ah, ah ; 30 e4 ; 0xfa989
+ or ah, 086h ; 80 cc 86 ; 0xfa98b
+ jmp near 0aaaah ; e9 19 01 ; 0xfa98e pcibios.c:365
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfa991 pcibios.c:367
+ jmp near 0aab1h ; e9 1a 01 ; 0xfa994 pcibios.c:369
+ cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xfa997 pcibios.c:376
+ jc short 0a9a4h ; 72 06 ; 0xfa99c
+ or ah, 087h ; 80 cc 87 ; 0xfa99e pcibios.c:377
+ jmp near 0aaaah ; e9 06 01 ; 0xfa9a1 pcibios.c:378
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa9a4 pcibios.c:380
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfa9a7
+ call 0a7bah ; e8 0d fe ; 0xfa9aa
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa9ad pcibios.c:381
+ xor bh, bh ; 30 ff ; 0xfa9b0
+ sub bx, strict byte 00008h ; 83 eb 08 ; 0xfa9b2
+ cmp bx, strict byte 00005h ; 83 fb 05 ; 0xfa9b5
+ jnbe near 0aab1h ; 0f 87 f5 00 ; 0xfa9b8
+ add bx, bx ; 01 db ; 0xfa9bc
+ jmp word [cs:bx-0572fh] ; 2e ff a7 d1 a8 ; 0xfa9be
+ mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xfa9c3 pcibios.c:383
+ xor bl, bl ; 30 db ; 0xfa9c6
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa9c8
+ and dx, strict byte 00003h ; 83 e2 03 ; 0xfa9cb
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfa9ce
+ in AL, DX ; ec ; 0xfa9d2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa9d3
+ or bx, ax ; 09 c3 ; 0xfa9d5
+ mov word [bp+01ch], bx ; 89 5e 1c ; 0xfa9d7
+ jmp near 0aab1h ; e9 d4 00 ; 0xfa9da pcibios.c:384
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa9dd pcibios.c:386
+ xor dh, dh ; 30 f6 ; 0xfa9e0
+ and dl, 002h ; 80 e2 02 ; 0xfa9e2
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfa9e5
+ in ax, DX ; ed ; 0xfa9e9
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfa9ea
+ jmp near 0aab1h ; e9 c1 00 ; 0xfa9ed pcibios.c:387
+ mov dx, 00cfch ; ba fc 0c ; 0xfa9f0 pcibios.c:389
+ in eax, DX ; 66 ed ; 0xfa9f3
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa9f5
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa9f7
+ xchg dx, ax ; 92 ; 0xfa9fb
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfa9fc
+ mov word [bp+01eh], dx ; 89 56 1e ; 0xfa9ff
+ jmp near 0aab1h ; e9 ac 00 ; 0xfaa02 pcibios.c:390
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfaa05 pcibios.c:392
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfaa08
+ xor dh, dh ; 30 f6 ; 0xfaa0b
+ and dl, 003h ; 80 e2 03 ; 0xfaa0d
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfaa10
+ out DX, AL ; ee ; 0xfaa14
+ jmp near 0aab1h ; e9 99 00 ; 0xfaa15 pcibios.c:393
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfaa18 pcibios.c:395
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfaa1b
+ xor dh, dh ; 30 f6 ; 0xfaa1e
+ and dl, 002h ; 80 e2 02 ; 0xfaa20
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfaa23
+ out DX, ax ; ef ; 0xfaa27
+ jmp near 0aab1h ; e9 86 00 ; 0xfaa28 pcibios.c:396
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfaa2b pcibios.c:398
+ mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xfaa2e
+ mov dx, 00cfch ; ba fc 0c ; 0xfaa31
+ xchg cx, ax ; 91 ; 0xfaa34
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfaa35
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfaa39
+ out DX, eax ; 66 ef ; 0xfaa3b
+ jmp short 0aab1h ; eb 72 ; 0xfaa3d pcibios.c:402
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfaa3f pcibios.c:404
+ mov es, [bp+026h] ; 8e 46 26 ; 0xfaa42
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xfaa45
+ mov [bp-006h], es ; 8c 46 fa ; 0xfaa48
+ mov cx, word [0f360h] ; 8b 0e 60 f3 ; 0xfaa4b pcibios.c:408
+ cmp cx, word [es:bx] ; 26 3b 0f ; 0xfaa4f
+ jbe short 0aa65h ; 76 11 ; 0xfaa52
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfaa54 pcibios.c:409
+ xor ah, ah ; 30 e4 ; 0xfaa57
+ or ah, 089h ; 80 cc 89 ; 0xfaa59
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfaa5c
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfaa5f pcibios.c:410
+ jmp short 0aa79h ; eb 14 ; 0xfaa63 pcibios.c:411
+ les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xfaa65 pcibios.c:412
+ mov si, 0f180h ; be 80 f1 ; 0xfaa69
+ mov dx, ds ; 8c da ; 0xfaa6c
+ push DS ; 1e ; 0xfaa6e
+ mov ds, dx ; 8e da ; 0xfaa6f
+ rep movsb ; f3 a4 ; 0xfaa71
+ pop DS ; 1f ; 0xfaa73
+ mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xfaa74 pcibios.c:414
+ mov ax, word [0f360h] ; a1 60 f3 ; 0xfaa79 pcibios.c:416
+ les bx, [bp-008h] ; c4 5e f8 ; 0xfaa7c
+ mov word [es:bx], ax ; 26 89 07 ; 0xfaa7f
+ jmp short 0aab1h ; eb 2d ; 0xfaa82 pcibios.c:417
+ mov bx, 00e16h ; bb 16 0e ; 0xfaa84 pcibios.c:419
+ mov cx, ds ; 8c d9 ; 0xfaa87
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfaa89
+ call 01a27h ; e8 98 6f ; 0xfaa8c
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfaa8f
+ push ax ; 50 ; 0xfaa92
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfaa93
+ push ax ; 50 ; 0xfaa96
+ push 00dd2h ; 68 d2 0d ; 0xfaa97
+ push strict byte 00004h ; 6a 04 ; 0xfaa9a
+ call 01a68h ; e8 c9 6f ; 0xfaa9c
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfaa9f
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfaaa2 pcibios.c:420
+ xor ah, ah ; 30 e4 ; 0xfaaa5
+ or ah, 081h ; 80 cc 81 ; 0xfaaa7
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfaaaa
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfaaad pcibios.c:421
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaab1 pcibios.c:423
+ pop di ; 5f ; 0xfaab4
+ pop si ; 5e ; 0xfaab5
+ pop bp ; 5d ; 0xfaab6
+ retn ; c3 ; 0xfaab7
+ ; disGetNextSymbol 0xfaab8 LB 0x364 -> off=0x0 cb=000000000000002b uValue=00000000000f94b8 'pci_find_classcode'
+pci_find_classcode: ; 0xfaab8 LB 0x2b
+ push bp ; 55 ; 0xfaab8 pciutil.c:135
+ mov bp, sp ; 89 e5 ; 0xfaab9
+ push bx ; 53 ; 0xfaabb
+ push cx ; 51 ; 0xfaabc
+ push si ; 56 ; 0xfaabd
+ mov cx, dx ; 89 d1 ; 0xfaabe
+ xor si, si ; 31 f6 ; 0xfaac0 pciutil.c:138
+ mov dx, ax ; 89 c2 ; 0xfaac2
+ mov ax, 0b103h ; b8 03 b1 ; 0xfaac4
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xfaac7
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xfaacb
+ int 01ah ; cd 1a ; 0xfaacd
+ cmp ah, 000h ; 80 fc 00 ; 0xfaacf
+ je near 0aad9h ; 0f 84 03 00 ; 0xfaad2
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xfaad6
+ mov ax, bx ; 89 d8 ; 0xfaad9
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfaadb pciutil.c:142
+ pop si ; 5e ; 0xfaade
+ pop cx ; 59 ; 0xfaadf
+ pop bx ; 5b ; 0xfaae0
+ pop bp ; 5d ; 0xfaae1
+ retn ; c3 ; 0xfaae2
+ ; disGetNextSymbol 0xfaae3 LB 0x339 -> off=0x0 cb=000000000000001a uValue=00000000000f94e3 'pci_find_class_noif'
+pci_find_class_noif: ; 0xfaae3 LB 0x1a
+ push bp ; 55 ; 0xfaae3 pciutil.c:155
+ mov bp, sp ; 89 e5 ; 0xfaae4
+ push bx ; 53 ; 0xfaae6
+ push cx ; 51 ; 0xfaae7
+ push dx ; 52 ; 0xfaae8
+ push strict byte 00001h ; 6a 01 ; 0xfaae9 pciutil.c:159
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfaaeb
+ xor bx, bx ; 31 db ; 0xfaaee
+ xor dx, dx ; 31 d2 ; 0xfaaf0
+ call 0a7deh ; e8 e9 fc ; 0xfaaf2
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfaaf5 pciutil.c:163
+ pop dx ; 5a ; 0xfaaf8
+ pop cx ; 59 ; 0xfaaf9
+ pop bx ; 5b ; 0xfaafa
+ pop bp ; 5d ; 0xfaafb
+ retn ; c3 ; 0xfaafc
+ ; disGetNextSymbol 0xfaafd LB 0x31f -> off=0x0 cb=0000000000000025 uValue=00000000000f94fd 'pci_find_device'
+pci_find_device: ; 0xfaafd LB 0x25
+ push bp ; 55 ; 0xfaafd pciutil.c:176
+ mov bp, sp ; 89 e5 ; 0xfaafe
+ push bx ; 53 ; 0xfab00
+ push cx ; 51 ; 0xfab01
+ push si ; 56 ; 0xfab02
+ mov cx, dx ; 89 d1 ; 0xfab03
+ xor si, si ; 31 f6 ; 0xfab05 pciutil.c:178
+ mov dx, ax ; 89 c2 ; 0xfab07
+ mov ax, 0b102h ; b8 02 b1 ; 0xfab09
+ int 01ah ; cd 1a ; 0xfab0c
+ cmp ah, 000h ; 80 fc 00 ; 0xfab0e
+ je near 0ab18h ; 0f 84 03 00 ; 0xfab11
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xfab15
+ mov ax, bx ; 89 d8 ; 0xfab18
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfab1a pciutil.c:179
+ pop si ; 5e ; 0xfab1d
+ pop cx ; 59 ; 0xfab1e
+ pop bx ; 5b ; 0xfab1f
+ pop bp ; 5d ; 0xfab20
+ retn ; c3 ; 0xfab21
+ ; disGetNextSymbol 0xfab22 LB 0x2fa -> off=0x0 cb=0000000000000024 uValue=00000000000f9522 'pci_read_config_byte'
+pci_read_config_byte: ; 0xfab22 LB 0x24
+ push bp ; 55 ; 0xfab22 pciutil.c:181
+ mov bp, sp ; 89 e5 ; 0xfab23
+ push cx ; 51 ; 0xfab25
+ push di ; 57 ; 0xfab26
+ movzx di, bl ; 0f b6 fb ; 0xfab27 pciutil.c:183
+ movzx bx, al ; 0f b6 d8 ; 0xfab2a
+ sal bx, 008h ; c1 e3 08 ; 0xfab2d
+ movzx ax, dl ; 0f b6 c2 ; 0xfab30
+ or bx, ax ; 09 c3 ; 0xfab33
+ mov ax, 0b108h ; b8 08 b1 ; 0xfab35
+ int 01ah ; cd 1a ; 0xfab38
+ movzx ax, cl ; 0f b6 c1 ; 0xfab3a
+ xor dx, dx ; 31 d2 ; 0xfab3d pciutil.c:184
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfab3f
+ pop di ; 5f ; 0xfab42
+ pop cx ; 59 ; 0xfab43
+ pop bp ; 5d ; 0xfab44
+ retn ; c3 ; 0xfab45
+ ; disGetNextSymbol 0xfab46 LB 0x2d6 -> off=0x0 cb=0000000000000022 uValue=00000000000f9546 'pci_read_config_word'
+pci_read_config_word: ; 0xfab46 LB 0x22
+ push bp ; 55 ; 0xfab46 pciutil.c:186
+ mov bp, sp ; 89 e5 ; 0xfab47
+ push cx ; 51 ; 0xfab49
+ push di ; 57 ; 0xfab4a
+ movzx di, bl ; 0f b6 fb ; 0xfab4b pciutil.c:188
+ xor ah, ah ; 30 e4 ; 0xfab4e
+ sal ax, 008h ; c1 e0 08 ; 0xfab50
+ movzx bx, dl ; 0f b6 da ; 0xfab53
+ or bx, ax ; 09 c3 ; 0xfab56
+ mov ax, 0b109h ; b8 09 b1 ; 0xfab58
+ int 01ah ; cd 1a ; 0xfab5b
+ mov ax, cx ; 89 c8 ; 0xfab5d
+ xor dx, dx ; 31 d2 ; 0xfab5f pciutil.c:189
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfab61
+ pop di ; 5f ; 0xfab64
+ pop cx ; 59 ; 0xfab65
+ pop bp ; 5d ; 0xfab66
+ retn ; c3 ; 0xfab67
+ ; disGetNextSymbol 0xfab68 LB 0x2b4 -> off=0x0 cb=0000000000000027 uValue=00000000000f9568 'pci_read_config_dword'
+pci_read_config_dword: ; 0xfab68 LB 0x27
+ push bp ; 55 ; 0xfab68 pciutil.c:191
+ mov bp, sp ; 89 e5 ; 0xfab69
+ push cx ; 51 ; 0xfab6b
+ push di ; 57 ; 0xfab6c
+ movzx di, bl ; 0f b6 fb ; 0xfab6d pciutil.c:194
+ movzx bx, al ; 0f b6 d8 ; 0xfab70
+ sal bx, 008h ; c1 e3 08 ; 0xfab73
+ movzx ax, dl ; 0f b6 c2 ; 0xfab76
+ or bx, ax ; 09 c3 ; 0xfab79
+ mov ax, 0b10ah ; b8 0a b1 ; 0xfab7b
+ int 01ah ; cd 1a ; 0xfab7e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfab80
+ shr ecx, 010h ; 66 c1 e9 10 ; 0xfab82
+ mov dx, cx ; 89 ca ; 0xfab86
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfab88 pciutil.c:199
+ pop di ; 5f ; 0xfab8b
+ pop cx ; 59 ; 0xfab8c
+ pop bp ; 5d ; 0xfab8d
+ retn ; c3 ; 0xfab8e
+ ; disGetNextSymbol 0xfab8f LB 0x28d -> off=0x0 cb=000000000000001c uValue=00000000000f958f 'pci_write_config_word'
+pci_write_config_word: ; 0xfab8f LB 0x1c
+ push bp ; 55 ; 0xfab8f pciutil.c:201
+ mov bp, sp ; 89 e5 ; 0xfab90
+ push di ; 57 ; 0xfab92
+ movzx di, bl ; 0f b6 fb ; 0xfab93 pciutil.c:203
+ xor ah, ah ; 30 e4 ; 0xfab96
+ sal ax, 008h ; c1 e0 08 ; 0xfab98
+ movzx bx, dl ; 0f b6 da ; 0xfab9b
+ or bx, ax ; 09 c3 ; 0xfab9e
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfaba0
+ int 01ah ; cd 1a ; 0xfaba3
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfaba5 pciutil.c:204
+ pop di ; 5f ; 0xfaba8
+ pop bp ; 5d ; 0xfaba9
+ retn ; c3 ; 0xfabaa
+ ; disGetNextSymbol 0xfabab LB 0x271 -> off=0x0 cb=000000000000001c uValue=00000000000f95ab 'pci_write_config_byte'
+pci_write_config_byte: ; 0xfabab LB 0x1c
+ push bp ; 55 ; 0xfabab pciutil.c:206
+ mov bp, sp ; 89 e5 ; 0xfabac
+ push di ; 57 ; 0xfabae
+ movzx di, bl ; 0f b6 fb ; 0xfabaf pciutil.c:208
+ xor ah, ah ; 30 e4 ; 0xfabb2
+ sal ax, 008h ; c1 e0 08 ; 0xfabb4
+ movzx bx, dl ; 0f b6 da ; 0xfabb7
+ or bx, ax ; 09 c3 ; 0xfabba
+ mov ax, 0b10bh ; b8 0b b1 ; 0xfabbc
+ int 01ah ; cd 1a ; 0xfabbf
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfabc1 pciutil.c:209
+ pop di ; 5f ; 0xfabc4
+ pop bp ; 5d ; 0xfabc5
+ retn ; c3 ; 0xfabc6
+ ; disGetNextSymbol 0xfabc7 LB 0x255 -> off=0x0 cb=000000000000002f uValue=00000000000f95c7 'pci_write_config_dword'
+pci_write_config_dword: ; 0xfabc7 LB 0x2f
+ push bp ; 55 ; 0xfabc7 pciutil.c:211
+ mov bp, sp ; 89 e5 ; 0xfabc8
+ push cx ; 51 ; 0xfabca
+ push di ; 57 ; 0xfabcb
+ movzx di, bl ; 0f b6 fb ; 0xfabcc pciutil.c:214
+ movzx bx, al ; 0f b6 d8 ; 0xfabcf
+ mov ax, bx ; 89 d8 ; 0xfabd2
+ sal ax, 008h ; c1 e0 08 ; 0xfabd4
+ movzx bx, dl ; 0f b6 da ; 0xfabd7
+ or bx, ax ; 09 c3 ; 0xfabda
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfabdc
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xfabdf
+ mov ax, 0b10dh ; b8 0d b1 ; 0xfabe2
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xfabe5
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xfabe9
+ int 01ah ; cd 1a ; 0xfabeb
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfabed pciutil.c:219
+ pop di ; 5f ; 0xfabf0
+ pop cx ; 59 ; 0xfabf1
+ pop bp ; 5d ; 0xfabf2
+ retn 00004h ; c2 04 00 ; 0xfabf3
+ ; disGetNextSymbol 0xfabf6 LB 0x226 -> off=0x0 cb=000000000000001d uValue=00000000000f95f6 'vds_is_present'
+vds_is_present: ; 0xfabf6 LB 0x1d
+ push bx ; 53 ; 0xfabf6 vds.c:42
+ push bp ; 55 ; 0xfabf7
+ mov bp, sp ; 89 e5 ; 0xfabf8
+ mov bx, strict word 0007bh ; bb 7b 00 ; 0xfabfa vds.c:46
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfabfd
+ mov es, ax ; 8e c0 ; 0xfac00
+ test byte [es:bx], 020h ; 26 f6 07 20 ; 0xfac02 vds.c:47
+ je short 0ac0eh ; 74 06 ; 0xfac06
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfac08
+ pop bp ; 5d ; 0xfac0b
+ pop bx ; 5b ; 0xfac0c
+ retn ; c3 ; 0xfac0d
+ xor ax, ax ; 31 c0 ; 0xfac0e
+ pop bp ; 5d ; 0xfac10 vds.c:48
+ pop bx ; 5b ; 0xfac11
+ retn ; c3 ; 0xfac12
+ ; disGetNextSymbol 0xfac13 LB 0x209 -> off=0x0 cb=000000000000001e uValue=00000000000f9613 'vds_real_to_lin'
+vds_real_to_lin: ; 0xfac13 LB 0x1e
+ push bx ; 53 ; 0xfac13 vds.c:77
+ push cx ; 51 ; 0xfac14
+ push bp ; 55 ; 0xfac15
+ mov bp, sp ; 89 e5 ; 0xfac16
+ mov bx, ax ; 89 c3 ; 0xfac18
+ mov ax, dx ; 89 d0 ; 0xfac1a
+ xor dx, dx ; 31 d2 ; 0xfac1c vds.c:79
+ mov cx, strict word 00004h ; b9 04 00 ; 0xfac1e
+ sal ax, 1 ; d1 e0 ; 0xfac21
+ rcl dx, 1 ; d1 d2 ; 0xfac23
+ loop 0ac21h ; e2 fa ; 0xfac25
+ xor cx, cx ; 31 c9 ; 0xfac27
+ add ax, bx ; 01 d8 ; 0xfac29
+ adc dx, cx ; 11 ca ; 0xfac2b
+ pop bp ; 5d ; 0xfac2d vds.c:80
+ pop cx ; 59 ; 0xfac2e
+ pop bx ; 5b ; 0xfac2f
+ retn ; c3 ; 0xfac30
+ ; disGetNextSymbol 0xfac31 LB 0x1eb -> off=0x0 cb=0000000000000079 uValue=00000000000f9631 'vds_build_sg_list'
+vds_build_sg_list: ; 0xfac31 LB 0x79
+ push bp ; 55 ; 0xfac31 vds.c:87
+ mov bp, sp ; 89 e5 ; 0xfac32
+ push si ; 56 ; 0xfac34
+ push di ; 57 ; 0xfac35
+ mov di, ax ; 89 c7 ; 0xfac36
+ mov si, dx ; 89 d6 ; 0xfac38
+ mov ax, bx ; 89 d8 ; 0xfac3a
+ mov dx, cx ; 89 ca ; 0xfac3c
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfac3e vds.c:92
+ mov es, si ; 8e c6 ; 0xfac41
+ mov word [es:di], bx ; 26 89 1d ; 0xfac43
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xfac46
+ mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xfac49
+ call 0ac13h ; e8 c3 ff ; 0xfac4d vds.c:93
+ mov es, si ; 8e c6 ; 0xfac50
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfac52
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfac56
+ mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xfac5a vds.c:94
+ call 0abf6h ; e8 93 ff ; 0xfac60 vds.c:95
+ test ax, ax ; 85 c0 ; 0xfac63
+ je short 0ac7ah ; 74 13 ; 0xfac65
+ mov es, si ; 8e c6 ; 0xfac67 vds.c:97
+ mov ax, 08105h ; b8 05 81 ; 0xfac69
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfac6c
+ int 04bh ; cd 4b ; 0xfac6f
+ jc near 0ac77h ; 0f 82 02 00 ; 0xfac71
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfac75
+ cbw ; 98 ; 0xfac77
+ jmp short 0aca1h ; eb 27 ; 0xfac78 vds.c:98
+ mov es, si ; 8e c6 ; 0xfac7a vds.c:100
+ mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xfac7c
+ mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xfac82 vds.c:101
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xfac86
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xfac8a
+ mov word [es:di+012h], ax ; 26 89 45 12 ; 0xfac8e
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xfac92 vds.c:102
+ mov word [es:di+014h], ax ; 26 89 45 14 ; 0xfac95
+ mov ax, bx ; 89 d8 ; 0xfac99
+ mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xfac9b
+ xor ax, bx ; 31 d8 ; 0xfac9f vds.c:103
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaca1 vds.c:106
+ pop di ; 5f ; 0xfaca4
+ pop si ; 5e ; 0xfaca5
+ pop bp ; 5d ; 0xfaca6
+ retn 00004h ; c2 04 00 ; 0xfaca7
+ ; disGetNextSymbol 0xfacaa LB 0x172 -> off=0x0 cb=0000000000000030 uValue=00000000000f96aa 'vds_free_sg_list'
+vds_free_sg_list: ; 0xfacaa LB 0x30
+ push bp ; 55 ; 0xfacaa vds.c:112
+ mov bp, sp ; 89 e5 ; 0xfacab
+ push bx ; 53 ; 0xfacad
+ push di ; 57 ; 0xfacae
+ mov bx, ax ; 89 c3 ; 0xfacaf
+ call 0abf6h ; e8 42 ff ; 0xfacb1 vds.c:116
+ test ax, ax ; 85 c0 ; 0xfacb4
+ je short 0accbh ; 74 13 ; 0xfacb6
+ mov di, bx ; 89 df ; 0xfacb8 vds.c:118
+ mov es, dx ; 8e c2 ; 0xfacba
+ mov ax, 08106h ; b8 06 81 ; 0xfacbc
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfacbf
+ int 04bh ; cd 4b ; 0xfacc2
+ jc near 0accah ; 0f 82 02 00 ; 0xfacc4
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfacc8
+ cbw ; 98 ; 0xfacca
+ mov es, dx ; 8e c2 ; 0xfaccb vds.c:126
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xfaccd
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfacd3 vds.c:128
+ pop di ; 5f ; 0xfacd6
+ pop bx ; 5b ; 0xfacd7
+ pop bp ; 5d ; 0xfacd8
+ retn ; c3 ; 0xfacd9
+ ; disGetNextSymbol 0xfacda LB 0x142 -> off=0x6 cb=0000000000000040 uValue=00000000000f96e0 '__U4M'
+ db 000h, 000h, 000h, 000h, 000h, 000h
+__U4M: ; 0xface0 LB 0x40
+ pushfw ; 9c ; 0xface0 __U4M.asm:51
+ push eax ; 66 50 ; 0xface1 __U4M.asm:54
+ push edx ; 66 52 ; 0xface3 __U4M.asm:55
+ push ecx ; 66 51 ; 0xface5 __U4M.asm:56
+ rol eax, 010h ; 66 c1 c0 10 ; 0xface7 __U4M.asm:58
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xfaceb __U4M.asm:59
+ ror eax, 010h ; 66 c1 c8 10 ; 0xfaced __U4M.asm:60
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfacf1 __U4M.asm:61
+ shr ecx, 010h ; 66 c1 e9 10 ; 0xfacf4 __U4M.asm:63
+ db 08bh, 0cbh
+ ; mov cx, bx ; 8b cb ; 0xfacf8 __U4M.asm:64
+ mul ecx ; 66 f7 e1 ; 0xfacfa __U4M.asm:66
+ pop ecx ; 66 59 ; 0xfacfd __U4M.asm:68
+ pop edx ; 66 5a ; 0xfacff __U4M.asm:70
+ ror eax, 010h ; 66 c1 c8 10 ; 0xfad01 __U4M.asm:71
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfad05 __U4M.asm:72
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfad07 __U4M.asm:73
+ pop ax ; 58 ; 0xfad0a __U4M.asm:74
+ rol eax, 010h ; 66 c1 c0 10 ; 0xfad0b __U4M.asm:75
+ popfw ; 9d ; 0xfad0f __U4M.asm:119
+ retn ; c3 ; 0xfad10 __U4M.asm:120
+ times 0xf db 0
+ ; disGetNextSymbol 0xfad20 LB 0xfc -> off=0x0 cb=0000000000000040 uValue=00000000000f9720 '__U4D'
+__U4D: ; 0xfad20 LB 0x40
+ pushfw ; 9c ; 0xfad20 __U4D.asm:59
+ push eax ; 66 50 ; 0xfad21 __U4D.asm:62
+ push edx ; 66 52 ; 0xfad23 __U4D.asm:63
+ push ecx ; 66 51 ; 0xfad25 __U4D.asm:64
+ rol eax, 010h ; 66 c1 c0 10 ; 0xfad27 __U4D.asm:66
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xfad2b __U4D.asm:67
+ ror eax, 010h ; 66 c1 c8 10 ; 0xfad2d __U4D.asm:68
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfad31 __U4D.asm:69
+ shr ecx, 010h ; 66 c1 e9 10 ; 0xfad34 __U4D.asm:71
+ db 08bh, 0cbh
+ ; mov cx, bx ; 8b cb ; 0xfad38 __U4D.asm:72
+ div ecx ; 66 f7 f1 ; 0xfad3a __U4D.asm:74
+ db 08bh, 0dah
+ ; mov bx, dx ; 8b da ; 0xfad3d __U4D.asm:76
+ pop ecx ; 66 59 ; 0xfad3f __U4D.asm:77
+ shr edx, 010h ; 66 c1 ea 10 ; 0xfad41 __U4D.asm:78
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xfad45 __U4D.asm:79
+ pop edx ; 66 5a ; 0xfad47 __U4D.asm:81
+ ror eax, 010h ; 66 c1 c8 10 ; 0xfad49 __U4D.asm:82
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfad4d __U4D.asm:83
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfad4f __U4D.asm:84
+ pop ax ; 58 ; 0xfad52 __U4D.asm:85
+ rol eax, 010h ; 66 c1 c0 10 ; 0xfad53 __U4D.asm:86
+ popfw ; 9d ; 0xfad57 __U4D.asm:146
+ retn ; c3 ; 0xfad58 __U4D.asm:147
+ times 0x7 db 0
+ ; disGetNextSymbol 0xfad60 LB 0xbc -> off=0x0 cb=0000000000000010 uValue=00000000000f9760 '__U8RS'
+__U8RS: ; 0xfad60 LB 0x10
+ test si, si ; 85 f6 ; 0xfad60 __U8RS.asm:50
+ je short 0ad6fh ; 74 0b ; 0xfad62 __U8RS.asm:51
+ shr ax, 1 ; d1 e8 ; 0xfad64 __U8RS.asm:53
+ rcr bx, 1 ; d1 db ; 0xfad66 __U8RS.asm:54
+ rcr cx, 1 ; d1 d9 ; 0xfad68 __U8RS.asm:55
+ rcr dx, 1 ; d1 da ; 0xfad6a __U8RS.asm:56
+ dec si ; 4e ; 0xfad6c __U8RS.asm:57
+ jne short 0ad64h ; 75 f5 ; 0xfad6d __U8RS.asm:58
+ retn ; c3 ; 0xfad6f __U8RS.asm:60
+ ; disGetNextSymbol 0xfad70 LB 0xac -> off=0x0 cb=0000000000000010 uValue=00000000000f9770 '__U8LS'
+__U8LS: ; 0xfad70 LB 0x10
+ test si, si ; 85 f6 ; 0xfad70 __U8LS.asm:50
+ je short 0ad7fh ; 74 0b ; 0xfad72 __U8LS.asm:51
+ sal dx, 1 ; d1 e2 ; 0xfad74 __U8LS.asm:53
+ rcl cx, 1 ; d1 d1 ; 0xfad76 __U8LS.asm:54
+ rcl bx, 1 ; d1 d3 ; 0xfad78 __U8LS.asm:55
+ rcl ax, 1 ; d1 d0 ; 0xfad7a __U8LS.asm:56
+ dec si ; 4e ; 0xfad7c __U8LS.asm:57
+ jne short 0ad74h ; 75 f5 ; 0xfad7d __U8LS.asm:58
+ retn ; c3 ; 0xfad7f __U8LS.asm:60
+ ; disGetNextSymbol 0xfad80 LB 0x9c -> off=0x0 cb=0000000000000010 uValue=00000000000f9780 '_fmemset_'
+_fmemset_: ; 0xfad80 LB 0x10
+ push di ; 57 ; 0xfad80 fmemset.asm:52
+ mov es, dx ; 8e c2 ; 0xfad81 fmemset.asm:54
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfad83 fmemset.asm:55
+ xchg al, bl ; 86 d8 ; 0xfad85 fmemset.asm:56
+ rep stosb ; f3 aa ; 0xfad87 fmemset.asm:57
+ xchg al, bl ; 86 d8 ; 0xfad89 fmemset.asm:58
+ pop di ; 5f ; 0xfad8b fmemset.asm:60
+ retn ; c3 ; 0xfad8c fmemset.asm:61
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfad90 LB 0x8c -> off=0x0 cb=000000000000003a uValue=00000000000f9790 '_fmemcpy_'
+_fmemcpy_: ; 0xfad90 LB 0x3a
+ push bp ; 55 ; 0xfad90 fmemcpy.asm:52
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfad91 fmemcpy.asm:53
+ push di ; 57 ; 0xfad93 fmemcpy.asm:54
+ push DS ; 1e ; 0xfad94 fmemcpy.asm:55
+ push si ; 56 ; 0xfad95 fmemcpy.asm:56
+ mov es, dx ; 8e c2 ; 0xfad96 fmemcpy.asm:58
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfad98 fmemcpy.asm:59
+ mov ds, cx ; 8e d9 ; 0xfad9a fmemcpy.asm:60
+ db 08bh, 0f3h
+ ; mov si, bx ; 8b f3 ; 0xfad9c fmemcpy.asm:61
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfad9e fmemcpy.asm:62
+ rep movsb ; f3 a4 ; 0xfada1 fmemcpy.asm:63
+ pop si ; 5e ; 0xfada3 fmemcpy.asm:65
+ pop DS ; 1f ; 0xfada4 fmemcpy.asm:66
+ pop di ; 5f ; 0xfada5 fmemcpy.asm:67
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xfada6 fmemcpy.asm:68
+ pop bp ; 5d ; 0xfada8 fmemcpy.asm:69
+ retn ; c3 ; 0xfada9 fmemcpy.asm:70
+ add byte [bx+si], al ; 00 00 ; 0xfadaa
+ add byte [bx+si], al ; 00 00 ; 0xfadac
+ add byte [bx+si], al ; 00 00 ; 0xfadae
+ loopne 0ad5fh ; e0 ad ; 0xfadb0
+ loop 0ad61h ; e2 ad ; 0xfadb2
+ in ax, DX ; ed ; 0xfadb4
+ lodsw ; ad ; 0xfadb5
+ in ax, DX ; ed ; 0xfadb6
+ lodsw ; ad ; 0xfadb7
+ in ax, DX ; ed ; 0xfadb8
+ lodsw ; ad ; 0xfadb9
+ out DX, ax ; ef ; 0xfadba
+ lodsw ; ad ; 0xfadbb
+ out DX, ax ; ef ; 0xfadbc
+ lodsw ; ad ; 0xfadbd
+ db 0f1h
+ ; icebp ; f1 ; 0xfadbe
+ lodsw ; ad ; 0xfadbf
+ cmc ; f5 ; 0xfadc0
+ lodsw ; ad ; 0xfadc1
+ cmc ; f5 ; 0xfadc2
+ lodsw ; ad ; 0xfadc3
+ imul word [di-05204h] ; f7 ad fc ad ; 0xfadc4
+ db 0feh
+ lodsw ; ad ; 0xfadc9
+ ; disGetNextSymbol 0xfadca LB 0x52 -> off=0x0 cb=0000000000000041 uValue=00000000000097ca 'apm_worker'
+apm_worker: ; 0xfadca LB 0x41
+ sti ; fb ; 0xfadca apm_pm.asm:66
+ push ax ; 50 ; 0xfadcb apm_pm.asm:68
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfadcc apm_pm.asm:69
+ sub AL, strict byte 004h ; 2c 04 ; 0xfadce apm_pm.asm:70
+ db 08bh, 0e8h
+ ; mov bp, ax ; 8b e8 ; 0xfadd0 apm_pm.asm:71
+ sal bp, 1 ; d1 e5 ; 0xfadd2 apm_pm.asm:72
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfadd4 apm_pm.asm:73
+ pop ax ; 58 ; 0xfadd6 apm_pm.asm:74
+ mov AH, strict byte 053h ; b4 53 ; 0xfadd7 apm_pm.asm:75
+ jnc short 0ae07h ; 73 2c ; 0xfadd9 apm_pm.asm:76
+ jmp word [cs:bp-05250h] ; 2e ff a6 b0 ad ; 0xfaddb apm_pm.asm:78
+ jmp short 0ae05h ; eb 23 ; 0xfade0 apm_pm.asm:81
+ push CS ; 0e ; 0xfade2 apm_pm.asm:90
+ pop ax ; 58 ; 0xfade3 apm_pm.asm:91
+ test ax, strict word 00003h ; a9 03 00 ; 0xfade4 apm_pm.asm:92
+ jne short 0ae05h ; 75 1c ; 0xfade7 apm_pm.asm:93
+ sti ; fb ; 0xfade9 apm_pm.asm:94
+ hlt ; f4 ; 0xfadea apm_pm.asm:95
+ jmp short 0ae05h ; eb 18 ; 0xfadeb apm_pm.asm:96
+ jmp short 0ae05h ; eb 16 ; 0xfaded apm_pm.asm:105
+ jmp short 0ae07h ; eb 16 ; 0xfadef apm_pm.asm:111
+ mov AH, strict byte 080h ; b4 80 ; 0xfadf1 apm_pm.asm:114
+ jmp short 0ae09h ; eb 14 ; 0xfadf3 apm_pm.asm:115
+ jmp short 0ae07h ; eb 10 ; 0xfadf5 apm_pm.asm:120
+ mov ax, 00102h ; b8 02 01 ; 0xfadf7 apm_pm.asm:123
+ jmp short 0ae05h ; eb 09 ; 0xfadfa apm_pm.asm:124
+ jmp short 0ae05h ; eb 07 ; 0xfadfc apm_pm.asm:128
+ mov BL, strict byte 000h ; b3 00 ; 0xfadfe apm_pm.asm:131
+ mov cx, strict word 00000h ; b9 00 00 ; 0xfae00 apm_pm.asm:132
+ jmp short 0ae05h ; eb 00 ; 0xfae03 apm_pm.asm:133
+ clc ; f8 ; 0xfae05 apm_pm.asm:136
+ retn ; c3 ; 0xfae06 apm_pm.asm:137
+ mov AH, strict byte 009h ; b4 09 ; 0xfae07 apm_pm.asm:140
+ stc ; f9 ; 0xfae09 apm_pm.asm:143
+ retn ; c3 ; 0xfae0a apm_pm.asm:144
+ ; disGetNextSymbol 0xfae0b LB 0x11 -> off=0x0 cb=0000000000000011 uValue=00000000000f980b 'apm_pm16_entry'
+apm_pm16_entry: ; 0xfae0b LB 0x11
+ mov AH, strict byte 002h ; b4 02 ; 0xfae0b apm_pm.asm:156
+ push DS ; 1e ; 0xfae0d apm_pm.asm:162
+ push bp ; 55 ; 0xfae0e apm_pm.asm:163
+ push CS ; 0e ; 0xfae0f apm_pm.asm:165
+ pop bp ; 5d ; 0xfae10 apm_pm.asm:166
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xfae11 apm_pm.asm:167
+ mov ds, bp ; 8e dd ; 0xfae14 apm_pm.asm:168
+ call 0adcah ; e8 b1 ff ; 0xfae16 apm_pm.asm:170
+ pop bp ; 5d ; 0xfae19 apm_pm.asm:172
+ pop DS ; 1f ; 0xfae1a apm_pm.asm:173
+ retf ; cb ; 0xfae1b apm_pm.asm:175
+
+ ; Padding 0x2be4 bytes at 0xfae1c
+ times 11236 db 0
+
+section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3d4 class=CODE group=AUTO
+ ; disGetNextSymbol 0xfda00 LB 0x3d4 -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service'
+bios32_service: ; 0xfda00 LB 0x26
+ pushfw ; 9c ; 0xfda00 pcibio32.asm:62
+ cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:64
+ jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:65
+ cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:67
+ inc bx ; 43 ; 0xfda09
+ dec cx ; 49 ; 0xfda0a
+ mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:68
+ jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:69
+ mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:71
+ 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:73
+ add byte [bx+si], al ; 00 00 ; 0xfda1c
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:74
+ popfw ; 9d ; 0xfda20 pcibio32.asm:76
+ retf ; cb ; 0xfda21 pcibio32.asm:77
+ mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:80
+ jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:81
+ ; disGetNextSymbol 0xfda26 LB 0x3ae -> off=0x0 cb=000000000000001a uValue=00000000000f0026 'pcibios32_entry'
+pcibios32_entry: ; 0xfda26 LB 0x1a
+ pushfw ; 9c ; 0xfda26 pcibio32.asm:90
+ cld ; fc ; 0xfda27 pcibio32.asm:91
+ push ES ; 06 ; 0xfda28 pcibio32.asm:93
+ pushaw ; 60 ; 0xfda29 pcibio32.asm:94
+ call 0db80h ; e8 53 01 ; 0xfda2a pcibio32.asm:95
+ add byte [bx+si], al ; 00 00 ; 0xfda2d
+ popaw ; 61 ; 0xfda2f pcibio32.asm:96
+ pop ES ; 07 ; 0xfda30 pcibio32.asm:97
+ popfw ; 9d ; 0xfda31 pcibio32.asm:99
+ retf ; cb ; 0xfda32 pcibio32.asm:100
+ times 0xd db 0
+ ; disGetNextSymbol 0xfda40 LB 0x394 -> off=0x0 cb=0000000000000021 uValue=00000000000f0040 'apm_pm32_entry'
+apm_pm32_entry: ; 0xfda40 LB 0x21
+ push bp ; 55 ; 0xfda40 apm_pm.asm:200
+ mov ebp, cs ; 66 8c cd ; 0xfda41 apm_pm.asm:202
+ push ebp ; 66 55 ; 0xfda44 apm_pm.asm:203
+ mov bp, 0da5fh ; bd 5f da ; 0xfda46 apm_pm.asm:204
+ add byte [bx+si], al ; 00 00 ; 0xfda49
+ push ebp ; 66 55 ; 0xfda4b apm_pm.asm:205
+ push CS ; 0e ; 0xfda4d apm_pm.asm:207
+ pop bp ; 5d ; 0xfda4e apm_pm.asm:208
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xfda4f apm_pm.asm:209
+ push ebp ; 66 55 ; 0xfda52 apm_pm.asm:210
+ mov bp, 0ae0dh ; bd 0d ae ; 0xfda54 apm_pm.asm:212
+ add byte [bx+si], al ; 00 00 ; 0xfda57
+ push ebp ; 66 55 ; 0xfda59 apm_pm.asm:213
+ mov AH, strict byte 003h ; b4 03 ; 0xfda5b apm_pm.asm:215
+ db 066h, 0cbh
+ ; retf ; 66 cb ; 0xfda5d
+ pop bp ; 5d ; 0xfda5f apm_pm.asm:222
+ retf ; cb ; 0xfda60 apm_pm.asm:223
+ ; disGetNextSymbol 0xfda61 LB 0x373 -> off=0x0 cb=0000000000000022 uValue=00000000000f0061 'pci32_select_reg_'
+pci32_select_reg_: ; 0xfda61 LB 0x22
+ push bp ; 55 ; 0xfda61 pci32.c:198
+ mov bp, sp ; 89 e5 ; 0xfda62
+ push bx ; 53 ; 0xfda64
+ and dl, 0fch ; 80 e2 fc ; 0xfda65 pci32.c:200
+ 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:201
+ pop bx ; 5b ; 0xfda80
+ pop bp ; 5d ; 0xfda81
+ retn ; c3 ; 0xfda82
+ ; disGetNextSymbol 0xfda83 LB 0x351 -> off=0x0 cb=00000000000000ff uValue=00000000000f0083 'pci32_find_device_'
+pci32_find_device_: ; 0xfda83 LB 0xff
+ push bp ; 55 ; 0xfda83 pci32.c:233
+ mov bp, sp ; 89 e5 ; 0xfda84
+ push si ; 56 ; 0xfda86
+ push di ; 57 ; 0xfda87
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda88
+ push ax ; 50 ; 0xfda8b
+ mov si, dx ; 89 d6 ; 0xfda8c
+ mov di, bx ; 89 df ; 0xfda8e
+ mov word [di-01ch], cx ; 89 4d e4 ; 0xfda90
+ test bx, bx ; 85 db ; 0xfda93 pci32.c:243
+ xor bx, bx ; 31 db ; 0xfda95 pci32.c:250
+ xor cl, cl ; 30 c9 ; 0xfda97 pci32.c:251
+ test bl, 007h ; f6 c3 07 ; 0xfda99 pci32.c:261
+ jne short 0dad8h ; 75 3a ; 0xfda9c
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfda9e pci32.c:262
+ 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:263
+ 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-00ch], al ; 88 45 f4 ; 0xfdab3
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfdab6 pci32.c:264
+ jne short 0dac2h ; 75 08 ; 0xfdab8
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfdaba pci32.c:265
+ jmp near 0db58h ; e9 98 00 ; 0xfdabd pci32.c:266
+ add byte [bx+si], al ; 00 00 ; 0xfdac0
+ test byte [di-00ch], 080h ; f6 45 f4 80 ; 0xfdac2 pci32.c:268
+ je short 0dad1h ; 74 09 ; 0xfdac6
+ mov word [di-010h], strict word 00001h ; c7 45 f0 01 00 ; 0xfdac8 pci32.c:269
+ add byte [bx+si], al ; 00 00 ; 0xfdacd
+ jmp short 0dad8h ; eb 07 ; 0xfdacf pci32.c:270
+ mov word [di-010h], strict word 00008h ; c7 45 f0 08 00 ; 0xfdad1 pci32.c:271
+ add byte [bx+si], al ; 00 00 ; 0xfdad6
+ mov al, byte [di-00ch] ; 8a 45 f4 ; 0xfdad8 pci32.c:282
+ and AL, strict byte 007h ; 24 07 ; 0xfdadb
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfdadd
+ jne short 0db05h ; 75 24 ; 0xfdadf
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdae1
+ mov dx, ax ; 89 c2 ; 0xfdae4
+ sar dx, 008h ; c1 fa 08 ; 0xfdae6
+ test dx, dx ; 85 d2 ; 0xfdae9
+ jne short 0db05h ; 75 18 ; 0xfdaeb
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdaed pci32.c:284
+ add byte [bx+si], al ; 00 00 ; 0xfdaf0
+ call 0da5fh ; e8 6a ff ; 0xfdaf2
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfeh ; ba fe 0c ; 0xfdaf7 pci32.c:285
+ add byte [bx+si], al ; 00 00 ; 0xfdafa
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdafc
+ in AL, DX ; ec ; 0xfdafe
+ cmp al, cl ; 38 c8 ; 0xfdaff pci32.c:286
+ jbe short 0db05h ; 76 02 ; 0xfdb01
+ mov cl, al ; 88 c1 ; 0xfdb03 pci32.c:287
+ test di, di ; 85 ff ; 0xfdb05 pci32.c:291
+ je short 0db10h ; 74 07 ; 0xfdb07
+ mov ax, strict word 00008h ; b8 08 00 ; 0xfdb09
+ add byte [bx+si], al ; 00 00 ; 0xfdb0c
+ jmp short 0db12h ; eb 02 ; 0xfdb0e
+ xor ax, ax ; 31 c0 ; 0xfdb10
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdb12
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb15
+ call 0da5fh ; e8 44 ff ; 0xfdb18
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfch ; ba fc 0c ; 0xfdb1d pci32.c:292
+ add byte [bx+si], al ; 00 00 ; 0xfdb20
+ in ax, DX ; ed ; 0xfdb22
+ mov word [di-014h], ax ; 89 45 ec ; 0xfdb23
+ mov word [di-018h], strict word 00000h ; c7 45 e8 00 00 ; 0xfdb26 pci32.c:293
+ add byte [bx+si], al ; 00 00 ; 0xfdb2b
+ test di, di ; 85 ff ; 0xfdb2d pci32.c:296
+ je short 0db42h ; 74 11 ; 0xfdb2f
+ cmp word [di-01ch], strict byte 00000h ; 83 7d e4 00 ; 0xfdb31 pci32.c:297
+ je short 0db3ch ; 74 05 ; 0xfdb35
+ shr ax, 010h ; c1 e8 10 ; 0xfdb37 pci32.c:298
+ jmp short 0db3fh ; eb 03 ; 0xfdb3a pci32.c:299
+ shr ax, 008h ; c1 e8 08 ; 0xfdb3c pci32.c:300
+ mov word [di-014h], ax ; 89 45 ec ; 0xfdb3f
+ mov ax, word [di-014h] ; 8b 45 ec ; 0xfdb42 pci32.c:307
+ cmp ax, word [di-020h] ; 3b 45 e0 ; 0xfdb45
+ je short 0db50h ; 74 06 ; 0xfdb48
+ cmp word [di-018h], strict byte 00000h ; 83 7d e8 00 ; 0xfdb4a pci32.c:308
+ je short 0db57h ; 74 07 ; 0xfdb4e
+ dec si ; 4e ; 0xfdb50
+ cmp esi, strict byte 0ffffffffh ; 66 83 fe ff ; 0xfdb51
+ je short 0db6bh ; 74 14 ; 0xfdb55
+ add bx, word [di-010h] ; 03 5d f0 ; 0xfdb57 pci32.c:316
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb5a pci32.c:317
+ sar ax, 008h ; c1 f8 08 ; 0xfdb5d
+ movzx dx, cl ; 0f b6 d1 ; 0xfdb60
+ cmp ax, dx ; 39 d0 ; 0xfdb63
+ jle near 0da97h ; 0f 8e 2e ff ; 0xfdb65
+ db 0ffh
+ jmp word [bp-07dh] ; ff 66 83 ; 0xfdb6a
+ db 0feh
+ push word [di+005h] ; ff 75 05 ; 0xfdb6e
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb71
+ jmp short 0db7bh ; eb 05 ; 0xfdb74
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb76
+ add byte [bx+si], al ; 00 00 ; 0xfdb79
+ lea sp, [di-008h] ; 8d 65 f8 ; 0xfdb7b pci32.c:324
+ pop di ; 5f ; 0xfdb7e
+ pop si ; 5e ; 0xfdb7f
+ pop bp ; 5d ; 0xfdb80
+ retn ; c3 ; 0xfdb81
+ ; disGetNextSymbol 0xfdb82 LB 0x252 -> off=0x0 cb=0000000000000252 uValue=00000000000f0182 '_pci32_function'
+_pci32_function: ; 0xfdb82 LB 0x252
+ push bp ; 55 ; 0xfdb82 pci32.c:326
+ mov bp, sp ; 89 e5 ; 0xfdb83
+ push bx ; 53 ; 0xfdb85
+ push si ; 56 ; 0xfdb86
+ push di ; 57 ; 0xfdb87
+ push ax ; 50 ; 0xfdb88
+ and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb89 pci32.c:333
+ sub AL, strict byte 0feh ; 2c fe ; 0xfdb91
+ inc word [bx+si] ; ff 00 ; 0xfdb93
+ add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb95
+ xor ah, ah ; 30 e4 ; 0xfdb99
+ cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb9b
+ jbe near 0dc40h ; 0f 86 9b 00 ; 0xfdba1
+ add byte [bx+si], al ; 00 00 ; 0xfdba5
+ cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdba7
+ lodsw ; ad ; 0xfdbad
+ add word [bx+si], ax ; 01 00 ; 0xfdbae
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdbb0
+ or byte [bx+si], al ; 08 00 ; 0xfdbb3
+ jc near 0ddbah ; 0f 82 01 02 ; 0xfdbb5
+ add byte [bx+si], al ; 00 00 ; 0xfdbb9
+ cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdbbb
+ lodsb ; ac ; 0xfdbc1
+ add byte [bx+si], al ; 00 00 ; 0xfdbc2
+ add cl, ch ; 00 e9 ; 0xfdbc4
+ repne add word [bx+si], ax ; f2 01 00 ; 0xfdbc6
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdbc9
+ add al, byte [bx+si] ; 02 00 ; 0xfdbcc
+ je short 0dbf8h ; 74 28 ; 0xfdbce
+ cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdbd0
+ loop 0dbd9h ; e2 01 ; 0xfdbd6
+ add byte [bx+si], al ; 00 00 ; 0xfdbd8
+ mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdbda pci32.c:338
+ inc bp ; 45 ; 0xfdbe2
+ sbb byte [bx+si], dl ; 18 10 ; 0xfdbe3
+ add dh, byte [bx+di] ; 02 31 ; 0xfdbe5
+ sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbe7
+ and bh, al ; 20 c7 ; 0xfdbeb
+ inc bp ; 45 ; 0xfdbed
+ sbb AL, strict byte 050h ; 1c 50 ; 0xfdbee
+ inc bx ; 43 ; 0xfdbf0
+ dec cx ; 49 ; 0xfdbf1
+ and cl, ch ; 20 e9 ; 0xfdbf2
+ aam 001h ; d4 01 ; 0xfdbf4
+ add byte [bx+si], al ; 00 00 ; 0xfdbf6
+ cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbf8 pci32.c:348
+ jne short 0dc0ch ; 75 0d ; 0xfdbfd
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbff pci32.c:349
+ xor ah, ah ; 30 e4 ; 0xfdc02
+ or ah, 083h ; 80 cc 83 ; 0xfdc04
+ jmp near 0ddc2h ; e9 b8 01 ; 0xfdc07 pci32.c:350
+ add byte [bx+si], al ; 00 00 ; 0xfdc0a
+ xor cx, cx ; 31 c9 ; 0xfdc0c pci32.c:352
+ xor bx, bx ; 31 db ; 0xfdc0e
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc10
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdc14
+ sal ax, 010h ; c1 e0 10 ; 0xfdc18
+ db 00fh, 0b7h, 075h, 01ch
+ ; movzx si, [di+01ch] ; 0f b7 75 1c ; 0xfdc1b
+ or ax, si ; 09 f0 ; 0xfdc1f
+ call 0da81h ; e8 5d fe ; 0xfdc21
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdc25
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdc29
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc2c pci32.c:354
+ xor ah, ah ; 30 e4 ; 0xfdc2f
+ or ah, 086h ; 80 cc 86 ; 0xfdc31
+ jmp near 0ddc2h ; e9 8b 01 ; 0xfdc34
+ add byte [bx+si], al ; 00 00 ; 0xfdc37
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc39 pci32.c:355
+ jmp near 0ddcah ; e9 8a 01 ; 0xfdc3d pci32.c:360
+ add byte [bx+si], al ; 00 00 ; 0xfdc40
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc42 pci32.c:362
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc46
+ xor cx, cx ; 31 c9 ; 0xfdc49
+ mov bx, strict word 00001h ; bb 01 00 ; 0xfdc4b
+ add byte [bx+si], al ; 00 00 ; 0xfdc4e
+ call 0da81h ; e8 2e fe ; 0xfdc50
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdc54
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdc58
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc5b pci32.c:364
+ xor ah, ah ; 30 e4 ; 0xfdc5e
+ or ah, 086h ; 80 cc 86 ; 0xfdc60
+ jmp near 0ddc2h ; e9 5c 01 ; 0xfdc63 pci32.c:365
+ add byte [bx+si], al ; 00 00 ; 0xfdc66
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc68 pci32.c:367
+ jmp near 0ddcah ; e9 5b 01 ; 0xfdc6c pci32.c:369
+ add byte [bx+si], al ; 00 00 ; 0xfdc6f
+ cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc71 pci32.c:376
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc79 pci32.c:377
+ xor ah, ah ; 30 e4 ; 0xfdc7c
+ or ah, 087h ; 80 cc 87 ; 0xfdc7e
+ jmp near 0ddc2h ; e9 3e 01 ; 0xfdc81 pci32.c:378
+ add byte [bx+si], al ; 00 00 ; 0xfdc84
+ db 00fh, 0b7h, 055h, 008h
+ ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc86 pci32.c:380
+ db 00fh, 0b7h, 045h, 018h
+ ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc8a
+ call 0da5fh ; e8 ce fd ; 0xfdc8e
+ db 0ffh
+ dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc92
+ xor ah, ah ; 30 e4 ; 0xfdc96
+ cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc98
+ jbe short 0dd0fh ; 76 6f ; 0xfdc9e
+ cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdca0
+ test ax, strict word 00000h ; a9 00 00 ; 0xfdca6
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdca9
+ or AL, strict byte 000h ; 0c 00 ; 0xfdcac
+ je near 0dd35h ; 0f 84 83 00 ; 0xfdcae
+ add byte [bx+si], al ; 00 00 ; 0xfdcb2
+ cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdcb4
+ jmp near 0ddcah ; e9 0d 01 ; 0xfdcba
+ add byte [bx+si], al ; 00 00 ; 0xfdcbd
+ cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdcbf
+ cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdcc5
+ std ; fd ; 0xfdccb
+ add byte [bx+si], al ; 00 00 ; 0xfdccc
+ add byte [bp+di+0205dh], cl ; 00 8b 5d 20 ; 0xfdcce
+ xor bl, bl ; 30 db ; 0xfdcd2
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcd4
+ xor ah, ah ; 30 e4 ; 0xfdcd7
+ and AL, strict byte 003h ; 24 03 ; 0xfdcd9
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdcdb
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcde
+ add byte [bx+si], al ; 00 00 ; 0xfdce2
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdce4
+ in AL, DX ; ec ; 0xfdce6
+ or bx, ax ; 09 c3 ; 0xfdce7
+ mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdce9
+ jmp near 0ddcah ; e9 da 00 ; 0xfdced pci32.c:384
+ add byte [bx+si], al ; 00 00 ; 0xfdcf0
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcf2 pci32.c:386
+ xor ah, ah ; 30 e4 ; 0xfdcf5
+ and AL, strict byte 002h ; 24 02 ; 0xfdcf7
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdcf9
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcfc
+ add byte [bx+si], al ; 00 00 ; 0xfdd00
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdd02
+ in eax, DX ; 66 ed ; 0xfdd04
+ mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdd06
+ jmp near 0ddcah ; e9 bd 00 ; 0xfdd0a pci32.c:387
+ add byte [bx+si], al ; 00 00 ; 0xfdd0d
+ mov dx, 00cfch ; ba fc 0c ; 0xfdd0f pci32.c:389
+ add byte [bx+si], al ; 00 00 ; 0xfdd12
+ in ax, DX ; ed ; 0xfdd14
+ mov word [di+020h], ax ; 89 45 20 ; 0xfdd15
+ jmp near 0ddcah ; e9 af 00 ; 0xfdd18 pci32.c:390
+ add byte [bx+si], al ; 00 00 ; 0xfdd1b
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd1d pci32.c:392
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd20
+ xor dh, dh ; 30 f6 ; 0xfdd23
+ and dl, 003h ; 80 e2 03 ; 0xfdd25
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdd28
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd2b
+ add byte [bx+si], al ; 00 00 ; 0xfdd2f
+ out DX, AL ; ee ; 0xfdd31
+ jmp near 0ddcah ; e9 95 00 ; 0xfdd32 pci32.c:393
+ add byte [bx+si], al ; 00 00 ; 0xfdd35
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd37 pci32.c:395
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd3b
+ xor dh, dh ; 30 f6 ; 0xfdd3e
+ and dl, 002h ; 80 e2 02 ; 0xfdd40
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdd43
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd46
+ add byte [bx+si], al ; 00 00 ; 0xfdd4a
+ out DX, eax ; 66 ef ; 0xfdd4c
+ jmp near 0ddcah ; e9 79 00 ; 0xfdd4e pci32.c:396
+ add byte [bx+si], al ; 00 00 ; 0xfdd51
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd53 pci32.c:398
+ mov dx, 00cfch ; ba fc 0c ; 0xfdd56
+ add byte [bx+si], al ; 00 00 ; 0xfdd59
+ out DX, ax ; ef ; 0xfdd5b
+ jmp short 0ddcch ; eb 6e ; 0xfdd5c pci32.c:402
+ db 00fh, 0b7h, 045h, 008h
+ ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd5e pci32.c:404
+ mov es, [di+028h] ; 8e 45 28 ; 0xfdd62
+ mov [di-010h], es ; 8c 45 f0 ; 0xfdd65
+ mov bx, ax ; 89 c3 ; 0xfdd68
+ mov edx, dword [di] ; 66 8b 15 ; 0xfdd6a pci32.c:408
+ pushaw ; 60 ; 0xfdd6d
+ rep add byte [bx+si], al ; f3 00 00 ; 0xfdd6e
+ db 066h, 026h, 03bh, 010h
+ ; cmp edx, dword [es:bx+si] ; 66 26 3b 10 ; 0xfdd71
+ jbe short 0dd89h ; 76 12 ; 0xfdd75
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd77 pci32.c:409
+ xor ah, ah ; 30 e4 ; 0xfdd7a
+ or ah, 089h ; 80 cc 89 ; 0xfdd7c
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd7f
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd83 pci32.c:410
+ jmp short 0ddadh ; eb 24 ; 0xfdd87 pci32.c:411
+ db 00fh, 0b7h, 0cah
+ ; movzx cx, dx ; 0f b7 ca ; 0xfdd89 pci32.c:412
+ db 066h, 026h, 08bh, 078h, 006h
+ ; mov edi, dword [es:bx+si+006h] ; 66 26 8b 78 06 ; 0xfdd8c
+ mov ax, word [es:bx+si+002h] ; 26 8b 40 02 ; 0xfdd91
+ mov dx, ds ; 8c da ; 0xfdd95
+ mov si, 0f180h ; be 80 f1 ; 0xfdd97
+ add byte [bx+si], al ; 00 00 ; 0xfdd9a
+ mov es, di ; 8e c7 ; 0xfdd9c
+ mov di, ax ; 89 c7 ; 0xfdd9e
+ push DS ; 1e ; 0xfdda0
+ db 066h, 08eh, 0dah
+ ; mov ds, edx ; 66 8e da ; 0xfdda1
+ rep movsb ; f3 a4 ; 0xfdda4
+ pop DS ; 1f ; 0xfdda6
+ mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdda7 pci32.c:414
+ pushaw ; 60 ; 0xfddaf
+ rep add byte [bx+si], al ; f3 00 00 ; 0xfddb0
+ mov es, [di-010h] ; 8e 45 f0 ; 0xfddb3
+ db 066h, 026h, 089h, 003h
+ ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfddb6
+ jmp short 0ddcch ; eb 10 ; 0xfddba pci32.c:417
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfddbc pci32.c:420
+ xor ah, ah ; 30 e4 ; 0xfddbf
+ or ah, 081h ; 80 cc 81 ; 0xfddc1
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfddc4
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfddc8 pci32.c:421
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfddcc pci32.c:423
+ pop di ; 5f ; 0xfddcf
+ pop si ; 5e ; 0xfddd0
+ pop bx ; 5b ; 0xfddd1
+ pop bp ; 5d ; 0xfddd2
+ retn ; c3 ; 0xfddd3
+
+section BIOS32CONST progbits vstart=0xddd4 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32CONST2 progbits vstart=0xddd4 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32_DATA progbits vstart=0xddd4 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+ ; Padding 0x22c bytes at 0xfddd4
+ times 556 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:247
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:248
+ ; 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:250
+ out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:251
+ retn ; c3 ; 0xfe038 orgs.asm:252
+ ; 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:259
+ mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:260
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:261
+ loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:262
+ retn ; c3 ; 0xfe043 orgs.asm:263
+ ; 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:271
+ mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:272
+ out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:273
+ ; 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:276
+ mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:277
+ jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:278
+ ; 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:287
+ smsw ax ; 0f 01 e0 ; 0xfe05c orgs.asm:293
+ test ax, strict word 00001h ; a9 01 00 ; 0xfe05f orgs.asm:294
+ je short 0e06ah ; 74 06 ; 0xfe062 orgs.asm:295
+ mov AL, strict byte 001h ; b0 01 ; 0xfe064 orgs.asm:304
+ out strict byte 092h, AL ; e6 92 ; 0xfe066 orgs.asm:305
+ jmp short 0e068h ; eb fe ; 0xfe068 orgs.asm:306
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe06a orgs.asm:311
+ out strict byte 070h, AL ; e6 70 ; 0xfe06c orgs.asm:312
+ in AL, strict byte 071h ; e4 71 ; 0xfe06e orgs.asm:313
+ xchg ah, al ; 86 c4 ; 0xfe070 orgs.asm:316
+ in AL, strict byte 064h ; e4 64 ; 0xfe072 orgs.asm:320
+ test AL, strict byte 004h ; a8 04 ; 0xfe074 orgs.asm:321
+ je short 0e08bh ; 74 13 ; 0xfe076 orgs.asm:322
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe078 orgs.asm:325
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfe07a orgs.asm:326
+ jne short 0e08bh ; 75 0d ; 0xfe07c orgs.asm:327
+ mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe07e orgs.asm:333
+ cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe083 orgs.asm:334
+ jne short 0e064h ; 75 d9 ; 0xfe089 orgs.asm:335
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe08b orgs.asm:339
+ out strict byte 070h, AL ; e6 70 ; 0xfe08d orgs.asm:340
+ mov AL, strict byte 000h ; b0 00 ; 0xfe08f orgs.asm:341
+ out strict byte 071h, AL ; e6 71 ; 0xfe091 orgs.asm:342
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe093 orgs.asm:346
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe095 orgs.asm:347
+ je short 0e0abh ; 74 12 ; 0xfe097 orgs.asm:348
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe099 orgs.asm:349
+ je short 0e0abh ; 74 0e ; 0xfe09b orgs.asm:350
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfe09d orgs.asm:352
+ out strict byte 00dh, AL ; e6 0d ; 0xfe09f orgs.asm:355
+ out strict byte 0dah, AL ; e6 da ; 0xfe0a1 orgs.asm:356
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe0a3 orgs.asm:359
+ out strict byte 0d6h, AL ; e6 d6 ; 0xfe0a5 orgs.asm:360
+ mov AL, strict byte 000h ; b0 00 ; 0xfe0a7 orgs.asm:361
+ out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a9 orgs.asm:362
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe0ab orgs.asm:366
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfe0ad orgs.asm:367
+ je short 0e0c9h ; 74 18 ; 0xfe0af orgs.asm:368
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0b1 orgs.asm:370
+ jnc short 0e0c9h ; 73 14 ; 0xfe0b3 orgs.asm:371
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe0b5 orgs.asm:372
+ jne short 0e0bch ; 75 03 ; 0xfe0b7 orgs.asm:373
+ jmp near 0e363h ; e9 a7 02 ; 0xfe0b9 orgs.asm:374
+ mov sp, 00400h ; bc 00 04 ; 0xfe0bc orgs.asm:377
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfe0bf orgs.asm:379
+ je short 0e044h ; 74 81 ; 0xfe0c1 orgs.asm:380
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0c3 orgs.asm:382
+ je short 0e04ah ; 74 83 ; 0xfe0c5 orgs.asm:383
+ jmp short 0e0c9h ; eb 00 ; 0xfe0c7 orgs.asm:387
+ ; disGetNextSymbol 0xfe0c9 LB 0x1f37 -> off=0x0 cb=00000000000001f5 uValue=00000000000f00c9 'normal_post'
+normal_post: ; 0xfe0c9 LB 0x1f5
+ mov ax, 07800h ; b8 00 78 ; 0xfe0c9 orgs.asm:396
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xfe0cc orgs.asm:397
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe0ce orgs.asm:398
+ mov ds, ax ; 8e d8 ; 0xfe0d0 orgs.asm:399
+ mov ss, ax ; 8e d0 ; 0xfe0d2 orgs.asm:400
+ mov es, ax ; 8e c0 ; 0xfe0d4 orgs.asm:404
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0d6 orgs.asm:405
+ cld ; fc ; 0xfe0d8 orgs.asm:406
+ mov cx, 00239h ; b9 39 02 ; 0xfe0d9 orgs.asm:407
+ rep stosw ; f3 ab ; 0xfe0dc orgs.asm:408
+ inc di ; 47 ; 0xfe0de orgs.asm:409
+ inc di ; 47 ; 0xfe0df orgs.asm:410
+ mov cx, 005c6h ; b9 c6 05 ; 0xfe0e0 orgs.asm:411
+ rep stosw ; f3 ab ; 0xfe0e3 orgs.asm:412
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0e5 orgs.asm:416
+ add bx, 01000h ; 81 c3 00 10 ; 0xfe0e7 orgs.asm:418
+ cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0eb orgs.asm:419
+ jnc short 0e0fch ; 73 0b ; 0xfe0ef orgs.asm:420
+ mov es, bx ; 8e c3 ; 0xfe0f1 orgs.asm:421
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0f3 orgs.asm:422
+ mov cx, 08000h ; b9 00 80 ; 0xfe0f5 orgs.asm:423
+ rep stosw ; f3 ab ; 0xfe0f8 orgs.asm:424
+ jmp short 0e0e7h ; eb eb ; 0xfe0fa orgs.asm:425
+ mov es, bx ; 8e c3 ; 0xfe0fc orgs.asm:427
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0fe orgs.asm:428
+ mov cx, 07ff8h ; b9 f8 7f ; 0xfe100 orgs.asm:429
+ rep stosw ; f3 ab ; 0xfe103 orgs.asm:430
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe105 orgs.asm:431
+ push CS ; 0e ; 0xfe107 orgs.asm:113
+ pop DS ; 1f ; 0xfe108 orgs.asm:114
+ cld ; fc ; 0xfe109 orgs.asm:115
+ call 01874h ; e8 67 37 ; 0xfe10a orgs.asm:435
+ call 0e8e7h ; e8 d7 07 ; 0xfe10d orgs.asm:438
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe110 orgs.asm:442
+ mov ds, bx ; 8e db ; 0xfe112 orgs.asm:443
+ mov cx, strict word 00060h ; b9 60 00 ; 0xfe114 orgs.asm:444
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe117 orgs.asm:445
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe11a orgs.asm:446
+ call 0e039h ; e8 19 ff ; 0xfe11d orgs.asm:447
+ mov bx, 001a0h ; bb a0 01 ; 0xfe120 orgs.asm:452
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfe123 orgs.asm:453
+ call 0e039h ; e8 10 ff ; 0xfe126 orgs.asm:454
+ mov AL, strict byte 016h ; b0 16 ; 0xfe129 orgs.asm:457
+ out strict byte 070h, AL ; e6 70 ; 0xfe12b orgs.asm:458
+ in AL, strict byte 071h ; e4 71 ; 0xfe12d orgs.asm:459
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfe12f orgs.asm:460
+ mov AL, strict byte 015h ; b0 15 ; 0xfe131 orgs.asm:461
+ out strict byte 070h, AL ; e6 70 ; 0xfe133 orgs.asm:462
+ in AL, strict byte 071h ; e4 71 ; 0xfe135 orgs.asm:463
+ sub ax, strict byte 00001h ; 83 e8 01 ; 0xfe137 orgs.asm:464
+ mov word [00413h], ax ; a3 13 04 ; 0xfe13a orgs.asm:465
+ mov ax, 0e9cch ; b8 cc e9 ; 0xfe13d orgs.asm:104
+ mov word [00018h], ax ; a3 18 00 ; 0xfe140 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe143 orgs.asm:106
+ mov word [0001ah], ax ; a3 1a 00 ; 0xfe146 orgs.asm:107
+ mov ax, 0f84dh ; b8 4d f8 ; 0xfe149 orgs.asm:104
+ mov word [00044h], ax ; a3 44 00 ; 0xfe14c orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe14f orgs.asm:106
+ mov word [00046h], ax ; a3 46 00 ; 0xfe152 orgs.asm:107
+ mov ax, 0f841h ; b8 41 f8 ; 0xfe155 orgs.asm:104
+ mov word [00048h], ax ; a3 48 00 ; 0xfe158 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe15b orgs.asm:106
+ mov word [0004ah], ax ; a3 4a 00 ; 0xfe15e orgs.asm:107
+ mov ax, 0f859h ; b8 59 f8 ; 0xfe161 orgs.asm:104
+ mov word [00054h], ax ; a3 54 00 ; 0xfe164 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe167 orgs.asm:106
+ mov word [00056h], ax ; a3 56 00 ; 0xfe16a orgs.asm:107
+ mov ax, 0efd4h ; b8 d4 ef ; 0xfe16d orgs.asm:104
+ mov word [0005ch], ax ; a3 5c 00 ; 0xfe170 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe173 orgs.asm:106
+ mov word [0005eh], ax ; a3 5e 00 ; 0xfe176 orgs.asm:107
+ mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe179 orgs.asm:104
+ mov word [00060h], ax ; a3 60 00 ; 0xfe17c orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe17f orgs.asm:106
+ mov word [00062h], ax ; a3 62 00 ; 0xfe182 orgs.asm:107
+ mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe185 orgs.asm:104
+ mov word [00064h], ax ; a3 64 00 ; 0xfe188 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe18b orgs.asm:106
+ mov word [00066h], ax ; a3 66 00 ; 0xfe18e orgs.asm:107
+ mov ax, 0efedh ; b8 ed ef ; 0xfe191 orgs.asm:104
+ mov word [00070h], ax ; a3 70 00 ; 0xfe194 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe197 orgs.asm:106
+ mov word [00072h], ax ; a3 72 00 ; 0xfe19a orgs.asm:107
+ call 0e778h ; e8 d8 05 ; 0xfe19d orgs.asm:481
+ call 0f126h ; e8 83 0f ; 0xfe1a0 orgs.asm:485
+ call 0f151h ; e8 ab 0f ; 0xfe1a3 orgs.asm:486
+ mov ax, 0fe6eh ; b8 6e fe ; 0xfe1a6 orgs.asm:104
+ mov word [00068h], ax ; a3 68 00 ; 0xfe1a9 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1ac orgs.asm:106
+ mov word [0006ah], ax ; a3 6a 00 ; 0xfe1af orgs.asm:107
+ mov ax, 0fea5h ; b8 a5 fe ; 0xfe1b2 orgs.asm:104
+ mov word [00020h], ax ; a3 20 00 ; 0xfe1b5 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1b8 orgs.asm:106
+ mov word [00022h], ax ; a3 22 00 ; 0xfe1bb orgs.asm:107
+ mov AL, strict byte 034h ; b0 34 ; 0xfe1be orgs.asm:492
+ out strict byte 043h, AL ; e6 43 ; 0xfe1c0 orgs.asm:493
+ mov AL, strict byte 000h ; b0 00 ; 0xfe1c2 orgs.asm:494
+ out strict byte 040h, AL ; e6 40 ; 0xfe1c4 orgs.asm:495
+ out strict byte 040h, AL ; e6 40 ; 0xfe1c6 orgs.asm:496
+ mov ax, 0f065h ; b8 65 f0 ; 0xfe1c8 orgs.asm:104
+ mov word [00040h], ax ; a3 40 00 ; 0xfe1cb orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1ce orgs.asm:106
+ mov word [00042h], ax ; a3 42 00 ; 0xfe1d1 orgs.asm:107
+ mov ax, 0e987h ; b8 87 e9 ; 0xfe1d4 orgs.asm:104
+ mov word [00024h], ax ; a3 24 00 ; 0xfe1d7 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1da orgs.asm:106
+ mov word [00026h], ax ; a3 26 00 ; 0xfe1dd orgs.asm:107
+ mov ax, 0e82eh ; b8 2e e8 ; 0xfe1e0 orgs.asm:104
+ mov word [00058h], ax ; a3 58 00 ; 0xfe1e3 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1e6 orgs.asm:106
+ mov word [0005ah], ax ; a3 5a 00 ; 0xfe1e9 orgs.asm:107
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe1ec orgs.asm:505
+ mov ds, ax ; 8e d8 ; 0xfe1ee orgs.asm:506
+ mov AL, strict byte 010h ; b0 10 ; 0xfe1f0 orgs.asm:507
+ mov byte [00496h], AL ; a2 96 04 ; 0xfe1f2 orgs.asm:508
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1f5 orgs.asm:510
+ mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1f8 orgs.asm:511
+ mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1fc orgs.asm:512
+ mov word [00480h], bx ; 89 1e 80 04 ; 0xfe200 orgs.asm:513
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe204 orgs.asm:514
+ mov word [00482h], bx ; 89 1e 82 04 ; 0xfe207 orgs.asm:515
+ mov AL, strict byte 014h ; b0 14 ; 0xfe20b orgs.asm:518
+ out strict byte 070h, AL ; e6 70 ; 0xfe20d orgs.asm:519
+ in AL, strict byte 071h ; e4 71 ; 0xfe20f orgs.asm:520
+ mov byte [00410h], AL ; a2 10 04 ; 0xfe211 orgs.asm:521
+ push DS ; 1e ; 0xfe214 orgs.asm:523
+ push CS ; 0e ; 0xfe215 orgs.asm:113
+ pop DS ; 1f ; 0xfe216 orgs.asm:114
+ cld ; fc ; 0xfe217 orgs.asm:115
+ mov ax, 0c000h ; b8 00 c0 ; 0xfe218 orgs.asm:528
+ mov dx, 0c800h ; ba 00 c8 ; 0xfe21b orgs.asm:529
+ call 01600h ; e8 df 33 ; 0xfe21e orgs.asm:530
+ call 04e4bh ; e8 27 6c ; 0xfe221 orgs.asm:533
+ pop DS ; 1f ; 0xfe224 orgs.asm:534
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe225 orgs.asm:104
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe228 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe22b orgs.asm:106
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe22e orgs.asm:107
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe231 orgs.asm:538
+ mov ds, ax ; 8e d8 ; 0xfe233 orgs.asm:539
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe235 orgs.asm:540
+ mov CL, strict byte 014h ; b1 14 ; 0xfe237 orgs.asm:541
+ mov dx, 00378h ; ba 78 03 ; 0xfe239 orgs.asm:542
+ call 0ecedh ; e8 ae 0a ; 0xfe23c orgs.asm:543
+ mov dx, 00278h ; ba 78 02 ; 0xfe23f orgs.asm:544
+ call 0ecedh ; e8 a8 0a ; 0xfe242 orgs.asm:545
+ sal bx, 00eh ; c1 e3 0e ; 0xfe245 orgs.asm:210
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe248 orgs.asm:547
+ and ax, 03fffh ; 25 ff 3f ; 0xfe24b orgs.asm:548
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe24e orgs.asm:549
+ mov word [00410h], ax ; a3 10 04 ; 0xfe250 orgs.asm:550
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe253 orgs.asm:104
+ mov word [0002ch], ax ; a3 2c 00 ; 0xfe256 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe259 orgs.asm:106
+ mov word [0002eh], ax ; a3 2e 00 ; 0xfe25c orgs.asm:107
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe25f orgs.asm:104
+ mov word [00030h], ax ; a3 30 00 ; 0xfe262 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe265 orgs.asm:106
+ mov word [00032h], ax ; a3 32 00 ; 0xfe268 orgs.asm:107
+ mov ax, 0e739h ; b8 39 e7 ; 0xfe26b orgs.asm:104
+ mov word [00050h], ax ; a3 50 00 ; 0xfe26e orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe271 orgs.asm:106
+ mov word [00052h], ax ; a3 52 00 ; 0xfe274 orgs.asm:107
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe277 orgs.asm:556
+ mov CL, strict byte 00ah ; b1 0a ; 0xfe279 orgs.asm:557
+ mov dx, 003f8h ; ba f8 03 ; 0xfe27b orgs.asm:558
+ call 0ed0bh ; e8 8a 0a ; 0xfe27e orgs.asm:559
+ mov dx, 002f8h ; ba f8 02 ; 0xfe281 orgs.asm:560
+ call 0ed0bh ; e8 84 0a ; 0xfe284 orgs.asm:561
+ mov dx, 003e8h ; ba e8 03 ; 0xfe287 orgs.asm:562
+ call 0ed0bh ; e8 7e 0a ; 0xfe28a orgs.asm:563
+ mov dx, 002e8h ; ba e8 02 ; 0xfe28d orgs.asm:564
+ call 0ed0bh ; e8 78 0a ; 0xfe290 orgs.asm:565
+ sal bx, 009h ; c1 e3 09 ; 0xfe293 orgs.asm:210
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe296 orgs.asm:567
+ and ax, 0f1ffh ; 25 ff f1 ; 0xfe299 orgs.asm:568
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe29c orgs.asm:569
+ mov word [00410h], ax ; a3 10 04 ; 0xfe29e orgs.asm:570
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe2a1 orgs.asm:104
+ mov word [00128h], ax ; a3 28 01 ; 0xfe2a4 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2a7 orgs.asm:106
+ mov word [0012ah], ax ; a3 2a 01 ; 0xfe2aa orgs.asm:107
+ mov ax, 0f8f9h ; b8 f9 f8 ; 0xfe2ad orgs.asm:104
+ mov word [001c0h], ax ; a3 c0 01 ; 0xfe2b0 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2b3 orgs.asm:106
+ mov word [001c2h], ax ; a3 c2 01 ; 0xfe2b6 orgs.asm:107
+ call 0edbfh ; e8 03 0b ; 0xfe2b9 orgs.asm:576
+ jmp short 0e303h ; eb 45 ; 0xfe2bc orgs.asm:578
+ ; disGetNextSymbol 0xfe2be LB 0x1d42 -> off=0x0 cb=0000000000000005 uValue=00000000000f02be 'biosorg_check_before_or_at_0E2C1h'
+biosorg_check_before_or_at_0E2C1h: ; 0xfe2be LB 0x5
+ add byte [bx+si], al ; 00 00 ; 0xfe2be
+ add byte [bx+si+04dh], bl ; 00 58 4d ; 0xfe2c0
+ ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi'
+nmi: ; 0xfe2c3 LB 0x7
+ push CS ; 0e ; 0xfe2c3 orgs.asm:113
+ pop DS ; 1f ; 0xfe2c4 orgs.asm:114
+ cld ; fc ; 0xfe2c5 orgs.asm:115
+ call 01835h ; e8 6c 35 ; 0xfe2c6 orgs.asm:587
+ iret ; cf ; 0xfe2c9 orgs.asm:588
+ ; 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:591
+ call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:592
+ int 002h ; cd 02 ; 0xfe2cf orgs.asm:593
+ iret ; cf ; 0xfe2d1 orgs.asm:594
+ ; 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:599
+ mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:600
+ mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:602
+ mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:603
+ mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:604
+ mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:605
+ mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:606
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:607
+ mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:608
+ mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:104
+ mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:106
+ mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:107
+ mov ax, 0f8e7h ; b8 e7 f8 ; 0xfe2f6 orgs.asm:104
+ mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:106
+ mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:107
+ retn ; c3 ; 0xfe302 orgs.asm:613
+ mov ax, 0f8bch ; b8 bc f8 ; 0xfe303 orgs.asm:104
+ mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:106
+ mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:107
+ mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:104
+ mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:106
+ mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:107
+ call 0e753h ; e8 35 04 ; 0xfe31b orgs.asm:625
+ push CS ; 0e ; 0xfe31e orgs.asm:113
+ pop DS ; 1f ; 0xfe31f orgs.asm:114
+ cld ; fc ; 0xfe320 orgs.asm:115
+ pushad ; 66 60 ; 0xfe321 orgs.asm:632
+ call 016a6h ; e8 80 33 ; 0xfe323 orgs.asm:633
+ popad ; 66 61 ; 0xfe326 orgs.asm:634
+ call 01da5h ; e8 7a 3a ; 0xfe328 orgs.asm:639
+ call 022c4h ; e8 96 3f ; 0xfe32b orgs.asm:640
+ sti ; fb ; 0xfe32e orgs.asm:647
+ call 093f0h ; e8 be b0 ; 0xfe32f orgs.asm:648
+ cli ; fa ; 0xfe332 orgs.asm:649
+ call 0835ch ; e8 26 a0 ; 0xfe333 orgs.asm:654
+ call 0ed2fh ; e8 f6 09 ; 0xfe336 orgs.asm:658
+ call 0e2d2h ; e8 96 ff ; 0xfe339 orgs.asm:661
+ push CS ; 0e ; 0xfe33c orgs.asm:113
+ pop DS ; 1f ; 0xfe33d orgs.asm:114
+ cld ; fc ; 0xfe33e orgs.asm:115
+ mov ax, 0c800h ; b8 00 c8 ; 0xfe33f orgs.asm:665
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe342 orgs.asm:666
+ call 01600h ; e8 b8 32 ; 0xfe345 orgs.asm:667
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xfe348 orgs.asm:674
+ db 066h, 033h, 0dbh
+ ; xor ebx, ebx ; 66 33 db ; 0xfe34b orgs.asm:675
+ db 066h, 033h, 0c9h
+ ; xor ecx, ecx ; 66 33 c9 ; 0xfe34e orgs.asm:676
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfe351 orgs.asm:677
+ call 01894h ; e8 3d 35 ; 0xfe354 orgs.asm:681
+ call 03c95h ; e8 3b 59 ; 0xfe357 orgs.asm:684
+ sti ; fb ; 0xfe35a orgs.asm:687
+ int 019h ; cd 19 ; 0xfe35b orgs.asm:688
+ sti ; fb ; 0xfe35d orgs.asm:690
+ hlt ; f4 ; 0xfe35e orgs.asm:692
+ jmp short 0e35eh ; eb fd ; 0xfe35f orgs.asm:693
+ cli ; fa ; 0xfe361 orgs.asm:694
+ hlt ; f4 ; 0xfe362 orgs.asm:695
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe363 orgs.asm:704
+ mov ds, ax ; 8e d8 ; 0xfe366 orgs.asm:705
+ mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe368 orgs.asm:707
+ mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe36c orgs.asm:708
+ in AL, strict byte 092h ; e4 92 ; 0xfe370 orgs.asm:710
+ and AL, strict byte 0fdh ; 24 fd ; 0xfe372 orgs.asm:711
+ out strict byte 092h, AL ; e6 92 ; 0xfe374 orgs.asm:712
+ lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xfe376 orgs.asm:714
+ pop DS ; 1f ; 0xfe37c orgs.asm:716
+ pop ES ; 07 ; 0xfe37d orgs.asm:717
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfe37e orgs.asm:719
+ in AL, strict byte 080h ; e4 80 ; 0xfe380 orgs.asm:721
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xfe382 orgs.asm:722
+ db 03ah, 0e0h
+ ; cmp ah, al ; 3a e0 ; 0xfe385 orgs.asm:724
+ popaw ; 61 ; 0xfe387 orgs.asm:726
+ sti ; fb ; 0xfe388 orgs.asm:727
+ retf 00002h ; ca 02 00 ; 0xfe389 orgs.asm:728
+ ; 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:738
+ ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=0000000000000170 uValue=00000000000f0401 'rom_fdpt'
+rom_fdpt: ; 0xfe401 LB 0x170
+ db 032h, 001h, 004h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 031h, 001h, 011h, 000h
+ db 067h, 002h, 004h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h
+ db 067h, 002h, 006h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h
+ db 0ach, 003h, 008h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h
+ db 0ach, 003h, 006h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h
+ db 067h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h
+ db 0ceh, 001h, 008h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 0ffh, 001h, 011h, 000h
+ db 0ddh, 002h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h
+ db 084h, 003h, 00fh, 000h, 000h, 0ffh, 0ffh, 000h, 008h, 000h, 000h, 000h, 085h, 003h, 011h, 000h
+ db 034h, 003h, 003h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 034h, 003h, 011h, 000h
+ db 057h, 003h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h
+ db 057h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h
+ db 032h, 001h, 008h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 03fh, 001h, 011h, 000h
+ db 0ddh, 002h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 064h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 079h, 002h, 011h, 000h
+ db 0d1h, 003h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h
+ db 0d1h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h
+ db 000h, 004h, 007h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ffh, 003h, 011h, 000h
+ db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h
+ db 0ddh, 002h, 007h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h
+ db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h
+ db 032h, 001h, 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 050h, 001h, 011h, 000h
+ ; disGetNextSymbol 0xfe571 LB 0x1a8f -> off=0x0 cb=0000000000000181 uValue=00000000000f0571 'biosorg_check_before_or_at_0E6F0h'
+biosorg_check_before_or_at_0E6F0h: ; 0xfe571 LB 0x181
+ times 0x17f db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler'
+int19_handler: ; 0xfe6f2 LB 0x3
+ jmp near 0f0aeh ; e9 b9 09 ; 0xfe6f2 orgs.asm:795
+ ; 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 word [bx+di], ax ; 01 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:868
+ push ES ; 06 ; 0xfe73a orgs.asm:869
+ pushaw ; 60 ; 0xfe73b orgs.asm:107
+ push CS ; 0e ; 0xfe73c orgs.asm:113
+ pop DS ; 1f ; 0xfe73d orgs.asm:114
+ cld ; fc ; 0xfe73e orgs.asm:115
+ call 0633fh ; e8 fd 7b ; 0xfe73f orgs.asm:872
+ popaw ; 61 ; 0xfe742 orgs.asm:124
+ pop ES ; 07 ; 0xfe743 orgs.asm:874
+ pop DS ; 1f ; 0xfe744 orgs.asm:875
+ iret ; cf ; 0xfe745 orgs.asm:876
+ push DS ; 1e ; 0xfe746 orgs.asm:884
+ push ES ; 06 ; 0xfe747 orgs.asm:885
+ pushaw ; 60 ; 0xfe748 orgs.asm:107
+ push CS ; 0e ; 0xfe749 orgs.asm:113
+ pop DS ; 1f ; 0xfe74a orgs.asm:114
+ cld ; fc ; 0xfe74b orgs.asm:115
+ call 017cbh ; e8 7c 30 ; 0xfe74c orgs.asm:888
+ popaw ; 61 ; 0xfe74f orgs.asm:124
+ pop ES ; 07 ; 0xfe750 orgs.asm:890
+ pop DS ; 1f ; 0xfe751 orgs.asm:891
+ iret ; cf ; 0xfe752 orgs.asm:892
+ ; 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:897
+ out strict byte 020h, AL ; e6 20 ; 0xfe755 orgs.asm:898
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe757 orgs.asm:899
+ mov AL, strict byte 008h ; b0 08 ; 0xfe759 orgs.asm:900
+ out strict byte 021h, AL ; e6 21 ; 0xfe75b orgs.asm:901
+ mov AL, strict byte 070h ; b0 70 ; 0xfe75d orgs.asm:902
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe75f orgs.asm:903
+ mov AL, strict byte 004h ; b0 04 ; 0xfe761 orgs.asm:904
+ out strict byte 021h, AL ; e6 21 ; 0xfe763 orgs.asm:905
+ mov AL, strict byte 002h ; b0 02 ; 0xfe765 orgs.asm:906
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe767 orgs.asm:907
+ mov AL, strict byte 001h ; b0 01 ; 0xfe769 orgs.asm:908
+ out strict byte 021h, AL ; e6 21 ; 0xfe76b orgs.asm:909
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe76d orgs.asm:910
+ mov AL, strict byte 0b8h ; b0 b8 ; 0xfe76f orgs.asm:911
+ out strict byte 021h, AL ; e6 21 ; 0xfe771 orgs.asm:912
+ mov AL, strict byte 08fh ; b0 8f ; 0xfe773 orgs.asm:913
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe775 orgs.asm:914
+ retn ; c3 ; 0xfe777 orgs.asm:915
+ ; disGetNextSymbol 0xfe778 LB 0x1888 -> off=0x0 cb=0000000000000057 uValue=00000000000f0778 'ebda_post'
+ebda_post: ; 0xfe778 LB 0x57
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe778 orgs.asm:104
+ mov word [00034h], ax ; a3 34 00 ; 0xfe77b orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe77e orgs.asm:106
+ mov word [00036h], ax ; a3 36 00 ; 0xfe781 orgs.asm:107
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe784 orgs.asm:104
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe787 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe78a orgs.asm:106
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe78d orgs.asm:107
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe790 orgs.asm:104
+ mov word [001c8h], ax ; a3 c8 01 ; 0xfe793 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe796 orgs.asm:106
+ mov word [001cah], ax ; a3 ca 01 ; 0xfe799 orgs.asm:107
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe79c orgs.asm:104
+ mov word [001cch], ax ; a3 cc 01 ; 0xfe79f orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7a2 orgs.asm:106
+ mov word [001ceh], ax ; a3 ce 01 ; 0xfe7a5 orgs.asm:107
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe7a8 orgs.asm:104
+ mov word [001dch], ax ; a3 dc 01 ; 0xfe7ab orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7ae orgs.asm:106
+ mov word [001deh], ax ; a3 de 01 ; 0xfe7b1 orgs.asm:107
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7b4 orgs.asm:928
+ mov ds, ax ; 8e d8 ; 0xfe7b6 orgs.asm:929
+ mov ax, word [00413h] ; a1 13 04 ; 0xfe7b8 orgs.asm:930
+ mov cx, strict word 00040h ; b9 40 00 ; 0xfe7bb orgs.asm:931
+ mul cx ; f7 e1 ; 0xfe7be orgs.asm:932
+ mov word [0040eh], ax ; a3 0e 04 ; 0xfe7c0 orgs.asm:934
+ mov ds, ax ; 8e d8 ; 0xfe7c3 orgs.asm:936
+ mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7c5 orgs.asm:937
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7ca orgs.asm:939
+ mov ds, ax ; 8e d8 ; 0xfe7cc orgs.asm:940
+ retn ; c3 ; 0xfe7ce orgs.asm:941
+ ; disGetNextSymbol 0xfe7cf LB 0x1831 -> off=0x0 cb=000000000000005f uValue=00000000000f07cf 'biosorg_check_before_or_at_0E82Ch'
+biosorg_check_before_or_at_0E82Ch: ; 0xfe7cf LB 0x5f
+ times 0x5d 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:952
+ pushfw ; 9c ; 0xfe82f orgs.asm:955
+ push ES ; 06 ; 0xfe830 orgs.asm:956
+ push DS ; 1e ; 0xfe831 orgs.asm:957
+ pushaw ; 60 ; 0xfe832 orgs.asm:107
+ cmp ah, 000h ; 80 fc 00 ; 0xfe833 orgs.asm:960
+ je short 0e84ah ; 74 12 ; 0xfe836 orgs.asm:961
+ cmp ah, 010h ; 80 fc 10 ; 0xfe838 orgs.asm:963
+ je short 0e84ah ; 74 0d ; 0xfe83b orgs.asm:964
+ push CS ; 0e ; 0xfe83d orgs.asm:113
+ pop DS ; 1f ; 0xfe83e orgs.asm:114
+ cld ; fc ; 0xfe83f orgs.asm:115
+ call 05599h ; e8 56 6d ; 0xfe840 orgs.asm:967
+ popaw ; 61 ; 0xfe843 orgs.asm:124
+ pop DS ; 1f ; 0xfe844 orgs.asm:969
+ pop ES ; 07 ; 0xfe845 orgs.asm:970
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe846 orgs.asm:971
+ iret ; cf ; 0xfe849 orgs.asm:972
+ mov bx, strict word 00040h ; bb 40 00 ; 0xfe84a orgs.asm:975
+ mov ds, bx ; 8e db ; 0xfe84d orgs.asm:976
+ cli ; fa ; 0xfe84f orgs.asm:978
+ mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe850 orgs.asm:979
+ cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe854 orgs.asm:980
+ jne short 0e85eh ; 75 04 ; 0xfe858 orgs.asm:981
+ sti ; fb ; 0xfe85a orgs.asm:982
+ nop ; 90 ; 0xfe85b orgs.asm:983
+ jmp short 0e84fh ; eb f1 ; 0xfe85c orgs.asm:991
+ push CS ; 0e ; 0xfe85e orgs.asm:113
+ pop DS ; 1f ; 0xfe85f orgs.asm:114
+ cld ; fc ; 0xfe860 orgs.asm:115
+ call 05599h ; e8 35 6d ; 0xfe861 orgs.asm:995
+ popaw ; 61 ; 0xfe864 orgs.asm:124
+ pop DS ; 1f ; 0xfe865 orgs.asm:997
+ pop ES ; 07 ; 0xfe866 orgs.asm:998
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe867 orgs.asm:999
+ iret ; cf ; 0xfe86a orgs.asm:1007
+ ; disGetNextSymbol 0xfe86b LB 0x1795 -> off=0x0 cb=000000000000001b uValue=00000000000f086b 'pmode_enter'
+pmode_enter: ; 0xfe86b LB 0x1b
+ push CS ; 0e ; 0xfe86b orgs.asm:40
+ pop DS ; 1f ; 0xfe86c orgs.asm:41
+ lgdt [cs:0e899h] ; 2e 0f 01 16 99 e8 ; 0xfe86d orgs.asm:43
+ mov eax, cr0 ; 0f 20 c0 ; 0xfe873 orgs.asm:44
+ or AL, strict byte 001h ; 0c 01 ; 0xfe876 orgs.asm:45
+ mov cr0, eax ; 0f 22 c0 ; 0xfe878 orgs.asm:46
+ jmp far 00020h:0e880h ; ea 80 e8 20 00 ; 0xfe87b
+ mov ax, strict word 00018h ; b8 18 00 ; 0xfe880 orgs.asm:52
+ mov ds, ax ; 8e d8 ; 0xfe883 orgs.asm:53
+ retn ; c3 ; 0xfe885 orgs.asm:54
+ ; 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:61
+ mov ds, ax ; 8e d8 ; 0xfe889 orgs.asm:62
+ mov eax, cr0 ; 0f 20 c0 ; 0xfe88b orgs.asm:64
+ and AL, strict byte 0feh ; 24 fe ; 0xfe88e orgs.asm:65
+ mov cr0, eax ; 0f 22 c0 ; 0xfe890 orgs.asm:66
+ jmp far 0f000h:0e898h ; ea 98 e8 00 f0 ; 0xfe893 orgs.asm:68
+ retn ; c3 ; 0xfe898 orgs.asm:70
+ ; 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:41
+ push esi ; 66 56 ; 0xfe8e9 orgs.asm:42
+ pushfw ; 9c ; 0xfe8eb orgs.asm:43
+ cli ; fa ; 0xfe8ec orgs.asm:44
+ call 0e86bh ; e8 7b ff ; 0xfe8ed orgs.asm:45
+ mov eax, cr0 ; 0f 20 c0 ; 0xfe8f0 orgs.asm:47
+ and eax, strict dword 09fffffffh ; 66 25 ff ff ff 9f ; 0xfe8f3 orgs.asm:48
+ mov cr0, eax ; 0f 22 c0 ; 0xfe8f9 orgs.asm:49
+ mov esi, strict dword 0fee000f0h ; 66 be f0 00 e0 fe ; 0xfe8fc orgs.asm:51
+ mov eax, strict dword 00000010fh ; 66 b8 0f 01 00 00 ; 0xfe902 orgs.asm:52
+ mov dword [esi], eax ; 67 66 89 06 ; 0xfe908 orgs.asm:53
+ mov esi, strict dword 0fee00350h ; 66 be 50 03 e0 fe ; 0xfe90c orgs.asm:55
+ mov eax, dword [esi] ; 67 66 8b 06 ; 0xfe912 orgs.asm:56
+ and eax, strict dword 0fffe00ffh ; 66 25 ff 00 fe ff ; 0xfe916 orgs.asm:57
+ or ah, 007h ; 80 cc 07 ; 0xfe91c orgs.asm:58
+ mov dword [esi], eax ; 67 66 89 06 ; 0xfe91f orgs.asm:59
+ mov esi, strict dword 0fee00360h ; 66 be 60 03 e0 fe ; 0xfe923 orgs.asm:61
+ mov eax, dword [esi] ; 67 66 8b 06 ; 0xfe929 orgs.asm:62
+ and eax, strict dword 0fffe00ffh ; 66 25 ff 00 fe ff ; 0xfe92d orgs.asm:63
+ or ah, 004h ; 80 cc 04 ; 0xfe933 orgs.asm:64
+ mov dword [esi], eax ; 67 66 89 06 ; 0xfe936 orgs.asm:65
+ call 0e886h ; e8 49 ff ; 0xfe93a orgs.asm:67
+ popfw ; 9d ; 0xfe93d orgs.asm:68
+ pop esi ; 66 5e ; 0xfe93e orgs.asm:69
+ pop eax ; 66 58 ; 0xfe940 orgs.asm:70
+ retn ; c3 ; 0xfe942 orgs.asm:72
+ ; 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:1024
+ push ax ; 50 ; 0xfe988 orgs.asm:1025
+ mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:1026
+ out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:1027
+ in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:1029
+ push DS ; 1e ; 0xfe98f orgs.asm:1030
+ pushaw ; 60 ; 0xfe990 orgs.asm:107
+ cld ; fc ; 0xfe991 orgs.asm:1032
+ mov AH, strict byte 04fh ; b4 4f ; 0xfe992 orgs.asm:1034
+ stc ; f9 ; 0xfe994 orgs.asm:1035
+ int 015h ; cd 15 ; 0xfe995 orgs.asm:1036
+ jnc short 0e9c0h ; 73 27 ; 0xfe997 orgs.asm:1037
+ sti ; fb ; 0xfe999 orgs.asm:1039
+ cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe99a orgs.asm:1042
+ jne short 0e9a9h ; 75 0b ; 0xfe99c orgs.asm:1043
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe99e orgs.asm:1044
+ mov ds, ax ; 8e d8 ; 0xfe9a0 orgs.asm:1045
+ or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a2 orgs.asm:1046
+ jmp short 0e9c0h ; eb 17 ; 0xfe9a7 orgs.asm:1047
+ cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9a9 orgs.asm:1050
+ jne short 0e9b8h ; 75 0b ; 0xfe9ab orgs.asm:1051
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9ad orgs.asm:1052
+ mov ds, ax ; 8e d8 ; 0xfe9af orgs.asm:1053
+ or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b1 orgs.asm:1054
+ jmp short 0e9c0h ; eb 08 ; 0xfe9b6 orgs.asm:1055
+ push ES ; 06 ; 0xfe9b8 orgs.asm:1058
+ push CS ; 0e ; 0xfe9b9 orgs.asm:113
+ pop DS ; 1f ; 0xfe9ba orgs.asm:114
+ cld ; fc ; 0xfe9bb orgs.asm:115
+ call 0513dh ; e8 7e 67 ; 0xfe9bc orgs.asm:1060
+ pop ES ; 07 ; 0xfe9bf orgs.asm:1061
+ popaw ; 61 ; 0xfe9c0 orgs.asm:124
+ pop DS ; 1f ; 0xfe9c1 orgs.asm:1065
+ cli ; fa ; 0xfe9c2 orgs.asm:1066
+ call 0e034h ; e8 6e f6 ; 0xfe9c3 orgs.asm:1067
+ mov AL, strict byte 0aeh ; b0 ae ; 0xfe9c6 orgs.asm:1069
+ out strict byte 064h, AL ; e6 64 ; 0xfe9c8 orgs.asm:1070
+ pop ax ; 58 ; 0xfe9ca orgs.asm:1071
+ iret ; cf ; 0xfe9cb orgs.asm:1072
+ pushaw ; 60 ; 0xfe9cc orgs.asm:107
+ push ES ; 06 ; 0xfe9cd orgs.asm:1081
+ push DS ; 1e ; 0xfe9ce orgs.asm:1082
+ push CS ; 0e ; 0xfe9cf orgs.asm:113
+ pop DS ; 1f ; 0xfe9d0 orgs.asm:114
+ cld ; fc ; 0xfe9d1 orgs.asm:115
+ call 06cc9h ; e8 f4 82 ; 0xfe9d2 orgs.asm:1084
+ pop DS ; 1f ; 0xfe9d5 orgs.asm:1085
+ pop ES ; 07 ; 0xfe9d6 orgs.asm:1086
+ popaw ; 61 ; 0xfe9d7 orgs.asm:124
+ iret ; cf ; 0xfe9d8 orgs.asm:1088
+ ; 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:1095
+ ; 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:1104
+ jc short 0ec71h ; 72 11 ; 0xfec5e orgs.asm:1105
+ cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1107
+ jnbe short 0ec71h ; 77 0c ; 0xfec63 orgs.asm:1108
+ pushaw ; 60 ; 0xfec65 orgs.asm:107
+ push ES ; 06 ; 0xfec66 orgs.asm:1111
+ push DS ; 1e ; 0xfec67 orgs.asm:1112
+ push CS ; 0e ; 0xfec68 orgs.asm:113
+ pop DS ; 1f ; 0xfec69 orgs.asm:114
+ cld ; fc ; 0xfec6a orgs.asm:115
+ push 0ece9h ; 68 e9 ec ; 0xfec6b orgs.asm:93
+ jmp near 03cd8h ; e9 67 50 ; 0xfec6e orgs.asm:94
+ push ES ; 06 ; 0xfec71 orgs.asm:1120
+ push ax ; 50 ; 0xfec72 orgs.asm:1121
+ push bx ; 53 ; 0xfec73 orgs.asm:1122
+ push cx ; 51 ; 0xfec74 orgs.asm:1123
+ push dx ; 52 ; 0xfec75 orgs.asm:1124
+ call 03cach ; e8 33 50 ; 0xfec76 orgs.asm:1127
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfec79 orgs.asm:1128
+ je short 0ecabh ; 74 2e ; 0xfec7b orgs.asm:1129
+ call 03cc2h ; e8 42 50 ; 0xfec7d orgs.asm:1132
+ pop dx ; 5a ; 0xfec80 orgs.asm:1133
+ push dx ; 52 ; 0xfec81 orgs.asm:1134
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec82 orgs.asm:1135
+ jne short 0ec97h ; 75 11 ; 0xfec84 orgs.asm:1136
+ pop dx ; 5a ; 0xfec86 orgs.asm:1138
+ pop cx ; 59 ; 0xfec87 orgs.asm:1139
+ pop bx ; 5b ; 0xfec88 orgs.asm:1140
+ pop ax ; 58 ; 0xfec89 orgs.asm:1141
+ pop ES ; 07 ; 0xfec8a orgs.asm:1142
+ pushaw ; 60 ; 0xfec8b orgs.asm:107
+ push ES ; 06 ; 0xfec8c orgs.asm:1145
+ push DS ; 1e ; 0xfec8d orgs.asm:1146
+ push CS ; 0e ; 0xfec8e orgs.asm:113
+ pop DS ; 1f ; 0xfec8f orgs.asm:114
+ cld ; fc ; 0xfec90 orgs.asm:115
+ push 0ece9h ; 68 e9 ec ; 0xfec91 orgs.asm:93
+ jmp near 0437dh ; e9 e6 56 ; 0xfec94 orgs.asm:94
+ and dl, 0e0h ; 80 e2 e0 ; 0xfec97 orgs.asm:1152
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec9a orgs.asm:1153
+ jne short 0ecabh ; 75 0d ; 0xfec9c orgs.asm:1154
+ pop dx ; 5a ; 0xfec9e orgs.asm:1156
+ pop cx ; 59 ; 0xfec9f orgs.asm:1157
+ pop bx ; 5b ; 0xfeca0 orgs.asm:1158
+ pop ax ; 58 ; 0xfeca1 orgs.asm:1159
+ pop ES ; 07 ; 0xfeca2 orgs.asm:1160
+ push ax ; 50 ; 0xfeca3 orgs.asm:1162
+ push cx ; 51 ; 0xfeca4 orgs.asm:1163
+ push dx ; 52 ; 0xfeca5 orgs.asm:1164
+ push bx ; 53 ; 0xfeca6 orgs.asm:1165
+ db 0feh, 0cah
+ ; dec dl ; fe ca ; 0xfeca7 orgs.asm:1167
+ jmp short 0ecb4h ; eb 09 ; 0xfeca9 orgs.asm:1168
+ pop dx ; 5a ; 0xfecab orgs.asm:1171
+ pop cx ; 59 ; 0xfecac orgs.asm:1172
+ pop bx ; 5b ; 0xfecad orgs.asm:1173
+ pop ax ; 58 ; 0xfecae orgs.asm:1174
+ pop ES ; 07 ; 0xfecaf orgs.asm:1175
+ ; disGetNextSymbol 0xfecb0 LB 0x1350 -> off=0x0 cb=0000000000000004 uValue=00000000000f0cb0 'int13_noeltorito'
+int13_noeltorito: ; 0xfecb0 LB 0x4
+ push ax ; 50 ; 0xfecb0 orgs.asm:1178
+ push cx ; 51 ; 0xfecb1 orgs.asm:1179
+ push dx ; 52 ; 0xfecb2 orgs.asm:1180
+ push bx ; 53 ; 0xfecb3 orgs.asm:1181
+ ; disGetNextSymbol 0xfecb4 LB 0x134c -> off=0x0 cb=0000000000000014 uValue=00000000000f0cb4 'int13_legacy'
+int13_legacy: ; 0xfecb4 LB 0x14
+ push dx ; 52 ; 0xfecb4 orgs.asm:1183
+ push bp ; 55 ; 0xfecb5 orgs.asm:1184
+ push si ; 56 ; 0xfecb6 orgs.asm:1185
+ push di ; 57 ; 0xfecb7 orgs.asm:1186
+ push ES ; 06 ; 0xfecb8 orgs.asm:1187
+ push DS ; 1e ; 0xfecb9 orgs.asm:1188
+ push CS ; 0e ; 0xfecba orgs.asm:113
+ pop DS ; 1f ; 0xfecbb orgs.asm:114
+ cld ; fc ; 0xfecbc orgs.asm:115
+ test dl, 080h ; f6 c2 80 ; 0xfecbd orgs.asm:1193
+ jne short 0ecc8h ; 75 06 ; 0xfecc0 orgs.asm:1194
+ push 0ece9h ; 68 e9 ec ; 0xfecc2 orgs.asm:93
+ jmp near 032a0h ; e9 d8 45 ; 0xfecc5 orgs.asm:94
+ ; 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:1199
+ jc short 0ecdch ; 72 0f ; 0xfeccb orgs.asm:1200
+ shr ebx, 010h ; 66 c1 eb 10 ; 0xfeccd orgs.asm:1206
+ push bx ; 53 ; 0xfecd1 orgs.asm:1207
+ call 047c1h ; e8 ec 5a ; 0xfecd2 orgs.asm:1208
+ pop bx ; 5b ; 0xfecd5 orgs.asm:1209
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfecd6 orgs.asm:1210
+ jmp short 0ece9h ; eb 0d ; 0xfecda orgs.asm:1212
+ ; 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:1216
+ jnbe short 0ece6h ; 77 05 ; 0xfecdf orgs.asm:1217
+ call 05c52h ; e8 6e 6f ; 0xfece1 orgs.asm:1218
+ jmp short 0ece9h ; eb 03 ; 0xfece4 orgs.asm:1219
+ call 060a1h ; e8 b8 73 ; 0xfece6 orgs.asm:1222
+ ; disGetNextSymbol 0xfece9 LB 0x1317 -> off=0x0 cb=0000000000000004 uValue=00000000000f0ce9 'int13_out'
+int13_out: ; 0xfece9 LB 0x4
+ pop DS ; 1f ; 0xfece9 orgs.asm:1225
+ pop ES ; 07 ; 0xfecea orgs.asm:1226
+ popaw ; 61 ; 0xfeceb orgs.asm:124
+ iret ; cf ; 0xfecec orgs.asm:1228
+ ; disGetNextSymbol 0xfeced LB 0x1313 -> off=0x0 cb=000000000000001e uValue=00000000000f0ced 'detect_parport'
+detect_parport: ; 0xfeced LB 0x1e
+ push dx ; 52 ; 0xfeced orgs.asm:1235
+ inc dx ; 42 ; 0xfecee orgs.asm:1236
+ inc dx ; 42 ; 0xfecef orgs.asm:1237
+ in AL, DX ; ec ; 0xfecf0 orgs.asm:1238
+ and AL, strict byte 0dfh ; 24 df ; 0xfecf1 orgs.asm:1239
+ out DX, AL ; ee ; 0xfecf3 orgs.asm:1240
+ pop dx ; 5a ; 0xfecf4 orgs.asm:1241
+ mov AL, strict byte 0aah ; b0 aa ; 0xfecf5 orgs.asm:1242
+ out DX, AL ; ee ; 0xfecf7 orgs.asm:1243
+ in AL, DX ; ec ; 0xfecf8 orgs.asm:1244
+ cmp AL, strict byte 0aah ; 3c aa ; 0xfecf9 orgs.asm:1245
+ jne short 0ed0ah ; 75 0d ; 0xfecfb orgs.asm:1246
+ push bx ; 53 ; 0xfecfd orgs.asm:1248
+ sal bx, 1 ; d1 e3 ; 0xfecfe orgs.asm:1249
+ mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed00 orgs.asm:1250
+ pop bx ; 5b ; 0xfed04 orgs.asm:1251
+ mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed05 orgs.asm:1252
+ inc bx ; 43 ; 0xfed09 orgs.asm:1253
+ retn ; c3 ; 0xfed0a orgs.asm:1255
+ ; disGetNextSymbol 0xfed0b LB 0x12f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d0b 'detect_serial'
+detect_serial: ; 0xfed0b LB 0x24
+ push dx ; 52 ; 0xfed0b orgs.asm:1262
+ inc dx ; 42 ; 0xfed0c orgs.asm:1263
+ mov AL, strict byte 002h ; b0 02 ; 0xfed0d orgs.asm:1264
+ out DX, AL ; ee ; 0xfed0f orgs.asm:1265
+ in AL, DX ; ec ; 0xfed10 orgs.asm:1266
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed11 orgs.asm:1267
+ jne short 0ed2dh ; 75 18 ; 0xfed13 orgs.asm:1268
+ inc dx ; 42 ; 0xfed15 orgs.asm:1270
+ in AL, DX ; ec ; 0xfed16 orgs.asm:1271
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed17 orgs.asm:1272
+ jne short 0ed2dh ; 75 12 ; 0xfed19 orgs.asm:1273
+ dec dx ; 4a ; 0xfed1b orgs.asm:1275
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfed1c orgs.asm:1276
+ pop dx ; 5a ; 0xfed1e orgs.asm:1277
+ push bx ; 53 ; 0xfed1f orgs.asm:1278
+ sal bx, 1 ; d1 e3 ; 0xfed20 orgs.asm:1279
+ mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed22 orgs.asm:1280
+ pop bx ; 5b ; 0xfed26 orgs.asm:1281
+ mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed27 orgs.asm:1282
+ inc bx ; 43 ; 0xfed2b orgs.asm:1283
+ retn ; c3 ; 0xfed2c orgs.asm:1284
+ pop dx ; 5a ; 0xfed2d orgs.asm:1287
+ retn ; c3 ; 0xfed2e orgs.asm:1288
+ ; 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:1298
+ mov ds, ax ; 8e d8 ; 0xfed31 orgs.asm:1299
+ mov AL, strict byte 000h ; b0 00 ; 0xfed33 orgs.asm:1303
+ mov byte [0043eh], AL ; a2 3e 04 ; 0xfed35 orgs.asm:1304
+ mov byte [0043fh], AL ; a2 3f 04 ; 0xfed38 orgs.asm:1305
+ mov byte [00440h], AL ; a2 40 04 ; 0xfed3b orgs.asm:1306
+ mov byte [00441h], AL ; a2 41 04 ; 0xfed3e orgs.asm:1307
+ mov byte [00442h], AL ; a2 42 04 ; 0xfed41 orgs.asm:1308
+ mov byte [00443h], AL ; a2 43 04 ; 0xfed44 orgs.asm:1309
+ mov byte [00444h], AL ; a2 44 04 ; 0xfed47 orgs.asm:1310
+ mov byte [00445h], AL ; a2 45 04 ; 0xfed4a orgs.asm:1311
+ mov byte [00446h], AL ; a2 46 04 ; 0xfed4d orgs.asm:1312
+ mov byte [00447h], AL ; a2 47 04 ; 0xfed50 orgs.asm:1313
+ mov byte [00448h], AL ; a2 48 04 ; 0xfed53 orgs.asm:1314
+ mov byte [0048bh], AL ; a2 8b 04 ; 0xfed56 orgs.asm:1316
+ mov AL, strict byte 010h ; b0 10 ; 0xfed59 orgs.asm:1318
+ out strict byte 070h, AL ; e6 70 ; 0xfed5b orgs.asm:1319
+ in AL, strict byte 071h ; e4 71 ; 0xfed5d orgs.asm:1320
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfed5f orgs.asm:1321
+ shr al, 004h ; c0 e8 04 ; 0xfed61 orgs.asm:179
+ je short 0ed6ah ; 74 04 ; 0xfed64 orgs.asm:1326
+ mov BL, strict byte 007h ; b3 07 ; 0xfed66 orgs.asm:1327
+ jmp short 0ed6ch ; eb 02 ; 0xfed68 orgs.asm:1328
+ mov BL, strict byte 000h ; b3 00 ; 0xfed6a orgs.asm:1331
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfed6c orgs.asm:1334
+ and AL, strict byte 00fh ; 24 0f ; 0xfed6e orgs.asm:1335
+ je short 0ed75h ; 74 03 ; 0xfed70 orgs.asm:1336
+ or bl, 070h ; 80 cb 70 ; 0xfed72 orgs.asm:1337
+ mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed75 orgs.asm:1339
+ mov AL, strict byte 000h ; b0 00 ; 0xfed79 orgs.asm:1342
+ mov byte [00490h], AL ; a2 90 04 ; 0xfed7b orgs.asm:1343
+ mov byte [00491h], AL ; a2 91 04 ; 0xfed7e orgs.asm:1344
+ mov byte [00492h], AL ; a2 92 04 ; 0xfed81 orgs.asm:1345
+ mov byte [00493h], AL ; a2 93 04 ; 0xfed84 orgs.asm:1346
+ mov byte [00494h], AL ; a2 94 04 ; 0xfed87 orgs.asm:1347
+ mov byte [00495h], AL ; a2 95 04 ; 0xfed8a orgs.asm:1348
+ mov AL, strict byte 002h ; b0 02 ; 0xfed8d orgs.asm:1350
+ out strict byte 00ah, AL ; e6 0a ; 0xfed8f orgs.asm:1351
+ mov ax, 0efc7h ; b8 c7 ef ; 0xfed91 orgs.asm:104
+ mov word [00078h], ax ; a3 78 00 ; 0xfed94 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfed97 orgs.asm:106
+ mov word [0007ah], ax ; a3 7a 00 ; 0xfed9a orgs.asm:107
+ mov ax, 0ec59h ; b8 59 ec ; 0xfed9d orgs.asm:104
+ mov word [00100h], ax ; a3 00 01 ; 0xfeda0 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfeda3 orgs.asm:106
+ mov word [00102h], ax ; a3 02 01 ; 0xfeda6 orgs.asm:107
+ mov ax, 0ef57h ; b8 57 ef ; 0xfeda9 orgs.asm:104
+ mov word [00038h], ax ; a3 38 00 ; 0xfedac orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedaf orgs.asm:106
+ mov word [0003ah], ax ; a3 3a 00 ; 0xfedb2 orgs.asm:107
+ retn ; c3 ; 0xfedb5 orgs.asm:1357
+ ; 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:1367
+ shr al, 004h ; c0 e8 04 ; 0xfedb9 orgs.asm:1368
+ aad 00ah ; d5 0a ; 0xfedbc orgs.asm:1376
+ retn ; c3 ; 0xfedbe orgs.asm:1377
+ ; 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:1434
+ mov AL, strict byte 000h ; b0 00 ; 0xfedc2 orgs.asm:1435
+ out strict byte 070h, AL ; e6 70 ; 0xfedc4 orgs.asm:1436
+ in AL, strict byte 071h ; e4 71 ; 0xfedc6 orgs.asm:1437
+ call 0edb6h ; e8 eb ff ; 0xfedc8 orgs.asm:1438
+ mov edx, strict dword 00115cf2bh ; 66 ba 2b cf 15 01 ; 0xfedcb orgs.asm:1439
+ mul edx ; 66 f7 e2 ; 0xfedd1 orgs.asm:1440
+ mov ebx, strict dword 0000f4240h ; 66 bb 40 42 0f 00 ; 0xfedd4 orgs.asm:1441
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfedda orgs.asm:1442
+ div ebx ; 66 f7 f3 ; 0xfeddd orgs.asm:1443
+ db 066h, 08bh, 0c8h
+ ; mov ecx, eax ; 66 8b c8 ; 0xfede0 orgs.asm:1444
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xfede3 orgs.asm:1447
+ mov AL, strict byte 002h ; b0 02 ; 0xfede6 orgs.asm:1448
+ out strict byte 070h, AL ; e6 70 ; 0xfede8 orgs.asm:1449
+ in AL, strict byte 071h ; e4 71 ; 0xfedea orgs.asm:1450
+ call 0edb6h ; e8 c7 ff ; 0xfedec orgs.asm:1451
+ mov edx, strict dword 000a6af80h ; 66 ba 80 af a6 00 ; 0xfedef orgs.asm:1452
+ mul edx ; 66 f7 e2 ; 0xfedf5 orgs.asm:1453
+ mov ebx, strict dword 000002710h ; 66 bb 10 27 00 00 ; 0xfedf8 orgs.asm:1454
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfedfe orgs.asm:1455
+ div ebx ; 66 f7 f3 ; 0xfee01 orgs.asm:1456
+ db 066h, 003h, 0c8h
+ ; add ecx, eax ; 66 03 c8 ; 0xfee04 orgs.asm:1457
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xfee07 orgs.asm:1460
+ mov AL, strict byte 004h ; b0 04 ; 0xfee0a orgs.asm:1461
+ out strict byte 070h, AL ; e6 70 ; 0xfee0c orgs.asm:1462
+ in AL, strict byte 071h ; e4 71 ; 0xfee0e orgs.asm:1463
+ call 0edb6h ; e8 a3 ff ; 0xfee10 orgs.asm:1464
+ mov edx, strict dword 003e81d03h ; 66 ba 03 1d e8 03 ; 0xfee13 orgs.asm:1465
+ mul edx ; 66 f7 e2 ; 0xfee19 orgs.asm:1466
+ mov ebx, strict dword 0000003e8h ; 66 bb e8 03 00 00 ; 0xfee1c orgs.asm:1467
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfee22 orgs.asm:1468
+ div ebx ; 66 f7 f3 ; 0xfee25 orgs.asm:1469
+ db 066h, 003h, 0c8h
+ ; add ecx, eax ; 66 03 c8 ; 0xfee28 orgs.asm:1470
+ mov dword [0046ch], ecx ; 66 89 0e 6c 04 ; 0xfee2b orgs.asm:1472
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfee30 orgs.asm:1473
+ mov byte [00470h], AL ; a2 70 04 ; 0xfee32 orgs.asm:1474
+ retn ; c3 ; 0xfee35 orgs.asm:1477
+ ; 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:1488
+ push dx ; 52 ; 0xfef58 orgs.asm:1489
+ mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1490
+ in AL, DX ; ec ; 0xfef5c orgs.asm:1491
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1492
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1493
+ je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1494
+ mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1495
+ mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1496
+ out DX, AL ; ee ; 0xfef68 orgs.asm:1497
+ mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1499
+ in AL, DX ; ec ; 0xfef6c orgs.asm:1500
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1501
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1502
+ jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1503
+ mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1506
+ in AL, DX ; ec ; 0xfef76 orgs.asm:1507
+ mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1508
+ in AL, DX ; ec ; 0xfef7a orgs.asm:1509
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1510
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1511
+ je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1512
+ push DS ; 1e ; 0xfef81 orgs.asm:1515
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1516
+ mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1517
+ call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1518
+ or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1520
+ pop DS ; 1f ; 0xfef8e orgs.asm:1521
+ pop dx ; 5a ; 0xfef8f orgs.asm:1522
+ pop ax ; 58 ; 0xfef90 orgs.asm:1523
+ iret ; cf ; 0xfef91 orgs.asm:1524
+ ; 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:1551
+ ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000000d uValue=00000000000f0fd4 'int17_handler'
+int17_handler: ; 0xfefd4 LB 0xd
+ push DS ; 1e ; 0xfefd4 orgs.asm:1554
+ push ES ; 06 ; 0xfefd5 orgs.asm:1555
+ pushaw ; 60 ; 0xfefd6 orgs.asm:107
+ push CS ; 0e ; 0xfefd7 orgs.asm:113
+ pop DS ; 1f ; 0xfefd8 orgs.asm:114
+ cld ; fc ; 0xfefd9 orgs.asm:115
+ call 075e6h ; e8 09 86 ; 0xfefda orgs.asm:1558
+ popaw ; 61 ; 0xfefdd orgs.asm:124
+ pop ES ; 07 ; 0xfefde orgs.asm:1560
+ pop DS ; 1f ; 0xfefdf orgs.asm:1561
+ iret ; cf ; 0xfefe0 orgs.asm:1562
+ ; 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:1597
+ ; 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:1606
+ ; 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:1615
+ ; 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=000000000000000a uValue=00000000000f10a4 'biosorg_check_at_0F0A4h'
+biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0xa
+ push CS ; 0e ; 0xff0a4 orgs.asm:113
+ pop DS ; 1f ; 0xff0a5 orgs.asm:114
+ cld ; fc ; 0xff0a6 orgs.asm:115
+ call 01847h ; e8 9d 27 ; 0xff0a7 orgs.asm:1630
+ sti ; fb ; 0xff0aa orgs.asm:1632
+ hlt ; f4 ; 0xff0ab orgs.asm:1634
+ jmp short 0f0abh ; eb fd ; 0xff0ac orgs.asm:1635
+ ; disGetNextSymbol 0xff0ae LB 0xf52 -> off=0x0 cb=0000000000000078 uValue=00000000000f10ae 'int19_relocated'
+int19_relocated: ; 0xff0ae LB 0x78
+ push CS ; 0e ; 0xff0ae orgs.asm:113
+ pop DS ; 1f ; 0xff0af orgs.asm:114
+ cld ; fc ; 0xff0b0 orgs.asm:115
+ push bp ; 55 ; 0xff0b1 orgs.asm:1645
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0b2 orgs.asm:1646
+ mov ax, strict word 00001h ; b8 01 00 ; 0xff0b4 orgs.asm:1649
+ push ax ; 50 ; 0xff0b7 orgs.asm:1650
+ call 04bf3h ; e8 38 5b ; 0xff0b8 orgs.asm:1651
+ inc sp ; 44 ; 0xff0bb orgs.asm:1652
+ inc sp ; 44 ; 0xff0bc orgs.asm:1653
+ test ax, ax ; 85 c0 ; 0xff0bd orgs.asm:1654
+ jne short 0f0e8h ; 75 27 ; 0xff0bf orgs.asm:1655
+ mov ax, strict word 00002h ; b8 02 00 ; 0xff0c1 orgs.asm:1658
+ push ax ; 50 ; 0xff0c4 orgs.asm:1659
+ call 04bf3h ; e8 2b 5b ; 0xff0c5 orgs.asm:1660
+ inc sp ; 44 ; 0xff0c8 orgs.asm:1661
+ inc sp ; 44 ; 0xff0c9 orgs.asm:1662
+ test ax, ax ; 85 c0 ; 0xff0ca orgs.asm:1663
+ jne short 0f0e8h ; 75 1a ; 0xff0cc orgs.asm:1664
+ mov ax, strict word 00003h ; b8 03 00 ; 0xff0ce orgs.asm:1667
+ push ax ; 50 ; 0xff0d1 orgs.asm:1668
+ call 04bf3h ; e8 1e 5b ; 0xff0d2 orgs.asm:1669
+ inc sp ; 44 ; 0xff0d5 orgs.asm:1670
+ inc sp ; 44 ; 0xff0d6 orgs.asm:1671
+ test ax, ax ; 85 c0 ; 0xff0d7 orgs.asm:1672
+ jne short 0f0e8h ; 75 0d ; 0xff0d9 orgs.asm:1673
+ mov ax, strict word 00004h ; b8 04 00 ; 0xff0db orgs.asm:1676
+ push ax ; 50 ; 0xff0de orgs.asm:1677
+ call 04bf3h ; e8 11 5b ; 0xff0df orgs.asm:1678
+ inc sp ; 44 ; 0xff0e2 orgs.asm:1679
+ inc sp ; 44 ; 0xff0e3 orgs.asm:1680
+ test ax, ax ; 85 c0 ; 0xff0e4 orgs.asm:1681
+ je short 0f0a4h ; 74 bc ; 0xff0e6 orgs.asm:1682
+ sal eax, 004h ; 66 c1 e0 04 ; 0xff0e8 orgs.asm:1694
+ mov word [bp+002h], ax ; 89 46 02 ; 0xff0ec orgs.asm:1695
+ shr eax, 004h ; 66 c1 e8 04 ; 0xff0ef orgs.asm:1697
+ and ax, 0f000h ; 25 00 f0 ; 0xff0f3 orgs.asm:1700
+ mov word [bp+004h], ax ; 89 46 04 ; 0xff0f6 orgs.asm:1701
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff0f9 orgs.asm:1702
+ mov ds, ax ; 8e d8 ; 0xff0fb orgs.asm:1703
+ mov es, ax ; 8e c0 ; 0xff0fd orgs.asm:1704
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0ff orgs.asm:1705
+ mov ax, 0aa55h ; b8 55 aa ; 0xff102 orgs.asm:1706
+ pop bp ; 5d ; 0xff105 orgs.asm:1708
+ iret ; cf ; 0xff106 orgs.asm:1709
+ or cx, word [bp+si] ; 0b 0a ; 0xff107
+ or word [bp+di], cx ; 09 0b ; 0xff109
+ push eax ; 66 50 ; 0xff10b orgs.asm:98
+ mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff10d orgs.asm:99
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xff113 orgs.asm:100
+ sal eax, 008h ; 66 c1 e0 08 ; 0xff115 orgs.asm:101
+ and dl, 0fch ; 80 e2 fc ; 0xff119 orgs.asm:102
+ db 00ah, 0c2h
+ ; or al, dl ; 0a c2 ; 0xff11c orgs.asm:103
+ mov dx, 00cf8h ; ba f8 0c ; 0xff11e orgs.asm:104
+ out DX, eax ; 66 ef ; 0xff121 orgs.asm:105
+ pop eax ; 66 58 ; 0xff123 orgs.asm:106
+ retn ; c3 ; 0xff125 orgs.asm:107
+ ; disGetNextSymbol 0xff126 LB 0xeda -> off=0x0 cb=0000000000000012 uValue=00000000000f1126 'pcibios_init_iomem_bases'
+pcibios_init_iomem_bases: ; 0xff126 LB 0x12
+ push bp ; 55 ; 0xff126 orgs.asm:110
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff127 orgs.asm:111
+ mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff129 orgs.asm:113
+ mov dx, 00410h ; ba 10 04 ; 0xff12f orgs.asm:114
+ out DX, eax ; 66 ef ; 0xff132 orgs.asm:115
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xff134 orgs.asm:228
+ pop bp ; 5d ; 0xff136 orgs.asm:229
+ retn ; c3 ; 0xff137 orgs.asm:230
+ ; disGetNextSymbol 0xff138 LB 0xec8 -> off=0x0 cb=000000000000000c uValue=00000000000f1138 'pcibios_init_set_elcr'
+pcibios_init_set_elcr: ; 0xff138 LB 0xc
+ push ax ; 50 ; 0xff138 orgs.asm:233
+ push cx ; 51 ; 0xff139 orgs.asm:234
+ mov dx, 004d0h ; ba d0 04 ; 0xff13a orgs.asm:235
+ test AL, strict byte 008h ; a8 08 ; 0xff13d orgs.asm:236
+ je short 0f144h ; 74 03 ; 0xff13f orgs.asm:237
+ inc dx ; 42 ; 0xff141 orgs.asm:239
+ and AL, strict byte 007h ; 24 07 ; 0xff142 orgs.asm:240
+ ; disGetNextSymbol 0xff144 LB 0xebc -> off=0x0 cb=000000000000000d uValue=00000000000f1144 'is_master_pic'
+is_master_pic: ; 0xff144 LB 0xd
+ db 08ah, 0c8h
+ ; mov cl, al ; 8a c8 ; 0xff144 orgs.asm:242
+ mov BL, strict byte 001h ; b3 01 ; 0xff146 orgs.asm:243
+ sal bl, CL ; d2 e3 ; 0xff148 orgs.asm:244
+ in AL, DX ; ec ; 0xff14a orgs.asm:245
+ db 00ah, 0c3h
+ ; or al, bl ; 0a c3 ; 0xff14b orgs.asm:246
+ out DX, AL ; ee ; 0xff14d orgs.asm:247
+ pop cx ; 59 ; 0xff14e orgs.asm:248
+ pop ax ; 58 ; 0xff14f orgs.asm:249
+ retn ; c3 ; 0xff150 orgs.asm:250
+ ; disGetNextSymbol 0xff151 LB 0xeaf -> off=0x0 cb=000000000000002f uValue=00000000000f1151 'pcibios_init_irqs'
+pcibios_init_irqs: ; 0xff151 LB 0x2f
+ push DS ; 1e ; 0xff151 orgs.asm:253
+ push bp ; 55 ; 0xff152 orgs.asm:254
+ mov ax, 0f000h ; b8 00 f0 ; 0xff153 orgs.asm:255
+ mov ds, ax ; 8e d8 ; 0xff156 orgs.asm:256
+ pop bp ; 5d ; 0xff158 orgs.asm:363
+ pop DS ; 1f ; 0xff159 orgs.asm:364
+ retn ; c3 ; 0xff15a orgs.asm:365
+ mov ax, ax ; 89 c0 ; 0xff15b
+ mov ax, ax ; 89 c0 ; 0xff15d
+ cld ; fc ; 0xff15f
+ and AL, strict byte 050h ; 24 50 ; 0xff160
+ dec cx ; 49 ; 0xff162
+ push dx ; 52 ; 0xff163
+ add byte [bx+di], al ; 00 01 ; 0xff164
+ add byte [bp+si], al ; 00 02 ; 0xff166
+ add byte [bx+si], cl ; 00 08 ; 0xff168
+ add byte [bx+si], al ; 00 00 ; 0xff16a
+ xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff16c
+ times 0xf db 0
+ db 031h
+ ; disGetNextSymbol 0xff180 LB 0xe80 -> off=0x0 cb=00000000000001e0 uValue=00000000000f1180 '_pci_routing_table'
+_pci_routing_table: ; 0xff180 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 0xff360 LB 0xca0 -> off=0x0 cb=0000000000000002 uValue=00000000000f1360 '_pci_routing_table_size'
+_pci_routing_table_size: ; 0xff360 LB 0x2
+ loopne 0f363h ; e0 01 ; 0xff360
+ ; disGetNextSymbol 0xff362 LB 0xc9e -> off=0x0 cb=00000000000004df uValue=00000000000f1362 'biosorg_check_before_or_at_0F83Fh'
+biosorg_check_before_or_at_0F83Fh: ; 0xff362 LB 0x4df
+ times 0x4dd 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:1739
+ push DS ; 1e ; 0xff842 orgs.asm:1740
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1741
+ mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1742
+ mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1743
+ pop DS ; 1f ; 0xff84b orgs.asm:1744
+ iret ; cf ; 0xff84c orgs.asm:1745
+ ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler'
+int11_handler: ; 0xff84d LB 0xc
+ sti ; fb ; 0xff84d orgs.asm:1754
+ push DS ; 1e ; 0xff84e orgs.asm:1755
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1756
+ mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1757
+ mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1758
+ pop DS ; 1f ; 0xff857 orgs.asm:1759
+ iret ; cf ; 0xff858 orgs.asm:1760
+ ; 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:1770
+ jne short 0f86bh ; 75 0d ; 0xff85c orgs.asm:1771
+ pushaw ; 60 ; 0xff85e orgs.asm:1776
+ push ES ; 06 ; 0xff85f orgs.asm:1777
+ push DS ; 1e ; 0xff860 orgs.asm:1778
+ push CS ; 0e ; 0xff861 orgs.asm:113
+ pop DS ; 1f ; 0xff862 orgs.asm:114
+ cld ; fc ; 0xff863 orgs.asm:115
+ call 06b73h ; e8 0c 73 ; 0xff864 orgs.asm:1780
+ pop DS ; 1f ; 0xff867 orgs.asm:1781
+ pop ES ; 07 ; 0xff868 orgs.asm:1782
+ popaw ; 61 ; 0xff869 orgs.asm:1783
+ iret ; cf ; 0xff86a orgs.asm:1784
+ pushfw ; 9c ; 0xff86b orgs.asm:1789
+ push DS ; 1e ; 0xff86c orgs.asm:1790
+ push ES ; 06 ; 0xff86d orgs.asm:1791
+ push CS ; 0e ; 0xff86e orgs.asm:113
+ pop DS ; 1f ; 0xff86f orgs.asm:114
+ cld ; fc ; 0xff870 orgs.asm:115
+ cmp ah, 0e8h ; 80 fc e8 ; 0xff871 orgs.asm:1796
+ je short 0f899h ; 74 23 ; 0xff874 orgs.asm:1797
+ cmp ah, 0d0h ; 80 fc d0 ; 0xff876 orgs.asm:1798
+ je short 0f899h ; 74 1e ; 0xff879 orgs.asm:1799
+ pushaw ; 60 ; 0xff87b orgs.asm:107
+ cmp ah, 053h ; 80 fc 53 ; 0xff87c orgs.asm:1802
+ je short 0f88fh ; 74 0e ; 0xff87f orgs.asm:1803
+ cmp ah, 0c2h ; 80 fc c2 ; 0xff881 orgs.asm:1804
+ je short 0f894h ; 74 0e ; 0xff884 orgs.asm:1805
+ call 064f7h ; e8 6e 6c ; 0xff886 orgs.asm:1807
+ popaw ; 61 ; 0xff889 orgs.asm:124
+ pop ES ; 07 ; 0xff88a orgs.asm:1813
+ pop DS ; 1f ; 0xff88b orgs.asm:1814
+ popfw ; 9d ; 0xff88c orgs.asm:1815
+ jmp short 0f8a2h ; eb 13 ; 0xff88d orgs.asm:1816
+ call 0a6bfh ; e8 2d ae ; 0xff88f orgs.asm:1819
+ jmp short 0f889h ; eb f5 ; 0xff892 orgs.asm:1820
+ ; disGetNextSymbol 0xff894 LB 0x76c -> off=0x0 cb=0000000000000005 uValue=00000000000f1894 'int15_handler_mouse'
+int15_handler_mouse: ; 0xff894 LB 0x5
+ call 07276h ; e8 df 79 ; 0xff894 orgs.asm:1823
+ jmp short 0f889h ; eb f0 ; 0xff897 orgs.asm:1824
+ ; disGetNextSymbol 0xff899 LB 0x767 -> off=0x0 cb=0000000000000009 uValue=00000000000f1899 'int15_handler32'
+int15_handler32: ; 0xff899 LB 0x9
+ pushad ; 66 60 ; 0xff899 orgs.asm:1830
+ call 068cfh ; e8 31 70 ; 0xff89b orgs.asm:1831
+ popad ; 66 61 ; 0xff89e orgs.asm:1832
+ jmp short 0f88ah ; eb e8 ; 0xff8a0 orgs.asm:1834
+ ; 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:1841
+ push bp ; 55 ; 0xff8a4 orgs.asm:1842
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff8a5 orgs.asm:1843
+ and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff8a7 orgs.asm:1844
+ or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff8ab orgs.asm:1845
+ pop bp ; 5d ; 0xff8b0 orgs.asm:1846
+ iret ; cf ; 0xff8b1 orgs.asm:1847
+ push bp ; 55 ; 0xff8b2 orgs.asm:1849
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff8b3 orgs.asm:1850
+ or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff8b5 orgs.asm:1851
+ pop bp ; 5d ; 0xff8ba orgs.asm:1852
+ iret ; cf ; 0xff8bb orgs.asm:1853
+ ; disGetNextSymbol 0xff8bc LB 0x744 -> off=0x0 cb=000000000000002b uValue=00000000000f18bc 'int74_handler'
+int74_handler: ; 0xff8bc LB 0x2b
+ sti ; fb ; 0xff8bc orgs.asm:1860
+ pushaw ; 60 ; 0xff8bd orgs.asm:107
+ push ES ; 06 ; 0xff8be orgs.asm:1862
+ push DS ; 1e ; 0xff8bf orgs.asm:1863
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8c0 orgs.asm:1864
+ push ax ; 50 ; 0xff8c2 orgs.asm:1865
+ push ax ; 50 ; 0xff8c3 orgs.asm:1866
+ push ax ; 50 ; 0xff8c4 orgs.asm:1867
+ push ax ; 50 ; 0xff8c5 orgs.asm:1868
+ push ax ; 50 ; 0xff8c6 orgs.asm:1869
+ push CS ; 0e ; 0xff8c7 orgs.asm:113
+ pop DS ; 1f ; 0xff8c8 orgs.asm:114
+ cld ; fc ; 0xff8c9 orgs.asm:115
+ call 071d2h ; e8 05 79 ; 0xff8ca orgs.asm:1871
+ pop cx ; 59 ; 0xff8cd orgs.asm:1872
+ jcxz 0f8dch ; e3 0c ; 0xff8ce orgs.asm:1873
+ push strict byte 00000h ; 6a 00 ; 0xff8d0 orgs.asm:1877
+ pop DS ; 1f ; 0xff8d2 orgs.asm:1882
+ push word [0040eh] ; ff 36 0e 04 ; 0xff8d3 orgs.asm:1883
+ pop DS ; 1f ; 0xff8d7 orgs.asm:1884
+ call far [word 00022h] ; ff 1e 22 00 ; 0xff8d8 orgs.asm:1885
+ cli ; fa ; 0xff8dc orgs.asm:1887
+ call 0e030h ; e8 50 e7 ; 0xff8dd orgs.asm:1888
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xff8e0 orgs.asm:1889
+ pop DS ; 1f ; 0xff8e3 orgs.asm:1890
+ pop ES ; 07 ; 0xff8e4 orgs.asm:1891
+ popaw ; 61 ; 0xff8e5 orgs.asm:124
+ iret ; cf ; 0xff8e6 orgs.asm:1893
+ ; disGetNextSymbol 0xff8e7 LB 0x719 -> off=0x0 cb=0000000000000012 uValue=00000000000f18e7 'int76_handler'
+int76_handler: ; 0xff8e7 LB 0x12
+ push ax ; 50 ; 0xff8e7 orgs.asm:1900
+ push DS ; 1e ; 0xff8e8 orgs.asm:1901
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff8e9 orgs.asm:1902
+ mov ds, ax ; 8e d8 ; 0xff8ec orgs.asm:1903
+ mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8ee orgs.asm:1904
+ call 0e030h ; e8 3a e7 ; 0xff8f3 orgs.asm:1905
+ pop DS ; 1f ; 0xff8f6 orgs.asm:1906
+ pop ax ; 58 ; 0xff8f7 orgs.asm:1907
+ iret ; cf ; 0xff8f8 orgs.asm:1908
+ ; disGetNextSymbol 0xff8f9 LB 0x707 -> off=0x0 cb=000000000000000d uValue=00000000000f18f9 'int70_handler'
+int70_handler: ; 0xff8f9 LB 0xd
+ push ES ; 06 ; 0xff8f9 orgs.asm:1917
+ push DS ; 1e ; 0xff8fa orgs.asm:1918
+ pushaw ; 60 ; 0xff8fb orgs.asm:107
+ push CS ; 0e ; 0xff8fc orgs.asm:113
+ pop DS ; 1f ; 0xff8fd orgs.asm:114
+ cld ; fc ; 0xff8fe orgs.asm:115
+ call 06ea7h ; e8 a5 75 ; 0xff8ff orgs.asm:1921
+ popaw ; 61 ; 0xff902 orgs.asm:124
+ pop DS ; 1f ; 0xff903 orgs.asm:1923
+ pop ES ; 07 ; 0xff904 orgs.asm:1924
+ iret ; cf ; 0xff905 orgs.asm:1925
+ ; 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:1962
+ jne short 0fe82h ; 75 0f ; 0xffe71 orgs.asm:1963
+ push ES ; 06 ; 0xffe73 orgs.asm:1965
+ push DS ; 1e ; 0xffe74 orgs.asm:1966
+ push CS ; 0e ; 0xffe75 orgs.asm:113
+ pop DS ; 1f ; 0xffe76 orgs.asm:114
+ cld ; fc ; 0xffe77 orgs.asm:115
+ pushad ; 66 60 ; 0xffe78 orgs.asm:1969
+ call 0a8ddh ; e8 60 aa ; 0xffe7a orgs.asm:1970
+ popad ; 66 61 ; 0xffe7d orgs.asm:1971
+ pop DS ; 1f ; 0xffe7f orgs.asm:1973
+ pop ES ; 07 ; 0xffe80 orgs.asm:1974
+ iret ; cf ; 0xffe81 orgs.asm:1975
+ push ES ; 06 ; 0xffe82 orgs.asm:1979
+ push DS ; 1e ; 0xffe83 orgs.asm:1980
+ pushaw ; 60 ; 0xffe84 orgs.asm:107
+ push CS ; 0e ; 0xffe85 orgs.asm:113
+ pop DS ; 1f ; 0xffe86 orgs.asm:114
+ cld ; fc ; 0xffe87 orgs.asm:115
+ call 06f48h ; e8 bd 70 ; 0xffe88 orgs.asm:1984
+ popaw ; 61 ; 0xffe8b orgs.asm:124
+ pop DS ; 1f ; 0xffe8c orgs.asm:1986
+ pop ES ; 07 ; 0xffe8d orgs.asm:1987
+ iret ; cf ; 0xffe8e orgs.asm:1988
+ ; 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:1998
+ push eax ; 66 50 ; 0xffea6 orgs.asm:1999
+ push DS ; 1e ; 0xffea8 orgs.asm:2004
+ push dx ; 52 ; 0xffea9 orgs.asm:2005
+ mov ax, strict word 00040h ; b8 40 00 ; 0xffeaa orgs.asm:2006
+ mov ds, ax ; 8e d8 ; 0xffead orgs.asm:2007
+ mov eax, dword [0006ch] ; 66 a1 6c 00 ; 0xffeaf orgs.asm:2010
+ inc eax ; 66 40 ; 0xffeb3 orgs.asm:2011
+ cmp eax, strict dword 0001800b0h ; 66 3d b0 00 18 00 ; 0xffeb5 orgs.asm:2023
+ jc short 0fec4h ; 72 07 ; 0xffebb orgs.asm:2024
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xffebd orgs.asm:2033
+ inc byte [word 00070h] ; fe 06 70 00 ; 0xffec0 orgs.asm:2034
+ mov dword [0006ch], eax ; 66 a3 6c 00 ; 0xffec4 orgs.asm:2037
+ mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:2045
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xffecb orgs.asm:2046
+ je short 0feddh ; 74 0e ; 0xffecd orgs.asm:2047
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xffecf orgs.asm:2048
+ mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:2049
+ jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:2050
+ mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:2052
+ in AL, DX ; ec ; 0xffed9 orgs.asm:2053
+ and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:2054
+ out DX, AL ; ee ; 0xffedc orgs.asm:2055
+ int 01ch ; cd 1c ; 0xffedd orgs.asm:2058
+ cli ; fa ; 0xffedf orgs.asm:2060
+ call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2061
+ pop dx ; 5a ; 0xffee3 orgs.asm:2062
+ pop DS ; 1f ; 0xffee4 orgs.asm:2063
+ pop eax ; 66 58 ; 0xffee5 orgs.asm:2065
+ iret ; cf ; 0xffee7 orgs.asm:2070
+ ; 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:2095
+ ; 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:2104
+ 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:2114
+ ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
+ db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 036h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
new file mode 100644
index 00000000..0ff07b1e
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
@@ -0,0 +1 @@
+b0137ac614de33e88bea424380fe32be *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..263b9f5c
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
@@ -0,0 +1,19909 @@
+; $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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: bios.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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 - ATA disk support.
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: eltorito.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: timepci.c
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: scsi.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; SCSI host adapter driver to boot from SCSI disks
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: ahci.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: virtio.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; VirtIO-SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2019-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: buslogic.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; BusLogic SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2021-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: lsilogic.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; LsiLogic SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2021-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: apm.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; APM BIOS support. Implements APM version 1.2.
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: pcibios.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PCI BIOS support.
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: pciutil.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Utility routines for calling the PCI BIOS.
+;
+;
+;
+; Copyright (C) 2011-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: vds.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Utility routines for calling the Virtual DMA Services.
+;
+;
+;
+; Copyright (C) 2011-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: __U4M.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: __U4D.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: __U8RS.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: __U8LS.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: fmemset.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: fmemcpy.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: pcibio32.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+
+;
+; Source file: apm_pm.asm
+;
+; $Id:
+; Protected-mode APM implementation.
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: orgs.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; ???
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+;
+; Source file: ASMBitLastSetU16.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; BiosCommonCode - ASMBitLastSetU16() - borrowed from IPRT.
+;
+;
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;
+; Source file: pci32.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; 32-bit PCI BIOS wrapper.
+;
+;
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+
+
+
+
+section _DATA progbits vstart=0x0 align=1 ; size=0xf0 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0000 LB 0xf0 -> 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 0x95 -> 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 0x86 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc'
+_pktacc: ; 0xf006a LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 0aah, 02bh, 062h, 07ah, 094h, 089h
+ ; disGetNextSymbol 0xf0076 LB 0x7a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst'
+_softrst: ; 0xf0076 LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 0b7h, 02dh, 0b7h, 03bh, 0b7h, 03bh
+ ; disGetNextSymbol 0xf0082 LB 0x6e -> off=0x0 cb=0000000000000018 uValue=00000000000f0082 '_dskacc'
+_dskacc: ; 0xf0082 LB 0x18
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 08eh, 02ah, 04fh, 02bh, 000h, 000h, 000h, 000h
+ db 030h, 078h, 049h, 079h, 062h, 088h, 00ch, 089h
+ ; disGetNextSymbol 0xf009a LB 0x56 -> off=0x0 cb=0000000000000056 uValue=00000000000f009a '_hbaacc'
+_hbaacc: ; 0xf009a LB 0x56
+ db 000h, 010h, 030h, 000h, 000h, 000h, 0d5h, 0a4h, 022h, 0a2h, 002h, 0a3h, 000h, 010h, 054h, 000h
+ db 000h, 000h, 0d5h, 0a4h, 022h, 0a2h, 002h, 0a3h, 04bh, 010h, 040h, 010h, 000h, 000h, 063h, 09fh
+ db 0cfh, 09dh, 088h, 09eh, 0f4h, 01ah, 048h, 010h, 000h, 000h, 034h, 09ch, 010h, 096h, 082h, 097h
+ db 0ffh, 0ffh, 0ffh, 0ffh, 0e0h, 09fh, 0bbh, 09fh, 0cfh, 09dh, 088h, 09eh, 030h, 003h, 034h, 003h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h, 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h
+ db 0f3h, 000h, 000h, 000h, 000h, 000h
+
+section CONST progbits vstart=0xf0 align=1 ; size=0xcda class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf00f0 LB 0xcda -> off=0xcda cb=0000000000000000 uValue=00000000000f0dca 'bios_cvs_version_string'
+ db 'NMI Handler called', 00ah, 000h
+ db 'INT18: BOOT FAILURE', 00ah, 000h
+ db 'Bootfail', 000h
+ db '%s', 00ah, 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!', 00ah, 000h
+ db 'Could not read from the boot medium!', 00ah, 000h
+ db 'Please insert a bootable medium and reboot.', 00ah, 000h
+ db 'CDROM boot failure code : %04x', 00ah, 000h
+ db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 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_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
+ 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=0xdca align=1 ; size=0x3fa class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0dca LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0dca 'bios_cvs_version_string'
+bios_cvs_version_string: ; 0xf0dca LB 0x12
+ db 'VirtualBox 7.0.14', 000h
+ ; disGetNextSymbol 0xf0ddc LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0ddc '_bios_prefix_string'
+_bios_prefix_string: ; 0xf0ddc LB 0x8
+ db 'BIOS: ', 000h, 000h
+ ; disGetNextSymbol 0xf0de4 LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0de4 'isotag'
+isotag: ; 0xf0de4 LB 0x6
+ db 'CD001', 000h
+ ; disGetNextSymbol 0xf0dea LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0dea 'eltorito'
+eltorito: ; 0xf0dea LB 0x18
+ db 'EL TORITO SPECIFICATION', 000h
+ ; disGetNextSymbol 0xf0e02 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0e02 'drivetypes'
+drivetypes: ; 0xf0e02 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 0xf0e2a LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0e2a 'scan_to_scanascii'
+scan_to_scanascii: ; 0xf0e2a 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 0xf11a4 LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f11a4 'panic_msg_keyb_buffer_full'
+panic_msg_keyb_buffer_full: ; 0xf11a4 LB 0x20
+ db '%s: keyboard input buffer full', 00ah, 000h
+
+ ; Padding 0x43c bytes at 0xf11c4
+ times 1084 db 0
+
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x98e8 class=CODE group=AUTO
+ ; disGetNextSymbol 0xf1600 LB 0x98e8 -> off=0x0 cb=0000000000000064 uValue=00000000000f0000 'rom_scan'
+rom_scan: ; 0xf1600 LB 0x64
+ push bp ; 55 ; 0xf1600 post.c:106
+ mov bp, sp ; 89 e5 ; 0xf1601
+ push bx ; 53 ; 0xf1603
+ push cx ; 51 ; 0xf1604
+ push si ; 56 ; 0xf1605
+ push di ; 57 ; 0xf1606
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf1607
+ push ax ; 50 ; 0xf160a
+ push dx ; 52 ; 0xf160b
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf160c post.c:113
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf160f
+ jnc short 0165bh ; 73 47 ; 0xf1612
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf1614 post.c:114
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1619
+ mov es, ax ; 8e c0 ; 0xf161c post.c:116
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf161e
+ cmp word [es:bx], 0aa55h ; 26 81 3f 55 aa ; 0xf1621
+ jne short 01654h ; 75 2c ; 0xf1626
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1628 post.c:122
+ mov word [bp-010h], strict word 00003h ; c7 46 f0 03 00 ; 0xf162b
+ call far [bp-010h] ; ff 5e f0 ; 0xf1630 post.c:123
+ cli ; fa ; 0xf1633 post.c:124
+ mov ax, 0f000h ; b8 00 f0 ; 0xf1634 post.c:125
+ mov ds, ax ; 8e d8 ; 0xf1637
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf1639 post.c:130
+ mov al, byte [es:bx+002h] ; 26 8a 47 02 ; 0xf163c
+ add AL, strict byte 003h ; 04 03 ; 0xf1640
+ and AL, strict byte 0fch ; 24 fc ; 0xf1642
+ xor ah, ah ; 30 e4 ; 0xf1644 post.c:131
+ cwd ; 99 ; 0xf1646
+ mov CL, strict byte 002h ; b1 02 ; 0xf1647
+ sal dx, CL ; d3 e2 ; 0xf1649
+ db 01bh, 0c2h
+ ; sbb ax, dx ; 1b c2 ; 0xf164b
+ sar ax, CL ; d3 f8 ; 0xf164d
+ add word [bp-012h], ax ; 01 46 ee ; 0xf164f
+ jmp short 0160ch ; eb b8 ; 0xf1652 post.c:133
+ add word [bp-012h], 00080h ; 81 46 ee 80 00 ; 0xf1654 post.c:135
+ jmp short 0160ch ; eb b1 ; 0xf1659 post.c:137
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf165b post.c:138
+ pop di ; 5f ; 0xf165e
+ pop si ; 5e ; 0xf165f
+ pop cx ; 59 ; 0xf1660
+ pop bx ; 5b ; 0xf1661
+ pop bp ; 5d ; 0xf1662
+ retn ; c3 ; 0xf1663
+ ; disGetNextSymbol 0xf1664 LB 0x9884 -> off=0x0 cb=000000000000001b uValue=00000000000f0064 'inb_cmos'
+inb_cmos: ; 0xf1664 LB 0x1b
+ push bp ; 55 ; 0xf1664 bios.c:76
+ mov bp, sp ; 89 e5 ; 0xf1665
+ push dx ; 52 ; 0xf1667
+ mov AH, strict byte 070h ; b4 70 ; 0xf1668 bios.c:78
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf166a bios.c:80
+ jc short 01670h ; 72 02 ; 0xf166c
+ mov AH, strict byte 072h ; b4 72 ; 0xf166e bios.c:81
+ mov dl, ah ; 88 e2 ; 0xf1670 bios.c:82
+ xor dh, dh ; 30 f6 ; 0xf1672
+ out DX, AL ; ee ; 0xf1674
+ inc dx ; 42 ; 0xf1675 bios.c:83
+ in AL, DX ; ec ; 0xf1676
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1677
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1679 bios.c:84
+ pop dx ; 5a ; 0xf167c
+ pop bp ; 5d ; 0xf167d
+ retn ; c3 ; 0xf167e
+ ; disGetNextSymbol 0xf167f LB 0x9869 -> off=0x0 cb=000000000000001d uValue=00000000000f007f 'outb_cmos'
+outb_cmos: ; 0xf167f LB 0x1d
+ push bp ; 55 ; 0xf167f bios.c:86
+ mov bp, sp ; 89 e5 ; 0xf1680
+ push bx ; 53 ; 0xf1682
+ mov bl, dl ; 88 d3 ; 0xf1683
+ mov AH, strict byte 070h ; b4 70 ; 0xf1685 bios.c:88
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1687 bios.c:90
+ jc short 0168dh ; 72 02 ; 0xf1689
+ mov AH, strict byte 072h ; b4 72 ; 0xf168b bios.c:91
+ mov dl, ah ; 88 e2 ; 0xf168d bios.c:92
+ xor dh, dh ; 30 f6 ; 0xf168f
+ out DX, AL ; ee ; 0xf1691
+ inc dx ; 42 ; 0xf1692 bios.c:93
+ mov al, bl ; 88 d8 ; 0xf1693
+ out DX, AL ; ee ; 0xf1695
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1696 bios.c:94
+ pop bx ; 5b ; 0xf1699
+ pop bp ; 5d ; 0xf169a
+ retn ; c3 ; 0xf169b
+ ; disGetNextSymbol 0xf169c LB 0x984c -> off=0x0 cb=0000000000000020 uValue=00000000000f009c 'get_cmos_word'
+get_cmos_word: ; 0xf169c LB 0x20
+ push bp ; 55 ; 0xf169c bios.c:99
+ mov bp, sp ; 89 e5 ; 0xf169d
+ push bx ; 53 ; 0xf169f
+ push dx ; 52 ; 0xf16a0
+ mov dl, al ; 88 c2 ; 0xf16a1
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf16a3 bios.c:101
+ xor ah, ah ; 30 e4 ; 0xf16a5
+ call 01664h ; e8 ba ff ; 0xf16a7
+ mov bh, al ; 88 c7 ; 0xf16aa
+ mov al, dl ; 88 d0 ; 0xf16ac
+ xor ah, ah ; 30 e4 ; 0xf16ae
+ call 01664h ; e8 b1 ff ; 0xf16b0
+ mov ah, bh ; 88 fc ; 0xf16b3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf16b5 bios.c:103
+ pop dx ; 5a ; 0xf16b8
+ pop bx ; 5b ; 0xf16b9
+ pop bp ; 5d ; 0xf16ba
+ retn ; c3 ; 0xf16bb
+ ; disGetNextSymbol 0xf16bc LB 0x982c -> off=0x0 cb=0000000000000061 uValue=00000000000f00bc 'dummy_isr_function'
+dummy_isr_function: ; 0xf16bc LB 0x61
+ push bp ; 55 ; 0xf16bc bios.c:105
+ mov bp, sp ; 89 e5 ; 0xf16bd
+ push ax ; 50 ; 0xf16bf
+ mov CL, strict byte 0ffh ; b1 ff ; 0xf16c0 bios.c:113
+ mov AL, strict byte 00bh ; b0 0b ; 0xf16c2 bios.c:115
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf16c4
+ out DX, AL ; ee ; 0xf16c7
+ in AL, DX ; ec ; 0xf16c8 bios.c:116
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16c9
+ mov bx, ax ; 89 c3 ; 0xf16cb
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf16cd
+ test al, al ; 84 c0 ; 0xf16d0 bios.c:117
+ je short 0170eh ; 74 3a ; 0xf16d2
+ mov AL, strict byte 00bh ; b0 0b ; 0xf16d4 bios.c:118
+ mov dx, 000a0h ; ba a0 00 ; 0xf16d6
+ out DX, AL ; ee ; 0xf16d9
+ in AL, DX ; ec ; 0xf16da bios.c:119
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16db
+ mov cx, ax ; 89 c1 ; 0xf16dd
+ test al, al ; 84 c0 ; 0xf16df bios.c:120
+ je short 016f6h ; 74 13 ; 0xf16e1
+ mov dx, 000a1h ; ba a1 00 ; 0xf16e3 bios.c:121
+ in AL, DX ; ec ; 0xf16e6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16e7
+ mov bl, cl ; 88 cb ; 0xf16e9 bios.c:122
+ or al, bl ; 08 d8 ; 0xf16eb
+ out DX, AL ; ee ; 0xf16ed
+ mov AL, strict byte 020h ; b0 20 ; 0xf16ee bios.c:123
+ mov dx, 000a0h ; ba a0 00 ; 0xf16f0
+ out DX, AL ; ee ; 0xf16f3
+ jmp short 01705h ; eb 0f ; 0xf16f4 bios.c:124
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf16f6 bios.c:125
+ in AL, DX ; ec ; 0xf16f9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16fa
+ and bl, 0fbh ; 80 e3 fb ; 0xf16fc bios.c:126
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf16ff
+ or al, bl ; 08 d8 ; 0xf1702 bios.c:127
+ out DX, AL ; ee ; 0xf1704
+ mov AL, strict byte 020h ; b0 20 ; 0xf1705 bios.c:129
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1707
+ out DX, AL ; ee ; 0xf170a
+ mov cl, byte [bp-002h] ; 8a 4e fe ; 0xf170b bios.c:130
+ mov bx, strict word 0006bh ; bb 6b 00 ; 0xf170e bios.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1711
+ mov es, ax ; 8e c0 ; 0xf1714
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf1716
+ mov sp, bp ; 89 ec ; 0xf1719 bios.c:133
+ pop bp ; 5d ; 0xf171b
+ retn ; c3 ; 0xf171c
+ ; disGetNextSymbol 0xf171d LB 0x97cb -> off=0x0 cb=0000000000000015 uValue=00000000000f011d 'nmi_handler_msg'
+nmi_handler_msg: ; 0xf171d LB 0x15
+ push bp ; 55 ; 0xf171d bios.c:136
+ mov bp, sp ; 89 e5 ; 0xf171e
+ mov ax, 000f0h ; b8 f0 00 ; 0xf1720 bios.c:138
+ push ax ; 50 ; 0xf1723
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf1724
+ push ax ; 50 ; 0xf1727
+ call 0195ch ; e8 31 02 ; 0xf1728
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf172b
+ mov sp, bp ; 89 ec ; 0xf172e bios.c:139
+ pop bp ; 5d ; 0xf1730
+ retn ; c3 ; 0xf1731
+ ; disGetNextSymbol 0xf1732 LB 0x97b6 -> off=0x0 cb=0000000000000030 uValue=00000000000f0132 'int18_panic_msg'
+int18_panic_msg: ; 0xf1732 LB 0x30
+ push bp ; 55 ; 0xf1732 bios.c:141
+ mov bp, sp ; 89 e5 ; 0xf1733
+ mov bx, 00ddch ; bb dc 0d ; 0xf1735 bios.c:143
+ mov cx, ds ; 8c d9 ; 0xf1738
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf173a
+ call 01919h ; e8 d9 01 ; 0xf173d
+ mov ax, 00104h ; b8 04 01 ; 0xf1740
+ push ax ; 50 ; 0xf1743
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf1744
+ push ax ; 50 ; 0xf1747
+ call 0195ch ; e8 11 02 ; 0xf1748
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf174b
+ mov bx, 00119h ; bb 19 01 ; 0xf174e bios.c:144
+ mov dx, 0040fh ; ba 0f 04 ; 0xf1751
+ mov al, byte [bx] ; 8a 07 ; 0xf1754
+ out DX, AL ; ee ; 0xf1756
+ inc bx ; 43 ; 0xf1757
+ mov al, byte [bx] ; 8a 07 ; 0xf1758
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xf175a
+ jne short 01756h ; 75 f8 ; 0xf175c
+ mov sp, bp ; 89 ec ; 0xf175e bios.c:145
+ pop bp ; 5d ; 0xf1760
+ retn ; c3 ; 0xf1761
+ ; disGetNextSymbol 0xf1762 LB 0x9786 -> off=0x0 cb=0000000000000024 uValue=00000000000f0162 'log_bios_start'
+log_bios_start: ; 0xf1762 LB 0x24
+ push bp ; 55 ; 0xf1762 bios.c:147
+ mov bp, sp ; 89 e5 ; 0xf1763
+ mov bx, 00ddch ; bb dc 0d ; 0xf1765 bios.c:152
+ mov cx, ds ; 8c d9 ; 0xf1768
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf176a
+ call 01919h ; e8 a9 01 ; 0xf176d
+ mov ax, 00dcah ; b8 ca 0d ; 0xf1770
+ push ax ; 50 ; 0xf1773
+ mov ax, 00122h ; b8 22 01 ; 0xf1774
+ push ax ; 50 ; 0xf1777
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf1778
+ push ax ; 50 ; 0xf177b
+ call 0195ch ; e8 dd 01 ; 0xf177c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf177f
+ mov sp, bp ; 89 ec ; 0xf1782 bios.c:153
+ pop bp ; 5d ; 0xf1784
+ retn ; c3 ; 0xf1785
+ ; disGetNextSymbol 0xf1786 LB 0x9762 -> off=0x0 cb=0000000000000027 uValue=00000000000f0186 'print_bios_banner'
+print_bios_banner: ; 0xf1786 LB 0x27
+ push bp ; 55 ; 0xf1786 bios.c:172
+ mov bp, sp ; 89 e5 ; 0xf1787
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf1789 bios.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf178c
+ mov es, ax ; 8e c0 ; 0xf178f
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1791
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf1794 bios.c:63
+ cmp ax, 01234h ; 3d 34 12 ; 0xf1799 bios.c:178
+ jne short 017a6h ; 75 08 ; 0xf179c
+ mov AL, strict byte 003h ; b0 03 ; 0xf179e bios.c:181
+ mov AH, strict byte 000h ; b4 00 ; 0xf17a0
+ int 010h ; cd 10 ; 0xf17a2
+ jmp short 017a9h ; eb 03 ; 0xf17a4 bios.c:182
+ call 07528h ; e8 7f 5d ; 0xf17a6 bios.c:185
+ mov sp, bp ; 89 ec ; 0xf17a9 bios.c:212
+ pop bp ; 5d ; 0xf17ab
+ retn ; c3 ; 0xf17ac
+ ; disGetNextSymbol 0xf17ad LB 0x973b -> off=0x0 cb=000000000000003b uValue=00000000000f01ad 'send'
+send: ; 0xf17ad LB 0x3b
+ push bp ; 55 ; 0xf17ad print.c:82
+ mov bp, sp ; 89 e5 ; 0xf17ae
+ push bx ; 53 ; 0xf17b0
+ push cx ; 51 ; 0xf17b1
+ mov bx, ax ; 89 c3 ; 0xf17b2
+ mov cl, dl ; 88 d1 ; 0xf17b4
+ test AL, strict byte 008h ; a8 08 ; 0xf17b6 print.c:90
+ je short 017c0h ; 74 06 ; 0xf17b8
+ mov al, dl ; 88 d0 ; 0xf17ba print.c:91
+ mov dx, 00403h ; ba 03 04 ; 0xf17bc
+ out DX, AL ; ee ; 0xf17bf
+ test bl, 004h ; f6 c3 04 ; 0xf17c0 print.c:92
+ je short 017cbh ; 74 06 ; 0xf17c3
+ mov al, cl ; 88 c8 ; 0xf17c5 print.c:93
+ mov dx, 00504h ; ba 04 05 ; 0xf17c7
+ out DX, AL ; ee ; 0xf17ca
+ test bl, 002h ; f6 c3 02 ; 0xf17cb print.c:95
+ je short 017e1h ; 74 11 ; 0xf17ce
+ cmp cl, 00ah ; 80 f9 0a ; 0xf17d0 print.c:96
+ jne short 017dbh ; 75 06 ; 0xf17d3
+ mov AL, strict byte 00dh ; b0 0d ; 0xf17d5 print.c:97
+ mov AH, strict byte 00eh ; b4 0e ; 0xf17d7
+ int 010h ; cd 10 ; 0xf17d9
+ mov al, cl ; 88 c8 ; 0xf17db print.c:98
+ mov AH, strict byte 00eh ; b4 0e ; 0xf17dd
+ int 010h ; cd 10 ; 0xf17df
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf17e1 print.c:100
+ pop cx ; 59 ; 0xf17e4
+ pop bx ; 5b ; 0xf17e5
+ pop bp ; 5d ; 0xf17e6
+ retn ; c3 ; 0xf17e7
+ ; disGetNextSymbol 0xf17e8 LB 0x9700 -> off=0x0 cb=0000000000000063 uValue=00000000000f01e8 'put_int'
+put_int: ; 0xf17e8 LB 0x63
+ push bp ; 55 ; 0xf17e8 print.c:102
+ mov bp, sp ; 89 e5 ; 0xf17e9
+ push si ; 56 ; 0xf17eb
+ push di ; 57 ; 0xf17ec
+ push ax ; 50 ; 0xf17ed
+ push ax ; 50 ; 0xf17ee
+ mov si, ax ; 89 c6 ; 0xf17ef
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf17f1
+ mov di, bx ; 89 df ; 0xf17f4
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf17f6 print.c:104
+ mov ax, dx ; 89 d0 ; 0xf17f9
+ cwd ; 99 ; 0xf17fb
+ idiv bx ; f7 fb ; 0xf17fc
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf17fe
+ test ax, ax ; 85 c0 ; 0xf1801 print.c:105
+ je short 01811h ; 74 0c ; 0xf1803
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf1805 print.c:106
+ mov dx, ax ; 89 c2 ; 0xf1808
+ mov ax, si ; 89 f0 ; 0xf180a
+ call 017e8h ; e8 d9 ff ; 0xf180c
+ jmp short 0182ch ; eb 1b ; 0xf180f print.c:107
+ dec di ; 4f ; 0xf1811 print.c:108
+ test di, di ; 85 ff ; 0xf1812
+ jle short 01820h ; 7e 0a ; 0xf1814
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1816 print.c:109
+ mov ax, si ; 89 f0 ; 0xf1819
+ call 017adh ; e8 8f ff ; 0xf181b
+ jmp short 01811h ; eb f1 ; 0xf181e
+ test cx, cx ; 85 c9 ; 0xf1820 print.c:110
+ je short 0182ch ; 74 08 ; 0xf1822
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1824 print.c:111
+ mov ax, si ; 89 f0 ; 0xf1827
+ call 017adh ; e8 81 ff ; 0xf1829
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf182c print.c:113
+ mov BL, strict byte 00ah ; b3 0a ; 0xf182f
+ mul bl ; f6 e3 ; 0xf1831
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf1833
+ sub bl, al ; 28 c3 ; 0xf1836
+ add bl, 030h ; 80 c3 30 ; 0xf1838
+ xor bh, bh ; 30 ff ; 0xf183b
+ mov dx, bx ; 89 da ; 0xf183d
+ mov ax, si ; 89 f0 ; 0xf183f
+ call 017adh ; e8 69 ff ; 0xf1841
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1844 print.c:114
+ pop di ; 5f ; 0xf1847
+ pop si ; 5e ; 0xf1848
+ pop bp ; 5d ; 0xf1849
+ retn ; c3 ; 0xf184a
+ ; disGetNextSymbol 0xf184b LB 0x969d -> off=0x0 cb=000000000000005e uValue=00000000000f024b 'put_uint'
+put_uint: ; 0xf184b LB 0x5e
+ push bp ; 55 ; 0xf184b print.c:116
+ mov bp, sp ; 89 e5 ; 0xf184c
+ push si ; 56 ; 0xf184e
+ push di ; 57 ; 0xf184f
+ push ax ; 50 ; 0xf1850
+ push ax ; 50 ; 0xf1851
+ mov si, ax ; 89 c6 ; 0xf1852
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf1854
+ mov ax, dx ; 89 d0 ; 0xf1857 print.c:118
+ xor dx, dx ; 31 d2 ; 0xf1859
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf185b
+ div di ; f7 f7 ; 0xf185e
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf1860
+ test ax, ax ; 85 c0 ; 0xf1863 print.c:119
+ je short 01871h ; 74 0a ; 0xf1865
+ dec bx ; 4b ; 0xf1867 print.c:120
+ mov dx, ax ; 89 c2 ; 0xf1868
+ mov ax, si ; 89 f0 ; 0xf186a
+ call 0184bh ; e8 dc ff ; 0xf186c
+ jmp short 0188ch ; eb 1b ; 0xf186f print.c:121
+ dec bx ; 4b ; 0xf1871 print.c:122
+ test bx, bx ; 85 db ; 0xf1872
+ jle short 01880h ; 7e 0a ; 0xf1874
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1876 print.c:123
+ mov ax, si ; 89 f0 ; 0xf1879
+ call 017adh ; e8 2f ff ; 0xf187b
+ jmp short 01871h ; eb f1 ; 0xf187e
+ test cx, cx ; 85 c9 ; 0xf1880 print.c:124
+ je short 0188ch ; 74 08 ; 0xf1882
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1884 print.c:125
+ mov ax, si ; 89 f0 ; 0xf1887
+ call 017adh ; e8 21 ff ; 0xf1889
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf188c print.c:127
+ mov DL, strict byte 00ah ; b2 0a ; 0xf188f
+ mul dl ; f6 e2 ; 0xf1891
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1893
+ sub dl, al ; 28 c2 ; 0xf1896
+ add dl, 030h ; 80 c2 30 ; 0xf1898
+ xor dh, dh ; 30 f6 ; 0xf189b
+ mov ax, si ; 89 f0 ; 0xf189d
+ call 017adh ; e8 0b ff ; 0xf189f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18a2 print.c:128
+ pop di ; 5f ; 0xf18a5
+ pop si ; 5e ; 0xf18a6
+ pop bp ; 5d ; 0xf18a7
+ retn ; c3 ; 0xf18a8
+ ; disGetNextSymbol 0xf18a9 LB 0x963f -> off=0x0 cb=0000000000000070 uValue=00000000000f02a9 'put_luint'
+put_luint: ; 0xf18a9 LB 0x70
+ push bp ; 55 ; 0xf18a9 print.c:130
+ mov bp, sp ; 89 e5 ; 0xf18aa
+ push si ; 56 ; 0xf18ac
+ push di ; 57 ; 0xf18ad
+ push ax ; 50 ; 0xf18ae
+ push ax ; 50 ; 0xf18af
+ mov si, ax ; 89 c6 ; 0xf18b0
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf18b2
+ mov di, dx ; 89 d7 ; 0xf18b5
+ mov ax, bx ; 89 d8 ; 0xf18b7 print.c:132
+ mov dx, cx ; 89 ca ; 0xf18b9
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf18bb
+ xor cx, cx ; 31 c9 ; 0xf18be
+ call 0ab70h ; e8 ad 92 ; 0xf18c0
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf18c3
+ mov cx, dx ; 89 d1 ; 0xf18c6
+ mov dx, ax ; 89 c2 ; 0xf18c8 print.c:133
+ or dx, cx ; 09 ca ; 0xf18ca
+ je short 018ddh ; 74 0f ; 0xf18cc
+ push word [bp+004h] ; ff 76 04 ; 0xf18ce print.c:134
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf18d1
+ mov bx, ax ; 89 c3 ; 0xf18d4
+ mov ax, si ; 89 f0 ; 0xf18d6
+ call 018a9h ; e8 ce ff ; 0xf18d8
+ jmp short 018fah ; eb 1d ; 0xf18db print.c:135
+ dec di ; 4f ; 0xf18dd print.c:136
+ test di, di ; 85 ff ; 0xf18de
+ jle short 018ech ; 7e 0a ; 0xf18e0
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf18e2 print.c:137
+ mov ax, si ; 89 f0 ; 0xf18e5
+ call 017adh ; e8 c3 fe ; 0xf18e7
+ jmp short 018ddh ; eb f1 ; 0xf18ea
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf18ec print.c:138
+ je short 018fah ; 74 08 ; 0xf18f0
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18f2 print.c:139
+ mov ax, si ; 89 f0 ; 0xf18f5
+ call 017adh ; e8 b3 fe ; 0xf18f7
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf18fa print.c:141
+ mov DL, strict byte 00ah ; b2 0a ; 0xf18fd
+ mul dl ; f6 e2 ; 0xf18ff
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf1901
+ sub dl, al ; 28 c2 ; 0xf1904
+ add dl, 030h ; 80 c2 30 ; 0xf1906
+ xor dh, dh ; 30 f6 ; 0xf1909
+ mov ax, si ; 89 f0 ; 0xf190b
+ call 017adh ; e8 9d fe ; 0xf190d
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1910 print.c:142
+ pop di ; 5f ; 0xf1913
+ pop si ; 5e ; 0xf1914
+ pop bp ; 5d ; 0xf1915
+ retn 00002h ; c2 02 00 ; 0xf1916
+ ; disGetNextSymbol 0xf1919 LB 0x95cf -> off=0x0 cb=0000000000000021 uValue=00000000000f0319 'put_str'
+put_str: ; 0xf1919 LB 0x21
+ push bp ; 55 ; 0xf1919 print.c:144
+ mov bp, sp ; 89 e5 ; 0xf191a
+ push dx ; 52 ; 0xf191c
+ push si ; 56 ; 0xf191d
+ mov si, ax ; 89 c6 ; 0xf191e
+ mov es, cx ; 8e c1 ; 0xf1920 print.c:148
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf1922
+ test dl, dl ; 84 d2 ; 0xf1925
+ je short 01933h ; 74 0a ; 0xf1927
+ xor dh, dh ; 30 f6 ; 0xf1929 print.c:149
+ mov ax, si ; 89 f0 ; 0xf192b
+ call 017adh ; e8 7d fe ; 0xf192d
+ inc bx ; 43 ; 0xf1930 print.c:150
+ jmp short 01920h ; eb ed ; 0xf1931 print.c:151
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1933 print.c:152
+ pop si ; 5e ; 0xf1936
+ pop dx ; 5a ; 0xf1937
+ pop bp ; 5d ; 0xf1938
+ retn ; c3 ; 0xf1939
+ ; disGetNextSymbol 0xf193a LB 0x95ae -> off=0x0 cb=0000000000000022 uValue=00000000000f033a 'put_str_near'
+put_str_near: ; 0xf193a LB 0x22
+ push bp ; 55 ; 0xf193a print.c:154
+ mov bp, sp ; 89 e5 ; 0xf193b
+ push bx ; 53 ; 0xf193d
+ push cx ; 51 ; 0xf193e
+ mov cx, ax ; 89 c1 ; 0xf193f
+ mov bx, dx ; 89 d3 ; 0xf1941
+ mov al, byte [bx] ; 8a 07 ; 0xf1943 print.c:158
+ test al, al ; 84 c0 ; 0xf1945
+ je short 01955h ; 74 0c ; 0xf1947
+ xor ah, ah ; 30 e4 ; 0xf1949 print.c:159
+ mov dx, ax ; 89 c2 ; 0xf194b
+ mov ax, cx ; 89 c8 ; 0xf194d
+ call 017adh ; e8 5b fe ; 0xf194f
+ inc bx ; 43 ; 0xf1952 print.c:160
+ jmp short 01943h ; eb ee ; 0xf1953 print.c:161
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1955 print.c:162
+ pop cx ; 59 ; 0xf1958
+ pop bx ; 5b ; 0xf1959
+ pop bp ; 5d ; 0xf195a
+ retn ; c3 ; 0xf195b
+ ; disGetNextSymbol 0xf195c LB 0x958c -> off=0x0 cb=000000000000034f uValue=00000000000f035c 'bios_printf'
+bios_printf: ; 0xf195c LB 0x34f
+ push bp ; 55 ; 0xf195c print.c:175
+ mov bp, sp ; 89 e5 ; 0xf195d
+ push bx ; 53 ; 0xf195f
+ push cx ; 51 ; 0xf1960
+ push dx ; 52 ; 0xf1961
+ push si ; 56 ; 0xf1962
+ push di ; 57 ; 0xf1963
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1964
+ lea bx, [bp+008h] ; 8d 5e 08 ; 0xf1967 print.c:183
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf196a
+ mov [bp-014h], ss ; 8c 56 ec ; 0xf196d
+ xor cx, cx ; 31 c9 ; 0xf1970 print.c:185
+ xor di, di ; 31 ff ; 0xf1972 print.c:186
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1974 print.c:188
+ and ax, strict word 00007h ; 25 07 00 ; 0xf1977
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf197a
+ jne short 0198dh ; 75 0e ; 0xf197d
+ mov ax, 00126h ; b8 26 01 ; 0xf197f print.c:189
+ push ax ; 50 ; 0xf1982
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf1983
+ push ax ; 50 ; 0xf1986
+ call 0195ch ; e8 d2 ff ; 0xf1987
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf198a
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf198d print.c:192
+ mov dl, byte [bx] ; 8a 17 ; 0xf1990
+ test dl, dl ; 84 d2 ; 0xf1992
+ je short 019f7h ; 74 61 ; 0xf1994
+ cmp dl, 025h ; 80 fa 25 ; 0xf1996 print.c:193
+ jne short 019a3h ; 75 08 ; 0xf1999
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf199b print.c:194
+ xor di, di ; 31 ff ; 0xf199e print.c:195
+ jmp near 01c89h ; e9 e6 02 ; 0xf19a0 print.c:197
+ test cx, cx ; 85 c9 ; 0xf19a3
+ je short 019fah ; 74 53 ; 0xf19a5
+ cmp dl, 030h ; 80 fa 30 ; 0xf19a7 print.c:198
+ jc short 019c6h ; 72 1a ; 0xf19aa
+ cmp dl, 039h ; 80 fa 39 ; 0xf19ac
+ jnbe short 019c6h ; 77 15 ; 0xf19af
+ mov bl, dl ; 88 d3 ; 0xf19b1 print.c:199
+ xor bh, bh ; 30 ff ; 0xf19b3
+ mov ax, di ; 89 f8 ; 0xf19b5
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf19b7
+ mul dx ; f7 e2 ; 0xf19ba
+ sub bx, strict byte 00030h ; 83 eb 30 ; 0xf19bc
+ mov di, ax ; 89 c7 ; 0xf19bf
+ add di, bx ; 01 df ; 0xf19c1
+ jmp near 01c89h ; e9 c3 02 ; 0xf19c3 print.c:201
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf19c6 print.c:202
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf19c9
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf19cc
+ les bx, [bp-016h] ; c4 5e ea ; 0xf19d0
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf19d3
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf19d7
+ cmp dl, 078h ; 80 fa 78 ; 0xf19da print.c:203
+ je short 019e4h ; 74 05 ; 0xf19dd
+ cmp dl, 058h ; 80 fa 58 ; 0xf19df
+ jne short 01a3fh ; 75 5b ; 0xf19e2
+ test di, di ; 85 ff ; 0xf19e4 print.c:204
+ jne short 019ebh ; 75 03 ; 0xf19e6
+ mov di, strict word 00004h ; bf 04 00 ; 0xf19e8 print.c:205
+ cmp dl, 078h ; 80 fa 78 ; 0xf19eb print.c:206
+ jne short 019fdh ; 75 0d ; 0xf19ee
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf19f0 print.c:207
+ jmp short 01a02h ; eb 0b ; 0xf19f5 print.c:208
+ jmp near 01c8fh ; e9 95 02 ; 0xf19f7
+ jmp near 01c81h ; e9 84 02 ; 0xf19fa
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf19fd print.c:209
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1a02 print.c:210
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1a05
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1a08
+ test ax, ax ; 85 c0 ; 0xf1a0b
+ jl short 01a50h ; 7c 41 ; 0xf1a0d
+ mov cx, ax ; 89 c1 ; 0xf1a0f print.c:211
+ sal cx, 1 ; d1 e1 ; 0xf1a11
+ sal cx, 1 ; d1 e1 ; 0xf1a13
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1a15
+ shr ax, CL ; d3 e8 ; 0xf1a18
+ xor ah, ah ; 30 e4 ; 0xf1a1a
+ and AL, strict byte 00fh ; 24 0f ; 0xf1a1c
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1a1e print.c:212
+ jnbe short 01a2ah ; 77 07 ; 0xf1a21
+ mov dx, ax ; 89 c2 ; 0xf1a23
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1a25
+ jmp short 01a32h ; eb 08 ; 0xf1a28
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1a2a
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1a2d
+ add dx, ax ; 01 c2 ; 0xf1a30
+ xor dh, dh ; 30 f6 ; 0xf1a32
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a34
+ call 017adh ; e8 73 fd ; 0xf1a37
+ dec word [bp-012h] ; ff 4e ee ; 0xf1a3a print.c:213
+ jmp short 01a08h ; eb c9 ; 0xf1a3d
+ cmp dl, 075h ; 80 fa 75 ; 0xf1a3f print.c:215
+ jne short 01a53h ; 75 0f ; 0xf1a42
+ xor cx, cx ; 31 c9 ; 0xf1a44 print.c:216
+ mov bx, di ; 89 fb ; 0xf1a46
+ mov dx, ax ; 89 c2 ; 0xf1a48
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a4a
+ call 0184bh ; e8 fb fd ; 0xf1a4d
+ jmp near 01c7dh ; e9 2a 02 ; 0xf1a50 print.c:218
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1a53
+ jne short 01a60h ; 75 08 ; 0xf1a56
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a58
+ cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1a5b
+ je short 01a63h ; 74 03 ; 0xf1a5e
+ jmp near 01b38h ; e9 d5 00 ; 0xf1a60
+ add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1a63 print.c:222
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a67 print.c:223
+ mov dl, byte [bx] ; 8a 17 ; 0xf1a6a
+ mov word [bp-026h], ax ; 89 46 da ; 0xf1a6c print.c:225
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a6f print.c:226
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a72
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a75
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a79
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a7c
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf1a80
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a83 print.c:227
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a86
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a89
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a8d
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a90
+ mov word [bp-022h], ax ; 89 46 de ; 0xf1a94
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a97 print.c:228
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a9a
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a9d
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1aa1
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1aa4
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf1aa8
+ cmp dl, 078h ; 80 fa 78 ; 0xf1aab print.c:229
+ je short 01ab5h ; 74 05 ; 0xf1aae
+ cmp dl, 058h ; 80 fa 58 ; 0xf1ab0
+ jne short 01b10h ; 75 5b ; 0xf1ab3
+ test di, di ; 85 ff ; 0xf1ab5 print.c:230
+ jne short 01abch ; 75 03 ; 0xf1ab7
+ mov di, strict word 00010h ; bf 10 00 ; 0xf1ab9 print.c:231
+ cmp dl, 078h ; 80 fa 78 ; 0xf1abc print.c:232
+ jne short 01ac8h ; 75 07 ; 0xf1abf
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1ac1 print.c:233
+ jmp short 01acdh ; eb 05 ; 0xf1ac6 print.c:234
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1ac8 print.c:235
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1acd print.c:236
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1ad0
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1ad3
+ test ax, ax ; 85 c0 ; 0xf1ad6
+ jl short 01b35h ; 7c 5b ; 0xf1ad8
+ sal ax, 1 ; d1 e0 ; 0xf1ada print.c:237
+ sal ax, 1 ; d1 e0 ; 0xf1adc
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1ade
+ xor ax, ax ; 31 c0 ; 0xf1ae1
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1ae3
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1ae6
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf1ae9
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1aec
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf1aef
+ mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1af2
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf1af5
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1af8
+ call 0aba0h ; e8 a2 90 ; 0xf1afb
+ mov ax, dx ; 89 d0 ; 0xf1afe
+ xor ah, dh ; 30 f4 ; 0xf1b00
+ and AL, strict byte 00fh ; 24 0f ; 0xf1b02
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1b04 print.c:238
+ jnbe short 01b12h ; 77 09 ; 0xf1b07
+ mov dx, ax ; 89 c2 ; 0xf1b09
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1b0b
+ jmp short 01b1ah ; eb 0a ; 0xf1b0e
+ jmp short 01b27h ; eb 15 ; 0xf1b10
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1b12
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1b15
+ add dx, ax ; 01 c2 ; 0xf1b18
+ xor dh, dh ; 30 f6 ; 0xf1b1a
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b1c
+ call 017adh ; e8 8b fc ; 0xf1b1f
+ dec word [bp-012h] ; ff 4e ee ; 0xf1b22 print.c:239
+ jmp short 01ad3h ; eb ac ; 0xf1b25
+ mov ax, 0012eh ; b8 2e 01 ; 0xf1b27 print.c:241
+ push ax ; 50 ; 0xf1b2a
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf1b2b
+ push ax ; 50 ; 0xf1b2e
+ call 0195ch ; e8 2a fe ; 0xf1b2f
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1b32
+ jmp near 01c7dh ; e9 45 01 ; 0xf1b35 print.c:244
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf1b38
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1b3b
+ jne short 01b98h ; 75 58 ; 0xf1b3e
+ inc word [bp+006h] ; ff 46 06 ; 0xf1b40 print.c:245
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1b43 print.c:246
+ mov dl, byte [si] ; 8a 14 ; 0xf1b46
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b48 print.c:247
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b4b
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b4e
+ les si, [bp-016h] ; c4 76 ea ; 0xf1b52
+ mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1b55
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1b59
+ cmp dl, 064h ; 80 fa 64 ; 0xf1b5c print.c:248
+ jne short 01b91h ; 75 30 ; 0xf1b5f
+ test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1b61 print.c:249
+ je short 01b7eh ; 74 17 ; 0xf1b65
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1b67 print.c:250
+ push ax ; 50 ; 0xf1b6a
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b6b
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1b6e
+ neg cx ; f7 d9 ; 0xf1b71
+ neg ax ; f7 d8 ; 0xf1b73
+ sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1b75
+ mov dx, bx ; 89 da ; 0xf1b78
+ mov bx, ax ; 89 c3 ; 0xf1b7a
+ jmp short 01b89h ; eb 0b ; 0xf1b7c print.c:251
+ xor ax, ax ; 31 c0 ; 0xf1b7e print.c:252
+ push ax ; 50 ; 0xf1b80
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf1b81
+ mov dx, di ; 89 fa ; 0xf1b84
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1b86
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b89
+ call 018a9h ; e8 1a fd ; 0xf1b8c
+ jmp short 01b35h ; eb a4 ; 0xf1b8f print.c:254
+ cmp dl, 075h ; 80 fa 75 ; 0xf1b91
+ jne short 01b9ah ; 75 04 ; 0xf1b94
+ jmp short 01b7eh ; eb e6 ; 0xf1b96
+ jmp short 01c01h ; eb 67 ; 0xf1b98
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b9a print.c:257
+ je short 01ba4h ; 74 05 ; 0xf1b9d
+ cmp dl, 058h ; 80 fa 58 ; 0xf1b9f
+ jne short 01b35h ; 75 91 ; 0xf1ba2
+ test di, di ; 85 ff ; 0xf1ba4 print.c:259
+ jne short 01babh ; 75 03 ; 0xf1ba6
+ mov di, strict word 00008h ; bf 08 00 ; 0xf1ba8 print.c:260
+ cmp dl, 078h ; 80 fa 78 ; 0xf1bab print.c:261
+ jne short 01bb7h ; 75 07 ; 0xf1bae
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1bb0 print.c:262
+ jmp short 01bbch ; eb 05 ; 0xf1bb5 print.c:263
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1bb7 print.c:264
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1bbc print.c:265
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1bbf
+ cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xf1bc2
+ jl short 01c23h ; 7c 5b ; 0xf1bc6
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1bc8 print.c:266
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf1bcb
+ sal cx, 1 ; d1 e1 ; 0xf1bce
+ sal cx, 1 ; d1 e1 ; 0xf1bd0
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1bd2
+ jcxz 01bddh ; e3 06 ; 0xf1bd5
+ shr dx, 1 ; d1 ea ; 0xf1bd7
+ rcr ax, 1 ; d1 d8 ; 0xf1bd9
+ loop 01bd7h ; e2 fa ; 0xf1bdb
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf1bdd
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1be0 print.c:267
+ jnbe short 01bech ; 77 07 ; 0xf1be3
+ mov dx, ax ; 89 c2 ; 0xf1be5
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1be7
+ jmp short 01bf4h ; eb 08 ; 0xf1bea
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1bec
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1bef
+ add dx, ax ; 01 c2 ; 0xf1bf2
+ xor dh, dh ; 30 f6 ; 0xf1bf4
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bf6
+ call 017adh ; e8 b1 fb ; 0xf1bf9
+ dec word [bp-012h] ; ff 4e ee ; 0xf1bfc print.c:268
+ jmp short 01bc2h ; eb c1 ; 0xf1bff
+ cmp dl, 064h ; 80 fa 64 ; 0xf1c01 print.c:271
+ jne short 01c25h ; 75 1f ; 0xf1c04
+ test byte [bp-00bh], 080h ; f6 46 f5 80 ; 0xf1c06 print.c:272
+ je short 01c16h ; 74 0a ; 0xf1c0a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1c0c print.c:273
+ neg dx ; f7 da ; 0xf1c0f
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf1c11
+ jmp short 01c1dh ; eb 07 ; 0xf1c14 print.c:274
+ xor cx, cx ; 31 c9 ; 0xf1c16 print.c:275
+ mov bx, di ; 89 fb ; 0xf1c18
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1c1a
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c1d
+ call 017e8h ; e8 c5 fb ; 0xf1c20
+ jmp short 01c7dh ; eb 58 ; 0xf1c23 print.c:277
+ cmp dl, 073h ; 80 fa 73 ; 0xf1c25
+ jne short 01c37h ; 75 0d ; 0xf1c28
+ mov cx, ds ; 8c d9 ; 0xf1c2a print.c:278
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf1c2c
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c2f
+ call 01919h ; e8 e4 fc ; 0xf1c32
+ jmp short 01c7dh ; eb 46 ; 0xf1c35 print.c:280
+ cmp dl, 053h ; 80 fa 53 ; 0xf1c37
+ jne short 01c5dh ; 75 21 ; 0xf1c3a
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1c3c print.c:281
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1c3f
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1c42 print.c:282
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c45
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1c48
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1c4c
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1c4f
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1c53
+ mov bx, ax ; 89 c3 ; 0xf1c56 print.c:283
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1c58
+ jmp short 01c2fh ; eb d2 ; 0xf1c5b
+ cmp dl, 063h ; 80 fa 63 ; 0xf1c5d print.c:285
+ jne short 01c6fh ; 75 0d ; 0xf1c60
+ mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf1c62 print.c:286
+ xor dh, dh ; 30 f6 ; 0xf1c65
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c67
+ call 017adh ; e8 40 fb ; 0xf1c6a
+ jmp short 01c7dh ; eb 0e ; 0xf1c6d print.c:288
+ mov ax, 0014fh ; b8 4f 01 ; 0xf1c6f print.c:289
+ push ax ; 50 ; 0xf1c72
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf1c73
+ push ax ; 50 ; 0xf1c76
+ call 0195ch ; e8 e2 fc ; 0xf1c77
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c7a
+ xor cx, cx ; 31 c9 ; 0xf1c7d print.c:290
+ jmp short 01c89h ; eb 08 ; 0xf1c7f print.c:293
+ xor dh, dh ; 30 f6 ; 0xf1c81 print.c:294
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c83
+ call 017adh ; e8 24 fb ; 0xf1c86
+ inc word [bp+006h] ; ff 46 06 ; 0xf1c89 print.c:296
+ jmp near 0198dh ; e9 fe fc ; 0xf1c8c print.c:297
+ xor ax, ax ; 31 c0 ; 0xf1c8f print.c:298
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1c91
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c94
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1c97 print.c:299
+ je short 01ca1h ; 74 04 ; 0xf1c9b
+ cli ; fa ; 0xf1c9d print.c:301
+ hlt ; f4 ; 0xf1c9e print.c:302
+ jmp short 01c9eh ; eb fd ; 0xf1c9f
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1ca1 print.c:304
+ pop di ; 5f ; 0xf1ca4
+ pop si ; 5e ; 0xf1ca5
+ pop dx ; 5a ; 0xf1ca6
+ pop cx ; 59 ; 0xf1ca7
+ pop bx ; 5b ; 0xf1ca8
+ pop bp ; 5d ; 0xf1ca9
+ retn ; c3 ; 0xf1caa
+ ; disGetNextSymbol 0xf1cab LB 0x923d -> off=0x0 cb=00000000000000f0 uValue=00000000000f06ab 'ata_init'
+ata_init: ; 0xf1cab LB 0xf0
+ push si ; 56 ; 0xf1cab ata.c:89
+ push di ; 57 ; 0xf1cac
+ push bp ; 55 ; 0xf1cad
+ mov bp, sp ; 89 e5 ; 0xf1cae
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1cb0 ata.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1cb3
+ mov es, ax ; 8e c0 ; 0xf1cb6
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf1cb8
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf1cbb ata.c:59
+ xor cl, cl ; 30 c9 ; 0xf1cbe ata.c:97
+ jmp short 01cc7h ; eb 05 ; 0xf1cc0
+ cmp cl, 004h ; 80 f9 04 ; 0xf1cc2
+ jnc short 01cf4h ; 73 2d ; 0xf1cc5
+ mov al, cl ; 88 c8 ; 0xf1cc7 ata.c:98
+ xor ah, ah ; 30 e4 ; 0xf1cc9
+ mov bx, strict word 00006h ; bb 06 00 ; 0xf1ccb
+ imul bx ; f7 eb ; 0xf1cce
+ mov es, di ; 8e c7 ; 0xf1cd0
+ mov bx, si ; 89 f3 ; 0xf1cd2
+ add bx, ax ; 01 c3 ; 0xf1cd4
+ mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf1cd6
+ mov word [es:bx+0027ah], strict word 00000h ; 26 c7 87 7a 02 00 00 ; 0xf1cdc ata.c:99
+ mov word [es:bx+0027ch], strict word 00000h ; 26 c7 87 7c 02 00 00 ; 0xf1ce3 ata.c:100
+ mov byte [es:bx+00279h], 000h ; 26 c6 87 79 02 00 ; 0xf1cea ata.c:101
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf1cf0 ata.c:102
+ jmp short 01cc2h ; eb ce ; 0xf1cf2
+ xor cl, cl ; 30 c9 ; 0xf1cf4 ata.c:105
+ jmp short 01cfdh ; eb 05 ; 0xf1cf6
+ cmp cl, 008h ; 80 f9 08 ; 0xf1cf8
+ jnc short 01d68h ; 73 6b ; 0xf1cfb
+ mov al, cl ; 88 c8 ; 0xf1cfd ata.c:106
+ xor ah, ah ; 30 e4 ; 0xf1cff
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf1d01
+ imul bx ; f7 eb ; 0xf1d04
+ mov es, di ; 8e c7 ; 0xf1d06
+ mov bx, si ; 89 f3 ; 0xf1d08
+ add bx, ax ; 01 c3 ; 0xf1d0a
+ mov word [es:bx+01eh], strict word 00000h ; 26 c7 47 1e 00 00 ; 0xf1d0c
+ mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf1d12 ata.c:108
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf1d18 ata.c:110
+ mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf1d1d ata.c:111
+ mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf1d23 ata.c:112
+ mov word [es:bx+026h], strict word 00000h ; 26 c7 47 26 00 00 ; 0xf1d28 ata.c:113
+ mov word [es:bx+028h], strict word 00000h ; 26 c7 47 28 00 00 ; 0xf1d2e ata.c:114
+ mov word [es:bx+02ah], strict word 00000h ; 26 c7 47 2a 00 00 ; 0xf1d34 ata.c:115
+ mov word [es:bx+02ch], strict word 00000h ; 26 c7 47 2c 00 00 ; 0xf1d3a ata.c:116
+ mov word [es:bx+02eh], strict word 00000h ; 26 c7 47 2e 00 00 ; 0xf1d40 ata.c:117
+ mov word [es:bx+030h], strict word 00000h ; 26 c7 47 30 00 00 ; 0xf1d46 ata.c:118
+ mov word [es:bx+038h], strict word 00000h ; 26 c7 47 38 00 00 ; 0xf1d4c ata.c:119
+ mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00 ; 0xf1d52
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf1d58
+ mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00 ; 0xf1d5e
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf1d64 ata.c:120
+ jmp short 01cf8h ; eb 90 ; 0xf1d66
+ xor cl, cl ; 30 c9 ; 0xf1d68 ata.c:123
+ jmp short 01d71h ; eb 05 ; 0xf1d6a
+ cmp cl, 014h ; 80 f9 14 ; 0xf1d6c
+ jnc short 01d89h ; 73 18 ; 0xf1d6f
+ mov bl, cl ; 88 cb ; 0xf1d71 ata.c:124
+ xor bh, bh ; 30 ff ; 0xf1d73
+ mov es, di ; 8e c7 ; 0xf1d75
+ add bx, si ; 01 f3 ; 0xf1d77
+ mov byte [es:bx+0024fh], 014h ; 26 c6 87 4f 02 14 ; 0xf1d79
+ mov byte [es:bx+00264h], 014h ; 26 c6 87 64 02 14 ; 0xf1d7f ata.c:125
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf1d85 ata.c:126
+ jmp short 01d6ch ; eb e3 ; 0xf1d87
+ mov es, di ; 8e c7 ; 0xf1d89 ata.c:128
+ mov byte [es:si+0024eh], 000h ; 26 c6 84 4e 02 00 ; 0xf1d8b
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf1d91 ata.c:129
+ pop bp ; 5d ; 0xf1d97 ata.c:130
+ pop di ; 5f ; 0xf1d98
+ pop si ; 5e ; 0xf1d99
+ retn ; c3 ; 0xf1d9a
+ ; disGetNextSymbol 0xf1d9b LB 0x914d -> off=0x0 cb=00000000000000e9 uValue=00000000000f079b 'ata_reset'
+ata_reset: ; 0xf1d9b LB 0xe9
+ push bp ; 55 ; 0xf1d9b ata.c:138
+ mov bp, sp ; 89 e5 ; 0xf1d9c
+ push bx ; 53 ; 0xf1d9e
+ push cx ; 51 ; 0xf1d9f
+ push dx ; 52 ; 0xf1da0
+ push si ; 56 ; 0xf1da1
+ push di ; 57 ; 0xf1da2
+ push ax ; 50 ; 0xf1da3
+ push ax ; 50 ; 0xf1da4
+ push ax ; 50 ; 0xf1da5
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1da6 ata.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1da9
+ mov es, ax ; 8e c0 ; 0xf1dac
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf1dae
+ mov word [bp-00eh], strict word 0005eh ; c7 46 f2 5e 00 ; 0xf1db1 ata.c:59
+ mov di, bx ; 89 df ; 0xf1db6
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1db8 ata.c:147
+ shr ax, 1 ; d1 e8 ; 0xf1dbb
+ mov ah, byte [bp-010h] ; 8a 66 f0 ; 0xf1dbd ata.c:148
+ and ah, 001h ; 80 e4 01 ; 0xf1dc0
+ mov byte [bp-00ch], ah ; 88 66 f4 ; 0xf1dc3
+ xor ah, ah ; 30 e4 ; 0xf1dc6 ata.c:150
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf1dc8
+ imul dx ; f7 ea ; 0xf1dcb
+ mov es, bx ; 8e c3 ; 0xf1dcd
+ mov bx, ax ; 89 c3 ; 0xf1dcf
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf1dd1
+ mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf1dd4
+ mov si, word [es:bx+0027ch] ; 26 8b b7 7c 02 ; 0xf1dd9 ata.c:151
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1dde ata.c:156
+ mov AL, strict byte 00eh ; b0 0e ; 0xf1de1
+ out DX, AL ; ee ; 0xf1de3
+ mov bx, 000ffh ; bb ff 00 ; 0xf1de4 ata.c:159
+ dec bx ; 4b ; 0xf1de7 ata.c:160
+ test bx, bx ; 85 db ; 0xf1de8
+ jbe short 01df8h ; 76 0c ; 0xf1dea
+ mov dx, cx ; 89 ca ; 0xf1dec ata.c:161
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1dee
+ in AL, DX ; ec ; 0xf1df1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1df2
+ test AL, strict byte 080h ; a8 80 ; 0xf1df4 ata.c:162
+ je short 01de7h ; 74 ef ; 0xf1df6
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1df8 ata.c:167
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1dfb
+ out DX, AL ; ee ; 0xf1dfd
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf1dfe ata.c:170
+ dec bx ; 4b ; 0xf1e01 ata.c:171
+ test bx, bx ; 85 db ; 0xf1e02
+ jbe short 01e1ch ; 76 16 ; 0xf1e04
+ mov dx, cx ; 89 ca ; 0xf1e06 ata.c:172
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e08
+ in AL, DX ; ec ; 0xf1e0b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e0c
+ test AL, strict byte 080h ; a8 80 ; 0xf1e0e ata.c:173
+ je short 01e1ch ; 74 0a ; 0xf1e10
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1e12 ata.c:175
+ dec ax ; 48 ; 0xf1e15 ata.c:176
+ test ax, ax ; 85 c0 ; 0xf1e16
+ jnbe short 01e15h ; 77 fb ; 0xf1e18
+ jmp short 01e01h ; eb e5 ; 0xf1e1a ata.c:179
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1e1c ata.c:181
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf1e1f
+ imul dx ; f7 ea ; 0xf1e22
+ mov es, di ; 8e c7 ; 0xf1e24
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf1e26
+ add bx, ax ; 01 c3 ; 0xf1e29
+ cmp byte [es:bx+01eh], 000h ; 26 80 7f 1e 00 ; 0xf1e2b
+ je short 01e74h ; 74 42 ; 0xf1e30
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1e32 ata.c:184
+ je short 01e3dh ; 74 05 ; 0xf1e36
+ mov ax, 000b0h ; b8 b0 00 ; 0xf1e38
+ jmp short 01e40h ; eb 03 ; 0xf1e3b
+ mov ax, 000a0h ; b8 a0 00 ; 0xf1e3d
+ mov dx, cx ; 89 ca ; 0xf1e40
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1e42
+ out DX, AL ; ee ; 0xf1e45
+ mov dx, cx ; 89 ca ; 0xf1e46 ata.c:185
+ inc dx ; 42 ; 0xf1e48
+ inc dx ; 42 ; 0xf1e49
+ in AL, DX ; ec ; 0xf1e4a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e4b
+ mov bx, ax ; 89 c3 ; 0xf1e4d
+ mov dx, cx ; 89 ca ; 0xf1e4f ata.c:186
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1e51
+ in AL, DX ; ec ; 0xf1e54
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e55
+ cmp bl, 001h ; 80 fb 01 ; 0xf1e57 ata.c:188
+ jne short 01e74h ; 75 18 ; 0xf1e5a
+ cmp al, bl ; 38 d8 ; 0xf1e5c
+ jne short 01e74h ; 75 14 ; 0xf1e5e
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf1e60 ata.c:190
+ dec bx ; 4b ; 0xf1e63 ata.c:191
+ test bx, bx ; 85 db ; 0xf1e64
+ jbe short 01e74h ; 76 0c ; 0xf1e66
+ mov dx, cx ; 89 ca ; 0xf1e68 ata.c:192
+ 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 040h ; a8 40 ; 0xf1e70 ata.c:193
+ je short 01e63h ; 74 ef ; 0xf1e72
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1e74 ata.c:200
+ mov AL, strict byte 008h ; b0 08 ; 0xf1e77
+ out DX, AL ; ee ; 0xf1e79
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1e7a ata.c:201
+ pop di ; 5f ; 0xf1e7d
+ pop si ; 5e ; 0xf1e7e
+ pop dx ; 5a ; 0xf1e7f
+ pop cx ; 59 ; 0xf1e80
+ pop bx ; 5b ; 0xf1e81
+ pop bp ; 5d ; 0xf1e82
+ retn ; c3 ; 0xf1e83
+ ; disGetNextSymbol 0xf1e84 LB 0x9064 -> off=0x0 cb=00000000000002b7 uValue=00000000000f0884 'ata_cmd_data_in'
+ata_cmd_data_in: ; 0xf1e84 LB 0x2b7
+ push bp ; 55 ; 0xf1e84 ata.c:215
+ mov bp, sp ; 89 e5 ; 0xf1e85
+ push si ; 56 ; 0xf1e87
+ push di ; 57 ; 0xf1e88
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf1e89
+ push ax ; 50 ; 0xf1e8c
+ push dx ; 52 ; 0xf1e8d
+ push bx ; 53 ; 0xf1e8e
+ push cx ; 51 ; 0xf1e8f
+ mov es, dx ; 8e c2 ; 0xf1e90 ata.c:225
+ mov bx, ax ; 89 c3 ; 0xf1e92
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1e94
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf1e98
+ mov bl, al ; 88 c3 ; 0xf1e9b ata.c:227
+ xor bh, ah ; 30 e7 ; 0xf1e9d
+ mov ax, bx ; 89 d8 ; 0xf1e9f
+ cwd ; 99 ; 0xf1ea1
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf1ea2
+ sar ax, 1 ; d1 f8 ; 0xf1ea4
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf1ea6
+ imul dx ; f7 ea ; 0xf1ea9
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1eab
+ add di, ax ; 01 c7 ; 0xf1eae
+ mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf1eb0
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1eb5
+ mov ax, word [es:di+0027ch] ; 26 8b 85 7c 02 ; 0xf1eb8 ata.c:228
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1ebd
+ mov ax, bx ; 89 d8 ; 0xf1ec0 ata.c:230
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf1ec2
+ imul dx ; f7 ea ; 0xf1ec5
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1ec7
+ add bx, ax ; 01 c3 ; 0xf1eca
+ mov ax, word [es:bx+024h] ; 26 8b 47 24 ; 0xf1ecc
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1ed0
+ test ax, ax ; 85 c0 ; 0xf1ed3 ata.c:231
+ jne short 01edeh ; 75 07 ; 0xf1ed5
+ mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1ed7 ata.c:237
+ jmp short 01ee1h ; eb 03 ; 0xf1edc ata.c:238
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1ede ata.c:244
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ee1 ata.c:247
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ee4
+ in AL, DX ; ec ; 0xf1ee7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1ee8
+ test AL, strict byte 080h ; a8 80 ; 0xf1eea ata.c:248
+ je short 01efdh ; 74 0f ; 0xf1eec
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1eee ata.c:252
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1ef1
+ mov AL, strict byte 008h ; b0 08 ; 0xf1ef4
+ out DX, AL ; ee ; 0xf1ef6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1ef7 ata.c:253
+ jmp near 02134h ; e9 37 02 ; 0xf1efa
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1efd ata.c:256
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1f00
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1f03
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f07
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1f0a
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1f0e
+ mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1f11 ata.c:257
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1f15
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1f18 ata.c:258
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1f1c
+ mov bl, byte [es:bx+014h] ; 26 8a 5f 14 ; 0xf1f1f ata.c:259
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1f23 ata.c:262
+ test al, al ; 84 c0 ; 0xf1f26
+ je short 01f2dh ; 74 03 ; 0xf1f28
+ jmp near 02012h ; e9 e5 00 ; 0xf1f2a
+ xor ah, ah ; 30 e4 ; 0xf1f2d ata.c:263
+ xor bx, bx ; 31 db ; 0xf1f2f
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf1f31
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f34
+ mov cx, word [es:si] ; 26 8b 0c ; 0xf1f37
+ add cx, word [bp-01ch] ; 03 4e e4 ; 0xf1f3a
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf1f3d
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf1f41
+ mov dx, word [es:si+006h] ; 26 8b 54 06 ; 0xf1f45
+ adc dx, word [bp-014h] ; 13 56 ec ; 0xf1f49
+ test dx, dx ; 85 d2 ; 0xf1f4c
+ jnbe short 01f62h ; 77 12 ; 0xf1f4e
+ je short 01f55h ; 74 03 ; 0xf1f50
+ jmp near 01fc8h ; e9 73 00 ; 0xf1f52
+ test bx, bx ; 85 db ; 0xf1f55
+ jnbe short 01f62h ; 77 09 ; 0xf1f57
+ jne short 01fc8h ; 75 6d ; 0xf1f59
+ cmp ax, 01000h ; 3d 00 10 ; 0xf1f5b
+ jnbe short 01f62h ; 77 02 ; 0xf1f5e
+ jne short 01fc8h ; 75 66 ; 0xf1f60
+ mov bx, si ; 89 f3 ; 0xf1f62 ata.c:265
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f64
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f68
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f6c
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f70
+ mov si, strict word 00018h ; be 18 00 ; 0xf1f73
+ call 0aba0h ; e8 27 8c ; 0xf1f76
+ xor dh, dh ; 30 f6 ; 0xf1f79
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf1f7b
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f7e ata.c:266
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f81
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f85
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f89
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f8c
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f90
+ mov si, strict word 00020h ; be 20 00 ; 0xf1f93
+ call 0aba0h ; e8 07 8c ; 0xf1f96
+ mov bx, dx ; 89 d3 ; 0xf1f99
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf1f9b
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf1f9e ata.c:267
+ mov al, ah ; 88 e0 ; 0xf1fa1
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fa3
+ inc dx ; 42 ; 0xf1fa6
+ inc dx ; 42 ; 0xf1fa7
+ out DX, AL ; ee ; 0xf1fa8
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fa9 ata.c:268
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1fac
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf1faf
+ out DX, AL ; ee ; 0xf1fb2
+ xor bh, bh ; 30 ff ; 0xf1fb3 ata.c:269
+ mov ax, bx ; 89 d8 ; 0xf1fb5
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fb7
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1fba
+ out DX, AL ; ee ; 0xf1fbd
+ mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf1fbe ata.c:270
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fc1
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf1fc4
+ out DX, AL ; ee ; 0xf1fc7
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1fc8 ata.c:274
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1fcb
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1fce
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1fd1
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1fd4 ata.c:275
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1fd8
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1fdc
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1fdf
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1fe3
+ mov si, strict word 00008h ; be 08 00 ; 0xf1fe6
+ call 0aba0h ; e8 b4 8b ; 0xf1fe9
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf1fec
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1fef ata.c:276
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1ff2
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1ff6
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ffa
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1ffd
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf2001
+ mov si, strict word 00018h ; be 18 00 ; 0xf2004
+ call 0aba0h ; e8 96 8b ; 0xf2007
+ mov bl, dl ; 88 d3 ; 0xf200a
+ and bl, 00fh ; 80 e3 0f ; 0xf200c
+ or bl, 040h ; 80 cb 40 ; 0xf200f
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2012 ata.c:279
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2015
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2018
+ out DX, AL ; ee ; 0xf201a
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf201b ata.c:280
+ inc dx ; 42 ; 0xf201e
+ xor al, al ; 30 c0 ; 0xf201f
+ out DX, AL ; ee ; 0xf2021
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2022 ata.c:281
+ inc dx ; 42 ; 0xf2025
+ inc dx ; 42 ; 0xf2026
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2027
+ out DX, AL ; ee ; 0xf202a
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf202b ata.c:282
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf202e
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2031
+ out DX, AL ; ee ; 0xf2034
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2035 ata.c:283
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2038
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf203b
+ out DX, AL ; ee ; 0xf203e
+ mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf203f ata.c:284
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2042
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2045
+ out DX, AL ; ee ; 0xf2048
+ test byte [bp-008h], 001h ; f6 46 f8 01 ; 0xf2049 ata.c:285
+ je short 02054h ; 74 05 ; 0xf204d
+ mov ax, 000b0h ; b8 b0 00 ; 0xf204f
+ jmp short 02057h ; eb 03 ; 0xf2052
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2054
+ mov dl, bl ; 88 da ; 0xf2057
+ xor dh, dh ; 30 f6 ; 0xf2059
+ or ax, dx ; 09 d0 ; 0xf205b
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf205d
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2060
+ out DX, AL ; ee ; 0xf2063
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2064 ata.c:286
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2067
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf206a
+ out DX, AL ; ee ; 0xf206d
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf206e ata.c:288
+ cmp ax, 000c4h ; 3d c4 00 ; 0xf2071
+ je short 0207bh ; 74 05 ; 0xf2074
+ cmp ax, strict word 00029h ; 3d 29 00 ; 0xf2076
+ jne short 02085h ; 75 0a ; 0xf2079
+ mov si, word [bp-01ch] ; 8b 76 e4 ; 0xf207b ata.c:289
+ mov word [bp-01ch], strict word 00001h ; c7 46 e4 01 00 ; 0xf207e ata.c:290
+ jmp short 02088h ; eb 03 ; 0xf2083 ata.c:291
+ mov si, strict word 00001h ; be 01 00 ; 0xf2085 ata.c:292
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2088 ata.c:296
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf208b
+ in AL, DX ; ec ; 0xf208e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf208f
+ mov bl, al ; 88 c3 ; 0xf2091
+ test AL, strict byte 080h ; a8 80 ; 0xf2093 ata.c:297
+ jne short 02088h ; 75 f1 ; 0xf2095
+ test AL, strict byte 001h ; a8 01 ; 0xf2097 ata.c:301
+ je short 020aah ; 74 0f ; 0xf2099
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf209b ata.c:304
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf209e
+ mov AL, strict byte 008h ; b0 08 ; 0xf20a1
+ out DX, AL ; ee ; 0xf20a3
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf20a4 ata.c:305
+ jmp near 02134h ; e9 8a 00 ; 0xf20a7
+ test bl, 008h ; f6 c3 08 ; 0xf20aa ata.c:306
+ jne short 020beh ; 75 0f ; 0xf20ad
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20af ata.c:309
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20b2
+ mov AL, strict byte 008h ; b0 08 ; 0xf20b5
+ out DX, AL ; ee ; 0xf20b7
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf20b8 ata.c:310
+ jmp near 02134h ; e9 76 00 ; 0xf20bb
+ sti ; fb ; 0xf20be ata.c:315
+ cmp di, 0f800h ; 81 ff 00 f8 ; 0xf20bf ata.c:320
+ jc short 020d2h ; 72 0d ; 0xf20c3
+ sub di, 00800h ; 81 ef 00 08 ; 0xf20c5 ata.c:321
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf20c9
+ add ax, 00080h ; 05 80 00 ; 0xf20cc
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf20cf
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf20d2 ata.c:328
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf20d5
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf20d8
+ rep insw ; f3 6d ; 0xf20db
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf20dd ata.c:329
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf20e0
+ add word [es:bx+018h], si ; 26 01 77 18 ; 0xf20e3
+ dec word [bp-01ch] ; ff 4e e4 ; 0xf20e7 ata.c:330
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf20ea ata.c:332
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf20ed
+ in AL, DX ; ec ; 0xf20f0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf20f1
+ mov bl, al ; 88 c3 ; 0xf20f3
+ test AL, strict byte 080h ; a8 80 ; 0xf20f5 ata.c:333
+ jne short 020eah ; 75 f1 ; 0xf20f7
+ cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf20f9 ata.c:336
+ jne short 02113h ; 75 14 ; 0xf20fd
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf20ff ata.c:337
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2101
+ je short 02129h ; 74 24 ; 0xf2103
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2105 ata.c:341
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2108
+ mov AL, strict byte 008h ; b0 08 ; 0xf210b
+ out DX, AL ; ee ; 0xf210d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf210e ata.c:342
+ jmp short 02134h ; eb 21 ; 0xf2111
+ mov al, bl ; 88 d8 ; 0xf2113 ata.c:347
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2115
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2117
+ je short 020bfh ; 74 a4 ; 0xf2119
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf211b ata.c:351
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf211e
+ mov AL, strict byte 008h ; b0 08 ; 0xf2121
+ out DX, AL ; ee ; 0xf2123
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf2124 ata.c:352
+ jmp short 02134h ; eb 0b ; 0xf2127
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2129 ata.c:358
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf212c
+ mov AL, strict byte 008h ; b0 08 ; 0xf212f
+ out DX, AL ; ee ; 0xf2131
+ xor ax, ax ; 31 c0 ; 0xf2132 ata.c:359
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2134 ata.c:360
+ pop di ; 5f ; 0xf2137
+ pop si ; 5e ; 0xf2138
+ pop bp ; 5d ; 0xf2139
+ retn ; c3 ; 0xf213a
+ ; disGetNextSymbol 0xf213b LB 0x8dad -> off=0x0 cb=0000000000000094 uValue=00000000000f0b3b 'ata_signature'
+ata_signature: ; 0xf213b LB 0x94
+ push bp ; 55 ; 0xf213b ata.c:366
+ mov bp, sp ; 89 e5 ; 0xf213c
+ push cx ; 51 ; 0xf213e
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf213f
+ mov cx, ax ; 89 c1 ; 0xf2142
+ mov al, bl ; 88 d8 ; 0xf2144
+ xor bx, bx ; 31 db ; 0xf2146 ata.c:368
+ test al, al ; 84 c0 ; 0xf2148 ata.c:376
+ je short 02151h ; 74 05 ; 0xf214a
+ mov ax, 000b0h ; b8 b0 00 ; 0xf214c
+ jmp short 02154h ; eb 03 ; 0xf214f
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2151
+ mov dx, cx ; 89 ca ; 0xf2154
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2156
+ out DX, AL ; ee ; 0xf2159
+ mov dx, cx ; 89 ca ; 0xf215a ata.c:378
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf215c
+ in AL, DX ; ec ; 0xf215f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2160
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf2162
+ test AL, strict byte 080h ; a8 80 ; 0xf2165 ata.c:379
+ jne short 0215ah ; 75 f1 ; 0xf2167
+ mov dx, cx ; 89 ca ; 0xf2169 ata.c:387
+ inc dx ; 42 ; 0xf216b
+ inc dx ; 42 ; 0xf216c
+ in AL, DX ; ec ; 0xf216d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf216e
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2170
+ mov dx, cx ; 89 ca ; 0xf2173 ata.c:388
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2175
+ in AL, DX ; ec ; 0xf2178
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2179
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf217b ata.c:389
+ jne short 021c7h ; 75 46 ; 0xf217f
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2181
+ jne short 021c7h ; 75 42 ; 0xf2183
+ mov dx, cx ; 89 ca ; 0xf2185 ata.c:390
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2187
+ in AL, DX ; ec ; 0xf218a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf218b
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf218d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2190
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf2193
+ mov dx, cx ; 89 ca ; 0xf2196 ata.c:391
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2198
+ in AL, DX ; ec ; 0xf219b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf219c
+ mov dl, al ; 88 c2 ; 0xf219e
+ cmp byte [bp-008h], 014h ; 80 7e f8 14 ; 0xf21a0 ata.c:398
+ jne short 021afh ; 75 09 ; 0xf21a4
+ cmp AL, strict byte 0ebh ; 3c eb ; 0xf21a6
+ jne short 021afh ; 75 05 ; 0xf21a8
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf21aa ata.c:399
+ jmp short 021c7h ; eb 18 ; 0xf21ad ata.c:401
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf21af
+ jne short 021c4h ; 75 0f ; 0xf21b3
+ test dl, dl ; 84 d2 ; 0xf21b5
+ jne short 021c4h ; 75 0b ; 0xf21b7
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf21b9 ata.c:402
+ je short 021c7h ; 74 08 ; 0xf21bd
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf21bf ata.c:403
+ jmp short 021c7h ; eb 03 ; 0xf21c2 ata.c:408
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf21c4 ata.c:409
+ mov ax, bx ; 89 d8 ; 0xf21c7 ata.c:416
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf21c9
+ pop cx ; 59 ; 0xf21cc
+ pop bp ; 5d ; 0xf21cd
+ retn ; c3 ; 0xf21ce
+ ; disGetNextSymbol 0xf21cf LB 0x8d19 -> off=0x0 cb=0000000000000631 uValue=00000000000f0bcf 'ata_detect'
+ata_detect: ; 0xf21cf LB 0x631
+ push bp ; 55 ; 0xf21cf ata.c:418
+ mov bp, sp ; 89 e5 ; 0xf21d0
+ push si ; 56 ; 0xf21d2
+ push di ; 57 ; 0xf21d3
+ sub sp, 00260h ; 81 ec 60 02 ; 0xf21d4
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf21d8 ata.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf21db
+ mov es, ax ; 8e c0 ; 0xf21de
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf21e0
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf21e3 ata.c:59
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf21e6 ata.c:441
+ mov es, ax ; 8e c0 ; 0xf21e9
+ mov word [bp-028h], bx ; 89 5e d8 ; 0xf21eb
+ mov word [bp-026h], ax ; 89 46 da ; 0xf21ee
+ mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf21f1 ata.c:444
+ mov word [es:bx+0027ah], 001f0h ; 26 c7 87 7a 02 f0 01 ; 0xf21f7 ata.c:445
+ mov word [es:bx+0027ch], 003f0h ; 26 c7 87 7c 02 f0 03 ; 0xf21fe ata.c:446
+ mov byte [es:bx+00279h], 00eh ; 26 c6 87 79 02 0e ; 0xf2205 ata.c:447
+ mov byte [es:bx+0027eh], 000h ; 26 c6 87 7e 02 00 ; 0xf220b ata.c:450
+ mov word [es:bx+00280h], 00170h ; 26 c7 87 80 02 70 01 ; 0xf2211 ata.c:451
+ mov word [es:bx+00282h], 00370h ; 26 c7 87 82 02 70 03 ; 0xf2218 ata.c:452
+ mov byte [es:bx+0027fh], 00fh ; 26 c6 87 7f 02 0f ; 0xf221f ata.c:453
+ mov byte [es:bx+00284h], 000h ; 26 c6 87 84 02 00 ; 0xf2225 ata.c:456
+ mov word [es:bx+00286h], 001e8h ; 26 c7 87 86 02 e8 01 ; 0xf222b ata.c:457
+ mov word [es:bx+00288h], 003e0h ; 26 c7 87 88 02 e0 03 ; 0xf2232 ata.c:458
+ mov byte [es:bx+00285h], 00ch ; 26 c6 87 85 02 0c ; 0xf2239 ata.c:459
+ mov byte [es:bx+0028ah], 000h ; 26 c6 87 8a 02 00 ; 0xf223f ata.c:462
+ mov word [es:bx+0028ch], 00168h ; 26 c7 87 8c 02 68 01 ; 0xf2245 ata.c:463
+ mov word [es:bx+0028eh], 00360h ; 26 c7 87 8e 02 60 03 ; 0xf224c ata.c:464
+ mov byte [es:bx+0028bh], 00bh ; 26 c6 87 8b 02 0b ; 0xf2253 ata.c:465
+ xor al, al ; 30 c0 ; 0xf2259 ata.c:472
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf225b
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf225e
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf2261 ata.c:474
+ jmp near 0278eh ; e9 27 05 ; 0xf2264
+ test cl, cl ; 84 c9 ; 0xf2267 ata.c:519
+ jne short 022d5h ; 75 6a ; 0xf2269
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf226b ata.c:520
+ mov AL, strict byte 00eh ; b0 0e ; 0xf226e
+ out DX, AL ; ee ; 0xf2270
+ mov bx, strict word 00020h ; bb 20 00 ; 0xf2271 ata.c:526
+ dec bx ; 4b ; 0xf2274 ata.c:527
+ test bx, bx ; 85 db ; 0xf2275
+ jbe short 02283h ; 76 0a ; 0xf2277
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf2279 ata.c:528
+ in AL, DX ; ec ; 0xf227c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf227d
+ test AL, strict byte 080h ; a8 80 ; 0xf227f ata.c:529
+ je short 02274h ; 74 f1 ; 0xf2281
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf2283 ata.c:533
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2286
+ out DX, AL ; ee ; 0xf2288
+ mov cl, byte [bp-018h] ; 8a 4e e8 ; 0xf2289 ata.c:540
+ xor ch, ch ; 30 ed ; 0xf228c
+ xor bx, bx ; 31 db ; 0xf228e
+ mov dx, cx ; 89 ca ; 0xf2290
+ mov ax, si ; 89 f0 ; 0xf2292
+ call 0213bh ; e8 a4 fe ; 0xf2294
+ mov word [bp-034h], ax ; 89 46 cc ; 0xf2297
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf229a
+ mov byte [bp-030h], al ; 88 46 d0 ; 0xf229d
+ mov byte [bp-02fh], ch ; 88 6e d1 ; 0xf22a0
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf22a3
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf22a6
+ imul dx ; f7 ea ; 0xf22a9
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf22ab
+ add bx, ax ; 01 c3 ; 0xf22ae
+ mov al, byte [bp-034h] ; 8a 46 cc ; 0xf22b0
+ mov byte [es:bx+01eh], al ; 26 88 47 1e ; 0xf22b3
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf22b7 ata.c:541
+ mov dx, cx ; 89 ca ; 0xf22ba
+ mov ax, si ; 89 f0 ; 0xf22bc
+ call 0213bh ; e8 7a fe ; 0xf22be
+ mov cx, ax ; 89 c1 ; 0xf22c1
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf22c3
+ inc ax ; 40 ; 0xf22c6
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf22c7
+ imul dx ; f7 ea ; 0xf22ca
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf22cc
+ add bx, ax ; 01 c3 ; 0xf22cf
+ mov byte [es:bx+01eh], cl ; 26 88 4f 1e ; 0xf22d1
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf22d5 ata.c:545
+ mov AL, strict byte 008h ; b0 08 ; 0xf22d8
+ out DX, AL ; ee ; 0xf22da
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf22db ata.c:547
+ xor ah, ah ; 30 e4 ; 0xf22de
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf22e0
+ imul dx ; f7 ea ; 0xf22e3
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf22e5
+ add bx, ax ; 01 c3 ; 0xf22e8
+ mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf22ea
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf22ee
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf22f1 ata.c:550
+ jne short 02341h ; 75 4c ; 0xf22f3
+ mov byte [es:bx+01fh], 0ffh ; 26 c6 47 1f ff ; 0xf22f5 ata.c:558
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf22fa ata.c:559
+ lea dx, [bp-00264h] ; 8d 96 9c fd ; 0xf22ff ata.c:560
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf2303
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf2306
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf230a
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf230e ata.c:561
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2311
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf2315 ata.c:563
+ mov bx, 000ech ; bb ec 00 ; 0xf2318
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf231b
+ mov dx, es ; 8c c2 ; 0xf231e
+ call 01e84h ; e8 61 fb ; 0xf2320
+ test ax, ax ; 85 c0 ; 0xf2323
+ je short 02335h ; 74 0e ; 0xf2325
+ mov ax, 0016ch ; b8 6c 01 ; 0xf2327 ata.c:564
+ push ax ; 50 ; 0xf232a
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf232b
+ push ax ; 50 ; 0xf232e
+ call 0195ch ; e8 2a f6 ; 0xf232f
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2332
+ test byte [bp-00264h], 080h ; f6 86 9c fd 80 ; 0xf2335 ata.c:566
+ je short 02344h ; 74 08 ; 0xf233a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf233c
+ jmp short 02346h ; eb 05 ; 0xf233f
+ jmp near 02545h ; e9 01 02 ; 0xf2341
+ xor ax, ax ; 31 c0 ; 0xf2344
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf2346
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf2349 ata.c:570
+ mov word [bp-02eh], 00200h ; c7 46 d2 00 02 ; 0xf234d ata.c:572
+ mov ax, word [bp-00262h] ; 8b 86 9e fd ; 0xf2352 ata.c:574
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf2356
+ mov ax, word [bp-0025eh] ; 8b 86 a2 fd ; 0xf2359 ata.c:575
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf235d
+ mov ax, word [bp-00258h] ; 8b 86 a8 fd ; 0xf2360 ata.c:576
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2364
+ mov si, word [bp-001ech] ; 8b b6 14 fe ; 0xf2367 ata.c:578
+ mov ax, word [bp-001eah] ; 8b 86 16 fe ; 0xf236b
+ mov word [bp-022h], ax ; 89 46 de ; 0xf236f
+ xor ax, ax ; 31 c0 ; 0xf2372
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf2374
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2377
+ cmp word [bp-022h], 00fffh ; 81 7e de ff 0f ; 0xf237a ata.c:579
+ jne short 0239fh ; 75 1e ; 0xf237f
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf2381
+ jne short 0239fh ; 75 19 ; 0xf2384
+ mov ax, word [bp-00196h] ; 8b 86 6a fe ; 0xf2386 ata.c:580
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf238a
+ mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf238d
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf2391
+ mov ax, word [bp-0019ah] ; 8b 86 66 fe ; 0xf2394
+ mov word [bp-022h], ax ; 89 46 de ; 0xf2398
+ mov si, word [bp-0019ch] ; 8b b6 64 fe ; 0xf239b
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf239f ata.c:581
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf23a2
+ jc short 023b2h ; 72 0c ; 0xf23a4
+ jbe short 023bah ; 76 12 ; 0xf23a6
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf23a8
+ je short 023c2h ; 74 16 ; 0xf23aa
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf23ac
+ je short 023beh ; 74 0e ; 0xf23ae
+ jmp short 023eah ; eb 38 ; 0xf23b0
+ test al, al ; 84 c0 ; 0xf23b2
+ jne short 023eah ; 75 34 ; 0xf23b4
+ mov BL, strict byte 01eh ; b3 1e ; 0xf23b6 ata.c:584
+ jmp short 023c4h ; eb 0a ; 0xf23b8 ata.c:585
+ mov BL, strict byte 026h ; b3 26 ; 0xf23ba ata.c:587
+ jmp short 023c4h ; eb 06 ; 0xf23bc ata.c:588
+ mov BL, strict byte 067h ; b3 67 ; 0xf23be ata.c:590
+ jmp short 023c4h ; eb 02 ; 0xf23c0 ata.c:591
+ mov BL, strict byte 070h ; b3 70 ; 0xf23c2 ata.c:593
+ mov al, bl ; 88 d8 ; 0xf23c4 ata.c:600
+ xor ah, ah ; 30 e4 ; 0xf23c6
+ call 0169ch ; e8 d1 f2 ; 0xf23c8
+ mov word [bp-038h], ax ; 89 46 c8 ; 0xf23cb
+ mov al, bl ; 88 d8 ; 0xf23ce ata.c:601
+ add AL, strict byte 002h ; 04 02 ; 0xf23d0
+ xor ah, ah ; 30 e4 ; 0xf23d2
+ call 01664h ; e8 8d f2 ; 0xf23d4
+ xor ah, ah ; 30 e4 ; 0xf23d7
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf23d9
+ mov al, bl ; 88 d8 ; 0xf23dc ata.c:602
+ add AL, strict byte 007h ; 04 07 ; 0xf23de
+ call 01664h ; e8 81 f2 ; 0xf23e0
+ xor ah, ah ; 30 e4 ; 0xf23e3
+ mov word [bp-036h], ax ; 89 46 ca ; 0xf23e5
+ jmp short 023fch ; eb 12 ; 0xf23e8 ata.c:604
+ push word [bp-01eh] ; ff 76 e2 ; 0xf23ea ata.c:605
+ push word [bp-020h] ; ff 76 e0 ; 0xf23ed
+ push word [bp-022h] ; ff 76 de ; 0xf23f0
+ push si ; 56 ; 0xf23f3
+ mov dx, ss ; 8c d2 ; 0xf23f4
+ lea ax, [bp-03ah] ; 8d 46 c6 ; 0xf23f6
+ call 05891h ; e8 95 34 ; 0xf23f9
+ mov bx, 00ddch ; bb dc 0d ; 0xf23fc ata.c:608
+ mov cx, ds ; 8c d9 ; 0xf23ff
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2401
+ call 01919h ; e8 12 f5 ; 0xf2404
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf2407
+ push ax ; 50 ; 0xf240a
+ mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf240b
+ push ax ; 50 ; 0xf240e
+ mov ax, word [bp-038h] ; 8b 46 c8 ; 0xf240f
+ push ax ; 50 ; 0xf2412
+ push word [bp-01ch] ; ff 76 e4 ; 0xf2413
+ push word [bp-02ah] ; ff 76 d6 ; 0xf2416
+ push word [bp-024h] ; ff 76 dc ; 0xf2419
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf241c
+ xor ah, ah ; 30 e4 ; 0xf241f
+ push ax ; 50 ; 0xf2421
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf2422
+ push ax ; 50 ; 0xf2425
+ mov ax, 00195h ; b8 95 01 ; 0xf2426
+ push ax ; 50 ; 0xf2429
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf242a
+ push ax ; 50 ; 0xf242d
+ call 0195ch ; e8 2b f5 ; 0xf242e
+ add sp, strict byte 00014h ; 83 c4 14 ; 0xf2431
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2434 ata.c:610
+ xor ah, ah ; 30 e4 ; 0xf2437
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2439
+ imul dx ; f7 ea ; 0xf243c
+ les di, [bp-028h] ; c4 7e d8 ; 0xf243e
+ add di, ax ; 01 c7 ; 0xf2441
+ mov byte [es:di+01fh], 0ffh ; 26 c6 45 1f ff ; 0xf2443
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2448 ata.c:611
+ mov byte [es:di+020h], al ; 26 88 45 20 ; 0xf244b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf244f ata.c:612
+ mov byte [es:di+022h], al ; 26 88 45 22 ; 0xf2452
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf2456 ata.c:613
+ mov word [es:di+024h], ax ; 26 89 45 24 ; 0xf2459
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf245d ata.c:614
+ mov word [es:di+02ch], ax ; 26 89 45 2c ; 0xf2460
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2464 ata.c:615
+ mov word [es:di+02eh], ax ; 26 89 45 2e ; 0xf2467
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf246b ata.c:616
+ mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf246e
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2472 ata.c:617
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf2475
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf2479
+ mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf247c
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf2480
+ mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf2483
+ mov word [es:di+032h], si ; 26 89 75 32 ; 0xf2487
+ lea di, [di+026h] ; 8d 7d 26 ; 0xf248b ata.c:618
+ push DS ; 1e ; 0xf248e
+ push SS ; 16 ; 0xf248f
+ pop DS ; 1f ; 0xf2490
+ lea si, [bp-03ah] ; 8d 76 c6 ; 0xf2491
+ movsw ; a5 ; 0xf2494
+ movsw ; a5 ; 0xf2495
+ movsw ; a5 ; 0xf2496
+ pop DS ; 1f ; 0xf2497
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2498 ata.c:619
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf249b
+ jnc short 0250fh ; 73 70 ; 0xf249d
+ test al, al ; 84 c0 ; 0xf249f ata.c:625
+ jne short 024a8h ; 75 05 ; 0xf24a1
+ mov si, strict word 0003dh ; be 3d 00 ; 0xf24a3 ata.c:626
+ jmp short 024abh ; eb 03 ; 0xf24a6 ata.c:627
+ mov si, strict word 0004dh ; be 4d 00 ; 0xf24a8 ata.c:628
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf24ab
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf24ae ata.c:640
+ xor ah, ah ; 30 e4 ; 0xf24b1
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf24b3
+ imul dx ; f7 ea ; 0xf24b6
+ mov bx, ax ; 89 c3 ; 0xf24b8
+ sal bx, 1 ; d1 e3 ; 0xf24ba
+ sal bx, 1 ; d1 e3 ; 0xf24bc
+ add bx, 00104h ; 81 c3 04 01 ; 0xf24be
+ xor ax, ax ; 31 c0 ; 0xf24c2
+ mov es, ax ; 8e c0 ; 0xf24c4
+ mov word [es:bx], si ; 26 89 37 ; 0xf24c6 ata.c:641
+ mov word [es:bx+002h], cx ; 26 89 4f 02 ; 0xf24c9
+ mov es, cx ; 8e c1 ; 0xf24cd ata.c:647
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf24cf
+ mov word [es:si+005h], ax ; 26 89 44 05 ; 0xf24d3
+ mov word [es:si+007h], ax ; 26 89 44 07 ; 0xf24d7
+ mov bx, word [bp-038h] ; 8b 5e c8 ; 0xf24db ata.c:649
+ mov word [es:si], bx ; 26 89 1c ; 0xf24de
+ mov bl, byte [bp-03ah] ; 8a 5e c6 ; 0xf24e1 ata.c:650
+ mov byte [es:si+002h], bl ; 26 88 5c 02 ; 0xf24e4
+ mov byte [es:si+003h], 0a0h ; 26 c6 44 03 a0 ; 0xf24e8 ata.c:651
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf24ed ata.c:652
+ mov byte [es:si+004h], al ; 26 88 44 04 ; 0xf24f0
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf24f4 ata.c:653
+ mov word [es:si+009h], ax ; 26 89 44 09 ; 0xf24f7
+ mov al, byte [bp-02ah] ; 8a 46 d6 ; 0xf24fb ata.c:654
+ mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf24fe
+ mov bl, byte [bp-036h] ; 8a 5e ca ; 0xf2502 ata.c:655
+ mov byte [es:si+00eh], bl ; 26 88 5c 0e ; 0xf2505
+ xor bl, bl ; 30 db ; 0xf2509 ata.c:656
+ xor bh, bh ; 30 ff ; 0xf250b ata.c:657
+ jmp short 02516h ; eb 07 ; 0xf250d
+ jmp short 0252fh ; eb 1e ; 0xf250f
+ cmp bh, 00fh ; 80 ff 0f ; 0xf2511
+ jnc short 02527h ; 73 11 ; 0xf2514
+ mov al, bh ; 88 f8 ; 0xf2516 ata.c:658
+ xor ah, ah ; 30 e4 ; 0xf2518
+ mov es, cx ; 8e c1 ; 0xf251a
+ mov di, si ; 89 f7 ; 0xf251c
+ add di, ax ; 01 c7 ; 0xf251e
+ add bl, byte [es:di] ; 26 02 1d ; 0xf2520
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf2523
+ jmp short 02511h ; eb ea ; 0xf2525
+ neg bl ; f6 db ; 0xf2527 ata.c:659
+ mov es, cx ; 8e c1 ; 0xf2529 ata.c:660
+ mov byte [es:si+00fh], bl ; 26 88 5c 0f ; 0xf252b
+ mov bl, byte [bp-012h] ; 8a 5e ee ; 0xf252f ata.c:664
+ xor bh, bh ; 30 ff ; 0xf2532
+ mov es, [bp-026h] ; 8e 46 da ; 0xf2534
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf2537
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf253a
+ mov byte [es:bx+0024fh], al ; 26 88 87 4f 02 ; 0xf253d
+ inc byte [bp-012h] ; fe 46 ee ; 0xf2542 ata.c:665
+ cmp byte [bp-00ah], 003h ; 80 7e f6 03 ; 0xf2545 ata.c:669
+ jne short 025afh ; 75 64 ; 0xf2549
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf254b ata.c:674
+ xor ah, ah ; 30 e4 ; 0xf254e
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2550
+ imul dx ; f7 ea ; 0xf2553
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf2555
+ add bx, ax ; 01 c3 ; 0xf2558
+ mov byte [es:bx+01fh], 005h ; 26 c6 47 1f 05 ; 0xf255a
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf255f ata.c:675
+ lea dx, [bp-00264h] ; 8d 96 9c fd ; 0xf2564 ata.c:676
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf2568
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf256b
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf256f
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2573 ata.c:677
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2576
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf257a ata.c:679
+ mov bx, 000a1h ; bb a1 00 ; 0xf257d
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf2580
+ mov dx, es ; 8c c2 ; 0xf2583
+ call 01e84h ; e8 fc f8 ; 0xf2585
+ test ax, ax ; 85 c0 ; 0xf2588
+ je short 0259ah ; 74 0e ; 0xf258a
+ mov ax, 001bch ; b8 bc 01 ; 0xf258c ata.c:680
+ push ax ; 50 ; 0xf258f
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf2590
+ push ax ; 50 ; 0xf2593
+ call 0195ch ; e8 c5 f3 ; 0xf2594
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2597
+ mov al, byte [bp-00263h] ; 8a 86 9d fd ; 0xf259a ata.c:682
+ and AL, strict byte 01fh ; 24 1f ; 0xf259e
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf25a0
+ test byte [bp-00264h], 080h ; f6 86 9c fd 80 ; 0xf25a3 ata.c:683
+ je short 025b1h ; 74 07 ; 0xf25a8
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf25aa
+ jmp short 025b3h ; eb 04 ; 0xf25ad
+ jmp short 025ebh ; eb 3a ; 0xf25af
+ xor cx, cx ; 31 c9 ; 0xf25b1
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf25b3 ata.c:691
+ xor ah, ah ; 30 e4 ; 0xf25b6
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf25b8
+ imul dx ; f7 ea ; 0xf25bb
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf25bd
+ add bx, ax ; 01 c3 ; 0xf25c0
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf25c2
+ mov byte [es:bx+01fh], al ; 26 88 47 1f ; 0xf25c5
+ mov byte [es:bx+020h], cl ; 26 88 4f 20 ; 0xf25c9 ata.c:692
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf25cd ata.c:693
+ mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf25d2 ata.c:694
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf25d8 ata.c:697
+ xor bh, bh ; 30 ff ; 0xf25db
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf25dd
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf25e0
+ mov byte [es:bx+00264h], al ; 26 88 87 64 02 ; 0xf25e3
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf25e8 ata.c:698
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf25eb ata.c:707
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf25ee
+ je short 02621h ; 74 2f ; 0xf25f0
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf25f2
+ jne short 02648h ; 75 52 ; 0xf25f4
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf25f6 ata.c:709
+ xor ah, ah ; 30 e4 ; 0xf25f9
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf25fb
+ imul dx ; f7 ea ; 0xf25fe
+ les si, [bp-028h] ; c4 76 d8 ; 0xf2600
+ add si, ax ; 01 c6 ; 0xf2603
+ mov ax, word [es:si+038h] ; 26 8b 44 38 ; 0xf2605
+ mov bx, word [es:si+036h] ; 26 8b 5c 36 ; 0xf2609
+ mov cx, word [es:si+034h] ; 26 8b 4c 34 ; 0xf260d
+ mov dx, word [es:si+032h] ; 26 8b 54 32 ; 0xf2611
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf2615
+ call 0aba0h ; e8 85 85 ; 0xf2618
+ mov word [bp-032h], dx ; 89 56 ce ; 0xf261b
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf261e
+ mov dh, byte [bp-001c3h] ; 8a b6 3d fe ; 0xf2621 ata.c:712
+ mov dl, byte [bp-001c4h] ; 8a 96 3c fe ; 0xf2625
+ mov byte [bp-008h], 00fh ; c6 46 f8 0f ; 0xf2629 ata.c:713
+ jmp short 02638h ; eb 09 ; 0xf262d
+ dec byte [bp-008h] ; fe 4e f8 ; 0xf262f ata.c:716
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2632
+ jbe short 02644h ; 76 0c ; 0xf2636
+ mov cl, byte [bp-008h] ; 8a 4e f8 ; 0xf2638
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf263b
+ sal ax, CL ; d3 e0 ; 0xf263e
+ test dx, ax ; 85 c2 ; 0xf2640
+ je short 0262fh ; 74 eb ; 0xf2642
+ xor si, si ; 31 f6 ; 0xf2644 ata.c:719
+ jmp short 0264fh ; eb 07 ; 0xf2646
+ jmp short 0267eh ; eb 34 ; 0xf2648
+ cmp si, strict byte 00014h ; 83 fe 14 ; 0xf264a
+ jnl short 02664h ; 7d 15 ; 0xf264d
+ mov di, si ; 89 f7 ; 0xf264f ata.c:720
+ sal di, 1 ; d1 e7 ; 0xf2651
+ mov al, byte [bp+di-0022dh] ; 8a 83 d3 fd ; 0xf2653
+ mov byte [bp+di-064h], al ; 88 43 9c ; 0xf2657
+ mov al, byte [bp+di-0022eh] ; 8a 83 d2 fd ; 0xf265a ata.c:721
+ mov byte [bp+di-063h], al ; 88 43 9d ; 0xf265e
+ inc si ; 46 ; 0xf2661 ata.c:722
+ jmp short 0264ah ; eb e6 ; 0xf2662
+ mov byte [bp-03ch], 000h ; c6 46 c4 00 ; 0xf2664 ata.c:725
+ mov si, strict word 00027h ; be 27 00 ; 0xf2668 ata.c:726
+ jmp short 02672h ; eb 05 ; 0xf266b
+ dec si ; 4e ; 0xf266d ata.c:731
+ test si, si ; 85 f6 ; 0xf266e
+ jle short 0267eh ; 7e 0c ; 0xf2670
+ cmp byte [bp+si-064h], 020h ; 80 7a 9c 20 ; 0xf2672
+ jne short 0267eh ; 75 06 ; 0xf2676
+ mov byte [bp+si-064h], 000h ; c6 42 9c 00 ; 0xf2678
+ jmp short 0266dh ; eb ef ; 0xf267c
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf267e ata.c:738
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2681
+ je short 026ebh ; 74 66 ; 0xf2683
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2685
+ je short 02690h ; 74 07 ; 0xf2687
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2689
+ je short 026f6h ; 74 69 ; 0xf268b
+ jmp near 02785h ; e9 f5 00 ; 0xf268d
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf2690 ata.c:741
+ je short 0269bh ; 74 05 ; 0xf2694
+ mov ax, 001e7h ; b8 e7 01 ; 0xf2696
+ jmp short 0269eh ; eb 03 ; 0xf2699
+ mov ax, 001eeh ; b8 ee 01 ; 0xf269b
+ push ax ; 50 ; 0xf269e
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf269f
+ xor ah, ah ; 30 e4 ; 0xf26a2
+ push ax ; 50 ; 0xf26a4
+ mov ax, 001f5h ; b8 f5 01 ; 0xf26a5
+ push ax ; 50 ; 0xf26a8
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf26a9
+ push ax ; 50 ; 0xf26ac
+ call 0195ch ; e8 ac f2 ; 0xf26ad
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf26b0
+ xor si, si ; 31 f6 ; 0xf26b3 ata.c:742
+ mov al, byte [bp+si-064h] ; 8a 42 9c ; 0xf26b5 ata.c:743
+ xor ah, ah ; 30 e4 ; 0xf26b8
+ inc si ; 46 ; 0xf26ba
+ test ax, ax ; 85 c0 ; 0xf26bb
+ je short 026d0h ; 74 11 ; 0xf26bd
+ push ax ; 50 ; 0xf26bf ata.c:744
+ mov ax, 00200h ; b8 00 02 ; 0xf26c0
+ push ax ; 50 ; 0xf26c3
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf26c4
+ push ax ; 50 ; 0xf26c7
+ call 0195ch ; e8 91 f2 ; 0xf26c8
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf26cb
+ jmp short 026b5h ; eb e5 ; 0xf26ce
+ push word [bp-01ah] ; ff 76 e6 ; 0xf26d0 ata.c:745
+ push word [bp-032h] ; ff 76 ce ; 0xf26d3
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf26d6
+ push ax ; 50 ; 0xf26d9
+ mov ax, 00203h ; b8 03 02 ; 0xf26da
+ push ax ; 50 ; 0xf26dd
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf26de
+ push ax ; 50 ; 0xf26e1
+ call 0195ch ; e8 77 f2 ; 0xf26e2
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf26e5
+ jmp near 02785h ; e9 9a 00 ; 0xf26e8 ata.c:746
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf26eb ata.c:748
+ je short 026f8h ; 74 07 ; 0xf26ef
+ mov ax, 001e7h ; b8 e7 01 ; 0xf26f1
+ jmp short 026fbh ; eb 05 ; 0xf26f4
+ jmp short 02762h ; eb 6a ; 0xf26f6
+ mov ax, 001eeh ; b8 ee 01 ; 0xf26f8
+ push ax ; 50 ; 0xf26fb
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf26fc
+ xor ah, ah ; 30 e4 ; 0xf26ff
+ push ax ; 50 ; 0xf2701
+ mov ax, 001f5h ; b8 f5 01 ; 0xf2702
+ push ax ; 50 ; 0xf2705
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2706
+ push ax ; 50 ; 0xf2709
+ call 0195ch ; e8 4f f2 ; 0xf270a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf270d
+ xor si, si ; 31 f6 ; 0xf2710 ata.c:749
+ mov al, byte [bp+si-064h] ; 8a 42 9c ; 0xf2712 ata.c:750
+ xor ah, ah ; 30 e4 ; 0xf2715
+ inc si ; 46 ; 0xf2717
+ test ax, ax ; 85 c0 ; 0xf2718
+ je short 0272dh ; 74 11 ; 0xf271a
+ push ax ; 50 ; 0xf271c ata.c:751
+ mov ax, 00200h ; b8 00 02 ; 0xf271d
+ push ax ; 50 ; 0xf2720
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2721
+ push ax ; 50 ; 0xf2724
+ call 0195ch ; e8 34 f2 ; 0xf2725
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2728
+ jmp short 02712h ; eb e5 ; 0xf272b
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf272d ata.c:752
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2730
+ imul dx ; f7 ea ; 0xf2733
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf2735
+ add bx, ax ; 01 c3 ; 0xf2738
+ cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf273a
+ jne short 0274ch ; 75 0b ; 0xf273f
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2741 ata.c:753
+ xor ah, ah ; 30 e4 ; 0xf2744
+ push ax ; 50 ; 0xf2746
+ mov ax, 00223h ; b8 23 02 ; 0xf2747
+ jmp short 02755h ; eb 09 ; 0xf274a ata.c:754
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf274c ata.c:755
+ xor ah, ah ; 30 e4 ; 0xf274f
+ push ax ; 50 ; 0xf2751
+ mov ax, 0023dh ; b8 3d 02 ; 0xf2752
+ push ax ; 50 ; 0xf2755
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2756
+ push ax ; 50 ; 0xf2759
+ call 0195ch ; e8 ff f1 ; 0xf275a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf275d
+ jmp short 02785h ; eb 23 ; 0xf2760 ata.c:756
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf2762 ata.c:758
+ je short 0276dh ; 74 05 ; 0xf2766
+ mov ax, 001e7h ; b8 e7 01 ; 0xf2768
+ jmp short 02770h ; eb 03 ; 0xf276b
+ mov ax, 001eeh ; b8 ee 01 ; 0xf276d
+ push ax ; 50 ; 0xf2770
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf2771
+ xor ah, ah ; 30 e4 ; 0xf2774
+ push ax ; 50 ; 0xf2776
+ mov ax, 0024fh ; b8 4f 02 ; 0xf2777
+ push ax ; 50 ; 0xf277a
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf277b
+ push ax ; 50 ; 0xf277e
+ call 0195ch ; e8 da f1 ; 0xf277f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf2782
+ inc byte [bp-010h] ; fe 46 f0 ; 0xf2785 ata.c:763
+ cmp byte [bp-010h], 008h ; 80 7e f0 08 ; 0xf2788
+ jnc short 027d8h ; 73 4a ; 0xf278c
+ mov bl, byte [bp-010h] ; 8a 5e f0 ; 0xf278e
+ xor bh, bh ; 30 ff ; 0xf2791
+ mov ax, bx ; 89 d8 ; 0xf2793
+ cwd ; 99 ; 0xf2795
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf2796
+ sar ax, 1 ; d1 f8 ; 0xf2798
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf279a
+ mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf279d
+ mov byte [bp-018h], al ; 88 46 e8 ; 0xf27a0
+ mov ax, bx ; 89 d8 ; 0xf27a3
+ cwd ; 99 ; 0xf27a5
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf27a6
+ idiv bx ; f7 fb ; 0xf27a9
+ mov cx, dx ; 89 d1 ; 0xf27ab
+ mov byte [bp-00ch], dl ; 88 56 f4 ; 0xf27ad
+ mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf27b0
+ xor ah, ah ; 30 e4 ; 0xf27b3
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf27b5
+ imul dx ; f7 ea ; 0xf27b8
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf27ba
+ add bx, ax ; 01 c3 ; 0xf27bd
+ mov si, word [es:bx+0027ah] ; 26 8b b7 7a 02 ; 0xf27bf
+ mov di, word [es:bx+0027ch] ; 26 8b bf 7c 02 ; 0xf27c4
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf27c9
+ in AL, DX ; ec ; 0xf27cc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf27cd
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf27cf
+ je short 027d6h ; 74 03 ; 0xf27d1
+ jmp near 02267h ; e9 91 fa ; 0xf27d3
+ jmp short 02785h ; eb ad ; 0xf27d6
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf27d8 ata.c:766
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf27db
+ mov byte [es:bx+0024eh], al ; 26 88 87 4e 02 ; 0xf27de
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf27e3 ata.c:767
+ mov byte [es:bx+00263h], al ; 26 88 87 63 02 ; 0xf27e6
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf27eb ata.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf27ee
+ mov es, ax ; 8e c0 ; 0xf27f1
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf27f3
+ mov byte [es:bx], al ; 26 88 07 ; 0xf27f6
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf27f9 ata.c:780
+ pop di ; 5f ; 0xf27fc
+ pop si ; 5e ; 0xf27fd
+ pop bp ; 5d ; 0xf27fe
+ retn ; c3 ; 0xf27ff
+ ; disGetNextSymbol 0xf2800 LB 0x86e8 -> off=0x0 cb=000000000000028e uValue=00000000000f1200 'ata_cmd_data_out'
+ata_cmd_data_out: ; 0xf2800 LB 0x28e
+ push bp ; 55 ; 0xf2800 ata.c:794
+ mov bp, sp ; 89 e5 ; 0xf2801
+ push si ; 56 ; 0xf2803
+ push di ; 57 ; 0xf2804
+ sub sp, strict byte 00020h ; 83 ec 20 ; 0xf2805
+ mov di, ax ; 89 c7 ; 0xf2808
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf280a
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf280d
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf2810
+ mov es, dx ; 8e c2 ; 0xf2813 ata.c:806
+ mov al, byte [es:di+00ch] ; 26 8a 45 0c ; 0xf2815
+ xor ah, ah ; 30 e4 ; 0xf2819
+ mov dx, ax ; 89 c2 ; 0xf281b
+ shr ax, 1 ; d1 e8 ; 0xf281d ata.c:807
+ and dl, 001h ; 80 e2 01 ; 0xf281f ata.c:808
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2822
+ xor ah, ah ; 30 e4 ; 0xf2825 ata.c:810
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2827
+ imul dx ; f7 ea ; 0xf282a
+ mov bx, di ; 89 fb ; 0xf282c
+ add bx, ax ; 01 c3 ; 0xf282e
+ mov ax, word [es:bx+0027ah] ; 26 8b 87 7a 02 ; 0xf2830
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2835
+ mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf2838 ata.c:811
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf283d
+ mov word [bp-01ch], 00100h ; c7 46 e4 00 01 ; 0xf2840 ata.c:819
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2845 ata.c:821
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2848
+ in AL, DX ; ec ; 0xf284b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf284c
+ test AL, strict byte 080h ; a8 80 ; 0xf284e ata.c:822
+ je short 02861h ; 74 0f ; 0xf2850
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2852 ata.c:825
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2855
+ mov AL, strict byte 008h ; b0 08 ; 0xf2858
+ out DX, AL ; ee ; 0xf285a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf285b ata.c:826
+ jmp near 02a87h ; e9 26 02 ; 0xf285e
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2861 ata.c:829
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf2864
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2868
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf286b
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf286f
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf2872
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf2876
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf2879
+ mov word [bp-022h], ax ; 89 46 de ; 0xf287c
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf287f ata.c:830
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf2883
+ mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf2886
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf288a
+ mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf288d ata.c:831
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2891
+ mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf2894 ata.c:832
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf2898
+ mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf289b ata.c:833
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf289f
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf28a2 ata.c:836
+ test ax, ax ; 85 c0 ; 0xf28a5
+ je short 028ach ; 74 03 ; 0xf28a7
+ jmp near 02973h ; e9 c7 00 ; 0xf28a9
+ xor bx, bx ; 31 db ; 0xf28ac ata.c:837
+ xor dx, dx ; 31 d2 ; 0xf28ae
+ mov si, word [bp-022h] ; 8b 76 de ; 0xf28b0
+ add si, word [bp-01ah] ; 03 76 e6 ; 0xf28b3
+ adc bx, word [bp-010h] ; 13 5e f0 ; 0xf28b6
+ adc dx, word [bp-020h] ; 13 56 e0 ; 0xf28b9
+ adc ax, word [bp-00ch] ; 13 46 f4 ; 0xf28bc
+ test ax, ax ; 85 c0 ; 0xf28bf
+ jnbe short 028d3h ; 77 10 ; 0xf28c1
+ jne short 02936h ; 75 71 ; 0xf28c3
+ test dx, dx ; 85 d2 ; 0xf28c5
+ jnbe short 028d3h ; 77 0a ; 0xf28c7
+ jne short 02936h ; 75 6b ; 0xf28c9
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf28cb
+ jnbe short 028d3h ; 77 02 ; 0xf28cf
+ jne short 02936h ; 75 63 ; 0xf28d1
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28d3 ata.c:839
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf28d6
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28d9
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf28dc
+ mov si, strict word 00018h ; be 18 00 ; 0xf28df
+ call 0aba0h ; e8 bb 82 ; 0xf28e2
+ xor dh, dh ; 30 f6 ; 0xf28e5
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf28e7
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28ea ata.c:840
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf28ed
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28f0
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf28f3
+ mov si, strict word 00020h ; be 20 00 ; 0xf28f6
+ call 0aba0h ; e8 a4 82 ; 0xf28f9
+ mov bx, dx ; 89 d3 ; 0xf28fc
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf28fe
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf2901 ata.c:841
+ mov al, ah ; 88 e0 ; 0xf2904
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2906
+ inc dx ; 42 ; 0xf2909
+ inc dx ; 42 ; 0xf290a
+ out DX, AL ; ee ; 0xf290b
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf290c ata.c:842
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf290f
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2912
+ out DX, AL ; ee ; 0xf2915
+ xor bh, bh ; 30 ff ; 0xf2916 ata.c:843
+ mov ax, bx ; 89 d8 ; 0xf2918
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf291a
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf291d
+ out DX, AL ; ee ; 0xf2920
+ mov al, byte [bp-023h] ; 8a 46 dd ; 0xf2921 ata.c:844
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2924
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2927
+ out DX, AL ; ee ; 0xf292a
+ xor al, al ; 30 c0 ; 0xf292b ata.c:847
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf292d
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf2930
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2933
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf2936 ata.c:849
+ xor ah, ah ; 30 e4 ; 0xf2939
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf293b
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf293e ata.c:850
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf2941
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2944
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf2947
+ mov si, strict word 00008h ; be 08 00 ; 0xf294a
+ call 0aba0h ; e8 50 82 ; 0xf294d
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2950
+ mov word [bp-020h], bx ; 89 5e e0 ; 0xf2953
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf2956
+ mov word [bp-022h], dx ; 89 56 de ; 0xf2959
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf295c ata.c:851
+ mov si, strict word 00010h ; be 10 00 ; 0xf295f ata.c:852
+ call 0aba0h ; e8 3b 82 ; 0xf2962
+ mov word [bp-022h], dx ; 89 56 de ; 0xf2965
+ mov ax, dx ; 89 d0 ; 0xf2968 ata.c:853
+ xor ah, dh ; 30 f4 ; 0xf296a
+ and AL, strict byte 00fh ; 24 0f ; 0xf296c
+ or AL, strict byte 040h ; 0c 40 ; 0xf296e
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf2970
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2973 ata.c:856
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2976
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2979
+ out DX, AL ; ee ; 0xf297b
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf297c ata.c:857
+ inc dx ; 42 ; 0xf297f
+ xor al, al ; 30 c0 ; 0xf2980
+ out DX, AL ; ee ; 0xf2982
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2983 ata.c:858
+ inc dx ; 42 ; 0xf2986
+ inc dx ; 42 ; 0xf2987
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2988
+ out DX, AL ; ee ; 0xf298b
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf298c ata.c:859
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf298f
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2992
+ out DX, AL ; ee ; 0xf2995
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2996 ata.c:860
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2999
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf299c
+ out DX, AL ; ee ; 0xf299f
+ mov al, byte [bp-023h] ; 8a 46 dd ; 0xf29a0 ata.c:861
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29a3
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf29a6
+ out DX, AL ; ee ; 0xf29a9
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf29aa ata.c:862
+ je short 029b5h ; 74 05 ; 0xf29ae
+ mov ax, 000b0h ; b8 b0 00 ; 0xf29b0
+ jmp short 029b8h ; eb 03 ; 0xf29b3
+ mov ax, 000a0h ; b8 a0 00 ; 0xf29b5
+ mov dl, byte [bp-018h] ; 8a 56 e8 ; 0xf29b8
+ xor dh, dh ; 30 f6 ; 0xf29bb
+ or ax, dx ; 09 d0 ; 0xf29bd
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29bf
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29c2
+ out DX, AL ; ee ; 0xf29c5
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29c6 ata.c:863
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf29c9
+ mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf29cc
+ out DX, AL ; ee ; 0xf29cf
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29d0 ata.c:866
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf29d3
+ in AL, DX ; ec ; 0xf29d6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf29d7
+ mov bl, al ; 88 c3 ; 0xf29d9
+ test AL, strict byte 080h ; a8 80 ; 0xf29db ata.c:867
+ jne short 029d0h ; 75 f1 ; 0xf29dd
+ test AL, strict byte 001h ; a8 01 ; 0xf29df ata.c:871
+ je short 029f2h ; 74 0f ; 0xf29e1
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf29e3 ata.c:874
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29e6
+ mov AL, strict byte 008h ; b0 08 ; 0xf29e9
+ out DX, AL ; ee ; 0xf29eb
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf29ec ata.c:875
+ jmp near 02a87h ; e9 95 00 ; 0xf29ef
+ test bl, 008h ; f6 c3 08 ; 0xf29f2 ata.c:876
+ jne short 02a06h ; 75 0f ; 0xf29f5
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf29f7 ata.c:879
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29fa
+ mov AL, strict byte 008h ; b0 08 ; 0xf29fd
+ out DX, AL ; ee ; 0xf29ff
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2a00 ata.c:880
+ jmp near 02a87h ; e9 81 00 ; 0xf2a03
+ sti ; fb ; 0xf2a06 ata.c:885
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf2a07 ata.c:890
+ cmp ax, 0f800h ; 3d 00 f8 ; 0xf2a0a
+ jc short 02a21h ; 72 12 ; 0xf2a0d
+ mov dx, ax ; 89 c2 ; 0xf2a0f ata.c:891
+ sub dx, 00800h ; 81 ea 00 08 ; 0xf2a11
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2a15
+ add ax, 00080h ; 05 80 00 ; 0xf2a18
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf2a1b
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2a1e
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2a21 ata.c:898
+ mov cx, word [bp-01ch] ; 8b 4e e4 ; 0xf2a24
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf2a27
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf2a2a
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2a2d
+ mov word [bp-016h], si ; 89 76 ea ; 0xf2a30
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2a33 ata.c:900
+ inc word [es:di+018h] ; 26 ff 45 18 ; 0xf2a36
+ dec word [bp-01ah] ; ff 4e e6 ; 0xf2a3a ata.c:901
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2a3d ata.c:903
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2a40
+ in AL, DX ; ec ; 0xf2a43
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2a44
+ mov bl, al ; 88 c3 ; 0xf2a46
+ test AL, strict byte 080h ; a8 80 ; 0xf2a48 ata.c:904
+ jne short 02a3dh ; 75 f1 ; 0xf2a4a
+ cmp word [bp-01ah], strict byte 00000h ; 83 7e e6 00 ; 0xf2a4c ata.c:907
+ jne short 02a66h ; 75 14 ; 0xf2a50
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2a52 ata.c:908
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2a54
+ je short 02a7ch ; 74 24 ; 0xf2a56
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a58 ata.c:912
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a5b
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a5e
+ out DX, AL ; ee ; 0xf2a60
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf2a61 ata.c:913
+ jmp short 02a87h ; eb 21 ; 0xf2a64
+ mov al, bl ; 88 d8 ; 0xf2a66 ata.c:918
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2a68
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2a6a
+ je short 02a07h ; 74 99 ; 0xf2a6c
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a6e ata.c:922
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a71
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a74
+ out DX, AL ; ee ; 0xf2a76
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf2a77 ata.c:923
+ jmp short 02a87h ; eb 0b ; 0xf2a7a
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a7c ata.c:929
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a7f
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a82
+ out DX, AL ; ee ; 0xf2a84
+ xor ax, ax ; 31 c0 ; 0xf2a85 ata.c:930
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2a87 ata.c:931
+ pop di ; 5f ; 0xf2a8a
+ pop si ; 5e ; 0xf2a8b
+ pop bp ; 5d ; 0xf2a8c
+ retn ; c3 ; 0xf2a8d
+ ; disGetNextSymbol 0xf2a8e LB 0x845a -> off=0x0 cb=00000000000000c1 uValue=00000000000f148e 'ata_read_sectors'
+ata_read_sectors: ; 0xf2a8e LB 0xc1
+ push bp ; 55 ; 0xf2a8e ata.c:941
+ mov bp, sp ; 89 e5 ; 0xf2a8f
+ push si ; 56 ; 0xf2a91
+ push di ; 57 ; 0xf2a92
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf2a93
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf2a96
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf2a99 ata.c:947
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2a9c
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf2aa0 ata.c:948
+ mov CL, strict byte 009h ; b1 09 ; 0xf2aa4
+ mov dx, bx ; 89 da ; 0xf2aa6
+ sal dx, CL ; d3 e2 ; 0xf2aa8
+ mov cx, dx ; 89 d1 ; 0xf2aaa
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2aac ata.c:950
+ je short 02ad6h ; 74 23 ; 0xf2ab1
+ xor ah, ah ; 30 e4 ; 0xf2ab3 ata.c:952
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf2ab5
+ imul di ; f7 ef ; 0xf2ab8
+ mov dx, es ; 8c c2 ; 0xf2aba
+ mov [bp-00ah], es ; 8c 46 f6 ; 0xf2abc
+ mov di, si ; 89 f7 ; 0xf2abf
+ add di, ax ; 01 c7 ; 0xf2ac1
+ mov word [es:di+024h], cx ; 26 89 4d 24 ; 0xf2ac3
+ mov cx, bx ; 89 d9 ; 0xf2ac7 ata.c:954
+ mov bx, 000c4h ; bb c4 00 ; 0xf2ac9
+ mov ax, si ; 89 f0 ; 0xf2acc
+ call 01e84h ; e8 b3 f3 ; 0xf2ace
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2ad1 ata.c:955
+ jmp short 02b40h ; eb 6a ; 0xf2ad4 ata.c:956
+ xor di, di ; 31 ff ; 0xf2ad6 ata.c:958
+ mov word [bp-008h], di ; 89 7e f8 ; 0xf2ad8
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf2adb
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf2ade
+ add dx, bx ; 01 da ; 0xf2ae1
+ mov word [bp-006h], dx ; 89 56 fa ; 0xf2ae3
+ adc di, word [es:si+002h] ; 26 13 7c 02 ; 0xf2ae6
+ mov dx, word [es:si+004h] ; 26 8b 54 04 ; 0xf2aea
+ adc dx, word [bp-008h] ; 13 56 f8 ; 0xf2aee
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf2af1
+ mov dx, word [es:si+006h] ; 26 8b 54 06 ; 0xf2af4
+ adc dx, word [bp-00ah] ; 13 56 f6 ; 0xf2af8
+ test dx, dx ; 85 d2 ; 0xf2afb
+ jnbe short 02b11h ; 77 12 ; 0xf2afd
+ jne short 02b1fh ; 75 1e ; 0xf2aff
+ cmp word [bp-008h], strict byte 00000h ; 83 7e f8 00 ; 0xf2b01
+ jnbe short 02b11h ; 77 0a ; 0xf2b05
+ jne short 02b1fh ; 75 16 ; 0xf2b07
+ cmp di, 01000h ; 81 ff 00 10 ; 0xf2b09
+ jnbe short 02b11h ; 77 02 ; 0xf2b0d
+ jne short 02b1fh ; 75 0e ; 0xf2b0f
+ mov cx, bx ; 89 d9 ; 0xf2b11 ata.c:960
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf2b13
+ mov ax, si ; 89 f0 ; 0xf2b16
+ mov dx, es ; 8c c2 ; 0xf2b18
+ call 01e84h ; e8 67 f3 ; 0xf2b1a
+ jmp short 02b46h ; eb 27 ; 0xf2b1d ata.c:961
+ xor ah, ah ; 30 e4 ; 0xf2b1f ata.c:962
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf2b21
+ imul di ; f7 ef ; 0xf2b24
+ mov dx, es ; 8c c2 ; 0xf2b26
+ mov [bp-006h], es ; 8c 46 fa ; 0xf2b28
+ mov di, si ; 89 f7 ; 0xf2b2b
+ add di, ax ; 01 c7 ; 0xf2b2d
+ mov word [es:di+024h], cx ; 26 89 4d 24 ; 0xf2b2f
+ mov cx, bx ; 89 d9 ; 0xf2b33 ata.c:964
+ mov bx, 000c4h ; bb c4 00 ; 0xf2b35
+ mov ax, si ; 89 f0 ; 0xf2b38
+ call 01e84h ; e8 47 f3 ; 0xf2b3a
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf2b3d ata.c:965
+ mov word [es:di+024h], 00200h ; 26 c7 45 24 00 02 ; 0xf2b40
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b46 ata.c:969
+ pop di ; 5f ; 0xf2b49
+ pop si ; 5e ; 0xf2b4a
+ pop bp ; 5d ; 0xf2b4b
+ retn 00004h ; c2 04 00 ; 0xf2b4c
+ ; disGetNextSymbol 0xf2b4f LB 0x8399 -> off=0x0 cb=000000000000005b uValue=00000000000f154f 'ata_write_sectors'
+ata_write_sectors: ; 0xf2b4f LB 0x5b
+ push bp ; 55 ; 0xf2b4f ata.c:978
+ mov bp, sp ; 89 e5 ; 0xf2b50
+ push si ; 56 ; 0xf2b52
+ push di ; 57 ; 0xf2b53
+ push ax ; 50 ; 0xf2b54
+ les si, [bp+004h] ; c4 76 04 ; 0xf2b55
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2b58 ata.c:982
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2b5c ata.c:984
+ je short 02b6fh ; 74 0c ; 0xf2b61
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf2b63 ata.c:986
+ mov ax, si ; 89 f0 ; 0xf2b66
+ mov dx, es ; 8c c2 ; 0xf2b68
+ call 02800h ; e8 93 fc ; 0xf2b6a
+ jmp short 02ba1h ; eb 32 ; 0xf2b6d
+ xor ax, ax ; 31 c0 ; 0xf2b6f ata.c:989
+ xor bx, bx ; 31 db ; 0xf2b71
+ xor dx, dx ; 31 d2 ; 0xf2b73
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2b75
+ add di, cx ; 01 cf ; 0xf2b78
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2b7a
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2b7d
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2b81
+ adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2b85
+ test dx, dx ; 85 d2 ; 0xf2b89
+ jnbe short 02b9ch ; 77 0f ; 0xf2b8b
+ jne short 02b63h ; 75 d4 ; 0xf2b8d
+ test bx, bx ; 85 db ; 0xf2b8f
+ jnbe short 02b9ch ; 77 09 ; 0xf2b91
+ jne short 02b63h ; 75 ce ; 0xf2b93
+ cmp ax, 01000h ; 3d 00 10 ; 0xf2b95
+ jnbe short 02b9ch ; 77 02 ; 0xf2b98
+ jne short 02b63h ; 75 c7 ; 0xf2b9a
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf2b9c ata.c:990
+ jmp short 02b66h ; eb c5 ; 0xf2b9f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2ba1 ata.c:994
+ pop di ; 5f ; 0xf2ba4
+ pop si ; 5e ; 0xf2ba5
+ pop bp ; 5d ; 0xf2ba6
+ retn 00004h ; c2 04 00 ; 0xf2ba7
+ ; disGetNextSymbol 0xf2baa LB 0x833e -> off=0x0 cb=000000000000020d uValue=00000000000f15aa 'ata_cmd_packet'
+ata_cmd_packet: ; 0xf2baa LB 0x20d
+ push bp ; 55 ; 0xf2baa ata.c:1006
+ mov bp, sp ; 89 e5 ; 0xf2bab
+ push si ; 56 ; 0xf2bad
+ push di ; 57 ; 0xf2bae
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf2baf
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2bb2
+ mov di, bx ; 89 df ; 0xf2bb5
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf2bb7
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2bba ata.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2bbd
+ mov es, dx ; 8e c2 ; 0xf2bc0
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf2bc2
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf2bc5 ata.c:59
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf2bc8
+ mov dx, ax ; 89 c2 ; 0xf2bcb ata.c:1018
+ shr dx, 1 ; d1 ea ; 0xf2bcd
+ mov cl, al ; 88 c1 ; 0xf2bcf ata.c:1019
+ and cl, 001h ; 80 e1 01 ; 0xf2bd1
+ cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf2bd4 ata.c:1022
+ jne short 02bfdh ; 75 23 ; 0xf2bd8
+ mov bx, 00ddch ; bb dc 0d ; 0xf2bda ata.c:1023
+ mov cx, ds ; 8c d9 ; 0xf2bdd
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2bdf
+ call 01919h ; e8 34 ed ; 0xf2be2
+ mov ax, 00269h ; b8 69 02 ; 0xf2be5
+ push ax ; 50 ; 0xf2be8
+ mov ax, 00278h ; b8 78 02 ; 0xf2be9
+ push ax ; 50 ; 0xf2bec
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2bed
+ push ax ; 50 ; 0xf2bf0
+ call 0195ch ; e8 68 ed ; 0xf2bf1
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2bf4
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2bf7 ata.c:1024
+ jmp near 02daeh ; e9 b1 01 ; 0xf2bfa
+ mov al, dl ; 88 d0 ; 0xf2bfd ata.c:1027
+ xor ah, ah ; 30 e4 ; 0xf2bff
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2c01
+ imul dx ; f7 ea ; 0xf2c04
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2c06
+ mov si, bx ; 89 de ; 0xf2c09
+ add si, ax ; 01 c6 ; 0xf2c0b
+ mov ax, word [es:si+0027ah] ; 26 8b 84 7a 02 ; 0xf2c0d
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2c12
+ mov ax, word [es:si+0027ch] ; 26 8b 84 7c 02 ; 0xf2c15 ata.c:1028
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2c1a
+ xor ax, ax ; 31 c0 ; 0xf2c1d ata.c:1030
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2c1f
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2c22
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2c25 ata.c:1032
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf2c28
+ jnc short 02c32h ; 73 06 ; 0xf2c2a
+ mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2c2c ata.c:1033
+ jmp short 02c38h ; eb 06 ; 0xf2c30
+ jbe short 02c38h ; 76 04 ; 0xf2c32 ata.c:1034
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2c34 ata.c:1035
+ shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2c38 ata.c:1036
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2c3b ata.c:1040
+ mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00 ; 0xf2c3e
+ mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00 ; 0xf2c44 ata.c:1041
+ mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2c4a
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c50 ata.c:1043
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c53
+ in AL, DX ; ec ; 0xf2c56
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c57
+ test AL, strict byte 080h ; a8 80 ; 0xf2c59 ata.c:1044
+ je short 02c63h ; 74 06 ; 0xf2c5b
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2c5d ata.c:1045
+ jmp near 02daeh ; e9 4b 01 ; 0xf2c60
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c63 ata.c:1047
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c66
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2c69
+ out DX, AL ; ee ; 0xf2c6b
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c6c ata.c:1051
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2c6f
+ mov AL, strict byte 0f0h ; b0 f0 ; 0xf2c72
+ out DX, AL ; ee ; 0xf2c74
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c75 ata.c:1052
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2c78
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf2c7b
+ out DX, AL ; ee ; 0xf2c7d
+ test cl, cl ; 84 c9 ; 0xf2c7e ata.c:1053
+ je short 02c87h ; 74 05 ; 0xf2c80
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2c82
+ jmp short 02c8ah ; eb 03 ; 0xf2c85
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2c87
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c8a
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c8d
+ out DX, AL ; ee ; 0xf2c90
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c91 ata.c:1054
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c94
+ mov AL, strict byte 0a0h ; b0 a0 ; 0xf2c97
+ out DX, AL ; ee ; 0xf2c99
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c9a ata.c:1058
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c9d
+ in AL, DX ; ec ; 0xf2ca0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ca1
+ mov cx, ax ; 89 c1 ; 0xf2ca3
+ test AL, strict byte 080h ; a8 80 ; 0xf2ca5 ata.c:1059
+ jne short 02c9ah ; 75 f1 ; 0xf2ca7
+ test AL, strict byte 001h ; a8 01 ; 0xf2ca9 ata.c:1062
+ je short 02cbch ; 74 0f ; 0xf2cab
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cad ata.c:1065
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cb0
+ mov AL, strict byte 008h ; b0 08 ; 0xf2cb3
+ out DX, AL ; ee ; 0xf2cb5
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2cb6 ata.c:1066
+ jmp near 02daeh ; e9 f2 00 ; 0xf2cb9
+ test AL, strict byte 008h ; a8 08 ; 0xf2cbc ata.c:1067
+ jne short 02ccfh ; 75 0f ; 0xf2cbe
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cc0 ata.c:1070
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cc3
+ mov AL, strict byte 008h ; b0 08 ; 0xf2cc6
+ out DX, AL ; ee ; 0xf2cc8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2cc9 ata.c:1071
+ jmp near 02daeh ; e9 df 00 ; 0xf2ccc
+ sti ; fb ; 0xf2ccf ata.c:1074
+ mov CL, strict byte 004h ; b1 04 ; 0xf2cd0 ata.c:1078
+ mov ax, di ; 89 f8 ; 0xf2cd2
+ shr ax, CL ; d3 e8 ; 0xf2cd4
+ add ax, word [bp-010h] ; 03 46 f0 ; 0xf2cd6
+ mov si, di ; 89 fe ; 0xf2cd9
+ and si, strict byte 0000fh ; 83 e6 0f ; 0xf2cdb
+ mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2cde ata.c:1083
+ xor ch, ch ; 30 ed ; 0xf2ce1
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2ce3
+ mov es, ax ; 8e c0 ; 0xf2ce6
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2ce8
+ cmp byte [bp+008h], 000h ; 80 7e 08 00 ; 0xf2ceb ata.c:1085
+ jne short 02cfah ; 75 09 ; 0xf2cef
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2cf1 ata.c:1086
+ in AL, DX ; ec ; 0xf2cf4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2cf5
+ jmp near 02d91h ; e9 97 00 ; 0xf2cf7 ata.c:1088
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2cfa ata.c:1092
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2cfd
+ in AL, DX ; ec ; 0xf2d00
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d01
+ mov cx, ax ; 89 c1 ; 0xf2d03
+ test AL, strict byte 080h ; a8 80 ; 0xf2d05 ata.c:1093
+ jne short 02cfah ; 75 f1 ; 0xf2d07
+ test AL, strict byte 088h ; a8 88 ; 0xf2d09 ata.c:1098
+ je short 02d2dh ; 74 20 ; 0xf2d0b
+ test AL, strict byte 001h ; a8 01 ; 0xf2d0d ata.c:1101
+ je short 02d1ch ; 74 0b ; 0xf2d0f
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2d11 ata.c:1104
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d14
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d17
+ out DX, AL ; ee ; 0xf2d19
+ jmp short 02cb6h ; eb 9a ; 0xf2d1a
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2d1c ata.c:1109
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2d1e
+ je short 02d2fh ; 74 0d ; 0xf2d20
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2d22 ata.c:1113
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d25
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d28
+ out DX, AL ; ee ; 0xf2d2a
+ jmp short 02cc9h ; eb 9c ; 0xf2d2b
+ jmp short 02d91h ; eb 62 ; 0xf2d2d
+ mov CL, strict byte 004h ; b1 04 ; 0xf2d2f ata.c:1119
+ mov dx, word [bp+00ah] ; 8b 56 0a ; 0xf2d31
+ shr dx, CL ; d3 ea ; 0xf2d34
+ add dx, word [bp+00ch] ; 03 56 0c ; 0xf2d36
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf2d39
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf2d3c
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf2d3f
+ mov word [bp+00ch], dx ; 89 56 0c ; 0xf2d42
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2d45 ata.c:1124
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2d48
+ in AL, DX ; ec ; 0xf2d4b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d4c
+ mov ch, al ; 88 c5 ; 0xf2d4e
+ xor cl, cl ; 30 c9 ; 0xf2d50
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2d52
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2d55
+ in AL, DX ; ec ; 0xf2d58
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d59
+ add cx, ax ; 01 c1 ; 0xf2d5b
+ mov ax, cx ; 89 c8 ; 0xf2d5d ata.c:1127
+ test cl, 003h ; f6 c1 03 ; 0xf2d5f ata.c:1134
+ test cl, 001h ; f6 c1 01 ; 0xf2d62 ata.c:1138
+ je short 02d68h ; 74 01 ; 0xf2d65
+ inc cx ; 41 ; 0xf2d67 ata.c:1139
+ shr cx, 1 ; d1 e9 ; 0xf2d68 ata.c:1148
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2d6a ata.c:1157
+ les di, [bp+00ah] ; c4 7e 0a ; 0xf2d6d
+ rep insw ; f3 6d ; 0xf2d70
+ add word [bp+00ah], ax ; 01 46 0a ; 0xf2d72 ata.c:1162
+ xor dx, dx ; 31 d2 ; 0xf2d75 ata.c:1165
+ add word [bp-00eh], ax ; 01 46 f2 ; 0xf2d77
+ adc word [bp-00ch], dx ; 11 56 f4 ; 0xf2d7a
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2d7d ata.c:1166
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2d80
+ mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2d83
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2d87
+ mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2d8a
+ jmp near 02cfah ; e9 69 ff ; 0xf2d8e ata.c:1167
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2d91 ata.c:1171
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2d93
+ je short 02da3h ; 74 0c ; 0xf2d95
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2d97 ata.c:1175
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d9a
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d9d
+ out DX, AL ; ee ; 0xf2d9f
+ jmp near 02cc9h ; e9 26 ff ; 0xf2da0
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2da3 ata.c:1180
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2da6
+ mov AL, strict byte 008h ; b0 08 ; 0xf2da9
+ out DX, AL ; ee ; 0xf2dab
+ xor ax, ax ; 31 c0 ; 0xf2dac ata.c:1181
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2dae ata.c:1182
+ pop di ; 5f ; 0xf2db1
+ pop si ; 5e ; 0xf2db2
+ pop bp ; 5d ; 0xf2db3
+ retn 0000ah ; c2 0a 00 ; 0xf2db4
+ ; disGetNextSymbol 0xf2db7 LB 0x8131 -> off=0x0 cb=0000000000000082 uValue=00000000000f17b7 'ata_soft_reset'
+ata_soft_reset: ; 0xf2db7 LB 0x82
+ push bp ; 55 ; 0xf2db7 ata.c:1190
+ mov bp, sp ; 89 e5 ; 0xf2db8
+ push bx ; 53 ; 0xf2dba
+ push cx ; 51 ; 0xf2dbb
+ push dx ; 52 ; 0xf2dbc
+ push ax ; 50 ; 0xf2dbd
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2dbe ata.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2dc1
+ mov es, dx ; 8e c2 ; 0xf2dc4
+ mov es, [es:bx] ; 26 8e 07 ; 0xf2dc6
+ mov dx, ax ; 89 c2 ; 0xf2dc9 ata.c:1199
+ shr dx, 1 ; d1 ea ; 0xf2dcb
+ and AL, strict byte 001h ; 24 01 ; 0xf2dcd ata.c:1200
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2dcf
+ mov al, dl ; 88 d0 ; 0xf2dd2 ata.c:1202
+ xor ah, ah ; 30 e4 ; 0xf2dd4
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2dd6
+ imul dx ; f7 ea ; 0xf2dd9
+ mov bx, ax ; 89 c3 ; 0xf2ddb
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf2ddd
+ mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf2de0
+ mov bx, word [es:bx+0027ch] ; 26 8b 9f 7c 02 ; 0xf2de5 ata.c:1203
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2dea ata.c:1206
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2ded
+ out DX, AL ; ee ; 0xf2def
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2df0 ata.c:1207
+ je short 02dfbh ; 74 05 ; 0xf2df4
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2df6
+ jmp short 02dfeh ; eb 03 ; 0xf2df9
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2dfb
+ mov dx, cx ; 89 ca ; 0xf2dfe
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2e00
+ out DX, AL ; ee ; 0xf2e03
+ mov dx, cx ; 89 ca ; 0xf2e04 ata.c:1208
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e06
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e09
+ out DX, AL ; ee ; 0xf2e0b
+ mov dx, cx ; 89 ca ; 0xf2e0c ata.c:1212
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e0e
+ in AL, DX ; ec ; 0xf2e11
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e12
+ test AL, strict byte 080h ; a8 80 ; 0xf2e14 ata.c:1213
+ jne short 02e0ch ; 75 f4 ; 0xf2e16
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2e18 ata.c:1217
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2e1a
+ je short 02e29h ; 74 0b ; 0xf2e1c
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e1e ata.c:1221
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e21
+ out DX, AL ; ee ; 0xf2e23
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2e24 ata.c:1222
+ jmp short 02e31h ; eb 08 ; 0xf2e27
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e29 ata.c:1226
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e2c
+ out DX, AL ; ee ; 0xf2e2e
+ xor ax, ax ; 31 c0 ; 0xf2e2f ata.c:1227
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2e31 ata.c:1228
+ pop dx ; 5a ; 0xf2e34
+ pop cx ; 59 ; 0xf2e35
+ pop bx ; 5b ; 0xf2e36
+ pop bp ; 5d ; 0xf2e37
+ retn ; c3 ; 0xf2e38
+ ; disGetNextSymbol 0xf2e39 LB 0x80af -> off=0x0 cb=000000000000002c uValue=00000000000f1839 'set_diskette_current_cyl'
+set_diskette_current_cyl: ; 0xf2e39 LB 0x2c
+ push bp ; 55 ; 0xf2e39 floppy.c:81
+ mov bp, sp ; 89 e5 ; 0xf2e3a
+ push bx ; 53 ; 0xf2e3c
+ mov bl, al ; 88 c3 ; 0xf2e3d
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2e3f floppy.c:83
+ jbe short 02e51h ; 76 0e ; 0xf2e41
+ mov ax, 00298h ; b8 98 02 ; 0xf2e43 floppy.c:84
+ push ax ; 50 ; 0xf2e46
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf2e47
+ push ax ; 50 ; 0xf2e4a
+ call 0195ch ; e8 0e eb ; 0xf2e4b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2e4e
+ xor bh, bh ; 30 ff ; 0xf2e51 floppy.c:85
+ add bx, 00094h ; 81 c3 94 00 ; 0xf2e53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e57 floppy.c:53
+ mov es, ax ; 8e c0 ; 0xf2e5a
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf2e5c
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e5f floppy.c:86
+ pop bx ; 5b ; 0xf2e62
+ pop bp ; 5d ; 0xf2e63
+ retn ; c3 ; 0xf2e64
+ ; disGetNextSymbol 0xf2e65 LB 0x8083 -> off=0x0 cb=0000000000000023 uValue=00000000000f1865 'floppy_wait_for_interrupt'
+floppy_wait_for_interrupt: ; 0xf2e65 LB 0x23
+ push bp ; 55 ; 0xf2e65 floppy.c:106
+ mov bp, sp ; 89 e5 ; 0xf2e66
+ push bx ; 53 ; 0xf2e68
+ cli ; fa ; 0xf2e69 floppy.c:108
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e6a floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e6d
+ mov es, ax ; 8e c0 ; 0xf2e70
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e72
+ test AL, strict byte 080h ; a8 80 ; 0xf2e75 floppy.c:112
+ je short 02e7dh ; 74 04 ; 0xf2e77
+ and AL, strict byte 080h ; 24 80 ; 0xf2e79 floppy.c:113
+ jmp short 02e82h ; eb 05 ; 0xf2e7b
+ sti ; fb ; 0xf2e7d floppy.c:114
+ hlt ; f4 ; 0xf2e7e
+ cli ; fa ; 0xf2e7f
+ jmp short 02e6ah ; eb e8 ; 0xf2e80 floppy.c:115
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e82 floppy.c:116
+ pop bx ; 5b ; 0xf2e85
+ pop bp ; 5d ; 0xf2e86
+ retn ; c3 ; 0xf2e87
+ ; disGetNextSymbol 0xf2e88 LB 0x8060 -> off=0x0 cb=0000000000000038 uValue=00000000000f1888 'floppy_wait_for_interrupt_or_timeout'
+floppy_wait_for_interrupt_or_timeout: ; 0xf2e88 LB 0x38
+ push bp ; 55 ; 0xf2e88 floppy.c:126
+ mov bp, sp ; 89 e5 ; 0xf2e89
+ push bx ; 53 ; 0xf2e8b
+ cli ; fa ; 0xf2e8c floppy.c:128
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2e8d floppy.c:48
+ mov es, bx ; 8e c3 ; 0xf2e90
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e92
+ test al, al ; 84 c0 ; 0xf2e95 floppy.c:132
+ jne short 02e9ch ; 75 03 ; 0xf2e97
+ sti ; fb ; 0xf2e99 floppy.c:133
+ jmp short 02ebah ; eb 1e ; 0xf2e9a floppy.c:134
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e9c floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e9f
+ mov es, ax ; 8e c0 ; 0xf2ea2
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ea4
+ test AL, strict byte 080h ; a8 80 ; 0xf2ea7 floppy.c:138
+ je short 02eb5h ; 74 0a ; 0xf2ea9
+ mov ah, al ; 88 c4 ; 0xf2eab floppy.c:139
+ and ah, 07fh ; 80 e4 7f ; 0xf2ead
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf2eb0 floppy.c:53
+ jmp short 02ebah ; eb 05 ; 0xf2eb3 floppy.c:140
+ sti ; fb ; 0xf2eb5 floppy.c:142
+ hlt ; f4 ; 0xf2eb6
+ cli ; fa ; 0xf2eb7
+ jmp short 02e8dh ; eb d3 ; 0xf2eb8 floppy.c:143
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2eba floppy.c:144
+ pop bx ; 5b ; 0xf2ebd
+ pop bp ; 5d ; 0xf2ebe
+ retn ; c3 ; 0xf2ebf
+ ; disGetNextSymbol 0xf2ec0 LB 0x8028 -> off=0x0 cb=000000000000003f uValue=00000000000f18c0 'floppy_reset_controller'
+floppy_reset_controller: ; 0xf2ec0 LB 0x3f
+ push bp ; 55 ; 0xf2ec0 floppy.c:148
+ mov bp, sp ; 89 e5 ; 0xf2ec1
+ push bx ; 53 ; 0xf2ec3
+ push cx ; 51 ; 0xf2ec4
+ push dx ; 52 ; 0xf2ec5
+ mov cx, ax ; 89 c1 ; 0xf2ec6
+ mov dx, 003f2h ; ba f2 03 ; 0xf2ec8 floppy.c:153
+ in AL, DX ; ec ; 0xf2ecb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ecc
+ mov bx, ax ; 89 c3 ; 0xf2ece
+ and AL, strict byte 0fbh ; 24 fb ; 0xf2ed0 floppy.c:154
+ out DX, AL ; ee ; 0xf2ed2
+ mov al, bl ; 88 d8 ; 0xf2ed3 floppy.c:155
+ or AL, strict byte 004h ; 0c 04 ; 0xf2ed5
+ out DX, AL ; ee ; 0xf2ed7
+ mov dx, 003f4h ; ba f4 03 ; 0xf2ed8 floppy.c:159
+ in AL, DX ; ec ; 0xf2edb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2edc
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2ede floppy.c:160
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2ee0
+ jne short 02ed8h ; 75 f4 ; 0xf2ee2
+ mov bx, cx ; 89 cb ; 0xf2ee4 floppy.c:163
+ add bx, 00090h ; 81 c3 90 00 ; 0xf2ee6
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2eea floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf2eed
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2eef
+ and AL, strict byte 0efh ; 24 ef ; 0xf2ef2 floppy.c:164
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2ef4 floppy.c:53
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2ef7 floppy.c:167
+ pop dx ; 5a ; 0xf2efa
+ pop cx ; 59 ; 0xf2efb
+ pop bx ; 5b ; 0xf2efc
+ pop bp ; 5d ; 0xf2efd
+ retn ; c3 ; 0xf2efe
+ ; disGetNextSymbol 0xf2eff LB 0x7fe9 -> off=0x0 cb=0000000000000075 uValue=00000000000f18ff 'floppy_prepare_controller'
+floppy_prepare_controller: ; 0xf2eff LB 0x75
+ push bp ; 55 ; 0xf2eff floppy.c:169
+ mov bp, sp ; 89 e5 ; 0xf2f00
+ push bx ; 53 ; 0xf2f02
+ push cx ; 51 ; 0xf2f03
+ push dx ; 52 ; 0xf2f04
+ push ax ; 50 ; 0xf2f05
+ mov cx, ax ; 89 c1 ; 0xf2f06
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f08 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f0b
+ mov es, ax ; 8e c0 ; 0xf2f0e
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f10
+ and AL, strict byte 07fh ; 24 7f ; 0xf2f13 floppy.c:175
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2f15 floppy.c:53
+ mov dx, 003f2h ; ba f2 03 ; 0xf2f18 floppy.c:179
+ in AL, DX ; ec ; 0xf2f1b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f1c
+ and AL, strict byte 004h ; 24 04 ; 0xf2f1e
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2f20
+ test cx, cx ; 85 c9 ; 0xf2f23 floppy.c:180
+ je short 02f2bh ; 74 04 ; 0xf2f25
+ mov AL, strict byte 020h ; b0 20 ; 0xf2f27 floppy.c:181
+ jmp short 02f2dh ; eb 02 ; 0xf2f29 floppy.c:182
+ mov AL, strict byte 010h ; b0 10 ; 0xf2f2b floppy.c:183
+ or AL, strict byte 00ch ; 0c 0c ; 0xf2f2d floppy.c:184
+ or al, cl ; 08 c8 ; 0xf2f2f floppy.c:185
+ mov dx, 003f2h ; ba f2 03 ; 0xf2f31 floppy.c:186
+ out DX, AL ; ee ; 0xf2f34
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2f35 floppy.c:53
+ mov es, bx ; 8e c3 ; 0xf2f38
+ mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf2f3a
+ mov bx, 0008bh ; bb 8b 00 ; 0xf2f3e floppy.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f41
+ mov CL, strict byte 006h ; b1 06 ; 0xf2f44 floppy.c:193
+ shr al, CL ; d2 e8 ; 0xf2f46
+ mov dx, 003f7h ; ba f7 03 ; 0xf2f48 floppy.c:194
+ out DX, AL ; ee ; 0xf2f4b
+ mov dx, 003f4h ; ba f4 03 ; 0xf2f4c floppy.c:198
+ in AL, DX ; ec ; 0xf2f4f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f50
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2f52 floppy.c:199
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2f54
+ jne short 02f4ch ; 75 f4 ; 0xf2f56
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2f58 floppy.c:201
+ jne short 02f6ch ; 75 0e ; 0xf2f5c
+ call 02e65h ; e8 04 ff ; 0xf2f5e floppy.c:212
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f61 floppy.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2f64
+ mov es, dx ; 8e c2 ; 0xf2f67
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2f69
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f6c floppy.c:216
+ pop dx ; 5a ; 0xf2f6f
+ pop cx ; 59 ; 0xf2f70
+ pop bx ; 5b ; 0xf2f71
+ pop bp ; 5d ; 0xf2f72
+ retn ; c3 ; 0xf2f73
+ ; disGetNextSymbol 0xf2f74 LB 0x7f74 -> off=0x0 cb=000000000000004c uValue=00000000000f1974 'floppy_media_known'
+floppy_media_known: ; 0xf2f74 LB 0x4c
+ push bx ; 53 ; 0xf2f74 floppy.c:218
+ push cx ; 51 ; 0xf2f75
+ push dx ; 52 ; 0xf2f76
+ push bp ; 55 ; 0xf2f77
+ mov bp, sp ; 89 e5 ; 0xf2f78
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f7a floppy.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2f7d
+ mov es, dx ; 8e c2 ; 0xf2f80
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf2f82
+ mov bl, bh ; 88 fb ; 0xf2f85 floppy.c:49
+ test ax, ax ; 85 c0 ; 0xf2f87 floppy.c:224
+ je short 02f8dh ; 74 02 ; 0xf2f89
+ shr bl, 1 ; d0 eb ; 0xf2f8b floppy.c:225
+ and bl, 001h ; 80 e3 01 ; 0xf2f8d floppy.c:226
+ jne short 02f96h ; 75 04 ; 0xf2f90 floppy.c:227
+ xor bh, bh ; 30 ff ; 0xf2f92 floppy.c:228
+ jmp short 02fb9h ; eb 23 ; 0xf2f94
+ mov bx, 00090h ; bb 90 00 ; 0xf2f96 floppy.c:230
+ test ax, ax ; 85 c0 ; 0xf2f99 floppy.c:231
+ je short 02fa0h ; 74 03 ; 0xf2f9b
+ mov bx, 00091h ; bb 91 00 ; 0xf2f9d floppy.c:232
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2fa0 floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf2fa3
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fa5
+ xor ah, ah ; 30 e4 ; 0xf2fa8 floppy.c:235
+ mov CL, strict byte 004h ; b1 04 ; 0xf2faa
+ sar ax, CL ; d3 f8 ; 0xf2fac
+ and AL, strict byte 001h ; 24 01 ; 0xf2fae
+ jne short 02fb6h ; 75 04 ; 0xf2fb0 floppy.c:236
+ xor bx, bx ; 31 db ; 0xf2fb2 floppy.c:237
+ jmp short 02fb9h ; eb 03 ; 0xf2fb4
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2fb6 floppy.c:240
+ mov ax, bx ; 89 d8 ; 0xf2fb9 floppy.c:241
+ pop bp ; 5d ; 0xf2fbb
+ pop dx ; 5a ; 0xf2fbc
+ pop cx ; 59 ; 0xf2fbd
+ pop bx ; 5b ; 0xf2fbe
+ retn ; c3 ; 0xf2fbf
+ ; disGetNextSymbol 0xf2fc0 LB 0x7f28 -> off=0x0 cb=0000000000000052 uValue=00000000000f19c0 'floppy_read_id'
+floppy_read_id: ; 0xf2fc0 LB 0x52
+ push bp ; 55 ; 0xf2fc0 floppy.c:243
+ mov bp, sp ; 89 e5 ; 0xf2fc1
+ push bx ; 53 ; 0xf2fc3
+ push dx ; 52 ; 0xf2fc4
+ push si ; 56 ; 0xf2fc5
+ mov bx, ax ; 89 c3 ; 0xf2fc6
+ call 02effh ; e8 34 ff ; 0xf2fc8 floppy.c:250
+ mov AL, strict byte 04ah ; b0 4a ; 0xf2fcb floppy.c:253
+ mov dx, 003f5h ; ba f5 03 ; 0xf2fcd
+ out DX, AL ; ee ; 0xf2fd0
+ mov al, bl ; 88 d8 ; 0xf2fd1 floppy.c:254
+ out DX, AL ; ee ; 0xf2fd3
+ call 02e65h ; e8 8e fe ; 0xf2fd4 floppy.c:269
+ xor bx, bx ; 31 db ; 0xf2fd7 floppy.c:273
+ jmp short 02fe0h ; eb 05 ; 0xf2fd9
+ cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf2fdb
+ jnl short 02ff4h ; 7d 14 ; 0xf2fde
+ mov dx, 003f5h ; ba f5 03 ; 0xf2fe0 floppy.c:274
+ in AL, DX ; ec ; 0xf2fe3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2fe4
+ lea si, [bx+042h] ; 8d 77 42 ; 0xf2fe6
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2fe9 floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf2fec
+ mov byte [es:si], al ; 26 88 04 ; 0xf2fee
+ inc bx ; 43 ; 0xf2ff1 floppy.c:274
+ jmp short 02fdbh ; eb e7 ; 0xf2ff2
+ mov bx, strict word 00042h ; bb 42 00 ; 0xf2ff4 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2ff7
+ mov es, ax ; 8e c0 ; 0xf2ffa
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ffc
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf2fff floppy.c:49
+ je short 03007h ; 74 04 ; 0xf3001
+ xor ax, ax ; 31 c0 ; 0xf3003 floppy.c:277
+ jmp short 0300ah ; eb 03 ; 0xf3005
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3007 floppy.c:279
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf300a floppy.c:280
+ pop si ; 5e ; 0xf300d
+ pop dx ; 5a ; 0xf300e
+ pop bx ; 5b ; 0xf300f
+ pop bp ; 5d ; 0xf3010
+ retn ; c3 ; 0xf3011
+ ; disGetNextSymbol 0xf3012 LB 0x7ed6 -> off=0x0 cb=0000000000000041 uValue=00000000000f1a12 'floppy_drive_recal'
+floppy_drive_recal: ; 0xf3012 LB 0x41
+ push bp ; 55 ; 0xf3012 floppy.c:282
+ mov bp, sp ; 89 e5 ; 0xf3013
+ push bx ; 53 ; 0xf3015
+ push dx ; 52 ; 0xf3016
+ push si ; 56 ; 0xf3017
+ mov bx, ax ; 89 c3 ; 0xf3018
+ call 02effh ; e8 e2 fe ; 0xf301a floppy.c:287
+ mov AL, strict byte 007h ; b0 07 ; 0xf301d floppy.c:290
+ mov dx, 003f5h ; ba f5 03 ; 0xf301f
+ out DX, AL ; ee ; 0xf3022
+ mov al, bl ; 88 d8 ; 0xf3023 floppy.c:291
+ out DX, AL ; ee ; 0xf3025
+ call 02e65h ; e8 3c fe ; 0xf3026 floppy.c:310
+ test bx, bx ; 85 db ; 0xf3029 floppy.c:314
+ je short 03034h ; 74 07 ; 0xf302b
+ or AL, strict byte 002h ; 0c 02 ; 0xf302d floppy.c:315
+ mov bx, 00095h ; bb 95 00 ; 0xf302f floppy.c:316
+ jmp short 03039h ; eb 05 ; 0xf3032 floppy.c:317
+ or AL, strict byte 001h ; 0c 01 ; 0xf3034 floppy.c:318
+ mov bx, 00094h ; bb 94 00 ; 0xf3036 floppy.c:319
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf3039 floppy.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf303c
+ mov es, dx ; 8e c2 ; 0xf303f
+ mov byte [es:si], al ; 26 88 04 ; 0xf3041
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3044 floppy.c:53
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3048 floppy.c:325
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf304b
+ pop si ; 5e ; 0xf304e
+ pop dx ; 5a ; 0xf304f
+ pop bx ; 5b ; 0xf3050
+ pop bp ; 5d ; 0xf3051
+ retn ; c3 ; 0xf3052
+ ; disGetNextSymbol 0xf3053 LB 0x7e95 -> off=0x0 cb=00000000000000e7 uValue=00000000000f1a53 'floppy_media_sense'
+floppy_media_sense: ; 0xf3053 LB 0xe7
+ push bp ; 55 ; 0xf3053 floppy.c:328
+ mov bp, sp ; 89 e5 ; 0xf3054
+ push bx ; 53 ; 0xf3056
+ push cx ; 51 ; 0xf3057
+ push dx ; 52 ; 0xf3058
+ push si ; 56 ; 0xf3059
+ push di ; 57 ; 0xf305a
+ mov si, ax ; 89 c6 ; 0xf305b
+ call 03012h ; e8 b2 ff ; 0xf305d floppy.c:334
+ test ax, ax ; 85 c0 ; 0xf3060
+ jne short 03069h ; 75 05 ; 0xf3062
+ xor dx, dx ; 31 d2 ; 0xf3064 floppy.c:335
+ jmp near 0312eh ; e9 c5 00 ; 0xf3066
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3069 floppy.c:370
+ call 01664h ; e8 f5 e5 ; 0xf306c
+ test si, si ; 85 f6 ; 0xf306f floppy.c:371
+ jne short 0307bh ; 75 08 ; 0xf3071
+ mov CL, strict byte 004h ; b1 04 ; 0xf3073 floppy.c:372
+ mov dl, al ; 88 c2 ; 0xf3075
+ shr dl, CL ; d2 ea ; 0xf3077
+ jmp short 03080h ; eb 05 ; 0xf3079 floppy.c:373
+ mov dl, al ; 88 c2 ; 0xf307b floppy.c:374
+ and dl, 00fh ; 80 e2 0f ; 0xf307d
+ cmp dl, 001h ; 80 fa 01 ; 0xf3080 floppy.c:375
+ jne short 0308eh ; 75 09 ; 0xf3083
+ xor dl, dl ; 30 d2 ; 0xf3085 floppy.c:377
+ mov DH, strict byte 015h ; b6 15 ; 0xf3087 floppy.c:378
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf3089 floppy.c:379
+ jmp short 030cch ; eb 3e ; 0xf308c floppy.c:381
+ cmp dl, 002h ; 80 fa 02 ; 0xf308e
+ jne short 03099h ; 75 06 ; 0xf3091
+ xor dl, dl ; 30 d2 ; 0xf3093 floppy.c:383
+ mov DH, strict byte 035h ; b6 35 ; 0xf3095 floppy.c:384
+ jmp short 03089h ; eb f0 ; 0xf3097
+ cmp dl, 003h ; 80 fa 03 ; 0xf3099 floppy.c:387
+ jne short 030a4h ; 75 06 ; 0xf309c
+ xor dl, dl ; 30 d2 ; 0xf309e floppy.c:389
+ mov DH, strict byte 017h ; b6 17 ; 0xf30a0 floppy.c:390
+ jmp short 03089h ; eb e5 ; 0xf30a2
+ cmp dl, 004h ; 80 fa 04 ; 0xf30a4 floppy.c:393
+ jne short 030afh ; 75 06 ; 0xf30a7
+ xor dl, dl ; 30 d2 ; 0xf30a9 floppy.c:395
+ mov DH, strict byte 017h ; b6 17 ; 0xf30ab floppy.c:396
+ jmp short 03089h ; eb da ; 0xf30ad
+ cmp dl, 005h ; 80 fa 05 ; 0xf30af floppy.c:399
+ jne short 030bah ; 75 06 ; 0xf30b2
+ mov DL, strict byte 0cch ; b2 cc ; 0xf30b4 floppy.c:401
+ mov DH, strict byte 0d7h ; b6 d7 ; 0xf30b6 floppy.c:402
+ jmp short 03089h ; eb cf ; 0xf30b8
+ cmp dl, 00eh ; 80 fa 0e ; 0xf30ba floppy.c:406
+ je short 030c4h ; 74 05 ; 0xf30bd
+ cmp dl, 00fh ; 80 fa 0f ; 0xf30bf
+ jne short 030c6h ; 75 02 ; 0xf30c2
+ jmp short 030b4h ; eb ee ; 0xf30c4
+ xor dl, dl ; 30 d2 ; 0xf30c6 floppy.c:414
+ xor dh, dh ; 30 f6 ; 0xf30c8 floppy.c:415
+ xor bx, bx ; 31 db ; 0xf30ca floppy.c:416
+ mov di, 0008bh ; bf 8b 00 ; 0xf30cc floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf30cf
+ mov es, ax ; 8e c0 ; 0xf30d2
+ mov byte [es:di], dl ; 26 88 15 ; 0xf30d4
+ mov ax, si ; 89 f0 ; 0xf30d7 floppy.c:420
+ call 02fc0h ; e8 e4 fe ; 0xf30d9
+ test ax, ax ; 85 c0 ; 0xf30dc
+ jne short 03112h ; 75 32 ; 0xf30de
+ mov al, dl ; 88 d0 ; 0xf30e0 floppy.c:421
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf30e2
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf30e4
+ je short 03112h ; 74 2a ; 0xf30e6
+ mov al, dl ; 88 d0 ; 0xf30e8 floppy.c:425
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf30ea
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf30ec
+ je short 030ffh ; 74 0f ; 0xf30ee
+ mov ah, dl ; 88 d4 ; 0xf30f0
+ and ah, 03fh ; 80 e4 3f ; 0xf30f2
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf30f5
+ je short 0310bh ; 74 12 ; 0xf30f7
+ test al, al ; 84 c0 ; 0xf30f9
+ je short 03104h ; 74 07 ; 0xf30fb
+ jmp short 030cch ; eb cd ; 0xf30fd
+ and dl, 03fh ; 80 e2 3f ; 0xf30ff floppy.c:427
+ jmp short 030cch ; eb c8 ; 0xf3102 floppy.c:428
+ mov dl, ah ; 88 e2 ; 0xf3104 floppy.c:430
+ or dl, 040h ; 80 ca 40 ; 0xf3106
+ jmp short 030cch ; eb c1 ; 0xf3109 floppy.c:431
+ mov dl, ah ; 88 e2 ; 0xf310b floppy.c:433
+ or dl, 080h ; 80 ca 80 ; 0xf310d
+ jmp short 030cch ; eb ba ; 0xf3110 floppy.c:437
+ test si, si ; 85 f6 ; 0xf3112 floppy.c:439
+ jne short 0311bh ; 75 05 ; 0xf3114
+ mov si, 00090h ; be 90 00 ; 0xf3116 floppy.c:440
+ jmp short 0311eh ; eb 03 ; 0xf3119 floppy.c:441
+ mov si, 00091h ; be 91 00 ; 0xf311b floppy.c:442
+ mov di, 0008bh ; bf 8b 00 ; 0xf311e floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3121
+ mov es, ax ; 8e c0 ; 0xf3124
+ mov byte [es:di], dl ; 26 88 15 ; 0xf3126
+ mov byte [es:si], dh ; 26 88 34 ; 0xf3129 floppy.c:53
+ mov dx, bx ; 89 da ; 0xf312c floppy.c:446
+ mov ax, dx ; 89 d0 ; 0xf312e floppy.c:447
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf3130
+ pop di ; 5f ; 0xf3133
+ pop si ; 5e ; 0xf3134
+ pop dx ; 5a ; 0xf3135
+ pop cx ; 59 ; 0xf3136
+ pop bx ; 5b ; 0xf3137
+ pop bp ; 5d ; 0xf3138
+ retn ; c3 ; 0xf3139
+ ; disGetNextSymbol 0xf313a LB 0x7dae -> off=0x0 cb=000000000000002b uValue=00000000000f1b3a 'floppy_drive_exists'
+floppy_drive_exists: ; 0xf313a LB 0x2b
+ push bp ; 55 ; 0xf313a floppy.c:450
+ mov bp, sp ; 89 e5 ; 0xf313b
+ push cx ; 51 ; 0xf313d
+ push dx ; 52 ; 0xf313e
+ mov dx, ax ; 89 c2 ; 0xf313f
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3141 floppy.c:456
+ call 01664h ; e8 1d e5 ; 0xf3144
+ test dx, dx ; 85 d2 ; 0xf3147 floppy.c:457
+ jne short 03151h ; 75 06 ; 0xf3149
+ mov CL, strict byte 004h ; b1 04 ; 0xf314b floppy.c:458
+ shr al, CL ; d2 e8 ; 0xf314d
+ jmp short 03153h ; eb 02 ; 0xf314f floppy.c:459
+ and AL, strict byte 00fh ; 24 0f ; 0xf3151 floppy.c:460
+ test al, al ; 84 c0 ; 0xf3153 floppy.c:461
+ je short 0315ch ; 74 05 ; 0xf3155
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3157
+ jmp short 0315eh ; eb 02 ; 0xf315a
+ xor ah, ah ; 30 e4 ; 0xf315c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf315e floppy.c:462
+ pop dx ; 5a ; 0xf3161
+ pop cx ; 59 ; 0xf3162
+ pop bp ; 5d ; 0xf3163
+ retn ; c3 ; 0xf3164
+ ; disGetNextSymbol 0xf3165 LB 0x7d83 -> off=0x23 cb=00000000000009fd uValue=00000000000f1b88 'int13_diskette_function'
+ db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 05fh, 03bh, 0c6h, 031h, 048h
+ db 032h, 062h, 032h, 062h, 032h, 062h, 032h, 013h, 036h, 0f7h, 037h, 0f2h, 038h, 035h, 039h, 069h
+ db 039h, 0ddh, 039h
+int13_diskette_function: ; 0xf3188 LB 0x9fd
+ push bp ; 55 ; 0xf3188 floppy.c:477
+ mov bp, sp ; 89 e5 ; 0xf3189
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf318b
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf318e floppy.c:488
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3192 floppy.c:490
+ xor ah, ah ; 30 e4 ; 0xf3195
+ mov dx, ax ; 89 c2 ; 0xf3197
+ cmp ax, strict word 00018h ; 3d 18 00 ; 0xf3199
+ jnbe short 031fah ; 77 5c ; 0xf319c
+ push CS ; 0e ; 0xf319e
+ pop ES ; 07 ; 0xf319f
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf31a0
+ mov di, 03165h ; bf 65 31 ; 0xf31a3
+ repne scasb ; f2 ae ; 0xf31a6
+ sal cx, 1 ; d1 e1 ; 0xf31a8
+ mov di, cx ; 89 cf ; 0xf31aa
+ mov di, word [cs:di+03170h] ; 2e 8b bd 70 31 ; 0xf31ac
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf31b1
+ xor ch, ch ; 30 ed ; 0xf31b4
+ mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf31b6
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf31b9
+ or AL, strict byte 001h ; 0c 01 ; 0xf31bc
+ mov si, cx ; 89 ce ; 0xf31be
+ or si, 00100h ; 81 ce 00 01 ; 0xf31c0
+ jmp di ; ff e7 ; 0xf31c4
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf31c6 floppy.c:493
+ cmp bl, 001h ; 80 fb 01 ; 0xf31c9 floppy.c:494
+ jbe short 031e8h ; 76 1a ; 0xf31cc
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf31ce floppy.c:495
+ xor ah, ah ; 30 e4 ; 0xf31d1
+ or ah, 001h ; 80 cc 01 ; 0xf31d3
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf31d6
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf31d9 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf31dc
+ mov es, ax ; 8e c0 ; 0xf31df
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf31e1
+ jmp near 03a4ah ; e9 62 08 ; 0xf31e5
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf31e8 floppy.c:501
+ call 01664h ; e8 76 e4 ; 0xf31eb
+ test bl, bl ; 84 db ; 0xf31ee floppy.c:502
+ jne short 031fdh ; 75 0b ; 0xf31f0
+ mov CL, strict byte 004h ; b1 04 ; 0xf31f2 floppy.c:503
+ mov dl, al ; 88 c2 ; 0xf31f4
+ shr dl, CL ; d2 ea ; 0xf31f6
+ jmp short 03202h ; eb 08 ; 0xf31f8 floppy.c:504
+ jmp near 03b5fh ; e9 62 09 ; 0xf31fa
+ mov dl, al ; 88 c2 ; 0xf31fd floppy.c:505
+ and dl, 00fh ; 80 e2 0f ; 0xf31ff
+ test dl, dl ; 84 d2 ; 0xf3202 floppy.c:506
+ jne short 03220h ; 75 1a ; 0xf3204
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3206 floppy.c:507
+ xor ah, ah ; 30 e4 ; 0xf3209
+ or ah, 080h ; 80 cc 80 ; 0xf320b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf320e
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3211 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3214
+ mov es, ax ; 8e c0 ; 0xf3217
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3219
+ jmp near 03a4ah ; e9 2a 08 ; 0xf321d
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf3220 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3223
+ mov es, ax ; 8e c0 ; 0xf3226
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf3228
+ xor al, al ; 30 c0 ; 0xf322c floppy.c:516
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf322e
+ mov si, strict word 00041h ; be 41 00 ; 0xf3231 floppy.c:53
+ mov byte [es:si], al ; 26 88 04 ; 0xf3234
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3237 floppy.c:518
+ mov al, bl ; 88 d8 ; 0xf323b floppy.c:519
+ xor ah, ah ; 30 e4 ; 0xf323d
+ xor dx, dx ; 31 d2 ; 0xf323f
+ call 02e39h ; e8 f5 fb ; 0xf3241
+ mov sp, bp ; 89 ec ; 0xf3244 floppy.c:520
+ pop bp ; 5d ; 0xf3246
+ retn ; c3 ; 0xf3247
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3248 floppy.c:523
+ mov bx, 00441h ; bb 41 04 ; 0xf324c floppy.c:48
+ xor ax, ax ; 31 c0 ; 0xf324f
+ mov es, ax ; 8e c0 ; 0xf3251
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf3253
+ mov ch, dl ; 88 d5 ; 0xf3256 floppy.c:525
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf3258
+ test dl, dl ; 84 d2 ; 0xf325b floppy.c:526
+ je short 03244h ; 74 e5 ; 0xf325d
+ jmp near 03a4ah ; e9 e8 07 ; 0xf325f
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3262 floppy.c:534
+ mov al, byte [bp+015h] ; 8a 46 15 ; 0xf3265 floppy.c:535
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf3268
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf326b floppy.c:536
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf326e
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf3271 floppy.c:537
+ xor ah, ah ; 30 e4 ; 0xf3274
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf3276
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3279 floppy.c:538
+ cmp bl, 001h ; 80 fb 01 ; 0xf327c floppy.c:540
+ jnbe short 0328eh ; 77 0d ; 0xf327f
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf3281
+ jnbe short 0328eh ; 77 09 ; 0xf3283
+ test bh, bh ; 84 ff ; 0xf3285
+ je short 0328eh ; 74 05 ; 0xf3287
+ cmp bh, 048h ; 80 ff 48 ; 0xf3289
+ jbe short 032c5h ; 76 37 ; 0xf328c
+ mov bx, 00ddch ; bb dc 0d ; 0xf328e floppy.c:542
+ mov cx, ds ; 8c d9 ; 0xf3291
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3293
+ call 01919h ; e8 80 e6 ; 0xf3296
+ mov ax, 002bdh ; b8 bd 02 ; 0xf3299
+ push ax ; 50 ; 0xf329c
+ mov ax, 002d5h ; b8 d5 02 ; 0xf329d
+ push ax ; 50 ; 0xf32a0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf32a1
+ push ax ; 50 ; 0xf32a4
+ call 0195ch ; e8 b4 e6 ; 0xf32a5
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf32a8
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32ab floppy.c:543
+ xor ah, ah ; 30 e4 ; 0xf32ae
+ or ah, 001h ; 80 cc 01 ; 0xf32b0
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf32b3
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf32b6 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf32b9
+ mov es, ax ; 8e c0 ; 0xf32bc
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf32be
+ jmp near 0336fh ; e9 aa 00 ; 0xf32c2
+ mov al, bl ; 88 d8 ; 0xf32c5 floppy.c:545
+ xor ah, ah ; 30 e4 ; 0xf32c7
+ call 0313ah ; e8 6e fe ; 0xf32c9
+ test ax, ax ; 85 c0 ; 0xf32cc
+ jne short 032eah ; 75 1a ; 0xf32ce
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32d0 floppy.c:553
+ xor ah, ah ; 30 e4 ; 0xf32d3
+ or ah, 080h ; 80 cc 80 ; 0xf32d5
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf32d8
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf32db floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf32de
+ mov es, ax ; 8e c0 ; 0xf32e1
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf32e3
+ jmp near 0336fh ; e9 85 00 ; 0xf32e7
+ mov cl, bl ; 88 d9 ; 0xf32ea floppy.c:561
+ xor ch, ch ; 30 ed ; 0xf32ec
+ mov ax, cx ; 89 c8 ; 0xf32ee
+ call 02f74h ; e8 81 fc ; 0xf32f0
+ test ax, ax ; 85 c0 ; 0xf32f3
+ jne short 0331dh ; 75 26 ; 0xf32f5
+ mov ax, cx ; 89 c8 ; 0xf32f7 floppy.c:562
+ call 03053h ; e8 57 fd ; 0xf32f9
+ test ax, ax ; 85 c0 ; 0xf32fc
+ jne short 0331dh ; 75 1d ; 0xf32fe
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3300 floppy.c:564
+ xor ah, ah ; 30 e4 ; 0xf3303
+ or ah, 00ch ; 80 cc 0c ; 0xf3305
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3308
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf330b floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf330e
+ mov es, ax ; 8e c0 ; 0xf3311
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3313
+ mov byte [bp+016h], ch ; 88 6e 16 ; 0xf3317
+ jmp near 03a4ah ; e9 2d 07 ; 0xf331a
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf331d floppy.c:566
+ xor ah, ah ; 30 e4 ; 0xf3320
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf3322
+ jne short 03376h ; 75 4f ; 0xf3325
+ mov CL, strict byte 00ch ; b1 0c ; 0xf3327 floppy.c:583
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf3329
+ shr ax, CL ; d3 e8 ; 0xf332c
+ mov ch, al ; 88 c5 ; 0xf332e
+ mov CL, strict byte 004h ; b1 04 ; 0xf3330 floppy.c:584
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3332
+ sal dx, CL ; d3 e2 ; 0xf3335
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3337 floppy.c:585
+ add si, dx ; 01 d6 ; 0xf333a
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf333c
+ cmp dx, si ; 39 f2 ; 0xf333f floppy.c:587
+ jbe short 03345h ; 76 02 ; 0xf3341
+ db 0feh, 0c5h
+ ; inc ch ; fe c5 ; 0xf3343 floppy.c:589
+ mov al, bh ; 88 f8 ; 0xf3345 floppy.c:591
+ xor ah, ah ; 30 e4 ; 0xf3347
+ mov CL, strict byte 009h ; b1 09 ; 0xf3349
+ sal ax, CL ; d3 e0 ; 0xf334b
+ dec ax ; 48 ; 0xf334d
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf334e
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf3351 floppy.c:594
+ add ax, word [bp-00eh] ; 03 46 f2 ; 0xf3354
+ cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf3357 floppy.c:595
+ jnc short 03379h ; 73 1d ; 0xf335a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf335c floppy.c:596
+ mov ah, cl ; 88 cc ; 0xf335f
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3361
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3364 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3367
+ mov es, ax ; 8e c0 ; 0xf336a
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf336c
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf336f
+ jmp near 03a4ah ; e9 d4 06 ; 0xf3373
+ jmp near 034c3h ; e9 4a 01 ; 0xf3376
+ mov AL, strict byte 006h ; b0 06 ; 0xf3379 floppy.c:604
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf337b
+ out DX, AL ; ee ; 0xf337e
+ xor al, al ; 30 c0 ; 0xf337f floppy.c:607
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3381
+ out DX, AL ; ee ; 0xf3384
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3385 floppy.c:608
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3388
+ out DX, AL ; ee ; 0xf338b
+ mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf338c floppy.c:609
+ out DX, AL ; ee ; 0xf338f
+ xor al, al ; 30 c0 ; 0xf3390 floppy.c:611
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3392
+ out DX, AL ; ee ; 0xf3395
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf3396 floppy.c:612
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3399
+ out DX, AL ; ee ; 0xf339c
+ mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf339d floppy.c:613
+ out DX, AL ; ee ; 0xf33a0
+ mov AL, strict byte 046h ; b0 46 ; 0xf33a1 floppy.c:621
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf33a3
+ out DX, AL ; ee ; 0xf33a6
+ mov al, ch ; 88 e8 ; 0xf33a7 floppy.c:625
+ mov dx, 00081h ; ba 81 00 ; 0xf33a9
+ out DX, AL ; ee ; 0xf33ac
+ mov AL, strict byte 002h ; b0 02 ; 0xf33ad floppy.c:628
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf33af
+ out DX, AL ; ee ; 0xf33b2
+ mov cl, bl ; 88 d9 ; 0xf33b3 floppy.c:633
+ xor ch, ch ; 30 ed ; 0xf33b5
+ mov ax, cx ; 89 c8 ; 0xf33b7
+ call 02effh ; e8 43 fb ; 0xf33b9
+ mov AL, strict byte 0e6h ; b0 e6 ; 0xf33bc floppy.c:636
+ mov dx, 003f5h ; ba f5 03 ; 0xf33be
+ out DX, AL ; ee ; 0xf33c1
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf33c2 floppy.c:637
+ xor ah, ah ; 30 e4 ; 0xf33c5
+ mov dx, ax ; 89 c2 ; 0xf33c7
+ sal dx, 1 ; d1 e2 ; 0xf33c9
+ sal dx, 1 ; d1 e2 ; 0xf33cb
+ mov al, bl ; 88 d8 ; 0xf33cd
+ or ax, dx ; 09 d0 ; 0xf33cf
+ mov dx, 003f5h ; ba f5 03 ; 0xf33d1
+ out DX, AL ; ee ; 0xf33d4
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf33d5 floppy.c:638
+ out DX, AL ; ee ; 0xf33d8
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf33d9 floppy.c:639
+ out DX, AL ; ee ; 0xf33dc
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf33dd floppy.c:640
+ out DX, AL ; ee ; 0xf33e0
+ mov AL, strict byte 002h ; b0 02 ; 0xf33e1 floppy.c:641
+ out DX, AL ; ee ; 0xf33e3
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf33e4 floppy.c:642
+ xor ah, ah ; 30 e4 ; 0xf33e7
+ mov dl, bh ; 88 fa ; 0xf33e9
+ xor dh, dh ; 30 f6 ; 0xf33eb
+ add ax, dx ; 01 d0 ; 0xf33ed
+ dec ax ; 48 ; 0xf33ef
+ mov dx, 003f5h ; ba f5 03 ; 0xf33f0
+ out DX, AL ; ee ; 0xf33f3
+ xor al, al ; 30 c0 ; 0xf33f4 floppy.c:643
+ out DX, AL ; ee ; 0xf33f6
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf33f7 floppy.c:644
+ out DX, AL ; ee ; 0xf33f9
+ call 02e88h ; e8 8b fa ; 0xf33fa floppy.c:676
+ test al, al ; 84 c0 ; 0xf33fd floppy.c:677
+ jne short 03420h ; 75 1f ; 0xf33ff
+ mov ax, cx ; 89 c8 ; 0xf3401 floppy.c:679
+ call 02ec0h ; e8 ba fa ; 0xf3403
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3406 floppy.c:680
+ xor ah, ah ; 30 e4 ; 0xf3409
+ or ah, 080h ; 80 cc 80 ; 0xf340b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf340e
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3411 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3414
+ mov es, ax ; 8e c0 ; 0xf3417
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3419
+ jmp near 03317h ; e9 f7 fe ; 0xf341d
+ mov dx, 003f4h ; ba f4 03 ; 0xf3420 floppy.c:689
+ in AL, DX ; ec ; 0xf3423
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3424
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3426 floppy.c:690
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3428
+ je short 0343eh ; 74 12 ; 0xf342a
+ mov ax, 002bdh ; b8 bd 02 ; 0xf342c floppy.c:691
+ push ax ; 50 ; 0xf342f
+ mov ax, 002f0h ; b8 f0 02 ; 0xf3430
+ push ax ; 50 ; 0xf3433
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf3434
+ push ax ; 50 ; 0xf3437
+ call 0195ch ; e8 21 e5 ; 0xf3438
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf343b
+ xor cx, cx ; 31 c9 ; 0xf343e floppy.c:694
+ jmp short 03447h ; eb 05 ; 0xf3440
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3442
+ jnl short 0345dh ; 7d 16 ; 0xf3445
+ mov dx, 003f5h ; ba f5 03 ; 0xf3447 floppy.c:695
+ in AL, DX ; ec ; 0xf344a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf344b
+ mov si, cx ; 89 ce ; 0xf344d
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf344f
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3452 floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf3455
+ mov byte [es:si], al ; 26 88 04 ; 0xf3457
+ inc cx ; 41 ; 0xf345a floppy.c:695
+ jmp short 03442h ; eb e5 ; 0xf345b
+ mov si, strict word 00042h ; be 42 00 ; 0xf345d floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3460
+ mov es, ax ; 8e c0 ; 0xf3463
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3465
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3468 floppy.c:49
+ je short 0348dh ; 74 21 ; 0xf346a
+ mov al, bl ; 88 d8 ; 0xf346c floppy.c:699
+ xor ah, ah ; 30 e4 ; 0xf346e
+ call 02ec0h ; e8 4d fa ; 0xf3470
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3473 floppy.c:700
+ xor ah, ah ; 30 e4 ; 0xf3476
+ or ah, 020h ; 80 cc 20 ; 0xf3478
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf347b
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf347e floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3481
+ mov es, ax ; 8e c0 ; 0xf3484
+ mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf3486
+ jmp near 0336fh ; e9 e2 fe ; 0xf348a
+ mov al, bh ; 88 f8 ; 0xf348d floppy.c:708
+ xor ah, ah ; 30 e4 ; 0xf348f
+ mov CL, strict byte 009h ; b1 09 ; 0xf3491
+ sal ax, CL ; d3 e0 ; 0xf3493
+ cwd ; 99 ; 0xf3495
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf3496
+ sar ax, 1 ; d1 f8 ; 0xf3498
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf349a
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf349d
+ mov di, si ; 89 f7 ; 0xf34a0
+ mov cx, ax ; 89 c1 ; 0xf34a2
+ mov es, dx ; 8e c2 ; 0xf34a4
+ push DS ; 1e ; 0xf34a6
+ mov ds, dx ; 8e da ; 0xf34a7
+ rep movsw ; f3 a5 ; 0xf34a9
+ pop DS ; 1f ; 0xf34ab
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf34ac floppy.c:712
+ xor dh, dh ; 30 f6 ; 0xf34af
+ mov al, bl ; 88 d8 ; 0xf34b1
+ xor ah, ah ; 30 e4 ; 0xf34b3
+ call 02e39h ; e8 81 f9 ; 0xf34b5
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf34b8 floppy.c:714
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf34bc floppy.c:715
+ jmp near 03244h ; e9 81 fd ; 0xf34c0 floppy.c:716
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf34c3 floppy.c:717
+ xor ah, ah ; 30 e4 ; 0xf34c6
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf34c8
+ je short 034d0h ; 74 03 ; 0xf34cb
+ jmp near 035fch ; e9 2c 01 ; 0xf34cd
+ mov CL, strict byte 00ch ; b1 0c ; 0xf34d0 floppy.c:728
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf34d2
+ shr dx, CL ; d3 ea ; 0xf34d5
+ mov ch, dl ; 88 d5 ; 0xf34d7
+ mov CL, strict byte 004h ; b1 04 ; 0xf34d9 floppy.c:729
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf34db
+ sal ax, CL ; d3 e0 ; 0xf34de
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf34e0 floppy.c:730
+ add si, ax ; 01 c6 ; 0xf34e3
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf34e5
+ cmp ax, si ; 39 f0 ; 0xf34e8 floppy.c:732
+ jbe short 034eeh ; 76 02 ; 0xf34ea
+ db 0feh, 0c5h
+ ; inc ch ; fe c5 ; 0xf34ec floppy.c:734
+ mov al, bh ; 88 f8 ; 0xf34ee floppy.c:736
+ xor ah, ah ; 30 e4 ; 0xf34f0
+ mov CL, strict byte 009h ; b1 09 ; 0xf34f2
+ sal ax, CL ; d3 e0 ; 0xf34f4
+ dec ax ; 48 ; 0xf34f6
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf34f7
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf34fa floppy.c:739
+ add ax, word [bp-00eh] ; 03 46 f2 ; 0xf34fd
+ cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf3500 floppy.c:740
+ jnc short 03508h ; 73 03 ; 0xf3503
+ jmp near 0335ch ; e9 54 fe ; 0xf3505
+ mov AL, strict byte 006h ; b0 06 ; 0xf3508 floppy.c:749
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf350a
+ out DX, AL ; ee ; 0xf350d
+ xor al, al ; 30 c0 ; 0xf350e floppy.c:751
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3510
+ out DX, AL ; ee ; 0xf3513
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3514 floppy.c:752
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3517
+ out DX, AL ; ee ; 0xf351a
+ mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf351b floppy.c:753
+ out DX, AL ; ee ; 0xf351e
+ xor al, al ; 30 c0 ; 0xf351f floppy.c:754
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3521
+ out DX, AL ; ee ; 0xf3524
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf3525 floppy.c:755
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3528
+ out DX, AL ; ee ; 0xf352b
+ mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf352c floppy.c:756
+ out DX, AL ; ee ; 0xf352f
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3530 floppy.c:763
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3532
+ out DX, AL ; ee ; 0xf3535
+ mov al, ch ; 88 e8 ; 0xf3536 floppy.c:766
+ mov dx, 00081h ; ba 81 00 ; 0xf3538
+ out DX, AL ; ee ; 0xf353b
+ mov AL, strict byte 002h ; b0 02 ; 0xf353c floppy.c:769
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf353e
+ out DX, AL ; ee ; 0xf3541
+ mov cl, bl ; 88 d9 ; 0xf3542 floppy.c:774
+ xor ch, ch ; 30 ed ; 0xf3544
+ mov ax, cx ; 89 c8 ; 0xf3546
+ call 02effh ; e8 b4 f9 ; 0xf3548
+ mov AL, strict byte 0c5h ; b0 c5 ; 0xf354b floppy.c:777
+ mov dx, 003f5h ; ba f5 03 ; 0xf354d
+ out DX, AL ; ee ; 0xf3550
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3551 floppy.c:778
+ xor ah, ah ; 30 e4 ; 0xf3554
+ mov dx, ax ; 89 c2 ; 0xf3556
+ sal dx, 1 ; d1 e2 ; 0xf3558
+ sal dx, 1 ; d1 e2 ; 0xf355a
+ mov al, bl ; 88 d8 ; 0xf355c
+ or ax, dx ; 09 d0 ; 0xf355e
+ mov dx, 003f5h ; ba f5 03 ; 0xf3560
+ out DX, AL ; ee ; 0xf3563
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3564 floppy.c:779
+ out DX, AL ; ee ; 0xf3567
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3568 floppy.c:780
+ out DX, AL ; ee ; 0xf356b
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf356c floppy.c:781
+ out DX, AL ; ee ; 0xf356f
+ mov AL, strict byte 002h ; b0 02 ; 0xf3570 floppy.c:782
+ out DX, AL ; ee ; 0xf3572
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf3573 floppy.c:783
+ xor dh, dh ; 30 f6 ; 0xf3576
+ mov al, bh ; 88 f8 ; 0xf3578
+ xor ah, ah ; 30 e4 ; 0xf357a
+ add ax, dx ; 01 d0 ; 0xf357c
+ dec ax ; 48 ; 0xf357e
+ mov dx, 003f5h ; ba f5 03 ; 0xf357f
+ out DX, AL ; ee ; 0xf3582
+ xor al, al ; 30 c0 ; 0xf3583 floppy.c:784
+ out DX, AL ; ee ; 0xf3585
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf3586 floppy.c:785
+ out DX, AL ; ee ; 0xf3588
+ call 02e88h ; e8 fc f8 ; 0xf3589 floppy.c:814
+ test al, al ; 84 c0 ; 0xf358c floppy.c:815
+ jne short 03593h ; 75 03 ; 0xf358e
+ jmp near 03401h ; e9 6e fe ; 0xf3590
+ mov dx, 003f4h ; ba f4 03 ; 0xf3593 floppy.c:826
+ in AL, DX ; ec ; 0xf3596
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3597
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3599 floppy.c:827
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf359b
+ je short 035b1h ; 74 12 ; 0xf359d
+ mov ax, 002bdh ; b8 bd 02 ; 0xf359f floppy.c:828
+ push ax ; 50 ; 0xf35a2
+ mov ax, 002f0h ; b8 f0 02 ; 0xf35a3
+ push ax ; 50 ; 0xf35a6
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf35a7
+ push ax ; 50 ; 0xf35aa
+ call 0195ch ; e8 ae e3 ; 0xf35ab
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf35ae
+ xor cx, cx ; 31 c9 ; 0xf35b1 floppy.c:831
+ jmp short 035bah ; eb 05 ; 0xf35b3
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf35b5
+ jnl short 035d0h ; 7d 16 ; 0xf35b8
+ mov dx, 003f5h ; ba f5 03 ; 0xf35ba floppy.c:832
+ in AL, DX ; ec ; 0xf35bd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf35be
+ mov si, cx ; 89 ce ; 0xf35c0
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf35c2
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf35c5 floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf35c8
+ mov byte [es:si], al ; 26 88 04 ; 0xf35ca
+ inc cx ; 41 ; 0xf35cd floppy.c:832
+ jmp short 035b5h ; eb e5 ; 0xf35ce
+ mov si, strict word 00042h ; be 42 00 ; 0xf35d0 floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf35d3
+ mov es, ax ; 8e c0 ; 0xf35d6
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf35d8
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf35db floppy.c:49
+ jne short 035e2h ; 75 03 ; 0xf35dd
+ jmp near 034ach ; e9 ca fe ; 0xf35df
+ mov bx, strict word 00043h ; bb 43 00 ; 0xf35e2 floppy.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf35e5
+ test AL, strict byte 002h ; a8 02 ; 0xf35e8 floppy.c:49
+ je short 035f4h ; 74 08 ; 0xf35ea
+ mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf35ec floppy.c:839
+ jmp near 03a4ah ; e9 56 04 ; 0xf35f1
+ mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf35f4 floppy.c:842
+ jmp near 03a4ah ; e9 4e 04 ; 0xf35f9 floppy.c:843
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf35fc floppy.c:858
+ xor dh, dh ; 30 f6 ; 0xf35ff
+ mov al, bl ; 88 d8 ; 0xf3601
+ xor ah, ah ; 30 e4 ; 0xf3603
+ call 02e39h ; e8 31 f8 ; 0xf3605
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3608 floppy.c:860
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf360c floppy.c:861
+ jmp near 03244h ; e9 31 fc ; 0xf3610 floppy.c:862
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3613 floppy.c:869
+ mov dl, byte [bp+015h] ; 8a 56 15 ; 0xf3616 floppy.c:870
+ xor dh, dh ; 30 f6 ; 0xf3619
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf361b
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf361e floppy.c:871
+ xor ah, ah ; 30 e4 ; 0xf3621
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf3623
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3626 floppy.c:872
+ cmp bl, 001h ; 80 fb 01 ; 0xf3629 floppy.c:874
+ jnbe short 03640h ; 77 12 ; 0xf362c
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf362e
+ jnbe short 03640h ; 77 0e ; 0xf3630
+ cmp dl, 04fh ; 80 fa 4f ; 0xf3632
+ jnbe short 03640h ; 77 09 ; 0xf3635
+ test bh, bh ; 84 ff ; 0xf3637
+ je short 03640h ; 74 05 ; 0xf3639
+ cmp bh, 012h ; 80 ff 12 ; 0xf363b
+ jbe short 0365bh ; 76 1b ; 0xf363e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3640 floppy.c:876
+ xor ah, ah ; 30 e4 ; 0xf3643
+ or ah, 001h ; 80 cc 01 ; 0xf3645
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3648
+ mov si, strict word 00041h ; be 41 00 ; 0xf364b floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf364e
+ mov es, ax ; 8e c0 ; 0xf3651
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf3653
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3657 floppy.c:878
+ mov al, bl ; 88 d8 ; 0xf365b floppy.c:882
+ xor ah, ah ; 30 e4 ; 0xf365d
+ call 0313ah ; e8 d8 fa ; 0xf365f
+ test ax, ax ; 85 c0 ; 0xf3662
+ jne short 03680h ; 75 1a ; 0xf3664
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3666 floppy.c:883
+ xor ah, ah ; 30 e4 ; 0xf3669
+ or ah, 080h ; 80 cc 80 ; 0xf366b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf366e
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3671 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3674
+ mov es, ax ; 8e c0 ; 0xf3677
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3679
+ jmp near 03a4ah ; e9 ca 03 ; 0xf367d
+ mov cl, bl ; 88 d9 ; 0xf3680 floppy.c:890
+ xor ch, ch ; 30 ed ; 0xf3682
+ mov ax, cx ; 89 c8 ; 0xf3684
+ call 02f74h ; e8 eb f8 ; 0xf3686
+ test ax, ax ; 85 c0 ; 0xf3689
+ jne short 03699h ; 75 0c ; 0xf368b
+ mov ax, cx ; 89 c8 ; 0xf368d floppy.c:891
+ call 03053h ; e8 c1 f9 ; 0xf368f
+ test ax, ax ; 85 c0 ; 0xf3692
+ jne short 03699h ; 75 03 ; 0xf3694
+ jmp near 03300h ; e9 67 fc ; 0xf3696
+ mov CL, strict byte 00ch ; b1 0c ; 0xf3699 floppy.c:902
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf369b
+ shr ax, CL ; d3 e8 ; 0xf369e
+ mov ch, al ; 88 c5 ; 0xf36a0
+ mov CL, strict byte 004h ; b1 04 ; 0xf36a2 floppy.c:903
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf36a4
+ sal dx, CL ; d3 e2 ; 0xf36a7
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf36a9 floppy.c:904
+ add si, dx ; 01 d6 ; 0xf36ac
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf36ae
+ cmp dx, si ; 39 f2 ; 0xf36b1 floppy.c:906
+ jbe short 036b7h ; 76 02 ; 0xf36b3
+ db 0feh, 0c5h
+ ; inc ch ; fe c5 ; 0xf36b5 floppy.c:908
+ mov al, bh ; 88 f8 ; 0xf36b7 floppy.c:910
+ xor ah, ah ; 30 e4 ; 0xf36b9
+ sal ax, 1 ; d1 e0 ; 0xf36bb
+ sal ax, 1 ; d1 e0 ; 0xf36bd
+ dec ax ; 48 ; 0xf36bf
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf36c0
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf36c3 floppy.c:913
+ add ax, word [bp-00eh] ; 03 46 f2 ; 0xf36c6
+ cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf36c9 floppy.c:914
+ jnc short 036e8h ; 73 1a ; 0xf36cc
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf36ce floppy.c:915
+ xor ah, ah ; 30 e4 ; 0xf36d1
+ or ah, 009h ; 80 cc 09 ; 0xf36d3
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf36d6
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf36d9 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf36dc
+ mov es, ax ; 8e c0 ; 0xf36df
+ mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf36e1
+ jmp near 0336fh ; e9 87 fc ; 0xf36e5
+ mov AL, strict byte 006h ; b0 06 ; 0xf36e8 floppy.c:922
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf36ea
+ out DX, AL ; ee ; 0xf36ed
+ xor al, al ; 30 c0 ; 0xf36ee floppy.c:923
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf36f0
+ out DX, AL ; ee ; 0xf36f3
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf36f4 floppy.c:924
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf36f7
+ out DX, AL ; ee ; 0xf36fa
+ mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf36fb floppy.c:925
+ out DX, AL ; ee ; 0xf36fe
+ xor al, al ; 30 c0 ; 0xf36ff floppy.c:926
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3701
+ out DX, AL ; ee ; 0xf3704
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf3705 floppy.c:927
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3708
+ out DX, AL ; ee ; 0xf370b
+ mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf370c floppy.c:928
+ out DX, AL ; ee ; 0xf370f
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3710 floppy.c:931
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3712
+ out DX, AL ; ee ; 0xf3715
+ mov al, ch ; 88 e8 ; 0xf3716 floppy.c:933
+ mov dx, 00081h ; ba 81 00 ; 0xf3718
+ out DX, AL ; ee ; 0xf371b
+ mov AL, strict byte 002h ; b0 02 ; 0xf371c floppy.c:934
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf371e
+ out DX, AL ; ee ; 0xf3721
+ mov cl, bl ; 88 d9 ; 0xf3722 floppy.c:937
+ xor ch, ch ; 30 ed ; 0xf3724
+ mov ax, cx ; 89 c8 ; 0xf3726
+ call 02effh ; e8 d4 f7 ; 0xf3728
+ mov AL, strict byte 00fh ; b0 0f ; 0xf372b floppy.c:940
+ mov dx, 003f5h ; ba f5 03 ; 0xf372d
+ out DX, AL ; ee ; 0xf3730
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3731 floppy.c:941
+ xor ah, ah ; 30 e4 ; 0xf3734
+ mov dx, ax ; 89 c2 ; 0xf3736
+ sal dx, 1 ; d1 e2 ; 0xf3738
+ sal dx, 1 ; d1 e2 ; 0xf373a
+ mov al, bl ; 88 d8 ; 0xf373c
+ or dx, ax ; 09 c2 ; 0xf373e
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf3740
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3743
+ mov dx, 003f5h ; ba f5 03 ; 0xf3746
+ out DX, AL ; ee ; 0xf3749
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf374a floppy.c:942
+ out DX, AL ; ee ; 0xf374d
+ mov AL, strict byte 04dh ; b0 4d ; 0xf374e floppy.c:945
+ out DX, AL ; ee ; 0xf3750
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3751 floppy.c:946
+ out DX, AL ; ee ; 0xf3754
+ mov AL, strict byte 002h ; b0 02 ; 0xf3755 floppy.c:947
+ out DX, AL ; ee ; 0xf3757
+ mov al, bh ; 88 f8 ; 0xf3758 floppy.c:948
+ out DX, AL ; ee ; 0xf375a
+ xor al, bh ; 30 f8 ; 0xf375b floppy.c:949
+ out DX, AL ; ee ; 0xf375d
+ mov AL, strict byte 0f6h ; b0 f6 ; 0xf375e floppy.c:950
+ out DX, AL ; ee ; 0xf3760
+ call 02e88h ; e8 24 f7 ; 0xf3761 floppy.c:978
+ test al, al ; 84 c0 ; 0xf3764 floppy.c:979
+ jne short 03770h ; 75 08 ; 0xf3766
+ mov ax, cx ; 89 c8 ; 0xf3768 floppy.c:980
+ call 02ec0h ; e8 53 f7 ; 0xf376a
+ jmp near 03666h ; e9 f6 fe ; 0xf376d floppy.c:78
+ mov dx, 003f4h ; ba f4 03 ; 0xf3770 floppy.c:989
+ in AL, DX ; ec ; 0xf3773
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3774
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3776 floppy.c:990
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3778
+ je short 0378eh ; 74 12 ; 0xf377a
+ mov ax, 002bdh ; b8 bd 02 ; 0xf377c floppy.c:991
+ push ax ; 50 ; 0xf377f
+ mov ax, 002f0h ; b8 f0 02 ; 0xf3780
+ push ax ; 50 ; 0xf3783
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf3784
+ push ax ; 50 ; 0xf3787
+ call 0195ch ; e8 d1 e1 ; 0xf3788
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf378b
+ xor cx, cx ; 31 c9 ; 0xf378e floppy.c:994
+ jmp short 03797h ; eb 05 ; 0xf3790
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3792
+ jnl short 037adh ; 7d 16 ; 0xf3795
+ mov dx, 003f5h ; ba f5 03 ; 0xf3797 floppy.c:995
+ in AL, DX ; ec ; 0xf379a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf379b
+ mov si, cx ; 89 ce ; 0xf379d
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf379f
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf37a2 floppy.c:53
+ mov es, dx ; 8e c2 ; 0xf37a5
+ mov byte [es:si], al ; 26 88 04 ; 0xf37a7
+ inc cx ; 41 ; 0xf37aa floppy.c:995
+ jmp short 03792h ; eb e5 ; 0xf37ab
+ mov si, strict word 00042h ; be 42 00 ; 0xf37ad floppy.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf37b0
+ mov es, ax ; 8e c0 ; 0xf37b3
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf37b5
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf37b8 floppy.c:49
+ je short 037dbh ; 74 1f ; 0xf37ba
+ mov si, strict word 00043h ; be 43 00 ; 0xf37bc floppy.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf37bf
+ test AL, strict byte 002h ; a8 02 ; 0xf37c2 floppy.c:49
+ je short 037c9h ; 74 03 ; 0xf37c4
+ jmp near 035ech ; e9 23 fe ; 0xf37c6
+ mov ax, 002bdh ; b8 bd 02 ; 0xf37c9 floppy.c:1006
+ push ax ; 50 ; 0xf37cc
+ mov ax, 00304h ; b8 04 03 ; 0xf37cd
+ push ax ; 50 ; 0xf37d0
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf37d1
+ push ax ; 50 ; 0xf37d4
+ call 0195ch ; e8 84 e1 ; 0xf37d5
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf37d8
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf37db floppy.c:1010
+ mov si, strict word 00041h ; be 41 00 ; 0xf37df floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf37e2
+ mov es, ax ; 8e c0 ; 0xf37e5
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf37e7
+ mov al, bl ; 88 d8 ; 0xf37eb floppy.c:1012
+ xor ah, ah ; 30 e4 ; 0xf37ed
+ xor dx, dx ; 31 d2 ; 0xf37ef
+ call 02e39h ; e8 45 f6 ; 0xf37f1
+ jmp near 034bch ; e9 c5 fc ; 0xf37f4
+ mov bl, dl ; 88 d3 ; 0xf37f7 floppy.c:1019
+ cmp dl, 001h ; 80 fa 01 ; 0xf37f9 floppy.c:1021
+ jbe short 03824h ; 76 26 ; 0xf37fc
+ mov word [bp+016h], strict word 00000h ; c7 46 16 00 00 ; 0xf37fe floppy.c:1022
+ mov word [bp+010h], strict word 00000h ; c7 46 10 00 00 ; 0xf3803 floppy.c:1023
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf3808 floppy.c:1024
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf380d floppy.c:1025
+ mov word [bp+006h], strict word 00000h ; c7 46 06 00 00 ; 0xf3812 floppy.c:1026
+ mov word [bp+008h], strict word 00000h ; c7 46 08 00 00 ; 0xf3817 floppy.c:1027
+ mov dl, bh ; 88 fa ; 0xf381c floppy.c:1028
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf381e
+ jmp near 03949h ; e9 25 01 ; 0xf3821
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3824 floppy.c:1029
+ call 01664h ; e8 3a de ; 0xf3827
+ mov dl, al ; 88 c2 ; 0xf382a
+ xor bh, bh ; 30 ff ; 0xf382c floppy.c:1035
+ test AL, strict byte 0f0h ; a8 f0 ; 0xf382e floppy.c:1036
+ je short 03834h ; 74 02 ; 0xf3830
+ mov BH, strict byte 001h ; b7 01 ; 0xf3832 floppy.c:1037
+ test dl, 00fh ; f6 c2 0f ; 0xf3834 floppy.c:1038
+ je short 0383bh ; 74 02 ; 0xf3837
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf3839 floppy.c:1039
+ test bl, bl ; 84 db ; 0xf383b floppy.c:1041
+ jne short 03845h ; 75 06 ; 0xf383d
+ mov CL, strict byte 004h ; b1 04 ; 0xf383f floppy.c:1042
+ shr dl, CL ; d2 ea ; 0xf3841
+ jmp short 03848h ; eb 03 ; 0xf3843 floppy.c:1043
+ and dl, 00fh ; 80 e2 0f ; 0xf3845 floppy.c:1044
+ mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf3848 floppy.c:1047
+ mov al, dl ; 88 d0 ; 0xf384c
+ xor ah, ah ; 30 e4 ; 0xf384e
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf3850
+ xor al, dl ; 30 d0 ; 0xf3853 floppy.c:1048
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3855
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf3858 floppy.c:1050
+ mov cl, bh ; 88 f9 ; 0xf385b
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf385d
+ mov ax, cx ; 89 c8 ; 0xf3860 floppy.c:1051
+ xor ah, ch ; 30 ec ; 0xf3862
+ or ah, 001h ; 80 cc 01 ; 0xf3864
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf3867
+ cmp dl, 003h ; 80 fa 03 ; 0xf386a floppy.c:1053
+ jc short 03884h ; 72 15 ; 0xf386d
+ jbe short 038abh ; 76 3a ; 0xf386f
+ cmp dl, 005h ; 80 fa 05 ; 0xf3871
+ jc short 038b2h ; 72 3c ; 0xf3874
+ jbe short 038b9h ; 76 41 ; 0xf3876
+ cmp dl, 00fh ; 80 fa 0f ; 0xf3878
+ je short 038c7h ; 74 4a ; 0xf387b
+ cmp dl, 00eh ; 80 fa 0e ; 0xf387d
+ je short 038c0h ; 74 3e ; 0xf3880
+ jmp short 038ceh ; eb 4a ; 0xf3882
+ cmp dl, 002h ; 80 fa 02 ; 0xf3884
+ je short 038a4h ; 74 1b ; 0xf3887
+ cmp dl, 001h ; 80 fa 01 ; 0xf3889
+ je short 0389dh ; 74 0f ; 0xf388c
+ test dl, dl ; 84 d2 ; 0xf388e
+ jne short 038ceh ; 75 3c ; 0xf3890
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf3892 floppy.c:1055
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf3897 floppy.c:1056
+ jmp short 038e0h ; eb 43 ; 0xf389b floppy.c:1057
+ mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf389d floppy.c:1060
+ jmp short 038e0h ; eb 3c ; 0xf38a2 floppy.c:1061
+ mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf38a4 floppy.c:1064
+ jmp short 038e0h ; eb 35 ; 0xf38a9 floppy.c:1065
+ mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf38ab floppy.c:1068
+ jmp short 038e0h ; eb 2e ; 0xf38b0 floppy.c:1069
+ mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf38b2 floppy.c:1072
+ jmp short 038e0h ; eb 27 ; 0xf38b7 floppy.c:1073
+ mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf38b9 floppy.c:1076
+ jmp short 038e0h ; eb 20 ; 0xf38be floppy.c:1077
+ mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf38c0 floppy.c:1080
+ jmp short 038e0h ; eb 19 ; 0xf38c5 floppy.c:1081
+ mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf38c7 floppy.c:1084
+ jmp short 038e0h ; eb 12 ; 0xf38cc floppy.c:1085
+ mov ax, 002bdh ; b8 bd 02 ; 0xf38ce floppy.c:1089
+ push ax ; 50 ; 0xf38d1
+ mov ax, 00315h ; b8 15 03 ; 0xf38d2
+ push ax ; 50 ; 0xf38d5
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf38d6
+ push ax ; 50 ; 0xf38d9
+ call 0195ch ; e8 7f e0 ; 0xf38da
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf38dd
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf38e0 floppy.c:1093
+ mov al, dl ; 88 d0 ; 0xf38e5 floppy.c:1094
+ xor ah, ah ; 30 e4 ; 0xf38e7
+ call 03b85h ; e8 99 02 ; 0xf38e9
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf38ec
+ jmp near 034bch ; e9 ca fb ; 0xf38ef
+ mov bl, dl ; 88 d3 ; 0xf38f2 floppy.c:1101
+ cmp dl, 001h ; 80 fa 01 ; 0xf38f4 floppy.c:1102
+ jbe short 038feh ; 76 05 ; 0xf38f7
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf38f9 floppy.c:1103
+ jmp short 03949h ; eb 4b ; 0xf38fc
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf38fe floppy.c:1109
+ call 01664h ; e8 60 dd ; 0xf3901
+ test bl, bl ; 84 db ; 0xf3904 floppy.c:1110
+ jne short 03910h ; 75 08 ; 0xf3906
+ mov CL, strict byte 004h ; b1 04 ; 0xf3908 floppy.c:1111
+ mov dl, al ; 88 c2 ; 0xf390a
+ shr dl, CL ; d2 ea ; 0xf390c
+ jmp short 03915h ; eb 05 ; 0xf390e floppy.c:1112
+ mov dl, al ; 88 c2 ; 0xf3910 floppy.c:1113
+ and dl, 00fh ; 80 e2 0f ; 0xf3912
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3915 floppy.c:1114
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3919
+ xor ah, ah ; 30 e4 ; 0xf391c
+ test dl, dl ; 84 d2 ; 0xf391e floppy.c:1115
+ je short 0392fh ; 74 0d ; 0xf3920
+ cmp dl, 001h ; 80 fa 01 ; 0xf3922 floppy.c:1116
+ jbe short 0392ch ; 76 05 ; 0xf3925
+ or ah, 002h ; 80 cc 02 ; 0xf3927 floppy.c:1118
+ jmp short 0392fh ; eb 03 ; 0xf392a floppy.c:1119
+ or ah, 001h ; 80 cc 01 ; 0xf392c floppy.c:1120
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf392f
+ jmp near 03244h ; e9 0f f9 ; 0xf3932 floppy.c:1123
+ cmp dl, 001h ; 80 fa 01 ; 0xf3935 floppy.c:1128
+ jbe short 0394fh ; 76 15 ; 0xf3938
+ mov word [bp+016h], si ; 89 76 16 ; 0xf393a floppy.c:1129
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf393d floppy.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3940
+ mov es, dx ; 8e c2 ; 0xf3943
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3945
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xf3949
+ jmp near 03244h ; e9 f5 f8 ; 0xf394c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf394f floppy.c:1135
+ xor ah, ah ; 30 e4 ; 0xf3952
+ or ah, 006h ; 80 cc 06 ; 0xf3954
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3957
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf395a floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf395d
+ mov es, ax ; 8e c0 ; 0xf3960
+ mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf3962
+ jmp near 03a4ah ; e9 e1 00 ; 0xf3966
+ mov bl, dl ; 88 d3 ; 0xf3969 floppy.c:1144
+ mov cl, byte [bp+016h] ; 8a 4e 16 ; 0xf396b floppy.c:1152
+ cmp dl, 001h ; 80 fa 01 ; 0xf396e floppy.c:1156
+ jnbe short 0393ah ; 77 c7 ; 0xf3971
+ mov al, bl ; 88 d8 ; 0xf3973 floppy.c:1164
+ xor ah, ah ; 30 e4 ; 0xf3975
+ call 0313ah ; e8 c0 f7 ; 0xf3977
+ test ax, ax ; 85 c0 ; 0xf397a
+ jne short 03981h ; 75 03 ; 0xf397c
+ jmp near 03666h ; e9 e5 fc ; 0xf397e
+ test bl, bl ; 84 db ; 0xf3981 floppy.c:1172
+ je short 0398ah ; 74 05 ; 0xf3983
+ mov bx, 00091h ; bb 91 00 ; 0xf3985
+ jmp short 0398dh ; eb 03 ; 0xf3988
+ mov bx, 00090h ; bb 90 00 ; 0xf398a
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf398d
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3990 floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf3993
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf3995
+ and bl, 00fh ; 80 e3 0f ; 0xf3998 floppy.c:1176
+ cmp cl, 002h ; 80 f9 02 ; 0xf399b floppy.c:1178
+ jc short 039afh ; 72 0f ; 0xf399e
+ jbe short 039bch ; 76 1a ; 0xf39a0
+ cmp cl, 004h ; 80 f9 04 ; 0xf39a2
+ je short 039b7h ; 74 10 ; 0xf39a5
+ cmp cl, 003h ; 80 f9 03 ; 0xf39a7
+ je short 039c1h ; 74 15 ; 0xf39aa
+ jmp near 031ceh ; e9 1f f8 ; 0xf39ac
+ cmp cl, 001h ; 80 f9 01 ; 0xf39af
+ je short 039b7h ; 74 03 ; 0xf39b2
+ jmp near 031ceh ; e9 17 f8 ; 0xf39b4
+ or bl, 090h ; 80 cb 90 ; 0xf39b7 floppy.c:1181
+ jmp short 039c4h ; eb 08 ; 0xf39ba floppy.c:1182
+ or bl, 070h ; 80 cb 70 ; 0xf39bc floppy.c:1185
+ jmp short 039c4h ; eb 03 ; 0xf39bf floppy.c:1186
+ or bl, 010h ; 80 cb 10 ; 0xf39c1 floppy.c:1189
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf39c4 floppy.c:53
+ mov es, ax ; 8e c0 ; 0xf39c7
+ mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf39c9
+ mov byte [es:si], bl ; 26 88 1c ; 0xf39cc
+ xor al, al ; 30 c0 ; 0xf39cf floppy.c:1208
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf39d1
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf39d4 floppy.c:53
+ mov byte [es:bx], al ; 26 88 07 ; 0xf39d7
+ jmp near 034bch ; e9 df fa ; 0xf39da
+ mov bl, dl ; 88 d3 ; 0xf39dd floppy.c:1218
+ mov cl, byte [bp+014h] ; 8a 4e 14 ; 0xf39df floppy.c:1220
+ mov bh, cl ; 88 cf ; 0xf39e2 floppy.c:1221
+ and bh, 03fh ; 80 e7 3f ; 0xf39e4
+ mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf39e7 floppy.c:1222
+ mov byte [bp-009h], dh ; 88 76 f7 ; 0xf39ea
+ mov CL, strict byte 006h ; b1 06 ; 0xf39ed
+ mov di, word [bp-00ah] ; 8b 7e f6 ; 0xf39ef
+ sar di, CL ; d3 ff ; 0xf39f2
+ mov cx, di ; 89 f9 ; 0xf39f4
+ mov byte [bp-009h], cl ; 88 4e f7 ; 0xf39f6
+ mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf39f9
+ mov cl, byte [bp+015h] ; 8a 4e 15 ; 0xf39fc
+ xor ch, ch ; 30 ed ; 0xf39ff
+ add cx, word [bp-00ah] ; 03 4e f6 ; 0xf3a01
+ mov byte [bp-004h], cl ; 88 4e fc ; 0xf3a04
+ cmp dl, 001h ; 80 fa 01 ; 0xf3a07 floppy.c:1227
+ jbe short 03a0fh ; 76 03 ; 0xf3a0a
+ jmp near 0393ah ; e9 2b ff ; 0xf3a0c
+ mov al, bl ; 88 d8 ; 0xf3a0f floppy.c:1235
+ xor ah, ah ; 30 e4 ; 0xf3a11
+ call 0313ah ; e8 24 f7 ; 0xf3a13
+ test ax, ax ; 85 c0 ; 0xf3a16
+ jne short 03a1dh ; 75 03 ; 0xf3a18
+ jmp near 03666h ; e9 49 fc ; 0xf3a1a
+ mov cl, bl ; 88 d9 ; 0xf3a1d floppy.c:1243
+ xor ch, ch ; 30 ed ; 0xf3a1f
+ mov ax, cx ; 89 c8 ; 0xf3a21
+ call 02f74h ; e8 4e f5 ; 0xf3a23
+ test ax, ax ; 85 c0 ; 0xf3a26
+ jne short 03a51h ; 75 27 ; 0xf3a28
+ mov ax, cx ; 89 c8 ; 0xf3a2a floppy.c:1244
+ call 03053h ; e8 24 f6 ; 0xf3a2c
+ test ax, ax ; 85 c0 ; 0xf3a2f
+ jne short 03a51h ; 75 1e ; 0xf3a31
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a33 floppy.c:1245
+ xor ah, ah ; 30 e4 ; 0xf3a36
+ or ah, 00ch ; 80 cc 0c ; 0xf3a38
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3a3b
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a3e floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a41
+ mov es, ax ; 8e c0 ; 0xf3a44
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3a46
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3a4a
+ jmp near 03244h ; e9 f3 f7 ; 0xf3a4e
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3a51 floppy.c:1253
+ call 01664h ; e8 0d dc ; 0xf3a54
+ test bl, bl ; 84 db ; 0xf3a57 floppy.c:1254
+ jne short 03a63h ; 75 08 ; 0xf3a59
+ mov CL, strict byte 004h ; b1 04 ; 0xf3a5b floppy.c:1255
+ mov dl, al ; 88 c2 ; 0xf3a5d
+ shr dl, CL ; d2 ea ; 0xf3a5f
+ jmp short 03a68h ; eb 05 ; 0xf3a61 floppy.c:1256
+ mov dl, al ; 88 c2 ; 0xf3a63 floppy.c:1257
+ and dl, 00fh ; 80 e2 0f ; 0xf3a65
+ test bl, bl ; 84 db ; 0xf3a68 floppy.c:1260
+ je short 03a71h ; 74 05 ; 0xf3a6a
+ mov si, 00091h ; be 91 00 ; 0xf3a6c
+ jmp short 03a74h ; eb 03 ; 0xf3a6f
+ mov si, 00090h ; be 90 00 ; 0xf3a71
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf3a74
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a77 floppy.c:48
+ mov es, ax ; 8e c0 ; 0xf3a7a
+ mov bl, byte [es:si] ; 26 8a 1c ; 0xf3a7c
+ and bl, 00fh ; 80 e3 0f ; 0xf3a7f floppy.c:49
+ cmp dl, 003h ; 80 fa 03 ; 0xf3a82 floppy.c:1266
+ jc short 03aa2h ; 72 1b ; 0xf3a85
+ mov al, bl ; 88 d8 ; 0xf3a87
+ or AL, strict byte 090h ; 0c 90 ; 0xf3a89
+ cmp dl, 003h ; 80 fa 03 ; 0xf3a8b
+ jbe short 03adeh ; 76 4e ; 0xf3a8e
+ mov ah, bl ; 88 dc ; 0xf3a90
+ or ah, 010h ; 80 cc 10 ; 0xf3a92
+ cmp dl, 005h ; 80 fa 05 ; 0xf3a95
+ je short 03adch ; 74 42 ; 0xf3a98
+ cmp dl, 004h ; 80 fa 04 ; 0xf3a9a
+ je short 03aebh ; 74 4c ; 0xf3a9d
+ jmp near 03b23h ; e9 81 00 ; 0xf3a9f
+ cmp dl, 002h ; 80 fa 02 ; 0xf3aa2
+ je short 03abch ; 74 15 ; 0xf3aa5
+ cmp dl, 001h ; 80 fa 01 ; 0xf3aa7
+ jne short 03aefh ; 75 43 ; 0xf3aaa
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3aac floppy.c:1268
+ jne short 03aefh ; 75 3d ; 0xf3ab0
+ cmp bh, 009h ; 80 ff 09 ; 0xf3ab2
+ jne short 03b05h ; 75 4e ; 0xf3ab5
+ or bl, 090h ; 80 cb 90 ; 0xf3ab7 floppy.c:1269
+ jmp short 03b05h ; eb 49 ; 0xf3aba floppy.c:1271
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3abc floppy.c:1273
+ jne short 03acch ; 75 0a ; 0xf3ac0
+ cmp bh, 009h ; 80 ff 09 ; 0xf3ac2
+ jne short 03acch ; 75 05 ; 0xf3ac5
+ or bl, 070h ; 80 cb 70 ; 0xf3ac7 floppy.c:1274
+ jmp short 03b05h ; eb 39 ; 0xf3aca floppy.c:1275
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3acc
+ jne short 03b23h ; 75 51 ; 0xf3ad0
+ cmp bh, 00fh ; 80 ff 0f ; 0xf3ad2
+ jne short 03b23h ; 75 4c ; 0xf3ad5
+ or bl, 010h ; 80 cb 10 ; 0xf3ad7 floppy.c:1276
+ jmp short 03b23h ; eb 47 ; 0xf3ada floppy.c:1278
+ jmp short 03b07h ; eb 29 ; 0xf3adc
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3ade floppy.c:1280
+ jne short 03b23h ; 75 3f ; 0xf3ae2
+ cmp bh, 009h ; 80 ff 09 ; 0xf3ae4
+ je short 03aedh ; 74 04 ; 0xf3ae7
+ jmp short 03b23h ; eb 38 ; 0xf3ae9
+ jmp short 03af1h ; eb 04 ; 0xf3aeb
+ mov bl, al ; 88 c3 ; 0xf3aed floppy.c:1281
+ jmp short 03b23h ; eb 32 ; 0xf3aef floppy.c:1283
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3af1 floppy.c:1285
+ jne short 03b23h ; 75 2c ; 0xf3af5
+ cmp bh, 009h ; 80 ff 09 ; 0xf3af7 floppy.c:1286
+ jne short 03afeh ; 75 02 ; 0xf3afa
+ jmp short 03aedh ; eb ef ; 0xf3afc
+ cmp bh, 012h ; 80 ff 12 ; 0xf3afe floppy.c:1287
+ jne short 03b23h ; 75 20 ; 0xf3b01
+ mov bl, ah ; 88 e3 ; 0xf3b03 floppy.c:1289
+ jmp short 03b23h ; eb 1c ; 0xf3b05 floppy.c:1292
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b07 floppy.c:1294
+ jne short 03b23h ; 75 16 ; 0xf3b0b
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b0d floppy.c:1295
+ jne short 03b14h ; 75 02 ; 0xf3b10
+ jmp short 03aedh ; eb d9 ; 0xf3b12
+ cmp bh, 012h ; 80 ff 12 ; 0xf3b14 floppy.c:1296
+ jne short 03b1bh ; 75 02 ; 0xf3b17
+ jmp short 03b03h ; eb e8 ; 0xf3b19
+ cmp bh, 024h ; 80 ff 24 ; 0xf3b1b floppy.c:1298
+ jne short 03b23h ; 75 03 ; 0xf3b1e
+ or bl, 0d0h ; 80 cb d0 ; 0xf3b20 floppy.c:1300
+ mov al, bl ; 88 d8 ; 0xf3b23 floppy.c:1309
+ xor ah, ah ; 30 e4 ; 0xf3b25
+ mov CL, strict byte 004h ; b1 04 ; 0xf3b27
+ sar ax, CL ; d3 f8 ; 0xf3b29
+ test AL, strict byte 001h ; a8 01 ; 0xf3b2b
+ jne short 03b32h ; 75 03 ; 0xf3b2d
+ jmp near 03a33h ; e9 01 ff ; 0xf3b2f
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b32 floppy.c:53
+ mov es, ax ; 8e c0 ; 0xf3b35
+ mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf3b37
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3b3a
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3b3d floppy.c:1322
+ mov al, dl ; 88 d0 ; 0xf3b42 floppy.c:1323
+ xor ah, ah ; 30 e4 ; 0xf3b44
+ call 03b85h ; e8 3c 00 ; 0xf3b46
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3b49
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3b4c floppy.c:1326
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3b50 floppy.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b53
+ mov es, ax ; 8e c0 ; 0xf3b56
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3b58
+ jmp near 034bch ; e9 5d f9 ; 0xf3b5c
+ mov bx, 00ddch ; bb dc 0d ; 0xf3b5f floppy.c:1332
+ mov cx, ds ; 8c d9 ; 0xf3b62
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3b64
+ call 01919h ; e8 af dd ; 0xf3b67
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3b6a
+ xor ah, ah ; 30 e4 ; 0xf3b6d
+ push ax ; 50 ; 0xf3b6f
+ mov ax, 002bdh ; b8 bd 02 ; 0xf3b70
+ push ax ; 50 ; 0xf3b73
+ mov ax, 0032ah ; b8 2a 03 ; 0xf3b74
+ push ax ; 50 ; 0xf3b77
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3b78
+ push ax ; 50 ; 0xf3b7b
+ call 0195ch ; e8 dd dd ; 0xf3b7c
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3b7f
+ jmp near 031ceh ; e9 49 f6 ; 0xf3b82 floppy.c:78
+ ; disGetNextSymbol 0xf3b85 LB 0x7363 -> off=0x0 cb=0000000000000032 uValue=00000000000f2585 'get_floppy_dpt'
+get_floppy_dpt: ; 0xf3b85 LB 0x32
+ push bx ; 53 ; 0xf3b85 floppyt.c:104
+ push dx ; 52 ; 0xf3b86
+ push bp ; 55 ; 0xf3b87
+ mov bp, sp ; 89 e5 ; 0xf3b88
+ mov dl, al ; 88 c2 ; 0xf3b8a
+ xor ax, ax ; 31 c0 ; 0xf3b8c floppyt.c:108
+ jmp short 03b96h ; eb 06 ; 0xf3b8e
+ inc ax ; 40 ; 0xf3b90 floppyt.c:110
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3b91
+ jnc short 03bb0h ; 73 1a ; 0xf3b94
+ mov bx, ax ; 89 c3 ; 0xf3b96
+ sal bx, 1 ; d1 e3 ; 0xf3b98
+ cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3b9a
+ jne short 03b90h ; 75 f0 ; 0xf3b9e
+ mov al, byte [word bx+0005ch] ; 8a 87 5c 00 ; 0xf3ba0
+ xor ah, ah ; 30 e4 ; 0xf3ba4
+ mov bx, strict word 0000dh ; bb 0d 00 ; 0xf3ba6
+ imul bx ; f7 eb ; 0xf3ba9
+ add ax, strict word 00000h ; 05 00 00 ; 0xf3bab
+ jmp short 03bb3h ; eb 03 ; 0xf3bae
+ mov ax, strict word 00041h ; b8 41 00 ; 0xf3bb0 floppyt.c:113
+ pop bp ; 5d ; 0xf3bb3 floppyt.c:114
+ pop dx ; 5a ; 0xf3bb4
+ pop bx ; 5b ; 0xf3bb5
+ retn ; c3 ; 0xf3bb6
+ ; disGetNextSymbol 0xf3bb7 LB 0x7331 -> off=0x0 cb=0000000000000007 uValue=00000000000f25b7 'dummy_soft_reset'
+dummy_soft_reset: ; 0xf3bb7 LB 0x7
+ push bp ; 55 ; 0xf3bb7 eltorito.c:137
+ mov bp, sp ; 89 e5 ; 0xf3bb8
+ xor ax, ax ; 31 c0 ; 0xf3bba eltorito.c:140
+ pop bp ; 5d ; 0xf3bbc
+ retn ; c3 ; 0xf3bbd
+ ; disGetNextSymbol 0xf3bbe LB 0x732a -> off=0x0 cb=000000000000003b uValue=00000000000f25be 'cdemu_bounce_buf_alloc'
+cdemu_bounce_buf_alloc: ; 0xf3bbe LB 0x3b
+ push bx ; 53 ; 0xf3bbe eltorito.c:169
+ push cx ; 51 ; 0xf3bbf
+ push dx ; 52 ; 0xf3bc0
+ push di ; 57 ; 0xf3bc1
+ push bp ; 55 ; 0xf3bc2
+ mov bp, sp ; 89 e5 ; 0xf3bc3
+ mov di, 00413h ; bf 13 04 ; 0xf3bc5 eltorito.c:58
+ xor ax, ax ; 31 c0 ; 0xf3bc8
+ mov es, ax ; 8e c0 ; 0xf3bca
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf3bcc
+ test ax, ax ; 85 c0 ; 0xf3bcf eltorito.c:175
+ je short 03bf3h ; 74 20 ; 0xf3bd1
+ dec ax ; 48 ; 0xf3bd3 eltorito.c:176
+ dec ax ; 48 ; 0xf3bd4
+ mov bx, ax ; 89 c3 ; 0xf3bd5
+ xor dx, dx ; 31 d2 ; 0xf3bd7 eltorito.c:179
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf3bd9
+ sal ax, 1 ; d1 e0 ; 0xf3bdc
+ rcl dx, 1 ; d1 d2 ; 0xf3bde
+ loop 03bdch ; e2 fa ; 0xf3be0
+ mov di, dx ; 89 d7 ; 0xf3be2
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf3be4
+ shr di, 1 ; d1 ef ; 0xf3be7
+ rcr ax, 1 ; d1 d8 ; 0xf3be9
+ loop 03be7h ; e2 fa ; 0xf3beb
+ mov di, 00413h ; bf 13 04 ; 0xf3bed eltorito.c:63
+ mov word [es:di], bx ; 26 89 1d ; 0xf3bf0
+ pop bp ; 5d ; 0xf3bf3 eltorito.c:184
+ pop di ; 5f ; 0xf3bf4
+ pop dx ; 5a ; 0xf3bf5
+ pop cx ; 59 ; 0xf3bf6
+ pop bx ; 5b ; 0xf3bf7
+ retn ; c3 ; 0xf3bf8
+ ; disGetNextSymbol 0xf3bf9 LB 0x72ef -> off=0x0 cb=0000000000000017 uValue=00000000000f25f9 'cdemu_init'
+cdemu_init: ; 0xf3bf9 LB 0x17
+ push bp ; 55 ; 0xf3bf9 eltorito.c:186
+ mov bp, sp ; 89 e5 ; 0xf3bfa
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3bfc eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3bff
+ mov es, ax ; 8e c0 ; 0xf3c02
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3c04
+ mov bx, 00316h ; bb 16 03 ; 0xf3c07 eltorito.c:190
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3c0a eltorito.c:193
+ pop bp ; 5d ; 0xf3c0e eltorito.c:194
+ retn ; c3 ; 0xf3c0f
+ ; disGetNextSymbol 0xf3c10 LB 0x72d8 -> off=0x0 cb=0000000000000016 uValue=00000000000f2610 'cdemu_isactive'
+cdemu_isactive: ; 0xf3c10 LB 0x16
+ push bp ; 55 ; 0xf3c10 eltorito.c:196
+ mov bp, sp ; 89 e5 ; 0xf3c11
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c13 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c16
+ mov es, ax ; 8e c0 ; 0xf3c19
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3c1b
+ mov bx, 00316h ; bb 16 03 ; 0xf3c1e eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3c21
+ pop bp ; 5d ; 0xf3c24 eltorito.c:202
+ retn ; c3 ; 0xf3c25
+ ; disGetNextSymbol 0xf3c26 LB 0x72c2 -> off=0x0 cb=0000000000000016 uValue=00000000000f2626 'cdemu_emulated_drive'
+cdemu_emulated_drive: ; 0xf3c26 LB 0x16
+ push bp ; 55 ; 0xf3c26 eltorito.c:204
+ mov bp, sp ; 89 e5 ; 0xf3c27
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c29 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c2c
+ mov es, ax ; 8e c0 ; 0xf3c2f
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3c31
+ mov bx, 00318h ; bb 18 03 ; 0xf3c34 eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3c37
+ pop bp ; 5d ; 0xf3c3a eltorito.c:210
+ retn ; c3 ; 0xf3c3b
+ ; disGetNextSymbol 0xf3c3c LB 0x72ac -> off=0x0 cb=0000000000000180 uValue=00000000000f263c 'int13_eltorito'
+int13_eltorito: ; 0xf3c3c LB 0x180
+ push bp ; 55 ; 0xf3c3c eltorito.c:216
+ mov bp, sp ; 89 e5 ; 0xf3c3d
+ push si ; 56 ; 0xf3c3f
+ push di ; 57 ; 0xf3c40
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c41 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c44
+ mov es, ax ; 8e c0 ; 0xf3c47
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf3c49
+ mov bx, 00316h ; bb 16 03 ; 0xf3c4c eltorito.c:222
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3c4f eltorito.c:228
+ xor ah, ah ; 30 e4 ; 0xf3c52
+ cmp ax, strict word 0004bh ; 3d 4b 00 ; 0xf3c54
+ jc short 03c63h ; 72 0a ; 0xf3c57
+ jbe short 03c8eh ; 76 33 ; 0xf3c59
+ cmp ax, strict word 0004dh ; 3d 4d 00 ; 0xf3c5b
+ jbe short 03c68h ; 76 08 ; 0xf3c5e
+ jmp near 03d80h ; e9 1d 01 ; 0xf3c60
+ cmp ax, strict word 0004ah ; 3d 4a 00 ; 0xf3c63
+ jne short 03c8bh ; 75 23 ; 0xf3c66
+ mov bx, 00ddch ; bb dc 0d ; 0xf3c68 eltorito.c:234
+ mov cx, ds ; 8c d9 ; 0xf3c6b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3c6d
+ call 01919h ; e8 a6 dc ; 0xf3c70
+ push word [bp+016h] ; ff 76 16 ; 0xf3c73
+ mov ax, 00344h ; b8 44 03 ; 0xf3c76
+ push ax ; 50 ; 0xf3c79
+ mov ax, 00353h ; b8 53 03 ; 0xf3c7a
+ push ax ; 50 ; 0xf3c7d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3c7e
+ push ax ; 50 ; 0xf3c81
+ call 0195ch ; e8 d7 dc ; 0xf3c82
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3c85
+ jmp near 03d9bh ; e9 10 01 ; 0xf3c88 eltorito.c:235
+ jmp near 03d80h ; e9 f2 00 ; 0xf3c8b
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf3c8e eltorito.c:51
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c91
+ mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3c94
+ inc si ; 46 ; 0xf3c98 eltorito.c:242
+ mov ax, es ; 8c c0 ; 0xf3c99 eltorito.c:51
+ mov es, di ; 8e c7 ; 0xf3c9b
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3c9d
+ mov es, ax ; 8e c0 ; 0xf3ca1 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3ca3
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3ca6 eltorito.c:243
+ inc si ; 46 ; 0xf3ca9
+ inc si ; 46 ; 0xf3caa
+ mov es, di ; 8e c7 ; 0xf3cab eltorito.c:51
+ mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3cad
+ mov es, ax ; 8e c0 ; 0xf3cb1 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3cb3
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cb6 eltorito.c:244
+ add si, strict byte 00003h ; 83 c6 03 ; 0xf3cb9
+ mov es, di ; 8e c7 ; 0xf3cbc eltorito.c:51
+ mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3cbe
+ mov es, ax ; 8e c0 ; 0xf3cc2 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3cc4
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cc7 eltorito.c:245
+ add si, strict byte 00004h ; 83 c6 04 ; 0xf3cca
+ mov es, di ; 8e c7 ; 0xf3ccd eltorito.c:71
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3ccf
+ mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3cd3
+ mov es, ax ; 8e c0 ; 0xf3cd7 eltorito.c:73
+ mov word [es:si], dx ; 26 89 14 ; 0xf3cd9
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3cdc
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3ce0 eltorito.c:246
+ add si, strict byte 00008h ; 83 c6 08 ; 0xf3ce3
+ mov es, di ; 8e c7 ; 0xf3ce6 eltorito.c:61
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3ce8
+ mov es, ax ; 8e c0 ; 0xf3cec eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3cee
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cf1 eltorito.c:247
+ add si, strict byte 0000ah ; 83 c6 0a ; 0xf3cf4
+ mov es, di ; 8e c7 ; 0xf3cf7 eltorito.c:61
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3cf9
+ mov es, ax ; 8e c0 ; 0xf3cfd eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3cff
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d02 eltorito.c:248
+ add si, strict byte 0000ch ; 83 c6 0c ; 0xf3d05
+ mov es, di ; 8e c7 ; 0xf3d08 eltorito.c:61
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3d0a
+ mov es, ax ; 8e c0 ; 0xf3d0e eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d10
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d13 eltorito.c:249
+ add si, strict byte 0000eh ; 83 c6 0e ; 0xf3d16
+ mov es, di ; 8e c7 ; 0xf3d19 eltorito.c:61
+ mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3d1b
+ mov es, ax ; 8e c0 ; 0xf3d1f eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d21
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d24 eltorito.c:250
+ add si, strict byte 00010h ; 83 c6 10 ; 0xf3d27
+ mov es, di ; 8e c7 ; 0xf3d2a eltorito.c:51
+ mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3d2c
+ mov es, ax ; 8e c0 ; 0xf3d30 eltorito.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d32
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d35 eltorito.c:251
+ add si, strict byte 00011h ; 83 c6 11 ; 0xf3d38
+ mov dx, ax ; 89 c2 ; 0xf3d3b eltorito.c:51
+ mov es, di ; 8e c7 ; 0xf3d3d
+ mov al, byte [es:bx+014h] ; 26 8a 47 14 ; 0xf3d3f
+ mov es, dx ; 8e c2 ; 0xf3d43 eltorito.c:53
+ mov byte [es:si], al ; 26 88 04 ; 0xf3d45
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d48 eltorito.c:252
+ add si, strict byte 00012h ; 83 c6 12 ; 0xf3d4b
+ mov es, di ; 8e c7 ; 0xf3d4e eltorito.c:51
+ mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3d50
+ mov es, dx ; 8e c2 ; 0xf3d54 eltorito.c:53
+ mov byte [es:si], al ; 26 88 04 ; 0xf3d56
+ test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3d59 eltorito.c:255
+ jne short 03d65h ; 75 06 ; 0xf3d5d
+ mov es, di ; 8e c7 ; 0xf3d5f eltorito.c:257
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3d61
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3d65 eltorito.c:260
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3d69
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3d6c
+ mov es, ax ; 8e c0 ; 0xf3d6f
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3d71
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3d75
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3d79
+ pop di ; 5f ; 0xf3d7c
+ pop si ; 5e ; 0xf3d7d
+ pop bp ; 5d ; 0xf3d7e
+ retn ; c3 ; 0xf3d7f
+ mov bx, 00ddch ; bb dc 0d ; 0xf3d80 eltorito.c:264
+ mov cx, ds ; 8c d9 ; 0xf3d83
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3d85
+ call 01919h ; e8 8e db ; 0xf3d88
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3d8b
+ xor ah, ah ; 30 e4 ; 0xf3d8e
+ push ax ; 50 ; 0xf3d90
+ mov ax, 00344h ; b8 44 03 ; 0xf3d91
+ push ax ; 50 ; 0xf3d94
+ mov ax, 0037bh ; b8 7b 03 ; 0xf3d95
+ jmp near 03c7dh ; e9 e2 fe ; 0xf3d98
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3d9b eltorito.c:270
+ xor ah, ah ; 30 e4 ; 0xf3d9e
+ or ah, 001h ; 80 cc 01 ; 0xf3da0
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3da3
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3da6 eltorito.c:271
+ xor ah, ah ; 30 e4 ; 0xf3da9
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3dab eltorito.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3dae
+ mov es, dx ; 8e c2 ; 0xf3db1
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3db3
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3db6 eltorito.c:272
+ jmp short 03d79h ; eb bd ; 0xf3dba eltorito.c:273
+ ; disGetNextSymbol 0xf3dbc LB 0x712c -> off=0x0 cb=0000000000000034 uValue=00000000000f27bc 'device_is_cdrom'
+device_is_cdrom: ; 0xf3dbc LB 0x34
+ push bx ; 53 ; 0xf3dbc eltorito.c:288
+ push dx ; 52 ; 0xf3dbd
+ push bp ; 55 ; 0xf3dbe
+ mov bp, sp ; 89 e5 ; 0xf3dbf
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3dc1 eltorito.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3dc4
+ mov es, dx ; 8e c2 ; 0xf3dc7
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf3dc9
+ cmp AL, strict byte 014h ; 3c 14 ; 0xf3dcc eltorito.c:294
+ jc short 03dd4h ; 72 04 ; 0xf3dce
+ xor ax, ax ; 31 c0 ; 0xf3dd0 eltorito.c:295
+ jmp short 03dech ; eb 18 ; 0xf3dd2
+ xor ah, ah ; 30 e4 ; 0xf3dd4 eltorito.c:300
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3dd6
+ imul dx ; f7 ea ; 0xf3dd9
+ mov es, bx ; 8e c3 ; 0xf3ddb
+ mov bx, ax ; 89 c3 ; 0xf3ddd
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3ddf
+ cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf3de2
+ jne short 03dd0h ; 75 e7 ; 0xf3de7
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3de9 eltorito.c:301
+ pop bp ; 5d ; 0xf3dec eltorito.c:304
+ pop dx ; 5a ; 0xf3ded
+ pop bx ; 5b ; 0xf3dee
+ retn ; c3 ; 0xf3def
+ ; disGetNextSymbol 0xf3df0 LB 0x70f8 -> off=0x0 cb=000000000000008c uValue=00000000000f27f0 'cdrom_read'
+cdrom_read: ; 0xf3df0 LB 0x8c
+ push bp ; 55 ; 0xf3df0 eltorito.c:306
+ mov bp, sp ; 89 e5 ; 0xf3df1
+ push si ; 56 ; 0xf3df3
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf3df4
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf3df7
+ mov ax, bx ; 89 d8 ; 0xf3dfa
+ mov si, cx ; 89 ce ; 0xf3dfc
+ mov cx, dx ; 89 d1 ; 0xf3dfe
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e00 eltorito.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3e03
+ mov es, dx ; 8e c2 ; 0xf3e06
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3e08
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf3e0b eltorito.c:310
+ mov word [bp-010h], strict word 00028h ; c7 46 f0 28 00 ; 0xf3e0e eltorito.c:312
+ mov dx, si ; 89 f2 ; 0xf3e13 eltorito.c:313
+ xchg ah, al ; 86 c4 ; 0xf3e15
+ xchg dh, dl ; 86 d6 ; 0xf3e17
+ xchg dx, ax ; 92 ; 0xf3e19
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3e1a
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3e1d
+ mov ax, cx ; 89 c8 ; 0xf3e20 eltorito.c:314
+ xchg ah, al ; 86 c4 ; 0xf3e22
+ mov word [bp-009h], ax ; 89 46 f7 ; 0xf3e24
+ mov word [es:bx+00eh], cx ; 26 89 4f 0e ; 0xf3e27 eltorito.c:316
+ mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3e2b eltorito.c:317
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3e31 eltorito.c:319
+ xor ah, ah ; 30 e4 ; 0xf3e34
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3e36
+ imul dx ; f7 ea ; 0xf3e39
+ mov bx, ax ; 89 c3 ; 0xf3e3b
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3e3d
+ mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf3e40
+ xor ah, ah ; 30 e4 ; 0xf3e44
+ mov si, ax ; 89 c6 ; 0xf3e46
+ sal si, 1 ; d1 e6 ; 0xf3e48
+ push word [bp+006h] ; ff 76 06 ; 0xf3e4a
+ push word [bp+004h] ; ff 76 04 ; 0xf3e4d
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3e50
+ push ax ; 50 ; 0xf3e53
+ mov ax, cx ; 89 c8 ; 0xf3e54
+ xor dx, dx ; 31 d2 ; 0xf3e56
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf3e58
+ sal ax, 1 ; d1 e0 ; 0xf3e5b
+ rcl dx, 1 ; d1 d2 ; 0xf3e5d
+ loop 03e5bh ; e2 fa ; 0xf3e5f
+ push dx ; 52 ; 0xf3e61
+ push ax ; 50 ; 0xf3e62
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3e63
+ xor ah, ah ; 30 e4 ; 0xf3e66
+ mov cx, ss ; 8c d1 ; 0xf3e68
+ lea bx, [bp-010h] ; 8d 5e f0 ; 0xf3e6a
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3e6d
+ call word [word si+0006ah] ; ff 94 6a 00 ; 0xf3e70
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf3e74 eltorito.c:320
+ pop si ; 5e ; 0xf3e77
+ pop bp ; 5d ; 0xf3e78
+ retn 00004h ; c2 04 00 ; 0xf3e79
+ ; disGetNextSymbol 0xf3e7c LB 0x706c -> off=0x0 cb=0000000000000174 uValue=00000000000f287c 'cdemu_read'
+cdemu_read: ; 0xf3e7c LB 0x174
+ push bp ; 55 ; 0xf3e7c eltorito.c:322
+ mov bp, sp ; 89 e5 ; 0xf3e7d
+ push si ; 56 ; 0xf3e7f
+ push di ; 57 ; 0xf3e80
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf3e81
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf3e84
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf3e87
+ mov di, dx ; 89 d7 ; 0xf3e8a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e8c eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3e8f
+ mov es, ax ; 8e c0 ; 0xf3e92
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf3e94
+ mov bx, 00316h ; bb 16 03 ; 0xf3e97 eltorito.c:326
+ mov es, ax ; 8e c0 ; 0xf3e9a
+ mov si, bx ; 89 de ; 0xf3e9c
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf3e9e
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf3ea1 eltorito.c:327
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf3ea5
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf3ea8
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf3eac
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf3eaf eltorito.c:330
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3eb2
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf3eb5
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf3eb8
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3ebb eltorito.c:335
+ mov dx, cx ; 89 ca ; 0xf3ebe
+ shr dx, 1 ; d1 ea ; 0xf3ec0
+ rcr ax, 1 ; d1 d8 ; 0xf3ec2
+ shr dx, 1 ; d1 ea ; 0xf3ec4
+ rcr ax, 1 ; d1 d8 ; 0xf3ec6
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf3ec8
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3ecb
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3ece eltorito.c:336
+ and ax, strict word 00003h ; 25 03 00 ; 0xf3ed1
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf3ed4
+ test ax, ax ; 85 c0 ; 0xf3ed7 eltorito.c:339
+ je short 03f4dh ; 74 72 ; 0xf3ed9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3edb eltorito.c:341
+ sub ax, word [bp-012h] ; 2b 46 ee ; 0xf3ede
+ cmp di, ax ; 39 c7 ; 0xf3ee1
+ jnc short 03eeah ; 73 05 ; 0xf3ee3
+ mov word [bp-01ch], di ; 89 7e e4 ; 0xf3ee5
+ jmp short 03eedh ; eb 03 ; 0xf3ee8
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf3eea
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf3eed eltorito.c:343
+ push word [es:si+018h] ; 26 ff 74 18 ; 0xf3ef0
+ push word [es:si+016h] ; 26 ff 74 16 ; 0xf3ef4
+ mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3ef8
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3efb
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3efe
+ adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3f01
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3f04
+ xor ah, ah ; 30 e4 ; 0xf3f07
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf3f09
+ call 03df0h ; e8 e1 fe ; 0xf3f0c
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf3f0f
+ test ax, ax ; 85 c0 ; 0xf3f12 eltorito.c:344
+ jne short 03f7eh ; 75 68 ; 0xf3f14
+ mov CL, strict byte 009h ; b1 09 ; 0xf3f16 eltorito.c:345
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf3f18
+ sal ax, CL ; d3 e0 ; 0xf3f1b
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf3f1d
+ push ax ; 50 ; 0xf3f20
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf3f21
+ sal ax, CL ; d3 e0 ; 0xf3f24
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf3f26
+ mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf3f29
+ mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf3f2d
+ add bx, ax ; 01 c3 ; 0xf3f31
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf3f33
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf3f36
+ call 0abd0h ; e8 94 6c ; 0xf3f39
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf3f3c eltorito.c:348
+ add word [bp-00eh], ax ; 01 46 f2 ; 0xf3f3f
+ sub di, word [bp-01ch] ; 2b 7e e4 ; 0xf3f42 eltorito.c:349
+ add word [bp-00ch], strict byte 00001h ; 83 46 f4 01 ; 0xf3f45 eltorito.c:350
+ adc word [bp-00ah], strict byte 00000h ; 83 56 f6 00 ; 0xf3f49
+ mov ax, di ; 89 f8 ; 0xf3f4d eltorito.c:354
+ shr ax, 1 ; d1 e8 ; 0xf3f4f
+ shr ax, 1 ; d1 e8 ; 0xf3f51
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf3f53
+ test ax, ax ; 85 c0 ; 0xf3f56
+ je short 03f9eh ; 74 44 ; 0xf3f58
+ push word [bp-018h] ; ff 76 e8 ; 0xf3f5a eltorito.c:358
+ push word [bp-00eh] ; ff 76 f2 ; 0xf3f5d
+ mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3f60
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3f63
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3f66
+ adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3f69
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3f6c
+ xor ah, ah ; 30 e4 ; 0xf3f6f
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf3f71
+ call 03df0h ; e8 79 fe ; 0xf3f74
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf3f77
+ test ax, ax ; 85 c0 ; 0xf3f7a eltorito.c:359
+ je short 03f80h ; 74 02 ; 0xf3f7c
+ jmp short 03fe7h ; eb 67 ; 0xf3f7e eltorito.c:360
+ mov CL, strict byte 00bh ; b1 0b ; 0xf3f80 eltorito.c:361
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf3f82
+ sal ax, CL ; d3 e0 ; 0xf3f85
+ add word [bp-00eh], ax ; 01 46 f2 ; 0xf3f87
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf3f8a eltorito.c:362
+ sal ax, 1 ; d1 e0 ; 0xf3f8d
+ sal ax, 1 ; d1 e0 ; 0xf3f8f
+ sub di, ax ; 29 c7 ; 0xf3f91
+ xor ax, ax ; 31 c0 ; 0xf3f93 eltorito.c:363
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf3f95
+ add word [bp-00ch], dx ; 01 56 f4 ; 0xf3f98
+ adc word [bp-00ah], ax ; 11 46 f6 ; 0xf3f9b
+ test di, di ; 85 ff ; 0xf3f9e eltorito.c:367
+ je short 03fe4h ; 74 42 ; 0xf3fa0
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf3fa2 eltorito.c:369
+ push word [es:si+018h] ; 26 ff 74 18 ; 0xf3fa5
+ push word [es:si+016h] ; 26 ff 74 16 ; 0xf3fa9
+ mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3fad
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3fb0
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3fb3
+ adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3fb6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3fb9
+ xor ah, ah ; 30 e4 ; 0xf3fbc
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf3fbe
+ call 03df0h ; e8 2c fe ; 0xf3fc1
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf3fc4
+ test ax, ax ; 85 c0 ; 0xf3fc7 eltorito.c:370
+ jne short 03fe7h ; 75 1c ; 0xf3fc9
+ mov CL, strict byte 009h ; b1 09 ; 0xf3fcb eltorito.c:371
+ sal di, CL ; d3 e7 ; 0xf3fcd
+ push di ; 57 ; 0xf3fcf
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf3fd0
+ mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf3fd3
+ mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf3fd7
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf3fdb
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf3fde
+ call 0abd0h ; e8 ec 6b ; 0xf3fe1
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf3fe4 eltorito.c:376
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3fe7 eltorito.c:377
+ pop di ; 5f ; 0xf3fea
+ pop si ; 5e ; 0xf3feb
+ pop bp ; 5d ; 0xf3fec
+ retn 00004h ; c2 04 00 ; 0xf3fed
+ ; disGetNextSymbol 0xf3ff0 LB 0x6ef8 -> off=0x0 cb=00000000000002b7 uValue=00000000000f29f0 'cdrom_boot'
+cdrom_boot: ; 0xf3ff0 LB 0x2b7
+ push bp ; 55 ; 0xf3ff0 eltorito.c:387
+ mov bp, sp ; 89 e5 ; 0xf3ff1
+ push bx ; 53 ; 0xf3ff3
+ push cx ; 51 ; 0xf3ff4
+ push dx ; 52 ; 0xf3ff5
+ push si ; 56 ; 0xf3ff6
+ push di ; 57 ; 0xf3ff7
+ sub sp, 00808h ; 81 ec 08 08 ; 0xf3ff8
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3ffc eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3fff
+ mov es, ax ; 8e c0 ; 0xf4002
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4004
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf4007 eltorito.c:59
+ mov si, 00316h ; be 16 03 ; 0xf400a eltorito.c:399
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf400d
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4010 eltorito.c:403
+ jmp short 0401fh ; eb 09 ; 0xf4014
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf4016 eltorito.c:406
+ cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf4019
+ jnc short 0402bh ; 73 0c ; 0xf401d
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf401f
+ xor ah, ah ; 30 e4 ; 0xf4022
+ call 03dbch ; e8 95 fd ; 0xf4024
+ test ax, ax ; 85 c0 ; 0xf4027
+ je short 04016h ; 74 eb ; 0xf4029
+ cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf402b eltorito.c:409
+ jc short 04037h ; 72 06 ; 0xf402f
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf4031 eltorito.c:410
+ jmp near 0429dh ; e9 66 02 ; 0xf4034
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf4037 eltorito.c:413
+ jmp short 04046h ; eb 09 ; 0xf403b
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf403d eltorito.c:418
+ cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf4040
+ jnbe short 04060h ; 77 1a ; 0xf4044
+ lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf4046
+ push SS ; 16 ; 0xf404a
+ push dx ; 52 ; 0xf404b
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf404c
+ xor ah, ah ; 30 e4 ; 0xf404f
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4051
+ mov bx, strict word 00011h ; bb 11 00 ; 0xf4054
+ xor cx, cx ; 31 c9 ; 0xf4057
+ call 03df0h ; e8 94 fd ; 0xf4059
+ test ax, ax ; 85 c0 ; 0xf405c
+ jne short 0403dh ; 75 dd ; 0xf405e
+ test ax, ax ; 85 c0 ; 0xf4060 eltorito.c:419
+ je short 0406ah ; 74 06 ; 0xf4062
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf4064 eltorito.c:420
+ jmp near 0429dh ; e9 33 02 ; 0xf4067
+ cmp byte [bp-00812h], 000h ; 80 be ee f7 00 ; 0xf406a eltorito.c:423
+ je short 04077h ; 74 06 ; 0xf406f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4071 eltorito.c:424
+ jmp near 0429dh ; e9 26 02 ; 0xf4074
+ xor di, di ; 31 ff ; 0xf4077 eltorito.c:426
+ jmp short 04081h ; eb 06 ; 0xf4079
+ inc di ; 47 ; 0xf407b eltorito.c:428
+ cmp di, strict byte 00005h ; 83 ff 05 ; 0xf407c
+ jnc short 04091h ; 73 10 ; 0xf407f
+ mov al, byte [bp+di-00811h] ; 8a 83 ef f7 ; 0xf4081
+ cmp al, byte [di+00de4h] ; 3a 85 e4 0d ; 0xf4085
+ je short 0407bh ; 74 f0 ; 0xf4089
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf408b
+ jmp near 0429dh ; e9 0c 02 ; 0xf408e
+ xor di, di ; 31 ff ; 0xf4091 eltorito.c:430
+ jmp short 0409bh ; eb 06 ; 0xf4093
+ inc di ; 47 ; 0xf4095 eltorito.c:432
+ cmp di, strict byte 00017h ; 83 ff 17 ; 0xf4096
+ jnc short 040abh ; 73 10 ; 0xf4099
+ mov al, byte [bp+di-0080bh] ; 8a 83 f5 f7 ; 0xf409b
+ cmp al, byte [di+00deah] ; 3a 85 ea 0d ; 0xf409f
+ je short 04095h ; 74 f0 ; 0xf40a3
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf40a5
+ jmp near 0429dh ; e9 f2 01 ; 0xf40a8
+ mov bx, word [bp-007cbh] ; 8b 9e 35 f8 ; 0xf40ab eltorito.c:435
+ mov cx, word [bp-007c9h] ; 8b 8e 37 f8 ; 0xf40af
+ lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf40b3 eltorito.c:439
+ push SS ; 16 ; 0xf40b7
+ push dx ; 52 ; 0xf40b8
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf40b9
+ xor ah, ah ; 30 e4 ; 0xf40bc
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf40be
+ call 03df0h ; e8 2c fd ; 0xf40c1
+ test ax, ax ; 85 c0 ; 0xf40c4 eltorito.c:440
+ je short 040ceh ; 74 06 ; 0xf40c6
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf40c8 eltorito.c:441
+ jmp near 0429dh ; e9 cf 01 ; 0xf40cb
+ cmp byte [bp-00812h], 001h ; 80 be ee f7 01 ; 0xf40ce eltorito.c:446
+ je short 040dbh ; 74 06 ; 0xf40d3
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf40d5 eltorito.c:447
+ jmp near 0429dh ; e9 c2 01 ; 0xf40d8
+ cmp byte [bp-00811h], 000h ; 80 be ef f7 00 ; 0xf40db eltorito.c:448
+ je short 040e8h ; 74 06 ; 0xf40e0
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf40e2 eltorito.c:449
+ jmp near 0429dh ; e9 b5 01 ; 0xf40e5
+ cmp byte [bp-007f4h], 055h ; 80 be 0c f8 55 ; 0xf40e8 eltorito.c:450
+ je short 040f5h ; 74 06 ; 0xf40ed
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf40ef eltorito.c:451
+ jmp near 0429dh ; e9 a8 01 ; 0xf40f2
+ cmp byte [bp-007f3h], 0aah ; 80 be 0d f8 aa ; 0xf40f5 eltorito.c:452
+ jne short 040efh ; 75 f3 ; 0xf40fa
+ cmp byte [bp-007f2h], 088h ; 80 be 0e f8 88 ; 0xf40fc eltorito.c:453
+ je short 04109h ; 74 06 ; 0xf4101
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4103 eltorito.c:457
+ jmp near 0429dh ; e9 94 01 ; 0xf4106
+ mov al, byte [bp-007f1h] ; 8a 86 0f f8 ; 0xf4109 eltorito.c:459
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf410d
+ mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf4110
+ cmp byte [bp-007f1h], 000h ; 80 be 0f f8 00 ; 0xf4114 eltorito.c:460
+ jne short 04122h ; 75 07 ; 0xf4119
+ mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf411b eltorito.c:463
+ jmp short 04135h ; eb 13 ; 0xf4120 eltorito.c:465
+ cmp byte [bp-007f1h], 004h ; 80 be 0f f8 04 ; 0xf4122
+ jnc short 04130h ; 73 07 ; 0xf4127
+ mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf4129 eltorito.c:466
+ jmp short 04135h ; eb 05 ; 0xf412e eltorito.c:467
+ mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf4130 eltorito.c:468
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf4135 eltorito.c:470
+ xor bh, bh ; 30 ff ; 0xf4138
+ mov ax, bx ; 89 d8 ; 0xf413a
+ cwd ; 99 ; 0xf413c
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf413d
+ sar ax, 1 ; d1 f8 ; 0xf413f
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4141
+ mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf4144
+ mov ax, bx ; 89 d8 ; 0xf4148 eltorito.c:471
+ cwd ; 99 ; 0xf414a
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf414b
+ idiv bx ; f7 fb ; 0xf414e
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf4150
+ mov di, word [bp-007f0h] ; 8b be 10 f8 ; 0xf4154 eltorito.c:473
+ test di, di ; 85 ff ; 0xf4158 eltorito.c:474
+ jne short 0415fh ; 75 03 ; 0xf415a
+ mov di, 007c0h ; bf c0 07 ; 0xf415c eltorito.c:475
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf415f eltorito.c:477
+ mov word [es:si+00ch], di ; 26 89 7c 0c ; 0xf4162
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf4166 eltorito.c:478
+ mov dx, word [bp-007ech] ; 8b 96 14 f8 ; 0xf416c eltorito.c:480
+ mov word [es:si+00eh], dx ; 26 89 54 0e ; 0xf4170 eltorito.c:481
+ test dx, dx ; 85 d2 ; 0xf4174 eltorito.c:486
+ je short 0417eh ; 74 06 ; 0xf4176
+ cmp dx, 00400h ; 81 fa 00 04 ; 0xf4178
+ jbe short 04184h ; 76 06 ; 0xf417c
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf417e eltorito.c:487
+ jmp near 0429dh ; e9 19 01 ; 0xf4181
+ mov ax, word [bp-007eah] ; 8b 86 16 f8 ; 0xf4184 eltorito.c:489
+ mov bx, word [bp-007e8h] ; 8b 9e 18 f8 ; 0xf4188
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf418c eltorito.c:490
+ mov word [es:si+00ah], bx ; 26 89 5c 0a ; 0xf4190
+ call 03bbeh ; e8 27 fa ; 0xf4194 eltorito.c:496
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4197
+ mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf419a
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf41a0
+ mov ax, word [es:si+016h] ; 26 8b 44 16 ; 0xf41a4 eltorito.c:497
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf41a8
+ test bx, bx ; 85 db ; 0xf41ac
+ jne short 041bah ; 75 0a ; 0xf41ae
+ test ax, ax ; 85 c0 ; 0xf41b0
+ jne short 041bah ; 75 06 ; 0xf41b2
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf41b4 eltorito.c:498
+ jmp near 0429dh ; e9 e3 00 ; 0xf41b7
+ push di ; 57 ; 0xf41ba eltorito.c:501
+ xor ax, ax ; 31 c0 ; 0xf41bb
+ push ax ; 50 ; 0xf41bd
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf41be
+ xor ah, ah ; 30 e4 ; 0xf41c1
+ xor bx, bx ; 31 db ; 0xf41c3
+ xor cx, cx ; 31 c9 ; 0xf41c5
+ call 03e7ch ; e8 b2 fc ; 0xf41c7
+ test ax, ax ; 85 c0 ; 0xf41ca eltorito.c:502
+ je short 041d4h ; 74 06 ; 0xf41cc
+ mov ax, strict word 0000eh ; b8 0e 00 ; 0xf41ce eltorito.c:503
+ jmp near 0429dh ; e9 c9 00 ; 0xf41d1
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf41d4 eltorito.c:508
+ mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf41d7
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf41db
+ jc short 041ebh ; 72 0c ; 0xf41dd
+ jbe short 04206h ; 76 25 ; 0xf41df
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf41e1
+ je short 04216h ; 74 31 ; 0xf41e3
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf41e5
+ je short 0420eh ; 74 25 ; 0xf41e7
+ jmp short 04258h ; eb 6d ; 0xf41e9
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf41eb
+ jne short 04258h ; 75 69 ; 0xf41ed
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf41ef eltorito.c:510
+ mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00 ; 0xf41f2
+ mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00 ; 0xf41f8 eltorito.c:511
+ mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf41fe eltorito.c:512
+ jmp short 04258h ; eb 52 ; 0xf4204 eltorito.c:513
+ mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00 ; 0xf4206 eltorito.c:515
+ jmp short 041f8h ; eb ea ; 0xf420c
+ mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00 ; 0xf420e eltorito.c:520
+ jmp short 041f8h ; eb e2 ; 0xf4214
+ mov bx, 001c4h ; bb c4 01 ; 0xf4216 eltorito.c:48
+ mov es, di ; 8e c7 ; 0xf4219
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf421b
+ and AL, strict byte 03fh ; 24 3f ; 0xf421e eltorito.c:49
+ xor ah, ah ; 30 e4 ; 0xf4220
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4222
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf4225
+ mov es, di ; 8e c7 ; 0xf4229 eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf422b
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf422e eltorito.c:49
+ mov dx, ax ; 89 c2 ; 0xf4230
+ sal dx, 1 ; d1 e2 ; 0xf4232
+ sal dx, 1 ; d1 e2 ; 0xf4234
+ mov bx, 001c5h ; bb c5 01 ; 0xf4236 eltorito.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4239
+ add ax, dx ; 01 d0 ; 0xf423c eltorito.c:49
+ inc ax ; 40 ; 0xf423e
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf423f
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf4242
+ mov bx, 001c3h ; bb c3 01 ; 0xf4246 eltorito.c:48
+ mov es, di ; 8e c7 ; 0xf4249
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf424b
+ xor ah, ah ; 30 e4 ; 0xf424e eltorito.c:49
+ inc ax ; 40 ; 0xf4250
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4251
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf4254
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4258 eltorito.c:533
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf425b
+ je short 04286h ; 74 24 ; 0xf4260
+ cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf4262 eltorito.c:535
+ jne short 04278h ; 75 0f ; 0xf4267
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf4269 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf426c
+ mov es, ax ; 8e c0 ; 0xf426f
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4271
+ or AL, strict byte 041h ; 0c 41 ; 0xf4274 eltorito.c:49
+ jmp short 04283h ; eb 0b ; 0xf4276 eltorito.c:537
+ mov bx, 002ach ; bb ac 02 ; 0xf4278 eltorito.c:48
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf427b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf427e
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf4281 eltorito.c:49
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4283 eltorito.c:53
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4286 eltorito.c:542
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4289
+ je short 04294h ; 74 04 ; 0xf428e
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf4290 eltorito.c:543
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4294 eltorito.c:546
+ mov ah, byte [es:si+002h] ; 26 8a 64 02 ; 0xf4297
+ xor al, al ; 30 c0 ; 0xf429b
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf429d eltorito.c:547
+ pop di ; 5f ; 0xf42a0
+ pop si ; 5e ; 0xf42a1
+ pop dx ; 5a ; 0xf42a2
+ pop cx ; 59 ; 0xf42a3
+ pop bx ; 5b ; 0xf42a4
+ pop bp ; 5d ; 0xf42a5
+ retn ; c3 ; 0xf42a6
+ ; disGetNextSymbol 0xf42a7 LB 0x6c41 -> off=0x59 cb=00000000000003ff uValue=00000000000f2d00 '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, 0e0h, 046h, 0aah
+ db 043h, 0e1h, 043h, 0ffh, 043h, 0d6h, 043h, 0ffh, 043h, 0d6h, 043h, 0f5h, 044h, 099h, 045h, 0e0h
+ db 046h, 0e0h, 046h, 099h, 045h, 099h, 045h, 099h, 045h, 099h, 045h, 099h, 045h, 0b4h, 045h, 099h
+ db 045h, 0e0h, 046h, 0bch, 045h, 0ceh, 045h, 0e0h, 046h, 0ceh, 045h, 0e0h, 046h, 0e0h, 046h, 0ceh
+ db 045h, 0a4h, 046h, 0e0h, 046h, 0e0h, 046h, 0e0h, 046h
+int13_cdemu: ; 0xf4300 LB 0x3ff
+ push bp ; 55 ; 0xf4300 eltorito.c:557
+ mov bp, sp ; 89 e5 ; 0xf4301
+ push si ; 56 ; 0xf4303
+ push di ; 57 ; 0xf4304
+ sub sp, strict byte 00018h ; 83 ec 18 ; 0xf4305
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4308 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf430b
+ mov es, ax ; 8e c0 ; 0xf430e
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4310
+ mov si, 00316h ; be 16 03 ; 0xf4313 eltorito.c:572
+ mov dx, ax ; 89 c2 ; 0xf4316
+ mov bx, si ; 89 f3 ; 0xf4318
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf431a
+ mov word [bp-014h], strict word 0005eh ; c7 46 ec 5e 00 ; 0xf431d eltorito.c:573
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf4322
+ mov es, ax ; 8e c0 ; 0xf4325 eltorito.c:580
+ mov al, byte [es:si+003h] ; 26 8a 44 03 ; 0xf4327
+ sal al, 1 ; d0 e0 ; 0xf432b
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf432d
+ mov al, byte [es:si+004h] ; 26 8a 44 04 ; 0xf4330 eltorito.c:581
+ add byte [bp-006h], al ; 00 46 fa ; 0xf4334
+ mov di, strict word 00074h ; bf 74 00 ; 0xf4337 eltorito.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf433a
+ mov es, ax ; 8e c0 ; 0xf433d
+ mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf433f
+ mov es, dx ; 8e c2 ; 0xf4343 eltorito.c:586
+ cmp byte [es:si], 000h ; 26 80 3c 00 ; 0xf4345
+ je short 0435ah ; 74 0f ; 0xf4349
+ mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf434b
+ xor ah, ah ; 30 e4 ; 0xf434f
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf4351
+ xor dh, dh ; 30 f6 ; 0xf4354
+ cmp ax, dx ; 39 d0 ; 0xf4356
+ je short 04384h ; 74 2a ; 0xf4358
+ mov bx, 00ddch ; bb dc 0d ; 0xf435a eltorito.c:587
+ mov cx, ds ; 8c d9 ; 0xf435d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf435f
+ call 01919h ; e8 b4 d5 ; 0xf4362
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf4365
+ xor ah, ah ; 30 e4 ; 0xf4368
+ push ax ; 50 ; 0xf436a
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf436b
+ push ax ; 50 ; 0xf436e
+ mov ax, 00394h ; b8 94 03 ; 0xf436f
+ push ax ; 50 ; 0xf4372
+ mov ax, 003a0h ; b8 a0 03 ; 0xf4373
+ push ax ; 50 ; 0xf4376
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4377
+ push ax ; 50 ; 0xf437a
+ call 0195ch ; e8 de d5 ; 0xf437b
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf437e
+ jmp near 046beh ; e9 3a 03 ; 0xf4381 eltorito.c:588
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf4384 eltorito.c:591
+ xor ah, ah ; 30 e4 ; 0xf4387
+ mov dx, ax ; 89 c2 ; 0xf4389
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf438b
+ jnbe short 043fch ; 77 6c ; 0xf438e
+ push CS ; 0e ; 0xf4390
+ pop ES ; 07 ; 0xf4391
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4392
+ mov di, 042a7h ; bf a7 42 ; 0xf4395
+ repne scasb ; f2 ae ; 0xf4398
+ sal cx, 1 ; d1 e1 ; 0xf439a
+ mov di, cx ; 89 cf ; 0xf439c
+ mov dx, word [cs:di+042c4h] ; 2e 8b 95 c4 42 ; 0xf439e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43a3
+ xor ah, ah ; 30 e4 ; 0xf43a6
+ jmp dx ; ff e2 ; 0xf43a8
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43aa eltorito.c:594
+ xor ah, ah ; 30 e4 ; 0xf43ad
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf43af
+ imul dx ; f7 ea ; 0xf43b2
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf43b4
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf43b7
+ add bx, ax ; 01 c3 ; 0xf43ba
+ mov bl, byte [es:bx+01eh] ; 26 8a 5f 1e ; 0xf43bc
+ xor bh, bh ; 30 ff ; 0xf43c0
+ sal bx, 1 ; d1 e3 ; 0xf43c2
+ cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf43c4
+ je short 0443eh ; 74 73 ; 0xf43c9
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43cb eltorito.c:596
+ xor ah, ah ; 30 e4 ; 0xf43ce
+ call word [word bx+00076h] ; ff 97 76 00 ; 0xf43d0
+ jmp short 0443eh ; eb 68 ; 0xf43d4 eltorito.c:598
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43d6 eltorito.c:614
+ xor ah, ah ; 30 e4 ; 0xf43d9
+ or ah, 003h ; 80 cc 03 ; 0xf43db
+ jmp near 046c6h ; e9 e5 02 ; 0xf43de eltorito.c:615
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf43e1 eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf43e4
+ mov es, dx ; 8e c2 ; 0xf43e7
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf43e9
+ mov ah, dl ; 88 d4 ; 0xf43ec eltorito.c:620
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf43ee
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf43f1 eltorito.c:53
+ test dl, dl ; 84 d2 ; 0xf43f5 eltorito.c:624
+ je short 0445eh ; 74 65 ; 0xf43f7
+ jmp near 046d9h ; e9 dd 02 ; 0xf43f9 eltorito.c:625
+ jmp near 046e0h ; e9 e1 02 ; 0xf43fc
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf43ff eltorito.c:632
+ mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf4402
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf4406 eltorito.c:633
+ mov dx, word [es:bx+010h] ; 26 8b 57 10 ; 0xf440a eltorito.c:634
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf440e
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf4411 eltorito.c:636
+ and dx, strict byte 0003fh ; 83 e2 3f ; 0xf4414
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf4417
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf441a eltorito.c:637
+ xor dh, dh ; 30 f6 ; 0xf441d
+ and dl, 0c0h ; 80 e2 c0 ; 0xf441f
+ sal dx, 1 ; d1 e2 ; 0xf4422
+ sal dx, 1 ; d1 e2 ; 0xf4424
+ mov bl, byte [bp+015h] ; 8a 5e 15 ; 0xf4426
+ xor bh, bh ; 30 ff ; 0xf4429
+ or bx, dx ; 09 d3 ; 0xf442b
+ mov dl, byte [bp+013h] ; 8a 56 13 ; 0xf442d eltorito.c:638
+ xor dh, dh ; 30 f6 ; 0xf4430
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf4432
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf4435 eltorito.c:639
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf4438
+ jne short 04441h ; 75 03 ; 0xf443c eltorito.c:647
+ jmp near 04599h ; e9 58 01 ; 0xf443e eltorito.c:648
+ cmp si, word [bp-00ah] ; 3b 76 f6 ; 0xf4441 eltorito.c:651
+ jc short 0444fh ; 72 09 ; 0xf4444
+ cmp bx, ax ; 39 c3 ; 0xf4446
+ jnc short 0444fh ; 73 05 ; 0xf4448
+ cmp dx, word [bp-016h] ; 3b 56 ea ; 0xf444a
+ jc short 04452h ; 72 03 ; 0xf444d
+ jmp near 046beh ; e9 6c 02 ; 0xf444f eltorito.c:654
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf4452 eltorito.c:658
+ xor ah, ah ; 30 e4 ; 0xf4455
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf4457
+ jne short 04461h ; 75 05 ; 0xf445a
+ jmp short 0443eh ; eb e0 ; 0xf445c eltorito.c:659
+ jmp near 0459dh ; e9 3c 01 ; 0xf445e
+ mov CL, strict byte 004h ; b1 04 ; 0xf4461 eltorito.c:661
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4463
+ shr ax, CL ; d3 e8 ; 0xf4466
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4468
+ add dx, ax ; 01 c2 ; 0xf446b
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf446d
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4470 eltorito.c:662
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf4473
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf4476
+ mov ax, bx ; 89 d8 ; 0xf4479 eltorito.c:665
+ xor dx, dx ; 31 d2 ; 0xf447b
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf447d
+ xor cx, cx ; 31 c9 ; 0xf4480
+ call 0ab50h ; e8 cb 66 ; 0xf4482
+ xor bx, bx ; 31 db ; 0xf4485
+ add ax, word [bp-00eh] ; 03 46 f2 ; 0xf4487
+ adc dx, bx ; 11 da ; 0xf448a
+ mov bx, si ; 89 f3 ; 0xf448c
+ xor cx, cx ; 31 c9 ; 0xf448e
+ call 0ab50h ; e8 bd 66 ; 0xf4490
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf4493
+ dec bx ; 4b ; 0xf4496
+ xor cx, cx ; 31 c9 ; 0xf4497
+ add bx, ax ; 01 c3 ; 0xf4499
+ adc cx, dx ; 11 d1 ; 0xf449b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf449d eltorito.c:668
+ xor al, al ; 30 c0 ; 0xf44a0
+ or ax, di ; 09 f8 ; 0xf44a2
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf44a4
+ push word [bp-010h] ; ff 76 f0 ; 0xf44a7 eltorito.c:670
+ push word [bp-008h] ; ff 76 f8 ; 0xf44aa
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf44ad
+ xor ah, ah ; 30 e4 ; 0xf44b0
+ mov dx, di ; 89 fa ; 0xf44b2
+ call 03e7ch ; e8 c5 f9 ; 0xf44b4
+ mov dx, ax ; 89 c2 ; 0xf44b7
+ test al, al ; 84 c0 ; 0xf44b9 eltorito.c:671
+ je short 0443eh ; 74 81 ; 0xf44bb
+ mov bx, 00ddch ; bb dc 0d ; 0xf44bd eltorito.c:672
+ mov cx, ds ; 8c d9 ; 0xf44c0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf44c2
+ call 01919h ; e8 51 d4 ; 0xf44c5
+ mov al, dl ; 88 d0 ; 0xf44c8
+ xor ah, ah ; 30 e4 ; 0xf44ca
+ push ax ; 50 ; 0xf44cc
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf44cd
+ push ax ; 50 ; 0xf44d0
+ mov ax, 00394h ; b8 94 03 ; 0xf44d1
+ push ax ; 50 ; 0xf44d4
+ mov ax, 003d6h ; b8 d6 03 ; 0xf44d5
+ push ax ; 50 ; 0xf44d8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf44d9
+ push ax ; 50 ; 0xf44dc
+ call 0195ch ; e8 7c d4 ; 0xf44dd
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf44e0
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf44e3 eltorito.c:673
+ xor ah, ah ; 30 e4 ; 0xf44e6
+ or ah, 002h ; 80 cc 02 ; 0xf44e8
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf44eb
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf44ee eltorito.c:674
+ jmp near 046c9h ; e9 d4 01 ; 0xf44f2 eltorito.c:675
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf44f5 eltorito.c:682
+ mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf44f8
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf44fc eltorito.c:683
+ dec ax ; 48 ; 0xf4500
+ mov dx, word [es:bx+010h] ; 26 8b 57 10 ; 0xf4501 eltorito.c:684
+ dec dx ; 4a ; 0xf4505
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf4506
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4509 eltorito.c:686
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf450d eltorito.c:687
+ xor dl, dl ; 30 d2 ; 0xf4510
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf4512 eltorito.c:688
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf4515
+ mov cx, ax ; 89 c1 ; 0xf4519
+ xor ch, ah ; 30 e5 ; 0xf451b
+ mov word [bp-012h], cx ; 89 4e ee ; 0xf451d
+ mov cl, byte [bp-012h] ; 8a 4e ee ; 0xf4520
+ mov byte [bp-011h], cl ; 88 4e ef ; 0xf4523
+ mov byte [bp-012h], dl ; 88 56 ee ; 0xf4526
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf4529
+ or cx, di ; 09 f9 ; 0xf452c
+ mov word [bp+014h], cx ; 89 4e 14 ; 0xf452e
+ shr ax, 1 ; d1 e8 ; 0xf4531 eltorito.c:689
+ shr ax, 1 ; d1 e8 ; 0xf4533
+ xor ah, ah ; 30 e4 ; 0xf4535
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf4537
+ and si, strict byte 0003fh ; 83 e6 3f ; 0xf4539
+ or si, ax ; 09 c6 ; 0xf453c
+ mov ax, cx ; 89 c8 ; 0xf453e
+ xor al, cl ; 30 c8 ; 0xf4540
+ or ax, si ; 09 f0 ; 0xf4542
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf4544
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf4547 eltorito.c:690
+ mov ch, byte [bp-016h] ; 8a 6e ea ; 0xf454a
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf454d
+ mov ax, cx ; 89 c8 ; 0xf4550 eltorito.c:691
+ xor al, cl ; 30 c8 ; 0xf4552
+ or AL, strict byte 002h ; 0c 02 ; 0xf4554
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf4556
+ mov al, byte [es:bx+001h] ; 26 8a 47 01 ; 0xf4559 eltorito.c:694
+ mov word [bp+010h], dx ; 89 56 10 ; 0xf455d
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf4560
+ je short 04580h ; 74 1c ; 0xf4562
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf4564
+ je short 04578h ; 74 10 ; 0xf4566
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf4568
+ jne short 04585h ; 75 19 ; 0xf456a
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf456c eltorito.c:695
+ xor al, al ; 30 c0 ; 0xf456f
+ or AL, strict byte 002h ; 0c 02 ; 0xf4571
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf4573
+ jmp short 04585h ; eb 0d ; 0xf4576
+ or dl, 004h ; 80 ca 04 ; 0xf4578 eltorito.c:696
+ mov word [bp+010h], dx ; 89 56 10 ; 0xf457b
+ jmp short 04585h ; eb 05 ; 0xf457e
+ or dl, 005h ; 80 ca 05 ; 0xf4580 eltorito.c:697
+ jmp short 0457bh ; eb f6 ; 0xf4583
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf4585 eltorito.c:701
+ cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf4588
+ jnc short 04599h ; 73 0a ; 0xf458d
+ mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf458f eltorito.c:702
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf4594 eltorito.c:703
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf4599 eltorito.c:705
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf459d
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf45a0
+ mov es, ax ; 8e c0 ; 0xf45a3
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf45a5
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf45a9
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf45ad
+ pop di ; 5f ; 0xf45b0
+ pop si ; 5e ; 0xf45b1
+ pop bp ; 5d ; 0xf45b2
+ retn ; c3 ; 0xf45b3
+ or ah, 003h ; 80 cc 03 ; 0xf45b4 eltorito.c:710
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf45b7
+ jmp short 0459dh ; eb e1 ; 0xf45ba eltorito.c:711
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf45bc eltorito.c:715
+ or ah, 030h ; 80 cc 30 ; 0xf45c1 eltorito.c:716
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf45c4
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf45c7 eltorito.c:717
+ jmp short 0459dh ; eb cf ; 0xf45cc eltorito.c:718
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf45ce eltorito.c:726
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf45d1
+ mov si, bx ; 89 de ; 0xf45d4
+ mov di, es ; 8c c7 ; 0xf45d6
+ mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf45d8 eltorito.c:728
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf45dc eltorito.c:729
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf45e0
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf45e3 eltorito.c:730
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf45e7
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf45ea eltorito.c:733
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf45ee
+ or ax, cx ; 09 c8 ; 0xf45f2 eltorito.c:734
+ je short 04611h ; 74 1b ; 0xf45f4
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf45f6 eltorito.c:735
+ xor ah, ah ; 30 e4 ; 0xf45f9
+ push ax ; 50 ; 0xf45fb
+ mov ax, 00394h ; b8 94 03 ; 0xf45fc
+ push ax ; 50 ; 0xf45ff
+ mov ax, 003f7h ; b8 f7 03 ; 0xf4600
+ push ax ; 50 ; 0xf4603
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf4604
+ push ax ; 50 ; 0xf4607
+ call 0195ch ; e8 51 d3 ; 0xf4608
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf460b
+ jmp near 046beh ; e9 ad 00 ; 0xf460e eltorito.c:736
+ mov es, di ; 8e c7 ; 0xf4611 eltorito.c:740
+ mov ax, word [es:si+008h] ; 26 8b 44 08 ; 0xf4613
+ mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf4617
+ mov bl, byte [bp+017h] ; 8a 5e 17 ; 0xf461b eltorito.c:743
+ mov byte [bp-018h], bl ; 88 5e e8 ; 0xf461e
+ mov byte [bp-017h], 000h ; c6 46 e9 00 ; 0xf4621
+ cmp word [bp-018h], strict byte 00044h ; 83 7e e8 44 ; 0xf4625
+ jne short 0462eh ; 75 03 ; 0xf4629
+ jmp near 04599h ; e9 6b ff ; 0xf462b
+ cmp word [bp-018h], strict byte 00047h ; 83 7e e8 47 ; 0xf462e
+ jne short 04636h ; 75 02 ; 0xf4632
+ jmp short 0462bh ; eb f5 ; 0xf4634 eltorito.c:744
+ push word [bp-010h] ; ff 76 f0 ; 0xf4636 eltorito.c:749
+ push word [bp-008h] ; ff 76 f8 ; 0xf4639
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf463c
+ mov byte [bp-012h], bl ; 88 5e ee ; 0xf463f
+ mov byte [bp-011h], 000h ; c6 46 ef 00 ; 0xf4642
+ mov bx, ax ; 89 c3 ; 0xf4646
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf4648
+ call 03e7ch ; e8 2e f8 ; 0xf464b
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf464e
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf4651 eltorito.c:750
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf4654
+ mov ax, word [es:bx+01ah] ; 26 8b 47 1a ; 0xf4657
+ mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf465b
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf465f
+ shr dx, 1 ; d1 ea ; 0xf4662
+ rcr ax, 1 ; d1 d8 ; 0xf4664
+ loop 04662h ; e2 fa ; 0xf4666
+ mov es, di ; 8e c7 ; 0xf4668 eltorito.c:751
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf466a
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf466e eltorito.c:753
+ je short 0462bh ; 74 b7 ; 0xf4672
+ mov bx, 00ddch ; bb dc 0d ; 0xf4674 eltorito.c:754
+ mov cx, ds ; 8c d9 ; 0xf4677
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4679
+ call 01919h ; e8 9a d2 ; 0xf467c
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf467f
+ xor ah, ah ; 30 e4 ; 0xf4682
+ push ax ; 50 ; 0xf4684
+ push word [bp-018h] ; ff 76 e8 ; 0xf4685
+ mov ax, 00394h ; b8 94 03 ; 0xf4688
+ push ax ; 50 ; 0xf468b
+ mov ax, 00420h ; b8 20 04 ; 0xf468c
+ push ax ; 50 ; 0xf468f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4690
+ push ax ; 50 ; 0xf4693
+ call 0195ch ; e8 c5 d2 ; 0xf4694
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4697
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf469a eltorito.c:755
+ xor ah, ah ; 30 e4 ; 0xf469d
+ or ah, 00ch ; 80 cc 0c ; 0xf469f
+ jmp short 046c6h ; eb 22 ; 0xf46a2
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf46a4 eltorito.c:763
+ push ax ; 50 ; 0xf46a7
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf46a8
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf46ab
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf46ae
+ mov cx, word [bp-01ch] ; 8b 4e e4 ; 0xf46b1
+ call 0594ah ; e8 93 12 ; 0xf46b4
+ test ax, ax ; 85 c0 ; 0xf46b7
+ jne short 046beh ; 75 03 ; 0xf46b9
+ jmp near 04599h ; e9 db fe ; 0xf46bb
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf46be eltorito.c:764
+ xor ah, ah ; 30 e4 ; 0xf46c1
+ or ah, 001h ; 80 cc 01 ; 0xf46c3
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf46c6
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf46c9
+ xor ah, ah ; 30 e4 ; 0xf46cc
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf46ce
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf46d1
+ mov es, dx ; 8e c2 ; 0xf46d4
+ mov byte [es:bx], al ; 26 88 07 ; 0xf46d6
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf46d9
+ jmp near 045adh ; e9 cd fe ; 0xf46dd
+ mov bx, 00ddch ; bb dc 0d ; 0xf46e0 eltorito.c:780
+ mov cx, ds ; 8c d9 ; 0xf46e3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf46e5
+ call 01919h ; e8 2e d2 ; 0xf46e8
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf46eb
+ xor ah, ah ; 30 e4 ; 0xf46ee
+ push ax ; 50 ; 0xf46f0
+ mov ax, 00394h ; b8 94 03 ; 0xf46f1
+ push ax ; 50 ; 0xf46f4
+ mov ax, 00442h ; b8 42 04 ; 0xf46f5
+ push ax ; 50 ; 0xf46f8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf46f9
+ jmp near 04607h ; e9 08 ff ; 0xf46fc
+ ; disGetNextSymbol 0xf46ff LB 0x67e9 -> off=0x59 cb=000000000000030e uValue=00000000000f3158 '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, 036h, 048h, 04bh
+ db 04ah, 0feh, 047h, 036h, 048h, 0f3h, 047h, 036h, 048h, 0f3h, 047h, 036h, 048h, 04bh, 04ah, 036h
+ db 048h, 036h, 048h, 04bh, 04ah, 04bh, 04ah, 04bh, 04ah, 04bh, 04ah, 04bh, 04ah, 01ah, 048h, 04bh
+ db 04ah, 036h, 048h, 023h, 048h, 054h, 048h, 0f3h, 047h, 054h, 048h, 029h, 049h, 0c9h, 049h, 054h
+ db 048h, 0f2h, 049h, 00ch, 04ah, 014h, 04ah, 036h, 048h
+int13_cdrom: ; 0xf4758 LB 0x30e
+ push bp ; 55 ; 0xf4758 eltorito.c:805
+ mov bp, sp ; 89 e5 ; 0xf4759
+ push si ; 56 ; 0xf475b
+ push di ; 57 ; 0xf475c
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf475d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4760 eltorito.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4763
+ mov es, ax ; 8e c0 ; 0xf4766
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4768
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf476b eltorito.c:814
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf476e
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4771 eltorito.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4774
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4778 eltorito.c:821
+ xor ah, ah ; 30 e4 ; 0xf477b
+ cmp ax, 000e0h ; 3d e0 00 ; 0xf477d
+ jc short 04787h ; 72 05 ; 0xf4780
+ cmp ax, 000f4h ; 3d f4 00 ; 0xf4782
+ jc short 047a6h ; 72 1f ; 0xf4785
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4787 eltorito.c:822
+ xor ah, ah ; 30 e4 ; 0xf478a
+ push ax ; 50 ; 0xf478c
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf478d
+ push ax ; 50 ; 0xf4790
+ mov ax, 00472h ; b8 72 04 ; 0xf4791
+ push ax ; 50 ; 0xf4794
+ mov ax, 0047eh ; b8 7e 04 ; 0xf4795
+ push ax ; 50 ; 0xf4798
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4799
+ push ax ; 50 ; 0xf479c
+ call 0195ch ; e8 bc d1 ; 0xf479d
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf47a0
+ jmp near 04a2ah ; e9 84 02 ; 0xf47a3 eltorito.c:823
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47a6 eltorito.c:827
+ xor ah, ah ; 30 e4 ; 0xf47a9
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf47ab
+ mov bx, si ; 89 f3 ; 0xf47ae
+ add bx, ax ; 01 c3 ; 0xf47b0
+ mov dl, byte [es:bx+00184h] ; 26 8a 97 84 01 ; 0xf47b2
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf47b7
+ cmp dl, 014h ; 80 fa 14 ; 0xf47ba eltorito.c:830
+ jc short 047cdh ; 72 0e ; 0xf47bd
+ push ax ; 50 ; 0xf47bf eltorito.c:831
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf47c0
+ push ax ; 50 ; 0xf47c3
+ mov ax, 00472h ; b8 72 04 ; 0xf47c4
+ push ax ; 50 ; 0xf47c7
+ mov ax, 004a9h ; b8 a9 04 ; 0xf47c8
+ jmp short 04798h ; eb cb ; 0xf47cb
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf47cd eltorito.c:835
+ xor ah, ah ; 30 e4 ; 0xf47d0
+ mov dx, ax ; 89 c2 ; 0xf47d2
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf47d4
+ jnbe short 04836h ; 77 5d ; 0xf47d7
+ push CS ; 0e ; 0xf47d9
+ pop ES ; 07 ; 0xf47da
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf47db
+ mov di, 046ffh ; bf ff 46 ; 0xf47de
+ repne scasb ; f2 ae ; 0xf47e1
+ sal cx, 1 ; d1 e1 ; 0xf47e3
+ mov di, cx ; 89 cf ; 0xf47e5
+ mov ax, word [cs:di+0471ch] ; 2e 8b 85 1c 47 ; 0xf47e7
+ mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf47ec
+ xor bh, bh ; 30 ff ; 0xf47ef
+ jmp ax ; ff e0 ; 0xf47f1
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47f3 eltorito.c:853
+ xor ah, ah ; 30 e4 ; 0xf47f6
+ or ah, 003h ; 80 cc 03 ; 0xf47f8
+ jmp near 04a32h ; e9 34 02 ; 0xf47fb eltorito.c:854
+ mov si, strict word 00074h ; be 74 00 ; 0xf47fe eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4801
+ mov es, ax ; 8e c0 ; 0xf4804
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf4806
+ mov bh, al ; 88 c7 ; 0xf4809 eltorito.c:859
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf480b
+ mov bx, si ; 89 f3 ; 0xf480e eltorito.c:53
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf4810
+ test al, al ; 84 c0 ; 0xf4813 eltorito.c:863
+ je short 04833h ; 74 1c ; 0xf4815
+ jmp near 04a45h ; e9 2b 02 ; 0xf4817 eltorito.c:864
+ or bh, 002h ; 80 cf 02 ; 0xf481a eltorito.c:870
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf481d
+ jmp near 04a35h ; e9 12 02 ; 0xf4820 eltorito.c:871
+ mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf4823 eltorito.c:875
+ or bh, 030h ; 80 cf 30 ; 0xf4828 eltorito.c:876
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf482b
+ mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf482e eltorito.c:877
+ jmp near 04a4fh ; e9 19 02 ; 0xf4833 eltorito.c:878
+ mov bx, 00ddch ; bb dc 0d ; 0xf4836
+ mov cx, ds ; 8c d9 ; 0xf4839
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf483b
+ call 01919h ; e8 d8 d0 ; 0xf483e
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4841
+ xor ah, ah ; 30 e4 ; 0xf4844
+ push ax ; 50 ; 0xf4846
+ mov ax, 00472h ; b8 72 04 ; 0xf4847
+ push ax ; 50 ; 0xf484a
+ mov ax, 0037bh ; b8 7b 03 ; 0xf484b
+ push ax ; 50 ; 0xf484e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf484f
+ jmp short 0488eh ; eb 3a ; 0xf4852
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf4854 eltorito.c:886
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf4857
+ mov di, bx ; 89 df ; 0xf485a
+ mov [bp-008h], es ; 8c 46 f8 ; 0xf485c
+ mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf485f eltorito.c:888
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf4863 eltorito.c:889
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4867
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf486a eltorito.c:890
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf486e
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf4871 eltorito.c:893
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf4875
+ or ax, cx ; 09 c8 ; 0xf4879 eltorito.c:894
+ je short 04898h ; 74 1b ; 0xf487b
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf487d eltorito.c:895
+ xor ah, ah ; 30 e4 ; 0xf4880
+ push ax ; 50 ; 0xf4882
+ mov ax, 00472h ; b8 72 04 ; 0xf4883
+ push ax ; 50 ; 0xf4886
+ mov ax, 003f7h ; b8 f7 03 ; 0xf4887
+ push ax ; 50 ; 0xf488a
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf488b
+ push ax ; 50 ; 0xf488e
+ call 0195ch ; e8 ca d0 ; 0xf488f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4892
+ jmp near 04a2ah ; e9 92 01 ; 0xf4895 eltorito.c:896
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4898 eltorito.c:900
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf489b
+ mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf489f
+ mov bl, byte [bp+019h] ; 8a 5e 19 ; 0xf48a3 eltorito.c:903
+ mov byte [bp-012h], bl ; 88 5e ee ; 0xf48a6
+ mov byte [bp-011h], 000h ; c6 46 ef 00 ; 0xf48a9
+ cmp word [bp-012h], strict byte 00044h ; 83 7e ee 44 ; 0xf48ad
+ je short 048b9h ; 74 06 ; 0xf48b1
+ cmp word [bp-012h], strict byte 00047h ; 83 7e ee 47 ; 0xf48b3
+ jne short 048bch ; 75 03 ; 0xf48b7
+ jmp near 04a4bh ; e9 8f 01 ; 0xf48b9 eltorito.c:904
+ push word [bp-00eh] ; ff 76 f2 ; 0xf48bc eltorito.c:909
+ push word [bp-00ch] ; ff 76 f4 ; 0xf48bf
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf48c2
+ mov byte [bp-014h], bl ; 88 5e ec ; 0xf48c5
+ mov byte [bp-013h], 000h ; c6 46 ed 00 ; 0xf48c8
+ mov bx, ax ; 89 c3 ; 0xf48cc
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf48ce
+ call 03df0h ; e8 1c f5 ; 0xf48d1
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf48d4
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf48d7 eltorito.c:910
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf48da
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf48de
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf48e2
+ shr dx, 1 ; d1 ea ; 0xf48e5
+ rcr ax, 1 ; d1 d8 ; 0xf48e7
+ loop 048e5h ; e2 fa ; 0xf48e9
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf48eb eltorito.c:911
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf48ee
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf48f2 eltorito.c:913
+ je short 048b9h ; 74 c1 ; 0xf48f6
+ mov bx, 00ddch ; bb dc 0d ; 0xf48f8 eltorito.c:914
+ mov cx, ds ; 8c d9 ; 0xf48fb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf48fd
+ call 01919h ; e8 16 d0 ; 0xf4900
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf4903
+ xor ah, ah ; 30 e4 ; 0xf4906
+ push ax ; 50 ; 0xf4908
+ push word [bp-012h] ; ff 76 ee ; 0xf4909
+ mov ax, 00472h ; b8 72 04 ; 0xf490c
+ push ax ; 50 ; 0xf490f
+ mov ax, 00420h ; b8 20 04 ; 0xf4910
+ push ax ; 50 ; 0xf4913
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4914
+ push ax ; 50 ; 0xf4917
+ call 0195ch ; e8 41 d0 ; 0xf4918
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf491b
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf491e eltorito.c:915
+ xor ah, ah ; 30 e4 ; 0xf4921
+ or ah, 00ch ; 80 cc 0c ; 0xf4923
+ jmp near 04a32h ; e9 09 01 ; 0xf4926
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf4929 eltorito.c:923
+ jnbe short 04999h ; 77 6b ; 0xf492c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf492e eltorito.c:926
+ xor ah, ah ; 30 e4 ; 0xf4931
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4933
+ imul dx ; f7 ea ; 0xf4936
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4938
+ mov di, si ; 89 f7 ; 0xf493b
+ add di, ax ; 01 c7 ; 0xf493d
+ mov cl, byte [es:di+021h] ; 26 8a 4d 21 ; 0xf493f
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf4943 eltorito.c:928
+ je short 049b1h ; 74 69 ; 0xf4946
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf4948
+ je short 04989h ; 74 3c ; 0xf494b
+ test bx, bx ; 85 db ; 0xf494d
+ jne short 049c1h ; 75 70 ; 0xf494f
+ cmp cl, 0ffh ; 80 f9 ff ; 0xf4951 eltorito.c:930
+ jne short 04968h ; 75 12 ; 0xf4954
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4956 eltorito.c:931
+ xor ah, ah ; 30 e4 ; 0xf4959
+ or ah, 0b4h ; 80 cc b4 ; 0xf495b
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf495e
+ xor al, al ; 30 c0 ; 0xf4961 eltorito.c:932
+ or AL, strict byte 001h ; 0c 01 ; 0xf4963
+ jmp near 04a32h ; e9 ca 00 ; 0xf4965
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4968 eltorito.c:934
+ xor ah, ah ; 30 e4 ; 0xf496b
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf496d
+ imul dx ; f7 ea ; 0xf4970
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf4972 eltorito.c:935
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4974
+ add si, ax ; 01 c6 ; 0xf4977
+ mov byte [es:si+021h], cl ; 26 88 4c 21 ; 0xf4979
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf497d eltorito.c:936
+ xor al, al ; 30 c0 ; 0xf4980
+ or AL, strict byte 001h ; 0c 01 ; 0xf4982
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4984
+ jmp short 049c1h ; eb 38 ; 0xf4987 eltorito.c:937
+ test cl, cl ; 84 c9 ; 0xf4989 eltorito.c:939
+ jne short 0499ch ; 75 0f ; 0xf498b
+ or bh, 0b0h ; 80 cf b0 ; 0xf498d eltorito.c:940
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf4990
+ mov byte [bp+018h], cl ; 88 4e 18 ; 0xf4993 eltorito.c:941
+ jmp near 04a35h ; e9 9c 00 ; 0xf4996 eltorito.c:942
+ jmp near 04a2ah ; e9 8e 00 ; 0xf4999
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf499c eltorito.c:943
+ xor ah, ah ; 30 e4 ; 0xf499f
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf49a1
+ imul dx ; f7 ea ; 0xf49a4
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf49a6 eltorito.c:944
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf49a8
+ add si, ax ; 01 c6 ; 0xf49ab
+ mov byte [es:si+021h], cl ; 26 88 4c 21 ; 0xf49ad
+ test cl, cl ; 84 c9 ; 0xf49b1 eltorito.c:945
+ jne short 049c4h ; 75 0f ; 0xf49b3
+ xor ax, ax ; 31 c0 ; 0xf49b5
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf49b7
+ xor dl, dl ; 30 d2 ; 0xf49ba
+ or dx, ax ; 09 c2 ; 0xf49bc
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf49be
+ jmp near 04a4bh ; e9 87 00 ; 0xf49c1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf49c4
+ jmp short 049b7h ; eb ee ; 0xf49c7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf49c9 eltorito.c:955
+ xor ah, ah ; 30 e4 ; 0xf49cc
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf49ce
+ imul dx ; f7 ea ; 0xf49d1
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf49d3
+ add si, ax ; 01 c6 ; 0xf49d6
+ mov cl, byte [es:si+021h] ; 26 8a 4c 21 ; 0xf49d8
+ test cl, cl ; 84 c9 ; 0xf49dc eltorito.c:957
+ je short 049e6h ; 74 06 ; 0xf49de
+ or bh, 0b1h ; 80 cf b1 ; 0xf49e0 eltorito.c:958
+ jmp near 0481dh ; e9 37 fe ; 0xf49e3
+ je short 04a4bh ; 74 63 ; 0xf49e6 eltorito.c:980
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49e8 eltorito.c:981
+ xor ah, ah ; 30 e4 ; 0xf49eb
+ or ah, 0b1h ; 80 cc b1 ; 0xf49ed
+ jmp short 04a32h ; eb 40 ; 0xf49f0
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf49f2 eltorito.c:989
+ xor ah, ah ; 30 e4 ; 0xf49f5
+ push ax ; 50 ; 0xf49f7
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf49f8
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf49fb
+ mov bx, si ; 89 f3 ; 0xf49fe
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf4a00
+ call 0594ah ; e8 44 0f ; 0xf4a03
+ test ax, ax ; 85 c0 ; 0xf4a06
+ je short 04a4bh ; 74 41 ; 0xf4a08
+ jmp short 04a2ah ; eb 1e ; 0xf4a0a eltorito.c:990
+ or bh, 006h ; 80 cf 06 ; 0xf4a0c eltorito.c:997
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf4a0f
+ jmp short 04a45h ; eb 31 ; 0xf4a12 eltorito.c:998
+ cmp bx, strict byte 00006h ; 83 fb 06 ; 0xf4a14 eltorito.c:1003
+ je short 04a4bh ; 74 32 ; 0xf4a17
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf4a19
+ jc short 04a2ah ; 72 0c ; 0xf4a1c
+ jbe short 04a4bh ; 76 2b ; 0xf4a1e
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf4a20
+ jc short 04a2ah ; 72 05 ; 0xf4a23
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf4a25
+ jbe short 04a4bh ; 76 21 ; 0xf4a28
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a2a eltorito.c:1030
+ xor ah, ah ; 30 e4 ; 0xf4a2d
+ or ah, 001h ; 80 cc 01 ; 0xf4a2f
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4a32
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4a35 eltorito.c:1032
+ xor ah, ah ; 30 e4 ; 0xf4a38
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4a3a eltorito.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4a3d
+ mov es, dx ; 8e c2 ; 0xf4a40
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4a42
+ or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4a45 eltorito.c:1034
+ jmp short 04a5fh ; eb 14 ; 0xf4a49 eltorito.c:1035
+ mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4a4b eltorito.c:1038
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4a4f eltorito.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4a52
+ mov es, ax ; 8e c0 ; 0xf4a55
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4a57
+ and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4a5b eltorito.c:1041
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4a5f eltorito.c:1043
+ pop di ; 5f ; 0xf4a62
+ pop si ; 5e ; 0xf4a63
+ pop bp ; 5d ; 0xf4a64
+ retn ; c3 ; 0xf4a65
+ ; disGetNextSymbol 0xf4a66 LB 0x6482 -> off=0x0 cb=0000000000000051 uValue=00000000000f3466 'print_boot_device'
+print_boot_device: ; 0xf4a66 LB 0x51
+ push bp ; 55 ; 0xf4a66 boot.c:119
+ mov bp, sp ; 89 e5 ; 0xf4a67
+ push cx ; 51 ; 0xf4a69
+ test al, al ; 84 c0 ; 0xf4a6a boot.c:127
+ je short 04a73h ; 74 05 ; 0xf4a6c
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf4a6e
+ jmp short 04a8dh ; eb 1a ; 0xf4a71 boot.c:128
+ test dl, dl ; 84 d2 ; 0xf4a73
+ je short 04a7ch ; 74 05 ; 0xf4a75
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf4a77
+ jmp short 04a8dh ; eb 11 ; 0xf4a7a boot.c:129
+ test bl, 080h ; f6 c3 80 ; 0xf4a7c
+ jne short 04a85h ; 75 04 ; 0xf4a7f
+ xor dh, dh ; 30 f6 ; 0xf4a81
+ jmp short 04a8dh ; eb 08 ; 0xf4a83 boot.c:130
+ test bl, 080h ; f6 c3 80 ; 0xf4a85
+ je short 04ab1h ; 74 27 ; 0xf4a88
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4a8a
+ mov bx, 00ddch ; bb dc 0d ; 0xf4a8d boot.c:133
+ mov cx, ds ; 8c d9 ; 0xf4a90
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4a92
+ call 01919h ; e8 81 ce ; 0xf4a95
+ mov ax, dx ; 89 d0 ; 0xf4a98
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf4a9a
+ imul dx ; f7 ea ; 0xf4a9d
+ add ax, 00e02h ; 05 02 0e ; 0xf4a9f
+ push ax ; 50 ; 0xf4aa2
+ mov ax, 004dch ; b8 dc 04 ; 0xf4aa3
+ push ax ; 50 ; 0xf4aa6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4aa7
+ push ax ; 50 ; 0xf4aaa
+ call 0195ch ; e8 ae ce ; 0xf4aab
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4aae
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4ab1 boot.c:134
+ pop cx ; 59 ; 0xf4ab4
+ pop bp ; 5d ; 0xf4ab5
+ retn ; c3 ; 0xf4ab6
+ ; disGetNextSymbol 0xf4ab7 LB 0x6431 -> off=0x0 cb=00000000000000ce uValue=00000000000f34b7 'print_boot_failure'
+print_boot_failure: ; 0xf4ab7 LB 0xce
+ push bp ; 55 ; 0xf4ab7 boot.c:141
+ mov bp, sp ; 89 e5 ; 0xf4ab8
+ push si ; 56 ; 0xf4aba
+ mov dh, cl ; 88 ce ; 0xf4abb
+ mov cl, bl ; 88 d9 ; 0xf4abd boot.c:144
+ and cl, 07fh ; 80 e1 7f ; 0xf4abf
+ xor ch, ch ; 30 ed ; 0xf4ac2
+ mov si, cx ; 89 ce ; 0xf4ac4
+ test al, al ; 84 c0 ; 0xf4ac6 boot.c:152
+ je short 04ae9h ; 74 1f ; 0xf4ac8
+ mov bx, 00ddch ; bb dc 0d ; 0xf4aca boot.c:153
+ mov cx, ds ; 8c d9 ; 0xf4acd
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4acf
+ call 01919h ; e8 44 ce ; 0xf4ad2
+ mov cx, 00e16h ; b9 16 0e ; 0xf4ad5
+ push cx ; 51 ; 0xf4ad8
+ mov cx, 004f0h ; b9 f0 04 ; 0xf4ad9
+ push cx ; 51 ; 0xf4adc
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf4add
+ push cx ; 51 ; 0xf4ae0
+ call 0195ch ; e8 78 ce ; 0xf4ae1
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4ae4
+ jmp short 04b31h ; eb 48 ; 0xf4ae7 boot.c:154
+ test dl, dl ; 84 d2 ; 0xf4ae9
+ je short 04afdh ; 74 10 ; 0xf4aeb
+ mov bx, 00ddch ; bb dc 0d ; 0xf4aed boot.c:155
+ mov cx, ds ; 8c d9 ; 0xf4af0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4af2
+ call 01919h ; e8 21 ce ; 0xf4af5
+ mov cx, 00e20h ; b9 20 0e ; 0xf4af8
+ jmp short 04ad8h ; eb db ; 0xf4afb
+ test bl, 080h ; f6 c3 80 ; 0xf4afd boot.c:156
+ je short 04b13h ; 74 11 ; 0xf4b00
+ mov bx, 00ddch ; bb dc 0d ; 0xf4b02 boot.c:157
+ mov cx, ds ; 8c d9 ; 0xf4b05
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b07
+ call 01919h ; e8 0c ce ; 0xf4b0a
+ push si ; 56 ; 0xf4b0d
+ mov cx, 00e0ch ; b9 0c 0e ; 0xf4b0e
+ jmp short 04b22h ; eb 0f ; 0xf4b11 boot.c:158
+ mov bx, 00ddch ; bb dc 0d ; 0xf4b13 boot.c:159
+ mov cx, ds ; 8c d9 ; 0xf4b16
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b18
+ call 01919h ; e8 fb cd ; 0xf4b1b
+ push si ; 56 ; 0xf4b1e
+ mov cx, 00e02h ; b9 02 0e ; 0xf4b1f
+ push cx ; 51 ; 0xf4b22
+ mov cx, 00505h ; b9 05 05 ; 0xf4b23
+ push cx ; 51 ; 0xf4b26
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf4b27
+ push cx ; 51 ; 0xf4b2a
+ call 0195ch ; e8 2e ce ; 0xf4b2b
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4b2e
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4b31 boot.c:161
+ jne short 04b7dh ; 75 46 ; 0xf4b35
+ test dh, dh ; 84 f6 ; 0xf4b37 boot.c:162
+ jne short 04b4bh ; 75 10 ; 0xf4b39
+ mov bx, 00ddch ; bb dc 0d ; 0xf4b3b boot.c:163
+ mov cx, ds ; 8c d9 ; 0xf4b3e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b40
+ call 01919h ; e8 d3 cd ; 0xf4b43
+ mov dx, 0051dh ; ba 1d 05 ; 0xf4b46
+ jmp short 04b59h ; eb 0e ; 0xf4b49 boot.c:164
+ mov bx, 00ddch ; bb dc 0d ; 0xf4b4b boot.c:165
+ mov cx, ds ; 8c d9 ; 0xf4b4e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b50
+ call 01919h ; e8 c3 cd ; 0xf4b53
+ mov dx, 00538h ; ba 38 05 ; 0xf4b56
+ push dx ; 52 ; 0xf4b59
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf4b5a
+ push dx ; 52 ; 0xf4b5d
+ call 0195ch ; e8 fb cd ; 0xf4b5e
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4b61
+ mov bx, 00ddch ; bb dc 0d ; 0xf4b64 boot.c:166
+ mov cx, ds ; 8c d9 ; 0xf4b67
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b69
+ call 01919h ; e8 aa cd ; 0xf4b6c
+ mov dx, 0055eh ; ba 5e 05 ; 0xf4b6f
+ push dx ; 52 ; 0xf4b72
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf4b73
+ push dx ; 52 ; 0xf4b76
+ call 0195ch ; e8 e2 cd ; 0xf4b77
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4b7a
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4b7d boot.c:168
+ pop si ; 5e ; 0xf4b80
+ pop bp ; 5d ; 0xf4b81
+ retn 00002h ; c2 02 00 ; 0xf4b82
+ ; disGetNextSymbol 0xf4b85 LB 0x6363 -> off=0x0 cb=000000000000002a uValue=00000000000f3585 'print_cdromboot_failure'
+print_cdromboot_failure: ; 0xf4b85 LB 0x2a
+ push bp ; 55 ; 0xf4b85 boot.c:174
+ mov bp, sp ; 89 e5 ; 0xf4b86
+ push bx ; 53 ; 0xf4b88
+ push cx ; 51 ; 0xf4b89
+ push dx ; 52 ; 0xf4b8a
+ mov dx, ax ; 89 c2 ; 0xf4b8b
+ mov bx, 00ddch ; bb dc 0d ; 0xf4b8d boot.c:176
+ mov cx, ds ; 8c d9 ; 0xf4b90
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b92
+ call 01919h ; e8 81 cd ; 0xf4b95
+ push dx ; 52 ; 0xf4b98
+ mov dx, 0058bh ; ba 8b 05 ; 0xf4b99
+ push dx ; 52 ; 0xf4b9c
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf4b9d
+ push dx ; 52 ; 0xf4ba0
+ call 0195ch ; e8 b8 cd ; 0xf4ba1
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4ba4
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf4ba7 boot.c:178
+ pop dx ; 5a ; 0xf4baa
+ pop cx ; 59 ; 0xf4bab
+ pop bx ; 5b ; 0xf4bac
+ pop bp ; 5d ; 0xf4bad
+ retn ; c3 ; 0xf4bae
+ ; disGetNextSymbol 0xf4baf LB 0x6339 -> off=0x0 cb=0000000000000266 uValue=00000000000f35af 'int19_function'
+int19_function: ; 0xf4baf LB 0x266
+ push bp ; 55 ; 0xf4baf boot.c:181
+ mov bp, sp ; 89 e5 ; 0xf4bb0
+ push si ; 56 ; 0xf4bb2
+ push di ; 57 ; 0xf4bb3
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf4bb4
+ mov di, strict word 0000eh ; bf 0e 00 ; 0xf4bb7 boot.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4bba
+ mov es, ax ; 8e c0 ; 0xf4bbd
+ mov di, word [es:di] ; 26 8b 3d ; 0xf4bbf
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf4bc2 boot.c:59
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4bc5 boot.c:192
+ mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4bc9 boot.c:215
+ call 01664h ; e8 95 ca ; 0xf4bcc
+ mov bl, al ; 88 c3 ; 0xf4bcf
+ xor bh, bh ; 30 ff ; 0xf4bd1
+ mov ax, strict word 00038h ; b8 38 00 ; 0xf4bd3 boot.c:216
+ call 01664h ; e8 8b ca ; 0xf4bd6
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4bd9
+ xor ah, ah ; 30 e4 ; 0xf4bdb
+ mov CL, strict byte 004h ; b1 04 ; 0xf4bdd
+ sal ax, CL ; d3 e0 ; 0xf4bdf
+ mov dx, bx ; 89 da ; 0xf4be1
+ or dx, ax ; 09 c2 ; 0xf4be3
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4be5 boot.c:217
+ call 01664h ; e8 79 ca ; 0xf4be8
+ and AL, strict byte 00fh ; 24 0f ; 0xf4beb
+ xor ah, ah ; 30 e4 ; 0xf4bed
+ mov CL, strict byte 00ch ; b1 0c ; 0xf4bef
+ sal ax, CL ; d3 e0 ; 0xf4bf1
+ or dx, ax ; 09 c2 ; 0xf4bf3
+ mov bx, 00331h ; bb 31 03 ; 0xf4bf5 boot.c:48
+ mov es, di ; 8e c7 ; 0xf4bf8
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4bfa
+ test al, al ; 84 c0 ; 0xf4bfd boot.c:49
+ je short 04c05h ; 74 04 ; 0xf4bff
+ mov dl, al ; 88 c2 ; 0xf4c01 boot.c:48
+ xor dh, dh ; 30 f6 ; 0xf4c03 boot.c:49
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4c05 boot.c:221
+ jne short 04c1ch ; 75 11 ; 0xf4c09
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c0b boot.c:222
+ call 01664h ; e8 53 ca ; 0xf4c0e
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4c11
+ xor ah, ah ; 30 e4 ; 0xf4c13
+ mov CL, strict byte 004h ; b1 04 ; 0xf4c15
+ sar ax, CL ; d3 f8 ; 0xf4c17
+ call 07784h ; e8 68 2b ; 0xf4c19
+ cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4c1c boot.c:224
+ jne short 04c26h ; 75 04 ; 0xf4c20
+ mov CL, strict byte 004h ; b1 04 ; 0xf4c22
+ shr dx, CL ; d3 ea ; 0xf4c24
+ cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4c26 boot.c:225
+ jne short 04c30h ; 75 04 ; 0xf4c2a
+ mov dl, dh ; 88 f2 ; 0xf4c2c
+ xor dh, dh ; 30 f6 ; 0xf4c2e
+ cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4c30 boot.c:226
+ jne short 04c3ah ; 75 04 ; 0xf4c34
+ mov CL, strict byte 00ch ; b1 0c ; 0xf4c36
+ shr dx, CL ; d3 ea ; 0xf4c38
+ cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4c3a boot.c:227
+ jnc short 04c43h ; 73 04 ; 0xf4c3d
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4c3f
+ xor al, al ; 30 c0 ; 0xf4c43 boot.c:228
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4c45
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4c48
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4c4b boot.c:229
+ mov bx, 00ddch ; bb dc 0d ; 0xf4c4e boot.c:230
+ mov cx, ds ; 8c d9 ; 0xf4c51
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c53
+ call 01919h ; e8 c0 cc ; 0xf4c56
+ push dx ; 52 ; 0xf4c59
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf4c5a
+ xor ah, ah ; 30 e4 ; 0xf4c5d
+ push ax ; 50 ; 0xf4c5f
+ mov ax, 005abh ; b8 ab 05 ; 0xf4c60
+ push ax ; 50 ; 0xf4c63
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c64
+ push ax ; 50 ; 0xf4c67
+ call 0195ch ; e8 f1 cc ; 0xf4c68
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4c6b
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4c6e boot.c:232
+ cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4c71
+ jc short 04c84h ; 72 0e ; 0xf4c74
+ jbe short 04c93h ; 76 1b ; 0xf4c76
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4c78
+ je short 04cb0h ; 74 33 ; 0xf4c7b
+ cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4c7d
+ je short 04ca6h ; 74 24 ; 0xf4c80
+ jmp short 04cdfh ; eb 5b ; 0xf4c82
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4c84
+ jne short 04cdfh ; 75 56 ; 0xf4c87
+ xor al, al ; 30 c0 ; 0xf4c89 boot.c:234
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4c8b
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4c8e boot.c:235
+ jmp short 04cf2h ; eb 5f ; 0xf4c91 boot.c:236
+ mov bx, 00330h ; bb 30 03 ; 0xf4c93 boot.c:48
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4c96
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4c99
+ add AL, strict byte 080h ; 04 80 ; 0xf4c9c boot.c:242
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4c9e
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf4ca1 boot.c:243
+ jmp short 04cf2h ; eb 4c ; 0xf4ca4 boot.c:244
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4ca6 boot.c:247
+ mov byte [bp-008h], 001h ; c6 46 f8 01 ; 0xf4caa boot.c:248
+ jmp short 04cbah ; eb 0a ; 0xf4cae boot.c:249
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4cb0 boot.c:250
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4cb4 boot.c:266
+ je short 04cf2h ; 74 38 ; 0xf4cb8
+ call 03ff0h ; e8 33 f3 ; 0xf4cba boot.c:267
+ mov dx, ax ; 89 c2 ; 0xf4cbd
+ test AL, strict byte 0ffh ; a8 ff ; 0xf4cbf boot.c:270
+ je short 04ce6h ; 74 23 ; 0xf4cc1
+ call 04b85h ; e8 bf fe ; 0xf4cc3 boot.c:271
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4cc6 boot.c:272
+ xor ah, ah ; 30 e4 ; 0xf4cc9
+ push ax ; 50 ; 0xf4ccb
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4ccc
+ xor bh, bh ; 30 ff ; 0xf4ccf
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4cd1
+ xor dh, dh ; 30 f6 ; 0xf4cd4
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4cd6
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4cd9
+ call 04ab7h ; e8 d8 fd ; 0xf4cdc
+ xor ax, ax ; 31 c0 ; 0xf4cdf
+ xor dx, dx ; 31 d2 ; 0xf4ce1
+ jmp near 04e0eh ; e9 28 01 ; 0xf4ce3
+ mov bx, 00322h ; bb 22 03 ; 0xf4ce6 boot.c:58
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4ce9
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf4cec
+ mov byte [bp-006h], dh ; 88 76 fa ; 0xf4cef boot.c:277
+ cmp byte [bp-00ah], 001h ; 80 7e f6 01 ; 0xf4cf2 boot.c:283
+ jne short 04d4dh ; 75 55 ; 0xf4cf6
+ xor si, si ; 31 f6 ; 0xf4cf8 boot.c:286
+ mov ax, 0e200h ; b8 00 e2 ; 0xf4cfa
+ mov es, ax ; 8e c0 ; 0xf4cfd
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4cff boot.c:287
+ jne short 04cc6h ; 75 c0 ; 0xf4d04
+ mov di, ax ; 89 c7 ; 0xf4d06 boot.c:293
+ mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4d08
+ cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4d0c boot.c:294
+ jne short 04cc6h ; 75 b2 ; 0xf4d12
+ cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4d14
+ jne short 04cc6h ; 75 ab ; 0xf4d19
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4d1b boot.c:296
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4d1f
+ mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf4d22
+ cmp dx, 06568h ; 81 fa 68 65 ; 0xf4d26 boot.c:297
+ jne short 04d4fh ; 75 23 ; 0xf4d2a
+ cmp ax, 07445h ; 3d 45 74 ; 0xf4d2c
+ jne short 04d4fh ; 75 1e ; 0xf4d2f
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4d31 boot.c:299
+ xor bh, bh ; 30 ff ; 0xf4d34
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4d36
+ xor dh, dh ; 30 f6 ; 0xf4d39
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4d3b
+ xor ah, ah ; 30 e4 ; 0xf4d3e
+ call 04a66h ; e8 23 fd ; 0xf4d40
+ mov word [bp-012h], strict word 00006h ; c7 46 ee 06 00 ; 0xf4d43 boot.c:300
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4d48
+ jmp short 04d6eh ; eb 21 ; 0xf4d4b boot.c:303
+ jmp short 04d74h ; eb 25 ; 0xf4d4d
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4d4f boot.c:306
+ xor bh, bh ; 30 ff ; 0xf4d52
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4d54
+ xor dh, dh ; 30 f6 ; 0xf4d57
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4d59
+ xor ah, ah ; 30 e4 ; 0xf4d5c
+ call 04a66h ; e8 05 fd ; 0xf4d5e
+ sti ; fb ; 0xf4d61 boot.c:307
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4d62 boot.c:308
+ mov es, di ; 8e c7 ; 0xf4d65
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4d67
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf4d6b
+ call far [bp-012h] ; ff 5e ee ; 0xf4d6e boot.c:309
+ jmp near 04cc6h ; e9 52 ff ; 0xf4d71 boot.c:312
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4d74 boot.c:320
+ jne short 04da1h ; 75 27 ; 0xf4d78
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4d7a
+ jne short 04da1h ; 75 21 ; 0xf4d7e
+ mov si, 007c0h ; be c0 07 ; 0xf4d80 boot.c:321
+ mov es, si ; 8e c6 ; 0xf4d83 boot.c:323
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4d85
+ mov ax, 00201h ; b8 01 02 ; 0xf4d88
+ mov DH, strict byte 000h ; b6 00 ; 0xf4d8b
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4d8d
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf4d90
+ int 013h ; cd 13 ; 0xf4d92
+ mov ax, strict word 00000h ; b8 00 00 ; 0xf4d94
+ sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4d97
+ test ax, ax ; 85 c0 ; 0xf4d9a boot.c:324
+ je short 04da1h ; 74 03 ; 0xf4d9c
+ jmp near 04cc6h ; e9 25 ff ; 0xf4d9e
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf4da1 boot.c:339
+ je short 04dabh ; 74 04 ; 0xf4da5
+ xor al, al ; 30 c0 ; 0xf4da7
+ jmp short 04dadh ; eb 02 ; 0xf4da9 boot.c:340
+ mov AL, strict byte 001h ; b0 01 ; 0xf4dab
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4dad boot.c:344
+ je short 04db5h ; 74 02 ; 0xf4db1
+ mov AL, strict byte 001h ; b0 01 ; 0xf4db3 boot.c:345
+ xor bx, bx ; 31 db ; 0xf4db5 boot.c:58
+ mov es, si ; 8e c6 ; 0xf4db7
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf4db9
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4dbc boot.c:58
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4dbf
+ cmp di, dx ; 39 d7 ; 0xf4dc2 boot.c:59
+ je short 04dd5h ; 74 0f ; 0xf4dc4
+ test al, al ; 84 c0 ; 0xf4dc6
+ jne short 04dedh ; 75 23 ; 0xf4dc8
+ mov bx, 001feh ; bb fe 01 ; 0xf4dca boot.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4dcd
+ cmp ax, 0aa55h ; 3d 55 aa ; 0xf4dd0 boot.c:59
+ je short 04dedh ; 74 18 ; 0xf4dd3
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4dd5 boot.c:351
+ xor ah, ah ; 30 e4 ; 0xf4dd8
+ push ax ; 50 ; 0xf4dda
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4ddb
+ xor bh, bh ; 30 ff ; 0xf4dde
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4de0
+ xor dh, dh ; 30 f6 ; 0xf4de3
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4de5
+ xor cx, cx ; 31 c9 ; 0xf4de8
+ jmp near 04cdch ; e9 ef fe ; 0xf4dea
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4ded boot.c:357
+ xor bh, bh ; 30 ff ; 0xf4df0
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4df2
+ xor dh, dh ; 30 f6 ; 0xf4df5
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4df7
+ xor ah, ah ; 30 e4 ; 0xf4dfa
+ call 04a66h ; e8 67 fc ; 0xf4dfc
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4dff boot.c:363
+ xor ah, ah ; 30 e4 ; 0xf4e02
+ mov bx, ax ; 89 c3 ; 0xf4e04
+ xor dx, dx ; 31 d2 ; 0xf4e06
+ xor al, al ; 30 c0 ; 0xf4e08
+ add ax, si ; 01 f0 ; 0xf4e0a
+ adc dx, bx ; 11 da ; 0xf4e0c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4e0e boot.c:364
+ pop di ; 5f ; 0xf4e11
+ pop si ; 5e ; 0xf4e12
+ pop bp ; 5d ; 0xf4e13
+ retn ; c3 ; 0xf4e14
+ ; disGetNextSymbol 0xf4e15 LB 0x60d3 -> off=0x0 cb=0000000000000016 uValue=00000000000f3815 'keyboard_panic'
+keyboard_panic: ; 0xf4e15 LB 0x16
+ push bp ; 55 ; 0xf4e15 keyboard.c:204
+ mov bp, sp ; 89 e5 ; 0xf4e16
+ push ax ; 50 ; 0xf4e18 keyboard.c:209
+ mov ax, 005cah ; b8 ca 05 ; 0xf4e19
+ push ax ; 50 ; 0xf4e1c
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf4e1d
+ push ax ; 50 ; 0xf4e20
+ call 0195ch ; e8 38 cb ; 0xf4e21
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4e24
+ mov sp, bp ; 89 ec ; 0xf4e27 keyboard.c:210
+ pop bp ; 5d ; 0xf4e29
+ retn ; c3 ; 0xf4e2a
+ ; disGetNextSymbol 0xf4e2b LB 0x60bd -> off=0x0 cb=000000000000026a uValue=00000000000f382b 'keyboard_init'
+keyboard_init: ; 0xf4e2b LB 0x26a
+ push bp ; 55 ; 0xf4e2b keyboard.c:218
+ mov bp, sp ; 89 e5 ; 0xf4e2c
+ mov AL, strict byte 0aah ; b0 aa ; 0xf4e2e keyboard.c:224
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e30
+ out DX, AL ; ee ; 0xf4e33
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e34 keyboard.c:227
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e37 keyboard.c:228
+ in AL, DX ; ec ; 0xf4e3a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e3b
+ test AL, strict byte 002h ; a8 02 ; 0xf4e3d
+ je short 04e4eh ; 74 0d ; 0xf4e3f
+ dec bx ; 4b ; 0xf4e41
+ test bx, bx ; 85 db ; 0xf4e42
+ jbe short 04e4eh ; 76 08 ; 0xf4e44
+ xor al, al ; 30 c0 ; 0xf4e46
+ mov dx, 00080h ; ba 80 00 ; 0xf4e48
+ out DX, AL ; ee ; 0xf4e4b
+ jmp short 04e37h ; eb e9 ; 0xf4e4c
+ test bx, bx ; 85 db ; 0xf4e4e keyboard.c:229
+ jne short 04e57h ; 75 05 ; 0xf4e50
+ xor ax, ax ; 31 c0 ; 0xf4e52
+ call 04e15h ; e8 be ff ; 0xf4e54
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e57 keyboard.c:232
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e5a keyboard.c:233
+ in AL, DX ; ec ; 0xf4e5d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e5e
+ test AL, strict byte 001h ; a8 01 ; 0xf4e60
+ jne short 04e71h ; 75 0d ; 0xf4e62
+ dec bx ; 4b ; 0xf4e64
+ test bx, bx ; 85 db ; 0xf4e65
+ jbe short 04e71h ; 76 08 ; 0xf4e67
+ mov AL, strict byte 001h ; b0 01 ; 0xf4e69
+ mov dx, 00080h ; ba 80 00 ; 0xf4e6b
+ out DX, AL ; ee ; 0xf4e6e
+ jmp short 04e5ah ; eb e9 ; 0xf4e6f
+ test bx, bx ; 85 db ; 0xf4e71 keyboard.c:234
+ jne short 04e7bh ; 75 06 ; 0xf4e73
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4e75
+ call 04e15h ; e8 9a ff ; 0xf4e78
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4e7b keyboard.c:237
+ in AL, DX ; ec ; 0xf4e7e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e7f
+ cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4e81
+ je short 04e8ch ; 74 06 ; 0xf4e84
+ mov ax, 003dfh ; b8 df 03 ; 0xf4e86 keyboard.c:238
+ call 04e15h ; e8 89 ff ; 0xf4e89
+ mov AL, strict byte 0abh ; b0 ab ; 0xf4e8c keyboard.c:242
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e8e
+ out DX, AL ; ee ; 0xf4e91
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e92 keyboard.c:245
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e95 keyboard.c:246
+ in AL, DX ; ec ; 0xf4e98
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e99
+ test AL, strict byte 002h ; a8 02 ; 0xf4e9b
+ je short 04each ; 74 0d ; 0xf4e9d
+ dec bx ; 4b ; 0xf4e9f
+ test bx, bx ; 85 db ; 0xf4ea0
+ jbe short 04each ; 76 08 ; 0xf4ea2
+ mov AL, strict byte 010h ; b0 10 ; 0xf4ea4
+ mov dx, 00080h ; ba 80 00 ; 0xf4ea6
+ out DX, AL ; ee ; 0xf4ea9
+ jmp short 04e95h ; eb e9 ; 0xf4eaa
+ test bx, bx ; 85 db ; 0xf4eac keyboard.c:247
+ jne short 04eb6h ; 75 06 ; 0xf4eae
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4eb0
+ call 04e15h ; e8 5f ff ; 0xf4eb3
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4eb6 keyboard.c:250
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4eb9 keyboard.c:251
+ in AL, DX ; ec ; 0xf4ebc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ebd
+ test AL, strict byte 001h ; a8 01 ; 0xf4ebf
+ jne short 04ed0h ; 75 0d ; 0xf4ec1
+ dec bx ; 4b ; 0xf4ec3
+ test bx, bx ; 85 db ; 0xf4ec4
+ jbe short 04ed0h ; 76 08 ; 0xf4ec6
+ mov AL, strict byte 011h ; b0 11 ; 0xf4ec8
+ mov dx, 00080h ; ba 80 00 ; 0xf4eca
+ out DX, AL ; ee ; 0xf4ecd
+ jmp short 04eb9h ; eb e9 ; 0xf4ece
+ test bx, bx ; 85 db ; 0xf4ed0 keyboard.c:252
+ jne short 04edah ; 75 06 ; 0xf4ed2
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4ed4
+ call 04e15h ; e8 3b ff ; 0xf4ed7
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4eda keyboard.c:256
+ in AL, DX ; ec ; 0xf4edd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ede
+ test ax, ax ; 85 c0 ; 0xf4ee0
+ je short 04eeah ; 74 06 ; 0xf4ee2
+ mov ax, 003e0h ; b8 e0 03 ; 0xf4ee4 keyboard.c:257
+ call 04e15h ; e8 2b ff ; 0xf4ee7
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf4eea keyboard.c:263
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4eec
+ out DX, AL ; ee ; 0xf4eef
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ef0 keyboard.c:266
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ef3 keyboard.c:267
+ in AL, DX ; ec ; 0xf4ef6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ef7
+ test AL, strict byte 002h ; a8 02 ; 0xf4ef9
+ je short 04f0ah ; 74 0d ; 0xf4efb
+ dec bx ; 4b ; 0xf4efd
+ test bx, bx ; 85 db ; 0xf4efe
+ jbe short 04f0ah ; 76 08 ; 0xf4f00
+ mov AL, strict byte 020h ; b0 20 ; 0xf4f02
+ mov dx, 00080h ; ba 80 00 ; 0xf4f04
+ out DX, AL ; ee ; 0xf4f07
+ jmp short 04ef3h ; eb e9 ; 0xf4f08
+ test bx, bx ; 85 db ; 0xf4f0a keyboard.c:268
+ jne short 04f14h ; 75 06 ; 0xf4f0c
+ mov ax, strict word 00014h ; b8 14 00 ; 0xf4f0e
+ call 04e15h ; e8 01 ff ; 0xf4f11
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f14 keyboard.c:271
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f17 keyboard.c:272
+ in AL, DX ; ec ; 0xf4f1a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f1b
+ test AL, strict byte 001h ; a8 01 ; 0xf4f1d
+ jne short 04f2eh ; 75 0d ; 0xf4f1f
+ dec bx ; 4b ; 0xf4f21
+ test bx, bx ; 85 db ; 0xf4f22
+ jbe short 04f2eh ; 76 08 ; 0xf4f24
+ mov AL, strict byte 021h ; b0 21 ; 0xf4f26
+ mov dx, 00080h ; ba 80 00 ; 0xf4f28
+ out DX, AL ; ee ; 0xf4f2b
+ jmp short 04f17h ; eb e9 ; 0xf4f2c
+ test bx, bx ; 85 db ; 0xf4f2e keyboard.c:273
+ jne short 04f38h ; 75 06 ; 0xf4f30
+ mov ax, strict word 00015h ; b8 15 00 ; 0xf4f32
+ call 04e15h ; e8 dd fe ; 0xf4f35
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f38 keyboard.c:276
+ in AL, DX ; ec ; 0xf4f3b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f3c
+ cmp ax, 000fah ; 3d fa 00 ; 0xf4f3e
+ je short 04f49h ; 74 06 ; 0xf4f41
+ mov ax, 003e1h ; b8 e1 03 ; 0xf4f43 keyboard.c:277
+ call 04e15h ; e8 cc fe ; 0xf4f46
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f49 keyboard.c:281
+ in AL, DX ; ec ; 0xf4f4c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f4d
+ test AL, strict byte 001h ; a8 01 ; 0xf4f4f
+ jne short 04f5bh ; 75 08 ; 0xf4f51
+ mov AL, strict byte 031h ; b0 31 ; 0xf4f53
+ mov dx, 00080h ; ba 80 00 ; 0xf4f55
+ out DX, AL ; ee ; 0xf4f58
+ jmp short 04f49h ; eb ee ; 0xf4f59
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f5b keyboard.c:283
+ in AL, DX ; ec ; 0xf4f5e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f5f
+ cmp ax, 000aah ; 3d aa 00 ; 0xf4f61
+ je short 04f74h ; 74 0e ; 0xf4f64
+ in AL, DX ; ec ; 0xf4f66
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f67
+ cmp ax, 000aah ; 3d aa 00 ; 0xf4f69
+ je short 04f74h ; 74 06 ; 0xf4f6c
+ mov ax, 003e2h ; b8 e2 03 ; 0xf4f6e keyboard.c:284
+ call 04e15h ; e8 a1 fe ; 0xf4f71
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf4f74 keyboard.c:288
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f76
+ out DX, AL ; ee ; 0xf4f79
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f7a keyboard.c:291
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f7d keyboard.c:292
+ in AL, DX ; ec ; 0xf4f80
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f81
+ test AL, strict byte 002h ; a8 02 ; 0xf4f83
+ je short 04f94h ; 74 0d ; 0xf4f85
+ dec bx ; 4b ; 0xf4f87
+ test bx, bx ; 85 db ; 0xf4f88
+ jbe short 04f94h ; 76 08 ; 0xf4f8a
+ mov AL, strict byte 040h ; b0 40 ; 0xf4f8c
+ mov dx, 00080h ; ba 80 00 ; 0xf4f8e
+ out DX, AL ; ee ; 0xf4f91
+ jmp short 04f7dh ; eb e9 ; 0xf4f92
+ test bx, bx ; 85 db ; 0xf4f94 keyboard.c:293
+ jne short 04f9eh ; 75 06 ; 0xf4f96
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf4f98
+ call 04e15h ; e8 77 fe ; 0xf4f9b
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f9e keyboard.c:296
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fa1 keyboard.c:297
+ in AL, DX ; ec ; 0xf4fa4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fa5
+ test AL, strict byte 001h ; a8 01 ; 0xf4fa7
+ jne short 04fb8h ; 75 0d ; 0xf4fa9
+ dec bx ; 4b ; 0xf4fab
+ test bx, bx ; 85 db ; 0xf4fac
+ jbe short 04fb8h ; 76 08 ; 0xf4fae
+ mov AL, strict byte 041h ; b0 41 ; 0xf4fb0
+ mov dx, 00080h ; ba 80 00 ; 0xf4fb2
+ out DX, AL ; ee ; 0xf4fb5
+ jmp short 04fa1h ; eb e9 ; 0xf4fb6
+ test bx, bx ; 85 db ; 0xf4fb8 keyboard.c:298
+ jne short 04fc2h ; 75 06 ; 0xf4fba
+ mov ax, strict word 00029h ; b8 29 00 ; 0xf4fbc
+ call 04e15h ; e8 53 fe ; 0xf4fbf
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4fc2 keyboard.c:301
+ in AL, DX ; ec ; 0xf4fc5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fc6
+ cmp ax, 000fah ; 3d fa 00 ; 0xf4fc8
+ je short 04fd3h ; 74 06 ; 0xf4fcb
+ mov ax, 003e3h ; b8 e3 03 ; 0xf4fcd keyboard.c:302
+ call 04e15h ; e8 42 fe ; 0xf4fd0
+ mov AL, strict byte 060h ; b0 60 ; 0xf4fd3 keyboard.c:306
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fd5
+ out DX, AL ; ee ; 0xf4fd8
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fd9 keyboard.c:309
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fdc keyboard.c:310
+ in AL, DX ; ec ; 0xf4fdf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fe0
+ test AL, strict byte 002h ; a8 02 ; 0xf4fe2
+ je short 04ff3h ; 74 0d ; 0xf4fe4
+ dec bx ; 4b ; 0xf4fe6
+ test bx, bx ; 85 db ; 0xf4fe7
+ jbe short 04ff3h ; 76 08 ; 0xf4fe9
+ mov AL, strict byte 050h ; b0 50 ; 0xf4feb
+ mov dx, 00080h ; ba 80 00 ; 0xf4fed
+ out DX, AL ; ee ; 0xf4ff0
+ jmp short 04fdch ; eb e9 ; 0xf4ff1
+ test bx, bx ; 85 db ; 0xf4ff3 keyboard.c:311
+ jne short 04ffdh ; 75 06 ; 0xf4ff5
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf4ff7
+ call 04e15h ; e8 18 fe ; 0xf4ffa
+ mov AL, strict byte 065h ; b0 65 ; 0xf4ffd keyboard.c:314
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4fff
+ out DX, AL ; ee ; 0xf5002
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5003 keyboard.c:317
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5006 keyboard.c:318
+ in AL, DX ; ec ; 0xf5009
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf500a
+ test AL, strict byte 002h ; a8 02 ; 0xf500c
+ je short 0501dh ; 74 0d ; 0xf500e
+ dec bx ; 4b ; 0xf5010
+ test bx, bx ; 85 db ; 0xf5011
+ jbe short 0501dh ; 76 08 ; 0xf5013
+ mov AL, strict byte 060h ; b0 60 ; 0xf5015
+ mov dx, 00080h ; ba 80 00 ; 0xf5017
+ out DX, AL ; ee ; 0xf501a
+ jmp short 05006h ; eb e9 ; 0xf501b
+ test bx, bx ; 85 db ; 0xf501d keyboard.c:319
+ jne short 05027h ; 75 06 ; 0xf501f
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf5021
+ call 04e15h ; e8 ee fd ; 0xf5024
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf5027 keyboard.c:322
+ 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:325
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5030 keyboard.c:326
+ 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 070h ; b0 70 ; 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:327
+ jne short 05051h ; 75 06 ; 0xf5049
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf504b
+ call 04e15h ; e8 c4 fd ; 0xf504e
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5051 keyboard.c:330
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5054 keyboard.c:331
+ 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 071h ; b0 71 ; 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:332
+ jne short 05075h ; 75 06 ; 0xf506d
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf506f
+ call 04e15h ; e8 a0 fd ; 0xf5072
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5075 keyboard.c:335
+ 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, 003e4h ; b8 e4 03 ; 0xf5080 keyboard.c:336
+ call 04e15h ; e8 8f fd ; 0xf5083
+ mov AL, strict byte 0a8h ; b0 a8 ; 0xf5086 keyboard.c:340
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5088
+ out DX, AL ; ee ; 0xf508b
+ xor ax, ax ; 31 c0 ; 0xf508c keyboard.c:345
+ call 064ebh ; e8 5a 14 ; 0xf508e
+ mov sp, bp ; 89 ec ; 0xf5091 keyboard.c:346
+ pop bp ; 5d ; 0xf5093
+ retn ; c3 ; 0xf5094
+ ; disGetNextSymbol 0xf5095 LB 0x5e53 -> off=0x0 cb=0000000000000045 uValue=00000000000f3a95 'enqueue_key'
+enqueue_key: ; 0xf5095 LB 0x45
+ push bx ; 53 ; 0xf5095 keyboard.c:349
+ push cx ; 51 ; 0xf5096
+ push bp ; 55 ; 0xf5097
+ mov bp, sp ; 89 e5 ; 0xf5098
+ mov dh, al ; 88 c6 ; 0xf509a
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf509c keyboard.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf509f
+ mov es, ax ; 8e c0 ; 0xf50a2
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf50a4
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf50a7 keyboard.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf50aa
+ mov bx, ax ; 89 c3 ; 0xf50ad keyboard.c:364
+ inc ax ; 40 ; 0xf50af keyboard.c:365
+ inc ax ; 40 ; 0xf50b0
+ cmp ax, strict word 0003eh ; 3d 3e 00 ; 0xf50b1 keyboard.c:366
+ jc short 050b9h ; 72 03 ; 0xf50b4
+ mov ax, strict word 0001eh ; b8 1e 00 ; 0xf50b6 keyboard.c:367
+ cmp ax, cx ; 39 c8 ; 0xf50b9 keyboard.c:369
+ jne short 050c1h ; 75 04 ; 0xf50bb
+ xor ax, cx ; 31 c8 ; 0xf50bd keyboard.c:370
+ jmp short 050d6h ; eb 15 ; 0xf50bf
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf50c1 keyboard.c:53
+ mov es, cx ; 8e c1 ; 0xf50c4
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf50c6
+ inc bx ; 43 ; 0xf50c9 keyboard.c:373
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf50ca keyboard.c:53
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf50cd keyboard.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf50d0
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf50d3 keyboard.c:375
+ pop bp ; 5d ; 0xf50d6 keyboard.c:376
+ pop cx ; 59 ; 0xf50d7
+ pop bx ; 5b ; 0xf50d8
+ retn ; c3 ; 0xf50d9
+ ; disGetNextSymbol 0xf50da LB 0x5e0e -> off=0x35 cb=000000000000040a uValue=00000000000f3b0f 'int09_function'
+ db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
+ db 01dh, 09eh, 053h, 0cah, 051h, 098h, 051h, 098h, 051h, 02fh, 052h, 073h, 051h, 0a9h, 052h, 004h
+ db 053h, 083h, 053h, 068h, 053h, 0feh, 051h, 098h, 051h, 098h, 051h, 082h, 052h, 08ah, 051h, 0ech
+ db 052h, 053h, 053h, 07eh, 053h
+int09_function: ; 0xf510f LB 0x40a
+ push bp ; 55 ; 0xf510f keyboard.c:381
+ mov bp, sp ; 89 e5 ; 0xf5110
+ push si ; 56 ; 0xf5112
+ push di ; 57 ; 0xf5113
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf5114
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5117 keyboard.c:392
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf511a
+ test al, al ; 84 c0 ; 0xf511d keyboard.c:394
+ jne short 0513dh ; 75 1c ; 0xf511f
+ mov bx, 00ddch ; bb dc 0d ; 0xf5121 keyboard.c:395
+ mov cx, ds ; 8c d9 ; 0xf5124
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5126
+ call 01919h ; e8 ed c7 ; 0xf5129
+ mov ax, 005ddh ; b8 dd 05 ; 0xf512c
+ push ax ; 50 ; 0xf512f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5130
+ push ax ; 50 ; 0xf5133
+ call 0195ch ; e8 25 c8 ; 0xf5134
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5137
+ jmp near 0527bh ; e9 3e 01 ; 0xf513a keyboard.c:396
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf513d keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5140
+ mov es, ax ; 8e c0 ; 0xf5143
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5145
+ mov dl, ah ; 88 e2 ; 0xf5148 keyboard.c:49
+ mov bx, 00096h ; bb 96 00 ; 0xf514a keyboard.c:48
+ mov dh, byte [es:bx] ; 26 8a 37 ; 0xf514d
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf5150 keyboard.c:49
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5153 keyboard.c:48
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf5156
+ mov bl, bh ; 88 fb ; 0xf5159 keyboard.c:49
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf515b keyboard.c:404
+ push CS ; 0e ; 0xf515e
+ pop ES ; 07 ; 0xf515f
+ mov cx, strict word 00012h ; b9 12 00 ; 0xf5160
+ mov di, 050dah ; bf da 50 ; 0xf5163
+ repne scasb ; f2 ae ; 0xf5166
+ sal cx, 1 ; d1 e1 ; 0xf5168
+ mov di, cx ; 89 cf ; 0xf516a
+ mov cx, word [cs:di+050ebh] ; 2e 8b 8d eb 50 ; 0xf516c
+ jmp cx ; ff e1 ; 0xf5171
+ xor bl, 040h ; 80 f3 40 ; 0xf5173 keyboard.c:406
+ mov si, strict word 00017h ; be 17 00 ; 0xf5176 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5179
+ mov es, ax ; 8e c0 ; 0xf517c
+ mov byte [es:si], bl ; 26 88 1c ; 0xf517e
+ or dl, 040h ; 80 ca 40 ; 0xf5181 keyboard.c:408
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5184 keyboard.c:53
+ jmp near 05378h ; e9 ee 01 ; 0xf5187
+ and dl, 0bfh ; 80 e2 bf ; 0xf518a keyboard.c:412
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf518d keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5190
+ mov es, ax ; 8e c0 ; 0xf5193
+ jmp near 05378h ; e9 e0 01 ; 0xf5195
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf5198 keyboard.c:421
+ jne short 051fch ; 75 5e ; 0xf519c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf519e keyboard.c:422
+ and AL, strict byte 07fh ; 24 7f ; 0xf51a1
+ cmp AL, strict byte 02ah ; 3c 2a ; 0xf51a3
+ jne short 051ach ; 75 05 ; 0xf51a5
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf51a7
+ jmp short 051afh ; eb 03 ; 0xf51aa
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf51ac
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf51af keyboard.c:423
+ je short 051bbh ; 74 06 ; 0xf51b3
+ not al ; f6 d0 ; 0xf51b5 keyboard.c:424
+ and bl, al ; 20 c3 ; 0xf51b7
+ jmp short 051bdh ; eb 02 ; 0xf51b9 keyboard.c:425
+ or bl, al ; 08 c3 ; 0xf51bb keyboard.c:426
+ mov si, strict word 00017h ; be 17 00 ; 0xf51bd keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51c0
+ mov es, ax ; 8e c0 ; 0xf51c3
+ mov byte [es:si], bl ; 26 88 1c ; 0xf51c5
+ jmp short 051fch ; eb 32 ; 0xf51c8 keyboard.c:429
+ test dh, 001h ; f6 c6 01 ; 0xf51ca keyboard.c:432
+ jne short 0522dh ; 75 5e ; 0xf51cd
+ or bl, 004h ; 80 cb 04 ; 0xf51cf keyboard.c:433
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf51d2 keyboard.c:51
+ mov ax, strict word 00017h ; b8 17 00 ; 0xf51d5
+ mov dh, bl ; 88 de ; 0xf51d8
+ mov bx, ax ; 89 c3 ; 0xf51da keyboard.c:53
+ mov es, cx ; 8e c1 ; 0xf51dc
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf51de
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf51e1 keyboard.c:435
+ je short 051f3h ; 74 0c ; 0xf51e5
+ or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xf51e7 keyboard.c:436
+ mov bx, 00096h ; bb 96 00 ; 0xf51eb keyboard.c:51
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf51ee
+ jmp short 051f9h ; eb 06 ; 0xf51f1 keyboard.c:438
+ or dl, 001h ; 80 ca 01 ; 0xf51f3 keyboard.c:439
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf51f6 keyboard.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf51f9 keyboard.c:53
+ jmp short 0522dh ; eb 2f ; 0xf51fc keyboard.c:443
+ test dh, 001h ; f6 c6 01 ; 0xf51fe keyboard.c:445
+ jne short 0525ch ; 75 59 ; 0xf5201
+ and bl, 0fbh ; 80 e3 fb ; 0xf5203 keyboard.c:446
+ mov si, strict word 00017h ; be 17 00 ; 0xf5206 keyboard.c:53
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf5209
+ mov es, cx ; 8e c1 ; 0xf520c
+ mov byte [es:si], bl ; 26 88 1c ; 0xf520e
+ test dh, 002h ; f6 c6 02 ; 0xf5211 keyboard.c:448
+ je short 05224h ; 74 0e ; 0xf5214
+ and dh, 0fbh ; 80 e6 fb ; 0xf5216 keyboard.c:449
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf5219
+ mov bx, 00096h ; bb 96 00 ; 0xf521c keyboard.c:53
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf521f
+ jmp short 0525ch ; eb 38 ; 0xf5222 keyboard.c:451
+ and dl, 0feh ; 80 e2 fe ; 0xf5224 keyboard.c:452
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5227 keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf522a
+ jmp short 0525ch ; eb 2d ; 0xf522d keyboard.c:456
+ or bl, 008h ; 80 cb 08 ; 0xf522f keyboard.c:459
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5232 keyboard.c:51
+ mov cx, strict word 00017h ; b9 17 00 ; 0xf5235
+ mov dh, bl ; 88 de ; 0xf5238
+ mov bx, cx ; 89 cb ; 0xf523a keyboard.c:53
+ mov es, ax ; 8e c0 ; 0xf523c
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf523e
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf5241 keyboard.c:461
+ je short 05253h ; 74 0c ; 0xf5245
+ or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xf5247 keyboard.c:462
+ mov bx, 00096h ; bb 96 00 ; 0xf524b keyboard.c:51
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf524e
+ jmp short 05259h ; eb 06 ; 0xf5251 keyboard.c:464
+ or dl, 002h ; 80 ca 02 ; 0xf5253 keyboard.c:465
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5256 keyboard.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5259 keyboard.c:53
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf525c keyboard.c:468
+ and AL, strict byte 07fh ; 24 7f ; 0xf525f
+ cmp AL, strict byte 01dh ; 3c 1d ; 0xf5261
+ je short 05269h ; 74 04 ; 0xf5263
+ and byte [bp-008h], 0feh ; 80 66 f8 fe ; 0xf5265
+ and byte [bp-008h], 0fdh ; 80 66 f8 fd ; 0xf5269
+ mov bx, 00096h ; bb 96 00 ; 0xf526d
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5270
+ mov es, ax ; 8e c0 ; 0xf5273
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5275
+ mov byte [es:bx], al ; 26 88 07 ; 0xf5278
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf527b
+ pop di ; 5f ; 0xf527e
+ pop si ; 5e ; 0xf527f
+ pop bp ; 5d ; 0xf5280
+ retn ; c3 ; 0xf5281
+ and bl, 0f7h ; 80 e3 f7 ; 0xf5282 keyboard.c:470
+ mov si, strict word 00017h ; be 17 00 ; 0xf5285 keyboard.c:53
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf5288
+ mov es, cx ; 8e c1 ; 0xf528b
+ mov byte [es:si], bl ; 26 88 1c ; 0xf528d
+ test dh, 002h ; f6 c6 02 ; 0xf5290 keyboard.c:472
+ je short 0529eh ; 74 09 ; 0xf5293
+ and dh, 0f7h ; 80 e6 f7 ; 0xf5295 keyboard.c:473
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf5298
+ jmp near 0521ch ; e9 7e ff ; 0xf529b keyboard.c:474
+ and dl, 0fdh ; 80 e2 fd ; 0xf529e keyboard.c:476
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52a1 keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52a4
+ jmp short 0525ch ; eb b3 ; 0xf52a7 keyboard.c:479
+ test dh, 003h ; f6 c6 03 ; 0xf52a9 keyboard.c:482
+ jne short 052c2h ; 75 14 ; 0xf52ac
+ or dl, 020h ; 80 ca 20 ; 0xf52ae keyboard.c:484
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52b1 keyboard.c:51
+ mov si, strict word 00018h ; be 18 00 ; 0xf52b4
+ mov es, ax ; 8e c0 ; 0xf52b7 keyboard.c:53
+ mov byte [es:si], dl ; 26 88 14 ; 0xf52b9
+ xor bl, 020h ; 80 f3 20 ; 0xf52bc keyboard.c:486
+ jmp near 05347h ; e9 85 00 ; 0xf52bf keyboard.c:487
+ or dl, 008h ; 80 ca 08 ; 0xf52c2 keyboard.c:490
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52c5 keyboard.c:51
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52c8
+ mov es, ax ; 8e c0 ; 0xf52cb keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52cd
+ mov ax, 000aeh ; b8 ae 00 ; 0xf52d0 keyboard.c:494
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf52d3
+ out DX, AL ; ee ; 0xf52d6
+ call 0e034h ; e8 5a 8d ; 0xf52d7 keyboard.c:495
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52da keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52dd
+ mov es, ax ; 8e c0 ; 0xf52e0
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf52e2
+ test AL, strict byte 008h ; a8 08 ; 0xf52e5 keyboard.c:49
+ jne short 052dah ; 75 f1 ; 0xf52e7
+ jmp near 0525ch ; e9 70 ff ; 0xf52e9 keyboard.c:502
+ test dh, 003h ; f6 c6 03 ; 0xf52ec keyboard.c:504
+ je short 052f4h ; 74 03 ; 0xf52ef
+ jmp near 0525ch ; e9 68 ff ; 0xf52f1
+ and dl, 0dfh ; 80 e2 df ; 0xf52f4 keyboard.c:505
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52f7 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52fa
+ mov es, ax ; 8e c0 ; 0xf52fd
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52ff
+ jmp short 052f1h ; eb ed ; 0xf5302 keyboard.c:508
+ test dh, 002h ; f6 c6 02 ; 0xf5304 keyboard.c:511
+ je short 05336h ; 74 2d ; 0xf5307
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5309 keyboard.c:56
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf530c
+ mov es, ax ; 8e c0 ; 0xf530f keyboard.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5311
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5314 keyboard.c:61
+ mov word [es:bx], ax ; 26 89 07 ; 0xf5317 keyboard.c:63
+ mov bx, strict word 00071h ; bb 71 00 ; 0xf531a keyboard.c:51
+ mov AL, strict byte 080h ; b0 80 ; 0xf531d
+ mov byte [es:bx], al ; 26 88 07 ; 0xf531f keyboard.c:53
+ mov ax, 000aeh ; b8 ae 00 ; 0xf5322 keyboard.c:516
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5325
+ out DX, AL ; ee ; 0xf5328
+ push bp ; 55 ; 0xf5329 keyboard.c:517
+ int 01bh ; cd 1b ; 0xf532a
+ pop bp ; 5d ; 0xf532c
+ xor dx, dx ; 31 d2 ; 0xf532d keyboard.c:518
+ xor ax, ax ; 31 c0 ; 0xf532f
+ call 05095h ; e8 61 fd ; 0xf5331
+ jmp short 052f1h ; eb bb ; 0xf5334 keyboard.c:519
+ or dl, 010h ; 80 ca 10 ; 0xf5336 keyboard.c:520
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5339 keyboard.c:51
+ mov es, ax ; 8e c0 ; 0xf533c
+ mov si, strict word 00018h ; be 18 00 ; 0xf533e
+ mov byte [es:si], dl ; 26 88 14 ; 0xf5341 keyboard.c:53
+ xor bl, 010h ; 80 f3 10 ; 0xf5344 keyboard.c:522
+ mov ax, strict word 00017h ; b8 17 00 ; 0xf5347 keyboard.c:51
+ mov dl, bl ; 88 da ; 0xf534a
+ mov bx, ax ; 89 c3 ; 0xf534c keyboard.c:53
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf534e
+ jmp short 052f1h ; eb 9e ; 0xf5351 keyboard.c:525
+ test dh, 002h ; f6 c6 02 ; 0xf5353 keyboard.c:528
+ jne short 052f1h ; 75 99 ; 0xf5356
+ and dl, 0efh ; 80 e2 ef ; 0xf5358 keyboard.c:529
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf535b keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf535e
+ mov es, ax ; 8e c0 ; 0xf5361
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5363
+ jmp short 052f1h ; eb 89 ; 0xf5366 keyboard.c:532
+ test ah, 004h ; f6 c4 04 ; 0xf5368 keyboard.c:535
+ jne short 052f1h ; 75 84 ; 0xf536b
+ or dl, 004h ; 80 ca 04 ; 0xf536d keyboard.c:536
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5370 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5373
+ mov es, ax ; 8e c0 ; 0xf5376
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5378
+ jmp near 0525ch ; e9 de fe ; 0xf537b keyboard.c:540
+ and dl, 0fbh ; 80 e2 fb ; 0xf537e keyboard.c:543
+ jmp short 05370h ; eb ed ; 0xf5381 keyboard.c:544
+ mov al, bh ; 88 f8 ; 0xf5383 keyboard.c:549
+ and AL, strict byte 00ch ; 24 0c ; 0xf5385
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf5387
+ jne short 0539eh ; 75 13 ; 0xf5389
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf538b keyboard.c:61
+ mov si, strict word 00072h ; be 72 00 ; 0xf538e
+ mov cx, 01234h ; b9 34 12 ; 0xf5391
+ mov es, ax ; 8e c0 ; 0xf5394 keyboard.c:63
+ mov word [es:si], cx ; 26 89 0c ; 0xf5396
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf5399 keyboard.c:552
+ test dl, 008h ; f6 c2 08 ; 0xf539e keyboard.c:558
+ je short 053b4h ; 74 11 ; 0xf53a1
+ and dl, 0f7h ; 80 e2 f7 ; 0xf53a3 keyboard.c:560
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53a6 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53a9
+ mov es, ax ; 8e c0 ; 0xf53ac
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53ae
+ jmp near 0527bh ; e9 c7 fe ; 0xf53b1 keyboard.c:562
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf53b4 keyboard.c:565
+ test AL, strict byte 080h ; a8 80 ; 0xf53b7
+ je short 053e9h ; 74 2e ; 0xf53b9
+ cmp AL, strict byte 0fah ; 3c fa ; 0xf53bb keyboard.c:567
+ jne short 053cfh ; 75 10 ; 0xf53bd
+ mov bx, 00097h ; bb 97 00 ; 0xf53bf keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53c2
+ mov es, ax ; 8e c0 ; 0xf53c5
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf53c7
+ or ah, 010h ; 80 cc 10 ; 0xf53ca keyboard.c:49
+ jmp short 053e4h ; eb 15 ; 0xf53cd keyboard.c:570
+ cmp AL, strict byte 0feh ; 3c fe ; 0xf53cf
+ je short 053d6h ; 74 03 ; 0xf53d1
+ jmp near 0525ch ; e9 86 fe ; 0xf53d3
+ mov bx, 00097h ; bb 97 00 ; 0xf53d6 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53d9
+ mov es, ax ; 8e c0 ; 0xf53dc
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf53de
+ or ah, 020h ; 80 cc 20 ; 0xf53e1 keyboard.c:49
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf53e4 keyboard.c:53
+ jmp short 053d3h ; eb ea ; 0xf53e7 keyboard.c:574
+ cmp byte [bp-006h], 058h ; 80 7e fa 58 ; 0xf53e9 keyboard.c:576
+ jbe short 05411h ; 76 22 ; 0xf53ed
+ mov bx, 00ddch ; bb dc 0d ; 0xf53ef keyboard.c:577
+ mov cx, ds ; 8c d9 ; 0xf53f2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf53f4
+ call 01919h ; e8 1f c5 ; 0xf53f7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf53fa
+ xor ah, ah ; 30 e4 ; 0xf53fd
+ push ax ; 50 ; 0xf53ff
+ mov ax, 005f7h ; b8 f7 05 ; 0xf5400
+ push ax ; 50 ; 0xf5403
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5404
+ push ax ; 50 ; 0xf5407
+ call 0195ch ; e8 51 c5 ; 0xf5408
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf540b
+ jmp near 0527bh ; e9 6a fe ; 0xf540e keyboard.c:578
+ test bl, 008h ; f6 c3 08 ; 0xf5411 keyboard.c:580
+ je short 05430h ; 74 1a ; 0xf5414
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5416 keyboard.c:581
+ xor ah, ah ; 30 e4 ; 0xf5419
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf541b
+ imul dx ; f7 ea ; 0xf541e
+ mov si, ax ; 89 c6 ; 0xf5420
+ mov al, byte [si+00e30h] ; 8a 84 30 0e ; 0xf5422
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5426
+ mov al, byte [si+00e31h] ; 8a 84 31 0e ; 0xf5429 keyboard.c:582
+ jmp near 054e4h ; e9 b4 00 ; 0xf542d keyboard.c:583
+ test bl, 004h ; f6 c3 04 ; 0xf5430
+ je short 0544fh ; 74 1a ; 0xf5433
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5435 keyboard.c:584
+ xor ah, ah ; 30 e4 ; 0xf5438
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf543a
+ imul dx ; f7 ea ; 0xf543d
+ mov si, ax ; 89 c6 ; 0xf543f
+ mov al, byte [si+00e2eh] ; 8a 84 2e 0e ; 0xf5441
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5445
+ mov al, byte [si+00e2fh] ; 8a 84 2f 0e ; 0xf5448 keyboard.c:585
+ jmp near 054e4h ; e9 95 00 ; 0xf544c keyboard.c:586
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf544f
+ and AL, strict byte 002h ; 24 02 ; 0xf5452
+ test al, al ; 84 c0 ; 0xf5454
+ jbe short 05476h ; 76 1e ; 0xf5456
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5458
+ cmp AL, strict byte 047h ; 3c 47 ; 0xf545b
+ jc short 05476h ; 72 17 ; 0xf545d
+ cmp AL, strict byte 053h ; 3c 53 ; 0xf545f
+ jnbe short 05476h ; 77 13 ; 0xf5461
+ mov byte [bp-00ah], 0e0h ; c6 46 f6 e0 ; 0xf5463 keyboard.c:588
+ xor ah, ah ; 30 e4 ; 0xf5467 keyboard.c:589
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5469
+ imul dx ; f7 ea ; 0xf546c
+ mov bx, ax ; 89 c3 ; 0xf546e
+ mov al, byte [bx+00e2bh] ; 8a 87 2b 0e ; 0xf5470
+ jmp short 054e4h ; eb 6e ; 0xf5474 keyboard.c:590
+ test bl, 003h ; f6 c3 03 ; 0xf5476
+ je short 054b2h ; 74 37 ; 0xf5479
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf547b keyboard.c:594
+ xor ah, ah ; 30 e4 ; 0xf547e
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5480
+ imul dx ; f7 ea ; 0xf5483
+ mov si, ax ; 89 c6 ; 0xf5485
+ mov al, byte [si+00e32h] ; 8a 84 32 0e ; 0xf5487
+ xor ah, ah ; 30 e4 ; 0xf548b
+ mov dl, bl ; 88 da ; 0xf548d
+ xor dh, dh ; 30 f6 ; 0xf548f
+ test dx, ax ; 85 c2 ; 0xf5491
+ je short 054a2h ; 74 0d ; 0xf5493
+ mov al, byte [si+00e2ah] ; 8a 84 2a 0e ; 0xf5495 keyboard.c:595
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5499
+ mov al, byte [si+00e2bh] ; 8a 84 2b 0e ; 0xf549c keyboard.c:596
+ jmp short 054adh ; eb 0b ; 0xf54a0 keyboard.c:597
+ mov al, byte [si+00e2ch] ; 8a 84 2c 0e ; 0xf54a2 keyboard.c:598
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf54a6
+ mov al, byte [si+00e2dh] ; 8a 84 2d 0e ; 0xf54a9 keyboard.c:599
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf54ad
+ jmp short 054e7h ; eb 35 ; 0xf54b0 keyboard.c:601
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf54b2 keyboard.c:603
+ xor ah, ah ; 30 e4 ; 0xf54b5
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf54b7
+ imul dx ; f7 ea ; 0xf54ba
+ mov si, ax ; 89 c6 ; 0xf54bc
+ mov dl, byte [si+00e32h] ; 8a 94 32 0e ; 0xf54be
+ xor dh, dh ; 30 f6 ; 0xf54c2
+ mov al, bl ; 88 d8 ; 0xf54c4
+ xor ah, ah ; 30 e4 ; 0xf54c6
+ test ax, dx ; 85 d0 ; 0xf54c8
+ je short 054d9h ; 74 0d ; 0xf54ca
+ mov al, byte [si+00e2ch] ; 8a 84 2c 0e ; 0xf54cc keyboard.c:604
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf54d0
+ mov al, byte [si+00e2dh] ; 8a 84 2d 0e ; 0xf54d3 keyboard.c:605
+ jmp short 054e4h ; eb 0b ; 0xf54d7 keyboard.c:606
+ mov al, byte [si+00e2ah] ; 8a 84 2a 0e ; 0xf54d9 keyboard.c:607
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf54dd
+ mov al, byte [si+00e2bh] ; 8a 84 2b 0e ; 0xf54e0 keyboard.c:608
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf54e4
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf54e7 keyboard.c:611
+ jne short 0550ch ; 75 1f ; 0xf54eb
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf54ed
+ jne short 0550ch ; 75 19 ; 0xf54f1
+ mov bx, 00ddch ; bb dc 0d ; 0xf54f3 keyboard.c:612
+ mov cx, ds ; 8c d9 ; 0xf54f6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf54f8
+ call 01919h ; e8 1b c4 ; 0xf54fb
+ mov ax, 0062eh ; b8 2e 06 ; 0xf54fe
+ push ax ; 50 ; 0xf5501
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5502
+ push ax ; 50 ; 0xf5505
+ call 0195ch ; e8 53 c4 ; 0xf5506
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5509
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf550c keyboard.c:614
+ xor dh, dh ; 30 f6 ; 0xf550f
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5511
+ xor ah, ah ; 30 e4 ; 0xf5514
+ jmp near 05331h ; e9 18 fe ; 0xf5516
+ ; disGetNextSymbol 0xf5519 LB 0x59cf -> off=0x0 cb=0000000000000061 uValue=00000000000f3f19 'dequeue_key'
+dequeue_key: ; 0xf5519 LB 0x61
+ push si ; 56 ; 0xf5519 keyboard.c:624
+ push di ; 57 ; 0xf551a
+ push bp ; 55 ; 0xf551b
+ mov bp, sp ; 89 e5 ; 0xf551c
+ push ax ; 50 ; 0xf551e
+ mov si, ax ; 89 c6 ; 0xf551f
+ mov word [bp-002h], bx ; 89 5e fe ; 0xf5521
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5524 keyboard.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5527
+ mov es, ax ; 8e c0 ; 0xf552a
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf552c
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf552f keyboard.c:58
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf5532
+ cmp bx, ax ; 39 c3 ; 0xf5535 keyboard.c:640
+ je short 05570h ; 74 37 ; 0xf5537
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5539 keyboard.c:48
+ lea di, [bx+001h] ; 8d 7f 01 ; 0xf553c keyboard.c:642
+ mov ah, byte [es:di] ; 26 8a 25 ; 0xf553f keyboard.c:48
+ mov es, cx ; 8e c1 ; 0xf5542 keyboard.c:643
+ mov di, word [bp-002h] ; 8b 7e fe ; 0xf5544
+ mov byte [es:di], al ; 26 88 05 ; 0xf5547
+ mov es, dx ; 8e c2 ; 0xf554a keyboard.c:644
+ mov byte [es:si], ah ; 26 88 24 ; 0xf554c
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf554f keyboard.c:647
+ je short 0556bh ; 74 16 ; 0xf5553
+ lea si, [bx+002h] ; 8d 77 02 ; 0xf5555 keyboard.c:648
+ cmp si, strict byte 0003eh ; 83 fe 3e ; 0xf5558 keyboard.c:649
+ jc short 05560h ; 72 03 ; 0xf555b
+ mov si, strict word 0001eh ; be 1e 00 ; 0xf555d keyboard.c:650
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5560 keyboard.c:63
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5563
+ mov es, ax ; 8e c0 ; 0xf5566
+ mov word [es:bx], si ; 26 89 37 ; 0xf5568
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf556b keyboard.c:653
+ jmp short 05572h ; eb 02 ; 0xf556e
+ xor ax, ax ; 31 c0 ; 0xf5570 keyboard.c:656
+ mov sp, bp ; 89 ec ; 0xf5572 keyboard.c:658
+ pop bp ; 5d ; 0xf5574
+ pop di ; 5f ; 0xf5575
+ pop si ; 5e ; 0xf5576
+ retn 00002h ; c2 02 00 ; 0xf5577
+ ; disGetNextSymbol 0xf557a LB 0x596e -> off=0x23 cb=00000000000002f4 uValue=00000000000f3f9d 'int16_function'
+ db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 09fh, 056h, 05ah, 056h, 0f0h
+ db 056h, 035h, 057h, 04ah, 057h, 071h, 057h, 07bh, 057h, 0eah, 057h, 026h, 058h, 057h, 058h, 086h
+ db 058h, 0e9h, 056h
+int16_function: ; 0xf559d LB 0x2f4
+ push bp ; 55 ; 0xf559d keyboard.c:675
+ mov bp, sp ; 89 e5 ; 0xf559e
+ push si ; 56 ; 0xf55a0
+ push di ; 57 ; 0xf55a1
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf55a2
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf55a5 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf55a8
+ mov es, ax ; 8e c0 ; 0xf55ab
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf55ad
+ mov bh, dl ; 88 d7 ; 0xf55b0 keyboard.c:49
+ mov si, 00097h ; be 97 00 ; 0xf55b2 keyboard.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf55b5
+ mov bl, al ; 88 c3 ; 0xf55b8 keyboard.c:49
+ xor dh, dh ; 30 f6 ; 0xf55ba keyboard.c:684
+ mov CL, strict byte 004h ; b1 04 ; 0xf55bc
+ sar dx, CL ; d3 fa ; 0xf55be
+ and dl, 007h ; 80 e2 07 ; 0xf55c0
+ and AL, strict byte 007h ; 24 07 ; 0xf55c3
+ xor ah, ah ; 30 e4 ; 0xf55c5
+ xor al, dl ; 30 d0 ; 0xf55c7
+ test ax, ax ; 85 c0 ; 0xf55c9
+ je short 05639h ; 74 6c ; 0xf55cb
+ cli ; fa ; 0xf55cd keyboard.c:685
+ mov AL, strict byte 0edh ; b0 ed ; 0xf55ce keyboard.c:686
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf55d0
+ out DX, AL ; ee ; 0xf55d3
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf55d4 keyboard.c:687
+ in AL, DX ; ec ; 0xf55d7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf55d8
+ test AL, strict byte 001h ; a8 01 ; 0xf55da
+ jne short 055e6h ; 75 08 ; 0xf55dc
+ mov AL, strict byte 021h ; b0 21 ; 0xf55de
+ mov dx, 00080h ; ba 80 00 ; 0xf55e0
+ out DX, AL ; ee ; 0xf55e3
+ jmp short 055d4h ; eb ee ; 0xf55e4
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf55e6 keyboard.c:688
+ in AL, DX ; ec ; 0xf55e9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf55ea
+ cmp ax, 000fah ; 3d fa 00 ; 0xf55ec
+ jne short 05638h ; 75 47 ; 0xf55ef
+ and bl, 0c8h ; 80 e3 c8 ; 0xf55f1 keyboard.c:689
+ mov al, bh ; 88 f8 ; 0xf55f4 keyboard.c:690
+ xor ah, ah ; 30 e4 ; 0xf55f6
+ mov CL, strict byte 004h ; b1 04 ; 0xf55f8
+ sar ax, CL ; d3 f8 ; 0xf55fa
+ mov cx, ax ; 89 c1 ; 0xf55fc
+ xor ch, ah ; 30 e5 ; 0xf55fe
+ and cl, 007h ; 80 e1 07 ; 0xf5600
+ mov al, bl ; 88 d8 ; 0xf5603
+ xor ah, ah ; 30 e4 ; 0xf5605
+ mov dx, ax ; 89 c2 ; 0xf5607
+ or dx, cx ; 09 ca ; 0xf5609
+ mov bl, dl ; 88 d3 ; 0xf560b
+ mov al, dl ; 88 d0 ; 0xf560d keyboard.c:691
+ and AL, strict byte 007h ; 24 07 ; 0xf560f
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5611
+ out DX, AL ; ee ; 0xf5614
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5615 keyboard.c:692
+ in AL, DX ; ec ; 0xf5618
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5619
+ test AL, strict byte 001h ; a8 01 ; 0xf561b
+ jne short 05627h ; 75 08 ; 0xf561d
+ mov AL, strict byte 021h ; b0 21 ; 0xf561f keyboard.c:693
+ mov dx, 00080h ; ba 80 00 ; 0xf5621
+ out DX, AL ; ee ; 0xf5624
+ jmp short 05615h ; eb ee ; 0xf5625
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5627 keyboard.c:694
+ in AL, DX ; ec ; 0xf562a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf562b
+ mov si, 00097h ; be 97 00 ; 0xf562d keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5630
+ mov es, ax ; 8e c0 ; 0xf5633
+ mov byte [es:si], bl ; 26 88 1c ; 0xf5635
+ sti ; fb ; 0xf5638 keyboard.c:697
+ mov CL, strict byte 008h ; b1 08 ; 0xf5639 keyboard.c:700
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf563b
+ shr ax, CL ; d3 e8 ; 0xf563e
+ cmp ax, 000a2h ; 3d a2 00 ; 0xf5640
+ jnbe short 0569fh ; 77 5a ; 0xf5643
+ push CS ; 0e ; 0xf5645
+ pop ES ; 07 ; 0xf5646
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf5647
+ mov di, 0557ah ; bf 7a 55 ; 0xf564a
+ repne scasb ; f2 ae ; 0xf564d
+ sal cx, 1 ; d1 e1 ; 0xf564f
+ mov di, cx ; 89 cf ; 0xf5651
+ mov ax, word [cs:di+05585h] ; 2e 8b 85 85 55 ; 0xf5653
+ jmp ax ; ff e0 ; 0xf5658
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf565a keyboard.c:702
+ push ax ; 50 ; 0xf565d
+ mov cx, ss ; 8c d1 ; 0xf565e
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf5660
+ mov dx, ss ; 8c d2 ; 0xf5663
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5665
+ call 05519h ; e8 ae fe ; 0xf5668
+ test ax, ax ; 85 c0 ; 0xf566b
+ jne short 0567dh ; 75 0e ; 0xf566d
+ mov ax, 00665h ; b8 65 06 ; 0xf566f keyboard.c:703
+ push ax ; 50 ; 0xf5672
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf5673
+ push ax ; 50 ; 0xf5676
+ call 0195ch ; e8 e2 c2 ; 0xf5677
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf567a
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf567d keyboard.c:705
+ je short 05689h ; 74 06 ; 0xf5681
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5683
+ je short 0568fh ; 74 06 ; 0xf5687
+ cmp byte [bp-008h], 0e0h ; 80 7e f8 e0 ; 0xf5689 keyboard.c:707
+ jne short 05693h ; 75 04 ; 0xf568d
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf568f keyboard.c:708
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xf5693 keyboard.c:709
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5696
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf5699
+ jmp near 056e9h ; e9 4a 00 ; 0xf569c keyboard.c:710
+ mov bx, 00ddch ; bb dc 0d ; 0xf569f
+ mov cx, ds ; 8c d9 ; 0xf56a2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf56a4
+ call 01919h ; e8 6f c2 ; 0xf56a7
+ mov CL, strict byte 008h ; b1 08 ; 0xf56aa
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf56ac
+ shr ax, CL ; d3 e8 ; 0xf56af
+ push ax ; 50 ; 0xf56b1
+ mov ax, 00689h ; b8 89 06 ; 0xf56b2
+ push ax ; 50 ; 0xf56b5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf56b6
+ push ax ; 50 ; 0xf56b9
+ call 0195ch ; e8 9f c2 ; 0xf56ba
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf56bd
+ mov bx, 00ddch ; bb dc 0d ; 0xf56c0
+ mov cx, ds ; 8c d9 ; 0xf56c3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf56c5
+ call 01919h ; e8 4e c2 ; 0xf56c8
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf56cb
+ push ax ; 50 ; 0xf56ce
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf56cf
+ push ax ; 50 ; 0xf56d2
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf56d3
+ push ax ; 50 ; 0xf56d6
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf56d7
+ push ax ; 50 ; 0xf56da
+ mov ax, 006b1h ; b8 b1 06 ; 0xf56db
+ push ax ; 50 ; 0xf56de
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf56df
+ push ax ; 50 ; 0xf56e2
+ call 0195ch ; e8 76 c2 ; 0xf56e3
+ add sp, strict byte 0000ch ; 83 c4 0c ; 0xf56e6
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf56e9
+ pop di ; 5f ; 0xf56ec
+ pop si ; 5e ; 0xf56ed
+ pop bp ; 5d ; 0xf56ee
+ retn ; c3 ; 0xf56ef
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf56f0 keyboard.c:714
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf56f3
+ xor ax, ax ; 31 c0 ; 0xf56f6 keyboard.c:715
+ push ax ; 50 ; 0xf56f8
+ mov cx, ss ; 8c d1 ; 0xf56f9
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf56fb
+ mov dx, ss ; 8c d2 ; 0xf56fe
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5700
+ call 05519h ; e8 13 fe ; 0xf5703
+ test ax, ax ; 85 c0 ; 0xf5706
+ jne short 05710h ; 75 06 ; 0xf5708
+ or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf570a keyboard.c:716
+ jmp short 056e9h ; eb d9 ; 0xf570e keyboard.c:717
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf5710 keyboard.c:719
+ je short 0571ch ; 74 06 ; 0xf5714
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5716
+ je short 05722h ; 74 06 ; 0xf571a
+ cmp byte [bp-008h], 0e0h ; 80 7e f8 e0 ; 0xf571c keyboard.c:721
+ jne short 05726h ; 75 04 ; 0xf5720
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf5722 keyboard.c:722
+ mov dh, byte [bp-00ah] ; 8a 76 f6 ; 0xf5726 keyboard.c:723
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5729
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf572c
+ and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf572f keyboard.c:724
+ jmp short 056e9h ; eb b4 ; 0xf5733 keyboard.c:725
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5735 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5738
+ mov es, ax ; 8e c0 ; 0xf573b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf573d
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5740 keyboard.c:729
+ mov dl, al ; 88 c2 ; 0xf5743
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5745
+ jmp short 056e9h ; eb 9f ; 0xf5748 keyboard.c:730
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf574a keyboard.c:733
+ xor dh, dh ; 30 f6 ; 0xf574d
+ mov CL, strict byte 008h ; b1 08 ; 0xf574f
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5751
+ shr ax, CL ; d3 e8 ; 0xf5754
+ xor ah, ah ; 30 e4 ; 0xf5756
+ call 05095h ; e8 3a f9 ; 0xf5758
+ test ax, ax ; 85 c0 ; 0xf575b
+ jne short 05769h ; 75 0a ; 0xf575d
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf575f keyboard.c:734
+ xor al, al ; 30 c0 ; 0xf5762
+ or AL, strict byte 001h ; 0c 01 ; 0xf5764
+ jmp near 05699h ; e9 30 ff ; 0xf5766
+ and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf5769 keyboard.c:737
+ jmp near 056e9h ; e9 78 ff ; 0xf576e keyboard.c:739
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5771 keyboard.c:752
+ xor al, al ; 30 c0 ; 0xf5774
+ or AL, strict byte 030h ; 0c 30 ; 0xf5776
+ jmp near 05699h ; e9 1e ff ; 0xf5778
+ mov byte [bp-006h], 002h ; c6 46 fa 02 ; 0xf577b keyboard.c:756
+ xor cx, cx ; 31 c9 ; 0xf577f keyboard.c:757
+ cli ; fa ; 0xf5781 keyboard.c:759
+ mov AL, strict byte 0f2h ; b0 f2 ; 0xf5782 keyboard.c:760
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5784
+ out DX, AL ; ee ; 0xf5787
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5788 keyboard.c:762
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf578b keyboard.c:763
+ in AL, DX ; ec ; 0xf578e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf578f
+ test AL, strict byte 001h ; a8 01 ; 0xf5791
+ jne short 057a2h ; 75 0d ; 0xf5793
+ dec bx ; 4b ; 0xf5795
+ test bx, bx ; 85 db ; 0xf5796
+ jbe short 057a2h ; 76 08 ; 0xf5798
+ mov dx, 00080h ; ba 80 00 ; 0xf579a keyboard.c:764
+ in AL, DX ; ec ; 0xf579d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf579e
+ jmp short 0578bh ; eb e9 ; 0xf57a0
+ test bx, bx ; 85 db ; 0xf57a2 keyboard.c:765
+ jbe short 057e4h ; 76 3e ; 0xf57a4
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf57a6 keyboard.c:766
+ in AL, DX ; ec ; 0xf57a9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57aa
+ cmp ax, 000fah ; 3d fa 00 ; 0xf57ac
+ jne short 057e4h ; 75 33 ; 0xf57af
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf57b1 keyboard.c:768
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf57b4 keyboard.c:769
+ in AL, DX ; ec ; 0xf57b7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57b8
+ test AL, strict byte 001h ; a8 01 ; 0xf57ba
+ jne short 057cbh ; 75 0d ; 0xf57bc
+ dec bx ; 4b ; 0xf57be
+ test bx, bx ; 85 db ; 0xf57bf
+ jbe short 057cbh ; 76 08 ; 0xf57c1
+ mov dx, 00080h ; ba 80 00 ; 0xf57c3 keyboard.c:770
+ in AL, DX ; ec ; 0xf57c6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57c7
+ jmp short 057b4h ; eb e9 ; 0xf57c9
+ test bx, bx ; 85 db ; 0xf57cb keyboard.c:771
+ jbe short 057dbh ; 76 0c ; 0xf57cd
+ mov bl, ch ; 88 eb ; 0xf57cf keyboard.c:772
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf57d1 keyboard.c:773
+ in AL, DX ; ec ; 0xf57d4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57d5
+ mov ch, al ; 88 c5 ; 0xf57d7
+ mov cl, bl ; 88 d9 ; 0xf57d9
+ dec byte [bp-006h] ; fe 4e fa ; 0xf57db keyboard.c:775
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf57de
+ jnbe short 057b1h ; 77 cd ; 0xf57e2
+ mov word [bp+00ch], cx ; 89 4e 0c ; 0xf57e4 keyboard.c:778
+ jmp near 056e9h ; e9 ff fe ; 0xf57e7 keyboard.c:779
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf57ea keyboard.c:782
+ push ax ; 50 ; 0xf57ed
+ mov cx, ss ; 8c d1 ; 0xf57ee
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf57f0
+ mov dx, ss ; 8c d2 ; 0xf57f3
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf57f5
+ call 05519h ; e8 1e fd ; 0xf57f8
+ test ax, ax ; 85 c0 ; 0xf57fb
+ jne short 0580dh ; 75 0e ; 0xf57fd
+ mov ax, 00665h ; b8 65 06 ; 0xf57ff keyboard.c:783
+ push ax ; 50 ; 0xf5802
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf5803
+ push ax ; 50 ; 0xf5806
+ call 0195ch ; e8 52 c1 ; 0xf5807
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf580a
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf580d keyboard.c:785
+ je short 0581dh ; 74 0a ; 0xf5811
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5813
+ jne short 0581dh ; 75 04 ; 0xf5817
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf5819 keyboard.c:786
+ mov dh, byte [bp-00ah] ; 8a 76 f6 ; 0xf581d keyboard.c:787
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5820
+ jmp near 05745h ; e9 1f ff ; 0xf5823
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf5826 keyboard.c:792
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf5829
+ xor ax, ax ; 31 c0 ; 0xf582c keyboard.c:793
+ push ax ; 50 ; 0xf582e
+ mov cx, ss ; 8c d1 ; 0xf582f
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf5831
+ mov dx, ss ; 8c d2 ; 0xf5834
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5836
+ call 05519h ; e8 dd fc ; 0xf5839
+ test ax, ax ; 85 c0 ; 0xf583c
+ jne short 05843h ; 75 03 ; 0xf583e
+ jmp near 0570ah ; e9 c7 fe ; 0xf5840
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf5843 keyboard.c:797
+ jne short 0584ch ; 75 03 ; 0xf5847
+ jmp near 05726h ; e9 da fe ; 0xf5849
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf584c
+ jne short 05855h ; 75 03 ; 0xf5850
+ jmp near 05722h ; e9 cd fe ; 0xf5852
+ jmp short 05849h ; eb f2 ; 0xf5855
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5857 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf585a
+ mov es, ax ; 8e c0 ; 0xf585d
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf585f
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5862 keyboard.c:805
+ mov dl, al ; 88 c2 ; 0xf5865
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5867
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf586a keyboard.c:48
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf586d
+ and bh, 073h ; 80 e7 73 ; 0xf5870 keyboard.c:49
+ mov si, 00096h ; be 96 00 ; 0xf5873 keyboard.c:48
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf5876
+ and ah, 00ch ; 80 e4 0c ; 0xf5879 keyboard.c:49
+ or ah, bh ; 08 fc ; 0xf587c
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf587e keyboard.c:808
+ mov dh, ah ; 88 e6 ; 0xf5881
+ jmp near 05745h ; e9 bf fe ; 0xf5883
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5886 keyboard.c:813
+ xor ah, ah ; 30 e4 ; 0xf5889
+ or ah, 080h ; 80 cc 80 ; 0xf588b
+ jmp near 05699h ; e9 08 fe ; 0xf588e
+ ; disGetNextSymbol 0xf5891 LB 0x5657 -> off=0x0 cb=00000000000000b9 uValue=00000000000f4291 'set_geom_lba'
+set_geom_lba: ; 0xf5891 LB 0xb9
+ push bx ; 53 ; 0xf5891 disk.c:125
+ push cx ; 51 ; 0xf5892
+ push si ; 56 ; 0xf5893
+ push di ; 57 ; 0xf5894
+ push bp ; 55 ; 0xf5895
+ mov bp, sp ; 89 e5 ; 0xf5896
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf5898
+ mov di, ax ; 89 c7 ; 0xf589b
+ mov es, dx ; 8e c2 ; 0xf589d
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf589f disk.c:127
+ mov word [bp-006h], strict word 0007eh ; c7 46 fa 7e 00 ; 0xf58a4
+ mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf58a9 disk.c:129
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58ae disk.c:132
+ mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf58b1
+ mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf58b4
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf58b7
+ mov si, strict word 00020h ; be 20 00 ; 0xf58ba
+ call 0aba0h ; e8 e0 52 ; 0xf58bd
+ test ax, ax ; 85 c0 ; 0xf58c0
+ jne short 058d0h ; 75 0c ; 0xf58c2
+ test bx, bx ; 85 db ; 0xf58c4
+ jne short 058d0h ; 75 08 ; 0xf58c6
+ test cx, cx ; 85 c9 ; 0xf58c8
+ jne short 058d0h ; 75 04 ; 0xf58ca
+ test dx, dx ; 85 d2 ; 0xf58cc
+ je short 058d7h ; 74 07 ; 0xf58ce
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf58d0
+ mov si, bx ; 89 de ; 0xf58d3
+ jmp short 058ddh ; eb 06 ; 0xf58d5
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf58d7
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf58da
+ mov word [bp-004h], bx ; 89 5e fc ; 0xf58dd
+ xor bx, bx ; 31 db ; 0xf58e0 disk.c:134
+ jmp short 058e9h ; eb 05 ; 0xf58e2
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf58e4
+ jnl short 0590ch ; 7d 23 ; 0xf58e7
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf58e9 disk.c:135
+ cmp si, ax ; 39 c6 ; 0xf58ec
+ jc short 058fah ; 72 0a ; 0xf58ee
+ jne short 05903h ; 75 11 ; 0xf58f0
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf58f2
+ cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf58f5
+ jnbe short 05903h ; 77 09 ; 0xf58f8
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf58fa disk.c:136
+ inc ax ; 40 ; 0xf58fd
+ shr ax, 1 ; d1 e8 ; 0xf58fe
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf5900
+ shr word [bp-006h], 1 ; d1 6e fa ; 0xf5903 disk.c:137
+ rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5906
+ inc bx ; 43 ; 0xf5909 disk.c:138
+ jmp short 058e4h ; eb d8 ; 0xf590a
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf590c disk.c:140
+ xor dx, dx ; 31 d2 ; 0xf590f
+ mov bx, strict word 0003fh ; bb 3f 00 ; 0xf5911
+ xor cx, cx ; 31 c9 ; 0xf5914
+ call 0ab50h ; e8 37 52 ; 0xf5916
+ mov bx, ax ; 89 c3 ; 0xf5919
+ mov cx, dx ; 89 d1 ; 0xf591b
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf591d
+ mov dx, si ; 89 f2 ; 0xf5920
+ call 0ab70h ; e8 4b 52 ; 0xf5922
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5925
+ cmp ax, 00400h ; 3d 00 04 ; 0xf5929 disk.c:141
+ jbe short 05934h ; 76 06 ; 0xf592c
+ mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf592e disk.c:142
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5934 disk.c:143
+ mov word [es:di], ax ; 26 89 05 ; 0xf5937
+ mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf593a disk.c:144
+ mov sp, bp ; 89 ec ; 0xf5940 disk.c:145
+ pop bp ; 5d ; 0xf5942
+ pop di ; 5f ; 0xf5943
+ pop si ; 5e ; 0xf5944
+ pop cx ; 59 ; 0xf5945
+ pop bx ; 5b ; 0xf5946
+ retn 00008h ; c2 08 00 ; 0xf5947
+ ; disGetNextSymbol 0xf594a LB 0x559e -> off=0x0 cb=000000000000031e uValue=00000000000f434a 'edd_fill_dpt'
+edd_fill_dpt: ; 0xf594a LB 0x31e
+ push si ; 56 ; 0xf594a disk.c:147
+ push di ; 57 ; 0xf594b
+ push bp ; 55 ; 0xf594c
+ mov bp, sp ; 89 e5 ; 0xf594d
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf594f
+ mov di, ax ; 89 c7 ; 0xf5952
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5954
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf5957
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf595a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf595d disk.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5960
+ mov es, ax ; 8e c0 ; 0xf5963
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5965
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf5968 disk.c:59
+ mov es, dx ; 8e c2 ; 0xf596b disk.c:152
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf596d
+ cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5970
+ jnc short 0597bh ; 73 06 ; 0xf5973
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf5975 disk.c:153
+ jmp near 05c60h ; e9 e5 02 ; 0xf5978
+ jc short 059eeh ; 72 71 ; 0xf597b disk.c:156
+ mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf597d disk.c:159
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5982 disk.c:160
+ xor ah, ah ; 30 e4 ; 0xf5985
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5987
+ imul dx ; f7 ea ; 0xf598a
+ mov dx, cx ; 89 ca ; 0xf598c
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf598e
+ add bx, ax ; 01 c3 ; 0xf5991
+ mov es, cx ; 8e c1 ; 0xf5993
+ mov ax, word [es:bx+024h] ; 26 8b 47 24 ; 0xf5995
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5999
+ mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf599c
+ mov es, cx ; 8e c1 ; 0xf59a0 disk.c:162
+ cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf59a2
+ jne short 059f0h ; 75 47 ; 0xf59a7
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59a9 disk.c:163
+ mov word [es:di+002h], strict word 00074h ; 26 c7 45 02 74 00 ; 0xf59ac
+ mov word [es:di+004h], strict word 0ffffh ; 26 c7 45 04 ff ff ; 0xf59b2 disk.c:164
+ mov word [es:di+006h], strict word 0ffffh ; 26 c7 45 06 ff ff ; 0xf59b8
+ mov word [es:di+008h], strict word 0ffffh ; 26 c7 45 08 ff ff ; 0xf59be disk.c:165
+ mov word [es:di+00ah], strict word 0ffffh ; 26 c7 45 0a ff ff ; 0xf59c4
+ mov word [es:di+00ch], strict word 0ffffh ; 26 c7 45 0c ff ff ; 0xf59ca disk.c:166
+ mov word [es:di+00eh], strict word 0ffffh ; 26 c7 45 0e ff ff ; 0xf59d0
+ mov word [es:di+010h], strict word 0ffffh ; 26 c7 45 10 ff ff ; 0xf59d6 disk.c:167
+ mov word [es:di+012h], strict word 0ffffh ; 26 c7 45 12 ff ff ; 0xf59dc
+ mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff ; 0xf59e2 disk.c:168
+ mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf59e8
+ jmp short 05a5fh ; eb 6f ; 0xf59ee disk.c:169
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59f0 disk.c:170
+ mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf59f3
+ mov es, cx ; 8e c1 ; 0xf59f9 disk.c:171
+ mov ax, word [es:bx+02eh] ; 26 8b 47 2e ; 0xf59fb
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59ff
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5a02
+ mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5a06
+ mov es, cx ; 8e c1 ; 0xf5a0c disk.c:172
+ mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf5a0e
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a12
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5a15
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5a19
+ mov es, cx ; 8e c1 ; 0xf5a1f disk.c:173
+ mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5a21
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a25
+ mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5a28
+ mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5a2c
+ mov es, cx ; 8e c1 ; 0xf5a32 disk.c:174
+ mov ax, word [es:bx+038h] ; 26 8b 47 38 ; 0xf5a34
+ mov si, word [es:bx+036h] ; 26 8b 77 36 ; 0xf5a38
+ mov cx, word [es:bx+034h] ; 26 8b 4f 34 ; 0xf5a3c
+ mov dx, word [es:bx+032h] ; 26 8b 57 32 ; 0xf5a40
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a44 disk.c:175
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5a47
+ mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5a4b
+ mov bx, si ; 89 f3 ; 0xf5a4f disk.c:176
+ mov si, strict word 00020h ; be 20 00 ; 0xf5a51
+ call 0aba0h ; e8 49 51 ; 0xf5a54
+ mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5a57
+ mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5a5b
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a5f disk.c:181
+ cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5a62
+ jc short 05ac2h ; 72 5a ; 0xf5a66
+ mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5a68 disk.c:185
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5a6d disk.c:186
+ mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5a70
+ mov word [es:di+01ah], 00306h ; 26 c7 45 1a 06 03 ; 0xf5a74 disk.c:187
+ mov cl, byte [bp+008h] ; 8a 4e 08 ; 0xf5a7a disk.c:190
+ xor ch, ch ; 30 ed ; 0xf5a7d
+ mov ax, cx ; 89 c8 ; 0xf5a7f
+ cwd ; 99 ; 0xf5a81
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5a82
+ sar ax, 1 ; d1 f8 ; 0xf5a84
+ xor ah, ah ; 30 e4 ; 0xf5a86 disk.c:191
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf5a88
+ imul dx ; f7 ea ; 0xf5a8b
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5a8d
+ add bx, ax ; 01 c3 ; 0xf5a90
+ mov ax, word [es:bx+0027ah] ; 26 8b 87 7a 02 ; 0xf5a92
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf5a97
+ mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf5a9a disk.c:192
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5a9f
+ mov al, byte [es:bx+00279h] ; 26 8a 87 79 02 ; 0xf5aa2 disk.c:193
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf5aa7
+ mov ax, cx ; 89 c8 ; 0xf5aaa disk.c:195
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5aac
+ imul dx ; f7 ea ; 0xf5aaf
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5ab1
+ add bx, ax ; 01 c3 ; 0xf5ab4
+ mov bl, byte [es:bx+023h] ; 26 8a 5f 23 ; 0xf5ab6
+ test bl, bl ; 84 db ; 0xf5aba disk.c:197
+ jne short 05ac5h ; 75 07 ; 0xf5abc
+ xor ax, ax ; 31 c0 ; 0xf5abe
+ jmp short 05ac8h ; eb 06 ; 0xf5ac0
+ jmp near 05b8dh ; e9 c8 00 ; 0xf5ac2
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf5ac5
+ or AL, strict byte 010h ; 0c 10 ; 0xf5ac8 disk.c:198
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5aca
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5acd disk.c:199
+ xor ah, ah ; 30 e4 ; 0xf5ad0
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5ad2
+ imul dx ; f7 ea ; 0xf5ad5
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5ad7
+ add si, ax ; 01 c6 ; 0xf5ada
+ cmp byte [es:si+01fh], 005h ; 26 80 7c 1f 05 ; 0xf5adc
+ jne short 05ae7h ; 75 04 ; 0xf5ae1
+ or byte [bp-00ah], 060h ; 80 4e f6 60 ; 0xf5ae3 disk.c:200
+ cmp bl, 001h ; 80 fb 01 ; 0xf5ae7 disk.c:206
+ jne short 05af1h ; 75 05 ; 0xf5aea
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5aec
+ jmp short 05af3h ; eb 02 ; 0xf5aef
+ xor ax, ax ; 31 c0 ; 0xf5af1
+ or word [bp-00ah], ax ; 09 46 f6 ; 0xf5af3
+ cmp bl, 003h ; 80 fb 03 ; 0xf5af6 disk.c:207
+ jne short 05b00h ; 75 05 ; 0xf5af9
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf5afb
+ jmp short 05b02h ; eb 02 ; 0xf5afe
+ xor ax, ax ; 31 c0 ; 0xf5b00
+ or word [bp-00ah], ax ; 09 46 f6 ; 0xf5b02
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf5b05 disk.c:209
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5b08
+ mov word [es:bx+002a8h], ax ; 26 89 87 a8 02 ; 0xf5b0b
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5b10 disk.c:210
+ mov word [es:bx+002aah], ax ; 26 89 87 aa 02 ; 0xf5b13
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5b18 disk.c:211
+ xor ah, ah ; 30 e4 ; 0xf5b1b
+ cwd ; 99 ; 0xf5b1d
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf5b1e
+ idiv bx ; f7 fb ; 0xf5b21
+ or dl, 00eh ; 80 ca 0e ; 0xf5b23
+ mov CL, strict byte 004h ; b1 04 ; 0xf5b26
+ sal dx, CL ; d3 e2 ; 0xf5b28
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5b2a
+ mov byte [es:bx+002ach], dl ; 26 88 97 ac 02 ; 0xf5b2d
+ mov byte [es:bx+002adh], 0cbh ; 26 c6 87 ad 02 cb ; 0xf5b32 disk.c:212
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5b38 disk.c:213
+ mov byte [es:bx+002aeh], al ; 26 88 87 ae 02 ; 0xf5b3b
+ mov word [es:bx+002afh], strict word 00001h ; 26 c7 87 af 02 01 00 ; 0xf5b40 disk.c:214
+ mov byte [es:bx+002b1h], 000h ; 26 c6 87 b1 02 00 ; 0xf5b47 disk.c:216
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5b4d disk.c:217
+ mov word [es:bx+002b2h], ax ; 26 89 87 b2 02 ; 0xf5b50
+ mov word [es:bx+002b4h], strict word 00000h ; 26 c7 87 b4 02 00 00 ; 0xf5b55 disk.c:218
+ mov byte [es:bx+002b6h], 011h ; 26 c6 87 b6 02 11 ; 0xf5b5c disk.c:219
+ xor bl, bl ; 30 db ; 0xf5b62 disk.c:221
+ xor bh, bh ; 30 ff ; 0xf5b64 disk.c:222
+ jmp short 05b6dh ; eb 05 ; 0xf5b66
+ cmp bh, 00fh ; 80 ff 0f ; 0xf5b68
+ jnc short 05b83h ; 73 16 ; 0xf5b6b
+ mov al, bh ; 88 f8 ; 0xf5b6d disk.c:223
+ xor ah, ah ; 30 e4 ; 0xf5b6f
+ mov si, ax ; 89 c6 ; 0xf5b71
+ add si, 00306h ; 81 c6 06 03 ; 0xf5b73
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf5b77 disk.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5b7a
+ add bl, al ; 00 c3 ; 0xf5b7d disk.c:49
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5b7f disk.c:223
+ jmp short 05b68h ; eb e5 ; 0xf5b81
+ neg bl ; f6 db ; 0xf5b83 disk.c:224
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5b85 disk.c:225
+ mov byte [es:si+002b7h], bl ; 26 88 9c b7 02 ; 0xf5b88
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b8d disk.c:229
+ cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5b90
+ jnc short 05b99h ; 73 03 ; 0xf5b94
+ jmp near 05c5eh ; e9 c5 00 ; 0xf5b96
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5b99 disk.c:233
+ xor ah, ah ; 30 e4 ; 0xf5b9c
+ cwd ; 99 ; 0xf5b9e
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5b9f
+ sar ax, 1 ; d1 f8 ; 0xf5ba1
+ xor ah, ah ; 30 e4 ; 0xf5ba3 disk.c:234
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf5ba5
+ imul dx ; f7 ea ; 0xf5ba8
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5baa
+ add bx, ax ; 01 c3 ; 0xf5bad
+ mov al, byte [es:bx+00278h] ; 26 8a 87 78 02 ; 0xf5baf
+ mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf5bb4 disk.c:235
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5bb9 disk.c:237
+ mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5bbc
+ mov word [es:di+01eh], 0beddh ; 26 c7 45 1e dd be ; 0xf5bc1 disk.c:238
+ mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00 ; 0xf5bc7 disk.c:239
+ mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5bcd disk.c:241
+ test al, al ; 84 c0 ; 0xf5bd3 disk.c:243
+ jne short 05be3h ; 75 0c ; 0xf5bd5
+ mov word [es:di+024h], 05349h ; 26 c7 45 24 49 53 ; 0xf5bd7 disk.c:244
+ mov word [es:di+026h], 02041h ; 26 c7 45 26 41 20 ; 0xf5bdd disk.c:246
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5be3 disk.c:252
+ mov word [es:di+028h], 05441h ; 26 c7 45 28 41 54 ; 0xf5be6
+ mov word [es:di+02ah], 02041h ; 26 c7 45 2a 41 20 ; 0xf5bec disk.c:254
+ mov word [es:di+02ch], 02020h ; 26 c7 45 2c 20 20 ; 0xf5bf2 disk.c:256
+ mov word [es:di+02eh], 02020h ; 26 c7 45 2e 20 20 ; 0xf5bf8 disk.c:258
+ test al, al ; 84 c0 ; 0xf5bfe disk.c:261
+ jne short 05c18h ; 75 16 ; 0xf5c00
+ mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5c02 disk.c:262
+ mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00 ; 0xf5c06 disk.c:263
+ mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00 ; 0xf5c0c disk.c:264
+ mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5c12
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c18 disk.c:269
+ and AL, strict byte 001h ; 24 01 ; 0xf5c1b
+ xor ah, ah ; 30 e4 ; 0xf5c1d
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c1f
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5c22
+ mov word [es:di+03ah], strict word 00000h ; 26 c7 45 3a 00 00 ; 0xf5c26 disk.c:270
+ mov word [es:di+03ch], strict word 00000h ; 26 c7 45 3c 00 00 ; 0xf5c2c disk.c:271
+ mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5c32
+ xor bl, bl ; 30 db ; 0xf5c38 disk.c:273
+ mov BH, strict byte 01eh ; b7 1e ; 0xf5c3a disk.c:274
+ jmp short 05c43h ; eb 05 ; 0xf5c3c
+ cmp bh, 040h ; 80 ff 40 ; 0xf5c3e
+ jnc short 05c55h ; 73 12 ; 0xf5c41
+ mov al, bh ; 88 f8 ; 0xf5c43 disk.c:275
+ xor ah, ah ; 30 e4 ; 0xf5c45
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c47
+ mov si, di ; 89 fe ; 0xf5c4a
+ add si, ax ; 01 c6 ; 0xf5c4c
+ add bl, byte [es:si] ; 26 02 1c ; 0xf5c4e
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5c51
+ jmp short 05c3eh ; eb e9 ; 0xf5c53
+ neg bl ; f6 db ; 0xf5c55 disk.c:276
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c57 disk.c:277
+ mov byte [es:di+041h], bl ; 26 88 5d 41 ; 0xf5c5a
+ xor ax, ax ; 31 c0 ; 0xf5c5e disk.c:279
+ mov sp, bp ; 89 ec ; 0xf5c60 disk.c:280
+ pop bp ; 5d ; 0xf5c62
+ pop di ; 5f ; 0xf5c63
+ pop si ; 5e ; 0xf5c64
+ retn 00002h ; c2 02 00 ; 0xf5c65
+ ; disGetNextSymbol 0xf5c68 LB 0x5280 -> off=0x32 cb=0000000000000436 uValue=00000000000f469a 'int13_harddisk'
+ db 02ah, 05dh, 03bh, 05dh, 062h, 05dh, 062h, 05dh, 062h, 05dh, 050h, 05fh, 093h, 060h, 093h, 060h
+ db 081h, 05fh, 06dh, 060h, 093h, 060h, 093h, 060h, 06dh, 060h, 06dh, 060h, 093h, 060h, 093h, 060h
+ db 0e7h, 05fh, 06dh, 060h, 093h, 060h, 093h, 060h, 06dh, 060h, 022h, 060h, 093h, 060h, 093h, 060h
+ db 093h, 060h
+int13_harddisk: ; 0xf5c9a LB 0x436
+ push bp ; 55 ; 0xf5c9a disk.c:282
+ mov bp, sp ; 89 e5 ; 0xf5c9b
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf5c9d
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5ca0 disk.c:293
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5ca4 disk.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5ca7
+ mov es, ax ; 8e c0 ; 0xf5caa
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5cac
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf5caf disk.c:59
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf5cb2
+ mov bx, 0008eh ; bb 8e 00 ; 0xf5cb5 disk.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5cb8
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5cbc disk.c:299
+ xor ah, ah ; 30 e4 ; 0xf5cbf
+ cmp ax, 00080h ; 3d 80 00 ; 0xf5cc1
+ jc short 05ccbh ; 72 05 ; 0xf5cc4
+ cmp ax, 00094h ; 3d 94 00 ; 0xf5cc6
+ jc short 05ceah ; 72 1f ; 0xf5cc9
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5ccb disk.c:300
+ xor ah, ah ; 30 e4 ; 0xf5cce
+ push ax ; 50 ; 0xf5cd0
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5cd1
+ push ax ; 50 ; 0xf5cd4
+ mov ax, 006d4h ; b8 d4 06 ; 0xf5cd5
+ push ax ; 50 ; 0xf5cd8
+ mov ax, 006e3h ; b8 e3 06 ; 0xf5cd9
+ push ax ; 50 ; 0xf5cdc
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5cdd
+ push ax ; 50 ; 0xf5ce0
+ call 0195ch ; e8 78 bc ; 0xf5ce1
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5ce4
+ jmp near 060aeh ; e9 c4 03 ; 0xf5ce7 disk.c:301
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5cea disk.c:305
+ xor ah, ah ; 30 e4 ; 0xf5ced
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5cef
+ mov bx, si ; 89 f3 ; 0xf5cf2
+ add bx, ax ; 01 c3 ; 0xf5cf4
+ mov dl, byte [es:bx+001cfh] ; 26 8a 97 cf 01 ; 0xf5cf6
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf5cfb
+ cmp dl, 014h ; 80 fa 14 ; 0xf5cfe disk.c:308
+ jc short 05d11h ; 72 0e ; 0xf5d01
+ push ax ; 50 ; 0xf5d03 disk.c:309
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5d04
+ push ax ; 50 ; 0xf5d07
+ mov ax, 006d4h ; b8 d4 06 ; 0xf5d08
+ push ax ; 50 ; 0xf5d0b
+ mov ax, 0070eh ; b8 0e 07 ; 0xf5d0c
+ jmp short 05cdch ; eb cb ; 0xf5d0f
+ mov bl, byte [bp+017h] ; 8a 5e 17 ; 0xf5d11 disk.c:313
+ xor bh, bh ; 30 ff ; 0xf5d14
+ cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5d16
+ jnbe short 05d5fh ; 77 44 ; 0xf5d19
+ sal bx, 1 ; d1 e3 ; 0xf5d1b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5d1d
+ xor ah, ah ; 30 e4 ; 0xf5d20
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf5d22
+ jmp word [cs:bx+05c68h] ; 2e ff a7 68 5c ; 0xf5d25
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5d2a disk.c:318
+ jnc short 05d38h ; 73 08 ; 0xf5d2e
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5d30 disk.c:320
+ xor ah, ah ; 30 e4 ; 0xf5d33
+ call 01d9bh ; e8 63 c0 ; 0xf5d35
+ jmp near 05f69h ; e9 2e 02 ; 0xf5d38 disk.c:321
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5d3b disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5d3e
+ mov es, ax ; 8e c0 ; 0xf5d41
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5d43
+ mov ah, dl ; 88 d4 ; 0xf5d46 disk.c:326
+ xor al, al ; 30 c0 ; 0xf5d48
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5d4a
+ or bx, ax ; 09 c3 ; 0xf5d4d
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5d4f
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5d52 disk.c:53
+ mov byte [es:bx], al ; 26 88 07 ; 0xf5d55
+ test dl, dl ; 84 d2 ; 0xf5d58 disk.c:329
+ je short 05dbeh ; 74 62 ; 0xf5d5a
+ jmp near 060c9h ; e9 6a 03 ; 0xf5d5c
+ jmp near 06093h ; e9 31 03 ; 0xf5d5f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5d62 disk.c:337
+ xor ah, ah ; 30 e4 ; 0xf5d65
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf5d67
+ mov al, byte [bp+015h] ; 8a 46 15 ; 0xf5d6a disk.c:338
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d6d disk.c:339
+ xor dh, dh ; 30 f6 ; 0xf5d70
+ sal dx, 1 ; d1 e2 ; 0xf5d72
+ sal dx, 1 ; d1 e2 ; 0xf5d74
+ and dh, 003h ; 80 e6 03 ; 0xf5d76
+ mov ah, dh ; 88 f4 ; 0xf5d79
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5d7b
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5d7e disk.c:340
+ and di, strict byte 0003fh ; 83 e7 3f ; 0xf5d81
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf5d84 disk.c:341
+ xor ah, dh ; 30 f4 ; 0xf5d87
+ mov word [bp-004h], ax ; 89 46 fc ; 0xf5d89
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf5d8c disk.c:344
+ cmp ax, 00080h ; 3d 80 00 ; 0xf5d8f
+ jnbe short 05d98h ; 77 04 ; 0xf5d92
+ test ax, ax ; 85 c0 ; 0xf5d94
+ jne short 05dc1h ; 75 29 ; 0xf5d96
+ mov bx, 00ddch ; bb dc 0d ; 0xf5d98 disk.c:345
+ mov cx, ds ; 8c d9 ; 0xf5d9b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5d9d
+ call 01919h ; e8 76 bb ; 0xf5da0
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5da3
+ xor ah, ah ; 30 e4 ; 0xf5da6
+ push ax ; 50 ; 0xf5da8
+ mov ax, 006d4h ; b8 d4 06 ; 0xf5da9
+ push ax ; 50 ; 0xf5dac
+ mov ax, 00740h ; b8 40 07 ; 0xf5dad
+ push ax ; 50 ; 0xf5db0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5db1
+ push ax ; 50 ; 0xf5db4
+ call 0195ch ; e8 a4 bb ; 0xf5db5
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf5db8
+ jmp near 060aeh ; e9 f0 02 ; 0xf5dbb disk.c:346
+ jmp near 05f6dh ; e9 ac 01 ; 0xf5dbe
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5dc1 disk.c:350
+ xor ah, ah ; 30 e4 ; 0xf5dc4
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5dc6
+ imul dx ; f7 ea ; 0xf5dc9
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5dcb
+ mov bx, si ; 89 f3 ; 0xf5dce
+ add bx, ax ; 01 c3 ; 0xf5dd0
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf5dd2
+ mov cx, word [es:bx+026h] ; 26 8b 4f 26 ; 0xf5dd6 disk.c:351
+ mov dx, word [es:bx+02ah] ; 26 8b 57 2a ; 0xf5dda disk.c:352
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf5dde
+ cmp ax, word [bp-00ah] ; 3b 46 f6 ; 0xf5de1 disk.c:355
+ jbe short 05defh ; 76 09 ; 0xf5de4
+ cmp cx, word [bp-004h] ; 3b 4e fc ; 0xf5de6
+ jbe short 05defh ; 76 04 ; 0xf5de9
+ cmp di, dx ; 39 d7 ; 0xf5deb
+ jbe short 05e20h ; 76 31 ; 0xf5ded
+ mov bx, 00ddch ; bb dc 0d ; 0xf5def disk.c:356
+ mov cx, ds ; 8c d9 ; 0xf5df2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5df4
+ call 01919h ; e8 1f bb ; 0xf5df7
+ push di ; 57 ; 0xf5dfa
+ push word [bp-004h] ; ff 76 fc ; 0xf5dfb
+ push word [bp-00ah] ; ff 76 f6 ; 0xf5dfe
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5e01
+ xor ah, ah ; 30 e4 ; 0xf5e04
+ push ax ; 50 ; 0xf5e06
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5e07
+ push ax ; 50 ; 0xf5e0a
+ mov ax, 006d4h ; b8 d4 06 ; 0xf5e0b
+ push ax ; 50 ; 0xf5e0e
+ mov ax, 00768h ; b8 68 07 ; 0xf5e0f
+ push ax ; 50 ; 0xf5e12
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5e13
+ push ax ; 50 ; 0xf5e16
+ call 0195ch ; e8 42 bb ; 0xf5e17
+ add sp, strict byte 00010h ; 83 c4 10 ; 0xf5e1a
+ jmp near 060aeh ; e9 8e 02 ; 0xf5e1d disk.c:357
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5e20 disk.c:361
+ xor ah, ah ; 30 e4 ; 0xf5e23
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf5e25
+ je short 05e4ah ; 74 20 ; 0xf5e28
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5e2a disk.c:366
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5e2d
+ imul dx ; f7 ea ; 0xf5e30
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5e32
+ mov bx, si ; 89 f3 ; 0xf5e35
+ add bx, ax ; 01 c3 ; 0xf5e37
+ cmp cx, word [es:bx+02ch] ; 26 3b 4f 2c ; 0xf5e39
+ jne short 05e53h ; 75 14 ; 0xf5e3d
+ mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5e3f
+ cmp ax, word [bp-010h] ; 3b 46 f0 ; 0xf5e43
+ je short 05e4dh ; 74 05 ; 0xf5e46
+ jmp short 05e53h ; eb 09 ; 0xf5e48
+ jmp near 05f69h ; e9 1c 01 ; 0xf5e4a
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e4d
+ jc short 05e82h ; 72 2f ; 0xf5e51
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5e53 disk.c:367
+ xor dx, dx ; 31 d2 ; 0xf5e56
+ mov bx, cx ; 89 cb ; 0xf5e58
+ xor cx, cx ; 31 c9 ; 0xf5e5a
+ call 0ab50h ; e8 f1 4c ; 0xf5e5c
+ xor bx, bx ; 31 db ; 0xf5e5f
+ add ax, word [bp-004h] ; 03 46 fc ; 0xf5e61
+ adc dx, bx ; 11 da ; 0xf5e64
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf5e66
+ xor cx, cx ; 31 c9 ; 0xf5e69
+ call 0ab50h ; e8 e2 4c ; 0xf5e6b
+ xor bx, bx ; 31 db ; 0xf5e6e
+ add ax, di ; 01 f8 ; 0xf5e70
+ adc dx, bx ; 11 da ; 0xf5e72
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf5e74
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf5e77
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf5e7a
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5e7d
+ xor di, di ; 31 ff ; 0xf5e80 disk.c:368
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5e82 disk.c:378
+ mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf5e85
+ mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf5e8b disk.c:379
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5e91
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5e97 disk.c:382
+ mov word [es:si], ax ; 26 89 04 ; 0xf5e9a
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 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:383
+ 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-012h] ; 8b 46 ee ; 0xf5ebe disk.c:384
+ 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:385
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5ecb disk.c:386
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf5ece
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5ed2 disk.c:387
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5ed5
+ mov word [es:si+016h], di ; 26 89 7c 16 ; 0xf5ed9 disk.c:388
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5edd disk.c:389
+ mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5ee0
+ xor ah, ah ; 30 e4 ; 0xf5ee4 disk.c:391
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5ee6
+ imul dx ; f7 ea ; 0xf5ee9
+ mov bx, si ; 89 f3 ; 0xf5eeb
+ add bx, ax ; 01 c3 ; 0xf5eed
+ mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf5eef
+ xor ah, ah ; 30 e4 ; 0xf5ef3
+ mov bx, ax ; 89 c3 ; 0xf5ef5
+ sal bx, 1 ; d1 e3 ; 0xf5ef7
+ sal bx, 1 ; d1 e3 ; 0xf5ef9
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5efb
+ sal ax, 1 ; d1 e0 ; 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:394
+ 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:396
+ je short 05f69h ; 74 4a ; 0xf5f1d
+ mov bx, 00ddch ; bb dc 0d ; 0xf5f1f disk.c:397
+ mov cx, ds ; 8c d9 ; 0xf5f22
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f24
+ call 01919h ; e8 ef b9 ; 0xf5f27
+ mov al, dl ; 88 d0 ; 0xf5f2a
+ xor ah, ah ; 30 e4 ; 0xf5f2c
+ push ax ; 50 ; 0xf5f2e
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5f2f
+ push ax ; 50 ; 0xf5f32
+ mov ax, 006d4h ; b8 d4 06 ; 0xf5f33
+ push ax ; 50 ; 0xf5f36
+ mov ax, 007afh ; b8 af 07 ; 0xf5f37
+ push ax ; 50 ; 0xf5f3a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f3b
+ push ax ; 50 ; 0xf5f3e
+ call 0195ch ; e8 1a ba ; 0xf5f3f
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5f42
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f45 disk.c:398
+ xor ah, ah ; 30 e4 ; 0xf5f48
+ or ah, 00ch ; 80 cc 0c ; 0xf5f4a
+ jmp near 060b6h ; e9 66 01 ; 0xf5f4d disk.c:399
+ mov bx, 00ddch ; bb dc 0d ; 0xf5f50 disk.c:406
+ mov cx, ds ; 8c d9 ; 0xf5f53
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f55
+ call 01919h ; e8 be b9 ; 0xf5f58
+ mov ax, 007d0h ; b8 d0 07 ; 0xf5f5b
+ push ax ; 50 ; 0xf5f5e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f5f
+ push ax ; 50 ; 0xf5f62
+ call 0195ch ; e8 f6 b9 ; 0xf5f63
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5f66
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5f69 disk.c:407
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5f6d
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5f70
+ mov es, ax ; 8e c0 ; 0xf5f73
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5f75
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5f79
+ mov sp, bp ; 89 ec ; 0xf5f7d
+ pop bp ; 5d ; 0xf5f7f
+ retn ; c3 ; 0xf5f80
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5f81 disk.c:413
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5f84
+ imul dx ; f7 ea ; 0xf5f87
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5f89
+ mov bx, si ; 89 f3 ; 0xf5f8c
+ add bx, ax ; 01 c3 ; 0xf5f8e
+ mov di, word [es:bx+028h] ; 26 8b 7f 28 ; 0xf5f90
+ mov cx, word [es:bx+026h] ; 26 8b 4f 26 ; 0xf5f94 disk.c:414
+ mov ax, word [es:bx+02ah] ; 26 8b 47 2a ; 0xf5f98 disk.c:415
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf5f9c
+ mov dl, byte [es:si+0024eh] ; 26 8a 94 4e 02 ; 0xf5f9f disk.c:417
+ xor dh, dh ; 30 f6 ; 0xf5fa4
+ mov byte [bp+016h], dh ; 88 76 16 ; 0xf5fa6 disk.c:423
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf5fa9 disk.c:424
+ dec di ; 4f ; 0xf5fac disk.c:422
+ mov ax, di ; 89 f8 ; 0xf5fad
+ mov bh, al ; 88 c7 ; 0xf5faf
+ mov word [bp+014h], bx ; 89 5e 14 ; 0xf5fb1
+ shr di, 1 ; d1 ef ; 0xf5fb4 disk.c:425
+ shr di, 1 ; d1 ef ; 0xf5fb6
+ and di, 000c0h ; 81 e7 c0 00 ; 0xf5fb8
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5fbc
+ and ax, strict word 0003fh ; 25 3f 00 ; 0xf5fbf
+ or ax, di ; 09 f8 ; 0xf5fc2
+ xor bl, bl ; 30 db ; 0xf5fc4
+ or bx, ax ; 09 c3 ; 0xf5fc6
+ mov word [bp+014h], bx ; 89 5e 14 ; 0xf5fc8
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf5fcb disk.c:426
+ xor bh, bh ; 30 ff ; 0xf5fce
+ mov ah, cl ; 88 cc ; 0xf5fd0
+ xor al, al ; 30 c0 ; 0xf5fd2
+ sub ax, 00100h ; 2d 00 01 ; 0xf5fd4
+ or bx, ax ; 09 c3 ; 0xf5fd7
+ mov word [bp+012h], bx ; 89 5e 12 ; 0xf5fd9
+ mov ax, bx ; 89 d8 ; 0xf5fdc disk.c:427
+ xor al, bl ; 30 d8 ; 0xf5fde
+ or ax, dx ; 09 d0 ; 0xf5fe0
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf5fe2
+ jmp short 05f69h ; eb 82 ; 0xf5fe5 disk.c:432
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5fe7 disk.c:440
+ jc short 05ff0h ; 72 03 ; 0xf5feb
+ jmp near 05f69h ; e9 79 ff ; 0xf5fed
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5ff0 disk.c:443
+ xor ah, ah ; 30 e4 ; 0xf5ff3
+ cwd ; 99 ; 0xf5ff5
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5ff6
+ sar ax, 1 ; d1 f8 ; 0xf5ff8
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf5ffa
+ imul dx ; f7 ea ; 0xf5ffd
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5fff
+ add si, ax ; 01 c6 ; 0xf6002
+ mov dx, word [es:si+0027ah] ; 26 8b 94 7a 02 ; 0xf6004
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf6009
+ in AL, DX ; ec ; 0xf600c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf600d
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf600f disk.c:444
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf6011
+ jne short 06017h ; 75 02 ; 0xf6013
+ jmp short 05fedh ; eb d6 ; 0xf6015 disk.c:445
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6017 disk.c:447
+ xor ah, ah ; 30 e4 ; 0xf601a
+ or ah, 0aah ; 80 cc aa ; 0xf601c
+ jmp near 060b6h ; e9 94 00 ; 0xf601f
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6022 disk.c:459
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6025
+ imul dx ; f7 ea ; 0xf6028
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf602a
+ add si, ax ; 01 c6 ; 0xf602d
+ mov ax, word [es:si+02eh] ; 26 8b 44 2e ; 0xf602f
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6033
+ mov ax, word [es:si+02ch] ; 26 8b 44 2c ; 0xf6036 disk.c:460
+ mov word [bp-004h], ax ; 89 46 fc ; 0xf603a
+ mov di, word [es:si+030h] ; 26 8b 7c 30 ; 0xf603d disk.c:461
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf6041 disk.c:464
+ xor dx, dx ; 31 d2 ; 0xf6044
+ mov bx, word [bp-004h] ; 8b 5e fc ; 0xf6046
+ xor cx, cx ; 31 c9 ; 0xf6049
+ call 0ab50h ; e8 02 4b ; 0xf604b
+ mov bx, di ; 89 fb ; 0xf604e
+ xor cx, cx ; 31 c9 ; 0xf6050
+ call 0ab50h ; e8 fb 4a ; 0xf6052
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6055
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf6058
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf605b disk.c:465
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf605e disk.c:466
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6061 disk.c:468
+ or ah, 003h ; 80 cc 03 ; 0xf6064
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6067
+ jmp near 05f6dh ; e9 00 ff ; 0xf606a disk.c:469
+ mov bx, 00ddch ; bb dc 0d ; 0xf606d disk.c:477
+ mov cx, ds ; 8c d9 ; 0xf6070
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6072
+ call 01919h ; e8 a1 b8 ; 0xf6075
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6078
+ xor ah, ah ; 30 e4 ; 0xf607b
+ push ax ; 50 ; 0xf607d
+ mov ax, 006d4h ; b8 d4 06 ; 0xf607e
+ push ax ; 50 ; 0xf6081
+ mov ax, 007eah ; b8 ea 07 ; 0xf6082
+ push ax ; 50 ; 0xf6085
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6086
+ push ax ; 50 ; 0xf6089
+ call 0195ch ; e8 cf b8 ; 0xf608a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf608d
+ jmp near 05f69h ; e9 d6 fe ; 0xf6090 disk.c:478
+ mov bx, 00ddch ; bb dc 0d ; 0xf6093 disk.c:485
+ mov cx, ds ; 8c d9 ; 0xf6096
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6098
+ call 01919h ; e8 7b b8 ; 0xf609b
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf609e
+ xor ah, ah ; 30 e4 ; 0xf60a1
+ push ax ; 50 ; 0xf60a3
+ mov ax, 006d4h ; b8 d4 06 ; 0xf60a4
+ push ax ; 50 ; 0xf60a7
+ mov ax, 0081dh ; b8 1d 08 ; 0xf60a8
+ jmp near 05db0h ; e9 02 fd ; 0xf60ab
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60ae disk.c:491
+ xor ah, ah ; 30 e4 ; 0xf60b1
+ or ah, 001h ; 80 cc 01 ; 0xf60b3
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf60b6
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf60b9 disk.c:493
+ xor ah, ah ; 30 e4 ; 0xf60bc
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf60be disk.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf60c1
+ mov es, dx ; 8e c2 ; 0xf60c4
+ mov byte [es:bx], al ; 26 88 07 ; 0xf60c6
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf60c9 disk.c:495
+ jmp near 05f7dh ; e9 ad fe ; 0xf60cd disk.c:496
+ ; disGetNextSymbol 0xf60d0 LB 0x4e18 -> off=0x20 cb=00000000000002a8 uValue=00000000000f4af0 'int13_harddisk_ext'
+ db 07eh, 061h, 0b1h, 061h, 0b1h, 061h, 0b1h, 061h, 080h, 063h, 02ch, 063h, 0b1h, 061h, 031h, 063h
+ db 080h, 063h, 096h, 061h, 096h, 061h, 096h, 061h, 096h, 061h, 049h, 063h, 096h, 061h, 096h, 061h
+int13_harddisk_ext: ; 0xf60f0 LB 0x2a8
+ push bp ; 55 ; 0xf60f0 disk.c:506
+ mov bp, sp ; 89 e5 ; 0xf60f1
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf60f3
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf60f6 disk.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf60f9
+ mov es, ax ; 8e c0 ; 0xf60fc
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf60fe
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf6101 disk.c:59
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf6104
+ mov bx, 0008eh ; bb 8e 00 ; 0xf6107 disk.c:53
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf610a
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf610e disk.c:530
+ xor ah, ah ; 30 e4 ; 0xf6111
+ cmp ax, 00080h ; 3d 80 00 ; 0xf6113
+ jc short 0611dh ; 72 05 ; 0xf6116
+ cmp ax, 00094h ; 3d 94 00 ; 0xf6118
+ jc short 0613ch ; 72 1f ; 0xf611b
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf611d disk.c:531
+ xor ah, ah ; 30 e4 ; 0xf6120
+ push ax ; 50 ; 0xf6122
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6123
+ push ax ; 50 ; 0xf6126
+ mov ax, 0084bh ; b8 4b 08 ; 0xf6127
+ push ax ; 50 ; 0xf612a
+ mov ax, 006e3h ; b8 e3 06 ; 0xf612b
+ push ax ; 50 ; 0xf612e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf612f
+ push ax ; 50 ; 0xf6132
+ call 0195ch ; e8 26 b8 ; 0xf6133
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6136
+ jmp near 0635fh ; e9 23 02 ; 0xf6139 disk.c:532
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf613c disk.c:536
+ xor ah, ah ; 30 e4 ; 0xf613f
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf6141
+ mov bx, di ; 89 fb ; 0xf6144
+ add bx, ax ; 01 c3 ; 0xf6146
+ mov dl, byte [es:bx+001cfh] ; 26 8a 97 cf 01 ; 0xf6148
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf614d
+ cmp dl, 014h ; 80 fa 14 ; 0xf6150 disk.c:539
+ jc short 06163h ; 72 0e ; 0xf6153
+ push ax ; 50 ; 0xf6155 disk.c:540
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6156
+ push ax ; 50 ; 0xf6159
+ mov ax, 0084bh ; b8 4b 08 ; 0xf615a
+ push ax ; 50 ; 0xf615d
+ mov ax, 0070eh ; b8 0e 07 ; 0xf615e
+ jmp short 0612eh ; eb cb ; 0xf6161
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6163 disk.c:544
+ xor ah, ah ; 30 e4 ; 0xf6166
+ sub ax, strict word 00041h ; 2d 41 00 ; 0xf6168
+ cmp ax, strict word 0000fh ; 3d 0f 00 ; 0xf616b
+ jnbe short 06196h ; 77 26 ; 0xf616e
+ mov bx, ax ; 89 c3 ; 0xf6170
+ sal bx, 1 ; d1 e3 ; 0xf6172
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6174
+ xor ah, ah ; 30 e4 ; 0xf6177
+ jmp word [cs:bx+060d0h] ; 2e ff a7 d0 60 ; 0xf6179
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf617e disk.c:546
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6183 disk.c:547
+ xor ah, ah ; 30 e4 ; 0xf6186
+ or ah, 030h ; 80 cc 30 ; 0xf6188
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf618b
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf618e disk.c:548
+ jmp near 06384h ; e9 ee 01 ; 0xf6193 disk.c:549
+ mov bx, 00ddch ; bb dc 0d ; 0xf6196
+ mov cx, ds ; 8c d9 ; 0xf6199
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf619b
+ call 01919h ; e8 78 b7 ; 0xf619e
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf61a1
+ xor ah, ah ; 30 e4 ; 0xf61a4
+ push ax ; 50 ; 0xf61a6
+ mov ax, 0084bh ; b8 4b 08 ; 0xf61a7
+ push ax ; 50 ; 0xf61aa
+ mov ax, 0081dh ; b8 1d 08 ; 0xf61ab
+ jmp near 0625ah ; e9 a9 00 ; 0xf61ae
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf61b1 disk.c:558
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf61b4
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf61b7
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf61ba
+ mov [bp-010h], es ; 8c 46 f0 ; 0xf61bd
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf61c0 disk.c:560
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf61c4
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf61c7 disk.c:561
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf61cb
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf61ce disk.c:562
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf61d2
+ mov si, bx ; 89 de ; 0xf61d5 disk.c:565
+ mov si, word [es:si+00ch] ; 26 8b 74 0c ; 0xf61d7
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf61db
+ xor ax, ax ; 31 c0 ; 0xf61df disk.c:566
+ xor bx, bx ; 31 db ; 0xf61e1
+ mov dx, si ; 89 f2 ; 0xf61e3
+ mov si, strict word 00020h ; be 20 00 ; 0xf61e5
+ call 0abb0h ; e8 c5 49 ; 0xf61e8
+ mov word [bp-004h], ax ; 89 46 fc ; 0xf61eb
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf61ee
+ mov si, dx ; 89 d6 ; 0xf61f1
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf61f3 disk.c:567
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf61f6
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf61fa
+ or si, dx ; 09 d6 ; 0xf61fe
+ or cx, ax ; 09 c1 ; 0xf6200
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6202 disk.c:572
+ xor ah, ah ; 30 e4 ; 0xf6205
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6207
+ imul dx ; f7 ea ; 0xf620a
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf620c
+ mov bx, di ; 89 fb ; 0xf620f
+ add bx, ax ; 01 c3 ; 0xf6211
+ mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf6213
+ mov dx, word [bp-004h] ; 8b 56 fc ; 0xf6217 disk.c:573
+ cmp dx, word [es:bx+038h] ; 26 3b 57 38 ; 0xf621a
+ jnbe short 06242h ; 77 22 ; 0xf621e
+ jne short 06268h ; 75 46 ; 0xf6220
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf6222
+ cmp dx, word [es:bx+036h] ; 26 3b 57 36 ; 0xf6225
+ jnbe short 06242h ; 77 17 ; 0xf6229
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf622b
+ cmp dx, word [es:bx+036h] ; 26 3b 57 36 ; 0xf622e
+ jne short 06268h ; 75 34 ; 0xf6232
+ cmp cx, word [es:bx+034h] ; 26 3b 4f 34 ; 0xf6234
+ jnbe short 06242h ; 77 08 ; 0xf6238
+ jne short 06268h ; 75 2c ; 0xf623a
+ cmp si, word [es:bx+032h] ; 26 3b 77 32 ; 0xf623c
+ jc short 06268h ; 72 26 ; 0xf6240
+ mov bx, 00ddch ; bb dc 0d ; 0xf6242 disk.c:574
+ mov cx, ds ; 8c d9 ; 0xf6245
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6247
+ call 01919h ; e8 cc b6 ; 0xf624a
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf624d
+ xor ah, ah ; 30 e4 ; 0xf6250
+ push ax ; 50 ; 0xf6252
+ mov ax, 0084bh ; b8 4b 08 ; 0xf6253
+ push ax ; 50 ; 0xf6256
+ mov ax, 0085eh ; b8 5e 08 ; 0xf6257
+ push ax ; 50 ; 0xf625a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf625b
+ push ax ; 50 ; 0xf625e
+ call 0195ch ; e8 fa b6 ; 0xf625f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6262
+ jmp near 0635fh ; e9 f7 00 ; 0xf6265 disk.c:575
+ mov ah, byte [bp+017h] ; 8a 66 17 ; 0xf6268 disk.c:579
+ mov byte [bp-008h], ah ; 88 66 f8 ; 0xf626b
+ mov byte [bp-007h], 000h ; c6 46 f9 00 ; 0xf626e
+ cmp word [bp-008h], strict byte 00044h ; 83 7e f8 44 ; 0xf6272
+ je short 0627eh ; 74 06 ; 0xf6276
+ cmp word [bp-008h], strict byte 00047h ; 83 7e f8 47 ; 0xf6278
+ jne short 06281h ; 75 03 ; 0xf627c
+ jmp near 06380h ; e9 ff 00 ; 0xf627e disk.c:580
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf6281 disk.c:583
+ mov word [es:di+018h], strict word 00000h ; 26 c7 45 18 00 00 ; 0xf6284
+ mov word [es:di+01ah], strict word 00000h ; 26 c7 45 1a 00 00 ; 0xf628a disk.c:584
+ mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf6290
+ mov dx, word [bp-004h] ; 8b 56 fc ; 0xf6296 disk.c:587
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf6299
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf629d
+ mov word [es:di+004h], dx ; 26 89 55 04 ; 0xf62a0
+ mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf62a4
+ mov word [es:di], si ; 26 89 35 ; 0xf62a8
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf62ab disk.c:588
+ mov word [es:di+008h], dx ; 26 89 55 08 ; 0xf62ae
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf62b2
+ mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf62b5
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf62b9 disk.c:589
+ mov word [es:di+00eh], dx ; 26 89 55 0e ; 0xf62bc
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf62c0 disk.c:590
+ mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf62c6 disk.c:591
+ mov ah, byte [bp-002h] ; 8a 66 fe ; 0xf62cc disk.c:592
+ mov byte [es:di+00ch], ah ; 26 88 65 0c ; 0xf62cf
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf62d3 disk.c:595
+ sal bx, 1 ; d1 e3 ; 0xf62d6
+ xor ah, ah ; 30 e4 ; 0xf62d8
+ sal ax, 1 ; d1 e0 ; 0xf62da
+ sal ax, 1 ; d1 e0 ; 0xf62dc
+ add bx, ax ; 01 c3 ; 0xf62de
+ push ES ; 06 ; 0xf62e0
+ push di ; 57 ; 0xf62e1
+ call word [word bx-00002h] ; ff 97 fe ff ; 0xf62e2
+ mov dx, ax ; 89 c2 ; 0xf62e6
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf62e8 disk.c:596
+ mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf62eb
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf62ef
+ les bx, [bp-012h] ; c4 5e ee ; 0xf62f2 disk.c:597
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf62f5
+ test dl, dl ; 84 d2 ; 0xf62f9 disk.c:599
+ je short 0627eh ; 74 81 ; 0xf62fb
+ mov bx, 00ddch ; bb dc 0d ; 0xf62fd disk.c:600
+ mov cx, ds ; 8c d9 ; 0xf6300
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6302
+ call 01919h ; e8 11 b6 ; 0xf6305
+ mov al, dl ; 88 d0 ; 0xf6308
+ xor ah, ah ; 30 e4 ; 0xf630a
+ push ax ; 50 ; 0xf630c
+ push word [bp-008h] ; ff 76 f8 ; 0xf630d
+ mov ax, 0084bh ; b8 4b 08 ; 0xf6310
+ push ax ; 50 ; 0xf6313
+ mov ax, 007afh ; b8 af 07 ; 0xf6314
+ push ax ; 50 ; 0xf6317
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6318
+ push ax ; 50 ; 0xf631b
+ call 0195ch ; e8 3d b6 ; 0xf631c
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf631f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6322 disk.c:601
+ xor ah, ah ; 30 e4 ; 0xf6325
+ or ah, 00ch ; 80 cc 0c ; 0xf6327
+ jmp short 06367h ; eb 3b ; 0xf632a disk.c:602
+ or ah, 0b2h ; 80 cc b2 ; 0xf632c disk.c:614
+ jmp short 06367h ; eb 36 ; 0xf632f
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6331 disk.c:619
+ push ax ; 50 ; 0xf6334
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6335
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6338
+ mov bx, di ; 89 fb ; 0xf633b
+ mov cx, word [bp-014h] ; 8b 4e ec ; 0xf633d
+ call 0594ah ; e8 07 f6 ; 0xf6340
+ test ax, ax ; 85 c0 ; 0xf6343
+ je short 06380h ; 74 39 ; 0xf6345
+ jmp short 0635fh ; eb 16 ; 0xf6347 disk.c:620
+ cmp ax, strict word 00006h ; 3d 06 00 ; 0xf6349 disk.c:627
+ je short 06380h ; 74 32 ; 0xf634c
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf634e
+ jc short 0635fh ; 72 0c ; 0xf6351
+ jbe short 06380h ; 76 2b ; 0xf6353
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6355
+ jc short 0635fh ; 72 05 ; 0xf6358
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf635a
+ jbe short 06380h ; 76 21 ; 0xf635d
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf635f disk.c:647
+ xor ah, ah ; 30 e4 ; 0xf6362
+ or ah, 001h ; 80 cc 01 ; 0xf6364
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6367
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf636a disk.c:649
+ xor ah, ah ; 30 e4 ; 0xf636d
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf636f disk.c:53
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6372
+ mov es, dx ; 8e c2 ; 0xf6375
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6377
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf637a disk.c:650
+ jmp short 06394h ; eb 14 ; 0xf637e disk.c:651
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6380 disk.c:654
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf6384 disk.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6387
+ mov es, ax ; 8e c0 ; 0xf638a
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf638c
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6390 disk.c:657
+ mov sp, bp ; 89 ec ; 0xf6394 disk.c:659
+ pop bp ; 5d ; 0xf6396
+ retn ; c3 ; 0xf6397
+ ; disGetNextSymbol 0xf6398 LB 0x4b50 -> off=0x0 cb=0000000000000153 uValue=00000000000f4d98 'int14_function'
+int14_function: ; 0xf6398 LB 0x153
+ push bp ; 55 ; 0xf6398 serial.c:70
+ mov bp, sp ; 89 e5 ; 0xf6399
+ push si ; 56 ; 0xf639b
+ push di ; 57 ; 0xf639c
+ sti ; fb ; 0xf639d serial.c:75
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf639e serial.c:77
+ sal si, 1 ; d1 e6 ; 0xf63a1
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf63a3 serial.c:58
+ mov es, ax ; 8e c0 ; 0xf63a6
+ mov si, word [es:si] ; 26 8b 34 ; 0xf63a8
+ mov bx, si ; 89 f3 ; 0xf63ab serial.c:59
+ mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf63ad serial.c:78
+ add di, strict byte 0007ch ; 83 c7 7c ; 0xf63b0
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf63b3 serial.c:48
+ cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf63b6 serial.c:79
+ jnc short 063c0h ; 73 04 ; 0xf63ba
+ test si, si ; 85 f6 ; 0xf63bc
+ jnbe short 063c3h ; 77 03 ; 0xf63be
+ jmp near 064e0h ; e9 1d 01 ; 0xf63c0
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf63c3 serial.c:80
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf63c6
+ jc short 063d7h ; 72 0d ; 0xf63c8
+ jbe short 06437h ; 76 6b ; 0xf63ca
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf63cc
+ je short 0642fh ; 74 5f ; 0xf63ce
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf63d0
+ je short 06432h ; 74 5e ; 0xf63d2
+ jmp near 064dah ; e9 03 01 ; 0xf63d4
+ test al, al ; 84 c0 ; 0xf63d7
+ jne short 06434h ; 75 59 ; 0xf63d9
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf63db serial.c:82
+ in AL, DX ; ec ; 0xf63de
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf63df
+ or AL, strict byte 080h ; 0c 80 ; 0xf63e1
+ out DX, AL ; ee ; 0xf63e3
+ lea si, [bx+001h] ; 8d 77 01 ; 0xf63e4
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf63e7 serial.c:83
+ test AL, strict byte 0e0h ; a8 e0 ; 0xf63ea
+ jne short 063fah ; 75 0c ; 0xf63ec
+ mov AL, strict byte 017h ; b0 17 ; 0xf63ee serial.c:84
+ mov dx, bx ; 89 da ; 0xf63f0
+ out DX, AL ; ee ; 0xf63f2
+ mov AL, strict byte 004h ; b0 04 ; 0xf63f3 serial.c:85
+ mov dx, si ; 89 f2 ; 0xf63f5
+ out DX, AL ; ee ; 0xf63f7
+ jmp short 06411h ; eb 17 ; 0xf63f8 serial.c:86
+ and AL, strict byte 0e0h ; 24 e0 ; 0xf63fa serial.c:87
+ xor ah, ah ; 30 e4 ; 0xf63fc
+ mov CL, strict byte 005h ; b1 05 ; 0xf63fe
+ sar ax, CL ; d3 f8 ; 0xf6400
+ mov cl, al ; 88 c1 ; 0xf6402
+ mov ax, 00600h ; b8 00 06 ; 0xf6404
+ sar ax, CL ; d3 f8 ; 0xf6407
+ mov dx, bx ; 89 da ; 0xf6409 serial.c:88
+ out DX, AL ; ee ; 0xf640b
+ mov al, ah ; 88 e0 ; 0xf640c serial.c:89
+ mov dx, si ; 89 f2 ; 0xf640e
+ out DX, AL ; ee ; 0xf6410
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6411 serial.c:91
+ and AL, strict byte 01fh ; 24 1f ; 0xf6414
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf6416
+ out DX, AL ; ee ; 0xf6419
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf641a serial.c:92
+ in AL, DX ; ec ; 0xf641d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf641e
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6420
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf6423 serial.c:93
+ in AL, DX ; ec ; 0xf6426
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6427
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6429
+ jmp near 064bbh ; e9 8c 00 ; 0xf642c
+ jmp near 064c9h ; e9 97 00 ; 0xf642f
+ jmp short 06482h ; eb 4e ; 0xf6432
+ jmp near 064dah ; e9 a3 00 ; 0xf6434
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf6437 serial.c:58
+ mov si, word [es:si] ; 26 8b 34 ; 0xf643a
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf643d serial.c:98
+ in AL, DX ; ec ; 0xf6440
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6441
+ and ax, strict word 00060h ; 25 60 00 ; 0xf6443
+ cmp ax, strict word 00060h ; 3d 60 00 ; 0xf6446
+ je short 06464h ; 74 19 ; 0xf6449
+ test cl, cl ; 84 c9 ; 0xf644b
+ je short 06464h ; 74 15 ; 0xf644d
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf644f serial.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6452
+ mov es, ax ; 8e c0 ; 0xf6455
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf6457
+ cmp ax, si ; 39 f0 ; 0xf645a serial.c:100
+ je short 0643dh ; 74 df ; 0xf645c
+ mov si, ax ; 89 c6 ; 0xf645e serial.c:101
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf6460 serial.c:102
+ jmp short 0643dh ; eb d9 ; 0xf6462 serial.c:104
+ test cl, cl ; 84 c9 ; 0xf6464 serial.c:105
+ je short 0646eh ; 74 06 ; 0xf6466
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6468
+ mov dx, bx ; 89 da ; 0xf646b
+ out DX, AL ; ee ; 0xf646d
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf646e serial.c:106
+ in AL, DX ; ec ; 0xf6471
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6472
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6474
+ test cl, cl ; 84 c9 ; 0xf6477 serial.c:107
+ jne short 064bbh ; 75 40 ; 0xf6479
+ or AL, strict byte 080h ; 0c 80 ; 0xf647b
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf647d
+ jmp short 064bbh ; eb 39 ; 0xf6480
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf6482 serial.c:58
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6485
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6488 serial.c:112
+ in AL, DX ; ec ; 0xf648b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf648c
+ test AL, strict byte 001h ; a8 01 ; 0xf648e
+ jne short 064abh ; 75 19 ; 0xf6490
+ test cl, cl ; 84 c9 ; 0xf6492
+ je short 064abh ; 74 15 ; 0xf6494
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf6496 serial.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6499
+ mov es, ax ; 8e c0 ; 0xf649c
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf649e
+ cmp ax, si ; 39 f0 ; 0xf64a1 serial.c:114
+ je short 06488h ; 74 e3 ; 0xf64a3
+ mov si, ax ; 89 c6 ; 0xf64a5 serial.c:115
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf64a7 serial.c:116
+ jmp short 06488h ; eb dd ; 0xf64a9 serial.c:118
+ test cl, cl ; 84 c9 ; 0xf64ab serial.c:119
+ je short 064c1h ; 74 12 ; 0xf64ad
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf64af serial.c:120
+ mov dx, bx ; 89 da ; 0xf64b3 serial.c:121
+ in AL, DX ; ec ; 0xf64b5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64b6
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf64b8
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf64bb serial.c:122
+ jmp short 064e4h ; eb 23 ; 0xf64bf
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf64c1 serial.c:123
+ in AL, DX ; ec ; 0xf64c4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64c5
+ jmp short 0647dh ; eb b4 ; 0xf64c7
+ lea dx, [si+005h] ; 8d 54 05 ; 0xf64c9 serial.c:128
+ in AL, DX ; ec ; 0xf64cc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64cd
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf64cf
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf64d2 serial.c:129
+ in AL, DX ; ec ; 0xf64d5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64d6
+ jmp short 064b8h ; eb de ; 0xf64d8
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64da serial.c:133
+ jmp short 064e4h ; eb 04 ; 0xf64de serial.c:135
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64e0 serial.c:136
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf64e4 serial.c:138
+ pop di ; 5f ; 0xf64e7
+ pop si ; 5e ; 0xf64e8
+ pop bp ; 5d ; 0xf64e9
+ retn ; c3 ; 0xf64ea
+ ; disGetNextSymbol 0xf64eb LB 0x49fd -> off=0x0 cb=0000000000000030 uValue=00000000000f4eeb 'set_enable_a20'
+set_enable_a20: ; 0xf64eb LB 0x30
+ push bp ; 55 ; 0xf64eb system.c:298
+ mov bp, sp ; 89 e5 ; 0xf64ec
+ push bx ; 53 ; 0xf64ee
+ push cx ; 51 ; 0xf64ef
+ push dx ; 52 ; 0xf64f0
+ mov bx, ax ; 89 c3 ; 0xf64f1
+ mov dx, 00092h ; ba 92 00 ; 0xf64f3 system.c:305
+ in AL, DX ; ec ; 0xf64f6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64f7
+ mov cl, al ; 88 c1 ; 0xf64f9
+ test bx, bx ; 85 db ; 0xf64fb system.c:308
+ je short 06504h ; 74 05 ; 0xf64fd
+ or AL, strict byte 002h ; 0c 02 ; 0xf64ff system.c:309
+ out DX, AL ; ee ; 0xf6501
+ jmp short 06507h ; eb 03 ; 0xf6502 system.c:310
+ and AL, strict byte 0fdh ; 24 fd ; 0xf6504 system.c:311
+ out DX, AL ; ee ; 0xf6506
+ test cl, 002h ; f6 c1 02 ; 0xf6507 system.c:313
+ je short 06511h ; 74 05 ; 0xf650a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf650c
+ jmp short 06513h ; eb 02 ; 0xf650f
+ xor ax, ax ; 31 c0 ; 0xf6511
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf6513 system.c:314
+ pop dx ; 5a ; 0xf6516
+ pop cx ; 59 ; 0xf6517
+ pop bx ; 5b ; 0xf6518
+ pop bp ; 5d ; 0xf6519
+ retn ; c3 ; 0xf651a
+ ; disGetNextSymbol 0xf651b LB 0x49cd -> off=0x3b cb=0000000000000362 uValue=00000000000f4f56 'int15_function'
+ db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h
+ db 024h, 022h, 000h, 096h, 068h, 091h, 065h, 02fh, 068h, 0a5h, 065h, 02fh, 068h, 02dh, 066h, 0d7h
+ db 065h, 03bh, 066h, 0dbh, 066h, 04bh, 067h, 051h, 067h, 0d4h, 066h, 0d4h, 066h, 016h, 068h, 041h
+ db 068h, 054h, 068h, 02fh, 068h, 068h, 068h, 071h, 068h, 077h, 068h
+int15_function: ; 0xf6556 LB 0x362
+ push bp ; 55 ; 0xf6556 system.c:335
+ mov bp, sp ; 89 e5 ; 0xf6557
+ push si ; 56 ; 0xf6559
+ push di ; 57 ; 0xf655a
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf655b system.c:342
+ xor ah, ah ; 30 e4 ; 0xf655e
+ mov dx, ax ; 89 c2 ; 0xf6560
+ cmp ax, 000ech ; 3d ec 00 ; 0xf6562
+ jnbe short 0659bh ; 77 34 ; 0xf6565
+ push CS ; 0e ; 0xf6567
+ pop ES ; 07 ; 0xf6568
+ mov cx, strict word 00014h ; b9 14 00 ; 0xf6569
+ mov di, 0651bh ; bf 1b 65 ; 0xf656c
+ repne scasb ; f2 ae ; 0xf656f
+ sal cx, 1 ; d1 e1 ; 0xf6571
+ mov di, cx ; 89 cf ; 0xf6573
+ mov si, word [cs:di+0652eh] ; 2e 8b b5 2e 65 ; 0xf6575
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf657a
+ xor bh, bh ; 30 ff ; 0xf657d
+ mov cx, word [bp+018h] ; 8b 4e 18 ; 0xf657f
+ and cl, 0feh ; 80 e1 fe ; 0xf6582
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf6585
+ or AL, strict byte 001h ; 0c 01 ; 0xf6588
+ mov dx, bx ; 89 da ; 0xf658a
+ or dh, 086h ; 80 ce 86 ; 0xf658c
+ jmp si ; ff e6 ; 0xf658f
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6591 system.c:344
+ xor ah, ah ; 30 e4 ; 0xf6594
+ cmp ax, 000c0h ; 3d c0 00 ; 0xf6596
+ je short 0659eh ; 74 03 ; 0xf6599
+ jmp near 06896h ; e9 f8 02 ; 0xf659b system.c:345
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf659e system.c:351
+ jmp near 06838h ; e9 93 02 ; 0xf65a2
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65a5 system.c:355
+ xor ah, ah ; 30 e4 ; 0xf65a8
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf65aa
+ jc short 065bdh ; 72 0e ; 0xf65ad
+ jbe short 065d1h ; 76 20 ; 0xf65af
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf65b1
+ je short 065feh ; 74 48 ; 0xf65b4
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf65b6
+ je short 065e1h ; 74 26 ; 0xf65b9
+ jmp short 0660bh ; eb 4e ; 0xf65bb
+ test ax, ax ; 85 c0 ; 0xf65bd
+ jne short 0660bh ; 75 4a ; 0xf65bf
+ xor ax, ax ; 31 c0 ; 0xf65c1 system.c:357
+ call 064ebh ; e8 25 ff ; 0xf65c3
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65c6 system.c:358
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf65ca system.c:359
+ jmp near 066d4h ; e9 03 01 ; 0xf65ce system.c:360
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf65d1 system.c:362
+ call 064ebh ; e8 14 ff ; 0xf65d4
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65d7 system.c:363
+ mov byte [bp+013h], bh ; 88 7e 13 ; 0xf65db system.c:364
+ jmp near 066d4h ; e9 f3 00 ; 0xf65de system.c:365
+ mov dx, 00092h ; ba 92 00 ; 0xf65e1 system.c:367
+ in AL, DX ; ec ; 0xf65e4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65e5
+ shr ax, 1 ; d1 e8 ; 0xf65e7
+ and ax, strict word 00001h ; 25 01 00 ; 0xf65e9
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf65ec
+ mov dl, al ; 88 c2 ; 0xf65ef
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf65f1
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65f4 system.c:368
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf65f8 system.c:369
+ jmp near 066d4h ; e9 d6 00 ; 0xf65fb system.c:370
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65fe system.c:372
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf6602 system.c:373
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf6605 system.c:374
+ jmp near 066d4h ; e9 c9 00 ; 0xf6608 system.c:375
+ mov bx, 00ddch ; bb dc 0d ; 0xf660b system.c:377
+ mov cx, ds ; 8c d9 ; 0xf660e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6610
+ call 01919h ; e8 03 b3 ; 0xf6613
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6616
+ xor ah, ah ; 30 e4 ; 0xf6619
+ push ax ; 50 ; 0xf661b
+ mov ax, 00884h ; b8 84 08 ; 0xf661c
+ push ax ; 50 ; 0xf661f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6620
+ push ax ; 50 ; 0xf6623
+ call 0195ch ; e8 35 b3 ; 0xf6624
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6627
+ jmp near 0682fh ; e9 02 02 ; 0xf662a
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf662d system.c:398
+ xor ah, ah ; 30 e4 ; 0xf6630
+ or ah, 086h ; 80 cc 86 ; 0xf6632
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6635
+ jmp near 0688fh ; e9 54 02 ; 0xf6638
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf663b system.c:409
+ jne short 066a3h ; 75 62 ; 0xf663f
+ mov bx, 000a0h ; bb a0 00 ; 0xf6641 system.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6644
+ mov es, dx ; 8e c2 ; 0xf6647
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf6649
+ test dl, 001h ; f6 c2 01 ; 0xf664c system.c:49
+ jne short 0669dh ; 75 4c ; 0xf664f
+ mov DL, strict byte 001h ; b2 01 ; 0xf6651 system.c:51
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf6653 system.c:53
+ mov bx, 00098h ; bb 98 00 ; 0xf6656 system.c:61
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf6659
+ mov word [es:bx], dx ; 26 89 17 ; 0xf665c system.c:63
+ mov bx, 0009ah ; bb 9a 00 ; 0xf665f system.c:61
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf6662
+ mov word [es:bx], dx ; 26 89 17 ; 0xf6665 system.c:63
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6668 system.c:61
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf666b
+ mov word [es:bx], dx ; 26 89 17 ; 0xf666e system.c:63
+ mov bx, 0009eh ; bb 9e 00 ; 0xf6671 system.c:61
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6674
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6677 system.c:63
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf667a system.c:418
+ mov dx, 000a1h ; ba a1 00 ; 0xf667e system.c:420
+ in AL, DX ; ec ; 0xf6681
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6682
+ and AL, strict byte 0feh ; 24 fe ; 0xf6684 system.c:421
+ out DX, AL ; ee ; 0xf6686
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6687 system.c:422
+ call 01664h ; e8 d7 af ; 0xf668a
+ mov dl, al ; 88 c2 ; 0xf668d system.c:424
+ or dl, 040h ; 80 ca 40 ; 0xf668f
+ xor dh, dh ; 30 f6 ; 0xf6692
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6694
+ call 0167fh ; e8 e5 af ; 0xf6697
+ jmp near 066d4h ; e9 37 00 ; 0xf669a system.c:425
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf669d system.c:428
+ jmp near 066d4h ; e9 31 00 ; 0xf66a0 system.c:430
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf66a3
+ jne short 066c5h ; 75 1d ; 0xf66a6
+ mov bx, 000a0h ; bb a0 00 ; 0xf66a8 system.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf66ab
+ mov es, ax ; 8e c0 ; 0xf66ae
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf66b0
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66b4 system.c:433
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66b8 system.c:434
+ call 01664h ; e8 a6 af ; 0xf66bb
+ mov dl, al ; 88 c2 ; 0xf66be system.c:435
+ and dl, 0bfh ; 80 e2 bf ; 0xf66c0
+ jmp short 06692h ; eb cd ; 0xf66c3
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf66c5 system.c:438
+ mov ax, dx ; 89 d0 ; 0xf66c8 system.c:440
+ xor ah, dh ; 30 f4 ; 0xf66ca
+ xor dl, bl ; 30 da ; 0xf66cc
+ dec ax ; 48 ; 0xf66ce
+ or dx, ax ; 09 c2 ; 0xf66cf
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf66d1
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf66d4 system.c:443
+ pop di ; 5f ; 0xf66d7
+ pop si ; 5e ; 0xf66d8
+ pop bp ; 5d ; 0xf66d9
+ retn ; c3 ; 0xf66da
+ mov bx, 000a0h ; bb a0 00 ; 0xf66db system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf66de
+ mov es, ax ; 8e c0 ; 0xf66e1
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf66e3
+ test AL, strict byte 001h ; a8 01 ; 0xf66e6 system.c:49
+ jne short 06745h ; 75 5b ; 0xf66e8
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf66ea system.c:53
+ mov bx, 00098h ; bb 98 00 ; 0xf66ee system.c:63
+ mov [es:bx], es ; 26 8c 07 ; 0xf66f1
+ mov bx, 0009ah ; bb 9a 00 ; 0xf66f4 system.c:63
+ mov word [es:bx], 000a0h ; 26 c7 07 a0 00 ; 0xf66f7
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf66fc system.c:61
+ mov bx, 0009ch ; bb 9c 00 ; 0xf66ff system.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6702
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6705 system.c:61
+ mov bx, 0009eh ; bb 9e 00 ; 0xf6708 system.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf670b
+ mov dx, 000a1h ; ba a1 00 ; 0xf670e system.c:456
+ in AL, DX ; ec ; 0xf6711
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6712
+ and AL, strict byte 0feh ; 24 fe ; 0xf6714 system.c:457
+ out DX, AL ; ee ; 0xf6716
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6717 system.c:458
+ call 01664h ; e8 47 af ; 0xf671a
+ mov dl, al ; 88 c2 ; 0xf671d system.c:460
+ or dl, 040h ; 80 ca 40 ; 0xf671f
+ xor dh, dh ; 30 f6 ; 0xf6722
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6724
+ call 0167fh ; e8 55 af ; 0xf6727
+ sti ; fb ; 0xf672a system.c:462
+ hlt ; f4 ; 0xf672b system.c:464
+ mov bx, 000a0h ; bb a0 00 ; 0xf672c system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf672f
+ mov es, ax ; 8e c0 ; 0xf6732
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6734
+ test AL, strict byte 080h ; a8 80 ; 0xf6737 system.c:467
+ je short 0672bh ; 74 f0 ; 0xf6739
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf673b system.c:53
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf673f system.c:469
+ jmp short 066d4h ; eb 8f ; 0xf6743 system.c:470
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6745 system.c:473
+ jmp short 066d4h ; eb 89 ; 0xf6749 system.c:475
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf674b system.c:497
+ jmp near 0669dh ; e9 4c ff ; 0xf674e
+ cli ; fa ; 0xf6751 system.c:509
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6752 system.c:511
+ call 064ebh ; e8 93 fd ; 0xf6755
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6758 system.c:514
+ add bx, strict byte 00038h ; 83 c3 38 ; 0xf675b
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf675e system.c:61
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6761
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6766 system.c:515
+ add bx, strict byte 0003ah ; 83 c3 3a ; 0xf6769
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf676c system.c:61
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf676f
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6774 system.c:516
+ add bx, strict byte 0003ch ; 83 c3 3c ; 0xf6777
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf677a system.c:51
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf677d system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6781 system.c:517
+ add bx, strict byte 0003dh ; 83 c3 3d ; 0xf6784
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6787 system.c:51
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf678a
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf678e system.c:518
+ add bx, strict byte 0003eh ; 83 c3 3e ; 0xf6791
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6794 system.c:61
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6797 system.c:63
+ mov AL, strict byte 011h ; b0 11 ; 0xf679c system.c:521
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf679e
+ out DX, AL ; ee ; 0xf67a1
+ mov dx, 000a0h ; ba a0 00 ; 0xf67a2 system.c:522
+ out DX, AL ; ee ; 0xf67a5
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf67a6 system.c:523
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67a9
+ out DX, AL ; ee ; 0xf67ac
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf67ad system.c:524
+ mov dx, 000a1h ; ba a1 00 ; 0xf67b0
+ out DX, AL ; ee ; 0xf67b3
+ mov AL, strict byte 004h ; b0 04 ; 0xf67b4 system.c:525
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67b6
+ out DX, AL ; ee ; 0xf67b9
+ mov AL, strict byte 002h ; b0 02 ; 0xf67ba system.c:526
+ mov dx, 000a1h ; ba a1 00 ; 0xf67bc
+ out DX, AL ; ee ; 0xf67bf
+ mov AL, strict byte 001h ; b0 01 ; 0xf67c0 system.c:527
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67c2
+ out DX, AL ; ee ; 0xf67c5
+ mov dx, 000a1h ; ba a1 00 ; 0xf67c6 system.c:528
+ out DX, AL ; ee ; 0xf67c9
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf67ca system.c:530
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67cc
+ out DX, AL ; ee ; 0xf67cf
+ mov dx, 000a1h ; ba a1 00 ; 0xf67d0 system.c:531
+ out DX, AL ; ee ; 0xf67d3
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf67d4 system.c:533
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf67d7
+ lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf67dc
+ push strict byte 00038h ; 6a 38 ; 0xf67e1
+ call 067e6h ; e8 00 00 ; 0xf67e3
+ pop ax ; 58 ; 0xf67e6
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf67e7
+ push ax ; 50 ; 0xf67ea
+ smsw ax ; 0f 01 e0 ; 0xf67eb
+ or AL, strict byte 001h ; 0c 01 ; 0xf67ee
+ lmsw ax ; 0f 01 f0 ; 0xf67f0
+ retf ; cb ; 0xf67f3
+ mov ax, strict word 00018h ; b8 18 00 ; 0xf67f4
+ mov ds, ax ; 8e d8 ; 0xf67f7
+ add AL, strict byte 008h ; 04 08 ; 0xf67f9
+ mov es, ax ; 8e c0 ; 0xf67fb
+ add AL, strict byte 008h ; 04 08 ; 0xf67fd
+ mov ss, ax ; 8e d0 ; 0xf67ff
+ lea ax, [bp+004h] ; 8d 46 04 ; 0xf6801 system.c:534
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xf6804
+ popaw ; 61 ; 0xf6806
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6807
+ pop cx ; 59 ; 0xf680a
+ pop ax ; 58 ; 0xf680b
+ pop ax ; 58 ; 0xf680c
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf680d
+ push ax ; 50 ; 0xf6810
+ push cx ; 51 ; 0xf6811
+ retf ; cb ; 0xf6812
+ jmp near 066d4h ; e9 be fe ; 0xf6813 system.c:540
+ mov bx, 00ddch ; bb dc 0d ; 0xf6816 system.c:547
+ mov cx, ds ; 8c d9 ; 0xf6819
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf681b
+ call 01919h ; e8 f8 b0 ; 0xf681e
+ mov ax, 008c4h ; b8 c4 08 ; 0xf6821
+ push ax ; 50 ; 0xf6824
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6825
+ push ax ; 50 ; 0xf6828
+ call 0195ch ; e8 30 b1 ; 0xf6829
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf682c
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf682f
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6833
+ xor ah, ah ; 30 e4 ; 0xf6836
+ or ah, 086h ; 80 cc 86 ; 0xf6838
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf683b
+ jmp near 066d4h ; e9 93 fe ; 0xf683e
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf6841 system.c:553
+ mov word [bp+012h], bx ; 89 5e 12 ; 0xf6844 system.c:554
+ mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf6847 system.c:555
+ mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf684c system.c:556
+ jmp near 066d4h ; e9 80 fe ; 0xf6851 system.c:557
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6854 system.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6857
+ mov es, ax ; 8e c0 ; 0xf685a
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf685c
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf685f system.c:59
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf6862 system.c:561
+ jmp near 066d4h ; e9 6c fe ; 0xf6865 system.c:562
+ mov ax, 008f3h ; b8 f3 08 ; 0xf6868 system.c:565
+ push ax ; 50 ; 0xf686b
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf686c
+ jmp short 06828h ; eb b7 ; 0xf686f
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf6871 system.c:573
+ jmp near 066d1h ; e9 5a fe ; 0xf6874
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6877 system.c:577
+ jne short 06896h ; 75 19 ; 0xf687b
+ mov word [bp+012h], bx ; 89 5e 12 ; 0xf687d system.c:579
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6880 system.c:580
+ xor ah, ah ; 30 e4 ; 0xf6883
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6885
+ jc short 0688fh ; 72 05 ; 0xf6888
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf688a
+ jbe short 06862h ; 76 d3 ; 0xf688d
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf688f system.c:583
+ jmp near 066d4h ; e9 3e fe ; 0xf6893 system.c:584
+ mov bx, 00ddch ; bb dc 0d ; 0xf6896 system.c:588
+ mov cx, ds ; 8c d9 ; 0xf6899
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf689b
+ call 01919h ; e8 78 b0 ; 0xf689e
+ push word [bp+00ch] ; ff 76 0c ; 0xf68a1
+ push word [bp+012h] ; ff 76 12 ; 0xf68a4
+ mov ax, 0090ah ; b8 0a 09 ; 0xf68a7
+ push ax ; 50 ; 0xf68aa
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf68ab
+ push ax ; 50 ; 0xf68ae
+ call 0195ch ; e8 aa b0 ; 0xf68af
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf68b2
+ jmp near 0682fh ; e9 77 ff ; 0xf68b5
+ ; disGetNextSymbol 0xf68b8 LB 0x4630 -> off=0x0 cb=000000000000018f uValue=00000000000f52b8 'inv_op_handler'
+inv_op_handler: ; 0xf68b8 LB 0x18f
+ push bp ; 55 ; 0xf68b8 invop.c:247
+ mov bp, sp ; 89 e5 ; 0xf68b9
+ push si ; 56 ; 0xf68bb
+ push di ; 57 ; 0xf68bc
+ push ax ; 50 ; 0xf68bd
+ push ax ; 50 ; 0xf68be
+ les bx, [bp+018h] ; c4 5e 18 ; 0xf68bf invop.c:249
+ cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf68c2 invop.c:251
+ jne short 068ceh ; 75 06 ; 0xf68c6
+ inc word [bp+018h] ; ff 46 18 ; 0xf68c8 invop.c:253
+ jmp near 06a40h ; e9 72 01 ; 0xf68cb invop.c:254
+ cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf68ce
+ je short 068d8h ; 74 03 ; 0xf68d3
+ jmp near 06a3ch ; e9 64 01 ; 0xf68d5
+ mov si, 00800h ; be 00 08 ; 0xf68d8 invop.c:256
+ xor ax, ax ; 31 c0 ; 0xf68db
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf68dd
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf68e0 invop.c:259
+ mov es, ax ; 8e c0 ; 0xf68e3 invop.c:267
+ mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf68e5
+ sub bx, strict byte 00006h ; 83 eb 06 ; 0xf68e9
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf68ec
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf68f0 invop.c:268
+ mov es, dx ; 8e c2 ; 0xf68f4
+ mov word [es:bx], ax ; 26 89 07 ; 0xf68f6
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf68f9 invop.c:269
+ mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf68fc
+ mov es, dx ; 8e c2 ; 0xf6900
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6902
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6906 invop.c:270
+ mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6909
+ mov es, dx ; 8e c2 ; 0xf690d
+ mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf690f
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6913 invop.c:273
+ mov bl, byte [es:si+038h] ; 26 8a 5c 38 ; 0xf6916
+ xor bh, bh ; 30 ff ; 0xf691a
+ mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf691c
+ mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6920 invop.c:274
+ xor dx, dx ; 31 d2 ; 0xf6924
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6926
+ sal ax, 1 ; d1 e0 ; 0xf6929
+ rcl dx, 1 ; d1 d2 ; 0xf692b
+ loop 06929h ; e2 fa ; 0xf692d
+ cmp bx, dx ; 39 d3 ; 0xf692f
+ jne short 06937h ; 75 04 ; 0xf6931
+ cmp di, ax ; 39 c7 ; 0xf6933
+ je short 0693ch ; 74 05 ; 0xf6935
+ mov word [bp-006h], strict word 00001h ; c7 46 fa 01 00 ; 0xf6937 invop.c:275
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf693c invop.c:276
+ mov bl, byte [es:si+04ah] ; 26 8a 5c 4a ; 0xf693f
+ xor bh, bh ; 30 ff ; 0xf6943
+ mov di, word [es:si+048h] ; 26 8b 7c 48 ; 0xf6945
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6949 invop.c:277
+ xor dx, dx ; 31 d2 ; 0xf694d
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf694f
+ sal ax, 1 ; d1 e0 ; 0xf6952
+ rcl dx, 1 ; d1 d2 ; 0xf6954
+ loop 06952h ; e2 fa ; 0xf6956
+ cmp bx, dx ; 39 d3 ; 0xf6958
+ jne short 06960h ; 75 04 ; 0xf695a
+ cmp di, ax ; 39 c7 ; 0xf695c
+ je short 06964h ; 74 04 ; 0xf695e
+ or byte [bp-006h], 002h ; 80 4e fa 02 ; 0xf6960 invop.c:278
+ xor ax, ax ; 31 c0 ; 0xf6964 invop.c:281
+ push ax ; 50 ; 0xf6966
+ mov ax, 00800h ; b8 00 08 ; 0xf6967
+ push ax ; 50 ; 0xf696a
+ mov ax, strict word 0001fh ; b8 1f 00 ; 0xf696b
+ push ax ; 50 ; 0xf696e
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf696f
+ lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6971
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6975
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6978 invop.c:284
+ mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf697b
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf697f
+ mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6983 invop.c:285
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6987
+ mov dh, byte [es:si+039h] ; 26 8a 74 39 ; 0xf698b invop.c:286
+ mov dl, byte [es:si+038h] ; 26 8a 54 38 ; 0xf698f
+ mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6993
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6997 invop.c:287
+ mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf699d invop.c:290
+ mov word [es:si], ax ; 26 89 04 ; 0xf69a1
+ mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf69a4 invop.c:291
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf69a8
+ mov dh, byte [es:si+04bh] ; 26 8a 74 4b ; 0xf69ac invop.c:292
+ mov dl, byte [es:si+04ah] ; 26 8a 54 4a ; 0xf69b0
+ xor ah, ah ; 30 e4 ; 0xf69b4
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf69b6
+ mov al, byte [es:si+05ch] ; 26 8a 44 5c ; 0xf69ba invop.c:295
+ mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf69be
+ push ax ; 50 ; 0xf69c2 invop.c:296
+ push dx ; 52 ; 0xf69c3
+ push word [es:si+05eh] ; 26 ff 74 5e ; 0xf69c4
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf69c8
+ lidt [ss:bx] ; 36 0f 01 1f ; 0xf69ca
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf69ce
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf69d1 invop.c:299
+ mov ax, 00080h ; b8 80 00 ; 0xf69d4
+ mov ss, ax ; 8e d0 ; 0xf69d7
+ mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf69d9
+ mov ds, ax ; 8e d8 ; 0xf69dd
+ mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf69df
+ mov es, ax ; 8e c0 ; 0xf69e3
+ smsw ax ; 0f 01 e0 ; 0xf69e5 invop.c:300
+ inc ax ; 40 ; 0xf69e8
+ lmsw ax ; 0f 01 f0 ; 0xf69e9
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf69ec
+ test cx, strict word 00001h ; f7 c1 01 00 ; 0xf69ef
+ je near 069f9h ; 0f 84 02 00 ; 0xf69f3
+ mov es, ax ; 8e c0 ; 0xf69f7
+ test cx, strict word 00002h ; f7 c1 02 00 ; 0xf69f9
+ je near 06a21h ; 0f 84 20 00 ; 0xf69fd
+ mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6a01
+ mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6a06
+ mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6a0b
+ mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6a10
+ mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6a15
+ mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6a1a
+ mov ds, ax ; 8e d8 ; 0xf6a1f
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6a21
+ dec ax ; 48 ; 0xf6a24
+ mov cr0, eax ; 0f 22 c0 ; 0xf6a25
+ mov sp, strict word 00026h ; bc 26 00 ; 0xf6a28 invop.c:301
+ popaw ; 61 ; 0xf6a2b
+ mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6a2c
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6a31
+ mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6a34
+ iret ; cf ; 0xf6a39
+ jmp short 06a40h ; eb 04 ; 0xf6a3a invop.c:353
+ sti ; fb ; 0xf6a3c invop.c:357
+ hlt ; f4 ; 0xf6a3d invop.c:358
+ jmp short 06a3dh ; eb fd ; 0xf6a3e
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6a40 invop.c:360
+ pop di ; 5f ; 0xf6a43
+ pop si ; 5e ; 0xf6a44
+ pop bp ; 5d ; 0xf6a45
+ retn ; c3 ; 0xf6a46
+ ; disGetNextSymbol 0xf6a47 LB 0x44a1 -> off=0x0 cb=0000000000000028 uValue=00000000000f5447 'init_rtc'
+init_rtc: ; 0xf6a47 LB 0x28
+ push bp ; 55 ; 0xf6a47 timepci.c:84
+ mov bp, sp ; 89 e5 ; 0xf6a48
+ push dx ; 52 ; 0xf6a4a
+ mov dx, strict word 00026h ; ba 26 00 ; 0xf6a4b timepci.c:86
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6a4e
+ call 0167fh ; e8 2b ac ; 0xf6a51
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf6a54 timepci.c:87
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6a57
+ call 0167fh ; e8 22 ac ; 0xf6a5a
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6a5d timepci.c:88
+ call 01664h ; e8 01 ac ; 0xf6a60
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6a63 timepci.c:89
+ call 01664h ; e8 fb ab ; 0xf6a66
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6a69 timepci.c:90
+ pop dx ; 5a ; 0xf6a6c
+ pop bp ; 5d ; 0xf6a6d
+ retn ; c3 ; 0xf6a6e
+ ; disGetNextSymbol 0xf6a6f LB 0x4479 -> off=0x0 cb=0000000000000021 uValue=00000000000f546f 'rtc_updating'
+rtc_updating: ; 0xf6a6f LB 0x21
+ push bp ; 55 ; 0xf6a6f timepci.c:92
+ mov bp, sp ; 89 e5 ; 0xf6a70
+ push dx ; 52 ; 0xf6a72
+ mov dx, 061a8h ; ba a8 61 ; 0xf6a73 timepci.c:105
+ dec dx ; 4a ; 0xf6a76 timepci.c:106
+ je short 06a87h ; 74 0e ; 0xf6a77
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6a79 timepci.c:107
+ call 01664h ; e8 e5 ab ; 0xf6a7c
+ test AL, strict byte 080h ; a8 80 ; 0xf6a7f
+ jne short 06a76h ; 75 f3 ; 0xf6a81
+ xor ax, ax ; 31 c0 ; 0xf6a83 timepci.c:108
+ jmp short 06a8ah ; eb 03 ; 0xf6a85
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6a87 timepci.c:110
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6a8a timepci.c:111
+ pop dx ; 5a ; 0xf6a8d
+ pop bp ; 5d ; 0xf6a8e
+ retn ; c3 ; 0xf6a8f
+ ; disGetNextSymbol 0xf6a90 LB 0x4458 -> off=0x0 cb=0000000000000098 uValue=00000000000f5490 'int70_function'
+int70_function: ; 0xf6a90 LB 0x98
+ push bp ; 55 ; 0xf6a90 timepci.c:120
+ mov bp, sp ; 89 e5 ; 0xf6a91
+ push si ; 56 ; 0xf6a93
+ push ax ; 50 ; 0xf6a94
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6a95 timepci.c:126
+ call 01664h ; e8 c9 ab ; 0xf6a98
+ mov bl, al ; 88 c3 ; 0xf6a9b
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6a9d
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6aa0 timepci.c:127
+ call 01664h ; e8 be ab ; 0xf6aa3
+ mov dl, al ; 88 c2 ; 0xf6aa6
+ test bl, 060h ; f6 c3 60 ; 0xf6aa8 timepci.c:129
+ je short 06b08h ; 74 5b ; 0xf6aab
+ test AL, strict byte 020h ; a8 20 ; 0xf6aad timepci.c:130
+ je short 06ab5h ; 74 04 ; 0xf6aaf
+ sti ; fb ; 0xf6ab1 timepci.c:132
+ int 04ah ; cd 4a ; 0xf6ab2 timepci.c:133
+ cli ; fa ; 0xf6ab4 timepci.c:134
+ test dl, 040h ; f6 c2 40 ; 0xf6ab5 timepci.c:136
+ je short 06b1fh ; 74 65 ; 0xf6ab8
+ mov bx, 000a0h ; bb a0 00 ; 0xf6aba timepci.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6abd
+ mov es, dx ; 8e c2 ; 0xf6ac0
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6ac2
+ test al, al ; 84 c0 ; 0xf6ac5 timepci.c:49
+ je short 06b1fh ; 74 56 ; 0xf6ac7
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6ac9 timepci.c:68
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf6acc
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6acf
+ test bx, bx ; 85 db ; 0xf6ad3 timepci.c:144
+ jne short 06b0ah ; 75 33 ; 0xf6ad5
+ cmp dx, 003d1h ; 81 fa d1 03 ; 0xf6ad7
+ jnc short 06b0ah ; 73 2d ; 0xf6adb
+ mov bx, 00098h ; bb 98 00 ; 0xf6add timepci.c:58
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf6ae0
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6ae3 timepci.c:58
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6ae6
+ mov si, 000a0h ; be a0 00 ; 0xf6ae9 timepci.c:53
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6aec
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6af0 timepci.c:151
+ and dl, 037h ; 80 e2 37 ; 0xf6af3
+ xor dh, dh ; 30 f6 ; 0xf6af6
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6af8
+ call 0167fh ; e8 81 ab ; 0xf6afb
+ mov es, cx ; 8e c1 ; 0xf6afe timepci.c:48
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6b00
+ or AL, strict byte 080h ; 0c 80 ; 0xf6b03 timepci.c:49
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6b05 timepci.c:53
+ jmp short 06b1fh ; eb 15 ; 0xf6b08 timepci.c:153
+ mov cx, dx ; 89 d1 ; 0xf6b0a timepci.c:155
+ add cx, 0fc2fh ; 81 c1 2f fc ; 0xf6b0c
+ mov dx, bx ; 89 da ; 0xf6b10
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6b12
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6b15 timepci.c:73
+ mov word [es:bx], cx ; 26 89 0f ; 0xf6b18
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6b1b
+ call 0e030h ; e8 0e 75 ; 0xf6b1f timepci.c:161
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6b22 timepci.c:162
+ pop si ; 5e ; 0xf6b25
+ pop bp ; 5d ; 0xf6b26
+ retn ; c3 ; 0xf6b27
+ ; disGetNextSymbol 0xf6b28 LB 0x43c0 -> off=0x10 cb=00000000000001d9 uValue=00000000000f5538 'int1a_function'
+ db 04eh, 06bh, 075h, 06bh, 09ah, 06bh, 0d6h, 06bh, 028h, 06ch, 05fh, 06ch, 0a6h, 06ch, 001h, 06dh
+int1a_function: ; 0xf6b38 LB 0x1d9
+ push bp ; 55 ; 0xf6b38 timepci.c:167
+ mov bp, sp ; 89 e5 ; 0xf6b39
+ sti ; fb ; 0xf6b3b timepci.c:173
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6b3c timepci.c:175
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf6b3f
+ jnbe short 06ba1h ; 77 5e ; 0xf6b41
+ mov bl, al ; 88 c3 ; 0xf6b43
+ xor bh, bh ; 30 ff ; 0xf6b45
+ sal bx, 1 ; d1 e3 ; 0xf6b47
+ jmp word [cs:bx+06b28h] ; 2e ff a7 28 6b ; 0xf6b49
+ cli ; fa ; 0xf6b4e timepci.c:177
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6b4f timepci.c:178
+ xor ax, ax ; 31 c0 ; 0xf6b52
+ mov es, ax ; 8e c0 ; 0xf6b54
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6b56
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf6b59
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6b5c timepci.c:179
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6b5f
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf6b62
+ mov bx, 00470h ; bb 70 04 ; 0xf6b65 timepci.c:180
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6b68
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6b6b
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6b6e timepci.c:181
+ sti ; fb ; 0xf6b72 timepci.c:182
+ jmp short 06ba1h ; eb 2c ; 0xf6b73 timepci.c:185
+ cli ; fa ; 0xf6b75 timepci.c:188
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6b76 timepci.c:189
+ xor ax, ax ; 31 c0 ; 0xf6b79
+ mov es, ax ; 8e c0 ; 0xf6b7b
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6b7d
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6b80
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6b83 timepci.c:190
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6b86
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6b89
+ mov bx, 00470h ; bb 70 04 ; 0xf6b8c timepci.c:191
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6b8f
+ sti ; fb ; 0xf6b93 timepci.c:192
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6b94 timepci.c:193
+ jmp short 06ba1h ; eb 07 ; 0xf6b98 timepci.c:195
+ call 06a6fh ; e8 d2 fe ; 0xf6b9a timepci.c:198
+ test ax, ax ; 85 c0 ; 0xf6b9d
+ je short 06ba4h ; 74 03 ; 0xf6b9f
+ jmp near 06bd2h ; e9 2e 00 ; 0xf6ba1 timepci.c:200
+ xor ax, ax ; 31 c0 ; 0xf6ba4 timepci.c:203
+ call 01664h ; e8 bb aa ; 0xf6ba6
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6ba9
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6bac timepci.c:204
+ call 01664h ; e8 b2 aa ; 0xf6baf
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6bb2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6bb5 timepci.c:205
+ call 01664h ; e8 a9 aa ; 0xf6bb8
+ mov dl, al ; 88 c2 ; 0xf6bbb
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6bbd
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6bc0 timepci.c:206
+ call 01664h ; e8 9e aa ; 0xf6bc3
+ and AL, strict byte 001h ; 24 01 ; 0xf6bc6
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6bc8
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6bcb timepci.c:207
+ mov byte [bp+012h], dl ; 88 56 12 ; 0xf6bcf timepci.c:208
+ mov sp, bp ; 89 ec ; 0xf6bd2 timepci.c:210
+ pop bp ; 5d ; 0xf6bd4
+ retn ; c3 ; 0xf6bd5
+ call 06a6fh ; e8 96 fe ; 0xf6bd6 timepci.c:223
+ test ax, ax ; 85 c0 ; 0xf6bd9
+ je short 06be0h ; 74 03 ; 0xf6bdb
+ call 06a47h ; e8 67 fe ; 0xf6bdd timepci.c:224
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6be0 timepci.c:227
+ xor dh, dh ; 30 f6 ; 0xf6be3
+ xor ax, ax ; 31 c0 ; 0xf6be5
+ call 0167fh ; e8 95 aa ; 0xf6be7
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6bea timepci.c:228
+ xor dh, dh ; 30 f6 ; 0xf6bed
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6bef
+ call 0167fh ; e8 8a aa ; 0xf6bf2
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6bf5 timepci.c:229
+ xor dh, dh ; 30 f6 ; 0xf6bf8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6bfa
+ call 0167fh ; e8 7f aa ; 0xf6bfd
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c00 timepci.c:231
+ call 01664h ; e8 5e aa ; 0xf6c03
+ mov bl, al ; 88 c3 ; 0xf6c06
+ and bl, 060h ; 80 e3 60 ; 0xf6c08
+ or bl, 002h ; 80 cb 02 ; 0xf6c0b
+ mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf6c0e
+ and AL, strict byte 001h ; 24 01 ; 0xf6c11
+ or bl, al ; 08 c3 ; 0xf6c13
+ mov dl, bl ; 88 da ; 0xf6c15 timepci.c:233
+ xor dh, dh ; 30 f6 ; 0xf6c17
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c19
+ call 0167fh ; e8 60 aa ; 0xf6c1c
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6c1f timepci.c:234
+ mov byte [bp+012h], bl ; 88 5e 12 ; 0xf6c23 timepci.c:235
+ jmp short 06bd2h ; eb aa ; 0xf6c26 timepci.c:237
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6c28 timepci.c:240
+ call 06a6fh ; e8 40 fe ; 0xf6c2c timepci.c:241
+ test ax, ax ; 85 c0 ; 0xf6c2f
+ je short 06c35h ; 74 02 ; 0xf6c31
+ jmp short 06bd2h ; eb 9d ; 0xf6c33 timepci.c:243
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6c35 timepci.c:245
+ call 01664h ; e8 29 aa ; 0xf6c38
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6c3b
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6c3e timepci.c:246
+ call 01664h ; e8 20 aa ; 0xf6c41
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6c44
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6c47 timepci.c:247
+ call 01664h ; e8 17 aa ; 0xf6c4a
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6c4d
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6c50 timepci.c:248
+ call 01664h ; e8 0e aa ; 0xf6c53
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6c56
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6c59 timepci.c:249
+ jmp near 06bd2h ; e9 73 ff ; 0xf6c5c timepci.c:251
+ call 06a6fh ; e8 0d fe ; 0xf6c5f timepci.c:264
+ test ax, ax ; 85 c0 ; 0xf6c62
+ je short 06c6ch ; 74 06 ; 0xf6c64
+ call 06a47h ; e8 de fd ; 0xf6c66 timepci.c:265
+ jmp near 06bd2h ; e9 66 ff ; 0xf6c69 timepci.c:267
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6c6c timepci.c:269
+ xor dh, dh ; 30 f6 ; 0xf6c6f
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6c71
+ call 0167fh ; e8 08 aa ; 0xf6c74
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6c77 timepci.c:270
+ xor dh, dh ; 30 f6 ; 0xf6c7a
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6c7c
+ call 0167fh ; e8 fd a9 ; 0xf6c7f
+ mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf6c82 timepci.c:271
+ xor dh, dh ; 30 f6 ; 0xf6c85
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6c87
+ call 0167fh ; e8 f2 a9 ; 0xf6c8a
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6c8d timepci.c:272
+ xor dh, dh ; 30 f6 ; 0xf6c90
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6c92
+ call 0167fh ; e8 e7 a9 ; 0xf6c95
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c98 timepci.c:273
+ call 01664h ; e8 c6 a9 ; 0xf6c9b
+ mov bl, al ; 88 c3 ; 0xf6c9e
+ and bl, 07fh ; 80 e3 7f ; 0xf6ca0
+ jmp near 06c15h ; e9 6f ff ; 0xf6ca3
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6ca6 timepci.c:291
+ call 01664h ; e8 b8 a9 ; 0xf6ca9
+ mov bl, al ; 88 c3 ; 0xf6cac
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf6cae timepci.c:292
+ test AL, strict byte 020h ; a8 20 ; 0xf6cb3 timepci.c:293
+ je short 06cbah ; 74 03 ; 0xf6cb5
+ jmp near 06bd2h ; e9 18 ff ; 0xf6cb7 timepci.c:296
+ call 06a6fh ; e8 b2 fd ; 0xf6cba timepci.c:298
+ test ax, ax ; 85 c0 ; 0xf6cbd
+ je short 06cc4h ; 74 03 ; 0xf6cbf
+ call 06a47h ; e8 83 fd ; 0xf6cc1 timepci.c:299
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6cc4 timepci.c:302
+ xor dh, dh ; 30 f6 ; 0xf6cc7
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6cc9
+ call 0167fh ; e8 b0 a9 ; 0xf6ccc
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6ccf timepci.c:303
+ xor dh, dh ; 30 f6 ; 0xf6cd2
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf6cd4
+ call 0167fh ; e8 a5 a9 ; 0xf6cd7
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6cda timepci.c:304
+ xor dh, dh ; 30 f6 ; 0xf6cdd
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf6cdf
+ call 0167fh ; e8 9a a9 ; 0xf6ce2
+ mov dx, 000a1h ; ba a1 00 ; 0xf6ce5 timepci.c:305
+ in AL, DX ; ec ; 0xf6ce8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ce9
+ and AL, strict byte 0feh ; 24 fe ; 0xf6ceb
+ out DX, AL ; ee ; 0xf6ced
+ mov dl, bl ; 88 da ; 0xf6cee timepci.c:307
+ and dl, 05fh ; 80 e2 5f ; 0xf6cf0
+ or dl, 020h ; 80 ca 20 ; 0xf6cf3
+ xor dh, dh ; 30 f6 ; 0xf6cf6
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6cf8
+ call 0167fh ; e8 81 a9 ; 0xf6cfb
+ jmp near 06bd2h ; e9 d1 fe ; 0xf6cfe timepci.c:309
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d01 timepci.c:322
+ call 01664h ; e8 5d a9 ; 0xf6d04
+ mov bl, al ; 88 c3 ; 0xf6d07
+ mov dl, al ; 88 c2 ; 0xf6d09 timepci.c:324
+ and dl, 057h ; 80 e2 57 ; 0xf6d0b
+ jmp near 06c17h ; e9 06 ff ; 0xf6d0e
+ ; disGetNextSymbol 0xf6d11 LB 0x41d7 -> off=0x0 cb=0000000000000038 uValue=00000000000f5711 'send_to_mouse_ctrl'
+send_to_mouse_ctrl: ; 0xf6d11 LB 0x38
+ push bp ; 55 ; 0xf6d11 ps2mouse.c:87
+ mov bp, sp ; 89 e5 ; 0xf6d12
+ push bx ; 53 ; 0xf6d14
+ push dx ; 52 ; 0xf6d15
+ mov bl, al ; 88 c3 ; 0xf6d16
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6d18 ps2mouse.c:91
+ in AL, DX ; ec ; 0xf6d1b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6d1c
+ test AL, strict byte 002h ; a8 02 ; 0xf6d1e
+ je short 06d34h ; 74 12 ; 0xf6d20
+ mov ax, 00944h ; b8 44 09 ; 0xf6d22 ps2mouse.c:92
+ push ax ; 50 ; 0xf6d25
+ mov ax, 011a4h ; b8 a4 11 ; 0xf6d26
+ push ax ; 50 ; 0xf6d29
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6d2a
+ push ax ; 50 ; 0xf6d2d
+ call 0195ch ; e8 2b ac ; 0xf6d2e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6d31
+ mov AL, strict byte 0d4h ; b0 d4 ; 0xf6d34 ps2mouse.c:93
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6d36
+ out DX, AL ; ee ; 0xf6d39
+ mov al, bl ; 88 d8 ; 0xf6d3a ps2mouse.c:94
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6d3c
+ out DX, AL ; ee ; 0xf6d3f
+ xor al, bl ; 30 d8 ; 0xf6d40 ps2mouse.c:96
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6d42
+ pop dx ; 5a ; 0xf6d45
+ pop bx ; 5b ; 0xf6d46
+ pop bp ; 5d ; 0xf6d47
+ retn ; c3 ; 0xf6d48
+ ; disGetNextSymbol 0xf6d49 LB 0x419f -> off=0x0 cb=000000000000005d uValue=00000000000f5749 'get_mouse_data'
+get_mouse_data: ; 0xf6d49 LB 0x5d
+ push bp ; 55 ; 0xf6d49 ps2mouse.c:99
+ mov bp, sp ; 89 e5 ; 0xf6d4a
+ push bx ; 53 ; 0xf6d4c
+ push cx ; 51 ; 0xf6d4d
+ push ax ; 50 ; 0xf6d4e
+ mov bx, ax ; 89 c3 ; 0xf6d4f
+ mov es, dx ; 8e c2 ; 0xf6d51
+ mov cx, 02710h ; b9 10 27 ; 0xf6d53 ps2mouse.c:101
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6d56 ps2mouse.c:104
+ in AL, DX ; ec ; 0xf6d59
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6d5a
+ and ax, strict word 00021h ; 25 21 00 ; 0xf6d5c
+ cmp ax, strict word 00021h ; 3d 21 00 ; 0xf6d5f
+ je short 06d8ch ; 74 28 ; 0xf6d62
+ test cx, cx ; 85 c9 ; 0xf6d64
+ je short 06d8ch ; 74 24 ; 0xf6d66
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6d68 ps2mouse.c:107
+ in AL, DX ; ec ; 0xf6d6b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6d6c
+ and AL, strict byte 010h ; 24 10 ; 0xf6d6e
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6d70
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6d73 ps2mouse.c:108
+ in AL, DX ; ec ; 0xf6d76
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6d77
+ mov dx, ax ; 89 c2 ; 0xf6d79
+ xor dh, ah ; 30 e6 ; 0xf6d7b
+ and dl, 010h ; 80 e2 10 ; 0xf6d7d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6d80
+ xor ah, ah ; 30 e4 ; 0xf6d83
+ cmp dx, ax ; 39 c2 ; 0xf6d85
+ je short 06d73h ; 74 ea ; 0xf6d87
+ dec cx ; 49 ; 0xf6d89 ps2mouse.c:110
+ jmp short 06d56h ; eb ca ; 0xf6d8a ps2mouse.c:111
+ test cx, cx ; 85 c9 ; 0xf6d8c ps2mouse.c:113
+ jne short 06d94h ; 75 04 ; 0xf6d8e
+ mov AL, strict byte 001h ; b0 01 ; 0xf6d90 ps2mouse.c:114
+ jmp short 06d9fh ; eb 0b ; 0xf6d92
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6d94 ps2mouse.c:116
+ in AL, DX ; ec ; 0xf6d97
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6d98
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6d9a ps2mouse.c:117
+ xor al, al ; 30 c0 ; 0xf6d9d ps2mouse.c:118
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6d9f ps2mouse.c:119
+ pop cx ; 59 ; 0xf6da2
+ pop bx ; 5b ; 0xf6da3
+ pop bp ; 5d ; 0xf6da4
+ retn ; c3 ; 0xf6da5
+ ; disGetNextSymbol 0xf6da6 LB 0x4142 -> off=0x0 cb=0000000000000036 uValue=00000000000f57a6 'set_kbd_command_byte'
+set_kbd_command_byte: ; 0xf6da6 LB 0x36
+ push bp ; 55 ; 0xf6da6 ps2mouse.c:121
+ mov bp, sp ; 89 e5 ; 0xf6da7
+ push bx ; 53 ; 0xf6da9
+ push dx ; 52 ; 0xf6daa
+ mov bl, al ; 88 c3 ; 0xf6dab
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6dad ps2mouse.c:123
+ in AL, DX ; ec ; 0xf6db0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6db1
+ test AL, strict byte 002h ; a8 02 ; 0xf6db3
+ je short 06dc9h ; 74 12 ; 0xf6db5
+ mov ax, 0094eh ; b8 4e 09 ; 0xf6db7 ps2mouse.c:124
+ push ax ; 50 ; 0xf6dba
+ mov ax, 011a4h ; b8 a4 11 ; 0xf6dbb
+ push ax ; 50 ; 0xf6dbe
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6dbf
+ push ax ; 50 ; 0xf6dc2
+ call 0195ch ; e8 96 ab ; 0xf6dc3
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6dc6
+ mov AL, strict byte 060h ; b0 60 ; 0xf6dc9 ps2mouse.c:126
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6dcb
+ out DX, AL ; ee ; 0xf6dce
+ mov al, bl ; 88 d8 ; 0xf6dcf ps2mouse.c:127
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6dd1
+ out DX, AL ; ee ; 0xf6dd4
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6dd5 ps2mouse.c:128
+ pop dx ; 5a ; 0xf6dd8
+ pop bx ; 5b ; 0xf6dd9
+ pop bp ; 5d ; 0xf6dda
+ retn ; c3 ; 0xf6ddb
+ ; disGetNextSymbol 0xf6ddc LB 0x410c -> off=0x0 cb=000000000000009e uValue=00000000000f57dc 'int74_function'
+int74_function: ; 0xf6ddc LB 0x9e
+ push bp ; 55 ; 0xf6ddc ps2mouse.c:131
+ mov bp, sp ; 89 e5 ; 0xf6ddd
+ push si ; 56 ; 0xf6ddf
+ push ax ; 50 ; 0xf6de0
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6de1 ps2mouse.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6de4
+ mov es, ax ; 8e c0 ; 0xf6de7
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6de9
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf6dec ps2mouse.c:139
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6df1 ps2mouse.c:141
+ in AL, DX ; ec ; 0xf6df4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6df5
+ and AL, strict byte 021h ; 24 21 ; 0xf6df7 ps2mouse.c:142
+ cmp AL, strict byte 021h ; 3c 21 ; 0xf6df9
+ jne short 06e1bh ; 75 1e ; 0xf6dfb
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6dfd ps2mouse.c:145
+ in AL, DX ; ec ; 0xf6e00
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e01
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6e03
+ mov si, strict word 00026h ; be 26 00 ; 0xf6e06 ps2mouse.c:48
+ mov es, bx ; 8e c3 ; 0xf6e09
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6e0b
+ mov si, strict word 00027h ; be 27 00 ; 0xf6e0e ps2mouse.c:48
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf6e11
+ mov cl, ah ; 88 e1 ; 0xf6e14 ps2mouse.c:49
+ test ah, 080h ; f6 c4 80 ; 0xf6e16 ps2mouse.c:151
+ jne short 06e1dh ; 75 02 ; 0xf6e19
+ jmp short 06e74h ; eb 57 ; 0xf6e1b ps2mouse.c:152
+ mov ch, cl ; 88 cd ; 0xf6e1d ps2mouse.c:155
+ and ch, 007h ; 80 e5 07 ; 0xf6e1f
+ mov ah, al ; 88 c4 ; 0xf6e22 ps2mouse.c:156
+ and ah, 007h ; 80 e4 07 ; 0xf6e24
+ mov dl, ah ; 88 e2 ; 0xf6e27 ps2mouse.c:157
+ xor dh, dh ; 30 f6 ; 0xf6e29
+ mov si, dx ; 89 d6 ; 0xf6e2b
+ add si, strict byte 00028h ; 83 c6 28 ; 0xf6e2d
+ mov es, bx ; 8e c3 ; 0xf6e30 ps2mouse.c:53
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6e32
+ mov byte [es:si], dl ; 26 88 14 ; 0xf6e35
+ cmp ah, ch ; 38 ec ; 0xf6e38 ps2mouse.c:159
+ jc short 06e6ah ; 72 2e ; 0xf6e3a
+ mov si, strict word 00028h ; be 28 00 ; 0xf6e3c ps2mouse.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6e3f
+ xor ah, ah ; 30 e4 ; 0xf6e42 ps2mouse.c:49
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf6e44
+ mov si, strict word 00029h ; be 29 00 ; 0xf6e47 ps2mouse.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6e4a
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf6e4d ps2mouse.c:49
+ mov si, strict word 0002ah ; be 2a 00 ; 0xf6e50 ps2mouse.c:48
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6e53
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf6e56 ps2mouse.c:49
+ xor al, al ; 30 c0 ; 0xf6e59 ps2mouse.c:164
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf6e5b
+ test cl, 080h ; f6 c1 80 ; 0xf6e5e ps2mouse.c:167
+ je short 06e6ch ; 74 09 ; 0xf6e61
+ mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf6e63 ps2mouse.c:168
+ jmp short 06e6ch ; eb 02 ; 0xf6e68 ps2mouse.c:170
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf6e6a ps2mouse.c:171
+ mov si, strict word 00026h ; be 26 00 ; 0xf6e6c ps2mouse.c:53
+ mov es, bx ; 8e c3 ; 0xf6e6f
+ mov byte [es:si], al ; 26 88 04 ; 0xf6e71
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6e74 ps2mouse.c:174
+ pop si ; 5e ; 0xf6e77
+ pop bp ; 5d ; 0xf6e78
+ retn ; c3 ; 0xf6e79
+ ; disGetNextSymbol 0xf6e7a LB 0x406e -> off=0x10 cb=0000000000000380 uValue=00000000000f588a 'int15_function_mouse'
+ db 0cbh, 06eh, 03ch, 06fh, 0b2h, 06fh, 044h, 070h, 0b6h, 070h, 011h, 06fh, 0deh, 070h, 0afh, 071h
+int15_function_mouse: ; 0xf6e8a LB 0x380
+ push bp ; 55 ; 0xf6e8a ps2mouse.c:176
+ mov bp, sp ; 89 e5 ; 0xf6e8b
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6e8d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6e90 ps2mouse.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6e93
+ mov es, ax ; 8e c0 ; 0xf6e96
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf6e98
+ cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf6e9b ps2mouse.c:198
+ jbe short 06each ; 76 0b ; 0xf6e9f
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6ea1 ps2mouse.c:201
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf6ea5 ps2mouse.c:202
+ jmp near 07206h ; e9 5a 03 ; 0xf6ea9 ps2mouse.c:203
+ mov ax, strict word 00065h ; b8 65 00 ; 0xf6eac ps2mouse.c:207
+ call 06da6h ; e8 f4 fe ; 0xf6eaf
+ and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf6eb2 ps2mouse.c:208
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6eb6 ps2mouse.c:209
+ mov bl, byte [bp+012h] ; 8a 5e 12 ; 0xf6eba ps2mouse.c:211
+ cmp bl, 007h ; 80 fb 07 ; 0xf6ebd
+ jnbe short 06f1fh ; 77 5d ; 0xf6ec0
+ xor bh, bh ; 30 ff ; 0xf6ec2
+ sal bx, 1 ; d1 e3 ; 0xf6ec4
+ jmp word [cs:bx+06e7ah] ; 2e ff a7 7a 6e ; 0xf6ec6
+ cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf6ecb ps2mouse.c:214
+ jnbe short 06f22h ; 77 51 ; 0xf6ecf
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf6ed1 ps2mouse.c:48
+ mov es, dx ; 8e c2 ; 0xf6ed4
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6ed6
+ test AL, strict byte 080h ; a8 80 ; 0xf6ed9 ps2mouse.c:222
+ jne short 06ee8h ; 75 0b ; 0xf6edb
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6edd ps2mouse.c:224
+ mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf6ee1 ps2mouse.c:225
+ jmp near 07200h ; e9 18 03 ; 0xf6ee5 ps2mouse.c:226
+ cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf6ee8 ps2mouse.c:228
+ jne short 06ef2h ; 75 04 ; 0xf6eec
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf6eee ps2mouse.c:230
+ jmp short 06ef4h ; eb 02 ; 0xf6ef0 ps2mouse.c:231
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf6ef2 ps2mouse.c:233
+ xor ah, ah ; 30 e4 ; 0xf6ef4 ps2mouse.c:236
+ call 06d11h ; e8 18 fe ; 0xf6ef6
+ test al, al ; 84 c0 ; 0xf6ef9 ps2mouse.c:237
+ jne short 06f25h ; 75 28 ; 0xf6efb
+ mov dx, ss ; 8c d2 ; 0xf6efd ps2mouse.c:238
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf6eff
+ call 06d49h ; e8 44 fe ; 0xf6f02
+ test al, al ; 84 c0 ; 0xf6f05 ps2mouse.c:239
+ je short 06f6bh ; 74 62 ; 0xf6f07
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf6f09
+ jne short 06f25h ; 75 16 ; 0xf6f0d
+ jmp short 06f6bh ; eb 5a ; 0xf6f0f ps2mouse.c:241
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf6f11 ps2mouse.c:252
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf6f14
+ jc short 06f1ch ; 72 04 ; 0xf6f16
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf6f18
+ jbe short 06f28h ; 76 0c ; 0xf6f1a
+ jmp near 070ach ; e9 8d 01 ; 0xf6f1c
+ jmp near 071eah ; e9 c8 02 ; 0xf6f1f
+ jmp near 071f8h ; e9 d3 02 ; 0xf6f22
+ jmp near 07187h ; e9 5f 02 ; 0xf6f25
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf6f28 ps2mouse.c:48
+ mov es, dx ; 8e c2 ; 0xf6f2b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f2d
+ mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf6f30 ps2mouse.c:258
+ db 0feh, 0cch
+ ; dec ah ; fe cc ; 0xf6f33
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf6f35
+ or al, ah ; 08 e0 ; 0xf6f37
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6f39 ps2mouse.c:53
+ mov bx, strict word 00026h ; bb 26 00 ; 0xf6f3c ps2mouse.c:48
+ mov es, dx ; 8e c2 ; 0xf6f3f
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f41
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf6f44 ps2mouse.c:266
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6f46 ps2mouse.c:53
+ mov ax, 000ffh ; b8 ff 00 ; 0xf6f49 ps2mouse.c:268
+ call 06d11h ; e8 c2 fd ; 0xf6f4c
+ test al, al ; 84 c0 ; 0xf6f4f ps2mouse.c:269
+ jne short 06f25h ; 75 d2 ; 0xf6f51
+ mov dx, ss ; 8c d2 ; 0xf6f53 ps2mouse.c:270
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf6f55
+ call 06d49h ; e8 ee fd ; 0xf6f58
+ mov dl, al ; 88 c2 ; 0xf6f5b
+ cmp byte [bp-002h], 0feh ; 80 7e fe fe ; 0xf6f5d ps2mouse.c:272
+ jne short 06f6eh ; 75 0b ; 0xf6f61
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6f63 ps2mouse.c:273
+ mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf6f67 ps2mouse.c:274
+ jmp near 07200h ; e9 92 02 ; 0xf6f6b ps2mouse.c:275
+ cmp byte [bp-002h], 0fah ; 80 7e fe fa ; 0xf6f6e ps2mouse.c:277
+ je short 06f88h ; 74 14 ; 0xf6f72
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6f74 ps2mouse.c:278
+ xor ah, ah ; 30 e4 ; 0xf6f77
+ push ax ; 50 ; 0xf6f79
+ mov ax, 00959h ; b8 59 09 ; 0xf6f7a
+ push ax ; 50 ; 0xf6f7d
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6f7e
+ push ax ; 50 ; 0xf6f81
+ call 0195ch ; e8 d7 a9 ; 0xf6f82
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f85
+ test dl, dl ; 84 d2 ; 0xf6f88 ps2mouse.c:279
+ jne short 06f25h ; 75 99 ; 0xf6f8a
+ mov dx, ss ; 8c d2 ; 0xf6f8c ps2mouse.c:280
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf6f8e
+ call 06d49h ; e8 b5 fd ; 0xf6f91
+ test al, al ; 84 c0 ; 0xf6f94 ps2mouse.c:281
+ jne short 06f25h ; 75 8d ; 0xf6f96
+ mov dx, ss ; 8c d2 ; 0xf6f98 ps2mouse.c:282
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf6f9a
+ call 06d49h ; e8 a9 fd ; 0xf6f9d
+ test al, al ; 84 c0 ; 0xf6fa0 ps2mouse.c:283
+ jne short 06f25h ; 75 81 ; 0xf6fa2
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6fa4 ps2mouse.c:285
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf6fa7
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf6faa ps2mouse.c:286
+ mov byte [bp+00dh], al ; 88 46 0d ; 0xf6fad
+ jmp short 06f6bh ; eb b9 ; 0xf6fb0 ps2mouse.c:287
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf6fb2 ps2mouse.c:300
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf6fb5
+ jc short 06fc9h ; 72 10 ; 0xf6fb7
+ jbe short 06fe7h ; 76 2c ; 0xf6fb9
+ cmp AL, strict byte 006h ; 3c 06 ; 0xf6fbb
+ je short 06ff9h ; 74 3a ; 0xf6fbd
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf6fbf
+ je short 06ff3h ; 74 30 ; 0xf6fc1
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf6fc3
+ je short 06fedh ; 74 26 ; 0xf6fc5
+ jmp short 06fffh ; eb 36 ; 0xf6fc7
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf6fc9
+ je short 06fe1h ; 74 14 ; 0xf6fcb
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf6fcd
+ je short 06fdbh ; 74 0a ; 0xf6fcf
+ test al, al ; 84 c0 ; 0xf6fd1
+ jne short 06fffh ; 75 2a ; 0xf6fd3
+ mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf6fd5 ps2mouse.c:301
+ jmp short 07003h ; eb 28 ; 0xf6fd9
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf6fdb ps2mouse.c:302
+ jmp short 07003h ; eb 22 ; 0xf6fdf
+ mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf6fe1 ps2mouse.c:303
+ jmp short 07003h ; eb 1c ; 0xf6fe5
+ mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf6fe7 ps2mouse.c:304
+ jmp short 07003h ; eb 16 ; 0xf6feb
+ mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf6fed ps2mouse.c:305
+ jmp short 07003h ; eb 10 ; 0xf6ff1
+ mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf6ff3 ps2mouse.c:306
+ jmp short 07003h ; eb 0a ; 0xf6ff7
+ mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf6ff9 ps2mouse.c:307
+ jmp short 07003h ; eb 04 ; 0xf6ffd
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf6fff ps2mouse.c:308
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf7003 ps2mouse.c:310
+ jbe short 07039h ; 76 30 ; 0xf7007
+ mov ax, 000f3h ; b8 f3 00 ; 0xf7009 ps2mouse.c:311
+ call 06d11h ; e8 02 fd ; 0xf700c
+ test al, al ; 84 c0 ; 0xf700f ps2mouse.c:312
+ jne short 0702eh ; 75 1b ; 0xf7011
+ mov dx, ss ; 8c d2 ; 0xf7013 ps2mouse.c:313
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7015
+ call 06d49h ; e8 2e fd ; 0xf7018
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf701b ps2mouse.c:314
+ xor ah, ah ; 30 e4 ; 0xf701e
+ call 06d11h ; e8 ee fc ; 0xf7020
+ mov dx, ss ; 8c d2 ; 0xf7023 ps2mouse.c:315
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7025
+ call 06d49h ; e8 1e fd ; 0xf7028
+ jmp near 07200h ; e9 d2 01 ; 0xf702b ps2mouse.c:317
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf702e ps2mouse.c:319
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7032 ps2mouse.c:320
+ jmp near 07200h ; e9 c7 01 ; 0xf7036 ps2mouse.c:322
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7039 ps2mouse.c:324
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf703d ps2mouse.c:325
+ jmp near 07200h ; e9 bc 01 ; 0xf7041 ps2mouse.c:327
+ cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf7044 ps2mouse.c:336
+ jnc short 070ach ; 73 62 ; 0xf7048
+ mov ax, 000e8h ; b8 e8 00 ; 0xf704a ps2mouse.c:337
+ call 06d11h ; e8 c1 fc ; 0xf704d
+ test al, al ; 84 c0 ; 0xf7050 ps2mouse.c:338
+ jne short 070a2h ; 75 4e ; 0xf7052
+ mov dx, ss ; 8c d2 ; 0xf7054 ps2mouse.c:339
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7056
+ call 06d49h ; e8 ed fc ; 0xf7059
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf705c ps2mouse.c:340
+ je short 07076h ; 74 14 ; 0xf7060
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7062 ps2mouse.c:341
+ xor ah, ah ; 30 e4 ; 0xf7065
+ push ax ; 50 ; 0xf7067
+ mov ax, 00984h ; b8 84 09 ; 0xf7068
+ push ax ; 50 ; 0xf706b
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf706c
+ push ax ; 50 ; 0xf706f
+ call 0195ch ; e8 e9 a8 ; 0xf7070
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7073
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7076 ps2mouse.c:342
+ xor ah, ah ; 30 e4 ; 0xf7079
+ call 06d11h ; e8 93 fc ; 0xf707b
+ mov dx, ss ; 8c d2 ; 0xf707e ps2mouse.c:343
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7080
+ call 06d49h ; e8 c3 fc ; 0xf7083
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7086 ps2mouse.c:344
+ je short 070dbh ; 74 4f ; 0xf708a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf708c ps2mouse.c:345
+ xor ah, ah ; 30 e4 ; 0xf708f
+ push ax ; 50 ; 0xf7091
+ mov ax, 00984h ; b8 84 09 ; 0xf7092
+ push ax ; 50 ; 0xf7095
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7096
+ push ax ; 50 ; 0xf7099
+ call 0195ch ; e8 bf a8 ; 0xf709a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf709d
+ jmp short 070dbh ; eb 39 ; 0xf70a0 ps2mouse.c:347
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70a2 ps2mouse.c:349
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf70a6 ps2mouse.c:350
+ jmp short 070dbh ; eb 2f ; 0xf70aa ps2mouse.c:352
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70ac ps2mouse.c:354
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf70b0 ps2mouse.c:355
+ jmp short 070dbh ; eb 25 ; 0xf70b4 ps2mouse.c:357
+ mov ax, 000f2h ; b8 f2 00 ; 0xf70b6 ps2mouse.c:361
+ call 06d11h ; e8 55 fc ; 0xf70b9
+ test al, al ; 84 c0 ; 0xf70bc ps2mouse.c:362
+ jne short 070d3h ; 75 13 ; 0xf70be
+ mov dx, ss ; 8c d2 ; 0xf70c0 ps2mouse.c:363
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf70c2
+ call 06d49h ; e8 81 fc ; 0xf70c5
+ mov dx, ss ; 8c d2 ; 0xf70c8 ps2mouse.c:364
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf70ca
+ call 06d49h ; e8 79 fc ; 0xf70cd
+ jmp near 06faah ; e9 d7 fe ; 0xf70d0
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70d3 ps2mouse.c:365
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf70d7 ps2mouse.c:370
+ jmp near 07200h ; e9 22 01 ; 0xf70db ps2mouse.c:372
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf70de ps2mouse.c:376
+ test al, al ; 84 c0 ; 0xf70e1
+ jbe short 070eeh ; 76 09 ; 0xf70e3
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf70e5
+ jbe short 070ech ; 76 03 ; 0xf70e7
+ jmp near 07191h ; e9 a5 00 ; 0xf70e9
+ jmp short 07158h ; eb 6a ; 0xf70ec
+ mov ax, 000e9h ; b8 e9 00 ; 0xf70ee ps2mouse.c:378
+ call 06d11h ; e8 1d fc ; 0xf70f1
+ test al, al ; 84 c0 ; 0xf70f4 ps2mouse.c:379
+ jne short 07161h ; 75 69 ; 0xf70f6
+ mov dx, ss ; 8c d2 ; 0xf70f8 ps2mouse.c:380
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf70fa
+ call 06d49h ; e8 49 fc ; 0xf70fd
+ mov dl, al ; 88 c2 ; 0xf7100
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7102 ps2mouse.c:381
+ je short 0711ch ; 74 14 ; 0xf7106
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7108 ps2mouse.c:382
+ xor ah, ah ; 30 e4 ; 0xf710b
+ push ax ; 50 ; 0xf710d
+ mov ax, 00984h ; b8 84 09 ; 0xf710e
+ push ax ; 50 ; 0xf7111
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7112
+ push ax ; 50 ; 0xf7115
+ call 0195ch ; e8 43 a8 ; 0xf7116
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7119
+ test dl, dl ; 84 d2 ; 0xf711c ps2mouse.c:383
+ jne short 07161h ; 75 41 ; 0xf711e
+ mov dx, ss ; 8c d2 ; 0xf7120 ps2mouse.c:384
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7122
+ call 06d49h ; e8 21 fc ; 0xf7125
+ test al, al ; 84 c0 ; 0xf7128 ps2mouse.c:385
+ jne short 07187h ; 75 5b ; 0xf712a
+ mov dx, ss ; 8c d2 ; 0xf712c ps2mouse.c:386
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf712e
+ call 06d49h ; e8 15 fc ; 0xf7131
+ test al, al ; 84 c0 ; 0xf7134 ps2mouse.c:387
+ jne short 07187h ; 75 4f ; 0xf7136
+ mov dx, ss ; 8c d2 ; 0xf7138 ps2mouse.c:388
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf713a
+ call 06d49h ; e8 09 fc ; 0xf713d
+ test al, al ; 84 c0 ; 0xf7140 ps2mouse.c:389
+ jne short 07187h ; 75 43 ; 0xf7142
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7144 ps2mouse.c:390
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf7147
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf714a ps2mouse.c:391
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf714d
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7150 ps2mouse.c:392
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf7153
+ jmp short 070dbh ; eb 83 ; 0xf7156 ps2mouse.c:394
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7158 ps2mouse.c:408
+ jne short 07163h ; 75 07 ; 0xf715a
+ mov ax, 000e6h ; b8 e6 00 ; 0xf715c ps2mouse.c:409
+ jmp short 07166h ; eb 05 ; 0xf715f ps2mouse.c:410
+ jmp short 07187h ; eb 24 ; 0xf7161
+ mov ax, 000e7h ; b8 e7 00 ; 0xf7163 ps2mouse.c:411
+ call 06d11h ; e8 a8 fb ; 0xf7166
+ mov dl, al ; 88 c2 ; 0xf7169
+ test dl, dl ; 84 d2 ; 0xf716b ps2mouse.c:413
+ jne short 07183h ; 75 14 ; 0xf716d
+ mov dx, ss ; 8c d2 ; 0xf716f ps2mouse.c:414
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7171
+ call 06d49h ; e8 d2 fb ; 0xf7174
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7177 ps2mouse.c:415
+ je short 07181h ; 74 04 ; 0xf717b
+ mov DL, strict byte 001h ; b2 01 ; 0xf717d
+ jmp short 07183h ; eb 02 ; 0xf717f
+ xor dl, dl ; 30 d2 ; 0xf7181
+ test dl, dl ; 84 d2 ; 0xf7183 ps2mouse.c:417
+ je short 071e8h ; 74 61 ; 0xf7185
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7187 ps2mouse.c:419
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf718b ps2mouse.c:420
+ jmp short 071e8h ; eb 57 ; 0xf718f ps2mouse.c:422
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7191 ps2mouse.c:425
+ xor ah, ah ; 30 e4 ; 0xf7194
+ push ax ; 50 ; 0xf7196
+ mov ax, 009b0h ; b8 b0 09 ; 0xf7197
+ push ax ; 50 ; 0xf719a
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf719b
+ push ax ; 50 ; 0xf719e
+ call 0195ch ; e8 ba a7 ; 0xf719f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf71a2
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71a5 ps2mouse.c:427
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf71a9 ps2mouse.c:428
+ jmp short 07200h ; eb 51 ; 0xf71ad ps2mouse.c:430
+ mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf71af ps2mouse.c:435
+ mov bx, strict word 00022h ; bb 22 00 ; 0xf71b2 ps2mouse.c:63
+ mov es, dx ; 8e c2 ; 0xf71b5
+ mov word [es:bx], cx ; 26 89 0f ; 0xf71b7
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf71ba ps2mouse.c:63
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf71bd
+ mov word [es:bx], ax ; 26 89 07 ; 0xf71c0
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf71c3 ps2mouse.c:48
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf71c6
+ mov al, ah ; 88 e0 ; 0xf71c9 ps2mouse.c:49
+ test cx, cx ; 85 c9 ; 0xf71cb ps2mouse.c:439
+ jne short 071deh ; 75 0f ; 0xf71cd
+ cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf71cf
+ jne short 071deh ; 75 09 ; 0xf71d3
+ test ah, 080h ; f6 c4 80 ; 0xf71d5 ps2mouse.c:441
+ je short 071e0h ; 74 06 ; 0xf71d8
+ and AL, strict byte 07fh ; 24 7f ; 0xf71da ps2mouse.c:442
+ jmp short 071e0h ; eb 02 ; 0xf71dc ps2mouse.c:445
+ or AL, strict byte 080h ; 0c 80 ; 0xf71de ps2mouse.c:447
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf71e0 ps2mouse.c:53
+ mov es, dx ; 8e c2 ; 0xf71e3
+ mov byte [es:bx], al ; 26 88 07 ; 0xf71e5
+ jmp short 07200h ; eb 16 ; 0xf71e8 ps2mouse.c:450
+ mov ax, 009cah ; b8 ca 09 ; 0xf71ea ps2mouse.c:453
+ push ax ; 50 ; 0xf71ed
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf71ee
+ push ax ; 50 ; 0xf71f1
+ call 0195ch ; e8 67 a7 ; 0xf71f2
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf71f5
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71f8 ps2mouse.c:455
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf71fc ps2mouse.c:456
+ mov ax, strict word 00047h ; b8 47 00 ; 0xf7200 ps2mouse.c:460
+ call 06da6h ; e8 a0 fb ; 0xf7203
+ mov sp, bp ; 89 ec ; 0xf7206 ps2mouse.c:461
+ pop bp ; 5d ; 0xf7208
+ retn ; c3 ; 0xf7209
+ ; disGetNextSymbol 0xf720a LB 0x3cde -> off=0x0 cb=00000000000000a9 uValue=00000000000f5c0a 'int17_function'
+int17_function: ; 0xf720a LB 0xa9
+ push bp ; 55 ; 0xf720a parallel.c:70
+ mov bp, sp ; 89 e5 ; 0xf720b
+ push si ; 56 ; 0xf720d
+ push di ; 57 ; 0xf720e
+ push ax ; 50 ; 0xf720f
+ sti ; fb ; 0xf7210 parallel.c:75
+ mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf7211 parallel.c:77
+ sal bx, 1 ; d1 e3 ; 0xf7214
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf7216
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7219 parallel.c:58
+ mov es, ax ; 8e c0 ; 0xf721c
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf721e
+ mov di, bx ; 89 df ; 0xf7221 parallel.c:59
+ cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf7223 parallel.c:78
+ jnc short 07235h ; 73 0c ; 0xf7227
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7229
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf722c
+ jnc short 07235h ; 73 04 ; 0xf722f
+ test bx, bx ; 85 db ; 0xf7231
+ jnbe short 07238h ; 77 03 ; 0xf7233
+ jmp near 072a8h ; e9 70 00 ; 0xf7235
+ mov si, ax ; 89 c6 ; 0xf7238 parallel.c:79
+ add si, strict byte 00078h ; 83 c6 78 ; 0xf723a
+ mov ch, byte [es:si] ; 26 8a 2c ; 0xf723d parallel.c:48
+ xor cl, cl ; 30 c9 ; 0xf7240 parallel.c:49
+ cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf7242 parallel.c:80
+ jne short 07274h ; 75 2c ; 0xf7246
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf7248 parallel.c:81
+ mov dx, bx ; 89 da ; 0xf724b
+ out DX, AL ; ee ; 0xf724d
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf724e parallel.c:82
+ in AL, DX ; ec ; 0xf7251
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7252
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf7254
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7257 parallel.c:83
+ or AL, strict byte 001h ; 0c 01 ; 0xf725a
+ out DX, AL ; ee ; 0xf725c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf725d parallel.c:84
+ and AL, strict byte 0feh ; 24 fe ; 0xf7260
+ out DX, AL ; ee ; 0xf7262
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf7263 parallel.c:85
+ in AL, DX ; ec ; 0xf7266
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7267
+ test AL, strict byte 040h ; a8 40 ; 0xf7269
+ je short 07274h ; 74 07 ; 0xf726b
+ test cx, cx ; 85 c9 ; 0xf726d
+ je short 07274h ; 74 03 ; 0xf726f
+ dec cx ; 49 ; 0xf7271 parallel.c:86
+ jmp short 07263h ; eb ef ; 0xf7272 parallel.c:87
+ cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf7274 parallel.c:89
+ jne short 0728fh ; 75 15 ; 0xf7278
+ lea dx, [di+002h] ; 8d 55 02 ; 0xf727a parallel.c:90
+ in AL, DX ; ec ; 0xf727d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf727e
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf7280
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7283 parallel.c:91
+ and AL, strict byte 0fbh ; 24 fb ; 0xf7286
+ out DX, AL ; ee ; 0xf7288
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7289 parallel.c:92
+ or AL, strict byte 004h ; 0c 04 ; 0xf728c
+ out DX, AL ; ee ; 0xf728e
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf728f parallel.c:94
+ in AL, DX ; ec ; 0xf7292
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7293
+ xor AL, strict byte 048h ; 34 48 ; 0xf7295 parallel.c:95
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf7297
+ test cx, cx ; 85 c9 ; 0xf729a parallel.c:96
+ jne short 072a2h ; 75 04 ; 0xf729c
+ or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf729e
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf72a2 parallel.c:97
+ jmp short 072ach ; eb 04 ; 0xf72a6 parallel.c:98
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf72a8 parallel.c:99
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf72ac parallel.c:101
+ pop di ; 5f ; 0xf72af
+ pop si ; 5e ; 0xf72b0
+ pop bp ; 5d ; 0xf72b1
+ retn ; c3 ; 0xf72b2
+ ; disGetNextSymbol 0xf72b3 LB 0x3c35 -> off=0x0 cb=00000000000000c8 uValue=00000000000f5cb3 '_wait_'
+_wait_: ; 0xf72b3 LB 0xc8
+ push bp ; 55 ; 0xf72b3 logo.c:181
+ mov bp, sp ; 89 e5 ; 0xf72b4
+ push bx ; 53 ; 0xf72b6
+ push cx ; 51 ; 0xf72b7
+ push si ; 56 ; 0xf72b8
+ push di ; 57 ; 0xf72b9
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf72ba
+ mov cx, ax ; 89 c1 ; 0xf72bd
+ mov byte [bp-00ch], dl ; 88 56 f4 ; 0xf72bf
+ mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf72c2 logo.c:186
+ pushfw ; 9c ; 0xf72c6 logo.c:192
+ pop ax ; 58 ; 0xf72c7
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf72c8
+ sti ; fb ; 0xf72cb logo.c:193
+ xor dx, dx ; 31 d2 ; 0xf72cc logo.c:199
+ mov bx, 0046ch ; bb 6c 04 ; 0xf72ce logo.c:68
+ mov es, dx ; 8e c2 ; 0xf72d1
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf72d3
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf72d6
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf72da logo.c:69
+ hlt ; f4 ; 0xf72dd logo.c:203
+ mov si, 0046ch ; be 6c 04 ; 0xf72de logo.c:68
+ xor ax, ax ; 31 c0 ; 0xf72e1
+ mov es, ax ; 8e c0 ; 0xf72e3
+ mov di, word [es:si] ; 26 8b 3c ; 0xf72e5
+ mov ax, word [es:si+002h] ; 26 8b 44 02 ; 0xf72e8
+ mov word [bp-016h], di ; 89 7e ea ; 0xf72ec logo.c:69
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf72ef
+ cmp ax, bx ; 39 d8 ; 0xf72f2 logo.c:205
+ jnbe short 072fdh ; 77 07 ; 0xf72f4
+ jne short 07304h ; 75 0c ; 0xf72f6
+ cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf72f8
+ jbe short 07304h ; 76 07 ; 0xf72fb
+ sub di, word [bp-010h] ; 2b 7e f0 ; 0xf72fd logo.c:207
+ sbb ax, bx ; 19 d8 ; 0xf7300
+ jmp short 0730fh ; eb 0b ; 0xf7302 logo.c:210
+ cmp ax, bx ; 39 d8 ; 0xf7304
+ jc short 0730fh ; 72 07 ; 0xf7306
+ jne short 07313h ; 75 09 ; 0xf7308
+ cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf730a
+ jnc short 07313h ; 73 04 ; 0xf730d
+ sub cx, di ; 29 f9 ; 0xf730f logo.c:211
+ sbb dx, ax ; 19 c2 ; 0xf7311
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7313 logo.c:212
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7316
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf7319
+ mov ax, 00100h ; b8 00 01 ; 0xf731c logo.c:214
+ int 016h ; cd 16 ; 0xf731f
+ je short 07328h ; 74 05 ; 0xf7321
+ mov AL, strict byte 001h ; b0 01 ; 0xf7323
+ jmp near 0732ah ; e9 02 00 ; 0xf7325
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf7328
+ test al, al ; 84 c0 ; 0xf732a
+ je short 0735dh ; 74 2f ; 0xf732c
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf732e logo.c:216
+ int 016h ; cd 16 ; 0xf7330
+ xchg ah, al ; 86 c4 ; 0xf7332
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf7334
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7337
+ mov byte [bp-018h], al ; 88 46 e8 ; 0xf733a logo.c:217
+ mov byte [bp-017h], 000h ; c6 46 e9 00 ; 0xf733d
+ push word [bp-018h] ; ff 76 e8 ; 0xf7341
+ mov ax, 009ech ; b8 ec 09 ; 0xf7344
+ push ax ; 50 ; 0xf7347
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7348
+ push ax ; 50 ; 0xf734b
+ call 0195ch ; e8 0d a6 ; 0xf734c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf734f
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7352 logo.c:218
+ je short 0735dh ; 74 05 ; 0xf7356
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7358 logo.c:219
+ jmp short 07372h ; eb 15 ; 0xf735b
+ test dx, dx ; 85 d2 ; 0xf735d logo.c:221
+ jle short 07364h ; 7e 03 ; 0xf735f
+ jmp near 072ddh ; e9 79 ff ; 0xf7361
+ jne short 0736ah ; 75 04 ; 0xf7364
+ test cx, cx ; 85 c9 ; 0xf7366
+ jnbe short 07361h ; 77 f7 ; 0xf7368
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf736a logo.c:222
+ push ax ; 50 ; 0xf736d
+ popfw ; 9d ; 0xf736e
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf736f logo.c:223
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7372 logo.c:224
+ pop di ; 5f ; 0xf7375
+ pop si ; 5e ; 0xf7376
+ pop cx ; 59 ; 0xf7377
+ pop bx ; 5b ; 0xf7378
+ pop bp ; 5d ; 0xf7379
+ retn ; c3 ; 0xf737a
+ ; disGetNextSymbol 0xf737b LB 0x3b6d -> off=0x0 cb=0000000000000016 uValue=00000000000f5d7b 'read_logo_byte'
+read_logo_byte: ; 0xf737b LB 0x16
+ push bp ; 55 ; 0xf737b logo.c:226
+ mov bp, sp ; 89 e5 ; 0xf737c
+ push dx ; 52 ; 0xf737e
+ xor ah, ah ; 30 e4 ; 0xf737f logo.c:228
+ or ah, 001h ; 80 cc 01 ; 0xf7381
+ mov dx, 003b8h ; ba b8 03 ; 0xf7384
+ out DX, ax ; ef ; 0xf7387
+ in AL, DX ; ec ; 0xf7388 logo.c:229
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7389
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf738b logo.c:230
+ pop dx ; 5a ; 0xf738e
+ pop bp ; 5d ; 0xf738f
+ retn ; c3 ; 0xf7390
+ ; disGetNextSymbol 0xf7391 LB 0x3b57 -> off=0x0 cb=0000000000000014 uValue=00000000000f5d91 'read_logo_word'
+read_logo_word: ; 0xf7391 LB 0x14
+ push bp ; 55 ; 0xf7391 logo.c:232
+ mov bp, sp ; 89 e5 ; 0xf7392
+ push dx ; 52 ; 0xf7394
+ xor ah, ah ; 30 e4 ; 0xf7395 logo.c:234
+ or ah, 001h ; 80 cc 01 ; 0xf7397
+ mov dx, 003b8h ; ba b8 03 ; 0xf739a
+ out DX, ax ; ef ; 0xf739d
+ in ax, DX ; ed ; 0xf739e logo.c:235
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf739f logo.c:236
+ pop dx ; 5a ; 0xf73a2
+ pop bp ; 5d ; 0xf73a3
+ retn ; c3 ; 0xf73a4
+ ; disGetNextSymbol 0xf73a5 LB 0x3b43 -> off=0x0 cb=000000000000015f uValue=00000000000f5da5 'print_detected_harddisks'
+print_detected_harddisks: ; 0xf73a5 LB 0x15f
+ push bp ; 55 ; 0xf73a5 logo.c:255
+ mov bp, sp ; 89 e5 ; 0xf73a6
+ push bx ; 53 ; 0xf73a8
+ push cx ; 51 ; 0xf73a9
+ push dx ; 52 ; 0xf73aa
+ push si ; 56 ; 0xf73ab
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf73ac
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf73af logo.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf73b2
+ mov es, ax ; 8e c0 ; 0xf73b5
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf73b7
+ mov si, ax ; 89 c6 ; 0xf73ba logo.c:59
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf73bc logo.c:260
+ xor ch, ch ; 30 ed ; 0xf73c0 logo.c:261
+ mov byte [bp-00ah], ch ; 88 6e f6 ; 0xf73c2 logo.c:262
+ mov bx, 002ach ; bb ac 02 ; 0xf73c5 logo.c:48
+ mov es, ax ; 8e c0 ; 0xf73c8
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf73ca
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf73cd logo.c:49
+ xor cl, cl ; 30 c9 ; 0xf73d0 logo.c:267
+ cmp cl, byte [bp-00eh] ; 3a 4e f2 ; 0xf73d2
+ jnc short 07435h ; 73 5e ; 0xf73d5
+ mov bl, cl ; 88 cb ; 0xf73d7 logo.c:269
+ xor bh, bh ; 30 ff ; 0xf73d9
+ add bx, 002adh ; 81 c3 ad 02 ; 0xf73db
+ mov es, si ; 8e c6 ; 0xf73df logo.c:48
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf73e1
+ mov bl, bh ; 88 fb ; 0xf73e4 logo.c:49
+ cmp bh, 00ch ; 80 ff 0c ; 0xf73e6 logo.c:272
+ jc short 07416h ; 72 2b ; 0xf73e9
+ test ch, ch ; 84 ed ; 0xf73eb logo.c:274
+ jne short 073ffh ; 75 10 ; 0xf73ed
+ mov ax, 009fdh ; b8 fd 09 ; 0xf73ef logo.c:276
+ push ax ; 50 ; 0xf73f2
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf73f3
+ push ax ; 50 ; 0xf73f6
+ call 0195ch ; e8 62 a5 ; 0xf73f7
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf73fa
+ mov CH, strict byte 001h ; b5 01 ; 0xf73fd logo.c:277
+ mov al, cl ; 88 c8 ; 0xf73ff logo.c:280
+ xor ah, ah ; 30 e4 ; 0xf7401
+ inc ax ; 40 ; 0xf7403
+ push ax ; 50 ; 0xf7404
+ mov ax, 00a12h ; b8 12 0a ; 0xf7405
+ push ax ; 50 ; 0xf7408
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7409
+ push ax ; 50 ; 0xf740c
+ call 0195ch ; e8 4c a5 ; 0xf740d
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7410
+ jmp near 074cah ; e9 b4 00 ; 0xf7413 logo.c:283
+ cmp bh, 008h ; 80 ff 08 ; 0xf7416 logo.c:286
+ jc short 07438h ; 72 1d ; 0xf7419
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf741b logo.c:288
+ jne short 07433h ; 75 12 ; 0xf741f
+ mov ax, 00a25h ; b8 25 0a ; 0xf7421 logo.c:290
+ push ax ; 50 ; 0xf7424
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7425
+ push ax ; 50 ; 0xf7428
+ call 0195ch ; e8 30 a5 ; 0xf7429
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf742c
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf742f logo.c:291
+ jmp short 073ffh ; eb ca ; 0xf7433 logo.c:292
+ jmp near 074cfh ; e9 97 00 ; 0xf7435
+ cmp bh, 004h ; 80 ff 04 ; 0xf7438 logo.c:301
+ jnc short 07457h ; 73 1a ; 0xf743b
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf743d
+ jne short 07457h ; 75 14 ; 0xf7441
+ mov ax, 00a3ah ; b8 3a 0a ; 0xf7443 logo.c:303
+ push ax ; 50 ; 0xf7446
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7447
+ push ax ; 50 ; 0xf744a
+ call 0195ch ; e8 0e a5 ; 0xf744b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf744e
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7451 logo.c:304
+ jmp short 07470h ; eb 19 ; 0xf7455 logo.c:306
+ cmp bl, 004h ; 80 fb 04 ; 0xf7457
+ jc short 07470h ; 72 14 ; 0xf745a
+ test ch, ch ; 84 ed ; 0xf745c
+ jne short 07470h ; 75 10 ; 0xf745e
+ mov ax, 00a4ch ; b8 4c 0a ; 0xf7460 logo.c:308
+ push ax ; 50 ; 0xf7463
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7464
+ push ax ; 50 ; 0xf7467
+ call 0195ch ; e8 f1 a4 ; 0xf7468
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf746b
+ mov CH, strict byte 001h ; b5 01 ; 0xf746e logo.c:309
+ mov al, cl ; 88 c8 ; 0xf7470 logo.c:312
+ xor ah, ah ; 30 e4 ; 0xf7472
+ inc ax ; 40 ; 0xf7474
+ push ax ; 50 ; 0xf7475
+ mov ax, 00a60h ; b8 60 0a ; 0xf7476
+ push ax ; 50 ; 0xf7479
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf747a
+ push ax ; 50 ; 0xf747d
+ call 0195ch ; e8 db a4 ; 0xf747e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7481
+ cmp bl, 004h ; 80 fb 04 ; 0xf7484 logo.c:319
+ jc short 0748ch ; 72 03 ; 0xf7487
+ sub bl, 004h ; 80 eb 04 ; 0xf7489 logo.c:320
+ mov al, bl ; 88 d8 ; 0xf748c logo.c:322
+ xor ah, ah ; 30 e4 ; 0xf748e
+ cwd ; 99 ; 0xf7490
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf7491
+ sar ax, 1 ; d1 f8 ; 0xf7493
+ test ax, ax ; 85 c0 ; 0xf7495
+ je short 0749eh ; 74 05 ; 0xf7497
+ mov ax, 00a6ah ; b8 6a 0a ; 0xf7499 logo.c:323
+ jmp short 074a1h ; eb 03 ; 0xf749c logo.c:324
+ mov ax, 00a75h ; b8 75 0a ; 0xf749e logo.c:325
+ push ax ; 50 ; 0xf74a1
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf74a2
+ push ax ; 50 ; 0xf74a5
+ call 0195ch ; e8 b3 a4 ; 0xf74a6
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf74a9
+ mov al, bl ; 88 d8 ; 0xf74ac logo.c:327
+ xor ah, ah ; 30 e4 ; 0xf74ae
+ cwd ; 99 ; 0xf74b0
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf74b1
+ idiv bx ; f7 fb ; 0xf74b4
+ test dx, dx ; 85 d2 ; 0xf74b6
+ je short 074bfh ; 74 05 ; 0xf74b8
+ mov ax, 00a7eh ; b8 7e 0a ; 0xf74ba logo.c:328
+ jmp short 074c2h ; eb 03 ; 0xf74bd logo.c:329
+ mov ax, 00a84h ; b8 84 0a ; 0xf74bf logo.c:330
+ push ax ; 50 ; 0xf74c2
+ push bx ; 53 ; 0xf74c3
+ call 0195ch ; e8 95 a4 ; 0xf74c4
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf74c7
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf74ca logo.c:332
+ jmp near 073d2h ; e9 03 ff ; 0xf74cc
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf74cf logo.c:334
+ jne short 074edh ; 75 18 ; 0xf74d3
+ test ch, ch ; 84 ed ; 0xf74d5
+ jne short 074edh ; 75 14 ; 0xf74d7
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf74d9
+ jne short 074edh ; 75 0e ; 0xf74dd
+ mov ax, 00a8bh ; b8 8b 0a ; 0xf74df logo.c:337
+ push ax ; 50 ; 0xf74e2
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf74e3
+ push ax ; 50 ; 0xf74e6
+ call 0195ch ; e8 72 a4 ; 0xf74e7
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf74ea
+ mov ax, 00a9fh ; b8 9f 0a ; 0xf74ed logo.c:339
+ push ax ; 50 ; 0xf74f0
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf74f1
+ push ax ; 50 ; 0xf74f4
+ call 0195ch ; e8 64 a4 ; 0xf74f5
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf74f8
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf74fb logo.c:340
+ pop si ; 5e ; 0xf74fe
+ pop dx ; 5a ; 0xf74ff
+ pop cx ; 59 ; 0xf7500
+ pop bx ; 5b ; 0xf7501
+ pop bp ; 5d ; 0xf7502
+ retn ; c3 ; 0xf7503
+ ; disGetNextSymbol 0xf7504 LB 0x39e4 -> off=0x0 cb=0000000000000024 uValue=00000000000f5f04 'get_boot_drive'
+get_boot_drive: ; 0xf7504 LB 0x24
+ push bx ; 53 ; 0xf7504 logo.c:342
+ push dx ; 52 ; 0xf7505
+ push bp ; 55 ; 0xf7506
+ mov bp, sp ; 89 e5 ; 0xf7507
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7509 logo.c:58
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf750c
+ mov es, dx ; 8e c2 ; 0xf750f
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7511
+ mov bx, 002ach ; bb ac 02 ; 0xf7514 logo.c:48
+ mov es, dx ; 8e c2 ; 0xf7517
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf7519
+ sub AL, strict byte 002h ; 2c 02 ; 0xf751c logo.c:350
+ cmp al, dl ; 38 d0 ; 0xf751e logo.c:352
+ jc short 07524h ; 72 02 ; 0xf7520
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf7522 logo.c:353
+ pop bp ; 5d ; 0xf7524 logo.c:357
+ pop dx ; 5a ; 0xf7525
+ pop bx ; 5b ; 0xf7526
+ retn ; c3 ; 0xf7527
+ ; disGetNextSymbol 0xf7528 LB 0x39c0 -> off=0x0 cb=000000000000025c uValue=00000000000f5f28 'show_logo'
+show_logo: ; 0xf7528 LB 0x25c
+ push bp ; 55 ; 0xf7528 logo.c:359
+ mov bp, sp ; 89 e5 ; 0xf7529
+ push bx ; 53 ; 0xf752b
+ push cx ; 51 ; 0xf752c
+ push dx ; 52 ; 0xf752d
+ push si ; 56 ; 0xf752e
+ push di ; 57 ; 0xf752f
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf7530
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7533 logo.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7536
+ mov es, ax ; 8e c0 ; 0xf7539
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf753b
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf753e logo.c:362
+ xor cx, cx ; 31 c9 ; 0xf7542 logo.c:366
+ mov AL, strict byte 034h ; b0 34 ; 0xf7544 logo.c:373
+ out strict byte 043h, AL ; e6 43 ; 0xf7546
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7548
+ out strict byte 040h, AL ; e6 40 ; 0xf754a
+ mov AL, strict byte 048h ; b0 48 ; 0xf754c
+ out strict byte 040h, AL ; e6 40 ; 0xf754e
+ mov al, cl ; 88 c8 ; 0xf7550 logo.c:376
+ xor ah, ah ; 30 e4 ; 0xf7552
+ call 07391h ; e8 3a fe ; 0xf7554
+ cmp ax, 066bbh ; 3d bb 66 ; 0xf7557 logo.c:377
+ jne short 0756eh ; 75 12 ; 0xf755a
+ push SS ; 16 ; 0xf755c logo.c:381
+ pop ES ; 07 ; 0xf755d
+ lea di, [bp-018h] ; 8d 7e e8 ; 0xf755e
+ mov ax, 04f03h ; b8 03 4f ; 0xf7561
+ int 010h ; cd 10 ; 0xf7564
+ mov word [es:di], bx ; 26 89 1d ; 0xf7566
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7569
+ je short 07571h ; 74 03 ; 0xf756c
+ jmp near 0765ah ; e9 e9 00 ; 0xf756e logo.c:382
+ mov al, cl ; 88 c8 ; 0xf7571 logo.c:385
+ add AL, strict byte 004h ; 04 04 ; 0xf7573
+ xor ah, ah ; 30 e4 ; 0xf7575
+ call 0737bh ; e8 01 fe ; 0xf7577
+ mov dl, al ; 88 c2 ; 0xf757a
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf757c
+ mov al, cl ; 88 c8 ; 0xf757f logo.c:386
+ add AL, strict byte 005h ; 04 05 ; 0xf7581
+ xor ah, ah ; 30 e4 ; 0xf7583
+ call 0737bh ; e8 f3 fd ; 0xf7585
+ mov ch, al ; 88 c5 ; 0xf7588
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf758a
+ mov al, cl ; 88 c8 ; 0xf758d logo.c:387
+ add AL, strict byte 002h ; 04 02 ; 0xf758f
+ xor ah, ah ; 30 e4 ; 0xf7591
+ call 07391h ; e8 fb fd ; 0xf7593
+ mov bx, ax ; 89 c3 ; 0xf7596
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf7598
+ mov al, cl ; 88 c8 ; 0xf759b logo.c:388
+ add AL, strict byte 006h ; 04 06 ; 0xf759d
+ xor ah, ah ; 30 e4 ; 0xf759f
+ call 0737bh ; e8 d7 fd ; 0xf75a1
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf75a4
+ test dl, dl ; 84 d2 ; 0xf75a7 logo.c:391
+ jne short 075b3h ; 75 08 ; 0xf75a9
+ test ch, ch ; 84 ed ; 0xf75ab
+ jne short 075b3h ; 75 04 ; 0xf75ad
+ test bx, bx ; 85 db ; 0xf75af
+ je short 0756eh ; 74 bb ; 0xf75b1
+ mov BH, strict byte 020h ; b7 20 ; 0xf75b3 logo.c:395
+ mov dx, 001e0h ; ba e0 01 ; 0xf75b5
+ mov cx, 00280h ; b9 80 02 ; 0xf75b8
+ mov ax, 05642h ; b8 42 56 ; 0xf75bb
+ mov BL, strict byte 000h ; b3 00 ; 0xf75be
+ int 010h ; cd 10 ; 0xf75c0
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf75c2 logo.c:397
+ je short 075cfh ; 74 08 ; 0xf75c5
+ mov bx, 00142h ; bb 42 01 ; 0xf75c7 logo.c:398
+ mov ax, 04f02h ; b8 02 4f ; 0xf75ca
+ int 010h ; cd 10 ; 0xf75cd
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf75cf logo.c:400
+ je short 075fah ; 74 25 ; 0xf75d3
+ xor cx, cx ; 31 c9 ; 0xf75d5 logo.c:402
+ jmp short 075dfh ; eb 06 ; 0xf75d7
+ inc cx ; 41 ; 0xf75d9 logo.c:404
+ cmp cx, strict byte 00010h ; 83 f9 10 ; 0xf75da
+ jnbe short 07601h ; 77 22 ; 0xf75dd
+ mov ax, cx ; 89 c8 ; 0xf75df
+ or ah, 002h ; 80 cc 02 ; 0xf75e1
+ mov dx, 003b8h ; ba b8 03 ; 0xf75e4
+ out DX, ax ; ef ; 0xf75e7
+ xor dx, dx ; 31 d2 ; 0xf75e8
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf75ea
+ call 072b3h ; e8 c3 fc ; 0xf75ed
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf75f0
+ jne short 075d9h ; 75 e5 ; 0xf75f2
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf75f4
+ jmp short 07601h ; eb 07 ; 0xf75f8
+ mov ax, 00210h ; b8 10 02 ; 0xf75fa logo.c:414
+ mov dx, 003b8h ; ba b8 03 ; 0xf75fd
+ out DX, ax ; ef ; 0xf7600
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7601 logo.c:417
+ jne short 0761ch ; 75 15 ; 0xf7605
+ mov CL, strict byte 004h ; b1 04 ; 0xf7607 logo.c:419
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7609
+ shr ax, CL ; d3 e8 ; 0xf760c
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf760e
+ call 072b3h ; e8 9f fc ; 0xf7611
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7614 logo.c:420
+ jne short 0761ch ; 75 04 ; 0xf7616
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7618 logo.c:421
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf761c logo.c:425
+ je short 0764dh ; 74 2b ; 0xf7620
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7622
+ jne short 0764dh ; 75 25 ; 0xf7626
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf7628 logo.c:427
+ jmp short 07632h ; eb 05 ; 0xf762b
+ dec cx ; 49 ; 0xf762d logo.c:429
+ test cx, cx ; 85 c9 ; 0xf762e
+ jbe short 0765ah ; 76 28 ; 0xf7630
+ mov ax, cx ; 89 c8 ; 0xf7632
+ or ah, 002h ; 80 cc 02 ; 0xf7634
+ mov dx, 003b8h ; ba b8 03 ; 0xf7637
+ out DX, ax ; ef ; 0xf763a
+ xor dx, dx ; 31 d2 ; 0xf763b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf763d
+ call 072b3h ; e8 70 fc ; 0xf7640
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7643
+ jne short 0762dh ; 75 e6 ; 0xf7645
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7647
+ jmp short 0765ah ; eb 0d ; 0xf764b
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf764d logo.c:438
+ jne short 0765ah ; 75 07 ; 0xf7651
+ mov ax, 00200h ; b8 00 02 ; 0xf7653 logo.c:439
+ mov dx, 003b8h ; ba b8 03 ; 0xf7656
+ out DX, ax ; ef ; 0xf7659
+ mov bx, 00331h ; bb 31 03 ; 0xf765a logo.c:53
+ mov es, si ; 8e c6 ; 0xf765d
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf765f
+ mov AL, strict byte 003h ; b0 03 ; 0xf7663 logo.c:447
+ mov AH, strict byte 000h ; b4 00 ; 0xf7665
+ int 010h ; cd 10 ; 0xf7667
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7669 logo.c:450
+ je short 07683h ; 74 14 ; 0xf766d
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf766f logo.c:453
+ jne short 076b1h ; 75 3c ; 0xf7673
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf7675
+ jne short 076b1h ; 75 36 ; 0xf7679
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf767b
+ je short 07686h ; 74 05 ; 0xf767f
+ jmp short 076b1h ; eb 2e ; 0xf7681
+ jmp near 07767h ; e9 e1 00 ; 0xf7683
+ cmp byte [bp-012h], 002h ; 80 7e ee 02 ; 0xf7686 logo.c:455
+ jne short 0769ah ; 75 0e ; 0xf768a
+ mov ax, 00aa1h ; b8 a1 0a ; 0xf768c logo.c:456
+ push ax ; 50 ; 0xf768f
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7690
+ push ax ; 50 ; 0xf7693
+ call 0195ch ; e8 c5 a2 ; 0xf7694
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7697
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf769a logo.c:459
+ jne short 076b1h ; 75 11 ; 0xf769e
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf76a0 logo.c:462
+ mov ax, 000c0h ; b8 c0 00 ; 0xf76a3
+ call 072b3h ; e8 0a fc ; 0xf76a6
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf76a9 logo.c:463
+ jne short 076b1h ; 75 04 ; 0xf76ab
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf76ad logo.c:464
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf76b1 logo.c:469
+ je short 07683h ; 74 cc ; 0xf76b5
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf76b7 logo.c:471
+ mov ax, 00100h ; b8 00 01 ; 0xf76bb logo.c:474
+ mov cx, 01000h ; b9 00 10 ; 0xf76be
+ int 010h ; cd 10 ; 0xf76c1
+ mov ax, 00700h ; b8 00 07 ; 0xf76c3
+ mov BH, strict byte 007h ; b7 07 ; 0xf76c6
+ db 033h, 0c9h
+ ; xor cx, cx ; 33 c9 ; 0xf76c8
+ mov dx, 0184fh ; ba 4f 18 ; 0xf76ca
+ int 010h ; cd 10 ; 0xf76cd
+ mov ax, 00200h ; b8 00 02 ; 0xf76cf
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf76d2
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf76d4
+ int 010h ; cd 10 ; 0xf76d6
+ mov ax, 00ac3h ; b8 c3 0a ; 0xf76d8 logo.c:477
+ push ax ; 50 ; 0xf76db
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf76dc
+ push ax ; 50 ; 0xf76df
+ call 0195ch ; e8 79 a2 ; 0xf76e0
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf76e3
+ call 073a5h ; e8 bc fc ; 0xf76e6 logo.c:478
+ mov ax, 00b07h ; b8 07 0b ; 0xf76e9 logo.c:479
+ push ax ; 50 ; 0xf76ec
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf76ed
+ push ax ; 50 ; 0xf76f0
+ call 0195ch ; e8 68 a2 ; 0xf76f1
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf76f4
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf76f7 logo.c:488
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf76fa
+ call 072b3h ; e8 b3 fb ; 0xf76fd
+ mov cl, al ; 88 c1 ; 0xf7700
+ test al, al ; 84 c0 ; 0xf7702 logo.c:489
+ je short 076f7h ; 74 f1 ; 0xf7704
+ cmp AL, strict byte 030h ; 3c 30 ; 0xf7706 logo.c:491
+ je short 07756h ; 74 4c ; 0xf7708
+ cmp cl, 002h ; 80 f9 02 ; 0xf770a logo.c:498
+ jc short 0772fh ; 72 20 ; 0xf770d
+ cmp cl, 009h ; 80 f9 09 ; 0xf770f
+ jnbe short 0772fh ; 77 1b ; 0xf7712
+ mov al, cl ; 88 c8 ; 0xf7714 logo.c:500
+ xor ah, ah ; 30 e4 ; 0xf7716
+ call 07504h ; e8 e9 fd ; 0xf7718
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf771b logo.c:507
+ jne short 07721h ; 75 02 ; 0xf771d
+ jmp short 076f7h ; eb d6 ; 0xf771f logo.c:508
+ mov bx, 00330h ; bb 30 03 ; 0xf7721 logo.c:53
+ mov es, si ; 8e c6 ; 0xf7724
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7726
+ mov byte [bp-00eh], 002h ; c6 46 f2 02 ; 0xf7729 logo.c:511
+ jmp short 07756h ; eb 27 ; 0xf772d logo.c:512
+ cmp cl, 02eh ; 80 f9 2e ; 0xf772f logo.c:515
+ je short 07744h ; 74 10 ; 0xf7732
+ cmp cl, 026h ; 80 f9 26 ; 0xf7734
+ je short 0774ah ; 74 11 ; 0xf7737
+ cmp cl, 021h ; 80 f9 21 ; 0xf7739
+ jne short 07750h ; 75 12 ; 0xf773c
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf773e logo.c:519
+ jmp short 07756h ; eb 12 ; 0xf7742 logo.c:520
+ mov byte [bp-00eh], 003h ; c6 46 f2 03 ; 0xf7744 logo.c:523
+ jmp short 07756h ; eb 0c ; 0xf7748 logo.c:524
+ mov byte [bp-00eh], 004h ; c6 46 f2 04 ; 0xf774a logo.c:527
+ jmp short 07756h ; eb 06 ; 0xf774e logo.c:528
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7750 logo.c:531
+ je short 076f7h ; 74 a1 ; 0xf7754
+ mov bx, 00331h ; bb 31 03 ; 0xf7756 logo.c:53
+ mov es, si ; 8e c6 ; 0xf7759
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf775b
+ mov byte [es:bx], al ; 26 88 07 ; 0xf775e
+ mov AL, strict byte 003h ; b0 03 ; 0xf7761 logo.c:538
+ mov AH, strict byte 000h ; b4 00 ; 0xf7763
+ int 010h ; cd 10 ; 0xf7765
+ mov AL, strict byte 034h ; b0 34 ; 0xf7767 logo.c:543
+ out strict byte 043h, AL ; e6 43 ; 0xf7769
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf776b
+ out strict byte 040h, AL ; e6 40 ; 0xf776d
+ out strict byte 040h, AL ; e6 40 ; 0xf776f
+ push bp ; 55 ; 0xf7771
+ push DS ; 1e ; 0xf7772
+ mov ds, ax ; 8e d8 ; 0xf7773
+ call 0ede3h ; e8 6b 76 ; 0xf7775
+ pop DS ; 1f ; 0xf7778
+ pop bp ; 5d ; 0xf7779
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf777a logo.c:546
+ pop di ; 5f ; 0xf777d
+ pop si ; 5e ; 0xf777e
+ pop dx ; 5a ; 0xf777f
+ pop cx ; 59 ; 0xf7780
+ pop bx ; 5b ; 0xf7781
+ pop bp ; 5d ; 0xf7782
+ retn ; c3 ; 0xf7783
+ ; disGetNextSymbol 0xf7784 LB 0x3764 -> off=0x0 cb=0000000000000072 uValue=00000000000f6184 'delay_boot'
+delay_boot: ; 0xf7784 LB 0x72
+ push bp ; 55 ; 0xf7784 logo.c:549
+ mov bp, sp ; 89 e5 ; 0xf7785
+ push bx ; 53 ; 0xf7787
+ push cx ; 51 ; 0xf7788
+ push dx ; 52 ; 0xf7789
+ push si ; 56 ; 0xf778a
+ push di ; 57 ; 0xf778b
+ mov bx, ax ; 89 c3 ; 0xf778c
+ test ax, ax ; 85 c0 ; 0xf778e logo.c:553
+ je short 077ech ; 74 5a ; 0xf7790
+ mov AL, strict byte 034h ; b0 34 ; 0xf7792 logo.c:557
+ out strict byte 043h, AL ; e6 43 ; 0xf7794
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7796
+ out strict byte 040h, AL ; e6 40 ; 0xf7798
+ mov AL, strict byte 048h ; b0 48 ; 0xf779a
+ out strict byte 040h, AL ; e6 40 ; 0xf779c
+ push bx ; 53 ; 0xf779e logo.c:559
+ mov ax, 00b51h ; b8 51 0b ; 0xf779f
+ push ax ; 50 ; 0xf77a2
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf77a3
+ push ax ; 50 ; 0xf77a6
+ call 0195ch ; e8 b2 a1 ; 0xf77a7
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf77aa
+ test bx, bx ; 85 db ; 0xf77ad logo.c:560
+ jbe short 077cbh ; 76 1a ; 0xf77af
+ push bx ; 53 ; 0xf77b1 logo.c:562
+ mov ax, 00b6fh ; b8 6f 0b ; 0xf77b2
+ push ax ; 50 ; 0xf77b5
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf77b6
+ push ax ; 50 ; 0xf77b9
+ call 0195ch ; e8 9f a1 ; 0xf77ba
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf77bd
+ xor dx, dx ; 31 d2 ; 0xf77c0 logo.c:563
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf77c2
+ call 072b3h ; e8 eb fa ; 0xf77c5
+ dec bx ; 4b ; 0xf77c8 logo.c:564
+ jmp short 077adh ; eb e2 ; 0xf77c9
+ mov bx, 00a9fh ; bb 9f 0a ; 0xf77cb logo.c:565
+ push bx ; 53 ; 0xf77ce
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf77cf
+ push bx ; 53 ; 0xf77d2
+ call 0195ch ; e8 86 a1 ; 0xf77d3
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf77d6
+ mov AL, strict byte 034h ; b0 34 ; 0xf77d9 logo.c:567
+ out strict byte 043h, AL ; e6 43 ; 0xf77db
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf77dd
+ out strict byte 040h, AL ; e6 40 ; 0xf77df
+ out strict byte 040h, AL ; e6 40 ; 0xf77e1
+ push bp ; 55 ; 0xf77e3
+ push DS ; 1e ; 0xf77e4
+ mov ds, ax ; 8e d8 ; 0xf77e5
+ call 0ede3h ; e8 f9 75 ; 0xf77e7
+ pop DS ; 1f ; 0xf77ea
+ pop bp ; 5d ; 0xf77eb
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf77ec logo.c:568
+ pop di ; 5f ; 0xf77ef
+ pop si ; 5e ; 0xf77f0
+ pop dx ; 5a ; 0xf77f1
+ pop cx ; 59 ; 0xf77f2
+ pop bx ; 5b ; 0xf77f3
+ pop bp ; 5d ; 0xf77f4
+ retn ; c3 ; 0xf77f5
+ ; disGetNextSymbol 0xf77f6 LB 0x36f2 -> off=0x0 cb=000000000000003a uValue=00000000000f61f6 'scsi_hba_mem_alloc'
+scsi_hba_mem_alloc: ; 0xf77f6 LB 0x3a
+ push bx ; 53 ; 0xf77f6 scsi.c:108
+ push cx ; 51 ; 0xf77f7
+ push dx ; 52 ; 0xf77f8
+ push di ; 57 ; 0xf77f9
+ push bp ; 55 ; 0xf77fa
+ mov bp, sp ; 89 e5 ; 0xf77fb
+ mov di, 00413h ; bf 13 04 ; 0xf77fd scsi.c:58
+ xor ax, ax ; 31 c0 ; 0xf7800
+ mov es, ax ; 8e c0 ; 0xf7802
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf7804
+ test ax, ax ; 85 c0 ; 0xf7807 scsi.c:117
+ je short 0782ah ; 74 1f ; 0xf7809
+ dec ax ; 48 ; 0xf780b scsi.c:118
+ mov bx, ax ; 89 c3 ; 0xf780c
+ xor dx, dx ; 31 d2 ; 0xf780e scsi.c:121
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf7810
+ sal ax, 1 ; d1 e0 ; 0xf7813
+ rcl dx, 1 ; d1 d2 ; 0xf7815
+ loop 07813h ; e2 fa ; 0xf7817
+ mov di, dx ; 89 d7 ; 0xf7819
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf781b
+ shr di, 1 ; d1 ef ; 0xf781e
+ rcr ax, 1 ; d1 d8 ; 0xf7820
+ loop 0781eh ; e2 fa ; 0xf7822
+ mov di, 00413h ; bf 13 04 ; 0xf7824 scsi.c:63
+ mov word [es:di], bx ; 26 89 1d ; 0xf7827
+ pop bp ; 5d ; 0xf782a scsi.c:126
+ pop di ; 5f ; 0xf782b
+ pop dx ; 5a ; 0xf782c
+ pop cx ; 59 ; 0xf782d
+ pop bx ; 5b ; 0xf782e
+ retn ; c3 ; 0xf782f
+ ; disGetNextSymbol 0xf7830 LB 0x36b8 -> off=0x0 cb=0000000000000119 uValue=00000000000f6230 'scsi_read_sectors'
+scsi_read_sectors: ; 0xf7830 LB 0x119
+ push bp ; 55 ; 0xf7830 scsi.c:135
+ mov bp, sp ; 89 e5 ; 0xf7831
+ push si ; 56 ; 0xf7833
+ push di ; 57 ; 0xf7834
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf7835
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7838
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf783b scsi.c:146
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf783e
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7842
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7844
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7847 scsi.c:147
+ jbe short 07860h ; 76 15 ; 0xf7849
+ xor ah, ah ; 30 e4 ; 0xf784b scsi.c:148
+ push ax ; 50 ; 0xf784d
+ mov ax, 00b74h ; b8 74 0b ; 0xf784e
+ push ax ; 50 ; 0xf7851
+ mov ax, 00b86h ; b8 86 0b ; 0xf7852
+ push ax ; 50 ; 0xf7855
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7856
+ push ax ; 50 ; 0xf7859
+ call 0195ch ; e8 ff a0 ; 0xf785a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf785d
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7860 scsi.c:150
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf7863
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf7867
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf786a scsi.c:85
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf786e
+ mov word [bp-020h], 00088h ; c7 46 e0 88 00 ; 0xf7871 scsi.c:155
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7876 scsi.c:156
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7879
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf787d
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7881
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7885
+ xchg ah, al ; 86 c4 ; 0xf7888
+ xchg bh, bl ; 86 df ; 0xf788a
+ xchg ch, cl ; 86 cd ; 0xf788c
+ xchg dh, dl ; 86 d6 ; 0xf788e
+ xchg dx, ax ; 92 ; 0xf7890
+ xchg bx, cx ; 87 cb ; 0xf7891
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf7893
+ mov word [bp-01ah], bx ; 89 5e e6 ; 0xf7896
+ mov word [bp-01ch], cx ; 89 4e e4 ; 0xf7899
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf789c
+ mov byte [bp-012h], 000h ; c6 46 ee 00 ; 0xf789f scsi.c:157
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf78a3 scsi.c:158
+ xor dx, dx ; 31 d2 ; 0xf78a6
+ xchg ah, al ; 86 c4 ; 0xf78a8
+ xchg dh, dl ; 86 d6 ; 0xf78aa
+ xchg dx, ax ; 92 ; 0xf78ac
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf78ad
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf78b0
+ mov byte [bp-011h], 000h ; c6 46 ef 00 ; 0xf78b3 scsi.c:159
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf78b7 scsi.c:162
+ xor ah, ah ; 30 e4 ; 0xf78ba
+ sal ax, 1 ; d1 e0 ; 0xf78bc
+ sal ax, 1 ; d1 e0 ; 0xf78be
+ mov bx, si ; 89 f3 ; 0xf78c0
+ add bx, ax ; 01 c3 ; 0xf78c2
+ mov ax, word [es:bx+00290h] ; 26 8b 87 90 02 ; 0xf78c4
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf78c9
+ mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf78cc scsi.c:163
+ mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf78d1 scsi.c:164
+ xor ah, ah ; 30 e4 ; 0xf78d6 scsi.c:169
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf78d8
+ imul dx ; f7 ea ; 0xf78db
+ mov di, ax ; 89 c7 ; 0xf78dd
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf78df
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf78e2
+ mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xf78e5
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf78ea
+ sal word [bp-010h], 1 ; d1 66 f0 ; 0xf78ed
+ rcl word [bp-00eh], 1 ; d1 56 f2 ; 0xf78f0
+ loop 078edh ; e2 f8 ; 0xf78f3
+ push word [bp-00eh] ; ff 76 f2 ; 0xf78f5
+ push word [bp-010h] ; ff 76 f0 ; 0xf78f8
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf78fb
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf78ff
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf7903
+ push ax ; 50 ; 0xf7906
+ lea dx, [bp-020h] ; 8d 56 e0 ; 0xf7907
+ push SS ; 16 ; 0xf790a
+ push dx ; 52 ; 0xf790b
+ xor bh, bh ; 30 ff ; 0xf790c
+ xor ax, ax ; 31 c0 ; 0xf790e
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf7910
+ call word [di+000a4h] ; ff 95 a4 00 ; 0xf7913
+ mov dl, al ; 88 c2 ; 0xf7917
+ test al, al ; 84 c0 ; 0xf7919 scsi.c:171
+ jne short 07935h ; 75 18 ; 0xf791b
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf791d scsi.c:173
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7920
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf7923
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf7927 scsi.c:174
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf792a
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf792e
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7931
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf7935 scsi.c:88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf7938 scsi.c:90
+ mov al, dl ; 88 d0 ; 0xf793c scsi.c:179
+ xor ah, ah ; 30 e4 ; 0xf793e
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7940 scsi.c:180
+ pop di ; 5f ; 0xf7943
+ pop si ; 5e ; 0xf7944
+ pop bp ; 5d ; 0xf7945
+ retn 00004h ; c2 04 00 ; 0xf7946
+ ; disGetNextSymbol 0xf7949 LB 0x359f -> off=0x0 cb=0000000000000119 uValue=00000000000f6349 'scsi_write_sectors'
+scsi_write_sectors: ; 0xf7949 LB 0x119
+ push bp ; 55 ; 0xf7949 scsi.c:189
+ mov bp, sp ; 89 e5 ; 0xf794a
+ push si ; 56 ; 0xf794c
+ push di ; 57 ; 0xf794d
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf794e
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7951
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7954 scsi.c:200
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7957
+ sub AL, strict byte 008h ; 2c 08 ; 0xf795b
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf795d
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7960 scsi.c:201
+ jbe short 07979h ; 76 15 ; 0xf7962
+ xor ah, ah ; 30 e4 ; 0xf7964 scsi.c:202
+ push ax ; 50 ; 0xf7966
+ mov ax, 00ba5h ; b8 a5 0b ; 0xf7967
+ push ax ; 50 ; 0xf796a
+ mov ax, 00b86h ; b8 86 0b ; 0xf796b
+ push ax ; 50 ; 0xf796e
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf796f
+ push ax ; 50 ; 0xf7972
+ call 0195ch ; e8 e6 9f ; 0xf7973
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7976
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7979 scsi.c:204
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf797c
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf7980
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf7983 scsi.c:85
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf7987
+ mov word [bp-020h], 0008ah ; c7 46 e0 8a 00 ; 0xf798a scsi.c:209
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf798f scsi.c:210
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7992
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7996
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf799a
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf799e
+ xchg ah, al ; 86 c4 ; 0xf79a1
+ xchg bh, bl ; 86 df ; 0xf79a3
+ xchg ch, cl ; 86 cd ; 0xf79a5
+ xchg dh, dl ; 86 d6 ; 0xf79a7
+ xchg dx, ax ; 92 ; 0xf79a9
+ xchg bx, cx ; 87 cb ; 0xf79aa
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf79ac
+ mov word [bp-01ah], bx ; 89 5e e6 ; 0xf79af
+ mov word [bp-01ch], cx ; 89 4e e4 ; 0xf79b2
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf79b5
+ mov byte [bp-012h], 000h ; c6 46 ee 00 ; 0xf79b8 scsi.c:211
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf79bc scsi.c:212
+ xor dx, dx ; 31 d2 ; 0xf79bf
+ xchg ah, al ; 86 c4 ; 0xf79c1
+ xchg dh, dl ; 86 d6 ; 0xf79c3
+ xchg dx, ax ; 92 ; 0xf79c5
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf79c6
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf79c9
+ mov byte [bp-011h], 000h ; c6 46 ef 00 ; 0xf79cc scsi.c:213
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf79d0 scsi.c:215
+ xor ah, ah ; 30 e4 ; 0xf79d3
+ sal ax, 1 ; d1 e0 ; 0xf79d5
+ sal ax, 1 ; d1 e0 ; 0xf79d7
+ mov bx, si ; 89 f3 ; 0xf79d9
+ add bx, ax ; 01 c3 ; 0xf79db
+ mov ax, word [es:bx+00290h] ; 26 8b 87 90 02 ; 0xf79dd
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf79e2
+ mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf79e5 scsi.c:216
+ mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf79ea scsi.c:217
+ xor ah, ah ; 30 e4 ; 0xf79ef scsi.c:222
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf79f1
+ imul dx ; f7 ea ; 0xf79f4
+ mov di, ax ; 89 c7 ; 0xf79f6
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf79f8
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf79fb
+ mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xf79fe
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7a03
+ sal word [bp-010h], 1 ; d1 66 f0 ; 0xf7a06
+ rcl word [bp-00eh], 1 ; d1 56 f2 ; 0xf7a09
+ loop 07a06h ; e2 f8 ; 0xf7a0c
+ push word [bp-00eh] ; ff 76 f2 ; 0xf7a0e
+ push word [bp-010h] ; ff 76 f0 ; 0xf7a11
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7a14
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7a18
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf7a1c
+ push ax ; 50 ; 0xf7a1f
+ lea dx, [bp-020h] ; 8d 56 e0 ; 0xf7a20
+ push SS ; 16 ; 0xf7a23
+ push dx ; 52 ; 0xf7a24
+ xor bh, bh ; 30 ff ; 0xf7a25
+ xor ax, ax ; 31 c0 ; 0xf7a27
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf7a29
+ call word [di+000a2h] ; ff 95 a2 00 ; 0xf7a2c
+ mov dl, al ; 88 c2 ; 0xf7a30
+ test al, al ; 84 c0 ; 0xf7a32 scsi.c:224
+ jne short 07a4eh ; 75 18 ; 0xf7a34
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7a36 scsi.c:226
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7a39
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf7a3c
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf7a40 scsi.c:227
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7a43
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7a47
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7a4a
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf7a4e scsi.c:88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf7a51 scsi.c:90
+ mov al, dl ; 88 d0 ; 0xf7a55 scsi.c:232
+ xor ah, ah ; 30 e4 ; 0xf7a57
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7a59 scsi.c:233
+ pop di ; 5f ; 0xf7a5c
+ pop si ; 5e ; 0xf7a5d
+ pop bp ; 5d ; 0xf7a5e
+ retn 00004h ; c2 04 00 ; 0xf7a5f
+ ; disGetNextSymbol 0xf7a62 LB 0x3486 -> off=0x0 cb=000000000000011c uValue=00000000000f6462 'scsi_cmd_packet'
+scsi_cmd_packet: ; 0xf7a62 LB 0x11c
+ push bp ; 55 ; 0xf7a62 scsi.c:252
+ mov bp, sp ; 89 e5 ; 0xf7a63
+ push si ; 56 ; 0xf7a65
+ push di ; 57 ; 0xf7a66
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf7a67
+ mov di, ax ; 89 c7 ; 0xf7a6a
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf7a6c
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf7a6f
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf7a72
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7a75 scsi.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7a78
+ mov es, ax ; 8e c0 ; 0xf7a7b
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7a7d
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf7a80 scsi.c:59
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7a83
+ cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf7a86 scsi.c:263
+ jne short 07aafh ; 75 23 ; 0xf7a8a
+ mov bx, 00ddch ; bb dc 0d ; 0xf7a8c scsi.c:264
+ mov cx, ds ; 8c d9 ; 0xf7a8f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7a91
+ call 01919h ; e8 82 9e ; 0xf7a94
+ mov ax, 00bb8h ; b8 b8 0b ; 0xf7a97
+ push ax ; 50 ; 0xf7a9a
+ mov ax, 00bc8h ; b8 c8 0b ; 0xf7a9b
+ push ax ; 50 ; 0xf7a9e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7a9f
+ push ax ; 50 ; 0xf7aa2
+ call 0195ch ; e8 b6 9e ; 0xf7aa3
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7aa6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7aa9 scsi.c:265
+ jmp near 07b75h ; e9 c6 00 ; 0xf7aac
+ sub di, strict byte 00008h ; 83 ef 08 ; 0xf7aaf scsi.c:269
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf7ab2 scsi.c:85
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf7ab6
+ mov bx, di ; 89 fb ; 0xf7ab9 scsi.c:277
+ sal bx, 1 ; d1 e3 ; 0xf7abb
+ sal bx, 1 ; d1 e3 ; 0xf7abd
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7abf
+ add bx, si ; 01 f3 ; 0xf7ac2
+ mov ax, word [es:bx+00290h] ; 26 8b 87 90 02 ; 0xf7ac4
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7ac9
+ mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7acc scsi.c:278
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7ad1
+ mov al, byte [es:bx+00293h] ; 26 8a 87 93 02 ; 0xf7ad4 scsi.c:279
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf7ad9
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7adc scsi.c:281
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7adf
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7ae2
+ sal ax, 1 ; d1 e0 ; 0xf7ae5
+ rcl dx, 1 ; d1 d2 ; 0xf7ae7
+ loop 07ae5h ; e2 fa ; 0xf7ae9
+ mov word [es:si], ax ; 26 89 04 ; 0xf7aeb
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf7aee
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf7af2
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf7af8
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf7afe scsi.c:282
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf7b01
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf7b05
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf7b08
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf7b0c scsi.c:283
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7b10
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7b13
+ xor cx, cx ; 31 c9 ; 0xf7b16
+ call 0ab70h ; e8 55 30 ; 0xf7b18
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf7b1b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7b1f scsi.c:288
+ xor ah, ah ; 30 e4 ; 0xf7b22
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf7b24
+ imul dx ; f7 ea ; 0xf7b27
+ mov di, ax ; 89 c7 ; 0xf7b29
+ push word [bp+006h] ; ff 76 06 ; 0xf7b2b
+ push word [bp+004h] ; ff 76 04 ; 0xf7b2e
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7b31
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7b35
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7b39
+ xor ah, ah ; 30 e4 ; 0xf7b3c
+ push ax ; 50 ; 0xf7b3e
+ push word [bp-00ch] ; ff 76 f4 ; 0xf7b3f
+ push word [bp-00eh] ; ff 76 f2 ; 0xf7b42
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf7b45
+ xor bh, bh ; 30 ff ; 0xf7b48
+ xor al, al ; 30 c0 ; 0xf7b4a
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf7b4c
+ call word [di+000a4h] ; ff 95 a4 00 ; 0xf7b4f
+ mov dl, al ; 88 c2 ; 0xf7b53
+ test al, al ; 84 c0 ; 0xf7b55 scsi.c:290
+ jne short 07b6ah ; 75 11 ; 0xf7b57
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7b59 scsi.c:291
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7b5c
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7b5f
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7b63
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7b66
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7b6a scsi.c:88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf7b6d scsi.c:90
+ mov al, dl ; 88 d0 ; 0xf7b71 scsi.c:296
+ xor ah, ah ; 30 e4 ; 0xf7b73
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7b75 scsi.c:297
+ pop di ; 5f ; 0xf7b78
+ pop si ; 5e ; 0xf7b79
+ pop bp ; 5d ; 0xf7b7a
+ retn 0000ah ; c2 0a 00 ; 0xf7b7b
+ ; disGetNextSymbol 0xf7b7e LB 0x336a -> off=0x0 cb=00000000000004d8 uValue=00000000000f657e 'scsi_enumerate_attached_devices'
+scsi_enumerate_attached_devices: ; 0xf7b7e LB 0x4d8
+ push bp ; 55 ; 0xf7b7e scsi.c:305
+ mov bp, sp ; 89 e5 ; 0xf7b7f
+ push bx ; 53 ; 0xf7b81
+ push cx ; 51 ; 0xf7b82
+ push si ; 56 ; 0xf7b83
+ push di ; 57 ; 0xf7b84
+ sub sp, 00240h ; 81 ec 40 02 ; 0xf7b85
+ push ax ; 50 ; 0xf7b89
+ mov byte [bp-00eh], dl ; 88 56 f2 ; 0xf7b8a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7b8d scsi.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7b90
+ mov es, ax ; 8e c0 ; 0xf7b93
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7b95
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf7b98 scsi.c:59
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7b9b
+ mov word [bp-01ah], strict word 00000h ; c7 46 e6 00 00 ; 0xf7b9e scsi.c:314
+ jmp near 07ffdh ; e9 57 04 ; 0xf7ba3
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7ba6 scsi.c:320
+ mov al, byte [es:di+002a0h] ; 26 8a 85 a0 02 ; 0xf7ba9
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7bae
+ test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xf7bb1 scsi.c:337
+ jne short 07bbfh ; 75 07 ; 0xf7bb6
+ test byte [bp-00248h], 01fh ; f6 86 b8 fd 1f ; 0xf7bb8
+ je short 07bc2h ; 74 03 ; 0xf7bbd
+ jmp near 07f31h ; e9 6f 03 ; 0xf7bbf
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7bc2 scsi.c:343
+ jc short 07bc9h ; 72 03 ; 0xf7bc4
+ jmp near 0804dh ; e9 84 04 ; 0xf7bc6
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf7bc9 scsi.c:352
+ xor bx, bx ; 31 db ; 0xf7bcc
+ mov dx, ss ; 8c d2 ; 0xf7bce
+ lea ax, [bp-048h] ; 8d 46 b8 ; 0xf7bd0
+ call 0abc0h ; e8 ea 2f ; 0xf7bd3
+ mov byte [bp-048h], 09eh ; c6 46 b8 9e ; 0xf7bd6 scsi.c:353
+ mov byte [bp-047h], 010h ; c6 46 b9 10 ; 0xf7bda scsi.c:354
+ mov byte [bp-03bh], 020h ; c6 46 c5 20 ; 0xf7bde scsi.c:355
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7be2 scsi.c:357
+ xor ah, ah ; 30 e4 ; 0xf7be5
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf7be7
+ imul dx ; f7 ea ; 0xf7bea
+ mov si, ax ; 89 c6 ; 0xf7bec
+ xor ax, ax ; 31 c0 ; 0xf7bee
+ push ax ; 50 ; 0xf7bf0
+ mov ax, strict word 00020h ; b8 20 00 ; 0xf7bf1
+ push ax ; 50 ; 0xf7bf4
+ lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xf7bf5
+ push SS ; 16 ; 0xf7bf9
+ push dx ; 52 ; 0xf7bfa
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf7bfb
+ push ax ; 50 ; 0xf7bfe
+ lea dx, [bp-048h] ; 8d 56 b8 ; 0xf7bff
+ push SS ; 16 ; 0xf7c02
+ push dx ; 52 ; 0xf7c03
+ mov bl, byte [bp-01ah] ; 8a 5e e6 ; 0xf7c04
+ xor bh, bh ; 30 ff ; 0xf7c07
+ xor ax, ax ; 31 c0 ; 0xf7c09
+ mov dx, word [bp-0024ah] ; 8b 96 b6 fd ; 0xf7c0b
+ call word [si+000a4h] ; ff 94 a4 00 ; 0xf7c0f
+ test al, al ; 84 c0 ; 0xf7c13 scsi.c:358
+ je short 07c29h ; 74 12 ; 0xf7c15
+ mov ax, 00be8h ; b8 e8 0b ; 0xf7c17 scsi.c:359
+ push ax ; 50 ; 0xf7c1a
+ mov ax, 00c08h ; b8 08 0c ; 0xf7c1b
+ push ax ; 50 ; 0xf7c1e
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7c1f
+ push ax ; 50 ; 0xf7c22
+ call 0195ch ; e8 36 9d ; 0xf7c23
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7c26
+ mov ax, word [bp-00242h] ; 8b 86 be fd ; 0xf7c29 scsi.c:364
+ mov bx, word [bp-00244h] ; 8b 9e bc fd ; 0xf7c2d
+ mov cx, word [bp-00246h] ; 8b 8e ba fd ; 0xf7c31
+ mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7c35
+ xchg ah, al ; 86 c4 ; 0xf7c39
+ xchg bh, bl ; 86 df ; 0xf7c3b
+ xchg ch, cl ; 86 cd ; 0xf7c3d
+ xchg dh, dl ; 86 d6 ; 0xf7c3f
+ xchg dx, ax ; 92 ; 0xf7c41
+ xchg bx, cx ; 87 cb ; 0xf7c42
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xf7c44
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf7c47
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7c4a
+ mov word [bp-02ch], cx ; 89 4e d4 ; 0xf7c4d
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7c50
+ mov word [bp-01ch], bx ; 89 5e e4 ; 0xf7c53
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf7c56
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf7c59
+ mov dh, byte [bp-00240h] ; 8a b6 c0 fd ; 0xf7c5c scsi.c:366
+ xor dl, dl ; 30 d2 ; 0xf7c60
+ mov al, byte [bp-0023fh] ; 8a 86 c1 fd ; 0xf7c62
+ xor ah, ah ; 30 e4 ; 0xf7c66
+ xor bx, bx ; 31 db ; 0xf7c68
+ mov si, dx ; 89 d6 ; 0xf7c6a
+ or si, ax ; 09 c6 ; 0xf7c6c
+ mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xf7c6e
+ xor dh, dh ; 30 f6 ; 0xf7c72
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7c74
+ sal ax, 1 ; d1 e0 ; 0xf7c77
+ rcl dx, 1 ; d1 d2 ; 0xf7c79
+ loop 07c77h ; e2 fa ; 0xf7c7b
+ or bx, ax ; 09 c3 ; 0xf7c7d
+ or dx, si ; 09 f2 ; 0xf7c7f
+ mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xf7c81
+ xor ah, ah ; 30 e4 ; 0xf7c85
+ or bx, ax ; 09 c3 ; 0xf7c87
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7c89
+ test dx, dx ; 85 d2 ; 0xf7c8c scsi.c:372
+ jne short 07c96h ; 75 06 ; 0xf7c8e
+ cmp bx, 00200h ; 81 fb 00 02 ; 0xf7c90
+ je short 07cb9h ; 74 23 ; 0xf7c94
+ mov bx, 00ddch ; bb dc 0d ; 0xf7c96 scsi.c:375
+ mov cx, ds ; 8c d9 ; 0xf7c99
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7c9b
+ call 01919h ; e8 78 9c ; 0xf7c9e
+ push dx ; 52 ; 0xf7ca1
+ push word [bp-014h] ; ff 76 ec ; 0xf7ca2
+ push word [bp-01ah] ; ff 76 e6 ; 0xf7ca5
+ mov ax, 00c27h ; b8 27 0c ; 0xf7ca8
+ push ax ; 50 ; 0xf7cab
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7cac
+ push ax ; 50 ; 0xf7caf
+ call 0195ch ; e8 a9 9c ; 0xf7cb0
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7cb3
+ jmp near 07ff4h ; e9 3b 03 ; 0xf7cb6 scsi.c:376
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7cb9 scsi.c:380
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7cbc
+ jc short 07ccch ; 72 0c ; 0xf7cbe
+ jbe short 07cd4h ; 76 12 ; 0xf7cc0
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf7cc2
+ je short 07cdch ; 74 16 ; 0xf7cc4
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7cc6
+ je short 07cd8h ; 74 0e ; 0xf7cc8
+ jmp short 07d17h ; eb 4b ; 0xf7cca
+ test al, al ; 84 c0 ; 0xf7ccc
+ jne short 07d17h ; 75 47 ; 0xf7cce
+ mov DL, strict byte 090h ; b2 90 ; 0xf7cd0 scsi.c:383
+ jmp short 07cdeh ; eb 0a ; 0xf7cd2 scsi.c:384
+ mov DL, strict byte 098h ; b2 98 ; 0xf7cd4 scsi.c:386
+ jmp short 07cdeh ; eb 06 ; 0xf7cd6 scsi.c:387
+ mov DL, strict byte 0a0h ; b2 a0 ; 0xf7cd8 scsi.c:389
+ jmp short 07cdeh ; eb 02 ; 0xf7cda scsi.c:390
+ mov DL, strict byte 0a8h ; b2 a8 ; 0xf7cdc scsi.c:392
+ mov bl, dl ; 88 d3 ; 0xf7cde scsi.c:396
+ add bl, 007h ; 80 c3 07 ; 0xf7ce0
+ xor bh, bh ; 30 ff ; 0xf7ce3
+ mov ax, bx ; 89 d8 ; 0xf7ce5
+ call 01664h ; e8 7a 99 ; 0xf7ce7
+ test al, al ; 84 c0 ; 0xf7cea
+ je short 07d17h ; 74 29 ; 0xf7cec
+ mov al, dl ; 88 d0 ; 0xf7cee scsi.c:401
+ xor ah, ah ; 30 e4 ; 0xf7cf0
+ call 0169ch ; e8 a7 99 ; 0xf7cf2
+ mov si, ax ; 89 c6 ; 0xf7cf5
+ mov word [bp-012h], strict word 00000h ; c7 46 ee 00 00 ; 0xf7cf7
+ mov al, dl ; 88 d0 ; 0xf7cfc scsi.c:402
+ add AL, strict byte 002h ; 04 02 ; 0xf7cfe
+ xor ah, ah ; 30 e4 ; 0xf7d00
+ call 01664h ; e8 5f 99 ; 0xf7d02
+ xor ah, ah ; 30 e4 ; 0xf7d05
+ mov word [bp-022h], ax ; 89 46 de ; 0xf7d07
+ mov ax, bx ; 89 d8 ; 0xf7d0a scsi.c:403
+ call 01664h ; e8 55 99 ; 0xf7d0c
+ xor ah, ah ; 30 e4 ; 0xf7d0f
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf7d11
+ jmp near 07e04h ; e9 ed 00 ; 0xf7d14 scsi.c:405
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7d17 scsi.c:406
+ mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7d1a
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf7d1d
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf7d20
+ mov si, strict word 0000ch ; be 0c 00 ; 0xf7d23
+ call 0aba0h ; e8 77 2e ; 0xf7d26
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf7d29
+ mov word [bp-024h], bx ; 89 5e dc ; 0xf7d2c
+ mov word [bp-028h], cx ; 89 4e d8 ; 0xf7d2f
+ mov word [bp-026h], dx ; 89 56 da ; 0xf7d32
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7d35 scsi.c:410
+ test ax, ax ; 85 c0 ; 0xf7d38
+ jnbe short 07d51h ; 77 15 ; 0xf7d3a
+ je short 07d41h ; 74 03 ; 0xf7d3c
+ jmp near 07dc4h ; e9 83 00 ; 0xf7d3e
+ cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf7d41
+ jnbe short 07d51h ; 77 0a ; 0xf7d45
+ jne short 07d3eh ; 75 f5 ; 0xf7d47
+ cmp word [bp-02ch], strict byte 00040h ; 83 7e d4 40 ; 0xf7d49
+ jnbe short 07d51h ; 77 02 ; 0xf7d4d
+ jne short 07dc4h ; 75 73 ; 0xf7d4f
+ mov word [bp-022h], 000ffh ; c7 46 de ff 00 ; 0xf7d51 scsi.c:412
+ mov word [bp-020h], strict word 0003fh ; c7 46 e0 3f 00 ; 0xf7d56 scsi.c:413
+ mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7d5b scsi.c:415
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf7d5e
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf7d61
+ mov si, strict word 00006h ; be 06 00 ; 0xf7d64
+ call 0aba0h ; e8 36 2e ; 0xf7d67
+ mov si, word [bp-026h] ; 8b 76 da ; 0xf7d6a
+ add si, dx ; 01 d6 ; 0xf7d6d
+ mov word [bp-036h], si ; 89 76 ca ; 0xf7d6f
+ mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf7d72
+ adc dx, cx ; 11 ca ; 0xf7d75
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf7d77
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf7d7a
+ adc dx, bx ; 11 da ; 0xf7d7d
+ mov word [bp-034h], dx ; 89 56 cc ; 0xf7d7f
+ mov dx, word [bp-016h] ; 8b 56 ea ; 0xf7d82
+ adc dx, ax ; 11 c2 ; 0xf7d85
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7d87
+ mov ax, dx ; 89 d0 ; 0xf7d8a scsi.c:416
+ mov bx, word [bp-034h] ; 8b 5e cc ; 0xf7d8c
+ mov cx, word [bp-030h] ; 8b 4e d0 ; 0xf7d8f
+ mov dx, si ; 89 f2 ; 0xf7d92
+ mov si, strict word 00008h ; be 08 00 ; 0xf7d94
+ call 0aba0h ; e8 06 2e ; 0xf7d97
+ mov word [bp-02eh], bx ; 89 5e d2 ; 0xf7d9a
+ mov word [bp-038h], cx ; 89 4e c8 ; 0xf7d9d
+ mov word [bp-032h], dx ; 89 56 ce ; 0xf7da0
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf7da3
+ mov bx, word [bp-034h] ; 8b 5e cc ; 0xf7da6
+ mov cx, word [bp-030h] ; 8b 4e d0 ; 0xf7da9
+ mov dx, word [bp-036h] ; 8b 56 ca ; 0xf7dac
+ mov si, strict word 00010h ; be 10 00 ; 0xf7daf
+ call 0aba0h ; e8 eb 2d ; 0xf7db2
+ mov si, word [bp-032h] ; 8b 76 ce ; 0xf7db5
+ add si, dx ; 01 d6 ; 0xf7db8
+ adc cx, word [bp-038h] ; 13 4e c8 ; 0xf7dba
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf7dbd
+ adc ax, bx ; 11 d8 ; 0xf7dc0
+ jmp short 07e01h ; eb 3d ; 0xf7dc2 scsi.c:418
+ test ax, ax ; 85 c0 ; 0xf7dc4
+ jnbe short 07ddah ; 77 12 ; 0xf7dc6
+ jne short 07de6h ; 75 1c ; 0xf7dc8
+ cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf7dca
+ jnbe short 07ddah ; 77 0a ; 0xf7dce
+ jne short 07de6h ; 75 14 ; 0xf7dd0
+ cmp word [bp-02ch], strict byte 00020h ; 83 7e d4 20 ; 0xf7dd2
+ jnbe short 07ddah ; 77 02 ; 0xf7dd6
+ jne short 07de6h ; 75 0c ; 0xf7dd8
+ mov word [bp-022h], 00080h ; c7 46 de 80 00 ; 0xf7dda scsi.c:420
+ mov word [bp-020h], strict word 00020h ; c7 46 e0 20 00 ; 0xf7ddf scsi.c:421
+ jmp short 07dffh ; eb 19 ; 0xf7de4 scsi.c:424
+ mov word [bp-022h], strict word 00040h ; c7 46 de 40 00 ; 0xf7de6 scsi.c:426
+ mov word [bp-020h], strict word 00020h ; c7 46 e0 20 00 ; 0xf7deb scsi.c:427
+ mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7df0 scsi.c:428
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf7df3
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf7df6
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf7df9
+ call 0aba0h ; e8 a1 2d ; 0xf7dfc
+ mov si, dx ; 89 d6 ; 0xf7dff
+ mov word [bp-012h], cx ; 89 4e ee ; 0xf7e01
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7e04 scsi.c:433
+ add AL, strict byte 008h ; 04 08 ; 0xf7e07
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7e09
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7e0c scsi.c:435
+ xor ah, ah ; 30 e4 ; 0xf7e0f
+ sal ax, 1 ; d1 e0 ; 0xf7e11
+ sal ax, 1 ; d1 e0 ; 0xf7e13
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7e15
+ mov bx, di ; 89 fb ; 0xf7e18
+ add bx, ax ; 01 c3 ; 0xf7e1a
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf7e1c
+ mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf7e20
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7e25 scsi.c:436
+ mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf7e28
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf7e2d scsi.c:437
+ mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf7e30
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7e35 scsi.c:438
+ xor ah, ah ; 30 e4 ; 0xf7e38
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf7e3a
+ imul dx ; f7 ea ; 0xf7e3d
+ mov bx, di ; 89 fb ; 0xf7e3f
+ add bx, ax ; 01 c3 ; 0xf7e41
+ mov word [es:bx+01eh], 0ff04h ; 26 c7 47 1e 04 ff ; 0xf7e43
+ mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf7e49 scsi.c:440
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7e4f scsi.c:442
+ mov word [es:bx+024h], ax ; 26 89 47 24 ; 0xf7e52
+ mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf7e56 scsi.c:443
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf7e5b scsi.c:446
+ mov word [es:bx+026h], ax ; 26 89 47 26 ; 0xf7e5e
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf7e62 scsi.c:447
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf7e65
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf7e69 scsi.c:448
+ mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf7e6c
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf7e70 scsi.c:449
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf7e73
+ cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xf7e77 scsi.c:451
+ jne short 07e83h ; 75 06 ; 0xf7e7b
+ cmp si, 00400h ; 81 fe 00 04 ; 0xf7e7d
+ jbe short 07e91h ; 76 0e ; 0xf7e81
+ mov word [es:bx+028h], 00400h ; 26 c7 47 28 00 04 ; 0xf7e83 scsi.c:452
+ mov word [es:bx+02eh], 00400h ; 26 c7 47 2e 00 04 ; 0xf7e89 scsi.c:453
+ jmp short 07e99h ; eb 08 ; 0xf7e8f scsi.c:454
+ mov word [es:bx+028h], si ; 26 89 77 28 ; 0xf7e91 scsi.c:455
+ mov word [es:bx+02eh], si ; 26 89 77 2e ; 0xf7e95 scsi.c:456
+ mov bx, 00ddch ; bb dc 0d ; 0xf7e99 scsi.c:460
+ mov cx, ds ; 8c d9 ; 0xf7e9c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7e9e
+ call 01919h ; e8 75 9a ; 0xf7ea1
+ push word [bp-02ah] ; ff 76 d6 ; 0xf7ea4
+ push word [bp-01ch] ; ff 76 e4 ; 0xf7ea7
+ push word [bp-02ch] ; ff 76 d4 ; 0xf7eaa
+ push word [bp-01eh] ; ff 76 e2 ; 0xf7ead
+ push word [bp-020h] ; ff 76 e0 ; 0xf7eb0
+ push word [bp-022h] ; ff 76 de ; 0xf7eb3
+ push word [bp-012h] ; ff 76 ee ; 0xf7eb6
+ push si ; 56 ; 0xf7eb9
+ push word [bp-01ah] ; ff 76 e6 ; 0xf7eba
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7ebd
+ xor ah, ah ; 30 e4 ; 0xf7ec0
+ push ax ; 50 ; 0xf7ec2
+ mov ax, 00c55h ; b8 55 0c ; 0xf7ec3
+ push ax ; 50 ; 0xf7ec6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7ec7
+ push ax ; 50 ; 0xf7eca
+ call 0195ch ; e8 8e 9a ; 0xf7ecb
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xf7ece
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7ed1 scsi.c:462
+ xor ah, ah ; 30 e4 ; 0xf7ed4
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf7ed6
+ imul dx ; f7 ea ; 0xf7ed9
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7edb
+ mov bx, di ; 89 fb ; 0xf7ede
+ add bx, ax ; 01 c3 ; 0xf7ee0
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7ee2
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf7ee5
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf7ee9
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf7eec
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf7ef0
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf7ef3
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf7ef7
+ mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf7efa
+ mov al, byte [es:di+0024eh] ; 26 8a 85 4e 02 ; 0xf7efe scsi.c:465
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf7f03 scsi.c:466
+ add ah, 008h ; 80 c4 08 ; 0xf7f06
+ mov bl, al ; 88 c3 ; 0xf7f09
+ xor bh, bh ; 30 ff ; 0xf7f0b
+ add bx, di ; 01 fb ; 0xf7f0d
+ mov byte [es:bx+0024fh], ah ; 26 88 a7 4f 02 ; 0xf7f0f
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7f14 scsi.c:467
+ mov byte [es:di+0024eh], al ; 26 88 85 4e 02 ; 0xf7f16 scsi.c:468
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf7f1b scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7f1e
+ mov es, ax ; 8e c0 ; 0xf7f21
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7f23
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7f26 scsi.c:472
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7f28 scsi.c:53
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf7f2b scsi.c:475
+ jmp near 07fe9h ; e9 b8 00 ; 0xf7f2e scsi.c:477
+ test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xf7f31 scsi.c:483
+ jne short 07f42h ; 75 0a ; 0xf7f36
+ mov al, byte [bp-00248h] ; 8a 86 b8 fd ; 0xf7f38
+ and AL, strict byte 01fh ; 24 1f ; 0xf7f3c
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf7f3e
+ je short 07f45h ; 74 03 ; 0xf7f40
+ jmp near 07fe9h ; e9 a4 00 ; 0xf7f42
+ mov bx, 00ddch ; bb dc 0d ; 0xf7f45 scsi.c:489
+ mov cx, ds ; 8c d9 ; 0xf7f48
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7f4a
+ call 01919h ; e8 c9 99 ; 0xf7f4d
+ push word [bp-01ah] ; ff 76 e6 ; 0xf7f50
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f53
+ xor ah, ah ; 30 e4 ; 0xf7f56
+ push ax ; 50 ; 0xf7f58
+ mov ax, 00c83h ; b8 83 0c ; 0xf7f59
+ push ax ; 50 ; 0xf7f5c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7f5d
+ push ax ; 50 ; 0xf7f60
+ call 0195ch ; e8 f8 99 ; 0xf7f61
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7f64
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f67 scsi.c:492
+ add AL, strict byte 008h ; 04 08 ; 0xf7f6a
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7f6c
+ test byte [bp-00247h], 080h ; f6 86 b9 fd 80 ; 0xf7f6f scsi.c:494
+ je short 07f7bh ; 74 05 ; 0xf7f74
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf7f76
+ jmp short 07f7dh ; eb 02 ; 0xf7f79
+ xor cx, cx ; 31 c9 ; 0xf7f7b
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f7d scsi.c:496
+ xor ah, ah ; 30 e4 ; 0xf7f80
+ sal ax, 1 ; d1 e0 ; 0xf7f82
+ sal ax, 1 ; d1 e0 ; 0xf7f84
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7f86
+ mov bx, di ; 89 fb ; 0xf7f89
+ add bx, ax ; 01 c3 ; 0xf7f8b
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf7f8d
+ mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf7f91
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7f96 scsi.c:497
+ mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf7f99
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf7f9e scsi.c:498
+ mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf7fa1
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7fa6 scsi.c:499
+ xor ah, ah ; 30 e4 ; 0xf7fa9
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf7fab
+ imul dx ; f7 ea ; 0xf7fae
+ mov bx, di ; 89 fb ; 0xf7fb0
+ add bx, ax ; 01 c3 ; 0xf7fb2
+ mov word [es:bx+01eh], 00504h ; 26 c7 47 1e 04 05 ; 0xf7fb4
+ mov byte [es:bx+020h], cl ; 26 88 4f 20 ; 0xf7fba scsi.c:501
+ mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf7fbe scsi.c:502
+ mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf7fc4 scsi.c:503
+ mov al, byte [es:di+00263h] ; 26 8a 85 63 02 ; 0xf7fc9 scsi.c:506
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf7fce scsi.c:507
+ add ah, 008h ; 80 c4 08 ; 0xf7fd1
+ mov bl, al ; 88 c3 ; 0xf7fd4
+ xor bh, bh ; 30 ff ; 0xf7fd6
+ add bx, di ; 01 fb ; 0xf7fd8
+ mov byte [es:bx+00264h], ah ; 26 88 a7 64 02 ; 0xf7fda
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7fdf scsi.c:508
+ mov byte [es:di+00263h], al ; 26 88 85 63 02 ; 0xf7fe1 scsi.c:509
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf7fe6 scsi.c:511
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7fe9 scsi.c:516
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7fec
+ mov byte [es:di+002a0h], al ; 26 88 85 a0 02 ; 0xf7fef
+ inc word [bp-01ah] ; ff 46 e6 ; 0xf7ff4 scsi.c:517
+ cmp word [bp-01ah], strict byte 00010h ; 83 7e e6 10 ; 0xf7ff7
+ jnl short 0804dh ; 7d 50 ; 0xf7ffb
+ mov byte [bp-048h], 012h ; c6 46 b8 12 ; 0xf7ffd
+ xor al, al ; 30 c0 ; 0xf8001
+ mov byte [bp-047h], al ; 88 46 b9 ; 0xf8003
+ mov byte [bp-046h], al ; 88 46 ba ; 0xf8006
+ mov byte [bp-045h], al ; 88 46 bb ; 0xf8009
+ mov byte [bp-044h], 005h ; c6 46 bc 05 ; 0xf800c
+ mov byte [bp-043h], al ; 88 46 bd ; 0xf8010
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf8013
+ xor ah, ah ; 30 e4 ; 0xf8016
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf8018
+ imul dx ; f7 ea ; 0xf801b
+ mov si, ax ; 89 c6 ; 0xf801d
+ xor ax, ax ; 31 c0 ; 0xf801f
+ push ax ; 50 ; 0xf8021
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf8022
+ push ax ; 50 ; 0xf8025
+ lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xf8026
+ push SS ; 16 ; 0xf802a
+ push dx ; 52 ; 0xf802b
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf802c
+ push ax ; 50 ; 0xf802f
+ lea dx, [bp-048h] ; 8d 56 b8 ; 0xf8030
+ push SS ; 16 ; 0xf8033
+ push dx ; 52 ; 0xf8034
+ mov bl, byte [bp-01ah] ; 8a 5e e6 ; 0xf8035
+ xor bh, bh ; 30 ff ; 0xf8038
+ xor ax, ax ; 31 c0 ; 0xf803a
+ mov dx, word [bp-0024ah] ; 8b 96 b6 fd ; 0xf803c
+ call word [si+000a4h] ; ff 94 a4 00 ; 0xf8040
+ test al, al ; 84 c0 ; 0xf8044
+ jne short 0804bh ; 75 03 ; 0xf8046
+ jmp near 07ba6h ; e9 5b fb ; 0xf8048
+ jmp short 07ff4h ; eb a7 ; 0xf804b
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf804d scsi.c:518
+ pop di ; 5f ; 0xf8050
+ pop si ; 5e ; 0xf8051
+ pop cx ; 59 ; 0xf8052
+ pop bx ; 5b ; 0xf8053
+ pop bp ; 5d ; 0xf8054
+ retn ; c3 ; 0xf8055
+ ; disGetNextSymbol 0xf8056 LB 0x2e92 -> off=0x0 cb=000000000000008f uValue=00000000000f6a56 'scsi_init'
+scsi_init: ; 0xf8056 LB 0x8f
+ push bp ; 55 ; 0xf8056 scsi.c:523
+ mov bp, sp ; 89 e5 ; 0xf8057
+ push si ; 56 ; 0xf8059
+ push di ; 57 ; 0xf805a
+ push ax ; 50 ; 0xf805b
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf805c scsi.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf805f
+ mov es, ax ; 8e c0 ; 0xf8062
+ mov es, [es:bx] ; 26 8e 07 ; 0xf8064
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf8067 scsi.c:59
+ mov byte [es:bx+002a0h], 000h ; 26 c6 87 a0 02 00 ; 0xf806a scsi.c:529
+ mov word [bp-006h], strict word 00000h ; c7 46 fa 00 00 ; 0xf8070 scsi.c:532
+ jmp short 080c7h ; eb 50 ; 0xf8075
+ mov dx, word [bx+0009ch] ; 8b 97 9c 00 ; 0xf8077 scsi.c:536
+ mov ax, word [bx+0009ah] ; 8b 87 9a 00 ; 0xf807b
+ call 0a94ch ; e8 ca 28 ; 0xf807f
+ mov cx, ax ; 89 c1 ; 0xf8082
+ cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf8084 scsi.c:542
+ je short 080beh ; 74 35 ; 0xf8087
+ call 077f6h ; e8 6a f7 ; 0xf8089 scsi.c:546
+ mov si, ax ; 89 c6 ; 0xf808c
+ test ax, ax ; 85 c0 ; 0xf808e scsi.c:547
+ je short 080deh ; 74 4c ; 0xf8090
+ mov dx, cx ; 89 ca ; 0xf8092 scsi.c:550
+ mov dl, ch ; 88 ea ; 0xf8094
+ xor dh, ch ; 30 ee ; 0xf8096
+ mov bx, dx ; 89 d3 ; 0xf8098
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf809a scsi.c:554
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf809d
+ imul dx ; f7 ea ; 0xf80a0
+ mov di, ax ; 89 c7 ; 0xf80a2
+ xor ch, ch ; 30 ed ; 0xf80a4
+ xor bh, bh ; 30 ff ; 0xf80a6
+ xor ax, ax ; 31 c0 ; 0xf80a8
+ mov dx, si ; 89 f2 ; 0xf80aa
+ call word [di+000a0h] ; ff 95 a0 00 ; 0xf80ac
+ test ax, ax ; 85 c0 ; 0xf80b0 scsi.c:555
+ jne short 080beh ; 75 0a ; 0xf80b2
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf80b4 scsi.c:556
+ xor dh, dh ; 30 f6 ; 0xf80b7
+ mov ax, si ; 89 f0 ; 0xf80b9
+ call 07b7eh ; e8 c0 fa ; 0xf80bb
+ inc word [bp-006h] ; ff 46 fa ; 0xf80be scsi.c:559
+ cmp word [bp-006h], strict byte 00005h ; 83 7e fa 05 ; 0xf80c1
+ jnc short 080deh ; 73 17 ; 0xf80c5
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf80c7
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf80ca
+ imul dx ; f7 ea ; 0xf80cd
+ mov bx, ax ; 89 c3 ; 0xf80cf
+ cmp word [bx+0009eh], strict byte 00000h ; 83 bf 9e 00 00 ; 0xf80d1
+ je short 08077h ; 74 9f ; 0xf80d6
+ call word [bx+0009eh] ; ff 97 9e 00 ; 0xf80d8
+ jmp short 08082h ; eb a4 ; 0xf80dc
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf80de scsi.c:560
+ pop di ; 5f ; 0xf80e1
+ pop si ; 5e ; 0xf80e2
+ pop bp ; 5d ; 0xf80e3
+ retn ; c3 ; 0xf80e4
+ ; disGetNextSymbol 0xf80e5 LB 0x2e03 -> off=0x0 cb=000000000000001c uValue=00000000000f6ae5 'ahci_ctrl_extract_bits'
+ahci_ctrl_extract_bits: ; 0xf80e5 LB 0x1c
+ push si ; 56 ; 0xf80e5 ahci.c:287
+ push bp ; 55 ; 0xf80e6
+ mov bp, sp ; 89 e5 ; 0xf80e7
+ mov si, ax ; 89 c6 ; 0xf80e9
+ and ax, bx ; 21 d8 ; 0xf80eb ahci.c:289
+ and dx, cx ; 21 ca ; 0xf80ed
+ mov cl, byte [bp+006h] ; 8a 4e 06 ; 0xf80ef
+ xor ch, ch ; 30 ed ; 0xf80f2
+ jcxz 080fch ; e3 06 ; 0xf80f4
+ shr dx, 1 ; d1 ea ; 0xf80f6
+ rcr ax, 1 ; d1 d8 ; 0xf80f8
+ loop 080f6h ; e2 fa ; 0xf80fa
+ pop bp ; 5d ; 0xf80fc ahci.c:290
+ pop si ; 5e ; 0xf80fd
+ retn 00002h ; c2 02 00 ; 0xf80fe
+ ; disGetNextSymbol 0xf8101 LB 0x2de7 -> off=0x0 cb=000000000000001e uValue=00000000000f6b01 'ahci_addr_to_phys'
+ahci_addr_to_phys: ; 0xf8101 LB 0x1e
+ push bx ; 53 ; 0xf8101 ahci.c:295
+ push cx ; 51 ; 0xf8102
+ push bp ; 55 ; 0xf8103
+ mov bp, sp ; 89 e5 ; 0xf8104
+ mov bx, ax ; 89 c3 ; 0xf8106
+ mov ax, dx ; 89 d0 ; 0xf8108
+ xor dx, dx ; 31 d2 ; 0xf810a ahci.c:297
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf810c
+ sal ax, 1 ; d1 e0 ; 0xf810f
+ rcl dx, 1 ; d1 d2 ; 0xf8111
+ loop 0810fh ; e2 fa ; 0xf8113
+ xor cx, cx ; 31 c9 ; 0xf8115
+ add ax, bx ; 01 d8 ; 0xf8117
+ adc dx, cx ; 11 ca ; 0xf8119
+ pop bp ; 5d ; 0xf811b ahci.c:298
+ pop cx ; 59 ; 0xf811c
+ pop bx ; 5b ; 0xf811d
+ retn ; c3 ; 0xf811e
+ ; disGetNextSymbol 0xf811f LB 0x2dc9 -> off=0x0 cb=0000000000000159 uValue=00000000000f6b1f 'ahci_port_cmd_sync'
+ahci_port_cmd_sync: ; 0xf811f LB 0x159
+ push bp ; 55 ; 0xf811f ahci.c:303
+ mov bp, sp ; 89 e5 ; 0xf8120
+ push cx ; 51 ; 0xf8122
+ push si ; 56 ; 0xf8123
+ push di ; 57 ; 0xf8124
+ push ax ; 50 ; 0xf8125
+ mov si, ax ; 89 c6 ; 0xf8126
+ mov cx, dx ; 89 d1 ; 0xf8128
+ mov dl, bl ; 88 da ; 0xf812a
+ mov es, cx ; 8e c1 ; 0xf812c ahci.c:308
+ mov al, byte [es:si+00262h] ; 26 8a 84 62 02 ; 0xf812e
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf8133
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8136 ahci.c:309
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf813b ahci.c:311
+ jne short 08142h ; 75 03 ; 0xf813d
+ jmp near 08270h ; e9 2e 01 ; 0xf813f
+ mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf8142 ahci.c:314
+ xor ah, ah ; 30 e4 ; 0xf8147
+ xor di, di ; 31 ff ; 0xf8149
+ or di, 00080h ; 81 cf 80 00 ; 0xf814b
+ xor dh, dh ; 30 f6 ; 0xf814f
+ or di, dx ; 09 d7 ; 0xf8151
+ mov word [es:si], di ; 26 89 3c ; 0xf8153
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf8156
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf815a ahci.c:315
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8160
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf8166 ahci.c:316
+ mov dx, cx ; 89 ca ; 0xf816a
+ call 08101h ; e8 92 ff ; 0xf816c
+ mov es, cx ; 8e c1 ; 0xf816f
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8171
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf8175
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8179 ahci.c:319
+ xor ah, ah ; 30 e4 ; 0xf817c
+ mov CL, strict byte 007h ; b1 07 ; 0xf817e
+ mov di, ax ; 89 c7 ; 0xf8180
+ sal di, CL ; d3 e7 ; 0xf8182
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8184
+ xor cx, cx ; 31 c9 ; 0xf8188 ahci.c:260
+ mov dx, bx ; 89 da ; 0xf818a
+ xchg cx, ax ; 91 ; 0xf818c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf818d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8191
+ out DX, eax ; 66 ef ; 0xf8193
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf8195 ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf8198
+ in eax, DX ; 66 ed ; 0xf819a
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf819c
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf819e
+ xchg dx, ax ; 92 ; 0xf81a2
+ or AL, strict byte 011h ; 0c 11 ; 0xf81a3
+ mov cx, dx ; 89 d1 ; 0xf81a5
+ mov dx, si ; 89 f2 ; 0xf81a7
+ xchg cx, ax ; 91 ; 0xf81a9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf81aa
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf81ae
+ out DX, eax ; 66 ef ; 0xf81b0
+ lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf81b2 ahci.c:323
+ cwd ; 99 ; 0xf81b6
+ mov cx, dx ; 89 d1 ; 0xf81b7
+ mov dx, bx ; 89 da ; 0xf81b9
+ xchg cx, ax ; 91 ; 0xf81bb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf81bc
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf81c0
+ out DX, eax ; 66 ef ; 0xf81c2
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf81c4
+ xor cx, cx ; 31 c9 ; 0xf81c7
+ mov dx, si ; 89 f2 ; 0xf81c9
+ xchg cx, ax ; 91 ; 0xf81cb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf81cc
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf81d0
+ out DX, eax ; 66 ef ; 0xf81d2
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf81d4 ahci.c:327
+ xor ah, ah ; 30 e4 ; 0xf81d7
+ mov CL, strict byte 007h ; b1 07 ; 0xf81d9
+ sal ax, CL ; d3 e0 ; 0xf81db
+ add ax, 00110h ; 05 10 01 ; 0xf81dd
+ xor cx, cx ; 31 c9 ; 0xf81e0 ahci.c:279
+ mov dx, bx ; 89 da ; 0xf81e2
+ xchg cx, ax ; 91 ; 0xf81e4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf81e5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf81e9
+ out DX, eax ; 66 ef ; 0xf81eb
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf81ed ahci.c:280
+ in eax, DX ; 66 ed ; 0xf81f0
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf81f2
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf81f4
+ xchg dx, ax ; 92 ; 0xf81f8
+ test dh, 040h ; f6 c6 40 ; 0xf81f9
+ jne short 08202h ; 75 04 ; 0xf81fc
+ test AL, strict byte 001h ; a8 01 ; 0xf81fe
+ je short 08206h ; 74 04 ; 0xf8200
+ mov AL, strict byte 001h ; b0 01 ; 0xf8202
+ jmp short 08208h ; eb 02 ; 0xf8204
+ xor al, al ; 30 c0 ; 0xf8206
+ test al, al ; 84 c0 ; 0xf8208 ahci.c:281
+ je short 081d4h ; 74 c8 ; 0xf820a
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf820c ahci.c:333
+ xor ah, ah ; 30 e4 ; 0xf820f
+ mov CL, strict byte 007h ; b1 07 ; 0xf8211
+ mov di, ax ; 89 c7 ; 0xf8213
+ sal di, CL ; d3 e7 ; 0xf8215
+ lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf8217
+ xor cx, cx ; 31 c9 ; 0xf821b ahci.c:260
+ mov dx, bx ; 89 da ; 0xf821d
+ xchg cx, ax ; 91 ; 0xf821f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8220
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8224
+ out DX, eax ; 66 ef ; 0xf8226
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf8228 ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf822b
+ in eax, DX ; 66 ed ; 0xf822d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf822f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8231
+ xchg dx, ax ; 92 ; 0xf8235
+ or AL, strict byte 001h ; 0c 01 ; 0xf8236
+ mov cx, dx ; 89 d1 ; 0xf8238
+ mov dx, si ; 89 f2 ; 0xf823a
+ xchg cx, ax ; 91 ; 0xf823c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf823d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8241
+ out DX, eax ; 66 ef ; 0xf8243
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8245 ahci.c:337
+ xor cx, cx ; 31 c9 ; 0xf8249 ahci.c:269
+ mov dx, bx ; 89 da ; 0xf824b
+ xchg cx, ax ; 91 ; 0xf824d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf824e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8252
+ out DX, eax ; 66 ef ; 0xf8254
+ mov dx, si ; 89 f2 ; 0xf8256 ahci.c:270
+ in eax, DX ; 66 ed ; 0xf8258
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf825a
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf825c
+ xchg dx, ax ; 92 ; 0xf8260
+ and AL, strict byte 0feh ; 24 fe ; 0xf8261
+ mov cx, dx ; 89 d1 ; 0xf8263
+ mov dx, si ; 89 f2 ; 0xf8265
+ xchg cx, ax ; 91 ; 0xf8267
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8268
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf826c
+ out DX, eax ; 66 ef ; 0xf826e
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8270 ahci.c:343
+ pop di ; 5f ; 0xf8273
+ pop si ; 5e ; 0xf8274
+ pop cx ; 59 ; 0xf8275
+ pop bp ; 5d ; 0xf8276
+ retn ; c3 ; 0xf8277
+ ; disGetNextSymbol 0xf8278 LB 0x2c70 -> off=0x0 cb=0000000000000217 uValue=00000000000f6c78 'ahci_cmd_data'
+ahci_cmd_data: ; 0xf8278 LB 0x217
+ push bp ; 55 ; 0xf8278 ahci.c:348
+ mov bp, sp ; 89 e5 ; 0xf8279
+ push cx ; 51 ; 0xf827b
+ push si ; 56 ; 0xf827c
+ push di ; 57 ; 0xf827d
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf827e
+ mov di, ax ; 89 c7 ; 0xf8281
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8283
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8286
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf8289 ahci.c:350
+ mov es, dx ; 8e c2 ; 0xf828e
+ mov ax, word [es:di+002a6h] ; 26 8b 85 a6 02 ; 0xf8290
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf8295
+ mov word [bp-010h], strict word 00000h ; c7 46 f0 00 00 ; 0xf8298
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf829d
+ mov ax, word [es:di+00eh] ; 26 8b 45 0e ; 0xf82a0 ahci.c:351
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf82a4
+ mov ax, word [es:di+010h] ; 26 8b 45 10 ; 0xf82a7 ahci.c:352
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf82ab
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf82ae ahci.c:355
+ xor bx, bx ; 31 db ; 0xf82b1
+ mov ax, 00080h ; b8 80 00 ; 0xf82b3
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf82b6
+ call 0abc0h ; e8 04 29 ; 0xf82b9
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf82bc ahci.c:358
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf82bf
+ mov word [es:bx+00080h], 08027h ; 26 c7 87 80 00 27 80 ; 0xf82c2
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf82c9 ahci.c:360
+ mov byte [es:bx+00082h], al ; 26 88 87 82 00 ; 0xf82cc
+ mov byte [es:bx+00083h], 000h ; 26 c6 87 83 00 00 ; 0xf82d1 ahci.c:361
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf82d7 ahci.c:363
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf82da
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf82dd
+ mov byte [es:bx+00084h], al ; 26 88 87 84 00 ; 0xf82e0
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf82e5 ahci.c:364
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf82e8
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf82ec
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf82f0
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf82f4
+ mov si, strict word 00008h ; be 08 00 ; 0xf82f7
+ call 0aba0h ; e8 a3 28 ; 0xf82fa
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf82fd
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf8300
+ mov byte [es:bx+00085h], dl ; 26 88 97 85 00 ; 0xf8303
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8308 ahci.c:365
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf830b
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf830f
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8313
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf8317
+ mov si, strict word 00010h ; be 10 00 ; 0xf831a
+ call 0aba0h ; e8 80 28 ; 0xf831d
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf8320
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf8323
+ mov byte [es:bx+00086h], dl ; 26 88 97 86 00 ; 0xf8326
+ mov byte [es:bx+00087h], 040h ; 26 c6 87 87 00 40 ; 0xf832b ahci.c:366
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8331 ahci.c:368
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8334
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8338
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf833c
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf8340
+ mov si, strict word 00018h ; be 18 00 ; 0xf8343
+ call 0aba0h ; e8 57 28 ; 0xf8346
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf8349
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf834c
+ mov byte [es:bx+00088h], dl ; 26 88 97 88 00 ; 0xf834f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8354 ahci.c:369
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8357
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf835b
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf835f
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf8363
+ mov si, strict word 00020h ; be 20 00 ; 0xf8366
+ call 0aba0h ; e8 34 28 ; 0xf8369
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf836c
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf836f
+ mov byte [es:bx+00089h], dl ; 26 88 97 89 00 ; 0xf8372
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8377 ahci.c:370
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf837a
+ mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf837e
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8382
+ mov dx, word [es:di] ; 26 8b 15 ; 0xf8386
+ mov si, strict word 00028h ; be 28 00 ; 0xf8389
+ call 0aba0h ; e8 11 28 ; 0xf838c
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf838f
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf8392
+ mov byte [es:bx+0008ah], dl ; 26 88 97 8a 00 ; 0xf8395
+ mov byte [es:bx+0008bh], 000h ; 26 c6 87 8b 00 00 ; 0xf839a ahci.c:371
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf83a0 ahci.c:373
+ mov byte [es:bx+0008ch], al ; 26 88 87 8c 00 ; 0xf83a3
+ mov al, byte [bp-011h] ; 8a 46 ef ; 0xf83a8 ahci.c:374
+ mov byte [es:bx+0008dh], al ; 26 88 87 8d 00 ; 0xf83ab
+ mov word [es:bx+00272h], strict word 00010h ; 26 c7 87 72 02 10 00 ; 0xf83b0 ahci.c:377
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf83b7 ahci.c:379
+ xor dx, dx ; 31 d2 ; 0xf83ba
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf83bc
+ xor cx, cx ; 31 c9 ; 0xf83bf
+ call 0ab50h ; e8 8c 27 ; 0xf83c1
+ push dx ; 52 ; 0xf83c4
+ push ax ; 50 ; 0xf83c5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf83c6
+ mov bx, word [es:di+008h] ; 26 8b 5d 08 ; 0xf83c9
+ mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf83cd
+ mov ax, 00266h ; b8 66 02 ; 0xf83d1
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf83d4
+ call 0aaaah ; e8 d0 26 ; 0xf83d7
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf83da ahci.c:382
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf83dd
+ mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf83e0
+ add dx, strict byte 0ffffh ; 83 c2 ff ; 0xf83e5
+ mov bx, word [es:bx+0027ch] ; 26 8b 9f 7c 02 ; 0xf83e8
+ adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf83ed
+ mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf83f0
+ mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf83f3
+ xor ah, ah ; 30 e4 ; 0xf83f8
+ mov CL, strict byte 004h ; b1 04 ; 0xf83fa
+ mov di, ax ; 89 c7 ; 0xf83fc
+ sal di, CL ; d3 e7 ; 0xf83fe
+ mov word [es:di+0010ch], dx ; 26 89 95 0c 01 ; 0xf8400
+ mov word [es:di+0010eh], bx ; 26 89 9d 0e 01 ; 0xf8405
+ mov bx, si ; 89 f3 ; 0xf840a ahci.c:383
+ mov al, byte [es:bx+00263h] ; 26 8a 87 63 02 ; 0xf840c
+ mov di, ax ; 89 c7 ; 0xf8411
+ sal di, CL ; d3 e7 ; 0xf8413
+ mov dx, word [es:si+00276h] ; 26 8b 94 76 02 ; 0xf8415
+ mov ax, word [es:si+00278h] ; 26 8b 84 78 02 ; 0xf841a
+ mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf841f
+ mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf8424
+ inc byte [es:bx+00263h] ; 26 fe 87 63 02 ; 0xf8429 ahci.c:384
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf842e ahci.c:398
+ cmp AL, strict byte 035h ; 3c 35 ; 0xf8431
+ jne short 0843bh ; 75 06 ; 0xf8433
+ mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf8435 ahci.c:399
+ jmp short 0844fh ; eb 14 ; 0xf8439 ahci.c:400
+ cmp AL, strict byte 0a0h ; 3c a0 ; 0xf843b
+ jne short 0844bh ; 75 0c ; 0xf843d
+ or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf843f ahci.c:401
+ or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf8443 ahci.c:402
+ jmp short 0844fh ; eb 04 ; 0xf8449 ahci.c:403
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf844b ahci.c:404
+ or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf844f ahci.c:406
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf8453 ahci.c:408
+ xor bh, bh ; 30 ff ; 0xf8456
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8458
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf845b
+ call 0811fh ; e8 be fc ; 0xf845e
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf8461 ahci.c:411
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8464
+ add bx, 00240h ; 81 c3 40 02 ; 0xf8467
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf846b ahci.c:415
+ add ax, 00266h ; 05 66 02 ; 0xf846e
+ mov dx, cx ; 89 ca ; 0xf8471
+ call 0ab21h ; e8 ab 26 ; 0xf8473
+ mov es, cx ; 8e c1 ; 0xf8476 ahci.c:416
+ mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf8478
+ test al, al ; 84 c0 ; 0xf847c
+ je short 08485h ; 74 05 ; 0xf847e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8480
+ jmp short 08487h ; eb 02 ; 0xf8483
+ xor ah, ah ; 30 e4 ; 0xf8485
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8487 ahci.c:417
+ pop di ; 5f ; 0xf848a
+ pop si ; 5e ; 0xf848b
+ pop cx ; 59 ; 0xf848c
+ pop bp ; 5d ; 0xf848d
+ retn ; c3 ; 0xf848e
+ ; disGetNextSymbol 0xf848f LB 0x2a59 -> off=0x0 cb=0000000000000183 uValue=00000000000f6e8f 'ahci_port_deinit_current'
+ahci_port_deinit_current: ; 0xf848f LB 0x183
+ push bp ; 55 ; 0xf848f ahci.c:422
+ mov bp, sp ; 89 e5 ; 0xf8490
+ push bx ; 53 ; 0xf8492
+ push cx ; 51 ; 0xf8493
+ push si ; 56 ; 0xf8494
+ push di ; 57 ; 0xf8495
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8496
+ mov di, ax ; 89 c7 ; 0xf8499
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf849b
+ mov es, dx ; 8e c2 ; 0xf849e ahci.c:427
+ mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf84a0
+ mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf84a5 ahci.c:428
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf84aa
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf84ad ahci.c:430
+ je short 08512h ; 74 61 ; 0xf84af
+ xor ah, ah ; 30 e4 ; 0xf84b1 ahci.c:433
+ mov CL, strict byte 007h ; b1 07 ; 0xf84b3
+ sal ax, CL ; d3 e0 ; 0xf84b5
+ add ax, 00118h ; 05 18 01 ; 0xf84b7
+ xor cx, cx ; 31 c9 ; 0xf84ba ahci.c:269
+ mov dx, si ; 89 f2 ; 0xf84bc
+ xchg cx, ax ; 91 ; 0xf84be
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84bf
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84c3
+ out DX, eax ; 66 ef ; 0xf84c5
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf84c7 ahci.c:270
+ mov dx, bx ; 89 da ; 0xf84ca
+ in eax, DX ; 66 ed ; 0xf84cc
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf84ce
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf84d0
+ xchg dx, ax ; 92 ; 0xf84d4
+ and AL, strict byte 0eeh ; 24 ee ; 0xf84d5
+ mov cx, dx ; 89 d1 ; 0xf84d7
+ mov dx, bx ; 89 da ; 0xf84d9
+ xchg cx, ax ; 91 ; 0xf84db
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84dc
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84e0
+ out DX, eax ; 66 ef ; 0xf84e2
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf84e4 ahci.c:436
+ xor ah, ah ; 30 e4 ; 0xf84e7
+ mov CL, strict byte 007h ; b1 07 ; 0xf84e9
+ sal ax, CL ; d3 e0 ; 0xf84eb
+ add ax, 00118h ; 05 18 01 ; 0xf84ed
+ xor cx, cx ; 31 c9 ; 0xf84f0 ahci.c:279
+ mov dx, si ; 89 f2 ; 0xf84f2
+ xchg cx, ax ; 91 ; 0xf84f4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84f5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84f9
+ out DX, eax ; 66 ef ; 0xf84fb
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf84fd ahci.c:280
+ 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
+ test ax, 0c011h ; a9 11 c0 ; 0xf8509
+ je short 08515h ; 74 07 ; 0xf850c
+ mov AL, strict byte 001h ; b0 01 ; 0xf850e
+ jmp short 08517h ; eb 05 ; 0xf8510
+ jmp near 08609h ; e9 f4 00 ; 0xf8512
+ xor al, al ; 30 c0 ; 0xf8515
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8517 ahci.c:281
+ je short 084e4h ; 74 c9 ; 0xf8519
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf851b ahci.c:447
+ xor bx, bx ; 31 db ; 0xf851e
+ mov ax, di ; 89 f8 ; 0xf8520
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8522
+ call 0abc0h ; e8 98 26 ; 0xf8525
+ lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf8528 ahci.c:448
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf852c
+ xor bx, bx ; 31 db ; 0xf852f
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8531
+ call 0abc0h ; e8 89 26 ; 0xf8534
+ lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf8537 ahci.c:449
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf853b
+ xor bx, bx ; 31 db ; 0xf853e
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8540
+ call 0abc0h ; e8 7a 26 ; 0xf8543
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8546 ahci.c:451
+ xor ah, ah ; 30 e4 ; 0xf8549
+ mov CL, strict byte 007h ; b1 07 ; 0xf854b
+ sal ax, CL ; d3 e0 ; 0xf854d
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf854f
+ add ax, 00108h ; 05 08 01 ; 0xf8552
+ cwd ; 99 ; 0xf8555
+ mov cx, dx ; 89 d1 ; 0xf8556
+ mov dx, si ; 89 f2 ; 0xf8558
+ xchg cx, ax ; 91 ; 0xf855a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf855b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf855f
+ out DX, eax ; 66 ef ; 0xf8561
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8563
+ xor ax, ax ; 31 c0 ; 0xf8566
+ xor cx, cx ; 31 c9 ; 0xf8568
+ mov dx, bx ; 89 da ; 0xf856a
+ xchg cx, ax ; 91 ; 0xf856c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf856d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8571
+ out DX, eax ; 66 ef ; 0xf8573
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf8575 ahci.c:452
+ add ax, 0010ch ; 05 0c 01 ; 0xf8578
+ cwd ; 99 ; 0xf857b
+ mov cx, dx ; 89 d1 ; 0xf857c
+ mov dx, si ; 89 f2 ; 0xf857e
+ xchg cx, ax ; 91 ; 0xf8580
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8581
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8585
+ out DX, eax ; 66 ef ; 0xf8587
+ xor ax, ax ; 31 c0 ; 0xf8589
+ xor cx, cx ; 31 c9 ; 0xf858b
+ mov dx, bx ; 89 da ; 0xf858d
+ xchg cx, ax ; 91 ; 0xf858f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8590
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8594
+ out DX, eax ; 66 ef ; 0xf8596
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf8598 ahci.c:454
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf859b
+ cwd ; 99 ; 0xf859d
+ mov cx, dx ; 89 d1 ; 0xf859e
+ mov dx, si ; 89 f2 ; 0xf85a0
+ xchg cx, ax ; 91 ; 0xf85a2
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf85a3
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf85a7
+ out DX, eax ; 66 ef ; 0xf85a9
+ xor ax, ax ; 31 c0 ; 0xf85ab
+ xor cx, cx ; 31 c9 ; 0xf85ad
+ mov dx, bx ; 89 da ; 0xf85af
+ xchg cx, ax ; 91 ; 0xf85b1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf85b2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf85b6
+ out DX, eax ; 66 ef ; 0xf85b8
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf85ba ahci.c:455
+ add ax, 00104h ; 05 04 01 ; 0xf85bd
+ cwd ; 99 ; 0xf85c0
+ mov cx, dx ; 89 d1 ; 0xf85c1
+ mov dx, si ; 89 f2 ; 0xf85c3
+ xchg cx, ax ; 91 ; 0xf85c5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf85c6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf85ca
+ out DX, eax ; 66 ef ; 0xf85cc
+ xor ax, ax ; 31 c0 ; 0xf85ce
+ xor cx, cx ; 31 c9 ; 0xf85d0
+ mov dx, bx ; 89 da ; 0xf85d2
+ xchg cx, ax ; 91 ; 0xf85d4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf85d5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf85d9
+ out DX, eax ; 66 ef ; 0xf85db
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf85dd ahci.c:458
+ add ax, 00114h ; 05 14 01 ; 0xf85e0
+ cwd ; 99 ; 0xf85e3
+ mov cx, dx ; 89 d1 ; 0xf85e4
+ mov dx, si ; 89 f2 ; 0xf85e6
+ xchg cx, ax ; 91 ; 0xf85e8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf85e9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf85ed
+ out DX, eax ; 66 ef ; 0xf85ef
+ xor ax, ax ; 31 c0 ; 0xf85f1
+ xor cx, cx ; 31 c9 ; 0xf85f3
+ mov dx, bx ; 89 da ; 0xf85f5
+ xchg cx, ax ; 91 ; 0xf85f7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf85f8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf85fc
+ out DX, eax ; 66 ef ; 0xf85fe
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8600 ahci.c:460
+ mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf8603
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf8609 ahci.c:462
+ pop di ; 5f ; 0xf860c
+ pop si ; 5e ; 0xf860d
+ pop cx ; 59 ; 0xf860e
+ pop bx ; 5b ; 0xf860f
+ pop bp ; 5d ; 0xf8610
+ retn ; c3 ; 0xf8611
+ ; disGetNextSymbol 0xf8612 LB 0x28d6 -> off=0x0 cb=0000000000000250 uValue=00000000000f7012 'ahci_port_init'
+ahci_port_init: ; 0xf8612 LB 0x250
+ push bp ; 55 ; 0xf8612 ahci.c:468
+ mov bp, sp ; 89 e5 ; 0xf8613
+ push cx ; 51 ; 0xf8615
+ push si ; 56 ; 0xf8616
+ push di ; 57 ; 0xf8617
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8618
+ mov si, ax ; 89 c6 ; 0xf861b
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf861d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8620
+ call 0848fh ; e8 69 fe ; 0xf8623 ahci.c:471
+ mov al, bl ; 88 d8 ; 0xf8626 ahci.c:474
+ xor ah, ah ; 30 e4 ; 0xf8628
+ mov CL, strict byte 007h ; b1 07 ; 0xf862a
+ sal ax, CL ; d3 e0 ; 0xf862c
+ add ax, 00118h ; 05 18 01 ; 0xf862e
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8631 ahci.c:267
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8634
+ xor cx, cx ; 31 c9 ; 0xf8639 ahci.c:269
+ mov dx, bx ; 89 da ; 0xf863b
+ xchg cx, ax ; 91 ; 0xf863d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf863e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8642
+ out DX, eax ; 66 ef ; 0xf8644
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8646 ahci.c:270
+ mov dx, bx ; 89 da ; 0xf8649
+ in eax, DX ; 66 ed ; 0xf864b
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf864d
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf864f
+ xchg dx, ax ; 92 ; 0xf8653
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8654
+ mov cx, dx ; 89 d1 ; 0xf8656
+ mov dx, bx ; 89 da ; 0xf8658
+ xchg cx, ax ; 91 ; 0xf865a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf865b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf865f
+ out DX, eax ; 66 ef ; 0xf8661
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8663 ahci.c:477
+ xor ah, ah ; 30 e4 ; 0xf8666
+ mov CL, strict byte 007h ; b1 07 ; 0xf8668
+ sal ax, CL ; d3 e0 ; 0xf866a
+ add ax, 00118h ; 05 18 01 ; 0xf866c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf866f ahci.c:277
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8672
+ xor cx, cx ; 31 c9 ; 0xf8677 ahci.c:279
+ mov dx, bx ; 89 da ; 0xf8679
+ xchg cx, ax ; 91 ; 0xf867b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf867c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8680
+ out DX, eax ; 66 ef ; 0xf8682
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf8684 ahci.c:280
+ in eax, DX ; 66 ed ; 0xf8687
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8689
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf868b
+ xchg dx, ax ; 92 ; 0xf868f
+ test ax, 0c011h ; a9 11 c0 ; 0xf8690
+ je short 08699h ; 74 04 ; 0xf8693
+ mov AL, strict byte 001h ; b0 01 ; 0xf8695
+ jmp short 0869bh ; eb 02 ; 0xf8697
+ xor al, al ; 30 c0 ; 0xf8699
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf869b ahci.c:281
+ je short 08663h ; 74 c4 ; 0xf869d
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf869f ahci.c:488
+ xor bx, bx ; 31 db ; 0xf86a2
+ mov ax, si ; 89 f0 ; 0xf86a4
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf86a6
+ call 0abc0h ; e8 14 25 ; 0xf86a9
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf86ac ahci.c:489
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf86b0
+ xor bx, bx ; 31 db ; 0xf86b3
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf86b5
+ call 0abc0h ; e8 05 25 ; 0xf86b8
+ lea di, [si+00200h] ; 8d bc 00 02 ; 0xf86bb ahci.c:490
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf86bf
+ xor bx, bx ; 31 db ; 0xf86c2
+ mov ax, di ; 89 f8 ; 0xf86c4
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf86c6
+ call 0abc0h ; e8 f4 24 ; 0xf86c9
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf86cc ahci.c:494
+ xor bh, bh ; 30 ff ; 0xf86cf
+ mov CL, strict byte 007h ; b1 07 ; 0xf86d1
+ sal bx, CL ; d3 e3 ; 0xf86d3
+ lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf86d5
+ cwd ; 99 ; 0xf86d9
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86da
+ mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf86dd
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf86e2
+ mov cx, dx ; 89 d1 ; 0xf86e5
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf86e7
+ xchg cx, ax ; 91 ; 0xf86ea
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf86eb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf86ef
+ out DX, eax ; 66 ef ; 0xf86f1
+ mov ax, di ; 89 f8 ; 0xf86f3
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf86f5
+ call 08101h ; e8 06 fa ; 0xf86f8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86fb
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf86fe
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8703
+ mov cx, dx ; 89 d1 ; 0xf8706
+ mov dx, di ; 89 fa ; 0xf8708
+ xchg cx, ax ; 91 ; 0xf870a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf870b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf870f
+ out DX, eax ; 66 ef ; 0xf8711
+ lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8713 ahci.c:495
+ cwd ; 99 ; 0xf8717
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8718
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf871b
+ mov cx, dx ; 89 d1 ; 0xf8720
+ mov dx, di ; 89 fa ; 0xf8722
+ xchg cx, ax ; 91 ; 0xf8724
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8725
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8729
+ out DX, eax ; 66 ef ; 0xf872b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf872d
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8730
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8735
+ xor ax, ax ; 31 c0 ; 0xf8738
+ xor cx, cx ; 31 c9 ; 0xf873a
+ xchg cx, ax ; 91 ; 0xf873c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf873d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8741
+ out DX, eax ; 66 ef ; 0xf8743
+ lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf8745 ahci.c:498
+ cwd ; 99 ; 0xf8749
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf874a
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf874d
+ mov cx, dx ; 89 d1 ; 0xf8752
+ mov dx, di ; 89 fa ; 0xf8754
+ xchg cx, ax ; 91 ; 0xf8756
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8757
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf875b
+ out DX, eax ; 66 ef ; 0xf875d
+ mov ax, si ; 89 f0 ; 0xf875f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8761
+ call 08101h ; e8 9a f9 ; 0xf8764
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8767
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf876a
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf876f
+ mov cx, dx ; 89 d1 ; 0xf8772
+ mov dx, di ; 89 fa ; 0xf8774
+ xchg cx, ax ; 91 ; 0xf8776
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8777
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf877b
+ out DX, eax ; 66 ef ; 0xf877d
+ lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf877f ahci.c:499
+ cwd ; 99 ; 0xf8783
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8784
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8787
+ mov cx, dx ; 89 d1 ; 0xf878c
+ mov dx, di ; 89 fa ; 0xf878e
+ xchg cx, ax ; 91 ; 0xf8790
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8791
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8795
+ out DX, eax ; 66 ef ; 0xf8797
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8799
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf879c
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf87a1
+ xor ax, ax ; 31 c0 ; 0xf87a4
+ xor cx, cx ; 31 c9 ; 0xf87a6
+ xchg cx, ax ; 91 ; 0xf87a8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87a9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87ad
+ out DX, eax ; 66 ef ; 0xf87af
+ lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf87b1 ahci.c:502
+ cwd ; 99 ; 0xf87b5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf87b6
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf87b9
+ mov cx, dx ; 89 d1 ; 0xf87be
+ mov dx, di ; 89 fa ; 0xf87c0
+ xchg cx, ax ; 91 ; 0xf87c2
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87c3
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87c7
+ out DX, eax ; 66 ef ; 0xf87c9
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf87cb
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf87ce
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf87d3
+ xor ax, ax ; 31 c0 ; 0xf87d6
+ xor cx, cx ; 31 c9 ; 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 ax, [bx+00110h] ; 8d 87 10 01 ; 0xf87e3 ahci.c:503
+ cwd ; 99 ; 0xf87e7
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf87e8
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf87eb
+ mov cx, dx ; 89 d1 ; 0xf87f0
+ mov dx, di ; 89 fa ; 0xf87f2
+ xchg cx, ax ; 91 ; 0xf87f4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87f5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87f9
+ out DX, eax ; 66 ef ; 0xf87fb
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf87fd
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8800
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8805
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8808
+ mov cx, ax ; 89 c1 ; 0xf880b
+ xchg cx, ax ; 91 ; 0xf880d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf880e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8812
+ out DX, eax ; 66 ef ; 0xf8814
+ lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8816 ahci.c:505
+ cwd ; 99 ; 0xf881a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf881b
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf881e
+ mov cx, dx ; 89 d1 ; 0xf8823
+ mov dx, bx ; 89 da ; 0xf8825
+ xchg cx, ax ; 91 ; 0xf8827
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8828
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf882c
+ out DX, eax ; 66 ef ; 0xf882e
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8830
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8833
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8838
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf883b
+ mov cx, ax ; 89 c1 ; 0xf883e
+ xchg cx, ax ; 91 ; 0xf8840
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8841
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8845
+ out DX, eax ; 66 ef ; 0xf8847
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8849 ahci.c:507
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf884c
+ mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf884f
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8854 ahci.c:508
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf885a ahci.c:509
+ pop di ; 5f ; 0xf885d
+ pop si ; 5e ; 0xf885e
+ pop cx ; 59 ; 0xf885f
+ pop bp ; 5d ; 0xf8860
+ retn ; c3 ; 0xf8861
+ ; disGetNextSymbol 0xf8862 LB 0x2686 -> off=0x0 cb=00000000000000aa uValue=00000000000f7262 'ahci_read_sectors'
+ahci_read_sectors: ; 0xf8862 LB 0xaa
+ push bp ; 55 ; 0xf8862 ahci.c:518
+ mov bp, sp ; 89 e5 ; 0xf8863
+ push si ; 56 ; 0xf8865
+ push di ; 57 ; 0xf8866
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf8867 ahci.c:523
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf886a
+ xor ah, ah ; 30 e4 ; 0xf886e
+ mov di, ax ; 89 c7 ; 0xf8870
+ sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8872
+ cmp di, strict byte 00004h ; 83 ff 04 ; 0xf8875 ahci.c:524
+ jbe short 0888dh ; 76 13 ; 0xf8878
+ push di ; 57 ; 0xf887a ahci.c:525
+ mov ax, 00c9eh ; b8 9e 0c ; 0xf887b
+ push ax ; 50 ; 0xf887e
+ mov ax, 00cb0h ; b8 b0 0c ; 0xf887f
+ push ax ; 50 ; 0xf8882
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf8883
+ push ax ; 50 ; 0xf8886
+ call 0195ch ; e8 d2 90 ; 0xf8887
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf888a
+ xor bx, bx ; 31 db ; 0xf888d ahci.c:531
+ les si, [bp+004h] ; c4 76 04 ; 0xf888f
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8892
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8897 ahci.c:247
+ mov es, dx ; 8e c2 ; 0xf889b
+ mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf889d
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf88a2 ahci.c:532
+ add di, si ; 01 f7 ; 0xf88a5
+ mov bl, byte [es:di+002a1h] ; 26 8a 9d a1 02 ; 0xf88a7
+ xor bh, bh ; 30 ff ; 0xf88ac
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf88ae
+ xor ax, ax ; 31 c0 ; 0xf88b3
+ call 08612h ; e8 5a fd ; 0xf88b5
+ mov bx, strict word 00025h ; bb 25 00 ; 0xf88b8 ahci.c:533
+ mov ax, si ; 89 f0 ; 0xf88bb
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf88bd
+ call 08278h ; e8 b5 f9 ; 0xf88c0
+ mov bx, ax ; 89 c3 ; 0xf88c3
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf88c5 ahci.c:535
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf88c8
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf88cc
+ mov CL, strict byte 009h ; b1 09 ; 0xf88d0 ahci.c:537
+ sal ax, CL ; d3 e0 ; 0xf88d2
+ mov cx, ax ; 89 c1 ; 0xf88d4
+ shr cx, 1 ; d1 e9 ; 0xf88d6
+ mov di, si ; 89 f7 ; 0xf88d8
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf88da
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf88de
+ mov si, di ; 89 fe ; 0xf88e2
+ mov dx, ax ; 89 c2 ; 0xf88e4
+ mov es, ax ; 8e c0 ; 0xf88e6
+ push DS ; 1e ; 0xf88e8
+ mov ds, dx ; 8e da ; 0xf88e9
+ rep movsw ; f3 a5 ; 0xf88eb
+ pop DS ; 1f ; 0xf88ed
+ xor di, di ; 31 ff ; 0xf88ee ahci.c:539
+ les si, [bp+004h] ; c4 76 04 ; 0xf88f0
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf88f3
+ mov ax, word [es:di+00264h] ; 26 8b 85 64 02 ; 0xf88f8 ahci.c:252
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88fd
+ mov ax, bx ; 89 d8 ; 0xf8901 ahci.c:541
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8903
+ pop di ; 5f ; 0xf8906
+ pop si ; 5e ; 0xf8907
+ pop bp ; 5d ; 0xf8908
+ retn 00004h ; c2 04 00 ; 0xf8909
+ ; disGetNextSymbol 0xf890c LB 0x25dc -> off=0x0 cb=0000000000000088 uValue=00000000000f730c 'ahci_write_sectors'
+ahci_write_sectors: ; 0xf890c LB 0x88
+ push bp ; 55 ; 0xf890c ahci.c:550
+ mov bp, sp ; 89 e5 ; 0xf890d
+ push si ; 56 ; 0xf890f
+ push di ; 57 ; 0xf8910
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf8911
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8914
+ mov es, cx ; 8e c1 ; 0xf8917 ahci.c:555
+ mov bl, byte [es:si+00ch] ; 26 8a 5c 0c ; 0xf8919
+ xor bh, bh ; 30 ff ; 0xf891d
+ sub bx, strict byte 0000ch ; 83 eb 0c ; 0xf891f
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf8922 ahci.c:556
+ jbe short 0893ah ; 76 13 ; 0xf8925
+ push bx ; 53 ; 0xf8927 ahci.c:557
+ mov ax, 00ccfh ; b8 cf 0c ; 0xf8928
+ push ax ; 50 ; 0xf892b
+ mov ax, 00cb0h ; b8 b0 0c ; 0xf892c
+ push ax ; 50 ; 0xf892f
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf8930
+ push ax ; 50 ; 0xf8933
+ call 0195ch ; e8 25 90 ; 0xf8934
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8937
+ xor di, di ; 31 ff ; 0xf893a ahci.c:563
+ mov es, cx ; 8e c1 ; 0xf893c
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf893e
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8943 ahci.c:247
+ mov es, dx ; 8e c2 ; 0xf8947
+ mov word [es:di+00264h], ax ; 26 89 85 64 02 ; 0xf8949
+ mov es, cx ; 8e c1 ; 0xf894e ahci.c:564
+ add bx, si ; 01 f3 ; 0xf8950
+ mov bl, byte [es:bx+002a1h] ; 26 8a 9f a1 02 ; 0xf8952
+ xor bh, bh ; 30 ff ; 0xf8957
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8959
+ xor ax, ax ; 31 c0 ; 0xf895e
+ call 08612h ; e8 af fc ; 0xf8960
+ mov bx, strict word 00035h ; bb 35 00 ; 0xf8963 ahci.c:565
+ mov ax, si ; 89 f0 ; 0xf8966
+ mov dx, cx ; 89 ca ; 0xf8968
+ call 08278h ; e8 0b f9 ; 0xf896a
+ mov dx, ax ; 89 c2 ; 0xf896d
+ mov es, cx ; 8e c1 ; 0xf896f ahci.c:567
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8971
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8975
+ xor bx, bx ; 31 db ; 0xf8979 ahci.c:568
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf897b
+ mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8980 ahci.c:252
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8985
+ mov ax, dx ; 89 d0 ; 0xf8989 ahci.c:570
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf898b
+ pop di ; 5f ; 0xf898e
+ pop si ; 5e ; 0xf898f
+ pop bp ; 5d ; 0xf8990
+ retn 00004h ; c2 04 00 ; 0xf8991
+ ; disGetNextSymbol 0xf8994 LB 0x2554 -> off=0x0 cb=000000000000015a uValue=00000000000f7394 'ahci_cmd_packet'
+ahci_cmd_packet: ; 0xf8994 LB 0x15a
+ push bp ; 55 ; 0xf8994 ahci.c:577
+ mov bp, sp ; 89 e5 ; 0xf8995
+ push si ; 56 ; 0xf8997
+ push di ; 57 ; 0xf8998
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf8999
+ mov di, ax ; 89 c7 ; 0xf899c
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf899e
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf89a1
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xf89a4
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf89a7 ahci.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf89aa
+ mov es, ax ; 8e c0 ; 0xf89ad
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf89af
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf89b2 ahci.c:59
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf89b5
+ cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf89b8 ahci.c:584
+ jne short 089e1h ; 75 23 ; 0xf89bc
+ mov bx, 00ddch ; bb dc 0d ; 0xf89be ahci.c:585
+ mov cx, ds ; 8c d9 ; 0xf89c1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf89c3
+ call 01919h ; e8 50 8f ; 0xf89c6
+ mov ax, 00ce2h ; b8 e2 0c ; 0xf89c9
+ push ax ; 50 ; 0xf89cc
+ mov ax, 00cf2h ; b8 f2 0c ; 0xf89cd
+ push ax ; 50 ; 0xf89d0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf89d1
+ push ax ; 50 ; 0xf89d4
+ call 0195ch ; e8 84 8f ; 0xf89d5
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf89d8
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf89db ahci.c:586
+ jmp near 08ae5h ; e9 04 01 ; 0xf89de
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf89e1 ahci.c:597
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf89e4
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf89e7
+ sal ax, 1 ; d1 e0 ; 0xf89ea
+ rcl dx, 1 ; d1 d2 ; 0xf89ec
+ loop 089eah ; e2 fa ; 0xf89ee
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf89f0
+ mov word [es:si], ax ; 26 89 04 ; 0xf89f3
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf89f6
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf89fa
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8a00
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf8a06 ahci.c:598
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8a09
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf8a0d
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf8a10
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf8a14 ahci.c:599
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf8a18
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8a1b
+ xor cx, cx ; 31 c9 ; 0xf8a1e
+ call 0ab70h ; e8 4d 21 ; 0xf8a20
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8a23
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf8a27 ahci.c:602
+ mov ax, word [es:si+002a6h] ; 26 8b 84 a6 02 ; 0xf8a2c
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8a31
+ sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8a34 ahci.c:590
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8a37 ahci.c:247
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf8a3b
+ mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8a3e
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8a43 ahci.c:605
+ mov bx, si ; 89 f3 ; 0xf8a46
+ add bx, di ; 01 fb ; 0xf8a48
+ mov bl, byte [es:bx+002a1h] ; 26 8a 9f a1 02 ; 0xf8a4a
+ xor bh, bh ; 30 ff ; 0xf8a4f
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8a51
+ xor ax, ax ; 31 c0 ; 0xf8a56
+ call 08612h ; e8 b7 fb ; 0xf8a58
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf8a5b ahci.c:608
+ xor ah, ah ; 30 e4 ; 0xf8a5e
+ push ax ; 50 ; 0xf8a60
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8a61
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf8a64
+ mov ax, 000c0h ; b8 c0 00 ; 0xf8a67
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a6a
+ call 0abd0h ; e8 60 21 ; 0xf8a6d
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8a70 ahci.c:612
+ mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf8a73
+ mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf8a79 ahci.c:613
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf8a7f
+ mov bx, 000a0h ; bb a0 00 ; 0xf8a85 ahci.c:615
+ mov ax, si ; 89 f0 ; 0xf8a88
+ mov dx, es ; 8c c2 ; 0xf8a8a
+ call 08278h ; e8 e9 f7 ; 0xf8a8c
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf8a8f ahci.c:617
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf8a92
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf8a96
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8a9a
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf8a9d
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf8aa1
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf8aa5 ahci.c:619
+ mov cx, dx ; 89 d1 ; 0xf8aa9
+ shr cx, 1 ; d1 e9 ; 0xf8aab
+ rcr bx, 1 ; d1 db ; 0xf8aad
+ mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf8aaf
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8ab3
+ mov cx, bx ; 89 d9 ; 0xf8ab7
+ mov si, di ; 89 fe ; 0xf8ab9
+ mov dx, ax ; 89 c2 ; 0xf8abb
+ mov es, ax ; 8e c0 ; 0xf8abd
+ push DS ; 1e ; 0xf8abf
+ mov ds, dx ; 8e da ; 0xf8ac0
+ rep movsw ; f3 a5 ; 0xf8ac2
+ pop DS ; 1f ; 0xf8ac4
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf8ac5 ahci.c:252
+ mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8ac8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8acd
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ad1 ahci.c:623
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8ad4
+ or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf8ad8
+ jne short 08ae3h ; 75 05 ; 0xf8adc
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8ade
+ jmp short 08ae5h ; eb 02 ; 0xf8ae1
+ xor ax, ax ; 31 c0 ; 0xf8ae3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8ae5 ahci.c:624
+ pop di ; 5f ; 0xf8ae8
+ pop si ; 5e ; 0xf8ae9
+ pop bp ; 5d ; 0xf8aea
+ retn 0000ah ; c2 0a 00 ; 0xf8aeb
+ ; disGetNextSymbol 0xf8aee LB 0x23fa -> off=0x0 cb=0000000000000005 uValue=00000000000f74ee 'wait_ticks_device_init'
+wait_ticks_device_init: ; 0xf8aee LB 0x5
+ push bp ; 55 ; 0xf8aee ahci.c:627
+ mov bp, sp ; 89 e5 ; 0xf8aef
+ pop bp ; 5d ; 0xf8af1 ahci.c:629
+ retn ; c3 ; 0xf8af2
+ ; disGetNextSymbol 0xf8af3 LB 0x23f5 -> off=0x0 cb=00000000000004e1 uValue=00000000000f74f3 'ahci_port_detect_device'
+ahci_port_detect_device: ; 0xf8af3 LB 0x4e1
+ push bp ; 55 ; 0xf8af3 ahci.c:631
+ mov bp, sp ; 89 e5 ; 0xf8af4
+ push cx ; 51 ; 0xf8af6
+ push si ; 56 ; 0xf8af7
+ push di ; 57 ; 0xf8af8
+ sub sp, 0022ah ; 81 ec 2a 02 ; 0xf8af9
+ mov si, ax ; 89 c6 ; 0xf8afd
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf8aff
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8b02
+ mov word [bp-01eh], strict word 00000h ; c7 46 e2 00 00 ; 0xf8b05 ahci.c:637
+ mov al, bl ; 88 d8 ; 0xf8b0a ahci.c:639
+ mov byte [bp-028h], bl ; 88 5e d8 ; 0xf8b0c
+ xor al, bl ; 30 d8 ; 0xf8b0f
+ mov byte [bp-027h], al ; 88 46 d9 ; 0xf8b11
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf8b14
+ mov ax, si ; 89 f0 ; 0xf8b17
+ call 08612h ; e8 f6 fa ; 0xf8b19
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8b1c ahci.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8b1f
+ mov es, ax ; 8e c0 ; 0xf8b22
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8b24
+ mov word [bp-026h], strict word 0005eh ; c7 46 da 5e 00 ; 0xf8b27 ahci.c:59
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf8b2c
+ mov CL, strict byte 007h ; b1 07 ; 0xf8b2f ahci.c:644
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf8b31
+ sal ax, CL ; d3 e0 ; 0xf8b34
+ add ax, 0012ch ; 05 2c 01 ; 0xf8b36
+ cwd ; 99 ; 0xf8b39
+ mov di, ax ; 89 c7 ; 0xf8b3a
+ mov bx, dx ; 89 d3 ; 0xf8b3c
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8b3e
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b41
+ mov cx, bx ; 89 d9 ; 0xf8b46
+ xchg cx, ax ; 91 ; 0xf8b48
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b49
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b4d
+ out DX, eax ; 66 ef ; 0xf8b4f
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8b51
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b54
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b59
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8b5c
+ xor cx, cx ; 31 c9 ; 0xf8b5f
+ xchg cx, ax ; 91 ; 0xf8b61
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b62
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b66
+ out DX, eax ; 66 ef ; 0xf8b68
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8b6a ahci.c:649
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b6d
+ mov ax, di ; 89 f8 ; 0xf8b72
+ mov cx, bx ; 89 d9 ; 0xf8b74
+ xchg cx, ax ; 91 ; 0xf8b76
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b77
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b7b
+ out DX, eax ; 66 ef ; 0xf8b7d
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8b7f
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b82
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b87
+ xor ax, ax ; 31 c0 ; 0xf8b8a
+ xor cx, cx ; 31 c9 ; 0xf8b8c
+ xchg cx, ax ; 91 ; 0xf8b8e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b8f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b93
+ out DX, eax ; 66 ef ; 0xf8b95
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf8b97 ahci.c:658
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8b9a
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf8b9d
+ mov es, ax ; 8e c0 ; 0xf8ba0 ahci.c:659
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8ba2
+ add ax, strict word 00003h ; 05 03 00 ; 0xf8ba5
+ mov word [bp-022h], ax ; 89 46 de ; 0xf8ba8
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8bab
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf8baf
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf8bb2
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8bb5 ahci.c:661
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8bb8
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf8bbc
+ jc short 08bd2h ; 72 11 ; 0xf8bbf
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8bc1
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf8bc5
+ jne short 08c20h ; 75 56 ; 0xf8bc8
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8bca
+ cmp ax, word [bp-022h] ; 3b 46 de ; 0xf8bcd
+ jnc short 08c20h ; 73 4e ; 0xf8bd0
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8bd2 ahci.c:664
+ xor ah, ah ; 30 e4 ; 0xf8bd5
+ mov CL, strict byte 007h ; b1 07 ; 0xf8bd7
+ sal ax, CL ; d3 e0 ; 0xf8bd9
+ add ax, 00128h ; 05 28 01 ; 0xf8bdb
+ cwd ; 99 ; 0xf8bde
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8bdf
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8be2
+ mov cx, dx ; 89 d1 ; 0xf8be7
+ mov dx, bx ; 89 da ; 0xf8be9
+ xchg cx, ax ; 91 ; 0xf8beb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8bec
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8bf0
+ out DX, eax ; 66 ef ; 0xf8bf2
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8bf4
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8bf7
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8bfc
+ in eax, DX ; 66 ed ; 0xf8bff
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8c01
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8c03
+ xchg dx, ax ; 92 ; 0xf8c07
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf8c08
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf8c0b
+ xor bx, bx ; 31 db ; 0xf8c0e ahci.c:665
+ push bx ; 53 ; 0xf8c10
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8c11
+ xor cx, cx ; 31 c9 ; 0xf8c14
+ call 080e5h ; e8 cc f4 ; 0xf8c16
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8c19
+ jne short 08bb5h ; 75 97 ; 0xf8c1c
+ jmp short 08c29h ; eb 09 ; 0xf8c1e ahci.c:667
+ cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf8c20 ahci.c:672
+ jne short 08c29h ; 75 03 ; 0xf8c24
+ jmp near 08fcch ; e9 a3 03 ; 0xf8c26
+ xor ax, ax ; 31 c0 ; 0xf8c29 ahci.c:677
+ push ax ; 50 ; 0xf8c2b
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8c2c
+ xor cx, cx ; 31 c9 ; 0xf8c2f
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf8c31
+ mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf8c34
+ call 080e5h ; e8 ab f4 ; 0xf8c37
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8c3a
+ jne short 08c26h ; 75 e7 ; 0xf8c3d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8c3f ahci.c:685
+ xor ah, ah ; 30 e4 ; 0xf8c42
+ mov CL, strict byte 007h ; b1 07 ; 0xf8c44
+ mov di, ax ; 89 c7 ; 0xf8c46
+ sal di, CL ; d3 e7 ; 0xf8c48
+ lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8c4a
+ cwd ; 99 ; 0xf8c4e
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8c4f
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8c52
+ mov cx, dx ; 89 d1 ; 0xf8c57
+ mov dx, bx ; 89 da ; 0xf8c59
+ xchg cx, ax ; 91 ; 0xf8c5b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c5c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c60
+ out DX, eax ; 66 ef ; 0xf8c62
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8c64
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8c67
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8c6c
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8c6f
+ mov cx, ax ; 89 c1 ; 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
+ les bx, [bp-026h] ; c4 5e da ; 0xf8c7d ahci.c:687
+ mov al, byte [es:bx+002a5h] ; 26 8a 87 a5 02 ; 0xf8c80
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf8c85
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf8c88 ahci.c:692
+ jnc short 08c26h ; 73 9a ; 0xf8c8a
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8c8c ahci.c:695
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8c90 ahci.c:258
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8c93
+ xor cx, cx ; 31 c9 ; 0xf8c98 ahci.c:260
+ mov dx, bx ; 89 da ; 0xf8c9a
+ xchg cx, ax ; 91 ; 0xf8c9c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c9d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ca1
+ out DX, eax ; 66 ef ; 0xf8ca3
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8ca5 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf8ca8
+ in eax, DX ; 66 ed ; 0xf8caa
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8cac
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8cae
+ xchg dx, ax ; 92 ; 0xf8cb2
+ or AL, strict byte 010h ; 0c 10 ; 0xf8cb3
+ mov cx, dx ; 89 d1 ; 0xf8cb5
+ mov dx, bx ; 89 da ; 0xf8cb7
+ xchg cx, ax ; 91 ; 0xf8cb9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8cba
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8cbe
+ out DX, eax ; 66 ef ; 0xf8cc0
+ lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8cc2 ahci.c:699
+ cwd ; 99 ; 0xf8cc6
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8cc7
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8cca
+ mov cx, dx ; 89 d1 ; 0xf8ccf
+ mov dx, bx ; 89 da ; 0xf8cd1
+ xchg cx, ax ; 91 ; 0xf8cd3
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8cd4
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8cd8
+ out DX, eax ; 66 ef ; 0xf8cda
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8cdc
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8cdf
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ce4
+ in eax, DX ; 66 ed ; 0xf8ce7
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8ce9
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8ceb
+ xchg dx, ax ; 92 ; 0xf8cef
+ mov bx, ax ; 89 c3 ; 0xf8cf0
+ mov ax, dx ; 89 d0 ; 0xf8cf2
+ mov cl, byte [bp-00ch] ; 8a 4e f4 ; 0xf8cf4
+ add cl, 00ch ; 80 c1 0c ; 0xf8cf7
+ test dx, dx ; 85 d2 ; 0xf8cfa ahci.c:700
+ jne short 08d50h ; 75 52 ; 0xf8cfc
+ cmp bx, 00101h ; 81 fb 01 01 ; 0xf8cfe
+ jne short 08d50h ; 75 4c ; 0xf8d02
+ les bx, [bp-026h] ; c4 5e da ; 0xf8d04 ahci.c:710
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8d07
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8d0d
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8d13
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8d19
+ lea dx, [bp-00230h] ; 8d 96 d0 fd ; 0xf8d1e ahci.c:711
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8d22
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8d26
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8d2a ahci.c:712
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8d30 ahci.c:713
+ mov bx, 000ech ; bb ec 00 ; 0xf8d36 ahci.c:714
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf8d39
+ mov dx, es ; 8c c2 ; 0xf8d3c
+ call 08278h ; e8 37 f5 ; 0xf8d3e
+ mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf8d41 ahci.c:717
+ test byte [bp-00230h], 080h ; f6 86 d0 fd 80 ; 0xf8d44 ahci.c:719
+ je short 08d53h ; 74 08 ; 0xf8d49
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8d4b
+ jmp short 08d55h ; eb 05 ; 0xf8d4e
+ jmp near 08f08h ; e9 b5 01 ; 0xf8d50
+ xor ax, ax ; 31 c0 ; 0xf8d53
+ mov cl, al ; 88 c1 ; 0xf8d55
+ mov ax, word [bp-0022eh] ; 8b 86 d2 fd ; 0xf8d57 ahci.c:720
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf8d5b
+ mov ax, word [bp-0022ah] ; 8b 86 d6 fd ; 0xf8d5e ahci.c:721
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf8d62
+ mov ax, word [bp-00224h] ; 8b 86 dc fd ; 0xf8d65 ahci.c:722
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf8d69
+ mov si, word [bp-001b8h] ; 8b b6 48 fe ; 0xf8d6c ahci.c:723
+ mov di, word [bp-001b6h] ; 8b be 4a fe ; 0xf8d70
+ xor ax, ax ; 31 c0 ; 0xf8d74
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf8d76
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf8d79
+ cmp di, 00fffh ; 81 ff ff 0f ; 0xf8d7c ahci.c:725
+ jne short 08d9dh ; 75 1b ; 0xf8d80
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf8d82
+ jne short 08d9dh ; 75 16 ; 0xf8d85
+ mov ax, word [bp-00162h] ; 8b 86 9e fe ; 0xf8d87 ahci.c:726
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf8d8b
+ mov ax, word [bp-00164h] ; 8b 86 9c fe ; 0xf8d8e
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf8d92
+ mov di, word [bp-00166h] ; 8b be 9a fe ; 0xf8d95
+ mov si, word [bp-00168h] ; 8b b6 98 fe ; 0xf8d99
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf8d9d ahci.c:730
+ xor bh, bh ; 30 ff ; 0xf8da0
+ mov es, [bp-024h] ; 8e 46 dc ; 0xf8da2
+ add bx, word [bp-026h] ; 03 5e da ; 0xf8da5
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8da8
+ mov byte [es:bx+002a1h], al ; 26 88 87 a1 02 ; 0xf8dab
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8db0 ahci.c:731
+ xor ah, ah ; 30 e4 ; 0xf8db3
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf8db5
+ imul dx ; f7 ea ; 0xf8db8
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf8dba
+ add bx, ax ; 01 c3 ; 0xf8dbd
+ mov word [es:bx+01eh], 0ff05h ; 26 c7 47 1e 05 ff ; 0xf8dbf
+ mov byte [es:bx+020h], cl ; 26 88 4f 20 ; 0xf8dc5 ahci.c:733
+ mov byte [es:bx+021h], 000h ; 26 c6 47 21 00 ; 0xf8dc9 ahci.c:734
+ mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf8dce ahci.c:735
+ mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf8dd4 ahci.c:736
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8dd9 ahci.c:737
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8ddc
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf8de0
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf8de3
+ mov word [es:bx+034h], di ; 26 89 7f 34 ; 0xf8de7
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf8deb
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf8def ahci.c:739
+ mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf8df2
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf8df6 ahci.c:740
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf8df9
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8dfd ahci.c:741
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf8e00
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8e04 ahci.c:744
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8e07
+ jc short 08e17h ; 72 0c ; 0xf8e09
+ jbe short 08e1fh ; 76 12 ; 0xf8e0b
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf8e0d
+ je short 08e27h ; 74 16 ; 0xf8e0f
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf8e11
+ je short 08e23h ; 74 0e ; 0xf8e13
+ jmp short 08e5dh ; eb 46 ; 0xf8e15
+ test al, al ; 84 c0 ; 0xf8e17
+ jne short 08e5dh ; 75 42 ; 0xf8e19
+ mov BL, strict byte 040h ; b3 40 ; 0xf8e1b ahci.c:747
+ jmp short 08e29h ; eb 0a ; 0xf8e1d ahci.c:748
+ mov BL, strict byte 048h ; b3 48 ; 0xf8e1f ahci.c:750
+ jmp short 08e29h ; eb 06 ; 0xf8e21 ahci.c:751
+ mov BL, strict byte 050h ; b3 50 ; 0xf8e23 ahci.c:753
+ jmp short 08e29h ; eb 02 ; 0xf8e25 ahci.c:754
+ mov BL, strict byte 058h ; b3 58 ; 0xf8e27 ahci.c:756
+ mov dl, bl ; 88 da ; 0xf8e29 ahci.c:760
+ add dl, 007h ; 80 c2 07 ; 0xf8e2b
+ xor dh, dh ; 30 f6 ; 0xf8e2e
+ mov ax, dx ; 89 d0 ; 0xf8e30
+ call 01664h ; e8 2f 88 ; 0xf8e32
+ test al, al ; 84 c0 ; 0xf8e35
+ je short 08e5dh ; 74 24 ; 0xf8e37
+ mov al, bl ; 88 d8 ; 0xf8e39 ahci.c:763
+ xor ah, ah ; 30 e4 ; 0xf8e3b
+ call 0169ch ; e8 5c 88 ; 0xf8e3d
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf8e40
+ mov al, bl ; 88 d8 ; 0xf8e43 ahci.c:764
+ add AL, strict byte 002h ; 04 02 ; 0xf8e45
+ xor ah, ah ; 30 e4 ; 0xf8e47
+ call 01664h ; e8 18 88 ; 0xf8e49
+ xor ah, ah ; 30 e4 ; 0xf8e4c
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf8e4e
+ mov ax, dx ; 89 d0 ; 0xf8e51 ahci.c:765
+ call 01664h ; e8 0e 88 ; 0xf8e53
+ xor ah, ah ; 30 e4 ; 0xf8e56
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf8e58
+ jmp short 08e6dh ; eb 10 ; 0xf8e5b ahci.c:767
+ push word [bp-012h] ; ff 76 ee ; 0xf8e5d ahci.c:768
+ push word [bp-014h] ; ff 76 ec ; 0xf8e60
+ push di ; 57 ; 0xf8e63
+ push si ; 56 ; 0xf8e64
+ mov dx, ss ; 8c d2 ; 0xf8e65
+ lea ax, [bp-030h] ; 8d 46 d0 ; 0xf8e67
+ call 05891h ; e8 24 ca ; 0xf8e6a
+ mov bx, 00ddch ; bb dc 0d ; 0xf8e6d ahci.c:772
+ mov cx, ds ; 8c d9 ; 0xf8e70
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8e72
+ call 01919h ; e8 a1 8a ; 0xf8e75
+ push word [bp-012h] ; ff 76 ee ; 0xf8e78
+ push word [bp-014h] ; ff 76 ec ; 0xf8e7b
+ push di ; 57 ; 0xf8e7e
+ push si ; 56 ; 0xf8e7f
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf8e80
+ push ax ; 50 ; 0xf8e83
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf8e84
+ push ax ; 50 ; 0xf8e87
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf8e88
+ push ax ; 50 ; 0xf8e8b
+ push word [bp-02ah] ; ff 76 d6 ; 0xf8e8c
+ push word [bp-01ah] ; ff 76 e6 ; 0xf8e8f
+ push word [bp-018h] ; ff 76 e8 ; 0xf8e92
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8e95
+ xor ah, ah ; 30 e4 ; 0xf8e98
+ push ax ; 50 ; 0xf8e9a
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8e9b
+ push ax ; 50 ; 0xf8e9e
+ mov ax, 00d12h ; b8 12 0d ; 0xf8e9f
+ push ax ; 50 ; 0xf8ea2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8ea3
+ push ax ; 50 ; 0xf8ea6
+ call 0195ch ; e8 b2 8a ; 0xf8ea7
+ add sp, strict byte 0001ch ; 83 c4 1c ; 0xf8eaa
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8ead ahci.c:774
+ xor ah, ah ; 30 e4 ; 0xf8eb0
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf8eb2
+ imul dx ; f7 ea ; 0xf8eb5
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf8eb7
+ add di, ax ; 01 c7 ; 0xf8eba
+ mov es, [bp-024h] ; 8e 46 dc ; 0xf8ebc
+ lea di, [di+026h] ; 8d 7d 26 ; 0xf8ebf
+ push DS ; 1e ; 0xf8ec2
+ push SS ; 16 ; 0xf8ec3
+ pop DS ; 1f ; 0xf8ec4
+ lea si, [bp-030h] ; 8d 76 d0 ; 0xf8ec5
+ movsw ; a5 ; 0xf8ec8
+ movsw ; a5 ; 0xf8ec9
+ movsw ; a5 ; 0xf8eca
+ pop DS ; 1f ; 0xf8ecb
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf8ecc ahci.c:777
+ mov bl, byte [es:bx+0024eh] ; 26 8a 9f 4e 02 ; 0xf8ecf
+ mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf8ed4 ahci.c:778
+ add dl, 00ch ; 80 c2 0c ; 0xf8ed7
+ mov al, bl ; 88 d8 ; 0xf8eda
+ xor ah, ah ; 30 e4 ; 0xf8edc
+ mov si, word [bp-026h] ; 8b 76 da ; 0xf8ede
+ add si, ax ; 01 c6 ; 0xf8ee1
+ mov byte [es:si+0024fh], dl ; 26 88 94 4f 02 ; 0xf8ee3
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf8ee8 ahci.c:779
+ mov si, word [bp-026h] ; 8b 76 da ; 0xf8eea ahci.c:780
+ mov byte [es:si+0024eh], bl ; 26 88 9c 4e 02 ; 0xf8eed
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf8ef2 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8ef5
+ mov es, ax ; 8e c0 ; 0xf8ef8
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf8efa
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf8efd ahci.c:784
+ mov si, strict word 00075h ; be 75 00 ; 0xf8eff ahci.c:53
+ mov byte [es:si], bl ; 26 88 1c ; 0xf8f02
+ jmp near 08fbeh ; e9 b6 00 ; 0xf8f05 ahci.c:787
+ cmp dx, 0eb14h ; 81 fa 14 eb ; 0xf8f08
+ jne short 08f60h ; 75 52 ; 0xf8f0c
+ cmp bx, 00101h ; 81 fb 01 01 ; 0xf8f0e
+ jne short 08f60h ; 75 4c ; 0xf8f12
+ les bx, [bp-026h] ; c4 5e da ; 0xf8f14 ahci.c:792
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8f17
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8f1d
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8f23
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8f29
+ lea dx, [bp-00230h] ; 8d 96 d0 fd ; 0xf8f2e ahci.c:793
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8f32
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8f36
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8f3a ahci.c:794
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8f40 ahci.c:795
+ mov bx, 000a1h ; bb a1 00 ; 0xf8f46 ahci.c:796
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf8f49
+ mov dx, es ; 8c c2 ; 0xf8f4c
+ call 08278h ; e8 27 f3 ; 0xf8f4e
+ mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf8f51 ahci.c:799
+ test byte [bp-00230h], 080h ; f6 86 d0 fd 80 ; 0xf8f54 ahci.c:801
+ je short 08f62h ; 74 07 ; 0xf8f59
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf8f5b
+ jmp short 08f64h ; eb 04 ; 0xf8f5e
+ jmp short 08fbeh ; eb 5c ; 0xf8f60
+ xor cx, cx ; 31 c9 ; 0xf8f62
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf8f64 ahci.c:803
+ xor bh, bh ; 30 ff ; 0xf8f67
+ mov es, [bp-024h] ; 8e 46 dc ; 0xf8f69
+ add bx, word [bp-026h] ; 03 5e da ; 0xf8f6c
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8f6f
+ mov byte [es:bx+002a1h], al ; 26 88 87 a1 02 ; 0xf8f72
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8f77 ahci.c:804
+ xor ah, ah ; 30 e4 ; 0xf8f7a
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf8f7c
+ imul dx ; f7 ea ; 0xf8f7f
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf8f81
+ add bx, ax ; 01 c3 ; 0xf8f84
+ mov word [es:bx+01eh], 00505h ; 26 c7 47 1e 05 05 ; 0xf8f86
+ mov byte [es:bx+020h], cl ; 26 88 4f 20 ; 0xf8f8c ahci.c:806
+ mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf8f90 ahci.c:807
+ mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf8f96 ahci.c:808
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf8f9b ahci.c:811
+ mov dl, byte [es:bx+00263h] ; 26 8a 97 63 02 ; 0xf8f9e
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8fa3 ahci.c:812
+ add AL, strict byte 00ch ; 04 0c ; 0xf8fa6
+ mov bl, dl ; 88 d3 ; 0xf8fa8
+ xor bh, bh ; 30 ff ; 0xf8faa
+ add bx, word [bp-026h] ; 03 5e da ; 0xf8fac
+ mov byte [es:bx+00264h], al ; 26 88 87 64 02 ; 0xf8faf
+ db 0feh, 0c2h
+ ; inc dl ; fe c2 ; 0xf8fb4 ahci.c:813
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf8fb6 ahci.c:814
+ mov byte [es:bx+00263h], dl ; 26 88 97 63 02 ; 0xf8fb9
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf8fbe ahci.c:819
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8fc1 ahci.c:820
+ les bx, [bp-026h] ; c4 5e da ; 0xf8fc4
+ mov byte [es:bx+002a5h], al ; 26 88 87 a5 02 ; 0xf8fc7
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8fcc ahci.c:825
+ pop di ; 5f ; 0xf8fcf
+ pop si ; 5e ; 0xf8fd0
+ pop cx ; 59 ; 0xf8fd1
+ pop bp ; 5d ; 0xf8fd2
+ retn ; c3 ; 0xf8fd3
+ ; disGetNextSymbol 0xf8fd4 LB 0x1f14 -> off=0x0 cb=000000000000003a uValue=00000000000f79d4 'ahci_mem_alloc'
+ahci_mem_alloc: ; 0xf8fd4 LB 0x3a
+ push bx ; 53 ; 0xf8fd4 ahci.c:830
+ push cx ; 51 ; 0xf8fd5
+ push dx ; 52 ; 0xf8fd6
+ push di ; 57 ; 0xf8fd7
+ push bp ; 55 ; 0xf8fd8
+ mov bp, sp ; 89 e5 ; 0xf8fd9
+ mov di, 00413h ; bf 13 04 ; 0xf8fdb ahci.c:58
+ xor ax, ax ; 31 c0 ; 0xf8fde
+ mov es, ax ; 8e c0 ; 0xf8fe0
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8fe2
+ test ax, ax ; 85 c0 ; 0xf8fe5 ahci.c:839
+ je short 09008h ; 74 1f ; 0xf8fe7
+ dec ax ; 48 ; 0xf8fe9 ahci.c:840
+ mov bx, ax ; 89 c3 ; 0xf8fea
+ xor dx, dx ; 31 d2 ; 0xf8fec ahci.c:843
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf8fee
+ sal ax, 1 ; d1 e0 ; 0xf8ff1
+ rcl dx, 1 ; d1 d2 ; 0xf8ff3
+ loop 08ff1h ; e2 fa ; 0xf8ff5
+ mov di, dx ; 89 d7 ; 0xf8ff7
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf8ff9
+ shr di, 1 ; d1 ef ; 0xf8ffc
+ rcr ax, 1 ; d1 d8 ; 0xf8ffe
+ loop 08ffch ; e2 fa ; 0xf9000
+ mov di, 00413h ; bf 13 04 ; 0xf9002 ahci.c:63
+ mov word [es:di], bx ; 26 89 1d ; 0xf9005
+ pop bp ; 5d ; 0xf9008 ahci.c:848
+ pop di ; 5f ; 0xf9009
+ pop dx ; 5a ; 0xf900a
+ pop cx ; 59 ; 0xf900b
+ pop bx ; 5b ; 0xf900c
+ retn ; c3 ; 0xf900d
+ ; disGetNextSymbol 0xf900e LB 0x1eda -> off=0x0 cb=0000000000000149 uValue=00000000000f7a0e 'ahci_hba_init'
+ahci_hba_init: ; 0xf900e LB 0x149
+ push bp ; 55 ; 0xf900e ahci.c:853
+ mov bp, sp ; 89 e5 ; 0xf900f
+ push bx ; 53 ; 0xf9011
+ push cx ; 51 ; 0xf9012
+ push dx ; 52 ; 0xf9013
+ push si ; 56 ; 0xf9014
+ push di ; 57 ; 0xf9015
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9016
+ mov si, ax ; 89 c6 ; 0xf9019
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf901b ahci.c:58
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf901e
+ mov es, ax ; 8e c0 ; 0xf9021
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf9023
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf9026 ahci.c:864
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf9029 ahci.c:866
+ xor cx, cx ; 31 c9 ; 0xf902c
+ mov dx, si ; 89 f2 ; 0xf902e
+ xchg cx, ax ; 91 ; 0xf9030
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9031
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9035
+ out DX, eax ; 66 ef ; 0xf9037
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf9039
+ in eax, DX ; 66 ed ; 0xf903c
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf903e
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9040
+ xchg dx, ax ; 92 ; 0xf9044
+ call 08fd4h ; e8 8c ff ; 0xf9045 ahci.c:872
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9048
+ test ax, ax ; 85 c0 ; 0xf904b ahci.c:873
+ jne short 09052h ; 75 03 ; 0xf904d
+ jmp near 0914dh ; e9 fb 00 ; 0xf904f
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9052 ahci.c:876
+ mov es, di ; 8e c7 ; 0xf9055
+ mov word [es:bx+002a6h], ax ; 26 89 87 a6 02 ; 0xf9057
+ mov byte [es:bx+002a5h], 000h ; 26 c6 87 a5 02 00 ; 0xf905c ahci.c:882
+ xor bx, bx ; 31 db ; 0xf9062 ahci.c:884
+ mov es, ax ; 8e c0 ; 0xf9064
+ mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf9066 ahci.c:885
+ mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf906c ahci.c:886
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9071 ahci.c:260
+ xor cx, cx ; 31 c9 ; 0xf9074
+ mov dx, si ; 89 f2 ; 0xf9076
+ xchg cx, ax ; 91 ; 0xf9078
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9079
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf907d
+ out DX, eax ; 66 ef ; 0xf907f
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf9081 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf9084
+ in eax, DX ; 66 ed ; 0xf9086
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9088
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf908a
+ xchg dx, ax ; 92 ; 0xf908e
+ or AL, strict byte 001h ; 0c 01 ; 0xf908f
+ mov cx, dx ; 89 d1 ; 0xf9091
+ mov dx, bx ; 89 da ; 0xf9093
+ xchg cx, ax ; 91 ; 0xf9095
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9096
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf909a
+ out DX, eax ; 66 ef ; 0xf909c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf909e ahci.c:892
+ xor cx, cx ; 31 c9 ; 0xf90a1
+ mov dx, si ; 89 f2 ; 0xf90a3
+ xchg cx, ax ; 91 ; 0xf90a5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf90a6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf90aa
+ out DX, eax ; 66 ef ; 0xf90ac
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf90ae
+ mov dx, bx ; 89 da ; 0xf90b1
+ in eax, DX ; 66 ed ; 0xf90b3
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf90b5
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf90b7
+ xchg dx, ax ; 92 ; 0xf90bb
+ test AL, strict byte 001h ; a8 01 ; 0xf90bc ahci.c:893
+ jne short 0909eh ; 75 de ; 0xf90be
+ xor ax, ax ; 31 c0 ; 0xf90c0 ahci.c:895
+ xor cx, cx ; 31 c9 ; 0xf90c2
+ mov dx, si ; 89 f2 ; 0xf90c4
+ xchg cx, ax ; 91 ; 0xf90c6
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf90c7
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf90cb
+ out DX, eax ; 66 ef ; 0xf90cd
+ mov dx, bx ; 89 da ; 0xf90cf
+ in eax, DX ; 66 ed ; 0xf90d1
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf90d3
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf90d5
+ xchg dx, ax ; 92 ; 0xf90d9
+ xor bx, bx ; 31 db ; 0xf90da ahci.c:896
+ push bx ; 53 ; 0xf90dc
+ mov bx, strict word 0001fh ; bb 1f 00 ; 0xf90dd
+ xor cx, cx ; 31 c9 ; 0xf90e0
+ call 080e5h ; e8 00 f0 ; 0xf90e2
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf90e5
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf90e7
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf90ea ahci.c:901
+ jmp short 09111h ; eb 21 ; 0xf90ee ahci.c:902
+ xor al, al ; 30 c0 ; 0xf90f0 ahci.c:280
+ test al, al ; 84 c0 ; 0xf90f2 ahci.c:281
+ je short 09108h ; 74 12 ; 0xf90f4
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf90f6 ahci.c:907
+ xor bh, bh ; 30 ff ; 0xf90f9
+ xor ax, ax ; 31 c0 ; 0xf90fb
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf90fd
+ call 08af3h ; e8 f0 f9 ; 0xf9100
+ dec byte [bp-00eh] ; fe 4e f2 ; 0xf9103 ahci.c:908
+ je short 0914bh ; 74 43 ; 0xf9106 ahci.c:909
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf9108 ahci.c:912
+ cmp byte [bp-00ch], 020h ; 80 7e f4 20 ; 0xf910b ahci.c:913
+ jnc short 0914bh ; 73 3a ; 0xf910f
+ mov cl, byte [bp-00ch] ; 8a 4e f4 ; 0xf9111
+ xor ch, ch ; 30 ed ; 0xf9114
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf9116
+ xor di, di ; 31 ff ; 0xf9119
+ jcxz 09123h ; e3 06 ; 0xf911b
+ sal bx, 1 ; d1 e3 ; 0xf911d
+ rcl di, 1 ; d1 d7 ; 0xf911f
+ loop 0911dh ; e2 fa ; 0xf9121
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf9123
+ xor cx, cx ; 31 c9 ; 0xf9126
+ mov dx, si ; 89 f2 ; 0xf9128
+ xchg cx, ax ; 91 ; 0xf912a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf912b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf912f
+ out DX, eax ; 66 ef ; 0xf9131
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf9133
+ in eax, DX ; 66 ed ; 0xf9136
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9138
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf913a
+ xchg dx, ax ; 92 ; 0xf913e
+ test dx, di ; 85 fa ; 0xf913f
+ jne short 09147h ; 75 04 ; 0xf9141
+ test ax, bx ; 85 d8 ; 0xf9143
+ je short 090f0h ; 74 a9 ; 0xf9145
+ mov AL, strict byte 001h ; b0 01 ; 0xf9147
+ jmp short 090f2h ; eb a7 ; 0xf9149
+ xor ax, ax ; 31 c0 ; 0xf914b ahci.c:915
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf914d ahci.c:916
+ pop di ; 5f ; 0xf9150
+ pop si ; 5e ; 0xf9151
+ pop dx ; 5a ; 0xf9152
+ pop cx ; 59 ; 0xf9153
+ pop bx ; 5b ; 0xf9154
+ pop bp ; 5d ; 0xf9155
+ retn ; c3 ; 0xf9156
+ ; disGetNextSymbol 0xf9157 LB 0x1d91 -> off=0x17 cb=0000000000000139 uValue=00000000000f7b6e 'ahci_init'
+ db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 054h, 092h, 032h, 092h, 038h, 092h, 03eh, 092h, 044h
+ db 092h, 04ah, 092h, 050h, 092h, 054h, 092h
+ahci_init: ; 0xf916e LB 0x139
+ push bp ; 55 ; 0xf916e ahci.c:921
+ mov bp, sp ; 89 e5 ; 0xf916f
+ push si ; 56 ; 0xf9171
+ push di ; 57 ; 0xf9172
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf9173
+ mov ax, 00601h ; b8 01 06 ; 0xf9176 ahci.c:925
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf9179
+ call 0a93ch ; e8 bd 17 ; 0xf917c
+ mov dx, ax ; 89 c2 ; 0xf917f
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9181 ahci.c:926
+ je short 091cfh ; 74 49 ; 0xf9184
+ mov al, ah ; 88 e0 ; 0xf9186 ahci.c:931
+ mov byte [bp-008h], ah ; 88 66 f8 ; 0xf9188
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf918b ahci.c:932
+ xor dh, ah ; 30 e6 ; 0xf918e ahci.c:937
+ xor ah, ah ; 30 e4 ; 0xf9190
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf9192
+ call 0a96fh ; e8 d7 17 ; 0xf9195
+ mov cl, al ; 88 c1 ; 0xf9198
+ test cl, cl ; 84 c9 ; 0xf919a ahci.c:939
+ je short 091d2h ; 74 34 ; 0xf919c
+ mov bl, cl ; 88 cb ; 0xf919e ahci.c:941
+ xor bh, bh ; 30 ff ; 0xf91a0
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf91a2
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf91a5
+ mov byte [bp-00bh], bh ; 88 7e f5 ; 0xf91a8
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf91ab
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf91ae
+ mov byte [bp-011h], bh ; 88 7e ef ; 0xf91b1
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf91b4
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf91b7
+ call 0a96fh ; e8 b2 17 ; 0xf91ba
+ cmp AL, strict byte 012h ; 3c 12 ; 0xf91bd ahci.c:945
+ je short 091d2h ; 74 11 ; 0xf91bf
+ mov bl, cl ; 88 cb ; 0xf91c1 ahci.c:949
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf91c3
+ xor bh, bh ; 30 ff ; 0xf91c5
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf91c7
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf91ca
+ jmp short 09195h ; eb c6 ; 0xf91cd ahci.c:950
+ jmp near 092a0h ; e9 ce 00 ; 0xf91cf
+ test cl, cl ; 84 c9 ; 0xf91d2 ahci.c:952
+ je short 091cfh ; 74 f9 ; 0xf91d4
+ add cl, 002h ; 80 c1 02 ; 0xf91d6 ahci.c:959
+ mov bl, cl ; 88 cb ; 0xf91d9 ahci.c:961
+ xor bh, bh ; 30 ff ; 0xf91db
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf91dd
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf91e0
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf91e3
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf91e6
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf91e9
+ mov byte [bp-013h], bh ; 88 7e ed ; 0xf91ec
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf91ef
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf91f2
+ call 0a96fh ; e8 77 17 ; 0xf91f5
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf91f8 ahci.c:962
+ jne short 091cfh ; 75 d3 ; 0xf91fa
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf91fc ahci.c:965
+ mov bl, cl ; 88 cb ; 0xf9200 ahci.c:967
+ add bl, 002h ; 80 c3 02 ; 0xf9202
+ xor bh, bh ; 30 ff ; 0xf9205
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9207
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf920a
+ call 0a996h ; e8 86 17 ; 0xf920d
+ mov dx, ax ; 89 c2 ; 0xf9210
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf9212 ahci.c:971
+ sub ax, strict word 00004h ; 2d 04 00 ; 0xf9215
+ cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf9218
+ jnbe short 09254h ; 77 37 ; 0xf921b
+ push CS ; 0e ; 0xf921d
+ pop ES ; 07 ; 0xf921e
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf921f
+ mov di, 09157h ; bf 57 91 ; 0xf9222
+ repne scasb ; f2 ae ; 0xf9225
+ sal cx, 1 ; d1 e1 ; 0xf9227
+ mov di, cx ; 89 cf ; 0xf9229
+ mov ax, word [cs:di-06ea2h] ; 2e 8b 85 5e 91 ; 0xf922b
+ jmp ax ; ff e0 ; 0xf9230
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf9232 ahci.c:974
+ jmp short 09254h ; eb 1c ; 0xf9236 ahci.c:975
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf9238 ahci.c:977
+ jmp short 09254h ; eb 16 ; 0xf923c ahci.c:978
+ mov byte [bp-006h], 018h ; c6 46 fa 18 ; 0xf923e ahci.c:980
+ jmp short 09254h ; eb 10 ; 0xf9242 ahci.c:981
+ mov byte [bp-006h], 01ch ; c6 46 fa 1c ; 0xf9244 ahci.c:983
+ jmp short 09254h ; eb 0a ; 0xf9248 ahci.c:984
+ mov byte [bp-006h], 020h ; c6 46 fa 20 ; 0xf924a ahci.c:986
+ jmp short 09254h ; eb 04 ; 0xf924e ahci.c:987
+ mov byte [bp-006h], 024h ; c6 46 fa 24 ; 0xf9250 ahci.c:989
+ mov CL, strict byte 004h ; b1 04 ; 0xf9254 ahci.c:998
+ mov si, dx ; 89 d6 ; 0xf9256
+ shr si, CL ; d3 ee ; 0xf9258
+ sal si, 1 ; d1 e6 ; 0xf925a
+ sal si, 1 ; d1 e6 ; 0xf925c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf925e ahci.c:1000
+ test al, al ; 84 c0 ; 0xf9261
+ je short 092a0h ; 74 3b ; 0xf9263
+ mov bl, al ; 88 c3 ; 0xf9265 ahci.c:1002
+ xor bh, bh ; 30 ff ; 0xf9267
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9269
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf926c
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf926f
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9272
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf9275
+ mov byte [bp-015h], bh ; 88 7e eb ; 0xf9278
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf927b
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf927e
+ call 0a9bbh ; e8 37 17 ; 0xf9281
+ test AL, strict byte 001h ; a8 01 ; 0xf9284 ahci.c:1006
+ je short 092a0h ; 74 18 ; 0xf9286
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf9288 ahci.c:1009
+ add si, ax ; 01 c6 ; 0xf928a
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf928c ahci.c:1012
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf928f
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9292
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9295
+ call 0a9fah ; e8 5f 17 ; 0xf9298
+ mov ax, si ; 89 f0 ; 0xf929b ahci.c:1015
+ call 0900eh ; e8 6e fd ; 0xf929d
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf92a0 ahci.c:1029
+ pop di ; 5f ; 0xf92a3
+ pop si ; 5e ; 0xf92a4
+ pop bp ; 5d ; 0xf92a5
+ retn ; c3 ; 0xf92a6
+ ; disGetNextSymbol 0xf92a7 LB 0x1c41 -> off=0x0 cb=000000000000007b uValue=00000000000f7ca7 'virtio_reg_set_bar_offset_length'
+virtio_reg_set_bar_offset_length: ; 0xf92a7 LB 0x7b
+ push bp ; 55 ; 0xf92a7 virtio.c:287
+ mov bp, sp ; 89 e5 ; 0xf92a8
+ push cx ; 51 ; 0xf92aa
+ push si ; 56 ; 0xf92ab
+ push di ; 57 ; 0xf92ac
+ mov si, ax ; 89 c6 ; 0xf92ad
+ mov di, dx ; 89 d7 ; 0xf92af
+ mov cl, bl ; 88 d9 ; 0xf92b1 virtio.c:289
+ xor ch, ch ; 30 ed ; 0xf92b3
+ mov es, dx ; 8e c2 ; 0xf92b5
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf92b7
+ add bl, 004h ; 80 c3 04 ; 0xf92bc
+ xor bh, bh ; 30 ff ; 0xf92bf
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf92c1
+ xor dh, dh ; 30 f6 ; 0xf92c6
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf92c8
+ xor ah, ah ; 30 e4 ; 0xf92cd
+ call 0aa18h ; e8 46 17 ; 0xf92cf
+ push word [bp+006h] ; ff 76 06 ; 0xf92d2 virtio.c:290
+ push word [bp+004h] ; ff 76 04 ; 0xf92d5
+ mov es, di ; 8e c7 ; 0xf92d8
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf92da
+ add bl, 008h ; 80 c3 08 ; 0xf92df
+ xor bh, bh ; 30 ff ; 0xf92e2
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf92e4
+ xor dh, dh ; 30 f6 ; 0xf92e9
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf92eb
+ xor ah, ah ; 30 e4 ; 0xf92f0
+ call 0aa36h ; e8 41 17 ; 0xf92f2
+ push word [bp+00ah] ; ff 76 0a ; 0xf92f5 virtio.c:291
+ push word [bp+008h] ; ff 76 08 ; 0xf92f8
+ mov es, di ; 8e c7 ; 0xf92fb
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf92fd
+ add bl, 00ch ; 80 c3 0c ; 0xf9302
+ xor bh, bh ; 30 ff ; 0xf9305
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9307
+ xor dh, dh ; 30 f6 ; 0xf930c
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf930e
+ xor ah, ah ; 30 e4 ; 0xf9313
+ call 0aa36h ; e8 1e 17 ; 0xf9315
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9318 virtio.c:292
+ pop di ; 5f ; 0xf931b
+ pop si ; 5e ; 0xf931c
+ pop cx ; 59 ; 0xf931d
+ pop bp ; 5d ; 0xf931e
+ retn 00008h ; c2 08 00 ; 0xf931f
+ ; disGetNextSymbol 0xf9322 LB 0x1bc6 -> off=0x0 cb=0000000000000033 uValue=00000000000f7d22 'virtio_reg_common_access_prepare'
+virtio_reg_common_access_prepare: ; 0xf9322 LB 0x33
+ push bp ; 55 ; 0xf9322 virtio.c:294
+ mov bp, sp ; 89 e5 ; 0xf9323
+ push si ; 56 ; 0xf9325
+ mov si, ax ; 89 c6 ; 0xf9326
+ mov es, dx ; 8e c2 ; 0xf9328
+ push word [bp+006h] ; ff 76 06 ; 0xf932a virtio.c:296
+ push word [bp+004h] ; ff 76 04 ; 0xf932d
+ xor dx, dx ; 31 d2 ; 0xf9330
+ mov ax, word [es:si+060h] ; 26 8b 44 60 ; 0xf9332
+ add ax, bx ; 01 d8 ; 0xf9336
+ mov bx, word [es:si+062h] ; 26 8b 5c 62 ; 0xf9338
+ adc bx, dx ; 11 d3 ; 0xf933c
+ push bx ; 53 ; 0xf933e
+ push ax ; 50 ; 0xf933f
+ mov bl, byte [es:si+05ch] ; 26 8a 5c 5c ; 0xf9340
+ xor bh, bh ; 30 ff ; 0xf9344
+ mov ax, si ; 89 f0 ; 0xf9346
+ mov dx, es ; 8c c2 ; 0xf9348
+ call 092a7h ; e8 5a ff ; 0xf934a
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf934d virtio.c:300
+ pop si ; 5e ; 0xf9350
+ pop bp ; 5d ; 0xf9351
+ retn 00004h ; c2 04 00 ; 0xf9352
+ ; disGetNextSymbol 0xf9355 LB 0x1b93 -> off=0x0 cb=0000000000000036 uValue=00000000000f7d55 'virtio_reg_dev_access_prepare'
+virtio_reg_dev_access_prepare: ; 0xf9355 LB 0x36
+ push bp ; 55 ; 0xf9355 virtio.c:302
+ mov bp, sp ; 89 e5 ; 0xf9356
+ push si ; 56 ; 0xf9358
+ mov si, ax ; 89 c6 ; 0xf9359
+ mov es, dx ; 8e c2 ; 0xf935b
+ push word [bp+006h] ; ff 76 06 ; 0xf935d virtio.c:304
+ push word [bp+004h] ; ff 76 04 ; 0xf9360
+ xor dx, dx ; 31 d2 ; 0xf9363
+ mov ax, word [es:si+00084h] ; 26 8b 84 84 00 ; 0xf9365
+ add ax, bx ; 01 d8 ; 0xf936a
+ mov bx, word [es:si+00086h] ; 26 8b 9c 86 00 ; 0xf936c
+ adc bx, dx ; 11 d3 ; 0xf9371
+ push bx ; 53 ; 0xf9373
+ push ax ; 50 ; 0xf9374
+ mov bl, byte [es:si+00080h] ; 26 8a 9c 80 00 ; 0xf9375
+ xor bh, bh ; 30 ff ; 0xf937a
+ mov ax, si ; 89 f0 ; 0xf937c
+ mov dx, es ; 8c c2 ; 0xf937e
+ call 092a7h ; e8 24 ff ; 0xf9380
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9383 virtio.c:308
+ pop si ; 5e ; 0xf9386
+ pop bp ; 5d ; 0xf9387
+ retn 00004h ; c2 04 00 ; 0xf9388
+ ; disGetNextSymbol 0xf938b LB 0x1b5d -> off=0x0 cb=0000000000000033 uValue=00000000000f7d8b 'virtio_reg_notify_access_prepare'
+virtio_reg_notify_access_prepare: ; 0xf938b LB 0x33
+ push bp ; 55 ; 0xf938b virtio.c:310
+ mov bp, sp ; 89 e5 ; 0xf938c
+ push si ; 56 ; 0xf938e
+ mov si, ax ; 89 c6 ; 0xf938f
+ mov es, dx ; 8e c2 ; 0xf9391
+ push word [bp+006h] ; ff 76 06 ; 0xf9393 virtio.c:312
+ push word [bp+004h] ; ff 76 04 ; 0xf9396
+ xor dx, dx ; 31 d2 ; 0xf9399
+ mov ax, word [es:si+06ch] ; 26 8b 44 6c ; 0xf939b
+ add ax, bx ; 01 d8 ; 0xf939f
+ mov bx, word [es:si+06eh] ; 26 8b 5c 6e ; 0xf93a1
+ adc bx, dx ; 11 d3 ; 0xf93a5
+ push bx ; 53 ; 0xf93a7
+ push ax ; 50 ; 0xf93a8
+ mov bl, byte [es:si+068h] ; 26 8a 5c 68 ; 0xf93a9
+ xor bh, bh ; 30 ff ; 0xf93ad
+ mov ax, si ; 89 f0 ; 0xf93af
+ mov dx, es ; 8c c2 ; 0xf93b1
+ call 092a7h ; e8 f1 fe ; 0xf93b3
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf93b6 virtio.c:316
+ pop si ; 5e ; 0xf93b9
+ pop bp ; 5d ; 0xf93ba
+ retn 00004h ; c2 04 00 ; 0xf93bb
+ ; disGetNextSymbol 0xf93be LB 0x1b2a -> off=0x0 cb=0000000000000021 uValue=00000000000f7dbe 'virtio_reg_isr_prepare'
+virtio_reg_isr_prepare: ; 0xf93be LB 0x21
+ push bp ; 55 ; 0xf93be virtio.c:318
+ mov bp, sp ; 89 e5 ; 0xf93bf
+ push si ; 56 ; 0xf93c1
+ mov si, ax ; 89 c6 ; 0xf93c2
+ mov es, dx ; 8e c2 ; 0xf93c4
+ push cx ; 51 ; 0xf93c6 virtio.c:320
+ push bx ; 53 ; 0xf93c7
+ push word [es:si+07ah] ; 26 ff 74 7a ; 0xf93c8
+ push word [es:si+078h] ; 26 ff 74 78 ; 0xf93cc
+ mov bl, byte [es:si+074h] ; 26 8a 5c 74 ; 0xf93d0
+ xor bh, bh ; 30 ff ; 0xf93d4
+ call 092a7h ; e8 ce fe ; 0xf93d6
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf93d9 virtio.c:324
+ pop si ; 5e ; 0xf93dc
+ pop bp ; 5d ; 0xf93dd
+ retn ; c3 ; 0xf93de
+ ; disGetNextSymbol 0xf93df LB 0x1b09 -> off=0x0 cb=0000000000000039 uValue=00000000000f7ddf 'virtio_reg_common_read_u8'
+virtio_reg_common_read_u8: ; 0xf93df LB 0x39
+ push bp ; 55 ; 0xf93df virtio.c:326
+ mov bp, sp ; 89 e5 ; 0xf93e0
+ push cx ; 51 ; 0xf93e2
+ push si ; 56 ; 0xf93e3
+ mov si, ax ; 89 c6 ; 0xf93e4
+ mov cx, dx ; 89 d1 ; 0xf93e6
+ xor ax, ax ; 31 c0 ; 0xf93e8 virtio.c:328
+ push ax ; 50 ; 0xf93ea
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf93eb
+ push ax ; 50 ; 0xf93ee
+ mov ax, si ; 89 f0 ; 0xf93ef
+ call 09322h ; e8 2e ff ; 0xf93f1
+ mov es, cx ; 8e c1 ; 0xf93f4 virtio.c:329
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf93f6
+ add bl, 010h ; 80 c3 10 ; 0xf93fb
+ xor bh, bh ; 30 ff ; 0xf93fe
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9400
+ xor dh, dh ; 30 f6 ; 0xf9405
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9407
+ xor ah, ah ; 30 e4 ; 0xf940c
+ call 0a96fh ; e8 5e 15 ; 0xf940e
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9411 virtio.c:330
+ pop si ; 5e ; 0xf9414
+ pop cx ; 59 ; 0xf9415
+ pop bp ; 5d ; 0xf9416
+ retn ; c3 ; 0xf9417
+ ; disGetNextSymbol 0xf9418 LB 0x1ad0 -> off=0x0 cb=000000000000003b uValue=00000000000f7e18 'virtio_reg_common_write_u8'
+virtio_reg_common_write_u8: ; 0xf9418 LB 0x3b
+ push bp ; 55 ; 0xf9418 virtio.c:332
+ mov bp, sp ; 89 e5 ; 0xf9419
+ push si ; 56 ; 0xf941b
+ push di ; 57 ; 0xf941c
+ mov si, ax ; 89 c6 ; 0xf941d
+ mov di, dx ; 89 d7 ; 0xf941f
+ xor ax, ax ; 31 c0 ; 0xf9421 virtio.c:334
+ push ax ; 50 ; 0xf9423
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9424
+ push ax ; 50 ; 0xf9427
+ mov ax, si ; 89 f0 ; 0xf9428
+ call 09322h ; e8 f5 fe ; 0xf942a
+ xor ch, ch ; 30 ed ; 0xf942d virtio.c:335
+ mov es, di ; 8e c7 ; 0xf942f
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9431
+ add bl, 010h ; 80 c3 10 ; 0xf9436
+ xor bh, bh ; 30 ff ; 0xf9439
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf943b
+ xor dh, dh ; 30 f6 ; 0xf9440
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9442
+ xor ah, ah ; 30 e4 ; 0xf9447
+ call 0aa18h ; e8 cc 15 ; 0xf9449
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf944c virtio.c:336
+ pop di ; 5f ; 0xf944f
+ pop si ; 5e ; 0xf9450
+ pop bp ; 5d ; 0xf9451
+ retn ; c3 ; 0xf9452
+ ; disGetNextSymbol 0xf9453 LB 0x1a95 -> off=0x0 cb=0000000000000039 uValue=00000000000f7e53 'virtio_reg_common_read_u16'
+virtio_reg_common_read_u16: ; 0xf9453 LB 0x39
+ push bp ; 55 ; 0xf9453 virtio.c:338
+ mov bp, sp ; 89 e5 ; 0xf9454
+ push cx ; 51 ; 0xf9456
+ push si ; 56 ; 0xf9457
+ mov si, ax ; 89 c6 ; 0xf9458
+ mov cx, dx ; 89 d1 ; 0xf945a
+ xor ax, ax ; 31 c0 ; 0xf945c virtio.c:340
+ push ax ; 50 ; 0xf945e
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf945f
+ push ax ; 50 ; 0xf9462
+ mov ax, si ; 89 f0 ; 0xf9463
+ call 09322h ; e8 ba fe ; 0xf9465
+ mov es, cx ; 8e c1 ; 0xf9468 virtio.c:341
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf946a
+ add bl, 010h ; 80 c3 10 ; 0xf946f
+ xor bh, bh ; 30 ff ; 0xf9472
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9474
+ xor dh, dh ; 30 f6 ; 0xf9479
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf947b
+ xor ah, ah ; 30 e4 ; 0xf9480
+ call 0a996h ; e8 11 15 ; 0xf9482
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9485 virtio.c:342
+ pop si ; 5e ; 0xf9488
+ pop cx ; 59 ; 0xf9489
+ pop bp ; 5d ; 0xf948a
+ retn ; c3 ; 0xf948b
+ ; disGetNextSymbol 0xf948c LB 0x1a5c -> off=0x0 cb=0000000000000039 uValue=00000000000f7e8c 'virtio_reg_common_write_u16'
+virtio_reg_common_write_u16: ; 0xf948c LB 0x39
+ push bp ; 55 ; 0xf948c virtio.c:344
+ mov bp, sp ; 89 e5 ; 0xf948d
+ push si ; 56 ; 0xf948f
+ push di ; 57 ; 0xf9490
+ mov si, ax ; 89 c6 ; 0xf9491
+ mov di, dx ; 89 d7 ; 0xf9493
+ xor ax, ax ; 31 c0 ; 0xf9495 virtio.c:346
+ push ax ; 50 ; 0xf9497
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf9498
+ push ax ; 50 ; 0xf949b
+ mov ax, si ; 89 f0 ; 0xf949c
+ call 09322h ; e8 81 fe ; 0xf949e
+ mov es, di ; 8e c7 ; 0xf94a1 virtio.c:347
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf94a3
+ add bl, 010h ; 80 c3 10 ; 0xf94a8
+ xor bh, bh ; 30 ff ; 0xf94ab
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf94ad
+ xor dh, dh ; 30 f6 ; 0xf94b2
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf94b4
+ xor ah, ah ; 30 e4 ; 0xf94b9
+ call 0a9fah ; e8 3c 15 ; 0xf94bb
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf94be virtio.c:348
+ pop di ; 5f ; 0xf94c1
+ pop si ; 5e ; 0xf94c2
+ pop bp ; 5d ; 0xf94c3
+ retn ; c3 ; 0xf94c4
+ ; disGetNextSymbol 0xf94c5 LB 0x1a23 -> off=0x0 cb=0000000000000041 uValue=00000000000f7ec5 'virtio_reg_common_write_u32'
+virtio_reg_common_write_u32: ; 0xf94c5 LB 0x41
+ push bp ; 55 ; 0xf94c5 virtio.c:350
+ mov bp, sp ; 89 e5 ; 0xf94c6
+ push cx ; 51 ; 0xf94c8
+ push si ; 56 ; 0xf94c9
+ mov si, ax ; 89 c6 ; 0xf94ca
+ mov cx, dx ; 89 d1 ; 0xf94cc
+ xor ax, ax ; 31 c0 ; 0xf94ce virtio.c:352
+ push ax ; 50 ; 0xf94d0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf94d1
+ push ax ; 50 ; 0xf94d4
+ mov ax, si ; 89 f0 ; 0xf94d5
+ call 09322h ; e8 48 fe ; 0xf94d7
+ push word [bp+006h] ; ff 76 06 ; 0xf94da virtio.c:353
+ push word [bp+004h] ; ff 76 04 ; 0xf94dd
+ mov es, cx ; 8e c1 ; 0xf94e0
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf94e2
+ add bl, 010h ; 80 c3 10 ; 0xf94e7
+ xor bh, bh ; 30 ff ; 0xf94ea
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf94ec
+ xor dh, dh ; 30 f6 ; 0xf94f1
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf94f3
+ xor ah, ah ; 30 e4 ; 0xf94f8
+ call 0aa36h ; e8 39 15 ; 0xf94fa
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf94fd virtio.c:354
+ pop si ; 5e ; 0xf9500
+ pop cx ; 59 ; 0xf9501
+ pop bp ; 5d ; 0xf9502
+ retn 00004h ; c2 04 00 ; 0xf9503
+ ; disGetNextSymbol 0xf9506 LB 0x19e2 -> off=0x0 cb=0000000000000039 uValue=00000000000f7f06 'virtio_reg_dev_cfg_read_u32'
+virtio_reg_dev_cfg_read_u32: ; 0xf9506 LB 0x39
+ push bp ; 55 ; 0xf9506 virtio.c:356
+ mov bp, sp ; 89 e5 ; 0xf9507
+ push cx ; 51 ; 0xf9509
+ push si ; 56 ; 0xf950a
+ mov si, ax ; 89 c6 ; 0xf950b
+ mov cx, dx ; 89 d1 ; 0xf950d
+ xor ax, ax ; 31 c0 ; 0xf950f virtio.c:358
+ push ax ; 50 ; 0xf9511
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9512
+ push ax ; 50 ; 0xf9515
+ mov ax, si ; 89 f0 ; 0xf9516
+ call 09355h ; e8 3a fe ; 0xf9518
+ mov es, cx ; 8e c1 ; 0xf951b virtio.c:359
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf951d
+ add bl, 010h ; 80 c3 10 ; 0xf9522
+ xor bh, bh ; 30 ff ; 0xf9525
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9527
+ xor dh, dh ; 30 f6 ; 0xf952c
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf952e
+ xor ah, ah ; 30 e4 ; 0xf9533
+ call 0a9bbh ; e8 83 14 ; 0xf9535
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9538 virtio.c:360
+ pop si ; 5e ; 0xf953b
+ pop cx ; 59 ; 0xf953c
+ pop bp ; 5d ; 0xf953d
+ retn ; c3 ; 0xf953e
+ ; disGetNextSymbol 0xf953f LB 0x19a9 -> off=0x0 cb=0000000000000041 uValue=00000000000f7f3f 'virtio_reg_dev_cfg_write_u32'
+virtio_reg_dev_cfg_write_u32: ; 0xf953f LB 0x41
+ push bp ; 55 ; 0xf953f virtio.c:362
+ mov bp, sp ; 89 e5 ; 0xf9540
+ push cx ; 51 ; 0xf9542
+ push si ; 56 ; 0xf9543
+ mov si, ax ; 89 c6 ; 0xf9544
+ mov cx, dx ; 89 d1 ; 0xf9546
+ xor ax, ax ; 31 c0 ; 0xf9548 virtio.c:364
+ push ax ; 50 ; 0xf954a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf954b
+ push ax ; 50 ; 0xf954e
+ mov ax, si ; 89 f0 ; 0xf954f
+ call 09355h ; e8 01 fe ; 0xf9551
+ push word [bp+006h] ; ff 76 06 ; 0xf9554 virtio.c:365
+ push word [bp+004h] ; ff 76 04 ; 0xf9557
+ mov es, cx ; 8e c1 ; 0xf955a
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf955c
+ add bl, 010h ; 80 c3 10 ; 0xf9561
+ xor bh, bh ; 30 ff ; 0xf9564
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9566
+ xor dh, dh ; 30 f6 ; 0xf956b
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf956d
+ xor ah, ah ; 30 e4 ; 0xf9572
+ call 0aa36h ; e8 bf 14 ; 0xf9574
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9577 virtio.c:366
+ pop si ; 5e ; 0xf957a
+ pop cx ; 59 ; 0xf957b
+ pop bp ; 5d ; 0xf957c
+ retn 00004h ; c2 04 00 ; 0xf957d
+ ; disGetNextSymbol 0xf9580 LB 0x1968 -> off=0x0 cb=0000000000000039 uValue=00000000000f7f80 'virtio_reg_notify_write_u16'
+virtio_reg_notify_write_u16: ; 0xf9580 LB 0x39
+ push bp ; 55 ; 0xf9580 virtio.c:368
+ mov bp, sp ; 89 e5 ; 0xf9581
+ push si ; 56 ; 0xf9583
+ push di ; 57 ; 0xf9584
+ mov si, ax ; 89 c6 ; 0xf9585
+ mov di, dx ; 89 d7 ; 0xf9587
+ xor ax, ax ; 31 c0 ; 0xf9589 virtio.c:370
+ push ax ; 50 ; 0xf958b
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf958c
+ push ax ; 50 ; 0xf958f
+ mov ax, si ; 89 f0 ; 0xf9590
+ call 0938bh ; e8 f6 fd ; 0xf9592
+ mov es, di ; 8e c7 ; 0xf9595 virtio.c:371
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9597
+ add bl, 010h ; 80 c3 10 ; 0xf959c
+ xor bh, bh ; 30 ff ; 0xf959f
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf95a1
+ xor dh, dh ; 30 f6 ; 0xf95a6
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf95a8
+ xor ah, ah ; 30 e4 ; 0xf95ad
+ call 0a9fah ; e8 48 14 ; 0xf95af
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf95b2 virtio.c:372
+ pop di ; 5f ; 0xf95b5
+ pop si ; 5e ; 0xf95b6
+ pop bp ; 5d ; 0xf95b7
+ retn ; c3 ; 0xf95b8
+ ; disGetNextSymbol 0xf95b9 LB 0x192f -> off=0x0 cb=0000000000000039 uValue=00000000000f7fb9 'virtio_reg_isr_read_u8'
+virtio_reg_isr_read_u8: ; 0xf95b9 LB 0x39
+ push bp ; 55 ; 0xf95b9 virtio.c:374
+ mov bp, sp ; 89 e5 ; 0xf95ba
+ push bx ; 53 ; 0xf95bc
+ push cx ; 51 ; 0xf95bd
+ push si ; 56 ; 0xf95be
+ push di ; 57 ; 0xf95bf
+ mov si, ax ; 89 c6 ; 0xf95c0
+ mov di, dx ; 89 d7 ; 0xf95c2
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf95c4 virtio.c:376
+ xor cx, cx ; 31 c9 ; 0xf95c7
+ call 093beh ; e8 f2 fd ; 0xf95c9
+ mov es, di ; 8e c7 ; 0xf95cc virtio.c:377
+ mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf95ce
+ add bl, 010h ; 80 c3 10 ; 0xf95d3
+ xor bh, bh ; 30 ff ; 0xf95d6
+ mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf95d8
+ xor dh, dh ; 30 f6 ; 0xf95dd
+ mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf95df
+ xor ah, ah ; 30 e4 ; 0xf95e4
+ call 0a96fh ; e8 86 13 ; 0xf95e6
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf95e9 virtio.c:378
+ pop di ; 5f ; 0xf95ec
+ pop si ; 5e ; 0xf95ed
+ pop cx ; 59 ; 0xf95ee
+ pop bx ; 5b ; 0xf95ef
+ pop bp ; 5d ; 0xf95f0
+ retn ; c3 ; 0xf95f1
+ ; disGetNextSymbol 0xf95f2 LB 0x18f6 -> off=0x0 cb=000000000000001e uValue=00000000000f7ff2 'virtio_addr_to_phys'
+virtio_addr_to_phys: ; 0xf95f2 LB 0x1e
+ push bx ; 53 ; 0xf95f2 virtio.c:383
+ push cx ; 51 ; 0xf95f3
+ push bp ; 55 ; 0xf95f4
+ mov bp, sp ; 89 e5 ; 0xf95f5
+ mov bx, ax ; 89 c3 ; 0xf95f7
+ mov ax, dx ; 89 d0 ; 0xf95f9
+ xor dx, dx ; 31 d2 ; 0xf95fb virtio.c:385
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf95fd
+ sal ax, 1 ; d1 e0 ; 0xf9600
+ rcl dx, 1 ; d1 d2 ; 0xf9602
+ loop 09600h ; e2 fa ; 0xf9604
+ xor cx, cx ; 31 c9 ; 0xf9606
+ add ax, bx ; 01 d8 ; 0xf9608
+ adc dx, cx ; 11 ca ; 0xf960a
+ pop bp ; 5d ; 0xf960c virtio.c:386
+ pop cx ; 59 ; 0xf960d
+ pop bx ; 5b ; 0xf960e
+ retn ; c3 ; 0xf960f
+ ; disGetNextSymbol 0xf9610 LB 0x18d8 -> off=0x0 cb=0000000000000172 uValue=00000000000f8010 'virtio_scsi_cmd_data_out'
+virtio_scsi_cmd_data_out: ; 0xf9610 LB 0x172
+ push bp ; 55 ; 0xf9610 virtio.c:388
+ mov bp, sp ; 89 e5 ; 0xf9611
+ push cx ; 51 ; 0xf9613
+ push si ; 56 ; 0xf9614
+ push di ; 57 ; 0xf9615
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9616
+ mov si, ax ; 89 c6 ; 0xf9619
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf961b
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf961e
+ mov di, ax ; 89 c7 ; 0xf9621 virtio.c:391
+ mov es, dx ; 8e c2 ; 0xf9623
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9625
+ mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf9628
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf962c
+ lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf962f virtio.c:394
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9633
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf9636
+ xor bx, bx ; 31 db ; 0xf9639
+ call 0abc0h ; e8 82 15 ; 0xf963b
+ lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf963e virtio.c:395
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9642
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf9645
+ xor bx, bx ; 31 db ; 0xf9648
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf964a
+ call 0abc0h ; e8 70 15 ; 0xf964d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9650 virtio.c:397
+ mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf9653
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9659 virtio.c:398
+ mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf965c
+ mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf9661 virtio.c:399
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9668 virtio.c:401
+ xor ah, ah ; 30 e4 ; 0xf966b
+ push ax ; 50 ; 0xf966d
+ lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf966e
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9672
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf9675
+ mov dx, es ; 8c c2 ; 0xf9678
+ call 0abd0h ; e8 53 15 ; 0xf967a
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf967d virtio.c:404
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9680
+ call 095f2h ; e8 6c ff ; 0xf9683
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9686
+ mov word [es:si], ax ; 26 89 04 ; 0xf9689
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf968c
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf9690 virtio.c:405
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf9696
+ mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf969c virtio.c:406
+ mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf96a2
+ mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf96a8 virtio.c:407
+ mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf96ae virtio.c:408
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf96b4 virtio.c:410
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf96b7
+ call 095f2h ; e8 35 ff ; 0xf96ba
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf96bd
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf96c0
+ mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf96c4
+ mov word [es:si+014h], strict word 00000h ; 26 c7 44 14 00 00 ; 0xf96c8 virtio.c:411
+ mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf96ce
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf96d4 virtio.c:412
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf96d7
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf96db
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf96de
+ mov word [es:si+01ch], strict word 00001h ; 26 c7 44 1c 01 00 ; 0xf96e2 virtio.c:413
+ mov word [es:si+01eh], strict word 00002h ; 26 c7 44 1e 02 00 ; 0xf96e8 virtio.c:414
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf96ee virtio.c:416
+ mov dx, es ; 8c c2 ; 0xf96f1
+ call 095f2h ; e8 fc fe ; 0xf96f3
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf96f6
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf96f9
+ mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf96fd
+ mov word [es:si+024h], strict word 00000h ; 26 c7 44 24 00 00 ; 0xf9701 virtio.c:417
+ mov word [es:si+026h], strict word 00000h ; 26 c7 44 26 00 00 ; 0xf9707
+ mov word [es:si+028h], strict word 0002ch ; 26 c7 44 28 2c 00 ; 0xf970d virtio.c:418
+ mov word [es:si+02ah], strict word 00000h ; 26 c7 44 2a 00 00 ; 0xf9713
+ mov word [es:si+02ch], strict word 00002h ; 26 c7 44 2c 02 00 ; 0xf9719 virtio.c:419
+ mov word [es:si+02eh], strict word 00000h ; 26 c7 44 2e 00 00 ; 0xf971f virtio.c:420
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9725 virtio.c:423
+ xor dx, dx ; 31 d2 ; 0xf9729
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf972b
+ div bx ; f7 f3 ; 0xf972e
+ sal dx, 1 ; d1 e2 ; 0xf9730
+ mov bx, si ; 89 f3 ; 0xf9732
+ add bx, dx ; 01 d3 ; 0xf9734
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf9736
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf973c virtio.c:424
+ inc word [es:si+032h] ; 26 ff 44 32 ; 0xf9740
+ mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf9744 virtio.c:428
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9748
+ mov ax, si ; 89 f0 ; 0xf974b
+ mov dx, es ; 8c c2 ; 0xf974d
+ call 09580h ; e8 2e fe ; 0xf974f
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9752 virtio.c:431
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9755
+ cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf9758
+ je short 09752h ; 74 f4 ; 0xf975c
+ mov ax, di ; 89 f8 ; 0xf975e virtio.c:436
+ mov dx, es ; 8c c2 ; 0xf9760
+ call 095b9h ; e8 54 fe ; 0xf9762
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9765 virtio.c:438
+ mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf9768
+ test al, al ; 84 c0 ; 0xf976d
+ je short 09776h ; 74 05 ; 0xf976f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9771 virtio.c:439
+ jmp short 09778h ; eb 02 ; 0xf9774
+ xor ah, ah ; 30 e4 ; 0xf9776 virtio.c:441
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9778 virtio.c:442
+ pop di ; 5f ; 0xf977b
+ pop si ; 5e ; 0xf977c
+ pop cx ; 59 ; 0xf977d
+ pop bp ; 5d ; 0xf977e
+ retn 0000eh ; c2 0e 00 ; 0xf977f
+ ; disGetNextSymbol 0xf9782 LB 0x1766 -> off=0x0 cb=0000000000000172 uValue=00000000000f8182 'virtio_scsi_cmd_data_in'
+virtio_scsi_cmd_data_in: ; 0xf9782 LB 0x172
+ push bp ; 55 ; 0xf9782 virtio.c:444
+ mov bp, sp ; 89 e5 ; 0xf9783
+ push cx ; 51 ; 0xf9785
+ push si ; 56 ; 0xf9786
+ push di ; 57 ; 0xf9787
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9788
+ mov si, ax ; 89 c6 ; 0xf978b
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf978d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9790
+ mov di, ax ; 89 c7 ; 0xf9793 virtio.c:447
+ mov es, dx ; 8e c2 ; 0xf9795
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9797
+ mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf979a
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf979e
+ lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf97a1 virtio.c:450
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf97a5
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf97a8
+ xor bx, bx ; 31 db ; 0xf97ab
+ call 0abc0h ; e8 10 14 ; 0xf97ad
+ lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf97b0 virtio.c:451
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf97b4
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf97b7
+ xor bx, bx ; 31 db ; 0xf97ba
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf97bc
+ call 0abc0h ; e8 fe 13 ; 0xf97bf
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf97c2 virtio.c:453
+ mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf97c5
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf97cb virtio.c:454
+ mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf97ce
+ mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf97d3 virtio.c:455
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf97da virtio.c:457
+ xor ah, ah ; 30 e4 ; 0xf97dd
+ push ax ; 50 ; 0xf97df
+ lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf97e0
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf97e4
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf97e7
+ mov dx, es ; 8c c2 ; 0xf97ea
+ call 0abd0h ; e8 e1 13 ; 0xf97ec
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf97ef virtio.c:460
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf97f2
+ call 095f2h ; e8 fa fd ; 0xf97f5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf97f8
+ mov word [es:si], ax ; 26 89 04 ; 0xf97fb
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf97fe
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf9802 virtio.c:461
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf9808
+ mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf980e virtio.c:462
+ mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf9814
+ mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf981a virtio.c:463
+ mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf9820 virtio.c:464
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9826 virtio.c:467
+ mov dx, es ; 8c c2 ; 0xf9829
+ call 095f2h ; e8 c4 fd ; 0xf982b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf982e
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf9831
+ mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf9835
+ mov word [es:si+014h], strict word 00000h ; 26 c7 44 14 00 00 ; 0xf9839 virtio.c:468
+ mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf983f
+ mov word [es:si+018h], strict word 0002ch ; 26 c7 44 18 2c 00 ; 0xf9845 virtio.c:469
+ mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf984b
+ mov word [es:si+01ch], strict word 00003h ; 26 c7 44 1c 03 00 ; 0xf9851 virtio.c:470
+ mov word [es:si+01eh], strict word 00002h ; 26 c7 44 1e 02 00 ; 0xf9857 virtio.c:471
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf985d virtio.c:473
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9860
+ call 095f2h ; e8 8c fd ; 0xf9863
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9866
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf9869
+ mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf986d
+ mov word [es:si+024h], strict word 00000h ; 26 c7 44 24 00 00 ; 0xf9871 virtio.c:474
+ mov word [es:si+026h], strict word 00000h ; 26 c7 44 26 00 00 ; 0xf9877
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf987d virtio.c:475
+ mov word [es:si+028h], ax ; 26 89 44 28 ; 0xf9880
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9884
+ mov word [es:si+02ah], ax ; 26 89 44 2a ; 0xf9887
+ mov word [es:si+02ch], strict word 00002h ; 26 c7 44 2c 02 00 ; 0xf988b virtio.c:476
+ mov word [es:si+02eh], strict word 00000h ; 26 c7 44 2e 00 00 ; 0xf9891 virtio.c:477
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9897 virtio.c:481
+ xor dx, dx ; 31 d2 ; 0xf989b
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf989d
+ div bx ; f7 f3 ; 0xf98a0
+ sal dx, 1 ; d1 e2 ; 0xf98a2
+ mov bx, si ; 89 f3 ; 0xf98a4
+ add bx, dx ; 01 d3 ; 0xf98a6
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf98a8
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf98ae virtio.c:482
+ inc word [es:si+032h] ; 26 ff 44 32 ; 0xf98b2
+ mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf98b6 virtio.c:486
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf98ba
+ mov ax, si ; 89 f0 ; 0xf98bd
+ mov dx, es ; 8c c2 ; 0xf98bf
+ call 09580h ; e8 bc fc ; 0xf98c1
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf98c4 virtio.c:489
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf98c7
+ cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf98ca
+ je short 098c4h ; 74 f4 ; 0xf98ce
+ mov ax, di ; 89 f8 ; 0xf98d0 virtio.c:494
+ mov dx, es ; 8c c2 ; 0xf98d2
+ call 095b9h ; e8 e2 fc ; 0xf98d4
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf98d7 virtio.c:496
+ mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf98da
+ test al, al ; 84 c0 ; 0xf98df
+ je short 098e8h ; 74 05 ; 0xf98e1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf98e3 virtio.c:497
+ jmp short 098eah ; eb 02 ; 0xf98e6
+ xor ah, ah ; 30 e4 ; 0xf98e8 virtio.c:499
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf98ea virtio.c:500
+ pop di ; 5f ; 0xf98ed
+ pop si ; 5e ; 0xf98ee
+ pop cx ; 59 ; 0xf98ef
+ pop bp ; 5d ; 0xf98f0
+ retn 0000eh ; c2 0e 00 ; 0xf98f1
+ ; disGetNextSymbol 0xf98f4 LB 0x15f4 -> off=0x0 cb=0000000000000340 uValue=00000000000f82f4 'virtio_scsi_hba_init'
+virtio_scsi_hba_init: ; 0xf98f4 LB 0x340
+ push bp ; 55 ; 0xf98f4 virtio.c:505
+ mov bp, sp ; 89 e5 ; 0xf98f5
+ push si ; 56 ; 0xf98f7
+ push di ; 57 ; 0xf98f8
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xf98f9
+ mov si, ax ; 89 c6 ; 0xf98fc
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf98fe
+ mov ch, bl ; 88 dd ; 0xf9901
+ mov byte [bp-006h], cl ; 88 4e fa ; 0xf9903
+ mov es, dx ; 8e c2 ; 0xf9906 virtio.c:510
+ mov byte [es:si+00092h], bl ; 26 88 9c 92 00 ; 0xf9908
+ mov byte [es:si+00093h], cl ; 26 88 8c 93 00 ; 0xf990d virtio.c:511
+ mov cl, byte [bp+004h] ; 8a 4e 04 ; 0xf9912 virtio.c:517
+ test cl, cl ; 84 c9 ; 0xf9915 virtio.c:518
+ je short 09974h ; 74 5b ; 0xf9917
+ mov bl, cl ; 88 cb ; 0xf9919 virtio.c:520
+ xor bh, bh ; 30 ff ; 0xf991b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf991d
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf9920
+ mov byte [bp-011h], bh ; 88 7e ef ; 0xf9923
+ mov byte [bp-014h], ch ; 88 6e ec ; 0xf9926
+ mov byte [bp-013h], bh ; 88 7e ed ; 0xf9929
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf992c
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf992f
+ call 0a96fh ; e8 3a 10 ; 0xf9932
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf9935
+ mov bl, cl ; 88 cb ; 0xf9938 virtio.c:521
+ add bl, 002h ; 80 c3 02 ; 0xf993a
+ xor bh, bh ; 30 ff ; 0xf993d
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf993f
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9942
+ call 0a96fh ; e8 27 10 ; 0xf9945
+ cmp byte [bp-016h], 009h ; 80 7e ea 09 ; 0xf9948 virtio.c:525
+ jne short 09971h ; 75 23 ; 0xf994c
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf994e
+ jc short 09971h ; 72 1f ; 0xf9950
+ mov bl, cl ; 88 cb ; 0xf9952 virtio.c:529
+ add bl, 003h ; 80 c3 03 ; 0xf9954
+ xor bh, bh ; 30 ff ; 0xf9957
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9959
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf995c
+ call 0a96fh ; e8 0d 10 ; 0xf995f
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf9962
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf9965 virtio.c:532
+ je short 09977h ; 74 0e ; 0xf9967
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf9969
+ jc short 09971h ; 72 04 ; 0xf996b
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf996d
+ jbe short 0997ah ; 76 09 ; 0xf996f
+ jmp near 09a18h ; e9 a4 00 ; 0xf9971
+ jmp near 09a2fh ; e9 b8 00 ; 0xf9974
+ jmp near 09a10h ; e9 96 00 ; 0xf9977
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf997a virtio.c:539
+ xor ah, ah ; 30 e4 ; 0xf997d
+ dec ax ; 48 ; 0xf997f
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf9980
+ imul dx ; f7 ea ; 0xf9983
+ lea di, [si+05ch] ; 8d 7c 5c ; 0xf9985
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9988
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf998b
+ add di, ax ; 01 c7 ; 0xf998e
+ mov bl, cl ; 88 cb ; 0xf9990 virtio.c:541
+ add bl, 004h ; 80 c3 04 ; 0xf9992
+ xor bh, bh ; 30 ff ; 0xf9995
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9997
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf999a
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf999d
+ mov byte [bp-010h], ch ; 88 6e f0 ; 0xf99a0
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf99a3
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf99a6
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf99a9
+ call 0a96fh ; e8 c0 0f ; 0xf99ac
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf99af
+ mov byte [es:di], al ; 26 88 05 ; 0xf99b2
+ mov bl, cl ; 88 cb ; 0xf99b5 virtio.c:542
+ add bl, 008h ; 80 c3 08 ; 0xf99b7
+ xor bh, bh ; 30 ff ; 0xf99ba
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf99bc
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf99bf
+ call 0a9bbh ; e8 f6 0f ; 0xf99c2
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf99c5
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf99c8
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf99cc
+ mov bl, cl ; 88 cb ; 0xf99d0 virtio.c:543
+ add bl, 00ch ; 80 c3 0c ; 0xf99d2
+ xor bh, bh ; 30 ff ; 0xf99d5
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf99d7
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf99da
+ call 0a9bbh ; e8 db 0f ; 0xf99dd
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf99e0
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf99e3
+ mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf99e7
+ cmp byte [bp-008h], 002h ; 80 7e f8 02 ; 0xf99eb virtio.c:544
+ jne short 09a18h ; 75 27 ; 0xf99ef
+ mov bl, cl ; 88 cb ; 0xf99f1 virtio.c:546
+ add bl, 010h ; 80 c3 10 ; 0xf99f3
+ xor bh, bh ; 30 ff ; 0xf99f6
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf99f8
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf99fb
+ call 0a9bbh ; e8 ba 0f ; 0xf99fe
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9a01
+ mov word [es:si+0008eh], ax ; 26 89 84 8e 00 ; 0xf9a04
+ mov word [es:si+00090h], dx ; 26 89 94 90 00 ; 0xf9a09
+ jmp short 09a18h ; eb 08 ; 0xf9a0e virtio.c:549
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9a10 virtio.c:552
+ mov byte [es:si+0008ch], cl ; 26 88 8c 8c 00 ; 0xf9a13
+ mov bl, cl ; 88 cb ; 0xf9a18 virtio.c:561
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf9a1a
+ xor bh, bh ; 30 ff ; 0xf9a1c
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf9a1e
+ xor dh, dh ; 30 f6 ; 0xf9a21
+ mov al, ch ; 88 e8 ; 0xf9a23
+ xor ah, ah ; 30 e4 ; 0xf9a25
+ call 0a96fh ; e8 45 0f ; 0xf9a27
+ mov cl, al ; 88 c1 ; 0xf9a2a
+ jmp near 09915h ; e9 e6 fe ; 0xf9a2c virtio.c:562
+ xor ch, ch ; 30 ed ; 0xf9a2f virtio.c:566
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9a31
+ mov ax, si ; 89 f0 ; 0xf9a34
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a36
+ call 09418h ; e8 dc f9 ; 0xf9a39
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf9a3c virtio.c:569
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9a3f
+ mov ax, si ; 89 f0 ; 0xf9a42
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a44
+ call 09418h ; e8 ce f9 ; 0xf9a47
+ mov byte [bp-00ah], 003h ; c6 46 f6 03 ; 0xf9a4a virtio.c:571
+ mov cx, strict word 00003h ; b9 03 00 ; 0xf9a4e virtio.c:572
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9a51
+ mov ax, si ; 89 f0 ; 0xf9a54
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a56
+ call 09418h ; e8 bc f9 ; 0xf9a59
+ xor bx, bx ; 31 db ; 0xf9a5c virtio.c:581
+ mov ax, si ; 89 f0 ; 0xf9a5e
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a60
+ call 09506h ; e8 a0 fa ; 0xf9a63
+ test dx, dx ; 85 d2 ; 0xf9a66
+ jne short 09a6fh ; 75 05 ; 0xf9a68
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9a6a
+ jc short 09aabh ; 72 3c ; 0xf9a6d
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9a6f
+ mov ax, si ; 89 f0 ; 0xf9a72
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a74
+ call 09506h ; e8 8c fa ; 0xf9a77
+ test dx, dx ; 85 d2 ; 0xf9a7a
+ jne short 09a83h ; 75 05 ; 0xf9a7c
+ cmp ax, strict word 00010h ; 3d 10 00 ; 0xf9a7e
+ jc short 09aabh ; 72 28 ; 0xf9a81
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9a83
+ mov ax, si ; 89 f0 ; 0xf9a86
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a88
+ call 09506h ; e8 78 fa ; 0xf9a8b
+ test dx, dx ; 85 d2 ; 0xf9a8e
+ jne short 09a97h ; 75 05 ; 0xf9a90
+ cmp ax, strict word 00020h ; 3d 20 00 ; 0xf9a92
+ jc short 09aabh ; 72 14 ; 0xf9a95
+ mov bx, strict word 00008h ; bb 08 00 ; 0xf9a97
+ mov ax, si ; 89 f0 ; 0xf9a9a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a9c
+ call 09506h ; e8 64 fa ; 0xf9a9f
+ test dx, dx ; 85 d2 ; 0xf9aa2
+ jne short 09ab1h ; 75 0b ; 0xf9aa4
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9aa6
+ jnc short 09ab1h ; 73 06 ; 0xf9aa9
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9aab virtio.c:587
+ jmp near 09c2bh ; e9 7a 01 ; 0xf9aae
+ xor ax, ax ; 31 c0 ; 0xf9ab1 virtio.c:590
+ push ax ; 50 ; 0xf9ab3
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9ab4
+ push ax ; 50 ; 0xf9ab7
+ mov bx, strict word 0000ch ; bb 0c 00 ; 0xf9ab8
+ mov ax, si ; 89 f0 ; 0xf9abb
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9abd
+ call 094c5h ; e8 02 fa ; 0xf9ac0
+ or byte [bp-00ah], 008h ; 80 4e f6 08 ; 0xf9ac3 virtio.c:593
+ mov cl, byte [bp-00ah] ; 8a 4e f6 ; 0xf9ac7 virtio.c:594
+ xor ch, ch ; 30 ed ; 0xf9aca
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9acc
+ mov ax, si ; 89 f0 ; 0xf9acf
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9ad1
+ call 09418h ; e8 41 f9 ; 0xf9ad4
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9ad7 virtio.c:597
+ mov ax, si ; 89 f0 ; 0xf9ada
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9adc
+ call 093dfh ; e8 fd f8 ; 0xf9adf
+ test AL, strict byte 008h ; a8 08 ; 0xf9ae2
+ je short 09aabh ; 74 c5 ; 0xf9ae4
+ xor cx, cx ; 31 c9 ; 0xf9ae6 virtio.c:604
+ mov bx, strict word 00016h ; bb 16 00 ; 0xf9ae8
+ mov ax, si ; 89 f0 ; 0xf9aeb
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9aed
+ call 0948ch ; e8 99 f9 ; 0xf9af0
+ xor cx, cx ; 31 c9 ; 0xf9af3 virtio.c:605
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9af5
+ mov ax, si ; 89 f0 ; 0xf9af8
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9afa
+ call 0948ch ; e8 8c f9 ; 0xf9afd
+ xor cx, cx ; 31 c9 ; 0xf9b00 virtio.c:606
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9b02
+ mov ax, si ; 89 f0 ; 0xf9b05
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b07
+ call 0948ch ; e8 7f f9 ; 0xf9b0a
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf9b0d virtio.c:608
+ mov bx, strict word 00016h ; bb 16 00 ; 0xf9b10
+ mov ax, si ; 89 f0 ; 0xf9b13
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b15
+ call 0948ch ; e8 71 f9 ; 0xf9b18
+ xor cx, cx ; 31 c9 ; 0xf9b1b virtio.c:609
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9b1d
+ mov ax, si ; 89 f0 ; 0xf9b20
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b22
+ call 0948ch ; e8 64 f9 ; 0xf9b25
+ xor cx, cx ; 31 c9 ; 0xf9b28 virtio.c:610
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9b2a
+ mov ax, si ; 89 f0 ; 0xf9b2d
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b2f
+ call 0948ch ; e8 57 f9 ; 0xf9b32
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9b35 virtio.c:613
+ mov bx, strict word 00016h ; bb 16 00 ; 0xf9b38
+ mov ax, si ; 89 f0 ; 0xf9b3b
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b3d
+ call 0948ch ; e8 49 f9 ; 0xf9b40
+ mov cx, strict word 00003h ; b9 03 00 ; 0xf9b43 virtio.c:614
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9b46
+ mov ax, si ; 89 f0 ; 0xf9b49
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b4b
+ call 0948ch ; e8 3b f9 ; 0xf9b4e
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf9b51 virtio.c:615
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9b54
+ mov ax, si ; 89 f0 ; 0xf9b57
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b59
+ call 0948ch ; e8 2d f9 ; 0xf9b5c
+ mov ax, si ; 89 f0 ; 0xf9b5f virtio.c:618
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b61
+ call 095f2h ; e8 8b fa ; 0xf9b64
+ push dx ; 52 ; 0xf9b67
+ push ax ; 50 ; 0xf9b68
+ mov bx, strict word 00020h ; bb 20 00 ; 0xf9b69
+ mov ax, si ; 89 f0 ; 0xf9b6c
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b6e
+ call 094c5h ; e8 51 f9 ; 0xf9b71
+ xor ax, ax ; 31 c0 ; 0xf9b74 virtio.c:619
+ push ax ; 50 ; 0xf9b76
+ push ax ; 50 ; 0xf9b77
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf9b78
+ mov ax, si ; 89 f0 ; 0xf9b7b
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b7d
+ call 094c5h ; e8 42 f9 ; 0xf9b80
+ lea ax, [si+030h] ; 8d 44 30 ; 0xf9b83 virtio.c:621
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b86
+ call 095f2h ; e8 66 fa ; 0xf9b89
+ push dx ; 52 ; 0xf9b8c
+ push ax ; 50 ; 0xf9b8d
+ mov bx, strict word 00028h ; bb 28 00 ; 0xf9b8e
+ mov ax, si ; 89 f0 ; 0xf9b91
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b93
+ call 094c5h ; e8 2c f9 ; 0xf9b96
+ xor ax, ax ; 31 c0 ; 0xf9b99 virtio.c:622
+ push ax ; 50 ; 0xf9b9b
+ push ax ; 50 ; 0xf9b9c
+ mov bx, strict word 0002ch ; bb 2c 00 ; 0xf9b9d
+ mov ax, si ; 89 f0 ; 0xf9ba0
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9ba2
+ call 094c5h ; e8 1d f9 ; 0xf9ba5
+ lea ax, [si+03ch] ; 8d 44 3c ; 0xf9ba8 virtio.c:624
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9bab
+ call 095f2h ; e8 41 fa ; 0xf9bae
+ push dx ; 52 ; 0xf9bb1
+ push ax ; 50 ; 0xf9bb2
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf9bb3
+ mov ax, si ; 89 f0 ; 0xf9bb6
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9bb8
+ call 094c5h ; e8 07 f9 ; 0xf9bbb
+ xor ax, ax ; 31 c0 ; 0xf9bbe virtio.c:625
+ push ax ; 50 ; 0xf9bc0
+ push ax ; 50 ; 0xf9bc1
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf9bc2
+ mov ax, si ; 89 f0 ; 0xf9bc5
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9bc7
+ call 094c5h ; e8 f8 f8 ; 0xf9bca
+ xor ax, ax ; 31 c0 ; 0xf9bcd virtio.c:627
+ push ax ; 50 ; 0xf9bcf
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf9bd0
+ push ax ; 50 ; 0xf9bd3
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf9bd4
+ mov ax, si ; 89 f0 ; 0xf9bd7
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9bd9
+ call 0953fh ; e8 60 f9 ; 0xf9bdc
+ xor ax, ax ; 31 c0 ; 0xf9bdf virtio.c:628
+ push ax ; 50 ; 0xf9be1
+ mov ax, strict word 00020h ; b8 20 00 ; 0xf9be2
+ push ax ; 50 ; 0xf9be5
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9be6
+ mov ax, si ; 89 f0 ; 0xf9be9
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9beb
+ call 0953fh ; e8 4e f9 ; 0xf9bee
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xf9bf1 virtio.c:631
+ mov ax, si ; 89 f0 ; 0xf9bf4
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9bf6
+ call 09453h ; e8 57 f8 ; 0xf9bf9
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9bfc
+ mov bx, word [es:si+0008eh] ; 26 8b 9c 8e 00 ; 0xf9bff
+ mov cx, word [es:si+00090h] ; 26 8b 8c 90 00 ; 0xf9c04
+ xor dx, dx ; 31 d2 ; 0xf9c09
+ call 0ab50h ; e8 42 0f ; 0xf9c0b
+ mov word [es:si+058h], ax ; 26 89 44 58 ; 0xf9c0e
+ mov word [es:si+05ah], dx ; 26 89 54 5a ; 0xf9c12
+ or byte [bp-00ah], 004h ; 80 4e f6 04 ; 0xf9c16 virtio.c:634
+ mov cl, byte [bp-00ah] ; 8a 4e f6 ; 0xf9c1a virtio.c:635
+ xor ch, ch ; 30 ed ; 0xf9c1d
+ mov bx, strict word 00014h ; bb 14 00 ; 0xf9c1f
+ mov ax, si ; 89 f0 ; 0xf9c22
+ mov dx, es ; 8c c2 ; 0xf9c24
+ call 09418h ; e8 ef f7 ; 0xf9c26
+ xor ax, ax ; 31 c0 ; 0xf9c29 virtio.c:637
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9c2b virtio.c:638
+ pop di ; 5f ; 0xf9c2e
+ pop si ; 5e ; 0xf9c2f
+ pop bp ; 5d ; 0xf9c30
+ retn 00002h ; c2 02 00 ; 0xf9c31
+ ; disGetNextSymbol 0xf9c34 LB 0x12b4 -> off=0x0 cb=00000000000000f9 uValue=00000000000f8634 'virtio_scsi_init'
+virtio_scsi_init: ; 0xf9c34 LB 0xf9
+ push bp ; 55 ; 0xf9c34 virtio.c:643
+ mov bp, sp ; 89 e5 ; 0xf9c35
+ push si ; 56 ; 0xf9c37
+ push di ; 57 ; 0xf9c38
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf9c39
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xf9c3c
+ mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf9c3f
+ mov di, ax ; 89 c7 ; 0xf9c42 virtio.c:645
+ mov si, dx ; 89 d6 ; 0xf9c44
+ mov byte [bp-008h], 0ffh ; c6 46 f8 ff ; 0xf9c46 virtio.c:647
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9c4a virtio.c:648
+ mov dl, cl ; 88 ca ; 0xf9c4e virtio.c:651
+ xor dh, dh ; 30 f6 ; 0xf9c50
+ mov al, bl ; 88 d8 ; 0xf9c52
+ xor ah, ah ; 30 e4 ; 0xf9c54
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf9c56
+ call 0a96fh ; e8 13 0d ; 0xf9c59
+ mov ch, al ; 88 c5 ; 0xf9c5c
+ test ch, ch ; 84 ed ; 0xf9c5e virtio.c:653
+ je short 09cc1h ; 74 5f ; 0xf9c60
+ mov bl, ch ; 88 eb ; 0xf9c62 virtio.c:655
+ xor bh, bh ; 30 ff ; 0xf9c64
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9c66
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf9c69
+ mov byte [bp-013h], bh ; 88 7e ed ; 0xf9c6c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9c6f
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9c72
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf9c75
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9c78
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9c7b
+ call 0a96fh ; e8 ee 0c ; 0xf9c7e
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9c81
+ mov bl, ch ; 88 eb ; 0xf9c84 virtio.c:656
+ add bl, 002h ; 80 c3 02 ; 0xf9c86
+ xor bh, bh ; 30 ff ; 0xf9c89
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9c8b
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9c8e
+ call 0a96fh ; e8 db 0c ; 0xf9c91
+ cmp byte [bp-012h], 009h ; 80 7e ee 09 ; 0xf9c94 virtio.c:660
+ jne short 09cceh ; 75 34 ; 0xf9c98
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf9c9a
+ jc short 09cceh ; 72 30 ; 0xf9c9c
+ mov bl, ch ; 88 eb ; 0xf9c9e virtio.c:664
+ add bl, 003h ; 80 c3 03 ; 0xf9ca0
+ xor bh, bh ; 30 ff ; 0xf9ca3
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9ca5
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9ca8
+ call 0a96fh ; e8 c1 0c ; 0xf9cab
+ cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9cae virtio.c:666
+ jne short 09cb7h ; 75 03 ; 0xf9cb2
+ mov byte [bp-008h], ch ; 88 6e f8 ; 0xf9cb4 virtio.c:667
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf9cb7 virtio.c:670
+ jc short 09cceh ; 72 13 ; 0xf9cb9
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf9cbb
+ jbe short 09cc3h ; 76 04 ; 0xf9cbd
+ jmp short 09cceh ; eb 0d ; 0xf9cbf
+ jmp short 09ce1h ; eb 1e ; 0xf9cc1
+ mov cl, al ; 88 c1 ; 0xf9cc3 virtio.c:677
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf9cc5
+ mov AL, strict byte 001h ; b0 01 ; 0xf9cc7
+ sal al, CL ; d2 e0 ; 0xf9cc9
+ or byte [bp-00ch], al ; 08 46 f4 ; 0xf9ccb
+ mov bl, ch ; 88 eb ; 0xf9cce virtio.c:684
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf9cd0
+ xor bh, bh ; 30 ff ; 0xf9cd2
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf9cd4
+ xor dh, dh ; 30 f6 ; 0xf9cd7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9cd9
+ xor ah, ah ; 30 e4 ; 0xf9cdc
+ jmp near 09c59h ; e9 78 ff ; 0xf9cde virtio.c:685
+ cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9ce1 virtio.c:688
+ je short 09d23h ; 74 3c ; 0xf9ce5
+ cmp byte [bp-00ch], 01fh ; 80 7e f4 1f ; 0xf9ce7
+ jne short 09d23h ; 75 36 ; 0xf9ceb
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9ced virtio.c:694
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf9cf0
+ mov byte [bp-011h], ch ; 88 6e ef ; 0xf9cf3
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9cf6
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf9cf9
+ mov byte [bp-00fh], ch ; 88 6e f1 ; 0xf9cfc
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf9cff
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf9d02
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9d05
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9d08
+ call 0a9fah ; e8 ec 0c ; 0xf9d0b
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9d0e virtio.c:695
+ xor ah, ah ; 30 e4 ; 0xf9d11
+ push ax ; 50 ; 0xf9d13
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf9d14
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9d17
+ mov ax, di ; 89 f8 ; 0xf9d1a
+ mov dx, si ; 89 f2 ; 0xf9d1c
+ call 098f4h ; e8 d3 fb ; 0xf9d1e
+ jmp short 09d26h ; eb 03 ; 0xf9d21
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9d23 virtio.c:700
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9d26 virtio.c:701
+ pop di ; 5f ; 0xf9d29
+ pop si ; 5e ; 0xf9d2a
+ pop bp ; 5d ; 0xf9d2b
+ retn ; c3 ; 0xf9d2c
+ ; disGetNextSymbol 0xf9d2d LB 0x11bb -> off=0x0 cb=000000000000001e uValue=00000000000f872d 'buslogic_addr_to_phys'
+buslogic_addr_to_phys: ; 0xf9d2d LB 0x1e
+ push bx ; 53 ; 0xf9d2d buslogic.c:122
+ push cx ; 51 ; 0xf9d2e
+ push bp ; 55 ; 0xf9d2f
+ mov bp, sp ; 89 e5 ; 0xf9d30
+ mov bx, ax ; 89 c3 ; 0xf9d32
+ mov ax, dx ; 89 d0 ; 0xf9d34
+ xor dx, dx ; 31 d2 ; 0xf9d36 buslogic.c:124
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9d38
+ sal ax, 1 ; d1 e0 ; 0xf9d3b
+ rcl dx, 1 ; d1 d2 ; 0xf9d3d
+ loop 09d3bh ; e2 fa ; 0xf9d3f
+ xor cx, cx ; 31 c9 ; 0xf9d41
+ add ax, bx ; 01 d8 ; 0xf9d43
+ adc dx, cx ; 11 ca ; 0xf9d45
+ pop bp ; 5d ; 0xf9d47 buslogic.c:125
+ pop cx ; 59 ; 0xf9d48
+ pop bx ; 5b ; 0xf9d49
+ retn ; c3 ; 0xf9d4a
+ ; disGetNextSymbol 0xf9d4b LB 0x119d -> off=0x0 cb=0000000000000084 uValue=00000000000f874b 'buslogic_cmd'
+buslogic_cmd: ; 0xf9d4b LB 0x84
+ push bp ; 55 ; 0xf9d4b buslogic.c:127
+ mov bp, sp ; 89 e5 ; 0xf9d4c
+ push cx ; 51 ; 0xf9d4e
+ push si ; 56 ; 0xf9d4f
+ push di ; 57 ; 0xf9d50
+ mov si, ax ; 89 c6 ; 0xf9d51
+ mov cx, dx ; 89 d1 ; 0xf9d53
+ mov es, dx ; 8e c2 ; 0xf9d55 buslogic.c:132
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9d57
+ inc dx ; 42 ; 0xf9d5b
+ mov al, bl ; 88 d8 ; 0xf9d5c
+ out DX, AL ; ee ; 0xf9d5e
+ xor bx, bx ; 31 db ; 0xf9d5f buslogic.c:133
+ cmp bx, word [bp+008h] ; 3b 5e 08 ; 0xf9d61
+ jnc short 09d7fh ; 73 19 ; 0xf9d64
+ mov di, word [bp+004h] ; 8b 7e 04 ; 0xf9d66 buslogic.c:134
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9d69
+ inc word [bp+004h] ; ff 46 04 ; 0xf9d6c
+ mov es, cx ; 8e c1 ; 0xf9d6f
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9d71
+ inc dx ; 42 ; 0xf9d75
+ mov es, ax ; 8e c0 ; 0xf9d76
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf9d78
+ out DX, AL ; ee ; 0xf9d7b
+ inc bx ; 43 ; 0xf9d7c
+ jmp short 09d61h ; eb e2 ; 0xf9d7d
+ cmp word [bp+00eh], strict byte 00000h ; 83 7e 0e 00 ; 0xf9d7f buslogic.c:137
+ je short 09dafh ; 74 2a ; 0xf9d83
+ mov es, cx ; 8e c1 ; 0xf9d85 buslogic.c:139
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9d87
+ in AL, DX ; ec ; 0xf9d8b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9d8c
+ test AL, strict byte 004h ; a8 04 ; 0xf9d8e
+ je short 09d85h ; 74 f3 ; 0xf9d90
+ xor bx, bx ; 31 db ; 0xf9d92 buslogic.c:140
+ cmp bx, word [bp+00eh] ; 3b 5e 0e ; 0xf9d94
+ jnc short 09dafh ; 73 16 ; 0xf9d97
+ mov es, cx ; 8e c1 ; 0xf9d99 buslogic.c:141
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9d9b
+ inc dx ; 42 ; 0xf9d9f
+ in AL, DX ; ec ; 0xf9da0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9da1
+ les di, [bp+00ah] ; c4 7e 0a ; 0xf9da3
+ mov byte [es:di], al ; 26 88 05 ; 0xf9da6
+ inc word [bp+00ah] ; ff 46 0a ; 0xf9da9
+ inc bx ; 43 ; 0xf9dac
+ jmp short 09d94h ; eb e5 ; 0xf9dad
+ mov es, cx ; 8e c1 ; 0xf9daf buslogic.c:144
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9db1
+ in AL, DX ; ec ; 0xf9db5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9db6
+ test AL, strict byte 010h ; a8 10 ; 0xf9db8
+ je short 09dafh ; 74 f3 ; 0xf9dba
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9dbc buslogic.c:147
+ mov AL, strict byte 020h ; b0 20 ; 0xf9dc0
+ out DX, AL ; ee ; 0xf9dc2
+ xor ax, ax ; 31 c0 ; 0xf9dc3 buslogic.c:150
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9dc5
+ pop di ; 5f ; 0xf9dc8
+ pop si ; 5e ; 0xf9dc9
+ pop cx ; 59 ; 0xf9dca
+ pop bp ; 5d ; 0xf9dcb
+ retn 0000ch ; c2 0c 00 ; 0xf9dcc
+ ; disGetNextSymbol 0xf9dcf LB 0x1119 -> off=0x0 cb=00000000000000b9 uValue=00000000000f87cf 'buslogic_scsi_cmd_data_out'
+buslogic_scsi_cmd_data_out: ; 0xf9dcf LB 0xb9
+ push bp ; 55 ; 0xf9dcf buslogic.c:152
+ mov bp, sp ; 89 e5 ; 0xf9dd0
+ push cx ; 51 ; 0xf9dd2
+ push si ; 56 ; 0xf9dd3
+ push di ; 57 ; 0xf9dd4
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9dd5
+ mov si, ax ; 89 c6 ; 0xf9dd8
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9dda
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9ddd buslogic.c:155
+ mov di, dx ; 89 d7 ; 0xf9de0
+ mov cx, strict word 0001ch ; b9 1c 00 ; 0xf9de2 buslogic.c:160
+ xor bx, bx ; 31 db ; 0xf9de5
+ call 0abc0h ; e8 d6 0d ; 0xf9de7
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9dea buslogic.c:161
+ xor bx, bx ; 31 db ; 0xf9ded
+ mov dx, ss ; 8c d2 ; 0xf9def
+ lea ax, [bp-00eh] ; 8d 46 f2 ; 0xf9df1
+ call 0abc0h ; e8 c9 0d ; 0xf9df4
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9df7 buslogic.c:163
+ mov es, di ; 8e c7 ; 0xf9dfa
+ mov word [es:si], ax ; 26 89 04 ; 0xf9dfc
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9dff
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf9e02
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9e06 buslogic.c:164
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9e09
+ call 09d2dh ; e8 1e ff ; 0xf9e0c
+ mov es, di ; 8e c7 ; 0xf9e0f
+ mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf9e11
+ mov word [es:si+006h], dx ; 26 89 54 06 ; 0xf9e15
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9e19 buslogic.c:165
+ mov byte [es:si+008h], al ; 26 88 44 08 ; 0xf9e1c
+ mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xf9e20 buslogic.c:166
+ and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xf9e25 buslogic.c:167
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9e2a buslogic.c:168
+ mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf9e2d
+ xor si, si ; 31 f6 ; 0xf9e31 buslogic.c:170
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9e33
+ xor ah, ah ; 30 e4 ; 0xf9e36
+ cmp si, ax ; 39 c6 ; 0xf9e38
+ jnl short 09e54h ; 7d 18 ; 0xf9e3a
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf9e3c buslogic.c:171
+ add bx, si ; 01 f3 ; 0xf9e3f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9e41
+ add dx, si ; 01 f2 ; 0xf9e44
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf9e46
+ mov es, di ; 8e c7 ; 0xf9e49
+ mov bx, dx ; 89 d3 ; 0xf9e4b
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf9e4d
+ inc si ; 46 ; 0xf9e51
+ jmp short 09e33h ; eb df ; 0xf9e52
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9e54 buslogic.c:173
+ push ax ; 50 ; 0xf9e57
+ lea dx, [bp-00eh] ; 8d 56 f2 ; 0xf9e58
+ push SS ; 16 ; 0xf9e5b
+ push dx ; 52 ; 0xf9e5c
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9e5d
+ xor ah, ah ; 30 e4 ; 0xf9e60
+ add ax, strict word 0000ch ; 05 0c 00 ; 0xf9e62
+ push ax ; 50 ; 0xf9e65
+ push di ; 57 ; 0xf9e66
+ push word [bp-00ah] ; ff 76 f6 ; 0xf9e67
+ mov bx, 00083h ; bb 83 00 ; 0xf9e6a
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9e6d
+ mov dx, di ; 89 fa ; 0xf9e70
+ call 09d4bh ; e8 d6 fe ; 0xf9e72
+ test ax, ax ; 85 c0 ; 0xf9e75 buslogic.c:175
+ jne short 09e7eh ; 75 05 ; 0xf9e77
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9e79 buslogic.c:176
+ xor ah, ah ; 30 e4 ; 0xf9e7c
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9e7e buslogic.c:179
+ pop di ; 5f ; 0xf9e81
+ pop si ; 5e ; 0xf9e82
+ pop cx ; 59 ; 0xf9e83
+ pop bp ; 5d ; 0xf9e84
+ retn 0000eh ; c2 0e 00 ; 0xf9e85
+ ; disGetNextSymbol 0xf9e88 LB 0x1060 -> off=0x0 cb=00000000000000b9 uValue=00000000000f8888 'buslogic_scsi_cmd_data_in'
+buslogic_scsi_cmd_data_in: ; 0xf9e88 LB 0xb9
+ push bp ; 55 ; 0xf9e88 buslogic.c:181
+ mov bp, sp ; 89 e5 ; 0xf9e89
+ push cx ; 51 ; 0xf9e8b
+ push si ; 56 ; 0xf9e8c
+ push di ; 57 ; 0xf9e8d
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9e8e
+ mov si, ax ; 89 c6 ; 0xf9e91
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9e93
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9e96 buslogic.c:184
+ mov di, dx ; 89 d7 ; 0xf9e99
+ mov cx, strict word 0001ch ; b9 1c 00 ; 0xf9e9b buslogic.c:191
+ xor bx, bx ; 31 db ; 0xf9e9e
+ call 0abc0h ; e8 1d 0d ; 0xf9ea0
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9ea3 buslogic.c:192
+ xor bx, bx ; 31 db ; 0xf9ea6
+ mov dx, ss ; 8c d2 ; 0xf9ea8
+ lea ax, [bp-00eh] ; 8d 46 f2 ; 0xf9eaa
+ call 0abc0h ; e8 10 0d ; 0xf9ead
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9eb0 buslogic.c:194
+ mov es, di ; 8e c7 ; 0xf9eb3
+ mov word [es:si], ax ; 26 89 04 ; 0xf9eb5
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9eb8
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf9ebb
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9ebf buslogic.c:195
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9ec2
+ call 09d2dh ; e8 65 fe ; 0xf9ec5
+ mov es, di ; 8e c7 ; 0xf9ec8
+ mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf9eca
+ mov word [es:si+006h], dx ; 26 89 54 06 ; 0xf9ece
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9ed2 buslogic.c:196
+ mov byte [es:si+008h], al ; 26 88 44 08 ; 0xf9ed5
+ mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xf9ed9 buslogic.c:197
+ and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xf9ede buslogic.c:198
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9ee3 buslogic.c:199
+ mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf9ee6
+ xor si, si ; 31 f6 ; 0xf9eea buslogic.c:201
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9eec
+ xor ah, ah ; 30 e4 ; 0xf9eef
+ cmp si, ax ; 39 c6 ; 0xf9ef1
+ jnl short 09f0dh ; 7d 18 ; 0xf9ef3
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf9ef5 buslogic.c:202
+ add bx, si ; 01 f3 ; 0xf9ef8
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9efa
+ add dx, si ; 01 f2 ; 0xf9efd
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf9eff
+ mov es, di ; 8e c7 ; 0xf9f02
+ mov bx, dx ; 89 d3 ; 0xf9f04
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf9f06
+ inc si ; 46 ; 0xf9f0a
+ jmp short 09eech ; eb df ; 0xf9f0b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9f0d buslogic.c:204
+ push ax ; 50 ; 0xf9f10
+ lea dx, [bp-00eh] ; 8d 56 f2 ; 0xf9f11
+ push SS ; 16 ; 0xf9f14
+ push dx ; 52 ; 0xf9f15
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9f16
+ xor ah, ah ; 30 e4 ; 0xf9f19
+ add ax, strict word 0000ch ; 05 0c 00 ; 0xf9f1b
+ push ax ; 50 ; 0xf9f1e
+ push di ; 57 ; 0xf9f1f
+ push word [bp-00ah] ; ff 76 f6 ; 0xf9f20
+ mov bx, 00083h ; bb 83 00 ; 0xf9f23
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9f26
+ mov dx, di ; 89 fa ; 0xf9f29
+ call 09d4bh ; e8 1d fe ; 0xf9f2b
+ test ax, ax ; 85 c0 ; 0xf9f2e buslogic.c:206
+ jne short 09f37h ; 75 05 ; 0xf9f30
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9f32 buslogic.c:207
+ xor ah, ah ; 30 e4 ; 0xf9f35
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9f37 buslogic.c:210
+ pop di ; 5f ; 0xf9f3a
+ pop si ; 5e ; 0xf9f3b
+ pop cx ; 59 ; 0xf9f3c
+ pop bp ; 5d ; 0xf9f3d
+ retn 0000eh ; c2 0e 00 ; 0xf9f3e
+ ; disGetNextSymbol 0xf9f41 LB 0xfa7 -> off=0x0 cb=0000000000000022 uValue=00000000000f8941 'buslogic_scsi_hba_init'
+buslogic_scsi_hba_init: ; 0xf9f41 LB 0x22
+ push bp ; 55 ; 0xf9f41 buslogic.c:215
+ mov bp, sp ; 89 e5 ; 0xf9f42
+ push bx ; 53 ; 0xf9f44
+ mov bx, ax ; 89 c3 ; 0xf9f45
+ mov es, dx ; 8e c2 ; 0xf9f47
+ mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf9f49 buslogic.c:218
+ mov AL, strict byte 080h ; b0 80 ; 0xf9f4d
+ out DX, AL ; ee ; 0xf9f4f
+ mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf9f50 buslogic.c:219
+ in AL, DX ; ec ; 0xf9f54
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9f55
+ test AL, strict byte 010h ; a8 10 ; 0xf9f57
+ je short 09f50h ; 74 f5 ; 0xf9f59
+ xor ax, ax ; 31 c0 ; 0xf9f5b buslogic.c:222
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9f5d
+ pop bx ; 5b ; 0xf9f60
+ pop bp ; 5d ; 0xf9f61
+ retn ; c3 ; 0xf9f62
+ ; disGetNextSymbol 0xf9f63 LB 0xf85 -> off=0x0 cb=0000000000000058 uValue=00000000000f8963 'buslogic_scsi_init'
+buslogic_scsi_init: ; 0xf9f63 LB 0x58
+ push bp ; 55 ; 0xf9f63 buslogic.c:227
+ mov bp, sp ; 89 e5 ; 0xf9f64
+ push si ; 56 ; 0xf9f66
+ push di ; 57 ; 0xf9f67
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9f68
+ mov si, ax ; 89 c6 ; 0xf9f6b
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf9f6d
+ mov byte [bp-006h], cl ; 88 4e fa ; 0xf9f70 buslogic.c:234
+ xor al, al ; 30 c0 ; 0xf9f73
+ mov byte [bp-005h], al ; 88 46 fb ; 0xf9f75
+ mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf9f78
+ mov byte [bp-009h], al ; 88 46 f7 ; 0xf9f7b
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf9f7e
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf9f81
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9f84
+ call 0a9bbh ; e8 31 0a ; 0xf9f87
+ test AL, strict byte 001h ; a8 01 ; 0xf9f8a buslogic.c:238
+ je short 09fb1h ; 74 23 ; 0xf9f8c
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf9f8e buslogic.c:240
+ mov di, ax ; 89 c7 ; 0xf9f90
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf9f92 buslogic.c:243
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf9f95
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf9f98
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9f9b
+ call 0a9fah ; e8 59 0a ; 0xf9f9e
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf9fa1 buslogic.c:246
+ mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf9fa4
+ mov ax, si ; 89 f0 ; 0xf9fa8 buslogic.c:247
+ mov dx, es ; 8c c2 ; 0xf9faa
+ call 09f41h ; e8 92 ff ; 0xf9fac
+ jmp short 09fb4h ; eb 03 ; 0xf9faf
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9fb1 buslogic.c:252
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9fb4 buslogic.c:253
+ pop di ; 5f ; 0xf9fb7
+ pop si ; 5e ; 0xf9fb8
+ pop bp ; 5d ; 0xf9fb9
+ retn ; c3 ; 0xf9fba
+ ; disGetNextSymbol 0xf9fbb LB 0xf2d -> off=0x0 cb=0000000000000025 uValue=00000000000f89bb 'btaha_scsi_init'
+btaha_scsi_init: ; 0xf9fbb LB 0x25
+ push bp ; 55 ; 0xf9fbb buslogic.c:259
+ mov bp, sp ; 89 e5 ; 0xf9fbc
+ push si ; 56 ; 0xf9fbe
+ mov si, ax ; 89 c6 ; 0xf9fbf
+ mov es, dx ; 8e c2 ; 0xf9fc1
+ mov dl, bl ; 88 da ; 0xf9fc3
+ mov al, cl ; 88 c8 ; 0xf9fc5
+ mov dh, bl ; 88 de ; 0xf9fc7 buslogic.c:263
+ xor dl, bl ; 30 da ; 0xf9fc9
+ xor ah, ah ; 30 e4 ; 0xf9fcb
+ or dx, ax ; 09 c2 ; 0xf9fcd
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf9fcf
+ mov ax, si ; 89 f0 ; 0xf9fd3 buslogic.c:266
+ mov dx, es ; 8c c2 ; 0xf9fd5
+ call 09f41h ; e8 67 ff ; 0xf9fd7
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9fda buslogic.c:267
+ pop si ; 5e ; 0xf9fdd
+ pop bp ; 5d ; 0xf9fde
+ retn ; c3 ; 0xf9fdf
+ ; disGetNextSymbol 0xf9fe0 LB 0xf08 -> off=0x0 cb=0000000000000055 uValue=00000000000f89e0 'btaha_scsi_detect'
+btaha_scsi_detect: ; 0xf9fe0 LB 0x55
+ push bp ; 55 ; 0xf9fe0 buslogic.c:272
+ mov bp, sp ; 89 e5 ; 0xf9fe1
+ push bx ; 53 ; 0xf9fe3
+ push cx ; 51 ; 0xf9fe4
+ push dx ; 52 ; 0xf9fe5
+ push si ; 56 ; 0xf9fe6
+ push di ; 57 ; 0xf9fe7
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9fe8
+ push SS ; 16 ; 0xf9feb buslogic.c:274
+ pop ES ; 07 ; 0xf9fec
+ lea di, [bp-010h] ; 8d 7e f0 ; 0xf9fed
+ mov si, 000d6h ; be d6 00 ; 0xf9ff0
+ movsw ; a5 ; 0xf9ff3
+ movsw ; a5 ; 0xf9ff4
+ movsw ; a5 ; 0xf9ff5
+ xor cx, cx ; 31 c9 ; 0xf9ff6 buslogic.c:279
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9ff8
+ test bx, bx ; 85 db ; 0xf9ffb
+ je short 0a020h ; 74 21 ; 0xf9ffd
+ mov dx, bx ; 89 da ; 0xf9fff buslogic.c:284
+ in AL, DX ; ec ; 0xfa001
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa002
+ cmp AL, strict byte 030h ; 3c 30 ; 0xfa004 buslogic.c:285
+ je short 0a00ch ; 74 04 ; 0xfa006
+ cmp AL, strict byte 010h ; 3c 10 ; 0xfa008
+ jne short 0a016h ; 75 0a ; 0xfa00a
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xfa00c buslogic.c:303
+ in AL, DX ; ec ; 0xfa00f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa010
+ test AL, strict byte 040h ; a8 40 ; 0xfa012 buslogic.c:304
+ jne short 0a020h ; 75 0a ; 0xfa014
+ inc cx ; 41 ; 0xfa016 buslogic.c:309
+ mov si, cx ; 89 ce ; 0xfa017
+ sal si, 1 ; d1 e6 ; 0xfa019
+ mov bx, word [bp+si-010h] ; 8b 5a f0 ; 0xfa01b
+ jmp short 09ffbh ; eb db ; 0xfa01e
+ test bx, bx ; 85 db ; 0xfa020 buslogic.c:311
+ je short 0a028h ; 74 04 ; 0xfa022
+ mov ax, bx ; 89 d8 ; 0xfa024
+ jmp short 0a02bh ; eb 03 ; 0xfa026
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa028
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xfa02b buslogic.c:312
+ pop di ; 5f ; 0xfa02e
+ pop si ; 5e ; 0xfa02f
+ pop dx ; 5a ; 0xfa030
+ pop cx ; 59 ; 0xfa031
+ pop bx ; 5b ; 0xfa032
+ pop bp ; 5d ; 0xfa033
+ retn ; c3 ; 0xfa034
+ ; disGetNextSymbol 0xfa035 LB 0xeb3 -> off=0x0 cb=000000000000001e uValue=00000000000f8a35 'lsilogic_addr_to_phys'
+lsilogic_addr_to_phys: ; 0xfa035 LB 0x1e
+ push bx ; 53 ; 0xfa035 lsilogic.c:331
+ push cx ; 51 ; 0xfa036
+ push bp ; 55 ; 0xfa037
+ mov bp, sp ; 89 e5 ; 0xfa038
+ mov bx, ax ; 89 c3 ; 0xfa03a
+ mov ax, dx ; 89 d0 ; 0xfa03c
+ xor dx, dx ; 31 d2 ; 0xfa03e lsilogic.c:333
+ mov cx, strict word 00004h ; b9 04 00 ; 0xfa040
+ sal ax, 1 ; d1 e0 ; 0xfa043
+ rcl dx, 1 ; d1 d2 ; 0xfa045
+ loop 0a043h ; e2 fa ; 0xfa047
+ xor cx, cx ; 31 c9 ; 0xfa049
+ add ax, bx ; 01 d8 ; 0xfa04b
+ adc dx, cx ; 11 ca ; 0xfa04d
+ pop bp ; 5d ; 0xfa04f lsilogic.c:334
+ pop cx ; 59 ; 0xfa050
+ pop bx ; 5b ; 0xfa051
+ retn ; c3 ; 0xfa052
+ ; disGetNextSymbol 0xfa053 LB 0xe95 -> off=0x0 cb=00000000000000f8 uValue=00000000000f8a53 'lsilogic_cmd'
+lsilogic_cmd: ; 0xfa053 LB 0xf8
+ push bp ; 55 ; 0xfa053 lsilogic.c:336
+ mov bp, sp ; 89 e5 ; 0xfa054
+ push si ; 56 ; 0xfa056
+ push di ; 57 ; 0xfa057
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xfa058
+ mov si, ax ; 89 c6 ; 0xfa05b
+ mov word [bp-006h], dx ; 89 56 fa ; 0xfa05d
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xfa060 lsilogic.c:340
+ mov word [bp-014h], cx ; 89 4e ec ; 0xfa063
+ mov [bp-00ch], ds ; 8c 5e f4 ; 0xfa066 lsilogic.c:341
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xfa069
+ mov word [bp-012h], ax ; 89 46 ee ; 0xfa06c
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xfa06f lsilogic.c:342
+ shr ax, 1 ; d1 e8 ; 0xfa072
+ shr ax, 1 ; d1 e8 ; 0xfa074
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xfa076
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xfa079
+ mov dx, word [bp+00ah] ; 8b 56 0a ; 0xfa07e lsilogic.c:343
+ shr dx, 1 ; d1 ea ; 0xfa081
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xfa083
+ or ah, 042h ; 80 cc 42 ; 0xfa086 lsilogic.c:344
+ mov cx, ax ; 89 c1 ; 0xfa089
+ test byte [bp+004h], 003h ; f6 46 04 03 ; 0xfa08b lsilogic.c:346
+ jne short 0a097h ; 75 06 ; 0xfa08f
+ test byte [bp+00ah], 001h ; f6 46 0a 01 ; 0xfa091
+ je short 0a09dh ; 74 06 ; 0xfa095
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa097 lsilogic.c:348
+ jmp near 0a142h ; e9 a5 00 ; 0xfa09a
+ mov es, [bp-006h] ; 8e 46 fa ; 0xfa09d lsilogic.c:350
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa0a0
+ xor ax, ax ; 31 c0 ; 0xfa0a5
+ xchg cx, ax ; 91 ; 0xfa0a7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa0a8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa0ac
+ out DX, eax ; 66 ef ; 0xfa0ae
+ xor bx, bx ; 31 db ; 0xfa0b0 lsilogic.c:351
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xfa0b2
+ test ax, ax ; 85 c0 ; 0xfa0b5
+ jnbe short 0a0c0h ; 77 07 ; 0xfa0b7
+ jne short 0a0e7h ; 75 2c ; 0xfa0b9
+ cmp bx, word [bp-00eh] ; 3b 5e f2 ; 0xfa0bb
+ jnc short 0a0e7h ; 73 27 ; 0xfa0be
+ mov di, bx ; 89 df ; 0xfa0c0 lsilogic.c:352
+ sal di, 1 ; d1 e7 ; 0xfa0c2
+ sal di, 1 ; d1 e7 ; 0xfa0c4
+ mov es, [bp-014h] ; 8e 46 ec ; 0xfa0c6
+ add di, word [bp-00ah] ; 03 7e f6 ; 0xfa0c9
+ mov ax, word [es:di] ; 26 8b 05 ; 0xfa0cc
+ mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xfa0cf
+ mov es, [bp-006h] ; 8e 46 fa ; 0xfa0d3
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa0d6
+ xchg cx, ax ; 91 ; 0xfa0db
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa0dc
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa0e0
+ out DX, eax ; 66 ef ; 0xfa0e2
+ inc bx ; 43 ; 0xfa0e4
+ jmp short 0a0b2h ; eb cb ; 0xfa0e5
+ xor bx, bx ; 31 db ; 0xfa0e7 lsilogic.c:354
+ cmp bx, word [bp-010h] ; 3b 5e f0 ; 0xfa0e9
+ jnc short 0a140h ; 73 52 ; 0xfa0ec
+ mov es, [bp-006h] ; 8e 46 fa ; 0xfa0ee lsilogic.c:357
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa0f1
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xfa0f6
+ in eax, DX ; 66 ed ; 0xfa0f9
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa0fb
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa0fd
+ xchg dx, ax ; 92 ; 0xfa101
+ test AL, strict byte 001h ; a8 01 ; 0xfa102
+ je short 0a0eeh ; 74 e8 ; 0xfa104
+ mov es, [bp-006h] ; 8e 46 fa ; 0xfa106 lsilogic.c:359
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa109
+ in eax, DX ; 66 ed ; 0xfa10e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa110
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa112
+ xchg dx, ax ; 92 ; 0xfa116
+ mov di, bx ; 89 df ; 0xfa117
+ sal di, 1 ; d1 e7 ; 0xfa119
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa11b
+ add di, word [bp-012h] ; 03 7e ee ; 0xfa11e
+ mov word [es:di], ax ; 26 89 05 ; 0xfa121
+ mov es, [bp-006h] ; 8e 46 fa ; 0xfa124 lsilogic.c:360
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa127
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xfa12c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa12f
+ xor cx, cx ; 31 c9 ; 0xfa132
+ xchg cx, ax ; 91 ; 0xfa134
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa135
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa139
+ out DX, eax ; 66 ef ; 0xfa13b
+ inc bx ; 43 ; 0xfa13d lsilogic.c:361
+ jmp short 0a0e9h ; eb a9 ; 0xfa13e
+ xor ax, ax ; 31 c0 ; 0xfa140 lsilogic.c:363
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa142 lsilogic.c:364
+ pop di ; 5f ; 0xfa145
+ pop si ; 5e ; 0xfa146
+ pop bp ; 5d ; 0xfa147
+ retn 00008h ; c2 08 00 ; 0xfa148
+ ; disGetNextSymbol 0xfa14b LB 0xd9d -> off=0x0 cb=00000000000000d7 uValue=00000000000f8b4b 'lsilogic_scsi_cmd_exec'
+lsilogic_scsi_cmd_exec: ; 0xfa14b LB 0xd7
+ push bp ; 55 ; 0xfa14b lsilogic.c:366
+ mov bp, sp ; 89 e5 ; 0xfa14c
+ push bx ; 53 ; 0xfa14e
+ push cx ; 51 ; 0xfa14f
+ push si ; 56 ; 0xfa150
+ push di ; 57 ; 0xfa151
+ push ax ; 50 ; 0xfa152
+ mov bx, ax ; 89 c3 ; 0xfa153
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa155
+ call 0a035h ; e8 da fe ; 0xfa158 lsilogic.c:372
+ mov cx, dx ; 89 d1 ; 0xfa15b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa15d
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa160
+ add dx, strict byte 00040h ; 83 c2 40 ; 0xfa165
+ xchg cx, ax ; 91 ; 0xfa168
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa169
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa16d
+ out DX, eax ; 66 ef ; 0xfa16f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa171 lsilogic.c:375
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa174
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xfa179
+ in eax, DX ; 66 ed ; 0xfa17c
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa17e
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa180
+ xchg dx, ax ; 92 ; 0xfa184
+ test AL, strict byte 008h ; a8 08 ; 0xfa185
+ je short 0a171h ; 74 e8 ; 0xfa187
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa189 lsilogic.c:377
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa18c
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xfa191
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa194
+ xor cx, cx ; 31 c9 ; 0xfa197
+ xchg cx, ax ; 91 ; 0xfa199
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa19a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa19e
+ out DX, eax ; 66 ef ; 0xfa1a0
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa1a2 lsilogic.c:380
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa1a5
+ add dx, strict byte 00044h ; 83 c2 44 ; 0xfa1aa
+ in eax, DX ; 66 ed ; 0xfa1ad
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa1af
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa1b1
+ xchg dx, ax ; 92 ; 0xfa1b5
+ mov cx, dx ; 89 d1 ; 0xfa1b6
+ mov di, ax ; 89 c7 ; 0xfa1b8
+ mov si, dx ; 89 d6 ; 0xfa1ba
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa1bc lsilogic.c:381
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa1bf
+ add dx, strict byte 00044h ; 83 c2 44 ; 0xfa1c4
+ in eax, DX ; 66 ed ; 0xfa1c7
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa1c9
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa1cb
+ xchg dx, ax ; 92 ; 0xfa1cf
+ cmp dx, strict byte 0ffffh ; 83 fa ff ; 0xfa1d0 lsilogic.c:382
+ jne short 0a1dah ; 75 05 ; 0xfa1d3
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa1d5
+ je short 0a1dfh ; 74 05 ; 0xfa1d8
+ mov ax, strict word 00005h ; b8 05 00 ; 0xfa1da lsilogic.c:383
+ jmp short 0a219h ; eb 3a ; 0xfa1dd
+ test ch, 080h ; f6 c5 80 ; 0xfa1df lsilogic.c:384
+ je short 0a208h ; 74 24 ; 0xfa1e2
+ lea ax, [bx+038h] ; 8d 47 38 ; 0xfa1e4 lsilogic.c:392
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfa1e7
+ call 0a035h ; e8 48 fe ; 0xfa1ea
+ mov cx, dx ; 89 d1 ; 0xfa1ed
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa1ef
+ mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa1f2
+ add dx, strict byte 00044h ; 83 c2 44 ; 0xfa1f7
+ xchg cx, ax ; 91 ; 0xfa1fa
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa1fb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa1ff
+ out DX, eax ; 66 ef ; 0xfa201
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa203 lsilogic.c:393
+ jmp short 0a219h ; eb 11 ; 0xfa206
+ test si, si ; 85 f6 ; 0xfa208 lsilogic.c:396
+ jne short 0a212h ; 75 06 ; 0xfa20a
+ cmp di, 0cafeh ; 81 ff fe ca ; 0xfa20c
+ je short 0a217h ; 74 05 ; 0xfa210
+ mov ax, strict word 00003h ; b8 03 00 ; 0xfa212 lsilogic.c:397
+ jmp short 0a219h ; eb 02 ; 0xfa215
+ xor ax, ax ; 31 c0 ; 0xfa217 lsilogic.c:399
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa219 lsilogic.c:400
+ pop di ; 5f ; 0xfa21c
+ pop si ; 5e ; 0xfa21d
+ pop cx ; 59 ; 0xfa21e
+ pop bx ; 5b ; 0xfa21f
+ pop bp ; 5d ; 0xfa220
+ retn ; c3 ; 0xfa221
+ ; disGetNextSymbol 0xfa222 LB 0xcc6 -> off=0x0 cb=00000000000000e0 uValue=00000000000f8c22 'lsilogic_scsi_cmd_data_out'
+lsilogic_scsi_cmd_data_out: ; 0xfa222 LB 0xe0
+ push bp ; 55 ; 0xfa222 lsilogic.c:402
+ mov bp, sp ; 89 e5 ; 0xfa223
+ push cx ; 51 ; 0xfa225
+ push si ; 56 ; 0xfa226
+ push di ; 57 ; 0xfa227
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa228
+ mov di, ax ; 89 c7 ; 0xfa22b
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa22d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa230
+ mov si, ax ; 89 c6 ; 0xfa233 lsilogic.c:405
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa235
+ mov cx, strict word 00030h ; b9 30 00 ; 0xfa238 lsilogic.c:408
+ xor bx, bx ; 31 db ; 0xfa23b
+ call 0abc0h ; e8 80 09 ; 0xfa23d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa240 lsilogic.c:410
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa243
+ mov byte [es:di], al ; 26 88 05 ; 0xfa246
+ mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa249 lsilogic.c:411
+ mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa24f lsilogic.c:413
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa254 lsilogic.c:414
+ mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa257
+ mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa25b lsilogic.c:415
+ mov word [es:di+008h], 0cafeh ; 26 c7 45 08 fe ca ; 0xfa260 lsilogic.c:416
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xfa266
+ mov word [es:di+014h], strict word 00000h ; 26 c7 45 14 00 00 ; 0xfa26c lsilogic.c:417
+ mov word [es:di+016h], 00100h ; 26 c7 45 16 00 01 ; 0xfa272
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa278 lsilogic.c:418
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa27b
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa27f
+ mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa282
+ xor di, di ; 31 ff ; 0xfa286 lsilogic.c:419
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa288
+ xor ah, ah ; 30 e4 ; 0xfa28b
+ cmp di, ax ; 39 c7 ; 0xfa28d
+ jnl short 0a2abh ; 7d 1a ; 0xfa28f
+ les bx, [bp+004h] ; c4 5e 04 ; 0xfa291 lsilogic.c:420
+ add bx, di ; 01 fb ; 0xfa294
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa296
+ mov dx, si ; 89 f2 ; 0xfa299
+ add dx, di ; 01 fa ; 0xfa29b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xfa29d
+ mov es, cx ; 8e c1 ; 0xfa2a0
+ mov bx, dx ; 89 d3 ; 0xfa2a2
+ mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa2a4
+ inc di ; 47 ; 0xfa2a8
+ jmp short 0a288h ; eb dd ; 0xfa2a9
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa2ab lsilogic.c:422
+ xor ah, ah ; 30 e4 ; 0xfa2ae
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa2b0
+ mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa2b3
+ mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa2b9
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa2bd
+ or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa2c0
+ or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa2c4
+ mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa2c8 lsilogic.c:423
+ or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa2cc
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa2d1 lsilogic.c:430
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa2d4
+ call 0a035h ; e8 5b fd ; 0xfa2d7
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa2da
+ mov word [es:si+034h], strict word 00000h ; 26 c7 44 34 00 00 ; 0xfa2dd
+ mov word [es:si+036h], strict word 00000h ; 26 c7 44 36 00 00 ; 0xfa2e3
+ or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa2e9
+ or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa2ed
+ mov ax, si ; 89 f0 ; 0xfa2f1 lsilogic.c:432
+ mov dx, es ; 8c c2 ; 0xfa2f3
+ call 0a14bh ; e8 53 fe ; 0xfa2f5
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa2f8 lsilogic.c:433
+ pop di ; 5f ; 0xfa2fb
+ pop si ; 5e ; 0xfa2fc
+ pop cx ; 59 ; 0xfa2fd
+ pop bp ; 5d ; 0xfa2fe
+ retn 0000eh ; c2 0e 00 ; 0xfa2ff
+ ; disGetNextSymbol 0xfa302 LB 0xbe6 -> off=0x0 cb=00000000000000e0 uValue=00000000000f8d02 'lsilogic_scsi_cmd_data_in'
+lsilogic_scsi_cmd_data_in: ; 0xfa302 LB 0xe0
+ push bp ; 55 ; 0xfa302 lsilogic.c:435
+ mov bp, sp ; 89 e5 ; 0xfa303
+ push cx ; 51 ; 0xfa305
+ push si ; 56 ; 0xfa306
+ push di ; 57 ; 0xfa307
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa308
+ mov di, ax ; 89 c7 ; 0xfa30b
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa30d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa310
+ mov si, ax ; 89 c6 ; 0xfa313 lsilogic.c:438
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa315
+ mov cx, strict word 00030h ; b9 30 00 ; 0xfa318 lsilogic.c:441
+ xor bx, bx ; 31 db ; 0xfa31b
+ call 0abc0h ; e8 a0 08 ; 0xfa31d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa320 lsilogic.c:443
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa323
+ mov byte [es:di], al ; 26 88 05 ; 0xfa326
+ mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa329 lsilogic.c:444
+ mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa32f lsilogic.c:446
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa334 lsilogic.c:447
+ mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa337
+ mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa33b lsilogic.c:448
+ mov word [es:di+008h], 0cafeh ; 26 c7 45 08 fe ca ; 0xfa340 lsilogic.c:449
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xfa346
+ mov word [es:di+014h], strict word 00000h ; 26 c7 45 14 00 00 ; 0xfa34c lsilogic.c:450
+ mov word [es:di+016h], 00200h ; 26 c7 45 16 00 02 ; 0xfa352
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa358 lsilogic.c:451
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa35b
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa35f
+ mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa362
+ xor di, di ; 31 ff ; 0xfa366 lsilogic.c:452
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa368
+ xor ah, ah ; 30 e4 ; 0xfa36b
+ cmp di, ax ; 39 c7 ; 0xfa36d
+ jnl short 0a38bh ; 7d 1a ; 0xfa36f
+ les bx, [bp+004h] ; c4 5e 04 ; 0xfa371 lsilogic.c:453
+ add bx, di ; 01 fb ; 0xfa374
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa376
+ mov dx, si ; 89 f2 ; 0xfa379
+ add dx, di ; 01 fa ; 0xfa37b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xfa37d
+ mov es, cx ; 8e c1 ; 0xfa380
+ mov bx, dx ; 89 d3 ; 0xfa382
+ mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa384
+ inc di ; 47 ; 0xfa388
+ jmp short 0a368h ; eb dd ; 0xfa389
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa38b lsilogic.c:455
+ xor ah, ah ; 30 e4 ; 0xfa38e
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa390
+ mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa393
+ mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa399
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa39d
+ or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa3a0
+ or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa3a4
+ mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa3a8 lsilogic.c:456
+ or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa3ac
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa3b1 lsilogic.c:463
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa3b4
+ call 0a035h ; e8 7b fc ; 0xfa3b7
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa3ba
+ mov word [es:si+034h], strict word 00000h ; 26 c7 44 34 00 00 ; 0xfa3bd
+ mov word [es:si+036h], strict word 00000h ; 26 c7 44 36 00 00 ; 0xfa3c3
+ or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa3c9
+ or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa3cd
+ mov ax, si ; 89 f0 ; 0xfa3d1 lsilogic.c:465
+ mov dx, es ; 8c c2 ; 0xfa3d3
+ call 0a14bh ; e8 73 fd ; 0xfa3d5
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa3d8 lsilogic.c:466
+ pop di ; 5f ; 0xfa3db
+ pop si ; 5e ; 0xfa3dc
+ pop cx ; 59 ; 0xfa3dd
+ pop bp ; 5d ; 0xfa3de
+ retn 0000eh ; c2 0e 00 ; 0xfa3df
+ ; disGetNextSymbol 0xfa3e2 LB 0xb06 -> off=0x0 cb=00000000000000f3 uValue=00000000000f8de2 'lsilogic_scsi_hba_init'
+lsilogic_scsi_hba_init: ; 0xfa3e2 LB 0xf3
+ push bp ; 55 ; 0xfa3e2 lsilogic.c:471
+ mov bp, sp ; 89 e5 ; 0xfa3e3
+ push bx ; 53 ; 0xfa3e5
+ push cx ; 51 ; 0xfa3e6
+ push si ; 56 ; 0xfa3e7
+ push di ; 57 ; 0xfa3e8
+ sub sp, strict byte 0002ch ; 83 ec 2c ; 0xfa3e9
+ mov si, ax ; 89 c6 ; 0xfa3ec
+ mov di, dx ; 89 d7 ; 0xfa3ee
+ mov es, dx ; 8e c2 ; 0xfa3f0 lsilogic.c:483
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa3f2
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa3f7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa3fa
+ xor cx, cx ; 31 c9 ; 0xfa3fd
+ xchg cx, ax ; 91 ; 0xfa3ff
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa400
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa404
+ out DX, eax ; 66 ef ; 0xfa406
+ mov es, di ; 8e c7 ; 0xfa408 lsilogic.c:484
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa40a
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa40f
+ mov ax, strict word 00002h ; b8 02 00 ; 0xfa412
+ xor cx, cx ; 31 c9 ; 0xfa415
+ xchg cx, ax ; 91 ; 0xfa417
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa418
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa41c
+ out DX, eax ; 66 ef ; 0xfa41e
+ mov es, di ; 8e c7 ; 0xfa420 lsilogic.c:485
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa422
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa427
+ mov ax, strict word 00007h ; b8 07 00 ; 0xfa42a
+ xor cx, cx ; 31 c9 ; 0xfa42d
+ xchg cx, ax ; 91 ; 0xfa42f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa430
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa434
+ out DX, eax ; 66 ef ; 0xfa436
+ mov es, di ; 8e c7 ; 0xfa438 lsilogic.c:486
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa43a
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xfa43f
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xfa442
+ xor cx, cx ; 31 c9 ; 0xfa445
+ xchg cx, ax ; 91 ; 0xfa447
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa448
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa44c
+ out DX, eax ; 66 ef ; 0xfa44e
+ mov es, di ; 8e c7 ; 0xfa450 lsilogic.c:487
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa452
+ add dx, strict byte 00008h ; 83 c2 08 ; 0xfa457
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa45a
+ xor cx, cx ; 31 c9 ; 0xfa45d
+ xchg cx, ax ; 91 ; 0xfa45f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa460
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa464
+ out DX, eax ; 66 ef ; 0xfa466
+ mov byte [bp-034h], 001h ; c6 46 cc 01 ; 0xfa468 lsilogic.c:489
+ mov byte [bp-031h], 002h ; c6 46 cf 02 ; 0xfa46c lsilogic.c:490
+ xor ax, ax ; 31 c0 ; 0xfa470 lsilogic.c:491
+ mov word [bp-024h], ax ; 89 46 dc ; 0xfa472
+ mov word [bp-022h], ax ; 89 46 de ; 0xfa475
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xfa478 lsilogic.c:492
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xfa47b
+ mov byte [bp-02eh], 001h ; c6 46 d2 01 ; 0xfa47e lsilogic.c:493
+ mov byte [bp-02fh], 004h ; c6 46 d1 04 ; 0xfa482 lsilogic.c:494
+ mov word [bp-028h], 00080h ; c7 46 d8 80 00 ; 0xfa486 lsilogic.c:495
+ mov ax, strict word 00014h ; b8 14 00 ; 0xfa48b lsilogic.c:496
+ push ax ; 50 ; 0xfa48e
+ lea dx, [bp-01ch] ; 8d 56 e4 ; 0xfa48f
+ push SS ; 16 ; 0xfa492
+ push dx ; 52 ; 0xfa493
+ mov ax, strict word 00018h ; b8 18 00 ; 0xfa494
+ push ax ; 50 ; 0xfa497
+ mov cx, ss ; 8c d1 ; 0xfa498
+ lea bx, [bp-034h] ; 8d 5e cc ; 0xfa49a
+ mov ax, si ; 89 f0 ; 0xfa49d
+ mov dx, di ; 89 fa ; 0xfa49f
+ call 0a053h ; e8 af fb ; 0xfa4a1
+ test ax, ax ; 85 c0 ; 0xfa4a4 lsilogic.c:497
+ jne short 0a4c9h ; 75 21 ; 0xfa4a6
+ lea ax, [si+038h] ; 8d 44 38 ; 0xfa4a8 lsilogic.c:500
+ mov dx, di ; 89 fa ; 0xfa4ab
+ call 0a035h ; e8 85 fb ; 0xfa4ad
+ mov cx, dx ; 89 d1 ; 0xfa4b0
+ mov es, di ; 8e c7 ; 0xfa4b2
+ mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa4b4
+ add dx, strict byte 00044h ; 83 c2 44 ; 0xfa4b9
+ xchg cx, ax ; 91 ; 0xfa4bc
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa4bd
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa4c1
+ out DX, eax ; 66 ef ; 0xfa4c3
+ xor ax, ax ; 31 c0 ; 0xfa4c5 lsilogic.c:501
+ jmp short 0a4cch ; eb 03 ; 0xfa4c7
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa4c9 lsilogic.c:504
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa4cc lsilogic.c:505
+ pop di ; 5f ; 0xfa4cf
+ pop si ; 5e ; 0xfa4d0
+ pop cx ; 59 ; 0xfa4d1
+ pop bx ; 5b ; 0xfa4d2
+ pop bp ; 5d ; 0xfa4d3
+ retn ; c3 ; 0xfa4d4
+ ; disGetNextSymbol 0xfa4d5 LB 0xa13 -> off=0x0 cb=0000000000000059 uValue=00000000000f8ed5 'lsilogic_scsi_init'
+lsilogic_scsi_init: ; 0xfa4d5 LB 0x59
+ push bp ; 55 ; 0xfa4d5 lsilogic.c:510
+ mov bp, sp ; 89 e5 ; 0xfa4d6
+ push si ; 56 ; 0xfa4d8
+ push di ; 57 ; 0xfa4d9
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa4da
+ mov si, ax ; 89 c6 ; 0xfa4dd
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xfa4df
+ mov byte [bp-006h], cl ; 88 4e fa ; 0xfa4e2 lsilogic.c:517
+ xor al, al ; 30 c0 ; 0xfa4e5
+ mov byte [bp-005h], al ; 88 46 fb ; 0xfa4e7
+ mov byte [bp-00ah], bl ; 88 5e f6 ; 0xfa4ea
+ mov byte [bp-009h], al ; 88 46 f7 ; 0xfa4ed
+ mov bx, strict word 00010h ; bb 10 00 ; 0xfa4f0
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa4f3
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa4f6
+ call 0a9bbh ; e8 bf 04 ; 0xfa4f9
+ test AL, strict byte 001h ; a8 01 ; 0xfa4fc lsilogic.c:521
+ je short 0a524h ; 74 24 ; 0xfa4fe
+ and AL, strict byte 0f0h ; 24 f0 ; 0xfa500 lsilogic.c:523
+ mov di, ax ; 89 c7 ; 0xfa502
+ mov cx, strict word 00007h ; b9 07 00 ; 0xfa504 lsilogic.c:526
+ mov bx, strict word 00004h ; bb 04 00 ; 0xfa507
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa50a
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa50d
+ call 0a9fah ; e8 e7 04 ; 0xfa510
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xfa513 lsilogic.c:529
+ mov word [es:si+000b8h], di ; 26 89 bc b8 00 ; 0xfa516
+ mov ax, si ; 89 f0 ; 0xfa51b lsilogic.c:530
+ mov dx, es ; 8c c2 ; 0xfa51d
+ call 0a3e2h ; e8 c0 fe ; 0xfa51f
+ jmp short 0a527h ; eb 03 ; 0xfa522
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa524 lsilogic.c:535
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa527 lsilogic.c:536
+ pop di ; 5f ; 0xfa52a
+ pop si ; 5e ; 0xfa52b
+ pop bp ; 5d ; 0xfa52c
+ retn ; c3 ; 0xfa52d
+ ; disGetNextSymbol 0xfa52e LB 0x9ba -> off=0x0 cb=0000000000000020 uValue=00000000000f8f2e 'apm_out_str'
+apm_out_str: ; 0xfa52e LB 0x20
+ push bp ; 55 ; 0xfa52e apm.c:142
+ mov bp, sp ; 89 e5 ; 0xfa52f
+ push bx ; 53 ; 0xfa531
+ push dx ; 52 ; 0xfa532
+ mov bx, ax ; 89 c3 ; 0xfa533
+ cmp byte [bx], 000h ; 80 3f 00 ; 0xfa535 apm.c:144
+ je short 0a547h ; 74 0d ; 0xfa538
+ mov dx, 0040fh ; ba 0f 04 ; 0xfa53a apm.c:145
+ mov al, byte [bx] ; 8a 07 ; 0xfa53d
+ out DX, AL ; ee ; 0xfa53f
+ inc bx ; 43 ; 0xfa540
+ mov al, byte [bx] ; 8a 07 ; 0xfa541
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfa543
+ jne short 0a53fh ; 75 f8 ; 0xfa545
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa547 apm.c:146
+ pop dx ; 5a ; 0xfa54a
+ pop bx ; 5b ; 0xfa54b
+ pop bp ; 5d ; 0xfa54c
+ retn ; c3 ; 0xfa54d
+ ; disGetNextSymbol 0xfa54e LB 0x99a -> off=0x1e cb=00000000000000d2 uValue=00000000000f8f6c 'apm_function'
+ db 08ch, 0a5h, 03ah, 0a6h, 09eh, 0a5h, 00ch, 0a6h, 03ah, 0a6h, 0b9h, 0a5h, 03ah, 0a6h, 0beh, 0a5h
+ db 00ch, 0a6h, 00ch, 0a6h, 0f6h, 0a5h, 007h, 0a6h, 00ch, 0a6h, 00ch, 0a6h, 0efh, 0a5h
+apm_function: ; 0xfa56c LB 0xd2
+ push bp ; 55 ; 0xfa56c apm.c:148
+ mov bp, sp ; 89 e5 ; 0xfa56d
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xfa56f apm.c:152
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa573 apm.c:153
+ xor ah, ah ; 30 e4 ; 0xfa576
+ cmp ax, strict word 0000eh ; 3d 0e 00 ; 0xfa578
+ jnbe short 0a5e2h ; 77 65 ; 0xfa57b
+ mov bx, ax ; 89 c3 ; 0xfa57d
+ sal bx, 1 ; d1 e3 ; 0xfa57f
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xfa581
+ or dl, 001h ; 80 ca 01 ; 0xfa584
+ jmp word [cs:bx-05ab2h] ; 2e ff a7 4e a5 ; 0xfa587
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa58c apm.c:155
+ mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xfa591 apm.c:156
+ mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xfa596 apm.c:157
+ jmp near 0a63ah ; e9 9c 00 ; 0xfa59b apm.c:158
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfa59e apm.c:168
+ mov word [bp+00ch], 0ac4bh ; c7 46 0c 4b ac ; 0xfa5a3 apm.c:169
+ mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xfa5a8 apm.c:170
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfa5ad apm.c:171
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfa5b0
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfa5b3 apm.c:172
+ jmp near 0a63ah ; e9 81 00 ; 0xfa5b6 apm.c:173
+ sti ; fb ; 0xfa5b9 apm.c:190
+ hlt ; f4 ; 0xfa5ba apm.c:191
+ jmp near 0a63ah ; e9 7c 00 ; 0xfa5bb apm.c:192
+ cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xfa5be apm.c:196
+ je short 0a5ddh ; 74 19 ; 0xfa5c2
+ cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xfa5c4
+ je short 0a5d8h ; 74 0e ; 0xfa5c8
+ cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xfa5ca
+ jne short 0a5e4h ; 75 14 ; 0xfa5ce
+ mov ax, 00d4ch ; b8 4c 0d ; 0xfa5d0 apm.c:198
+ call 0a52eh ; e8 58 ff ; 0xfa5d3
+ jmp short 0a63ah ; eb 62 ; 0xfa5d6 apm.c:199
+ mov ax, 00d54h ; b8 54 0d ; 0xfa5d8 apm.c:201
+ jmp short 0a5d3h ; eb f6 ; 0xfa5db
+ mov ax, 00d5ch ; b8 5c 0d ; 0xfa5dd apm.c:204
+ jmp short 0a5d3h ; eb f1 ; 0xfa5e0
+ jmp short 0a60ch ; eb 28 ; 0xfa5e2
+ or ah, 00ah ; 80 cc 0a ; 0xfa5e4 apm.c:207
+ mov word [bp+012h], ax ; 89 46 12 ; 0xfa5e7
+ mov word [bp+018h], dx ; 89 56 18 ; 0xfa5ea apm.c:208
+ jmp short 0a63ah ; eb 4b ; 0xfa5ed apm.c:210
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa5ef apm.c:212
+ jmp short 0a63ah ; eb 44 ; 0xfa5f4 apm.c:213
+ mov word [bp+00ch], 001ffh ; c7 46 0c ff 01 ; 0xfa5f6 apm.c:220
+ mov word [bp+010h], 080ffh ; c7 46 10 ff 80 ; 0xfa5fb apm.c:221
+ mov word [bp+00eh], strict word 0ffffh ; c7 46 0e ff ff ; 0xfa600 apm.c:222
+ jmp short 0a63ah ; eb 33 ; 0xfa605 apm.c:223
+ or ah, 080h ; 80 cc 80 ; 0xfa607 apm.c:226
+ jmp short 0a5e7h ; eb db ; 0xfa60a
+ mov bx, 00ddch ; bb dc 0d ; 0xfa60c apm.c:230
+ mov cx, ds ; 8c d9 ; 0xfa60f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa611
+ call 01919h ; e8 02 73 ; 0xfa614
+ push word [bp+00ch] ; ff 76 0c ; 0xfa617
+ push word [bp+012h] ; ff 76 12 ; 0xfa61a
+ mov ax, 00d65h ; b8 65 0d ; 0xfa61d
+ push ax ; 50 ; 0xfa620
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa621
+ push ax ; 50 ; 0xfa624
+ call 0195ch ; e8 34 73 ; 0xfa625
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa628
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa62b apm.c:231
+ xor ah, ah ; 30 e4 ; 0xfa62e
+ or ah, 00ch ; 80 cc 0c ; 0xfa630
+ mov word [bp+012h], ax ; 89 46 12 ; 0xfa633
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xfa636 apm.c:232
+ mov sp, bp ; 89 ec ; 0xfa63a apm.c:234
+ pop bp ; 5d ; 0xfa63c
+ retn ; c3 ; 0xfa63d
+ ; disGetNextSymbol 0xfa63e LB 0x8aa -> off=0x0 cb=0000000000000024 uValue=00000000000f903e 'pci16_select_reg'
+pci16_select_reg: ; 0xfa63e LB 0x24
+ push bp ; 55 ; 0xfa63e pcibios.c:198
+ mov bp, sp ; 89 e5 ; 0xfa63f
+ push bx ; 53 ; 0xfa641
+ and dl, 0fch ; 80 e2 fc ; 0xfa642 pcibios.c:200
+ mov bx, dx ; 89 d3 ; 0xfa645
+ mov dx, 00cf8h ; ba f8 0c ; 0xfa647
+ movzx eax, ax ; 66 0f b7 c0 ; 0xfa64a
+ sal eax, 008h ; 66 c1 e0 08 ; 0xfa64e
+ or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xfa652
+ db 08ah, 0c3h
+ ; mov al, bl ; 8a c3 ; 0xfa658
+ out DX, eax ; 66 ef ; 0xfa65a
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfa65c pcibios.c:201
+ pop bx ; 5b ; 0xfa65f
+ pop bp ; 5d ; 0xfa660
+ retn ; c3 ; 0xfa661
+ ; disGetNextSymbol 0xfa662 LB 0x886 -> off=0x0 cb=00000000000000f3 uValue=00000000000f9062 'pci16_find_device'
+pci16_find_device: ; 0xfa662 LB 0xf3
+ push bp ; 55 ; 0xfa662 pcibios.c:233
+ mov bp, sp ; 89 e5 ; 0xfa663
+ push si ; 56 ; 0xfa665
+ push di ; 57 ; 0xfa666
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xfa667
+ push ax ; 50 ; 0xfa66a
+ push dx ; 52 ; 0xfa66b
+ mov si, bx ; 89 de ; 0xfa66c
+ mov di, cx ; 89 cf ; 0xfa66e
+ test cx, cx ; 85 c9 ; 0xfa670 pcibios.c:243
+ xor bx, bx ; 31 db ; 0xfa672 pcibios.c:250
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xfa674 pcibios.c:251
+ test bl, 007h ; f6 c3 07 ; 0xfa678 pcibios.c:261
+ jne short 0a6aah ; 75 2d ; 0xfa67b
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xfa67d pcibios.c:262
+ mov ax, bx ; 89 d8 ; 0xfa680
+ call 0a63eh ; e8 b9 ff ; 0xfa682
+ mov dx, 00cfeh ; ba fe 0c ; 0xfa685 pcibios.c:263
+ in AL, DX ; ec ; 0xfa688
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa689
+ mov byte [bp-006h], al ; 88 46 fa ; 0xfa68b
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfa68e pcibios.c:264
+ jne short 0a698h ; 75 06 ; 0xfa690
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfa692 pcibios.c:265
+ jmp near 0a730h ; e9 98 00 ; 0xfa695 pcibios.c:266
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xfa698 pcibios.c:268
+ je short 0a6a5h ; 74 07 ; 0xfa69c
+ mov word [bp-00ah], strict word 00001h ; c7 46 f6 01 00 ; 0xfa69e pcibios.c:269
+ jmp short 0a6aah ; eb 05 ; 0xfa6a3 pcibios.c:270
+ mov word [bp-00ah], strict word 00008h ; c7 46 f6 08 00 ; 0xfa6a5 pcibios.c:271
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa6aa pcibios.c:282
+ and AL, strict byte 007h ; 24 07 ; 0xfa6ad
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa6af
+ jne short 0a6d1h ; 75 1e ; 0xfa6b1
+ mov al, bh ; 88 f8 ; 0xfa6b3
+ xor ah, ah ; 30 e4 ; 0xfa6b5
+ test ax, ax ; 85 c0 ; 0xfa6b7
+ jne short 0a6d1h ; 75 16 ; 0xfa6b9
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfa6bb pcibios.c:284
+ mov ax, bx ; 89 d8 ; 0xfa6be
+ call 0a63eh ; e8 7b ff ; 0xfa6c0
+ mov dx, 00cfeh ; ba fe 0c ; 0xfa6c3 pcibios.c:285
+ in AL, DX ; ec ; 0xfa6c6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa6c7
+ cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xfa6c9 pcibios.c:286
+ jbe short 0a6d1h ; 76 03 ; 0xfa6cc
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xfa6ce pcibios.c:287
+ test di, di ; 85 ff ; 0xfa6d1 pcibios.c:291
+ je short 0a6dah ; 74 05 ; 0xfa6d3
+ mov dx, strict word 00008h ; ba 08 00 ; 0xfa6d5
+ jmp short 0a6dch ; eb 02 ; 0xfa6d8
+ xor dx, dx ; 31 d2 ; 0xfa6da
+ mov ax, bx ; 89 d8 ; 0xfa6dc
+ call 0a63eh ; e8 5d ff ; 0xfa6de
+ mov dx, 00cfch ; ba fc 0c ; 0xfa6e1 pcibios.c:292
+ in eax, DX ; 66 ed ; 0xfa6e4
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa6e6
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa6e8
+ xchg dx, ax ; 92 ; 0xfa6ec
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa6ed
+ mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xfa6f0 pcibios.c:293
+ test di, di ; 85 ff ; 0xfa6f5 pcibios.c:296
+ je short 0a714h ; 74 1b ; 0xfa6f7
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xfa6f9 pcibios.c:297
+ je short 0a708h ; 74 09 ; 0xfa6fd
+ mov ax, dx ; 89 d0 ; 0xfa6ff pcibios.c:298
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xfa701
+ jmp short 0a714h ; eb 0c ; 0xfa706 pcibios.c:299
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfa708 pcibios.c:300
+ shr dx, 1 ; d1 ea ; 0xfa70b
+ rcr ax, 1 ; d1 d8 ; 0xfa70d
+ loop 0a70bh ; e2 fa ; 0xfa70f
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa711
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xfa714 pcibios.c:307
+ cmp dx, word [bp-012h] ; 3b 56 ee ; 0xfa717
+ jne short 0a721h ; 75 05 ; 0xfa71a
+ cmp ax, word [bp-010h] ; 3b 46 f0 ; 0xfa71c
+ je short 0a727h ; 74 06 ; 0xfa71f
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xfa721 pcibios.c:308
+ je short 0a72dh ; 74 06 ; 0xfa725
+ dec si ; 4e ; 0xfa727
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa728
+ je short 0a740h ; 74 13 ; 0xfa72b
+ add bx, word [bp-00ah] ; 03 5e f6 ; 0xfa72d pcibios.c:316
+ mov al, bh ; 88 f8 ; 0xfa730 pcibios.c:317
+ xor ah, ah ; 30 e4 ; 0xfa732
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xfa734
+ xor dh, dh ; 30 f6 ; 0xfa737
+ cmp ax, dx ; 39 d0 ; 0xfa739
+ jnbe short 0a740h ; 77 03 ; 0xfa73b
+ jmp near 0a678h ; e9 38 ff ; 0xfa73d
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa740 pcibios.c:319
+ jne short 0a749h ; 75 04 ; 0xfa743 pcibios.c:323
+ mov ax, bx ; 89 d8 ; 0xfa745
+ jmp short 0a74ch ; eb 03 ; 0xfa747
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa749
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa74c pcibios.c:324
+ pop di ; 5f ; 0xfa74f
+ pop si ; 5e ; 0xfa750
+ pop bp ; 5d ; 0xfa751
+ retn 00002h ; c2 02 00 ; 0xfa752
+ ; disGetNextSymbol 0xfa755 LB 0x793 -> off=0xc cb=00000000000001db uValue=00000000000f9161 'pci16_function'
+ db 048h, 0a8h, 061h, 0a8h, 073h, 0a8h, 087h, 0a8h, 099h, 0a8h, 0ach, 0a8h
+pci16_function: ; 0xfa761 LB 0x1db
+ push bp ; 55 ; 0xfa761 pcibios.c:326
+ mov bp, sp ; 89 e5 ; 0xfa762
+ push si ; 56 ; 0xfa764
+ push di ; 57 ; 0xfa765
+ push ax ; 50 ; 0xfa766
+ push ax ; 50 ; 0xfa767
+ and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xfa768 pcibios.c:333
+ and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xfa76d pcibios.c:334
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa771 pcibios.c:336
+ xor bh, bh ; 30 ff ; 0xfa774
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa776
+ xor ah, ah ; 30 e4 ; 0xfa779
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xfa77b
+ jc short 0a793h ; 72 13 ; 0xfa77e
+ jbe short 0a7e9h ; 76 67 ; 0xfa780
+ cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xfa782
+ je short 0a7ebh ; 74 64 ; 0xfa785
+ cmp bx, strict byte 00008h ; 83 fb 08 ; 0xfa787
+ jc short 0a79dh ; 72 11 ; 0xfa78a
+ cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xfa78c
+ jbe short 0a7f4h ; 76 63 ; 0xfa78f
+ jmp short 0a79dh ; eb 0a ; 0xfa791
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xfa793
+ je short 0a7bch ; 74 24 ; 0xfa796
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xfa798
+ je short 0a7a0h ; 74 03 ; 0xfa79b
+ jmp near 0a905h ; e9 65 01 ; 0xfa79d
+ mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xfa7a0 pcibios.c:338
+ mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xfa7a5 pcibios.c:339
+ mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xfa7aa pcibios.c:341
+ mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xfa7af pcibios.c:342
+ mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xfa7b4
+ jmp near 0a935h ; e9 79 01 ; 0xfa7b9 pcibios.c:343
+ cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xfa7bc pcibios.c:348
+ jne short 0a7c8h ; 75 06 ; 0xfa7c0
+ or ah, 083h ; 80 cc 83 ; 0xfa7c2 pcibios.c:349
+ jmp near 0a92eh ; e9 66 01 ; 0xfa7c5 pcibios.c:350
+ xor al, al ; 30 c0 ; 0xfa7c8 pcibios.c:352
+ push ax ; 50 ; 0xfa7ca
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa7cb
+ mov dx, word [bp+01ch] ; 8b 56 1c ; 0xfa7ce
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xfa7d1
+ xor cx, cx ; 31 c9 ; 0xfa7d4
+ call 0a662h ; e8 89 fe ; 0xfa7d6
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa7d9 pcibios.c:353
+ jne short 0a7eeh ; 75 10 ; 0xfa7dc
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa7de pcibios.c:354
+ xor ah, ah ; 30 e4 ; 0xfa7e1
+ or ah, 086h ; 80 cc 86 ; 0xfa7e3
+ jmp near 0a92eh ; e9 45 01 ; 0xfa7e6
+ jmp short 0a7f6h ; eb 0b ; 0xfa7e9
+ jmp near 0a8c0h ; e9 d2 00 ; 0xfa7eb
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfa7ee pcibios.c:355
+ jmp near 0a935h ; e9 41 01 ; 0xfa7f1 pcibios.c:360
+ jmp short 0a81eh ; eb 28 ; 0xfa7f4
+ xor al, al ; 30 c0 ; 0xfa7f6 pcibios.c:362
+ push ax ; 50 ; 0xfa7f8
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa7f9
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa7fc
+ mov dx, word [bp+01eh] ; 8b 56 1e ; 0xfa7ff
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa802
+ call 0a662h ; e8 5a fe ; 0xfa805
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa808 pcibios.c:363
+ jne short 0a818h ; 75 0b ; 0xfa80b
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa80d pcibios.c:364
+ xor ah, ah ; 30 e4 ; 0xfa810
+ or ah, 086h ; 80 cc 86 ; 0xfa812
+ jmp near 0a92eh ; e9 16 01 ; 0xfa815 pcibios.c:365
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfa818 pcibios.c:367
+ jmp near 0a935h ; e9 17 01 ; 0xfa81b pcibios.c:369
+ cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xfa81e pcibios.c:376
+ jc short 0a82bh ; 72 06 ; 0xfa823
+ or ah, 087h ; 80 cc 87 ; 0xfa825 pcibios.c:377
+ jmp near 0a92eh ; e9 03 01 ; 0xfa828 pcibios.c:378
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa82b pcibios.c:380
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfa82e
+ call 0a63eh ; e8 0a fe ; 0xfa831
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa834 pcibios.c:381
+ xor bh, bh ; 30 ff ; 0xfa837
+ sub bx, strict byte 00008h ; 83 eb 08 ; 0xfa839
+ cmp bx, strict byte 00005h ; 83 fb 05 ; 0xfa83c
+ jnbe short 0a8a9h ; 77 68 ; 0xfa83f
+ sal bx, 1 ; d1 e3 ; 0xfa841
+ jmp word [cs:bx-058abh] ; 2e ff a7 55 a7 ; 0xfa843
+ mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xfa848 pcibios.c:383
+ xor bl, bl ; 30 db ; 0xfa84b
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa84d
+ and dx, strict byte 00003h ; 83 e2 03 ; 0xfa850
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfa853
+ in AL, DX ; ec ; 0xfa857
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfa858
+ or bx, ax ; 09 c3 ; 0xfa85a
+ mov word [bp+01ch], bx ; 89 5e 1c ; 0xfa85c
+ jmp short 0a8a9h ; eb 48 ; 0xfa85f pcibios.c:384
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa861 pcibios.c:386
+ xor dh, dh ; 30 f6 ; 0xfa864
+ and dl, 002h ; 80 e2 02 ; 0xfa866
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfa869
+ in ax, DX ; ed ; 0xfa86d
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfa86e
+ jmp short 0a8a9h ; eb 36 ; 0xfa871 pcibios.c:387
+ mov dx, 00cfch ; ba fc 0c ; 0xfa873 pcibios.c:389
+ in eax, DX ; 66 ed ; 0xfa876
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfa878
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa87a
+ xchg dx, ax ; 92 ; 0xfa87e
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfa87f
+ mov word [bp+01eh], dx ; 89 56 1e ; 0xfa882
+ jmp short 0a8a9h ; eb 22 ; 0xfa885 pcibios.c:390
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa887 pcibios.c:392
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa88a
+ xor dh, dh ; 30 f6 ; 0xfa88d
+ and dl, 003h ; 80 e2 03 ; 0xfa88f
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfa892
+ out DX, AL ; ee ; 0xfa896
+ jmp short 0a8a9h ; eb 10 ; 0xfa897 pcibios.c:393
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa899 pcibios.c:395
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa89c
+ xor dh, dh ; 30 f6 ; 0xfa89f
+ and dl, 002h ; 80 e2 02 ; 0xfa8a1
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfa8a4
+ out DX, ax ; ef ; 0xfa8a8
+ jmp near 0a935h ; e9 89 00 ; 0xfa8a9 pcibios.c:396
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa8ac pcibios.c:398
+ mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xfa8af
+ mov dx, 00cfch ; ba fc 0c ; 0xfa8b2
+ xchg cx, ax ; 91 ; 0xfa8b5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa8b6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfa8ba
+ out DX, eax ; 66 ef ; 0xfa8bc
+ jmp short 0a935h ; eb 75 ; 0xfa8be pcibios.c:402
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfa8c0 pcibios.c:404
+ mov es, [bp+026h] ; 8e 46 26 ; 0xfa8c3
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xfa8c6
+ mov [bp-006h], es ; 8c 46 fa ; 0xfa8c9
+ mov cx, word [0f370h] ; 8b 0e 70 f3 ; 0xfa8cc pcibios.c:408
+ cmp cx, word [es:bx] ; 26 3b 0f ; 0xfa8d0
+ jbe short 0a8e6h ; 76 11 ; 0xfa8d3
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa8d5 pcibios.c:409
+ xor ah, ah ; 30 e4 ; 0xfa8d8
+ or ah, 089h ; 80 cc 89 ; 0xfa8da
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfa8dd
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfa8e0 pcibios.c:410
+ jmp short 0a8fah ; eb 14 ; 0xfa8e4 pcibios.c:411
+ les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xfa8e6 pcibios.c:412
+ mov si, 0f190h ; be 90 f1 ; 0xfa8ea
+ mov dx, ds ; 8c da ; 0xfa8ed
+ push DS ; 1e ; 0xfa8ef
+ mov ds, dx ; 8e da ; 0xfa8f0
+ rep movsb ; f3 a4 ; 0xfa8f2
+ pop DS ; 1f ; 0xfa8f4
+ mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xfa8f5 pcibios.c:414
+ mov ax, word [0f370h] ; a1 70 f3 ; 0xfa8fa pcibios.c:416
+ les bx, [bp-008h] ; c4 5e f8 ; 0xfa8fd
+ mov word [es:bx], ax ; 26 89 07 ; 0xfa900
+ jmp short 0a935h ; eb 30 ; 0xfa903 pcibios.c:417
+ mov bx, 00ddch ; bb dc 0d ; 0xfa905 pcibios.c:419
+ mov cx, ds ; 8c d9 ; 0xfa908
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa90a
+ call 01919h ; e8 09 70 ; 0xfa90d
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfa910
+ push ax ; 50 ; 0xfa913
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa914
+ push ax ; 50 ; 0xfa917
+ mov ax, 00d98h ; b8 98 0d ; 0xfa918
+ push ax ; 50 ; 0xfa91b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa91c
+ push ax ; 50 ; 0xfa91f
+ call 0195ch ; e8 39 70 ; 0xfa920
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa923
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa926 pcibios.c:420
+ xor ah, ah ; 30 e4 ; 0xfa929
+ or ah, 081h ; 80 cc 81 ; 0xfa92b
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfa92e
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfa931 pcibios.c:421
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa935 pcibios.c:423
+ pop di ; 5f ; 0xfa938
+ pop si ; 5e ; 0xfa939
+ pop bp ; 5d ; 0xfa93a
+ retn ; c3 ; 0xfa93b
+ ; disGetNextSymbol 0xfa93c LB 0x5ac -> off=0x0 cb=0000000000000008 uValue=00000000000f933c 'pci_find_classcode'
+pci_find_classcode: ; 0xfa93c LB 0x8
+ push bp ; 55 ; 0xfa93c pciutil.c:135
+ mov bp, sp ; 89 e5 ; 0xfa93d
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa93f pciutil.c:142
+ pop bp ; 5d ; 0xfa942
+ retn ; c3 ; 0xfa943
+ ; disGetNextSymbol 0xfa944 LB 0x5a4 -> off=0x0 cb=0000000000000008 uValue=00000000000f9344 'pci_find_class_noif'
+pci_find_class_noif: ; 0xfa944 LB 0x8
+ push bp ; 55 ; 0xfa944 pciutil.c:155
+ mov bp, sp ; 89 e5 ; 0xfa945
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa947 pciutil.c:163
+ pop bp ; 5d ; 0xfa94a
+ retn ; c3 ; 0xfa94b
+ ; disGetNextSymbol 0xfa94c LB 0x59c -> off=0x0 cb=0000000000000023 uValue=00000000000f934c 'pci_find_device'
+pci_find_device: ; 0xfa94c LB 0x23
+ push bp ; 55 ; 0xfa94c pciutil.c:176
+ mov bp, sp ; 89 e5 ; 0xfa94d
+ push bx ; 53 ; 0xfa94f
+ push cx ; 51 ; 0xfa950
+ push si ; 56 ; 0xfa951
+ mov cx, dx ; 89 d1 ; 0xfa952
+ xor si, si ; 31 f6 ; 0xfa954 pciutil.c:178
+ mov dx, ax ; 89 c2 ; 0xfa956
+ mov ax, 0b102h ; b8 02 b1 ; 0xfa958
+ int 01ah ; cd 1a ; 0xfa95b
+ cmp ah, 000h ; 80 fc 00 ; 0xfa95d
+ je short 0a965h ; 74 03 ; 0xfa960
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xfa962
+ mov ax, bx ; 89 d8 ; 0xfa965
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa967 pciutil.c:179
+ pop si ; 5e ; 0xfa96a
+ pop cx ; 59 ; 0xfa96b
+ pop bx ; 5b ; 0xfa96c
+ pop bp ; 5d ; 0xfa96d
+ retn ; c3 ; 0xfa96e
+ ; disGetNextSymbol 0xfa96f LB 0x579 -> off=0x0 cb=0000000000000027 uValue=00000000000f936f 'pci_read_config_byte'
+pci_read_config_byte: ; 0xfa96f LB 0x27
+ push bp ; 55 ; 0xfa96f pciutil.c:181
+ mov bp, sp ; 89 e5 ; 0xfa970
+ push cx ; 51 ; 0xfa972
+ push di ; 57 ; 0xfa973
+ mov dh, al ; 88 c6 ; 0xfa974
+ mov bh, dl ; 88 d7 ; 0xfa976
+ mov al, bl ; 88 d8 ; 0xfa978
+ xor ah, ah ; 30 e4 ; 0xfa97a pciutil.c:183
+ xor dl, dl ; 30 d2 ; 0xfa97c
+ mov bl, bh ; 88 fb ; 0xfa97e
+ mov bh, dh ; 88 f7 ; 0xfa980
+ mov di, ax ; 89 c7 ; 0xfa982
+ mov ax, 0b108h ; b8 08 b1 ; 0xfa984
+ int 01ah ; cd 1a ; 0xfa987
+ mov al, cl ; 88 c8 ; 0xfa989
+ xor ah, ah ; 30 e4 ; 0xfa98b
+ xor dh, dh ; 30 f6 ; 0xfa98d pciutil.c:184
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa98f
+ pop di ; 5f ; 0xfa992
+ pop cx ; 59 ; 0xfa993
+ pop bp ; 5d ; 0xfa994
+ retn ; c3 ; 0xfa995
+ ; disGetNextSymbol 0xfa996 LB 0x552 -> off=0x0 cb=0000000000000025 uValue=00000000000f9396 'pci_read_config_word'
+pci_read_config_word: ; 0xfa996 LB 0x25
+ push bp ; 55 ; 0xfa996 pciutil.c:186
+ mov bp, sp ; 89 e5 ; 0xfa997
+ push cx ; 51 ; 0xfa999
+ push di ; 57 ; 0xfa99a
+ mov dh, al ; 88 c6 ; 0xfa99b
+ mov cl, dl ; 88 d1 ; 0xfa99d
+ mov al, bl ; 88 d8 ; 0xfa99f
+ xor ah, ah ; 30 e4 ; 0xfa9a1 pciutil.c:188
+ mov bh, dh ; 88 f7 ; 0xfa9a3
+ xor dh, dh ; 30 f6 ; 0xfa9a5
+ mov bl, dl ; 88 d3 ; 0xfa9a7
+ mov di, ax ; 89 c7 ; 0xfa9a9
+ mov ax, 0b109h ; b8 09 b1 ; 0xfa9ab
+ int 01ah ; cd 1a ; 0xfa9ae
+ mov ax, cx ; 89 c8 ; 0xfa9b0
+ xor dl, dl ; 30 d2 ; 0xfa9b2 pciutil.c:189
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa9b4
+ pop di ; 5f ; 0xfa9b7
+ pop cx ; 59 ; 0xfa9b8
+ pop bp ; 5d ; 0xfa9b9
+ retn ; c3 ; 0xfa9ba
+ ; disGetNextSymbol 0xfa9bb LB 0x52d -> off=0x0 cb=000000000000003f uValue=00000000000f93bb 'pci_read_config_dword'
+pci_read_config_dword: ; 0xfa9bb LB 0x3f
+ push bp ; 55 ; 0xfa9bb pciutil.c:191
+ mov bp, sp ; 89 e5 ; 0xfa9bc
+ push cx ; 51 ; 0xfa9be
+ push di ; 57 ; 0xfa9bf
+ push ax ; 50 ; 0xfa9c0
+ mov dh, al ; 88 c6 ; 0xfa9c1
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xfa9c3
+ mov al, bl ; 88 d8 ; 0xfa9c6 pciutil.c:196
+ xor ah, ah ; 30 e4 ; 0xfa9c8
+ mov di, ax ; 89 c7 ; 0xfa9ca
+ mov bx, dx ; 89 d3 ; 0xfa9cc
+ mov ax, 0b109h ; b8 09 b1 ; 0xfa9ce
+ int 01ah ; cd 1a ; 0xfa9d1
+ test cx, cx ; 85 c9 ; 0xfa9d3
+ jne short 0a9ebh ; 75 14 ; 0xfa9d5
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa9d7
+ xor ah, ah ; 30 e4 ; 0xfa9da
+ mov di, ax ; 89 c7 ; 0xfa9dc
+ inc di ; 47 ; 0xfa9de
+ inc di ; 47 ; 0xfa9df
+ mov bx, dx ; 89 d3 ; 0xfa9e0
+ mov ax, 0b109h ; b8 09 b1 ; 0xfa9e2
+ int 01ah ; cd 1a ; 0xfa9e5
+ test cx, cx ; 85 c9 ; 0xfa9e7
+ je short 0a9f0h ; 74 05 ; 0xfa9e9
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa9eb
+ jmp short 0a9f2h ; eb 02 ; 0xfa9ee
+ xor ax, ax ; 31 c0 ; 0xfa9f0
+ cwd ; 99 ; 0xfa9f2
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa9f3 pciutil.c:199
+ pop di ; 5f ; 0xfa9f6
+ pop cx ; 59 ; 0xfa9f7
+ pop bp ; 5d ; 0xfa9f8
+ retn ; c3 ; 0xfa9f9
+ ; disGetNextSymbol 0xfa9fa LB 0x4ee -> off=0x0 cb=000000000000001e uValue=00000000000f93fa 'pci_write_config_word'
+pci_write_config_word: ; 0xfa9fa LB 0x1e
+ push bp ; 55 ; 0xfa9fa pciutil.c:201
+ mov bp, sp ; 89 e5 ; 0xfa9fb
+ push di ; 57 ; 0xfa9fd
+ push ax ; 50 ; 0xfa9fe
+ mov byte [bp-004h], al ; 88 46 fc ; 0xfa9ff
+ mov al, bl ; 88 d8 ; 0xfaa02
+ xor ah, ah ; 30 e4 ; 0xfaa04 pciutil.c:203
+ mov di, ax ; 89 c7 ; 0xfaa06
+ mov bh, byte [bp-004h] ; 8a 7e fc ; 0xfaa08
+ mov bl, dl ; 88 d3 ; 0xfaa0b
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfaa0d
+ int 01ah ; cd 1a ; 0xfaa10
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfaa12 pciutil.c:204
+ pop di ; 5f ; 0xfaa15
+ pop bp ; 5d ; 0xfaa16
+ retn ; c3 ; 0xfaa17
+ ; disGetNextSymbol 0xfaa18 LB 0x4d0 -> off=0x0 cb=000000000000001e uValue=00000000000f9418 'pci_write_config_byte'
+pci_write_config_byte: ; 0xfaa18 LB 0x1e
+ push bp ; 55 ; 0xfaa18 pciutil.c:206
+ mov bp, sp ; 89 e5 ; 0xfaa19
+ push di ; 57 ; 0xfaa1b
+ push ax ; 50 ; 0xfaa1c
+ mov byte [bp-004h], al ; 88 46 fc ; 0xfaa1d
+ mov al, bl ; 88 d8 ; 0xfaa20
+ xor ah, ah ; 30 e4 ; 0xfaa22 pciutil.c:208
+ mov di, ax ; 89 c7 ; 0xfaa24
+ mov bh, byte [bp-004h] ; 8a 7e fc ; 0xfaa26
+ mov bl, dl ; 88 d3 ; 0xfaa29
+ mov ax, 0b10bh ; b8 0b b1 ; 0xfaa2b
+ int 01ah ; cd 1a ; 0xfaa2e
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfaa30 pciutil.c:209
+ pop di ; 5f ; 0xfaa33
+ pop bp ; 5d ; 0xfaa34
+ retn ; c3 ; 0xfaa35
+ ; disGetNextSymbol 0xfaa36 LB 0x4b2 -> off=0x0 cb=0000000000000039 uValue=00000000000f9436 'pci_write_config_dword'
+pci_write_config_dword: ; 0xfaa36 LB 0x39
+ push bp ; 55 ; 0xfaa36 pciutil.c:211
+ mov bp, sp ; 89 e5 ; 0xfaa37
+ push cx ; 51 ; 0xfaa39
+ push di ; 57 ; 0xfaa3a
+ push ax ; 50 ; 0xfaa3b
+ mov dh, al ; 88 c6 ; 0xfaa3c
+ mov cl, dl ; 88 d1 ; 0xfaa3e
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xfaa40
+ mov al, bl ; 88 d8 ; 0xfaa43 pciutil.c:216
+ xor ah, ah ; 30 e4 ; 0xfaa45
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfaa47
+ mov di, ax ; 89 c7 ; 0xfaa4a
+ mov bx, dx ; 89 d3 ; 0xfaa4c
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfaa4e
+ int 01ah ; cd 1a ; 0xfaa51
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfaa53 pciutil.c:217
+ xor ah, ah ; 30 e4 ; 0xfaa56
+ mov di, ax ; 89 c7 ; 0xfaa58
+ inc di ; 47 ; 0xfaa5a
+ inc di ; 47 ; 0xfaa5b
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xfaa5c
+ mov bx, dx ; 89 d3 ; 0xfaa5f
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfaa61
+ int 01ah ; cd 1a ; 0xfaa64
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaa66 pciutil.c:219
+ pop di ; 5f ; 0xfaa69
+ pop cx ; 59 ; 0xfaa6a
+ pop bp ; 5d ; 0xfaa6b
+ retn 00004h ; c2 04 00 ; 0xfaa6c
+ ; disGetNextSymbol 0xfaa6f LB 0x479 -> off=0x0 cb=000000000000001d uValue=00000000000f946f 'vds_is_present'
+vds_is_present: ; 0xfaa6f LB 0x1d
+ push bx ; 53 ; 0xfaa6f vds.c:42
+ push bp ; 55 ; 0xfaa70
+ mov bp, sp ; 89 e5 ; 0xfaa71
+ mov bx, strict word 0007bh ; bb 7b 00 ; 0xfaa73 vds.c:46
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfaa76
+ mov es, ax ; 8e c0 ; 0xfaa79
+ test byte [es:bx], 020h ; 26 f6 07 20 ; 0xfaa7b vds.c:47
+ je short 0aa87h ; 74 06 ; 0xfaa7f
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfaa81
+ pop bp ; 5d ; 0xfaa84
+ pop bx ; 5b ; 0xfaa85
+ retn ; c3 ; 0xfaa86
+ xor ax, ax ; 31 c0 ; 0xfaa87
+ pop bp ; 5d ; 0xfaa89 vds.c:48
+ pop bx ; 5b ; 0xfaa8a
+ retn ; c3 ; 0xfaa8b
+ ; disGetNextSymbol 0xfaa8c LB 0x45c -> off=0x0 cb=000000000000001e uValue=00000000000f948c 'vds_real_to_lin'
+vds_real_to_lin: ; 0xfaa8c LB 0x1e
+ push bx ; 53 ; 0xfaa8c vds.c:77
+ push cx ; 51 ; 0xfaa8d
+ push bp ; 55 ; 0xfaa8e
+ mov bp, sp ; 89 e5 ; 0xfaa8f
+ mov bx, ax ; 89 c3 ; 0xfaa91
+ mov ax, dx ; 89 d0 ; 0xfaa93
+ xor dx, dx ; 31 d2 ; 0xfaa95 vds.c:79
+ mov cx, strict word 00004h ; b9 04 00 ; 0xfaa97
+ sal ax, 1 ; d1 e0 ; 0xfaa9a
+ rcl dx, 1 ; d1 d2 ; 0xfaa9c
+ loop 0aa9ah ; e2 fa ; 0xfaa9e
+ xor cx, cx ; 31 c9 ; 0xfaaa0
+ add ax, bx ; 01 d8 ; 0xfaaa2
+ adc dx, cx ; 11 ca ; 0xfaaa4
+ pop bp ; 5d ; 0xfaaa6 vds.c:80
+ pop cx ; 59 ; 0xfaaa7
+ pop bx ; 5b ; 0xfaaa8
+ retn ; c3 ; 0xfaaa9
+ ; disGetNextSymbol 0xfaaaa LB 0x43e -> off=0x0 cb=0000000000000077 uValue=00000000000f94aa 'vds_build_sg_list'
+vds_build_sg_list: ; 0xfaaaa LB 0x77
+ push bp ; 55 ; 0xfaaaa vds.c:87
+ mov bp, sp ; 89 e5 ; 0xfaaab
+ push si ; 56 ; 0xfaaad
+ push di ; 57 ; 0xfaaae
+ mov di, ax ; 89 c7 ; 0xfaaaf
+ mov si, dx ; 89 d6 ; 0xfaab1
+ mov ax, bx ; 89 d8 ; 0xfaab3
+ mov dx, cx ; 89 ca ; 0xfaab5
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfaab7 vds.c:92
+ mov es, si ; 8e c6 ; 0xfaaba
+ mov word [es:di], bx ; 26 89 1d ; 0xfaabc
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xfaabf
+ mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xfaac2
+ call 0aa8ch ; e8 c3 ff ; 0xfaac6 vds.c:93
+ mov es, si ; 8e c6 ; 0xfaac9
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfaacb
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfaacf
+ mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xfaad3 vds.c:94
+ call 0aa6fh ; e8 93 ff ; 0xfaad9 vds.c:95
+ test ax, ax ; 85 c0 ; 0xfaadc
+ je short 0aaf1h ; 74 11 ; 0xfaade
+ mov es, si ; 8e c6 ; 0xfaae0 vds.c:97
+ mov ax, 08105h ; b8 05 81 ; 0xfaae2
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfaae5
+ int 04bh ; cd 4b ; 0xfaae8
+ jc short 0aaeeh ; 72 02 ; 0xfaaea
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfaaec
+ cbw ; 98 ; 0xfaaee
+ jmp short 0ab18h ; eb 27 ; 0xfaaef vds.c:98
+ mov es, si ; 8e c6 ; 0xfaaf1 vds.c:100
+ mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xfaaf3
+ mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xfaaf9 vds.c:101
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xfaafd
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xfab01
+ mov word [es:di+012h], ax ; 26 89 45 12 ; 0xfab05
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xfab09 vds.c:102
+ mov word [es:di+014h], ax ; 26 89 45 14 ; 0xfab0c
+ mov ax, bx ; 89 d8 ; 0xfab10
+ mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xfab12
+ xor ax, bx ; 31 d8 ; 0xfab16 vds.c:103
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfab18 vds.c:106
+ pop di ; 5f ; 0xfab1b
+ pop si ; 5e ; 0xfab1c
+ pop bp ; 5d ; 0xfab1d
+ retn 00004h ; c2 04 00 ; 0xfab1e
+ ; disGetNextSymbol 0xfab21 LB 0x3c7 -> off=0x0 cb=000000000000002e uValue=00000000000f9521 'vds_free_sg_list'
+vds_free_sg_list: ; 0xfab21 LB 0x2e
+ push bp ; 55 ; 0xfab21 vds.c:112
+ mov bp, sp ; 89 e5 ; 0xfab22
+ push bx ; 53 ; 0xfab24
+ push di ; 57 ; 0xfab25
+ mov bx, ax ; 89 c3 ; 0xfab26
+ call 0aa6fh ; e8 44 ff ; 0xfab28 vds.c:116
+ test ax, ax ; 85 c0 ; 0xfab2b
+ je short 0ab40h ; 74 11 ; 0xfab2d
+ mov di, bx ; 89 df ; 0xfab2f vds.c:118
+ mov es, dx ; 8e c2 ; 0xfab31
+ mov ax, 08106h ; b8 06 81 ; 0xfab33
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfab36
+ int 04bh ; cd 4b ; 0xfab39
+ jc short 0ab3fh ; 72 02 ; 0xfab3b
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfab3d
+ cbw ; 98 ; 0xfab3f
+ mov es, dx ; 8e c2 ; 0xfab40 vds.c:126
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xfab42
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfab48 vds.c:128
+ pop di ; 5f ; 0xfab4b
+ pop bx ; 5b ; 0xfab4c
+ pop bp ; 5d ; 0xfab4d
+ retn ; c3 ; 0xfab4e
+ ; disGetNextSymbol 0xfab4f LB 0x399 -> off=0x1 cb=0000000000000020 uValue=00000000000f9550 '__U4M'
+ db 000h
+__U4M: ; 0xfab50 LB 0x20
+ pushfw ; 9c ; 0xfab50 __U4M.asm:51
+ push si ; 56 ; 0xfab51 __U4M.asm:81
+ push di ; 57 ; 0xfab52 __U4M.asm:82
+ push ax ; 50 ; 0xfab53 __U4M.asm:95
+ db 08bh, 0fah
+ ; mov di, dx ; 8b fa ; 0xfab54 __U4M.asm:96
+ mul bx ; f7 e3 ; 0xfab56 __U4M.asm:99
+ db 08bh, 0f2h
+ ; mov si, dx ; 8b f2 ; 0xfab58 __U4M.asm:100
+ xchg di, ax ; 97 ; 0xfab5a __U4M.asm:101
+ mul bx ; f7 e3 ; 0xfab5b __U4M.asm:104
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xfab5d __U4M.asm:105
+ pop ax ; 58 ; 0xfab5f __U4M.asm:108
+ mul cx ; f7 e1 ; 0xfab60 __U4M.asm:109
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xfab62 __U4M.asm:110
+ db 08bh, 0d6h
+ ; mov dx, si ; 8b d6 ; 0xfab64 __U4M.asm:113
+ db 08bh, 0c7h
+ ; mov ax, di ; 8b c7 ; 0xfab66 __U4M.asm:114
+ pop di ; 5f ; 0xfab68 __U4M.asm:116
+ pop si ; 5e ; 0xfab69 __U4M.asm:117
+ popfw ; 9d ; 0xfab6a __U4M.asm:119
+ retn ; c3 ; 0xfab6b __U4M.asm:120
+ times 0x4 db 0
+ ; disGetNextSymbol 0xfab70 LB 0x378 -> off=0x0 cb=0000000000000030 uValue=00000000000f9570 '__U4D'
+__U4D: ; 0xfab70 LB 0x30
+ pushfw ; 9c ; 0xfab70 __U4D.asm:59
+ test cx, cx ; 85 c9 ; 0xfab71 __U4D.asm:94
+ jne short 0ab7dh ; 75 08 ; 0xfab73 __U4D.asm:95
+ div bx ; f7 f3 ; 0xfab75 __U4D.asm:97
+ db 08bh, 0dah
+ ; mov bx, dx ; 8b da ; 0xfab77 __U4D.asm:99
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xfab79 __U4D.asm:101
+ popfw ; 9d ; 0xfab7b __U4D.asm:103
+ retn ; c3 ; 0xfab7c __U4D.asm:104
+ push DS ; 1e ; 0xfab7d __U4D.asm:108
+ push ES ; 06 ; 0xfab7e __U4D.asm:109
+ push bp ; 55 ; 0xfab7f __U4D.asm:116
+ sub sp, strict byte 00004h ; 83 ec 04 ; 0xfab80 __U4D.asm:117
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfab83 __U4D.asm:118
+ push SS ; 16 ; 0xfab85 __U4D.asm:121
+ push bp ; 55 ; 0xfab86 __U4D.asm:122
+ add bp, strict byte 00004h ; 83 c5 04 ; 0xfab87 __U4D.asm:123
+ push cx ; 51 ; 0xfab8a __U4D.asm:126
+ push bx ; 53 ; 0xfab8b __U4D.asm:127
+ push dx ; 52 ; 0xfab8c __U4D.asm:130
+ push ax ; 50 ; 0xfab8d __U4D.asm:131
+ call 0ac5ch ; e8 cb 00 ; 0xfab8e __U4D.asm:133
+ mov cx, word [bp-002h] ; 8b 4e fe ; 0xfab91 __U4D.asm:136
+ mov bx, word [bp-004h] ; 8b 5e fc ; 0xfab94 __U4D.asm:137
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xfab97 __U4D.asm:141
+ pop bp ; 5d ; 0xfab99 __U4D.asm:142
+ pop ES ; 07 ; 0xfab9a __U4D.asm:143
+ pop DS ; 1f ; 0xfab9b __U4D.asm:144
+ popfw ; 9d ; 0xfab9c __U4D.asm:146
+ retn ; c3 ; 0xfab9d __U4D.asm:147
+ times 0x2 db 0
+ ; disGetNextSymbol 0xfaba0 LB 0x348 -> off=0x0 cb=0000000000000010 uValue=00000000000f95a0 '__U8RS'
+__U8RS: ; 0xfaba0 LB 0x10
+ test si, si ; 85 f6 ; 0xfaba0 __U8RS.asm:50
+ je short 0abafh ; 74 0b ; 0xfaba2 __U8RS.asm:51
+ shr ax, 1 ; d1 e8 ; 0xfaba4 __U8RS.asm:53
+ rcr bx, 1 ; d1 db ; 0xfaba6 __U8RS.asm:54
+ rcr cx, 1 ; d1 d9 ; 0xfaba8 __U8RS.asm:55
+ rcr dx, 1 ; d1 da ; 0xfabaa __U8RS.asm:56
+ dec si ; 4e ; 0xfabac __U8RS.asm:57
+ jne short 0aba4h ; 75 f5 ; 0xfabad __U8RS.asm:58
+ retn ; c3 ; 0xfabaf __U8RS.asm:60
+ ; disGetNextSymbol 0xfabb0 LB 0x338 -> off=0x0 cb=0000000000000010 uValue=00000000000f95b0 '__U8LS'
+__U8LS: ; 0xfabb0 LB 0x10
+ test si, si ; 85 f6 ; 0xfabb0 __U8LS.asm:50
+ je short 0abbfh ; 74 0b ; 0xfabb2 __U8LS.asm:51
+ sal dx, 1 ; d1 e2 ; 0xfabb4 __U8LS.asm:53
+ rcl cx, 1 ; d1 d1 ; 0xfabb6 __U8LS.asm:54
+ rcl bx, 1 ; d1 d3 ; 0xfabb8 __U8LS.asm:55
+ rcl ax, 1 ; d1 d0 ; 0xfabba __U8LS.asm:56
+ dec si ; 4e ; 0xfabbc __U8LS.asm:57
+ jne short 0abb4h ; 75 f5 ; 0xfabbd __U8LS.asm:58
+ retn ; c3 ; 0xfabbf __U8LS.asm:60
+ ; disGetNextSymbol 0xfabc0 LB 0x328 -> off=0x0 cb=0000000000000010 uValue=00000000000f95c0 '_fmemset_'
+_fmemset_: ; 0xfabc0 LB 0x10
+ push di ; 57 ; 0xfabc0 fmemset.asm:52
+ mov es, dx ; 8e c2 ; 0xfabc1 fmemset.asm:54
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfabc3 fmemset.asm:55
+ xchg al, bl ; 86 d8 ; 0xfabc5 fmemset.asm:56
+ rep stosb ; f3 aa ; 0xfabc7 fmemset.asm:57
+ xchg al, bl ; 86 d8 ; 0xfabc9 fmemset.asm:58
+ pop di ; 5f ; 0xfabcb fmemset.asm:60
+ retn ; c3 ; 0xfabcc fmemset.asm:61
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfabd0 LB 0x318 -> off=0x0 cb=000000000000003a uValue=00000000000f95d0 '_fmemcpy_'
+_fmemcpy_: ; 0xfabd0 LB 0x3a
+ push bp ; 55 ; 0xfabd0 fmemcpy.asm:52
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfabd1 fmemcpy.asm:53
+ push di ; 57 ; 0xfabd3 fmemcpy.asm:54
+ push DS ; 1e ; 0xfabd4 fmemcpy.asm:55
+ push si ; 56 ; 0xfabd5 fmemcpy.asm:56
+ mov es, dx ; 8e c2 ; 0xfabd6 fmemcpy.asm:58
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfabd8 fmemcpy.asm:59
+ mov ds, cx ; 8e d9 ; 0xfabda fmemcpy.asm:60
+ db 08bh, 0f3h
+ ; mov si, bx ; 8b f3 ; 0xfabdc fmemcpy.asm:61
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfabde fmemcpy.asm:62
+ rep movsb ; f3 a4 ; 0xfabe1 fmemcpy.asm:63
+ pop si ; 5e ; 0xfabe3 fmemcpy.asm:65
+ pop DS ; 1f ; 0xfabe4 fmemcpy.asm:66
+ pop di ; 5f ; 0xfabe5 fmemcpy.asm:67
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xfabe6 fmemcpy.asm:68
+ pop bp ; 5d ; 0xfabe8 fmemcpy.asm:69
+ retn ; c3 ; 0xfabe9 fmemcpy.asm:70
+ add byte [bx+si], al ; 00 00 ; 0xfabea
+ add byte [bx+si], al ; 00 00 ; 0xfabec
+ add byte [bx+si], al ; 00 00 ; 0xfabee
+ and byte [si-053deh], ch ; 20 ac 22 ac ; 0xfabf0
+ sub ax, 02dach ; 2d ac 2d ; 0xfabf4
+ lodsb ; ac ; 0xfabf7
+ sub ax, 02fach ; 2d ac 2f ; 0xfabf8
+ lodsb ; ac ; 0xfabfb
+ das ; 2f ; 0xfabfc
+ lodsb ; ac ; 0xfabfd
+ xor word [si-053cbh], bp ; 31 ac 35 ac ; 0xfabfe
+ xor ax, 037ach ; 35 ac 37 ; 0xfac02
+ lodsb ; ac ; 0xfac05
+ cmp AL, strict byte 0ach ; 3c ac ; 0xfac06
+ db 03eh, 0ach
+ ; ds lodsb ; 3e ac ; 0xfac08
+ ; disGetNextSymbol 0xfac0a LB 0x2de -> off=0x0 cb=0000000000000041 uValue=000000000000960a 'apm_worker'
+apm_worker: ; 0xfac0a LB 0x41
+ sti ; fb ; 0xfac0a apm_pm.asm:66
+ push ax ; 50 ; 0xfac0b apm_pm.asm:68
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfac0c apm_pm.asm:69
+ sub AL, strict byte 004h ; 2c 04 ; 0xfac0e apm_pm.asm:70
+ db 08bh, 0e8h
+ ; mov bp, ax ; 8b e8 ; 0xfac10 apm_pm.asm:71
+ sal bp, 1 ; d1 e5 ; 0xfac12 apm_pm.asm:72
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfac14 apm_pm.asm:73
+ pop ax ; 58 ; 0xfac16 apm_pm.asm:74
+ mov AH, strict byte 053h ; b4 53 ; 0xfac17 apm_pm.asm:75
+ jnc short 0ac47h ; 73 2c ; 0xfac19 apm_pm.asm:76
+ jmp word [cs:bp-05410h] ; 2e ff a6 f0 ab ; 0xfac1b apm_pm.asm:78
+ jmp short 0ac45h ; eb 23 ; 0xfac20 apm_pm.asm:81
+ push CS ; 0e ; 0xfac22 apm_pm.asm:90
+ pop ax ; 58 ; 0xfac23 apm_pm.asm:91
+ test ax, strict word 00003h ; a9 03 00 ; 0xfac24 apm_pm.asm:92
+ jne short 0ac45h ; 75 1c ; 0xfac27 apm_pm.asm:93
+ sti ; fb ; 0xfac29 apm_pm.asm:94
+ hlt ; f4 ; 0xfac2a apm_pm.asm:95
+ jmp short 0ac45h ; eb 18 ; 0xfac2b apm_pm.asm:96
+ jmp short 0ac45h ; eb 16 ; 0xfac2d apm_pm.asm:105
+ jmp short 0ac47h ; eb 16 ; 0xfac2f apm_pm.asm:111
+ mov AH, strict byte 080h ; b4 80 ; 0xfac31 apm_pm.asm:114
+ jmp short 0ac49h ; eb 14 ; 0xfac33 apm_pm.asm:115
+ jmp short 0ac47h ; eb 10 ; 0xfac35 apm_pm.asm:120
+ mov ax, 00102h ; b8 02 01 ; 0xfac37 apm_pm.asm:123
+ jmp short 0ac45h ; eb 09 ; 0xfac3a apm_pm.asm:124
+ jmp short 0ac45h ; eb 07 ; 0xfac3c apm_pm.asm:128
+ mov BL, strict byte 000h ; b3 00 ; 0xfac3e apm_pm.asm:131
+ mov cx, strict word 00000h ; b9 00 00 ; 0xfac40 apm_pm.asm:132
+ jmp short 0ac45h ; eb 00 ; 0xfac43 apm_pm.asm:133
+ clc ; f8 ; 0xfac45 apm_pm.asm:136
+ retn ; c3 ; 0xfac46 apm_pm.asm:137
+ mov AH, strict byte 009h ; b4 09 ; 0xfac47 apm_pm.asm:140
+ stc ; f9 ; 0xfac49 apm_pm.asm:143
+ retn ; c3 ; 0xfac4a apm_pm.asm:144
+ ; disGetNextSymbol 0xfac4b LB 0x29d -> off=0x0 cb=0000000000000011 uValue=00000000000f964b 'apm_pm16_entry'
+apm_pm16_entry: ; 0xfac4b LB 0x11
+ mov AH, strict byte 002h ; b4 02 ; 0xfac4b apm_pm.asm:156
+ push DS ; 1e ; 0xfac4d apm_pm.asm:162
+ push bp ; 55 ; 0xfac4e apm_pm.asm:163
+ push CS ; 0e ; 0xfac4f apm_pm.asm:165
+ pop bp ; 5d ; 0xfac50 apm_pm.asm:166
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xfac51 apm_pm.asm:167
+ mov ds, bp ; 8e dd ; 0xfac54 apm_pm.asm:168
+ call 0ac0ah ; e8 b1 ff ; 0xfac56 apm_pm.asm:170
+ pop bp ; 5d ; 0xfac59 apm_pm.asm:172
+ pop DS ; 1f ; 0xfac5a apm_pm.asm:173
+ retf ; cb ; 0xfac5b apm_pm.asm:175
+ ; disGetNextSymbol 0xfac5c LB 0x28c -> off=0x0 cb=0000000000000265 uValue=00000000000f965c 'DoUInt32Div'
+DoUInt32Div: ; 0xfac5c LB 0x265
+ push bp ; 55 ; 0xfac5c DoUInt32Div.c:37
+ mov bp, sp ; 89 e5 ; 0xfac5d
+ push si ; 56 ; 0xfac5f
+ push di ; 57 ; 0xfac60
+ sub sp, strict byte 00018h ; 83 ec 18 ; 0xfac61
+ lds bx, [bp+00ch] ; c5 5e 0c ; 0xfac64
+ lea si, [bp+004h] ; 8d 76 04 ; 0xfac67 DoUInt32Div.c:982
+ mov word [bp-010h], si ; 89 76 f0 ; 0xfac6a
+ mov [bp-00eh], ss ; 8c 56 f2 ; 0xfac6d
+ lea di, [bp+008h] ; 8d 7e 08 ; 0xfac70
+ mov [bp-008h], ss ; 8c 56 f8 ; 0xfac73
+ lea si, [bp-01ch] ; 8d 76 e4 ; 0xfac76
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xfac79
+ mov [bp-00ah], ss ; 8c 56 f6 ; 0xfac7c
+ mov si, bx ; 89 de ; 0xfac7f
+ mov [bp-006h], ds ; 8c 5e fa ; 0xfac81
+ cmp word [bx+002h], strict byte 00000h ; 83 7f 02 00 ; 0xfac84 DoUInt32Div.c:990
+ jne short 0acach ; 75 22 ; 0xfac88
+ mov ax, word [bx] ; 8b 07 ; 0xfac8a DoUInt32Div.c:992
+ test ax, ax ; 85 c0 ; 0xfac8c
+ je short 0aca9h ; 74 19 ; 0xfac8e
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xfac90 DoUInt32Div.c:995
+ jne short 0acach ; 75 17 ; 0xfac93
+ xor ax, ax ; 31 c0 ; 0xfac95 DoUInt32Div.c:77
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xfac97
+ mov word [bp+008h], ax ; 89 46 08 ; 0xfac9a DoUInt32Div.c:78
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfac9d DoUInt32Div.c:998
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfaca0
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xfaca3
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfaca6
+ jmp near 0aeb4h ; e9 08 02 ; 0xfaca9
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfacac DoUInt32Div.c:736
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfacaf
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfacb2
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfacb5
+ je short 0acd2h ; 74 18 ; 0xfacb8
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfacba DoUInt32Div.c:737
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfacbd
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfacc0
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfacc3
+ jbe short 0accdh ; 76 05 ; 0xfacc6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfacc8
+ jmp short 0acf3h ; eb 26 ; 0xfaccb
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfaccd
+ jmp short 0acf3h ; eb 21 ; 0xfacd0
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfacd2 DoUInt32Div.c:738
+ mov ax, word [bx] ; 8b 07 ; 0xfacd5
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfacd7
+ cmp ax, word [si] ; 3b 04 ; 0xfacda
+ je short 0acf1h ; 74 13 ; 0xfacdc
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfacde DoUInt32Div.c:739
+ mov ax, word [bx] ; 8b 07 ; 0xface1
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xface3
+ cmp ax, word [si] ; 3b 04 ; 0xface6
+ jbe short 0acech ; 76 02 ; 0xface8
+ jmp short 0acc8h ; eb dc ; 0xfacea
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfacec
+ jmp short 0acf3h ; eb 02 ; 0xfacef
+ xor ax, ax ; 31 c0 ; 0xfacf1 DoUInt32Div.c:740
+ test ax, ax ; 85 c0 ; 0xfacf3 DoUInt32Div.c:1006
+ jnl short 0ad15h ; 7d 1e ; 0xfacf5
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfacf7 DoUInt32Div.c:1008
+ mov ax, word [bx] ; 8b 07 ; 0xfacfa
+ mov dx, word [bx+002h] ; 8b 57 02 ; 0xfacfc
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfacff
+ mov word [di], ax ; 89 05 ; 0xfad02
+ mov word [di+002h], dx ; 89 55 02 ; 0xfad04
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfad07 DoUInt32Div.c:77
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfad0a
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfad0f DoUInt32Div.c:78
+ jmp short 0aca9h ; eb 94 ; 0xfad13 DoUInt32Div.c:1013
+ jne short 0ad2ch ; 75 15 ; 0xfad15
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfad17 DoUInt32Div.c:77
+ mov word [di+002h], ax ; 89 45 02 ; 0xfad1a
+ mov word [di], ax ; 89 05 ; 0xfad1d DoUInt32Div.c:78
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfad1f DoUInt32Div.c:407
+ mov word [bx], strict word 00001h ; c7 07 01 00 ; 0xfad22
+ mov word [bx+002h], ax ; 89 47 02 ; 0xfad26 DoUInt32Div.c:408
+ jmp near 0aeb4h ; e9 88 01 ; 0xfad29 DoUInt32Div.c:1018
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfad2c DoUInt32Div.c:964
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfad2f
+ test ax, ax ; 85 c0 ; 0xfad32
+ je short 0ad47h ; 74 11 ; 0xfad34
+ push ax ; 50 ; 0xfad36 DoUInt32Div.c:965
+ mov ax, 0f000h ; b8 00 f0 ; 0xfad37
+ mov ds, ax ; 8e d8 ; 0xfad3a
+ call 0aed0h ; e8 91 01 ; 0xfad3c
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfad3f
+ add ax, strict word 00010h ; 05 10 00 ; 0xfad42
+ jmp short 0ad54h ; eb 0d ; 0xfad45 DoUInt32Div.c:966
+ push word [bx] ; ff 37 ; 0xfad47 DoUInt32Div.c:967
+ mov ax, 0f000h ; b8 00 f0 ; 0xfad49
+ mov ds, ax ; 8e d8 ; 0xfad4c
+ call 0aed0h ; e8 7f 01 ; 0xfad4e
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfad51
+ mov word [bp-014h], ax ; 89 46 ec ; 0xfad54 DoUInt32Div.c:969
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfad57 DoUInt32Div.c:964
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfad5a
+ test ax, ax ; 85 c0 ; 0xfad5d
+ je short 0ad72h ; 74 11 ; 0xfad5f
+ push ax ; 50 ; 0xfad61 DoUInt32Div.c:965
+ mov ax, 0f000h ; b8 00 f0 ; 0xfad62
+ mov ds, ax ; 8e d8 ; 0xfad65
+ call 0aed0h ; e8 66 01 ; 0xfad67
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfad6a
+ add ax, strict word 00010h ; 05 10 00 ; 0xfad6d
+ jmp short 0ad7fh ; eb 0d ; 0xfad70 DoUInt32Div.c:966
+ push word [si] ; ff 34 ; 0xfad72 DoUInt32Div.c:967
+ mov ax, 0f000h ; b8 00 f0 ; 0xfad74
+ mov ds, ax ; 8e d8 ; 0xfad77
+ call 0aed0h ; e8 54 01 ; 0xfad79
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfad7c
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfad7f DoUInt32Div.c:969
+ sub dx, ax ; 29 c2 ; 0xfad82
+ mov word [bp-012h], dx ; 89 56 ee ; 0xfad84
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfad87 DoUInt32Div.c:1024
+ mov ax, word [si] ; 8b 04 ; 0xfad8a
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfad8c
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfad8f
+ mov word [bp-016h], ax ; 89 46 ea ; 0xfad92
+ test dx, dx ; 85 d2 ; 0xfad95 DoUInt32Div.c:1025
+ je short 0adefh ; 74 56 ; 0xfad97
+ mov cx, dx ; 89 d1 ; 0xfad99 DoUInt32Div.c:290
+ xor ch, dh ; 30 f5 ; 0xfad9b
+ and cl, 01fh ; 80 e1 1f ; 0xfad9d
+ mov ax, word [si] ; 8b 04 ; 0xfada0 DoUInt32Div.c:292
+ mov dx, word [si+002h] ; 8b 54 02 ; 0xfada2
+ jcxz 0adadh ; e3 06 ; 0xfada5
+ sal ax, 1 ; d1 e0 ; 0xfada7
+ rcl dx, 1 ; d1 d2 ; 0xfada9
+ loop 0ada7h ; e2 fa ; 0xfadab
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfadad
+ mov word [bp-016h], dx ; 89 56 ea ; 0xfadb0
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfadb3 DoUInt32Div.c:773
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfadb6
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfadb9
+ jnbe short 0adcdh ; 77 0f ; 0xfadbc
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfadbe
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfadc1
+ jne short 0add1h ; 75 0b ; 0xfadc4
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfadc6
+ cmp ax, word [bx] ; 3b 07 ; 0xfadc9
+ jbe short 0add1h ; 76 04 ; 0xfadcb
+ mov AL, strict byte 001h ; b0 01 ; 0xfadcd
+ jmp short 0add3h ; eb 02 ; 0xfadcf
+ xor al, al ; 30 c0 ; 0xfadd1
+ test al, al ; 84 c0 ; 0xfadd3 DoUInt32Div.c:779
+ je short 0adfah ; 74 23 ; 0xfadd5
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xfadd7 DoUInt32Div.c:690
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfadda
+ dec word [bp-012h] ; ff 4e ee ; 0xfaddd
+ jmp short 0adfah ; eb 18 ; 0xfade0
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xfade2 DoUInt32Div.c:642
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xfade5
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xfade8
+ loop 0ade5h ; e2 f8 ; 0xfadeb
+ jmp short 0adddh ; eb ee ; 0xfaded DoUInt32Div.c:657
+ mov ax, word [si] ; 8b 04 ; 0xfadef DoUInt32Div.c:1035
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfadf1
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfadf4
+ mov word [bp-016h], ax ; 89 46 ea ; 0xfadf7
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfadfa DoUInt32Div.c:77
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfadfd
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfae02 DoUInt32Div.c:78
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfae06 DoUInt32Div.c:1038
+ mov dx, word [bx] ; 8b 17 ; 0xfae09
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfae0b
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfae0e
+ mov word [di], dx ; 89 15 ; 0xfae11
+ mov word [di+002h], ax ; 89 45 02 ; 0xfae13
+ mov dx, word [di] ; 8b 15 ; 0xfae16 DoUInt32Div.c:792
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfae18
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfae1b
+ jnbe short 0ae26h ; 77 06 ; 0xfae1e
+ jne short 0ae2ah ; 75 08 ; 0xfae20
+ cmp dx, word [si] ; 3b 14 ; 0xfae22
+ jc short 0ae2ah ; 72 04 ; 0xfae24
+ mov AL, strict byte 001h ; b0 01 ; 0xfae26
+ jmp short 0ae2ch ; eb 02 ; 0xfae28
+ xor al, al ; 30 c0 ; 0xfae2a
+ test al, al ; 84 c0 ; 0xfae2c DoUInt32Div.c:798
+ je short 0ae91h ; 74 61 ; 0xfae2e
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfae30 DoUInt32Div.c:792
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xfae33
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfae36
+ jnbe short 0ae47h ; 77 0c ; 0xfae39
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfae3b
+ jne short 0ae4bh ; 75 0b ; 0xfae3e
+ mov ax, word [di] ; 8b 05 ; 0xfae40
+ cmp ax, word [bp-018h] ; 3b 46 e8 ; 0xfae42
+ jc short 0ae4bh ; 72 04 ; 0xfae45
+ mov AL, strict byte 001h ; b0 01 ; 0xfae47
+ jmp short 0ae4dh ; eb 02 ; 0xfae49
+ xor al, al ; 30 c0 ; 0xfae4b
+ test al, al ; 84 c0 ; 0xfae4d DoUInt32Div.c:798
+ je short 0ae77h ; 74 26 ; 0xfae4f
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfae51 DoUInt32Div.c:461
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfae54
+ sub word [di], ax ; 29 05 ; 0xfae57
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfae59
+ sbb word [di+002h], ax ; 19 45 02 ; 0xfae5c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfae5f DoUInt32Div.c:596
+ xor dx, dx ; 31 d2 ; 0xfae62
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xfae64
+ jcxz 0ae6fh ; e3 06 ; 0xfae67
+ sal ax, 1 ; d1 e0 ; 0xfae69
+ rcl dx, 1 ; d1 d2 ; 0xfae6b
+ loop 0ae69h ; e2 fa ; 0xfae6d
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfae6f
+ or word [bx], ax ; 09 07 ; 0xfae72
+ or word [bx+002h], dx ; 09 57 02 ; 0xfae74
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfae77 DoUInt32Div.c:754
+ mov dx, word [di] ; 8b 15 ; 0xfae7a
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xfae7c
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfae7f
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfae82
+ jc short 0ae8dh ; 72 06 ; 0xfae85
+ jne short 0ae93h ; 75 0a ; 0xfae87
+ cmp dx, word [si] ; 3b 14 ; 0xfae89
+ jnc short 0ae93h ; 73 06 ; 0xfae8b
+ mov AL, strict byte 001h ; b0 01 ; 0xfae8d
+ jmp short 0ae95h ; eb 04 ; 0xfae8f
+ jmp short 0aeb4h ; eb 21 ; 0xfae91
+ xor al, al ; 30 c0 ; 0xfae93
+ test al, al ; 84 c0 ; 0xfae95 DoUInt32Div.c:760
+ je short 0aea8h ; 74 0f ; 0xfae97
+ jmp short 0aeb4h ; eb 19 ; 0xfae99 DoUInt32Div.c:1053
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xfae9b DoUInt32Div.c:690
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xfae9e
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xfaea1
+ loop 0ae9eh ; e2 f8 ; 0xfaea4
+ jmp short 0aeaeh ; eb 06 ; 0xfaea6 DoUInt32Div.c:657
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xfaea8 DoUInt32Div.c:663
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfaeab
+ dec word [bp-012h] ; ff 4e ee ; 0xfaeae DoUInt32Div.c:1055
+ jmp near 0ae30h ; e9 7c ff ; 0xfaeb1 DoUInt32Div.c:1056
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfaeb4 DoUInt32Div.c:41
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xfaeb7
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaeba DoUInt32Div.c:42
+ pop di ; 5f ; 0xfaebd
+ pop si ; 5e ; 0xfaebe
+ pop bp ; 5d ; 0xfaebf
+ retn ; c3 ; 0xfaec0
+ ; disGetNextSymbol 0xfaec1 LB 0x27 -> off=0xf cb=0000000000000018 uValue=00000000000f98d0 '_ASMBitLastSetU16'
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+_ASMBitLastSetU16: ; 0xfaed0 LB 0x18
+ push bp ; 55 ; 0xfaed0 ASMBitLastSetU16.asm:53
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfaed1 ASMBitLastSetU16.asm:54
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfaed3 ASMBitLastSetU16.asm:56
+ test cx, cx ; 85 c9 ; 0xfaed6 ASMBitLastSetU16.asm:57
+ je short 0aee4h ; 74 0a ; 0xfaed8 ASMBitLastSetU16.asm:58
+ mov ax, strict word 00010h ; b8 10 00 ; 0xfaeda ASMBitLastSetU16.asm:60
+ sal cx, 1 ; d1 e1 ; 0xfaedd ASMBitLastSetU16.asm:62
+ jc short 0aee6h ; 72 05 ; 0xfaedf ASMBitLastSetU16.asm:63
+ dec ax ; 48 ; 0xfaee1 ASMBitLastSetU16.asm:64
+ jmp short 0aeddh ; eb f9 ; 0xfaee2 ASMBitLastSetU16.asm:65
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfaee4 ASMBitLastSetU16.asm:68
+ pop bp ; 5d ; 0xfaee6 ASMBitLastSetU16.asm:70
+ retn ; c3 ; 0xfaee7 ASMBitLastSetU16.asm:71
+
+ ; Padding 0x2b18 bytes at 0xfaee8
+ times 11032 db 0
+
+section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3a6 class=CODE group=AUTO
+ ; disGetNextSymbol 0xfda00 LB 0x3a6 -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service'
+bios32_service: ; 0xfda00 LB 0x26
+ pushfw ; 9c ; 0xfda00 pcibio32.asm:62
+ cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:64
+ jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:65
+ cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:67
+ inc bx ; 43 ; 0xfda09
+ dec cx ; 49 ; 0xfda0a
+ mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:68
+ jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:69
+ mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:71
+ 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:73
+ add byte [bx+si], al ; 00 00 ; 0xfda1c
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:74
+ popfw ; 9d ; 0xfda20 pcibio32.asm:76
+ retf ; cb ; 0xfda21 pcibio32.asm:77
+ mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:80
+ jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:81
+ ; disGetNextSymbol 0xfda26 LB 0x380 -> off=0x0 cb=000000000000000d uValue=00000000000f0026 'pcibios32_entry'
+pcibios32_entry: ; 0xfda26 LB 0xd
+ pushfw ; 9c ; 0xfda26 pcibio32.asm:90
+ cld ; fc ; 0xfda27 pcibio32.asm:91
+ push ES ; 06 ; 0xfda28 pcibio32.asm:93
+ pushaw ; 60 ; 0xfda29 pcibio32.asm:94
+ call 0db52h ; e8 25 01 ; 0xfda2a pcibio32.asm:95
+ add byte [bx+si], al ; 00 00 ; 0xfda2d
+ popaw ; 61 ; 0xfda2f pcibio32.asm:96
+ pop ES ; 07 ; 0xfda30 pcibio32.asm:97
+ popfw ; 9d ; 0xfda31 pcibio32.asm:99
+ retf ; cb ; 0xfda32 pcibio32.asm:100
+ ; disGetNextSymbol 0xfda33 LB 0x373 -> off=0x0 cb=0000000000000022 uValue=00000000000f0033 'pci32_select_reg_'
+pci32_select_reg_: ; 0xfda33 LB 0x22
+ push bp ; 55 ; 0xfda33 pci32.c:198
+ mov bp, sp ; 89 e5 ; 0xfda34
+ push bx ; 53 ; 0xfda36
+ and dl, 0fch ; 80 e2 fc ; 0xfda37 pci32.c:200
+ 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:201
+ pop bx ; 5b ; 0xfda52
+ pop bp ; 5d ; 0xfda53
+ retn ; c3 ; 0xfda54
+ ; disGetNextSymbol 0xfda55 LB 0x351 -> off=0x0 cb=00000000000000ff uValue=00000000000f0055 'pci32_find_device_'
+pci32_find_device_: ; 0xfda55 LB 0xff
+ push bp ; 55 ; 0xfda55 pci32.c:233
+ mov bp, sp ; 89 e5 ; 0xfda56
+ push si ; 56 ; 0xfda58
+ push di ; 57 ; 0xfda59
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda5a
+ push ax ; 50 ; 0xfda5d
+ mov si, dx ; 89 d6 ; 0xfda5e
+ mov di, bx ; 89 df ; 0xfda60
+ mov word [di-01ch], cx ; 89 4d e4 ; 0xfda62
+ test bx, bx ; 85 db ; 0xfda65 pci32.c:243
+ xor bx, bx ; 31 db ; 0xfda67 pci32.c:250
+ xor cl, cl ; 30 c9 ; 0xfda69 pci32.c:251
+ test bl, 007h ; f6 c3 07 ; 0xfda6b pci32.c:261
+ jne short 0daaah ; 75 3a ; 0xfda6e
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfda70 pci32.c:262
+ 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:263
+ 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-00ch], al ; 88 45 f4 ; 0xfda85
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfda88 pci32.c:264
+ jne short 0da94h ; 75 08 ; 0xfda8a
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfda8c pci32.c:265
+ jmp near 0db2ah ; e9 98 00 ; 0xfda8f pci32.c:266
+ add byte [bx+si], al ; 00 00 ; 0xfda92
+ test byte [di-00ch], 080h ; f6 45 f4 80 ; 0xfda94 pci32.c:268
+ je short 0daa3h ; 74 09 ; 0xfda98
+ mov word [di-010h], strict word 00001h ; c7 45 f0 01 00 ; 0xfda9a pci32.c:269
+ add byte [bx+si], al ; 00 00 ; 0xfda9f
+ jmp short 0daaah ; eb 07 ; 0xfdaa1 pci32.c:270
+ mov word [di-010h], strict word 00008h ; c7 45 f0 08 00 ; 0xfdaa3 pci32.c:271
+ add byte [bx+si], al ; 00 00 ; 0xfdaa8
+ mov al, byte [di-00ch] ; 8a 45 f4 ; 0xfdaaa pci32.c:282
+ and AL, strict byte 007h ; 24 07 ; 0xfdaad
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfdaaf
+ jne short 0dad7h ; 75 24 ; 0xfdab1
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdab3
+ mov dx, ax ; 89 c2 ; 0xfdab6
+ sar dx, 008h ; c1 fa 08 ; 0xfdab8
+ test dx, dx ; 85 d2 ; 0xfdabb
+ jne short 0dad7h ; 75 18 ; 0xfdabd
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdabf pci32.c:284
+ add byte [bx+si], al ; 00 00 ; 0xfdac2
+ call 0da31h ; e8 6a ff ; 0xfdac4
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfeh ; ba fe 0c ; 0xfdac9 pci32.c:285
+ add byte [bx+si], al ; 00 00 ; 0xfdacc
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdace
+ in AL, DX ; ec ; 0xfdad0
+ cmp al, cl ; 38 c8 ; 0xfdad1 pci32.c:286
+ jbe short 0dad7h ; 76 02 ; 0xfdad3
+ mov cl, al ; 88 c1 ; 0xfdad5 pci32.c:287
+ test di, di ; 85 ff ; 0xfdad7 pci32.c:291
+ je short 0dae2h ; 74 07 ; 0xfdad9
+ mov ax, strict word 00008h ; b8 08 00 ; 0xfdadb
+ add byte [bx+si], al ; 00 00 ; 0xfdade
+ jmp short 0dae4h ; eb 02 ; 0xfdae0
+ xor ax, ax ; 31 c0 ; 0xfdae2
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdae4
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdae7
+ call 0da31h ; e8 44 ff ; 0xfdaea
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfch ; ba fc 0c ; 0xfdaef pci32.c:292
+ add byte [bx+si], al ; 00 00 ; 0xfdaf2
+ in ax, DX ; ed ; 0xfdaf4
+ mov word [di-014h], ax ; 89 45 ec ; 0xfdaf5
+ mov word [di-018h], strict word 00000h ; c7 45 e8 00 00 ; 0xfdaf8 pci32.c:293
+ add byte [bx+si], al ; 00 00 ; 0xfdafd
+ test di, di ; 85 ff ; 0xfdaff pci32.c:296
+ je short 0db14h ; 74 11 ; 0xfdb01
+ cmp word [di-01ch], strict byte 00000h ; 83 7d e4 00 ; 0xfdb03 pci32.c:297
+ je short 0db0eh ; 74 05 ; 0xfdb07
+ shr ax, 010h ; c1 e8 10 ; 0xfdb09 pci32.c:298
+ jmp short 0db11h ; eb 03 ; 0xfdb0c pci32.c:299
+ shr ax, 008h ; c1 e8 08 ; 0xfdb0e pci32.c:300
+ mov word [di-014h], ax ; 89 45 ec ; 0xfdb11
+ mov ax, word [di-014h] ; 8b 45 ec ; 0xfdb14 pci32.c:307
+ cmp ax, word [di-020h] ; 3b 45 e0 ; 0xfdb17
+ je short 0db22h ; 74 06 ; 0xfdb1a
+ cmp word [di-018h], strict byte 00000h ; 83 7d e8 00 ; 0xfdb1c pci32.c:308
+ je short 0db29h ; 74 07 ; 0xfdb20
+ dec si ; 4e ; 0xfdb22
+ cmp esi, strict byte 0ffffffffh ; 66 83 fe ff ; 0xfdb23
+ je short 0db3dh ; 74 14 ; 0xfdb27
+ add bx, word [di-010h] ; 03 5d f0 ; 0xfdb29 pci32.c:316
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb2c pci32.c:317
+ sar ax, 008h ; c1 f8 08 ; 0xfdb2f
+ movzx dx, cl ; 0f b6 d1 ; 0xfdb32
+ cmp ax, dx ; 39 d0 ; 0xfdb35
+ jle near 0da69h ; 0f 8e 2e ff ; 0xfdb37
+ db 0ffh
+ jmp word [bp-07dh] ; ff 66 83 ; 0xfdb3c
+ db 0feh
+ push word [di+005h] ; ff 75 05 ; 0xfdb40
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb43
+ jmp short 0db4dh ; eb 05 ; 0xfdb46
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb48
+ add byte [bx+si], al ; 00 00 ; 0xfdb4b
+ lea sp, [di-008h] ; 8d 65 f8 ; 0xfdb4d pci32.c:324
+ pop di ; 5f ; 0xfdb50
+ pop si ; 5e ; 0xfdb51
+ pop bp ; 5d ; 0xfdb52
+ retn ; c3 ; 0xfdb53
+ ; disGetNextSymbol 0xfdb54 LB 0x252 -> off=0x0 cb=0000000000000252 uValue=00000000000f0154 '_pci32_function'
+_pci32_function: ; 0xfdb54 LB 0x252
+ push bp ; 55 ; 0xfdb54 pci32.c:326
+ mov bp, sp ; 89 e5 ; 0xfdb55
+ push bx ; 53 ; 0xfdb57
+ push si ; 56 ; 0xfdb58
+ push di ; 57 ; 0xfdb59
+ push ax ; 50 ; 0xfdb5a
+ and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb5b pci32.c:333
+ sub AL, strict byte 0feh ; 2c fe ; 0xfdb63
+ inc word [bx+si] ; ff 00 ; 0xfdb65
+ add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb67
+ xor ah, ah ; 30 e4 ; 0xfdb6b
+ cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb6d
+ jbe near 0dc12h ; 0f 86 9b 00 ; 0xfdb73
+ add byte [bx+si], al ; 00 00 ; 0xfdb77
+ cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdb79
+ lodsw ; ad ; 0xfdb7f
+ add word [bx+si], ax ; 01 00 ; 0xfdb80
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb82
+ or byte [bx+si], al ; 08 00 ; 0xfdb85
+ jc near 0dd8ch ; 0f 82 01 02 ; 0xfdb87
+ add byte [bx+si], al ; 00 00 ; 0xfdb8b
+ cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdb8d
+ lodsb ; ac ; 0xfdb93
+ add byte [bx+si], al ; 00 00 ; 0xfdb94
+ add cl, ch ; 00 e9 ; 0xfdb96
+ repne add word [bx+si], ax ; f2 01 00 ; 0xfdb98
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb9b
+ add al, byte [bx+si] ; 02 00 ; 0xfdb9e
+ je short 0dbcah ; 74 28 ; 0xfdba0
+ cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdba2
+ loop 0dbabh ; e2 01 ; 0xfdba8
+ add byte [bx+si], al ; 00 00 ; 0xfdbaa
+ mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdbac pci32.c:338
+ inc bp ; 45 ; 0xfdbb4
+ sbb byte [bx+si], dl ; 18 10 ; 0xfdbb5
+ add dh, byte [bx+di] ; 02 31 ; 0xfdbb7
+ sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbb9
+ and bh, al ; 20 c7 ; 0xfdbbd
+ inc bp ; 45 ; 0xfdbbf
+ sbb AL, strict byte 050h ; 1c 50 ; 0xfdbc0
+ inc bx ; 43 ; 0xfdbc2
+ dec cx ; 49 ; 0xfdbc3
+ and cl, ch ; 20 e9 ; 0xfdbc4
+ aam 001h ; d4 01 ; 0xfdbc6
+ add byte [bx+si], al ; 00 00 ; 0xfdbc8
+ cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbca pci32.c:348
+ jne short 0dbdeh ; 75 0d ; 0xfdbcf
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbd1 pci32.c:349
+ xor ah, ah ; 30 e4 ; 0xfdbd4
+ or ah, 083h ; 80 cc 83 ; 0xfdbd6
+ jmp near 0dd94h ; e9 b8 01 ; 0xfdbd9 pci32.c:350
+ add byte [bx+si], al ; 00 00 ; 0xfdbdc
+ xor cx, cx ; 31 c9 ; 0xfdbde pci32.c:352
+ xor bx, bx ; 31 db ; 0xfdbe0
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdbe2
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdbe6
+ sal ax, 010h ; c1 e0 10 ; 0xfdbea
+ db 00fh, 0b7h, 075h, 01ch
+ ; movzx si, [di+01ch] ; 0f b7 75 1c ; 0xfdbed
+ or ax, si ; 09 f0 ; 0xfdbf1
+ call 0da53h ; e8 5d fe ; 0xfdbf3
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdbf7
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdbfb
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbfe pci32.c:354
+ xor ah, ah ; 30 e4 ; 0xfdc01
+ or ah, 086h ; 80 cc 86 ; 0xfdc03
+ jmp near 0dd94h ; e9 8b 01 ; 0xfdc06
+ add byte [bx+si], al ; 00 00 ; 0xfdc09
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc0b pci32.c:355
+ jmp near 0dd9ch ; e9 8a 01 ; 0xfdc0f pci32.c:360
+ add byte [bx+si], al ; 00 00 ; 0xfdc12
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc14 pci32.c:362
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc18
+ xor cx, cx ; 31 c9 ; 0xfdc1b
+ mov bx, strict word 00001h ; bb 01 00 ; 0xfdc1d
+ add byte [bx+si], al ; 00 00 ; 0xfdc20
+ call 0da53h ; e8 2e fe ; 0xfdc22
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdc26
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdc2a
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc2d pci32.c:364
+ xor ah, ah ; 30 e4 ; 0xfdc30
+ or ah, 086h ; 80 cc 86 ; 0xfdc32
+ jmp near 0dd94h ; e9 5c 01 ; 0xfdc35 pci32.c:365
+ add byte [bx+si], al ; 00 00 ; 0xfdc38
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc3a pci32.c:367
+ jmp near 0dd9ch ; e9 5b 01 ; 0xfdc3e pci32.c:369
+ add byte [bx+si], al ; 00 00 ; 0xfdc41
+ cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc43 pci32.c:376
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc4b pci32.c:377
+ xor ah, ah ; 30 e4 ; 0xfdc4e
+ or ah, 087h ; 80 cc 87 ; 0xfdc50
+ jmp near 0dd94h ; e9 3e 01 ; 0xfdc53 pci32.c:378
+ add byte [bx+si], al ; 00 00 ; 0xfdc56
+ db 00fh, 0b7h, 055h, 008h
+ ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc58 pci32.c:380
+ db 00fh, 0b7h, 045h, 018h
+ ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc5c
+ call 0da31h ; e8 ce fd ; 0xfdc60
+ db 0ffh
+ dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc64
+ xor ah, ah ; 30 e4 ; 0xfdc68
+ cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc6a
+ jbe short 0dce1h ; 76 6f ; 0xfdc70
+ cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdc72
+ test ax, strict word 00000h ; a9 00 00 ; 0xfdc78
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdc7b
+ or AL, strict byte 000h ; 0c 00 ; 0xfdc7e
+ je near 0dd07h ; 0f 84 83 00 ; 0xfdc80
+ add byte [bx+si], al ; 00 00 ; 0xfdc84
+ cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdc86
+ jmp near 0dd9ch ; e9 0d 01 ; 0xfdc8c
+ add byte [bx+si], al ; 00 00 ; 0xfdc8f
+ cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdc91
+ cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdc97
+ std ; fd ; 0xfdc9d
+ add byte [bx+si], al ; 00 00 ; 0xfdc9e
+ add byte [bp+di+0205dh], cl ; 00 8b 5d 20 ; 0xfdca0
+ xor bl, bl ; 30 db ; 0xfdca4
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdca6
+ xor ah, ah ; 30 e4 ; 0xfdca9
+ and AL, strict byte 003h ; 24 03 ; 0xfdcab
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdcad
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcb0
+ add byte [bx+si], al ; 00 00 ; 0xfdcb4
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdcb6
+ in AL, DX ; ec ; 0xfdcb8
+ or bx, ax ; 09 c3 ; 0xfdcb9
+ mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdcbb
+ jmp near 0dd9ch ; e9 da 00 ; 0xfdcbf pci32.c:384
+ add byte [bx+si], al ; 00 00 ; 0xfdcc2
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcc4 pci32.c:386
+ xor ah, ah ; 30 e4 ; 0xfdcc7
+ and AL, strict byte 002h ; 24 02 ; 0xfdcc9
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdccb
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcce
+ add byte [bx+si], al ; 00 00 ; 0xfdcd2
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdcd4
+ in eax, DX ; 66 ed ; 0xfdcd6
+ mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdcd8
+ jmp near 0dd9ch ; e9 bd 00 ; 0xfdcdc pci32.c:387
+ add byte [bx+si], al ; 00 00 ; 0xfdcdf
+ mov dx, 00cfch ; ba fc 0c ; 0xfdce1 pci32.c:389
+ add byte [bx+si], al ; 00 00 ; 0xfdce4
+ in ax, DX ; ed ; 0xfdce6
+ mov word [di+020h], ax ; 89 45 20 ; 0xfdce7
+ jmp near 0dd9ch ; e9 af 00 ; 0xfdcea pci32.c:390
+ add byte [bx+si], al ; 00 00 ; 0xfdced
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdcef pci32.c:392
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdcf2
+ xor dh, dh ; 30 f6 ; 0xfdcf5
+ and dl, 003h ; 80 e2 03 ; 0xfdcf7
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdcfa
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcfd
+ add byte [bx+si], al ; 00 00 ; 0xfdd01
+ out DX, AL ; ee ; 0xfdd03
+ jmp near 0dd9ch ; e9 95 00 ; 0xfdd04 pci32.c:393
+ add byte [bx+si], al ; 00 00 ; 0xfdd07
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd09 pci32.c:395
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd0d
+ xor dh, dh ; 30 f6 ; 0xfdd10
+ and dl, 002h ; 80 e2 02 ; 0xfdd12
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdd15
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd18
+ add byte [bx+si], al ; 00 00 ; 0xfdd1c
+ out DX, eax ; 66 ef ; 0xfdd1e
+ jmp near 0dd9ch ; e9 79 00 ; 0xfdd20 pci32.c:396
+ add byte [bx+si], al ; 00 00 ; 0xfdd23
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd25 pci32.c:398
+ mov dx, 00cfch ; ba fc 0c ; 0xfdd28
+ add byte [bx+si], al ; 00 00 ; 0xfdd2b
+ out DX, ax ; ef ; 0xfdd2d
+ jmp short 0dd9eh ; eb 6e ; 0xfdd2e pci32.c:402
+ db 00fh, 0b7h, 045h, 008h
+ ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd30 pci32.c:404
+ mov es, [di+028h] ; 8e 45 28 ; 0xfdd34
+ mov [di-010h], es ; 8c 45 f0 ; 0xfdd37
+ mov bx, ax ; 89 c3 ; 0xfdd3a
+ mov edx, dword [di] ; 66 8b 15 ; 0xfdd3c pci32.c:408
+ jo short 0dd34h ; 70 f3 ; 0xfdd3f
+ add byte [bx+si], al ; 00 00 ; 0xfdd41
+ db 066h, 026h, 03bh, 010h
+ ; cmp edx, dword [es:bx+si] ; 66 26 3b 10 ; 0xfdd43
+ jbe short 0dd5bh ; 76 12 ; 0xfdd47
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd49 pci32.c:409
+ xor ah, ah ; 30 e4 ; 0xfdd4c
+ or ah, 089h ; 80 cc 89 ; 0xfdd4e
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd51
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd55 pci32.c:410
+ jmp short 0dd7fh ; eb 24 ; 0xfdd59 pci32.c:411
+ db 00fh, 0b7h, 0cah
+ ; movzx cx, dx ; 0f b7 ca ; 0xfdd5b pci32.c:412
+ db 066h, 026h, 08bh, 078h, 006h
+ ; mov edi, dword [es:bx+si+006h] ; 66 26 8b 78 06 ; 0xfdd5e
+ mov ax, word [es:bx+si+002h] ; 26 8b 40 02 ; 0xfdd63
+ mov dx, ds ; 8c da ; 0xfdd67
+ mov si, 0f190h ; be 90 f1 ; 0xfdd69
+ add byte [bx+si], al ; 00 00 ; 0xfdd6c
+ mov es, di ; 8e c7 ; 0xfdd6e
+ mov di, ax ; 89 c7 ; 0xfdd70
+ push DS ; 1e ; 0xfdd72
+ db 066h, 08eh, 0dah
+ ; mov ds, edx ; 66 8e da ; 0xfdd73
+ rep movsb ; f3 a4 ; 0xfdd76
+ pop DS ; 1f ; 0xfdd78
+ mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdd79 pci32.c:414
+ jo short 0dd76h ; 70 f3 ; 0xfdd81
+ add byte [bx+si], al ; 00 00 ; 0xfdd83
+ mov es, [di-010h] ; 8e 45 f0 ; 0xfdd85
+ db 066h, 026h, 089h, 003h
+ ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfdd88
+ jmp short 0dd9eh ; eb 10 ; 0xfdd8c pci32.c:417
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd8e pci32.c:420
+ xor ah, ah ; 30 e4 ; 0xfdd91
+ or ah, 081h ; 80 cc 81 ; 0xfdd93
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd96
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd9a pci32.c:421
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdd9e pci32.c:423
+ pop di ; 5f ; 0xfdda1
+ pop si ; 5e ; 0xfdda2
+ pop bx ; 5b ; 0xfdda3
+ pop bp ; 5d ; 0xfdda4
+ retn ; c3 ; 0xfdda5
+
+ ; Padding 0x2 bytes at 0xfdda6
+ times 2 db 0
+
+section BIOS32CONST progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32CONST2 progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32_DATA progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+ ; Padding 0x258 bytes at 0xfdda8
+ times 600 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:247
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:248
+ ; 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:250
+ out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:251
+ retn ; c3 ; 0xfe038 orgs.asm:252
+ ; 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:259
+ mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:260
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:261
+ loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:262
+ retn ; c3 ; 0xfe043 orgs.asm:263
+ ; 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:271
+ mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:272
+ out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:273
+ ; 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:276
+ mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:277
+ jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:278
+ ; 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:287
+ jmp short 0e064h ; eb 06 ; 0xfe05c orgs.asm:298
+ mov AL, strict byte 001h ; b0 01 ; 0xfe05e orgs.asm:304
+ out strict byte 092h, AL ; e6 92 ; 0xfe060 orgs.asm:305
+ jmp short 0e062h ; eb fe ; 0xfe062 orgs.asm:306
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe064 orgs.asm:311
+ out strict byte 070h, AL ; e6 70 ; 0xfe066 orgs.asm:312
+ in AL, strict byte 071h ; e4 71 ; 0xfe068 orgs.asm:313
+ xchg ah, al ; 86 c4 ; 0xfe06a orgs.asm:316
+ in AL, strict byte 064h ; e4 64 ; 0xfe06c orgs.asm:320
+ test AL, strict byte 004h ; a8 04 ; 0xfe06e orgs.asm:321
+ je short 0e085h ; 74 13 ; 0xfe070 orgs.asm:322
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe072 orgs.asm:325
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfe074 orgs.asm:326
+ jne short 0e085h ; 75 0d ; 0xfe076 orgs.asm:327
+ mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe078 orgs.asm:333
+ cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe07d orgs.asm:334
+ jne short 0e05eh ; 75 d9 ; 0xfe083 orgs.asm:335
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe085 orgs.asm:339
+ out strict byte 070h, AL ; e6 70 ; 0xfe087 orgs.asm:340
+ mov AL, strict byte 000h ; b0 00 ; 0xfe089 orgs.asm:341
+ out strict byte 071h, AL ; e6 71 ; 0xfe08b orgs.asm:342
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe08d orgs.asm:346
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe08f orgs.asm:347
+ je short 0e0a5h ; 74 12 ; 0xfe091 orgs.asm:348
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe093 orgs.asm:349
+ je short 0e0a5h ; 74 0e ; 0xfe095 orgs.asm:350
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfe097 orgs.asm:352
+ out strict byte 00dh, AL ; e6 0d ; 0xfe099 orgs.asm:355
+ out strict byte 0dah, AL ; e6 da ; 0xfe09b orgs.asm:356
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe09d orgs.asm:359
+ out strict byte 0d6h, AL ; e6 d6 ; 0xfe09f orgs.asm:360
+ mov AL, strict byte 000h ; b0 00 ; 0xfe0a1 orgs.asm:361
+ out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a3 orgs.asm:362
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe0a5 orgs.asm:366
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfe0a7 orgs.asm:367
+ je short 0e0c3h ; 74 18 ; 0xfe0a9 orgs.asm:368
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0ab orgs.asm:370
+ jnc short 0e0c3h ; 73 14 ; 0xfe0ad orgs.asm:371
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe0af orgs.asm:372
+ jne short 0e0b6h ; 75 03 ; 0xfe0b1 orgs.asm:373
+ jmp near 0e350h ; e9 9a 02 ; 0xfe0b3 orgs.asm:374
+ mov sp, 00400h ; bc 00 04 ; 0xfe0b6 orgs.asm:377
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfe0b9 orgs.asm:379
+ je short 0e044h ; 74 87 ; 0xfe0bb orgs.asm:380
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0bd orgs.asm:382
+ je short 0e04ah ; 74 89 ; 0xfe0bf orgs.asm:383
+ jmp short 0e0c3h ; eb 00 ; 0xfe0c1 orgs.asm:387
+ ; disGetNextSymbol 0xfe0c3 LB 0x1f3d -> off=0x0 cb=00000000000001f2 uValue=00000000000f00c3 'normal_post'
+normal_post: ; 0xfe0c3 LB 0x1f2
+ mov ax, 07800h ; b8 00 78 ; 0xfe0c3 orgs.asm:396
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xfe0c6 orgs.asm:397
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe0c8 orgs.asm:398
+ mov ds, ax ; 8e d8 ; 0xfe0ca orgs.asm:399
+ mov ss, ax ; 8e d0 ; 0xfe0cc orgs.asm:400
+ mov es, ax ; 8e c0 ; 0xfe0ce orgs.asm:404
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0d0 orgs.asm:405
+ cld ; fc ; 0xfe0d2 orgs.asm:406
+ mov cx, 00239h ; b9 39 02 ; 0xfe0d3 orgs.asm:407
+ rep stosw ; f3 ab ; 0xfe0d6 orgs.asm:408
+ inc di ; 47 ; 0xfe0d8 orgs.asm:409
+ inc di ; 47 ; 0xfe0d9 orgs.asm:410
+ mov cx, 005c6h ; b9 c6 05 ; 0xfe0da orgs.asm:411
+ rep stosw ; f3 ab ; 0xfe0dd orgs.asm:412
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0df orgs.asm:416
+ add bx, 01000h ; 81 c3 00 10 ; 0xfe0e1 orgs.asm:418
+ cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0e5 orgs.asm:419
+ jnc short 0e0f6h ; 73 0b ; 0xfe0e9 orgs.asm:420
+ mov es, bx ; 8e c3 ; 0xfe0eb orgs.asm:421
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0ed orgs.asm:422
+ mov cx, 08000h ; b9 00 80 ; 0xfe0ef orgs.asm:423
+ rep stosw ; f3 ab ; 0xfe0f2 orgs.asm:424
+ jmp short 0e0e1h ; eb eb ; 0xfe0f4 orgs.asm:425
+ mov es, bx ; 8e c3 ; 0xfe0f6 orgs.asm:427
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0f8 orgs.asm:428
+ mov cx, 07ff8h ; b9 f8 7f ; 0xfe0fa orgs.asm:429
+ rep stosw ; f3 ab ; 0xfe0fd orgs.asm:430
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0ff orgs.asm:431
+ push CS ; 0e ; 0xfe101 orgs.asm:113
+ pop DS ; 1f ; 0xfe102 orgs.asm:114
+ cld ; fc ; 0xfe103 orgs.asm:115
+ call 01762h ; e8 5b 36 ; 0xfe104 orgs.asm:435
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe107 orgs.asm:442
+ mov ds, bx ; 8e db ; 0xfe109 orgs.asm:443
+ mov cx, strict word 00060h ; b9 60 00 ; 0xfe10b orgs.asm:444
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe10e orgs.asm:445
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe111 orgs.asm:446
+ call 0e039h ; e8 22 ff ; 0xfe114 orgs.asm:447
+ mov bx, 001a0h ; bb a0 01 ; 0xfe117 orgs.asm:452
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfe11a orgs.asm:453
+ call 0e039h ; e8 19 ff ; 0xfe11d orgs.asm:454
+ mov AL, strict byte 016h ; b0 16 ; 0xfe120 orgs.asm:457
+ out strict byte 070h, AL ; e6 70 ; 0xfe122 orgs.asm:458
+ in AL, strict byte 071h ; e4 71 ; 0xfe124 orgs.asm:459
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfe126 orgs.asm:460
+ mov AL, strict byte 015h ; b0 15 ; 0xfe128 orgs.asm:461
+ out strict byte 070h, AL ; e6 70 ; 0xfe12a orgs.asm:462
+ in AL, strict byte 071h ; e4 71 ; 0xfe12c orgs.asm:463
+ sub ax, strict byte 00001h ; 83 e8 01 ; 0xfe12e orgs.asm:464
+ mov word [00413h], ax ; a3 13 04 ; 0xfe131 orgs.asm:465
+ mov ax, 0e9dah ; b8 da e9 ; 0xfe134 orgs.asm:104
+ mov word [00018h], ax ; a3 18 00 ; 0xfe137 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe13a orgs.asm:106
+ mov word [0001ah], ax ; a3 1a 00 ; 0xfe13d orgs.asm:107
+ mov ax, 0f84dh ; b8 4d f8 ; 0xfe140 orgs.asm:104
+ mov word [00044h], ax ; a3 44 00 ; 0xfe143 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe146 orgs.asm:106
+ mov word [00046h], ax ; a3 46 00 ; 0xfe149 orgs.asm:107
+ mov ax, 0f841h ; b8 41 f8 ; 0xfe14c orgs.asm:104
+ mov word [00048h], ax ; a3 48 00 ; 0xfe14f orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe152 orgs.asm:106
+ mov word [0004ah], ax ; a3 4a 00 ; 0xfe155 orgs.asm:107
+ mov ax, 0f859h ; b8 59 f8 ; 0xfe158 orgs.asm:104
+ mov word [00054h], ax ; a3 54 00 ; 0xfe15b orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe15e orgs.asm:106
+ mov word [00056h], ax ; a3 56 00 ; 0xfe161 orgs.asm:107
+ mov ax, 0efd4h ; b8 d4 ef ; 0xfe164 orgs.asm:104
+ mov word [0005ch], ax ; a3 5c 00 ; 0xfe167 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe16a orgs.asm:106
+ mov word [0005eh], ax ; a3 5e 00 ; 0xfe16d orgs.asm:107
+ mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe170 orgs.asm:104
+ mov word [00060h], ax ; a3 60 00 ; 0xfe173 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe176 orgs.asm:106
+ mov word [00062h], ax ; a3 62 00 ; 0xfe179 orgs.asm:107
+ mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe17c orgs.asm:104
+ mov word [00064h], ax ; a3 64 00 ; 0xfe17f orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe182 orgs.asm:106
+ mov word [00066h], ax ; a3 66 00 ; 0xfe185 orgs.asm:107
+ mov ax, 0effbh ; b8 fb ef ; 0xfe188 orgs.asm:104
+ mov word [00070h], ax ; a3 70 00 ; 0xfe18b orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe18e orgs.asm:106
+ mov word [00072h], ax ; a3 72 00 ; 0xfe191 orgs.asm:107
+ call 0e794h ; e8 fd 05 ; 0xfe194 orgs.asm:481
+ mov ax, 0fe6eh ; b8 6e fe ; 0xfe197 orgs.asm:104
+ mov word [00068h], ax ; a3 68 00 ; 0xfe19a orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe19d orgs.asm:106
+ mov word [0006ah], ax ; a3 6a 00 ; 0xfe1a0 orgs.asm:107
+ mov ax, 0fea5h ; b8 a5 fe ; 0xfe1a3 orgs.asm:104
+ mov word [00020h], ax ; a3 20 00 ; 0xfe1a6 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1a9 orgs.asm:106
+ mov word [00022h], ax ; a3 22 00 ; 0xfe1ac orgs.asm:107
+ mov AL, strict byte 034h ; b0 34 ; 0xfe1af orgs.asm:492
+ out strict byte 043h, AL ; e6 43 ; 0xfe1b1 orgs.asm:493
+ mov AL, strict byte 000h ; b0 00 ; 0xfe1b3 orgs.asm:494
+ out strict byte 040h, AL ; e6 40 ; 0xfe1b5 orgs.asm:495
+ out strict byte 040h, AL ; e6 40 ; 0xfe1b7 orgs.asm:496
+ mov ax, 0f065h ; b8 65 f0 ; 0xfe1b9 orgs.asm:104
+ mov word [00040h], ax ; a3 40 00 ; 0xfe1bc orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1bf orgs.asm:106
+ mov word [00042h], ax ; a3 42 00 ; 0xfe1c2 orgs.asm:107
+ mov ax, 0e987h ; b8 87 e9 ; 0xfe1c5 orgs.asm:104
+ mov word [00024h], ax ; a3 24 00 ; 0xfe1c8 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1cb orgs.asm:106
+ mov word [00026h], ax ; a3 26 00 ; 0xfe1ce orgs.asm:107
+ mov ax, 0e82eh ; b8 2e e8 ; 0xfe1d1 orgs.asm:104
+ mov word [00058h], ax ; a3 58 00 ; 0xfe1d4 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1d7 orgs.asm:106
+ mov word [0005ah], ax ; a3 5a 00 ; 0xfe1da orgs.asm:107
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe1dd orgs.asm:505
+ mov ds, ax ; 8e d8 ; 0xfe1df orgs.asm:506
+ mov AL, strict byte 010h ; b0 10 ; 0xfe1e1 orgs.asm:507
+ mov byte [00496h], AL ; a2 96 04 ; 0xfe1e3 orgs.asm:508
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1e6 orgs.asm:510
+ mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1e9 orgs.asm:511
+ mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1ed orgs.asm:512
+ mov word [00480h], bx ; 89 1e 80 04 ; 0xfe1f1 orgs.asm:513
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe1f5 orgs.asm:514
+ mov word [00482h], bx ; 89 1e 82 04 ; 0xfe1f8 orgs.asm:515
+ mov AL, strict byte 014h ; b0 14 ; 0xfe1fc orgs.asm:518
+ out strict byte 070h, AL ; e6 70 ; 0xfe1fe orgs.asm:519
+ in AL, strict byte 071h ; e4 71 ; 0xfe200 orgs.asm:520
+ mov byte [00410h], AL ; a2 10 04 ; 0xfe202 orgs.asm:521
+ push DS ; 1e ; 0xfe205 orgs.asm:523
+ push CS ; 0e ; 0xfe206 orgs.asm:113
+ pop DS ; 1f ; 0xfe207 orgs.asm:114
+ cld ; fc ; 0xfe208 orgs.asm:115
+ mov ax, 0c000h ; b8 00 c0 ; 0xfe209 orgs.asm:528
+ mov dx, 0c800h ; ba 00 c8 ; 0xfe20c orgs.asm:529
+ call 01600h ; e8 ee 33 ; 0xfe20f orgs.asm:530
+ call 04e2bh ; e8 16 6c ; 0xfe212 orgs.asm:533
+ pop DS ; 1f ; 0xfe215 orgs.asm:534
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe216 orgs.asm:104
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe219 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe21c orgs.asm:106
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe21f orgs.asm:107
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe222 orgs.asm:538
+ mov ds, ax ; 8e d8 ; 0xfe224 orgs.asm:539
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe226 orgs.asm:540
+ mov CL, strict byte 014h ; b1 14 ; 0xfe228 orgs.asm:541
+ mov dx, 00378h ; ba 78 03 ; 0xfe22a orgs.asm:542
+ call 0ed0ah ; e8 da 0a ; 0xfe22d orgs.asm:543
+ mov dx, 00278h ; ba 78 02 ; 0xfe230 orgs.asm:544
+ call 0ed0ah ; e8 d4 0a ; 0xfe233 orgs.asm:545
+ push cx ; 51 ; 0xfe236 orgs.asm:213
+ mov CL, strict byte 00eh ; b1 0e ; 0xfe237 orgs.asm:214
+ sal bx, CL ; d3 e3 ; 0xfe239 orgs.asm:215
+ pop cx ; 59 ; 0xfe23b orgs.asm:216
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe23c orgs.asm:547
+ and ax, 03fffh ; 25 ff 3f ; 0xfe23f orgs.asm:548
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe242 orgs.asm:549
+ mov word [00410h], ax ; a3 10 04 ; 0xfe244 orgs.asm:550
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe247 orgs.asm:104
+ mov word [0002ch], ax ; a3 2c 00 ; 0xfe24a orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe24d orgs.asm:106
+ mov word [0002eh], ax ; a3 2e 00 ; 0xfe250 orgs.asm:107
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe253 orgs.asm:104
+ mov word [00030h], ax ; a3 30 00 ; 0xfe256 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe259 orgs.asm:106
+ mov word [00032h], ax ; a3 32 00 ; 0xfe25c orgs.asm:107
+ mov ax, 0e739h ; b8 39 e7 ; 0xfe25f orgs.asm:104
+ mov word [00050h], ax ; a3 50 00 ; 0xfe262 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe265 orgs.asm:106
+ mov word [00052h], ax ; a3 52 00 ; 0xfe268 orgs.asm:107
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe26b orgs.asm:556
+ mov CL, strict byte 00ah ; b1 0a ; 0xfe26d orgs.asm:557
+ mov dx, 003f8h ; ba f8 03 ; 0xfe26f orgs.asm:558
+ call 0ed28h ; e8 b3 0a ; 0xfe272 orgs.asm:559
+ mov dx, 002f8h ; ba f8 02 ; 0xfe275 orgs.asm:560
+ call 0ed28h ; e8 ad 0a ; 0xfe278 orgs.asm:561
+ mov dx, 003e8h ; ba e8 03 ; 0xfe27b orgs.asm:562
+ call 0ed28h ; e8 a7 0a ; 0xfe27e orgs.asm:563
+ mov dx, 002e8h ; ba e8 02 ; 0xfe281 orgs.asm:564
+ call 0ed28h ; e8 a1 0a ; 0xfe284 orgs.asm:565
+ push cx ; 51 ; 0xfe287 orgs.asm:213
+ mov CL, strict byte 009h ; b1 09 ; 0xfe288 orgs.asm:214
+ sal bx, CL ; d3 e3 ; 0xfe28a orgs.asm:215
+ pop cx ; 59 ; 0xfe28c orgs.asm:216
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe28d orgs.asm:567
+ and ax, 0f1ffh ; 25 ff f1 ; 0xfe290 orgs.asm:568
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe293 orgs.asm:569
+ mov word [00410h], ax ; a3 10 04 ; 0xfe295 orgs.asm:570
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe298 orgs.asm:104
+ mov word [00128h], ax ; a3 28 01 ; 0xfe29b orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe29e orgs.asm:106
+ mov word [0012ah], ax ; a3 2a 01 ; 0xfe2a1 orgs.asm:107
+ mov ax, 0f8f1h ; b8 f1 f8 ; 0xfe2a4 orgs.asm:104
+ mov word [001c0h], ax ; a3 c0 01 ; 0xfe2a7 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2aa orgs.asm:106
+ mov word [001c2h], ax ; a3 c2 01 ; 0xfe2ad orgs.asm:107
+ call 0ede3h ; e8 30 0b ; 0xfe2b0 orgs.asm:576
+ jmp short 0e303h ; eb 4e ; 0xfe2b3 orgs.asm:578
+ ; disGetNextSymbol 0xfe2b5 LB 0x1d4b -> off=0x0 cb=000000000000000e uValue=00000000000f02b5 'biosorg_check_before_or_at_0E2C1h'
+biosorg_check_before_or_at_0E2C1h: ; 0xfe2b5 LB 0xe
+ times 0xc 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:113
+ pop DS ; 1f ; 0xfe2c4 orgs.asm:114
+ cld ; fc ; 0xfe2c5 orgs.asm:115
+ call 0171dh ; e8 54 34 ; 0xfe2c6 orgs.asm:587
+ iret ; cf ; 0xfe2c9 orgs.asm:588
+ ; 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:591
+ call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:592
+ int 002h ; cd 02 ; 0xfe2cf orgs.asm:593
+ iret ; cf ; 0xfe2d1 orgs.asm:594
+ ; 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:599
+ mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:600
+ mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:602
+ mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:603
+ mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:604
+ mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:605
+ mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:606
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:607
+ mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:608
+ mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:104
+ mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:106
+ mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:107
+ mov ax, 0f8dfh ; b8 df f8 ; 0xfe2f6 orgs.asm:104
+ mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:106
+ mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:107
+ retn ; c3 ; 0xfe302 orgs.asm:613
+ mov ax, 0f8a5h ; b8 a5 f8 ; 0xfe303 orgs.asm:104
+ mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:106
+ mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:107
+ mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:104
+ mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:106
+ mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:107
+ call 0e76fh ; e8 51 04 ; 0xfe31b orgs.asm:625
+ push CS ; 0e ; 0xfe31e orgs.asm:113
+ pop DS ; 1f ; 0xfe31f orgs.asm:114
+ cld ; fc ; 0xfe320 orgs.asm:115
+ call 01cabh ; e8 87 39 ; 0xfe321 orgs.asm:639
+ call 021cfh ; e8 a8 3e ; 0xfe324 orgs.asm:640
+ sti ; fb ; 0xfe327 orgs.asm:647
+ call 0916eh ; e8 43 ae ; 0xfe328 orgs.asm:648
+ cli ; fa ; 0xfe32b orgs.asm:649
+ call 08056h ; e8 27 9d ; 0xfe32c orgs.asm:654
+ call 0ed4ch ; e8 1a 0a ; 0xfe32f orgs.asm:658
+ call 0e2d2h ; e8 9d ff ; 0xfe332 orgs.asm:661
+ push CS ; 0e ; 0xfe335 orgs.asm:113
+ pop DS ; 1f ; 0xfe336 orgs.asm:114
+ cld ; fc ; 0xfe337 orgs.asm:115
+ mov ax, 0c800h ; b8 00 c8 ; 0xfe338 orgs.asm:665
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe33b orgs.asm:666
+ call 01600h ; e8 bf 32 ; 0xfe33e orgs.asm:667
+ call 01786h ; e8 42 34 ; 0xfe341 orgs.asm:681
+ call 03bf9h ; e8 b2 58 ; 0xfe344 orgs.asm:684
+ sti ; fb ; 0xfe347 orgs.asm:687
+ int 019h ; cd 19 ; 0xfe348 orgs.asm:688
+ sti ; fb ; 0xfe34a orgs.asm:690
+ hlt ; f4 ; 0xfe34b orgs.asm:692
+ jmp short 0e34bh ; eb fd ; 0xfe34c orgs.asm:693
+ cli ; fa ; 0xfe34e orgs.asm:694
+ hlt ; f4 ; 0xfe34f orgs.asm:695
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe350 orgs.asm:704
+ mov ds, ax ; 8e d8 ; 0xfe353 orgs.asm:705
+ mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe355 orgs.asm:707
+ mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe359 orgs.asm:708
+ in AL, strict byte 092h ; e4 92 ; 0xfe35d orgs.asm:710
+ and AL, strict byte 0fdh ; 24 fd ; 0xfe35f orgs.asm:711
+ out strict byte 092h, AL ; e6 92 ; 0xfe361 orgs.asm:712
+ lidt [cs:0eff5h] ; 2e 0f 01 1e f5 ef ; 0xfe363 orgs.asm:714
+ pop DS ; 1f ; 0xfe369 orgs.asm:716
+ pop ES ; 07 ; 0xfe36a orgs.asm:717
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfe36b orgs.asm:719
+ in AL, strict byte 080h ; e4 80 ; 0xfe36d orgs.asm:721
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xfe36f orgs.asm:722
+ db 03ah, 0e0h
+ ; cmp ah, al ; 3a e0 ; 0xfe372 orgs.asm:724
+ popaw ; 61 ; 0xfe374 orgs.asm:726
+ sti ; fb ; 0xfe375 orgs.asm:727
+ retf 00002h ; ca 02 00 ; 0xfe376 orgs.asm:728
+ ; 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:738
+ ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=0000000000000170 uValue=00000000000f0401 'rom_fdpt'
+rom_fdpt: ; 0xfe401 LB 0x170
+ db 032h, 001h, 004h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 031h, 001h, 011h, 000h
+ db 067h, 002h, 004h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h
+ db 067h, 002h, 006h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h
+ db 0ach, 003h, 008h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h
+ db 0ach, 003h, 006h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h
+ db 067h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h
+ db 0ceh, 001h, 008h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 0ffh, 001h, 011h, 000h
+ db 0ddh, 002h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h
+ db 084h, 003h, 00fh, 000h, 000h, 0ffh, 0ffh, 000h, 008h, 000h, 000h, 000h, 085h, 003h, 011h, 000h
+ db 034h, 003h, 003h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 034h, 003h, 011h, 000h
+ db 057h, 003h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h
+ db 057h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h
+ db 032h, 001h, 008h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 03fh, 001h, 011h, 000h
+ db 0ddh, 002h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 064h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 079h, 002h, 011h, 000h
+ db 0d1h, 003h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h
+ db 0d1h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h
+ db 000h, 004h, 007h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ffh, 003h, 011h, 000h
+ db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h
+ db 0ddh, 002h, 007h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h
+ db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h
+ db 032h, 001h, 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 050h, 001h, 011h, 000h
+ ; disGetNextSymbol 0xfe571 LB 0x1a8f -> off=0x0 cb=0000000000000181 uValue=00000000000f0571 'biosorg_check_before_or_at_0E6F0h'
+biosorg_check_before_or_at_0E6F0h: ; 0xfe571 LB 0x181
+ times 0x17f db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler'
+int19_handler: ; 0xfe6f2 LB 0x3
+ jmp near 0f0aeh ; e9 b9 09 ; 0xfe6f2 orgs.asm:795
+ ; 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:868
+ push ES ; 06 ; 0xfe73a orgs.asm:869
+ push ax ; 50 ; 0xfe73b orgs.asm:109
+ push cx ; 51 ; 0xfe73c orgs.asm:110
+ push dx ; 52 ; 0xfe73d orgs.asm:111
+ push bx ; 53 ; 0xfe73e orgs.asm:112
+ push sp ; 54 ; 0xfe73f orgs.asm:113
+ push bp ; 55 ; 0xfe740 orgs.asm:114
+ push si ; 56 ; 0xfe741 orgs.asm:115
+ push di ; 57 ; 0xfe742 orgs.asm:116
+ push CS ; 0e ; 0xfe743 orgs.asm:113
+ pop DS ; 1f ; 0xfe744 orgs.asm:114
+ cld ; fc ; 0xfe745 orgs.asm:115
+ call 06398h ; e8 4f 7c ; 0xfe746 orgs.asm:872
+ pop di ; 5f ; 0xfe749 orgs.asm:126
+ pop si ; 5e ; 0xfe74a orgs.asm:127
+ pop bp ; 5d ; 0xfe74b orgs.asm:128
+ pop bx ; 5b ; 0xfe74c orgs.asm:129
+ pop bx ; 5b ; 0xfe74d orgs.asm:130
+ pop dx ; 5a ; 0xfe74e orgs.asm:131
+ pop cx ; 59 ; 0xfe74f orgs.asm:132
+ pop ax ; 58 ; 0xfe750 orgs.asm:133
+ pop ES ; 07 ; 0xfe751 orgs.asm:874
+ pop DS ; 1f ; 0xfe752 orgs.asm:875
+ iret ; cf ; 0xfe753 orgs.asm:876
+ push DS ; 1e ; 0xfe754 orgs.asm:884
+ push ES ; 06 ; 0xfe755 orgs.asm:885
+ push ax ; 50 ; 0xfe756 orgs.asm:109
+ push cx ; 51 ; 0xfe757 orgs.asm:110
+ push dx ; 52 ; 0xfe758 orgs.asm:111
+ push bx ; 53 ; 0xfe759 orgs.asm:112
+ push sp ; 54 ; 0xfe75a orgs.asm:113
+ push bp ; 55 ; 0xfe75b orgs.asm:114
+ push si ; 56 ; 0xfe75c orgs.asm:115
+ push di ; 57 ; 0xfe75d orgs.asm:116
+ push CS ; 0e ; 0xfe75e orgs.asm:113
+ pop DS ; 1f ; 0xfe75f orgs.asm:114
+ cld ; fc ; 0xfe760 orgs.asm:115
+ call 016bch ; e8 58 2f ; 0xfe761 orgs.asm:888
+ pop di ; 5f ; 0xfe764 orgs.asm:126
+ pop si ; 5e ; 0xfe765 orgs.asm:127
+ pop bp ; 5d ; 0xfe766 orgs.asm:128
+ pop bx ; 5b ; 0xfe767 orgs.asm:129
+ pop bx ; 5b ; 0xfe768 orgs.asm:130
+ pop dx ; 5a ; 0xfe769 orgs.asm:131
+ pop cx ; 59 ; 0xfe76a orgs.asm:132
+ pop ax ; 58 ; 0xfe76b orgs.asm:133
+ pop ES ; 07 ; 0xfe76c orgs.asm:890
+ pop DS ; 1f ; 0xfe76d orgs.asm:891
+ iret ; cf ; 0xfe76e orgs.asm:892
+ ; 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:897
+ out strict byte 020h, AL ; e6 20 ; 0xfe771 orgs.asm:898
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe773 orgs.asm:899
+ mov AL, strict byte 008h ; b0 08 ; 0xfe775 orgs.asm:900
+ out strict byte 021h, AL ; e6 21 ; 0xfe777 orgs.asm:901
+ mov AL, strict byte 070h ; b0 70 ; 0xfe779 orgs.asm:902
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe77b orgs.asm:903
+ mov AL, strict byte 004h ; b0 04 ; 0xfe77d orgs.asm:904
+ out strict byte 021h, AL ; e6 21 ; 0xfe77f orgs.asm:905
+ mov AL, strict byte 002h ; b0 02 ; 0xfe781 orgs.asm:906
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe783 orgs.asm:907
+ mov AL, strict byte 001h ; b0 01 ; 0xfe785 orgs.asm:908
+ out strict byte 021h, AL ; e6 21 ; 0xfe787 orgs.asm:909
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe789 orgs.asm:910
+ mov AL, strict byte 0b8h ; b0 b8 ; 0xfe78b orgs.asm:911
+ out strict byte 021h, AL ; e6 21 ; 0xfe78d orgs.asm:912
+ mov AL, strict byte 08fh ; b0 8f ; 0xfe78f orgs.asm:913
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe791 orgs.asm:914
+ retn ; c3 ; 0xfe793 orgs.asm:915
+ ; disGetNextSymbol 0xfe794 LB 0x186c -> off=0x0 cb=0000000000000057 uValue=00000000000f0794 'ebda_post'
+ebda_post: ; 0xfe794 LB 0x57
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe794 orgs.asm:104
+ mov word [00034h], ax ; a3 34 00 ; 0xfe797 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe79a orgs.asm:106
+ mov word [00036h], ax ; a3 36 00 ; 0xfe79d orgs.asm:107
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7a0 orgs.asm:104
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe7a3 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7a6 orgs.asm:106
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe7a9 orgs.asm:107
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7ac orgs.asm:104
+ mov word [001c8h], ax ; a3 c8 01 ; 0xfe7af orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7b2 orgs.asm:106
+ mov word [001cah], ax ; a3 ca 01 ; 0xfe7b5 orgs.asm:107
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7b8 orgs.asm:104
+ mov word [001cch], ax ; a3 cc 01 ; 0xfe7bb orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7be orgs.asm:106
+ mov word [001ceh], ax ; a3 ce 01 ; 0xfe7c1 orgs.asm:107
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7c4 orgs.asm:104
+ mov word [001dch], ax ; a3 dc 01 ; 0xfe7c7 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7ca orgs.asm:106
+ mov word [001deh], ax ; a3 de 01 ; 0xfe7cd orgs.asm:107
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7d0 orgs.asm:928
+ mov ds, ax ; 8e d8 ; 0xfe7d2 orgs.asm:929
+ mov ax, word [00413h] ; a1 13 04 ; 0xfe7d4 orgs.asm:930
+ mov cx, strict word 00040h ; b9 40 00 ; 0xfe7d7 orgs.asm:931
+ mul cx ; f7 e1 ; 0xfe7da orgs.asm:932
+ mov word [0040eh], ax ; a3 0e 04 ; 0xfe7dc orgs.asm:934
+ mov ds, ax ; 8e d8 ; 0xfe7df orgs.asm:936
+ mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7e1 orgs.asm:937
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7e6 orgs.asm:939
+ mov ds, ax ; 8e d8 ; 0xfe7e8 orgs.asm:940
+ retn ; c3 ; 0xfe7ea orgs.asm:941
+ ; disGetNextSymbol 0xfe7eb LB 0x1815 -> off=0x0 cb=0000000000000043 uValue=00000000000f07eb 'biosorg_check_before_or_at_0E82Ch'
+biosorg_check_before_or_at_0E82Ch: ; 0xfe7eb LB 0x43
+ times 0x41 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:952
+ pushfw ; 9c ; 0xfe82f orgs.asm:955
+ push ES ; 06 ; 0xfe830 orgs.asm:956
+ push DS ; 1e ; 0xfe831 orgs.asm:957
+ push ax ; 50 ; 0xfe832 orgs.asm:109
+ push cx ; 51 ; 0xfe833 orgs.asm:110
+ push dx ; 52 ; 0xfe834 orgs.asm:111
+ push bx ; 53 ; 0xfe835 orgs.asm:112
+ push sp ; 54 ; 0xfe836 orgs.asm:113
+ push bp ; 55 ; 0xfe837 orgs.asm:114
+ push si ; 56 ; 0xfe838 orgs.asm:115
+ push di ; 57 ; 0xfe839 orgs.asm:116
+ cmp ah, 000h ; 80 fc 00 ; 0xfe83a orgs.asm:960
+ je short 0e858h ; 74 19 ; 0xfe83d orgs.asm:961
+ cmp ah, 010h ; 80 fc 10 ; 0xfe83f orgs.asm:963
+ je short 0e858h ; 74 14 ; 0xfe842 orgs.asm:964
+ push CS ; 0e ; 0xfe844 orgs.asm:113
+ pop DS ; 1f ; 0xfe845 orgs.asm:114
+ cld ; fc ; 0xfe846 orgs.asm:115
+ call 0559dh ; e8 53 6d ; 0xfe847 orgs.asm:967
+ pop di ; 5f ; 0xfe84a orgs.asm:126
+ pop si ; 5e ; 0xfe84b orgs.asm:127
+ pop bp ; 5d ; 0xfe84c orgs.asm:128
+ pop bx ; 5b ; 0xfe84d orgs.asm:129
+ pop bx ; 5b ; 0xfe84e orgs.asm:130
+ pop dx ; 5a ; 0xfe84f orgs.asm:131
+ pop cx ; 59 ; 0xfe850 orgs.asm:132
+ pop ax ; 58 ; 0xfe851 orgs.asm:133
+ pop DS ; 1f ; 0xfe852 orgs.asm:969
+ pop ES ; 07 ; 0xfe853 orgs.asm:970
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe854 orgs.asm:971
+ iret ; cf ; 0xfe857 orgs.asm:972
+ mov bx, strict word 00040h ; bb 40 00 ; 0xfe858 orgs.asm:975
+ mov ds, bx ; 8e db ; 0xfe85b orgs.asm:976
+ cli ; fa ; 0xfe85d orgs.asm:978
+ mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe85e orgs.asm:979
+ cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe862 orgs.asm:980
+ jne short 0e86ch ; 75 04 ; 0xfe866 orgs.asm:981
+ sti ; fb ; 0xfe868 orgs.asm:982
+ nop ; 90 ; 0xfe869 orgs.asm:983
+ jmp short 0e85dh ; eb f1 ; 0xfe86a orgs.asm:991
+ push CS ; 0e ; 0xfe86c orgs.asm:113
+ pop DS ; 1f ; 0xfe86d orgs.asm:114
+ cld ; fc ; 0xfe86e orgs.asm:115
+ call 0559dh ; e8 2b 6d ; 0xfe86f orgs.asm:995
+ pop di ; 5f ; 0xfe872 orgs.asm:126
+ pop si ; 5e ; 0xfe873 orgs.asm:127
+ pop bp ; 5d ; 0xfe874 orgs.asm:128
+ pop bx ; 5b ; 0xfe875 orgs.asm:129
+ pop bx ; 5b ; 0xfe876 orgs.asm:130
+ pop dx ; 5a ; 0xfe877 orgs.asm:131
+ pop cx ; 59 ; 0xfe878 orgs.asm:132
+ pop ax ; 58 ; 0xfe879 orgs.asm:133
+ pop DS ; 1f ; 0xfe87a orgs.asm:997
+ pop ES ; 07 ; 0xfe87b orgs.asm:998
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe87c orgs.asm:999
+ iret ; cf ; 0xfe87f orgs.asm:1007
+ ; 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:1024
+ push ax ; 50 ; 0xfe988 orgs.asm:1025
+ mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:1026
+ out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:1027
+ in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:1029
+ push DS ; 1e ; 0xfe98f orgs.asm:1030
+ push ax ; 50 ; 0xfe990 orgs.asm:109
+ push cx ; 51 ; 0xfe991 orgs.asm:110
+ push dx ; 52 ; 0xfe992 orgs.asm:111
+ push bx ; 53 ; 0xfe993 orgs.asm:112
+ push sp ; 54 ; 0xfe994 orgs.asm:113
+ push bp ; 55 ; 0xfe995 orgs.asm:114
+ push si ; 56 ; 0xfe996 orgs.asm:115
+ push di ; 57 ; 0xfe997 orgs.asm:116
+ cld ; fc ; 0xfe998 orgs.asm:1032
+ mov AH, strict byte 04fh ; b4 4f ; 0xfe999 orgs.asm:1034
+ stc ; f9 ; 0xfe99b orgs.asm:1035
+ int 015h ; cd 15 ; 0xfe99c orgs.asm:1036
+ jnc short 0e9c7h ; 73 27 ; 0xfe99e orgs.asm:1037
+ sti ; fb ; 0xfe9a0 orgs.asm:1039
+ cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe9a1 orgs.asm:1042
+ jne short 0e9b0h ; 75 0b ; 0xfe9a3 orgs.asm:1043
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9a5 orgs.asm:1044
+ mov ds, ax ; 8e d8 ; 0xfe9a7 orgs.asm:1045
+ or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a9 orgs.asm:1046
+ jmp short 0e9c7h ; eb 17 ; 0xfe9ae orgs.asm:1047
+ cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9b0 orgs.asm:1050
+ jne short 0e9bfh ; 75 0b ; 0xfe9b2 orgs.asm:1051
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9b4 orgs.asm:1052
+ mov ds, ax ; 8e d8 ; 0xfe9b6 orgs.asm:1053
+ or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b8 orgs.asm:1054
+ jmp short 0e9c7h ; eb 08 ; 0xfe9bd orgs.asm:1055
+ push ES ; 06 ; 0xfe9bf orgs.asm:1058
+ push CS ; 0e ; 0xfe9c0 orgs.asm:113
+ pop DS ; 1f ; 0xfe9c1 orgs.asm:114
+ cld ; fc ; 0xfe9c2 orgs.asm:115
+ call 0510fh ; e8 49 67 ; 0xfe9c3 orgs.asm:1060
+ pop ES ; 07 ; 0xfe9c6 orgs.asm:1061
+ pop di ; 5f ; 0xfe9c7 orgs.asm:126
+ pop si ; 5e ; 0xfe9c8 orgs.asm:127
+ pop bp ; 5d ; 0xfe9c9 orgs.asm:128
+ pop bx ; 5b ; 0xfe9ca orgs.asm:129
+ pop bx ; 5b ; 0xfe9cb orgs.asm:130
+ pop dx ; 5a ; 0xfe9cc orgs.asm:131
+ pop cx ; 59 ; 0xfe9cd orgs.asm:132
+ pop ax ; 58 ; 0xfe9ce orgs.asm:133
+ pop DS ; 1f ; 0xfe9cf orgs.asm:1065
+ cli ; fa ; 0xfe9d0 orgs.asm:1066
+ call 0e034h ; e8 60 f6 ; 0xfe9d1 orgs.asm:1067
+ mov AL, strict byte 0aeh ; b0 ae ; 0xfe9d4 orgs.asm:1069
+ out strict byte 064h, AL ; e6 64 ; 0xfe9d6 orgs.asm:1070
+ pop ax ; 58 ; 0xfe9d8 orgs.asm:1071
+ iret ; cf ; 0xfe9d9 orgs.asm:1072
+ push ax ; 50 ; 0xfe9da orgs.asm:109
+ push cx ; 51 ; 0xfe9db orgs.asm:110
+ push dx ; 52 ; 0xfe9dc orgs.asm:111
+ push bx ; 53 ; 0xfe9dd orgs.asm:112
+ push sp ; 54 ; 0xfe9de orgs.asm:113
+ push bp ; 55 ; 0xfe9df orgs.asm:114
+ push si ; 56 ; 0xfe9e0 orgs.asm:115
+ push di ; 57 ; 0xfe9e1 orgs.asm:116
+ push ES ; 06 ; 0xfe9e2 orgs.asm:1081
+ push DS ; 1e ; 0xfe9e3 orgs.asm:1082
+ push CS ; 0e ; 0xfe9e4 orgs.asm:113
+ pop DS ; 1f ; 0xfe9e5 orgs.asm:114
+ cld ; fc ; 0xfe9e6 orgs.asm:115
+ call 068b8h ; e8 ce 7e ; 0xfe9e7 orgs.asm:1084
+ pop DS ; 1f ; 0xfe9ea orgs.asm:1085
+ pop ES ; 07 ; 0xfe9eb orgs.asm:1086
+ pop di ; 5f ; 0xfe9ec orgs.asm:126
+ pop si ; 5e ; 0xfe9ed orgs.asm:127
+ pop bp ; 5d ; 0xfe9ee orgs.asm:128
+ pop bx ; 5b ; 0xfe9ef orgs.asm:129
+ pop bx ; 5b ; 0xfe9f0 orgs.asm:130
+ pop dx ; 5a ; 0xfe9f1 orgs.asm:131
+ pop cx ; 59 ; 0xfe9f2 orgs.asm:132
+ pop ax ; 58 ; 0xfe9f3 orgs.asm:133
+ iret ; cf ; 0xfe9f4 orgs.asm:1088
+ ; 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:1095
+ ; 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:1104
+ jc short 0ec7ch ; 72 1c ; 0xfec5e orgs.asm:1105
+ cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1107
+ jnbe short 0ec7ch ; 77 17 ; 0xfec63 orgs.asm:1108
+ push ax ; 50 ; 0xfec65 orgs.asm:109
+ push cx ; 51 ; 0xfec66 orgs.asm:110
+ push dx ; 52 ; 0xfec67 orgs.asm:111
+ push bx ; 53 ; 0xfec68 orgs.asm:112
+ push sp ; 54 ; 0xfec69 orgs.asm:113
+ push bp ; 55 ; 0xfec6a orgs.asm:114
+ push si ; 56 ; 0xfec6b orgs.asm:115
+ push di ; 57 ; 0xfec6c orgs.asm:116
+ push ES ; 06 ; 0xfec6d orgs.asm:1111
+ push DS ; 1e ; 0xfec6e orgs.asm:1112
+ push CS ; 0e ; 0xfec6f orgs.asm:113
+ pop DS ; 1f ; 0xfec70 orgs.asm:114
+ cld ; fc ; 0xfec71 orgs.asm:115
+ push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfec72 orgs.asm:96
+ jmp near 03c3ch ; e9 c2 4f ; 0xfec77 orgs.asm:97
+ ; 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:1120
+ push ax ; 50 ; 0xfec7d orgs.asm:1121
+ push bx ; 53 ; 0xfec7e orgs.asm:1122
+ push cx ; 51 ; 0xfec7f orgs.asm:1123
+ push dx ; 52 ; 0xfec80 orgs.asm:1124
+ call 03c10h ; e8 8c 4f ; 0xfec81 orgs.asm:1127
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfec84 orgs.asm:1128
+ je short 0ecbfh ; 74 37 ; 0xfec86 orgs.asm:1129
+ call 03c26h ; e8 9b 4f ; 0xfec88 orgs.asm:1132
+ pop dx ; 5a ; 0xfec8b orgs.asm:1133
+ push dx ; 52 ; 0xfec8c orgs.asm:1134
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec8d orgs.asm:1135
+ jne short 0ecabh ; 75 1a ; 0xfec8f orgs.asm:1136
+ pop dx ; 5a ; 0xfec91 orgs.asm:1138
+ pop cx ; 59 ; 0xfec92 orgs.asm:1139
+ pop bx ; 5b ; 0xfec93 orgs.asm:1140
+ pop ax ; 58 ; 0xfec94 orgs.asm:1141
+ pop ES ; 07 ; 0xfec95 orgs.asm:1142
+ push ax ; 50 ; 0xfec96 orgs.asm:109
+ push cx ; 51 ; 0xfec97 orgs.asm:110
+ push dx ; 52 ; 0xfec98 orgs.asm:111
+ push bx ; 53 ; 0xfec99 orgs.asm:112
+ push sp ; 54 ; 0xfec9a orgs.asm:113
+ push bp ; 55 ; 0xfec9b orgs.asm:114
+ push si ; 56 ; 0xfec9c orgs.asm:115
+ push di ; 57 ; 0xfec9d orgs.asm:116
+ push ES ; 06 ; 0xfec9e orgs.asm:1145
+ push DS ; 1e ; 0xfec9f orgs.asm:1146
+ push CS ; 0e ; 0xfeca0 orgs.asm:113
+ pop DS ; 1f ; 0xfeca1 orgs.asm:114
+ cld ; fc ; 0xfeca2 orgs.asm:115
+ push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfeca3 orgs.asm:96
+ jmp near 04300h ; e9 55 56 ; 0xfeca8 orgs.asm:97
+ and dl, 0e0h ; 80 e2 e0 ; 0xfecab orgs.asm:1152
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfecae orgs.asm:1153
+ jne short 0ecbfh ; 75 0d ; 0xfecb0 orgs.asm:1154
+ pop dx ; 5a ; 0xfecb2 orgs.asm:1156
+ pop cx ; 59 ; 0xfecb3 orgs.asm:1157
+ pop bx ; 5b ; 0xfecb4 orgs.asm:1158
+ pop ax ; 58 ; 0xfecb5 orgs.asm:1159
+ pop ES ; 07 ; 0xfecb6 orgs.asm:1160
+ push ax ; 50 ; 0xfecb7 orgs.asm:1162
+ push cx ; 51 ; 0xfecb8 orgs.asm:1163
+ push dx ; 52 ; 0xfecb9 orgs.asm:1164
+ push bx ; 53 ; 0xfecba orgs.asm:1165
+ db 0feh, 0cah
+ ; dec dl ; fe ca ; 0xfecbb orgs.asm:1167
+ jmp short 0ecc8h ; eb 09 ; 0xfecbd orgs.asm:1168
+ pop dx ; 5a ; 0xfecbf orgs.asm:1171
+ pop cx ; 59 ; 0xfecc0 orgs.asm:1172
+ pop bx ; 5b ; 0xfecc1 orgs.asm:1173
+ pop ax ; 58 ; 0xfecc2 orgs.asm:1174
+ pop ES ; 07 ; 0xfecc3 orgs.asm:1175
+ ; disGetNextSymbol 0xfecc4 LB 0x133c -> off=0x0 cb=0000000000000004 uValue=00000000000f0cc4 'int13_noeltorito'
+int13_noeltorito: ; 0xfecc4 LB 0x4
+ push ax ; 50 ; 0xfecc4 orgs.asm:1178
+ push cx ; 51 ; 0xfecc5 orgs.asm:1179
+ push dx ; 52 ; 0xfecc6 orgs.asm:1180
+ push bx ; 53 ; 0xfecc7 orgs.asm:1181
+ ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000016 uValue=00000000000f0cc8 'int13_legacy'
+int13_legacy: ; 0xfecc8 LB 0x16
+ push dx ; 52 ; 0xfecc8 orgs.asm:1183
+ push bp ; 55 ; 0xfecc9 orgs.asm:1184
+ push si ; 56 ; 0xfecca orgs.asm:1185
+ push di ; 57 ; 0xfeccb orgs.asm:1186
+ push ES ; 06 ; 0xfeccc orgs.asm:1187
+ push DS ; 1e ; 0xfeccd orgs.asm:1188
+ push CS ; 0e ; 0xfecce orgs.asm:113
+ pop DS ; 1f ; 0xfeccf orgs.asm:114
+ cld ; fc ; 0xfecd0 orgs.asm:115
+ test dl, 080h ; f6 c2 80 ; 0xfecd1 orgs.asm:1193
+ jne short 0ecdeh ; 75 08 ; 0xfecd4 orgs.asm:1194
+ push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfecd6 orgs.asm:96
+ jmp near 03188h ; e9 aa 44 ; 0xfecdb orgs.asm:97
+ ; 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:1199
+ jc short 0ecf2h ; 72 0f ; 0xfece1 orgs.asm:1200
+ shr ebx, 010h ; 66 c1 eb 10 ; 0xfece3 orgs.asm:1206
+ push bx ; 53 ; 0xfece7 orgs.asm:1207
+ call 04758h ; e8 6d 5a ; 0xfece8 orgs.asm:1208
+ pop bx ; 5b ; 0xfeceb orgs.asm:1209
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfecec orgs.asm:1210
+ jmp short 0ecffh ; eb 0d ; 0xfecf0 orgs.asm:1212
+ ; 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:1216
+ jnbe short 0ecfch ; 77 05 ; 0xfecf5 orgs.asm:1217
+ call 05c9ah ; e8 a0 6f ; 0xfecf7 orgs.asm:1218
+ jmp short 0ecffh ; eb 03 ; 0xfecfa orgs.asm:1219
+ call 060f0h ; e8 f1 73 ; 0xfecfc orgs.asm:1222
+ ; disGetNextSymbol 0xfecff LB 0x1301 -> off=0x0 cb=000000000000000b uValue=00000000000f0cff 'int13_out'
+int13_out: ; 0xfecff LB 0xb
+ pop DS ; 1f ; 0xfecff orgs.asm:1225
+ pop ES ; 07 ; 0xfed00 orgs.asm:1226
+ pop di ; 5f ; 0xfed01 orgs.asm:126
+ pop si ; 5e ; 0xfed02 orgs.asm:127
+ pop bp ; 5d ; 0xfed03 orgs.asm:128
+ pop bx ; 5b ; 0xfed04 orgs.asm:129
+ pop bx ; 5b ; 0xfed05 orgs.asm:130
+ pop dx ; 5a ; 0xfed06 orgs.asm:131
+ pop cx ; 59 ; 0xfed07 orgs.asm:132
+ pop ax ; 58 ; 0xfed08 orgs.asm:133
+ iret ; cf ; 0xfed09 orgs.asm:1228
+ ; disGetNextSymbol 0xfed0a LB 0x12f6 -> off=0x0 cb=000000000000001e uValue=00000000000f0d0a 'detect_parport'
+detect_parport: ; 0xfed0a LB 0x1e
+ push dx ; 52 ; 0xfed0a orgs.asm:1235
+ inc dx ; 42 ; 0xfed0b orgs.asm:1236
+ inc dx ; 42 ; 0xfed0c orgs.asm:1237
+ in AL, DX ; ec ; 0xfed0d orgs.asm:1238
+ and AL, strict byte 0dfh ; 24 df ; 0xfed0e orgs.asm:1239
+ out DX, AL ; ee ; 0xfed10 orgs.asm:1240
+ pop dx ; 5a ; 0xfed11 orgs.asm:1241
+ mov AL, strict byte 0aah ; b0 aa ; 0xfed12 orgs.asm:1242
+ out DX, AL ; ee ; 0xfed14 orgs.asm:1243
+ in AL, DX ; ec ; 0xfed15 orgs.asm:1244
+ cmp AL, strict byte 0aah ; 3c aa ; 0xfed16 orgs.asm:1245
+ jne short 0ed27h ; 75 0d ; 0xfed18 orgs.asm:1246
+ push bx ; 53 ; 0xfed1a orgs.asm:1248
+ sal bx, 1 ; d1 e3 ; 0xfed1b orgs.asm:1249
+ mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed1d orgs.asm:1250
+ pop bx ; 5b ; 0xfed21 orgs.asm:1251
+ mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed22 orgs.asm:1252
+ inc bx ; 43 ; 0xfed26 orgs.asm:1253
+ retn ; c3 ; 0xfed27 orgs.asm:1255
+ ; disGetNextSymbol 0xfed28 LB 0x12d8 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d28 'detect_serial'
+detect_serial: ; 0xfed28 LB 0x24
+ push dx ; 52 ; 0xfed28 orgs.asm:1262
+ inc dx ; 42 ; 0xfed29 orgs.asm:1263
+ mov AL, strict byte 002h ; b0 02 ; 0xfed2a orgs.asm:1264
+ out DX, AL ; ee ; 0xfed2c orgs.asm:1265
+ in AL, DX ; ec ; 0xfed2d orgs.asm:1266
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed2e orgs.asm:1267
+ jne short 0ed4ah ; 75 18 ; 0xfed30 orgs.asm:1268
+ inc dx ; 42 ; 0xfed32 orgs.asm:1270
+ in AL, DX ; ec ; 0xfed33 orgs.asm:1271
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed34 orgs.asm:1272
+ jne short 0ed4ah ; 75 12 ; 0xfed36 orgs.asm:1273
+ dec dx ; 4a ; 0xfed38 orgs.asm:1275
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfed39 orgs.asm:1276
+ pop dx ; 5a ; 0xfed3b orgs.asm:1277
+ push bx ; 53 ; 0xfed3c orgs.asm:1278
+ sal bx, 1 ; d1 e3 ; 0xfed3d orgs.asm:1279
+ mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed3f orgs.asm:1280
+ pop bx ; 5b ; 0xfed43 orgs.asm:1281
+ mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed44 orgs.asm:1282
+ inc bx ; 43 ; 0xfed48 orgs.asm:1283
+ retn ; c3 ; 0xfed49 orgs.asm:1284
+ pop dx ; 5a ; 0xfed4a orgs.asm:1287
+ retn ; c3 ; 0xfed4b orgs.asm:1288
+ ; 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:1298
+ mov ds, ax ; 8e d8 ; 0xfed4e orgs.asm:1299
+ mov AL, strict byte 000h ; b0 00 ; 0xfed50 orgs.asm:1303
+ mov byte [0043eh], AL ; a2 3e 04 ; 0xfed52 orgs.asm:1304
+ mov byte [0043fh], AL ; a2 3f 04 ; 0xfed55 orgs.asm:1305
+ mov byte [00440h], AL ; a2 40 04 ; 0xfed58 orgs.asm:1306
+ mov byte [00441h], AL ; a2 41 04 ; 0xfed5b orgs.asm:1307
+ mov byte [00442h], AL ; a2 42 04 ; 0xfed5e orgs.asm:1308
+ mov byte [00443h], AL ; a2 43 04 ; 0xfed61 orgs.asm:1309
+ mov byte [00444h], AL ; a2 44 04 ; 0xfed64 orgs.asm:1310
+ mov byte [00445h], AL ; a2 45 04 ; 0xfed67 orgs.asm:1311
+ mov byte [00446h], AL ; a2 46 04 ; 0xfed6a orgs.asm:1312
+ mov byte [00447h], AL ; a2 47 04 ; 0xfed6d orgs.asm:1313
+ mov byte [00448h], AL ; a2 48 04 ; 0xfed70 orgs.asm:1314
+ mov byte [0048bh], AL ; a2 8b 04 ; 0xfed73 orgs.asm:1316
+ mov AL, strict byte 010h ; b0 10 ; 0xfed76 orgs.asm:1318
+ out strict byte 070h, AL ; e6 70 ; 0xfed78 orgs.asm:1319
+ in AL, strict byte 071h ; e4 71 ; 0xfed7a orgs.asm:1320
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfed7c orgs.asm:1321
+ shr al, 1 ; d0 e8 ; 0xfed7e orgs.asm:191
+ shr al, 1 ; d0 e8 ; 0xfed80 orgs.asm:194
+ shr al, 1 ; d0 e8 ; 0xfed82 orgs.asm:197
+ shr al, 1 ; d0 e8 ; 0xfed84 orgs.asm:200
+ je short 0ed8ch ; 74 04 ; 0xfed86 orgs.asm:1326
+ mov BL, strict byte 007h ; b3 07 ; 0xfed88 orgs.asm:1327
+ jmp short 0ed8eh ; eb 02 ; 0xfed8a orgs.asm:1328
+ mov BL, strict byte 000h ; b3 00 ; 0xfed8c orgs.asm:1331
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfed8e orgs.asm:1334
+ and AL, strict byte 00fh ; 24 0f ; 0xfed90 orgs.asm:1335
+ je short 0ed97h ; 74 03 ; 0xfed92 orgs.asm:1336
+ or bl, 070h ; 80 cb 70 ; 0xfed94 orgs.asm:1337
+ mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed97 orgs.asm:1339
+ mov AL, strict byte 000h ; b0 00 ; 0xfed9b orgs.asm:1342
+ mov byte [00490h], AL ; a2 90 04 ; 0xfed9d orgs.asm:1343
+ mov byte [00491h], AL ; a2 91 04 ; 0xfeda0 orgs.asm:1344
+ mov byte [00492h], AL ; a2 92 04 ; 0xfeda3 orgs.asm:1345
+ mov byte [00493h], AL ; a2 93 04 ; 0xfeda6 orgs.asm:1346
+ mov byte [00494h], AL ; a2 94 04 ; 0xfeda9 orgs.asm:1347
+ mov byte [00495h], AL ; a2 95 04 ; 0xfedac orgs.asm:1348
+ mov AL, strict byte 002h ; b0 02 ; 0xfedaf orgs.asm:1350
+ out strict byte 00ah, AL ; e6 0a ; 0xfedb1 orgs.asm:1351
+ mov ax, 0efc7h ; b8 c7 ef ; 0xfedb3 orgs.asm:104
+ mov word [00078h], ax ; a3 78 00 ; 0xfedb6 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedb9 orgs.asm:106
+ mov word [0007ah], ax ; a3 7a 00 ; 0xfedbc orgs.asm:107
+ mov ax, 0ec59h ; b8 59 ec ; 0xfedbf orgs.asm:104
+ mov word [00100h], ax ; a3 00 01 ; 0xfedc2 orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedc5 orgs.asm:106
+ mov word [00102h], ax ; a3 02 01 ; 0xfedc8 orgs.asm:107
+ mov ax, 0ef57h ; b8 57 ef ; 0xfedcb orgs.asm:104
+ mov word [00038h], ax ; a3 38 00 ; 0xfedce orgs.asm:105
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedd1 orgs.asm:106
+ mov word [0003ah], ax ; a3 3a 00 ; 0xfedd4 orgs.asm:107
+ retn ; c3 ; 0xfedd7 orgs.asm:1357
+ ; 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:1370
+ mov CL, strict byte 004h ; b1 04 ; 0xfedd9 orgs.asm:1371
+ sal ax, CL ; d3 e0 ; 0xfeddb orgs.asm:1372
+ shr al, CL ; d2 e8 ; 0xfeddd orgs.asm:1373
+ pop cx ; 59 ; 0xfeddf orgs.asm:1374
+ aad 00ah ; d5 0a ; 0xfede0 orgs.asm:1376
+ retn ; c3 ; 0xfede2 orgs.asm:1377
+ ; 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:1385
+ out strict byte 070h, AL ; e6 70 ; 0xfede5 orgs.asm:1386
+ in AL, strict byte 071h ; e4 71 ; 0xfede7 orgs.asm:1387
+ call 0edd8h ; e8 ec ff ; 0xfede9 orgs.asm:1388
+ test al, al ; 84 c0 ; 0xfedec orgs.asm:1389
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfedee orgs.asm:1390
+ mov dx, 01234h ; ba 34 12 ; 0xfedf0 orgs.asm:1391
+ mul dx ; f7 e2 ; 0xfedf3 orgs.asm:1392
+ db 08bh, 0c8h
+ ; mov cx, ax ; 8b c8 ; 0xfedf5 orgs.asm:1393
+ mov AL, strict byte 002h ; b0 02 ; 0xfedf7 orgs.asm:1396
+ out strict byte 070h, AL ; e6 70 ; 0xfedf9 orgs.asm:1397
+ in AL, strict byte 071h ; e4 71 ; 0xfedfb orgs.asm:1398
+ call 0edd8h ; e8 d8 ff ; 0xfedfd orgs.asm:1399
+ test al, al ; 84 c0 ; 0xfee00 orgs.asm:1400
+ je short 0ee0fh ; 74 0b ; 0xfee02 orgs.asm:1401
+ add cx, 04463h ; 81 c1 63 44 ; 0xfee04 orgs.asm:1403
+ adc dx, strict byte 00004h ; 83 d2 04 ; 0xfee08 orgs.asm:1404
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfee0b orgs.asm:1405
+ jne short 0ee04h ; 75 f5 ; 0xfee0d orgs.asm:1406
+ mov AL, strict byte 004h ; b0 04 ; 0xfee0f orgs.asm:1410
+ out strict byte 070h, AL ; e6 70 ; 0xfee11 orgs.asm:1411
+ in AL, strict byte 071h ; e4 71 ; 0xfee13 orgs.asm:1412
+ call 0edd8h ; e8 c0 ff ; 0xfee15 orgs.asm:1413
+ test al, al ; 84 c0 ; 0xfee18 orgs.asm:1414
+ je short 0ee28h ; 74 0c ; 0xfee1a orgs.asm:1415
+ add cx, 0076ch ; 81 c1 6c 07 ; 0xfee1c orgs.asm:1417
+ adc dx, 00100h ; 81 d2 00 01 ; 0xfee20 orgs.asm:1418
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfee24 orgs.asm:1419
+ jne short 0ee1ch ; 75 f4 ; 0xfee26 orgs.asm:1420
+ db 08ah, 0cdh
+ ; mov cl, ch ; 8a cd ; 0xfee28 orgs.asm:1423
+ db 08ah, 0eah
+ ; mov ch, dl ; 8a ea ; 0xfee2a orgs.asm:1424
+ db 08ah, 0d6h
+ ; mov dl, dh ; 8a d6 ; 0xfee2c orgs.asm:1425
+ db 032h, 0f6h
+ ; xor dh, dh ; 32 f6 ; 0xfee2e orgs.asm:1426
+ mov word [0046ch], cx ; 89 0e 6c 04 ; 0xfee30 orgs.asm:1427
+ mov word [0046eh], dx ; 89 16 6e 04 ; 0xfee34 orgs.asm:1428
+ mov byte [00470h], dh ; 88 36 70 04 ; 0xfee38 orgs.asm:1429
+ retn ; c3 ; 0xfee3c orgs.asm:1477
+ ; 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:1488
+ push dx ; 52 ; 0xfef58 orgs.asm:1489
+ mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1490
+ in AL, DX ; ec ; 0xfef5c orgs.asm:1491
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1492
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1493
+ je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1494
+ mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1495
+ mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1496
+ out DX, AL ; ee ; 0xfef68 orgs.asm:1497
+ mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1499
+ in AL, DX ; ec ; 0xfef6c orgs.asm:1500
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1501
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1502
+ jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1503
+ mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1506
+ in AL, DX ; ec ; 0xfef76 orgs.asm:1507
+ mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1508
+ in AL, DX ; ec ; 0xfef7a orgs.asm:1509
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1510
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1511
+ je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1512
+ push DS ; 1e ; 0xfef81 orgs.asm:1515
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1516
+ mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1517
+ call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1518
+ or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1520
+ pop DS ; 1f ; 0xfef8e orgs.asm:1521
+ pop dx ; 5a ; 0xfef8f orgs.asm:1522
+ pop ax ; 58 ; 0xfef90 orgs.asm:1523
+ iret ; cf ; 0xfef91 orgs.asm:1524
+ ; 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:1551
+ ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000001b uValue=00000000000f0fd4 'int17_handler'
+int17_handler: ; 0xfefd4 LB 0x1b
+ push DS ; 1e ; 0xfefd4 orgs.asm:1554
+ push ES ; 06 ; 0xfefd5 orgs.asm:1555
+ push ax ; 50 ; 0xfefd6 orgs.asm:109
+ push cx ; 51 ; 0xfefd7 orgs.asm:110
+ push dx ; 52 ; 0xfefd8 orgs.asm:111
+ push bx ; 53 ; 0xfefd9 orgs.asm:112
+ push sp ; 54 ; 0xfefda orgs.asm:113
+ push bp ; 55 ; 0xfefdb orgs.asm:114
+ push si ; 56 ; 0xfefdc orgs.asm:115
+ push di ; 57 ; 0xfefdd orgs.asm:116
+ push CS ; 0e ; 0xfefde orgs.asm:113
+ pop DS ; 1f ; 0xfefdf orgs.asm:114
+ cld ; fc ; 0xfefe0 orgs.asm:115
+ call 0720ah ; e8 26 82 ; 0xfefe1 orgs.asm:1558
+ pop di ; 5f ; 0xfefe4 orgs.asm:126
+ pop si ; 5e ; 0xfefe5 orgs.asm:127
+ pop bp ; 5d ; 0xfefe6 orgs.asm:128
+ pop bx ; 5b ; 0xfefe7 orgs.asm:129
+ pop bx ; 5b ; 0xfefe8 orgs.asm:130
+ pop dx ; 5a ; 0xfefe9 orgs.asm:131
+ pop cx ; 59 ; 0xfefea orgs.asm:132
+ pop ax ; 58 ; 0xfefeb orgs.asm:133
+ pop ES ; 07 ; 0xfefec orgs.asm:1560
+ pop DS ; 1f ; 0xfefed orgs.asm:1561
+ iret ; cf ; 0xfefee orgs.asm:1562
+ ; 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:1597
+ ; 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:1606
+ ; 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:1615
+ ; 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=000000000000000a uValue=00000000000f10a4 'biosorg_check_at_0F0A4h'
+biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0xa
+ push CS ; 0e ; 0xff0a4 orgs.asm:113
+ pop DS ; 1f ; 0xff0a5 orgs.asm:114
+ cld ; fc ; 0xff0a6 orgs.asm:115
+ call 01732h ; e8 88 26 ; 0xff0a7 orgs.asm:1630
+ sti ; fb ; 0xff0aa orgs.asm:1632
+ hlt ; f4 ; 0xff0ab orgs.asm:1634
+ jmp short 0f0abh ; eb fd ; 0xff0ac orgs.asm:1635
+ ; disGetNextSymbol 0xff0ae LB 0xf52 -> off=0x0 cb=000000000000007e uValue=00000000000f10ae 'int19_relocated'
+int19_relocated: ; 0xff0ae LB 0x7e
+ push CS ; 0e ; 0xff0ae orgs.asm:113
+ pop DS ; 1f ; 0xff0af orgs.asm:114
+ cld ; fc ; 0xff0b0 orgs.asm:115
+ push bp ; 55 ; 0xff0b1 orgs.asm:1645
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0b2 orgs.asm:1646
+ mov ax, strict word 00001h ; b8 01 00 ; 0xff0b4 orgs.asm:1649
+ push ax ; 50 ; 0xff0b7 orgs.asm:1650
+ call 04bafh ; e8 f4 5a ; 0xff0b8 orgs.asm:1651
+ inc sp ; 44 ; 0xff0bb orgs.asm:1652
+ inc sp ; 44 ; 0xff0bc orgs.asm:1653
+ test ax, ax ; 85 c0 ; 0xff0bd orgs.asm:1654
+ jne short 0f0e8h ; 75 27 ; 0xff0bf orgs.asm:1655
+ mov ax, strict word 00002h ; b8 02 00 ; 0xff0c1 orgs.asm:1658
+ push ax ; 50 ; 0xff0c4 orgs.asm:1659
+ call 04bafh ; e8 e7 5a ; 0xff0c5 orgs.asm:1660
+ inc sp ; 44 ; 0xff0c8 orgs.asm:1661
+ inc sp ; 44 ; 0xff0c9 orgs.asm:1662
+ test ax, ax ; 85 c0 ; 0xff0ca orgs.asm:1663
+ jne short 0f0e8h ; 75 1a ; 0xff0cc orgs.asm:1664
+ mov ax, strict word 00003h ; b8 03 00 ; 0xff0ce orgs.asm:1667
+ push ax ; 50 ; 0xff0d1 orgs.asm:1668
+ call 04bafh ; e8 da 5a ; 0xff0d2 orgs.asm:1669
+ inc sp ; 44 ; 0xff0d5 orgs.asm:1670
+ inc sp ; 44 ; 0xff0d6 orgs.asm:1671
+ test ax, ax ; 85 c0 ; 0xff0d7 orgs.asm:1672
+ jne short 0f0e8h ; 75 0d ; 0xff0d9 orgs.asm:1673
+ mov ax, strict word 00004h ; b8 04 00 ; 0xff0db orgs.asm:1676
+ push ax ; 50 ; 0xff0de orgs.asm:1677
+ call 04bafh ; e8 cd 5a ; 0xff0df orgs.asm:1678
+ inc sp ; 44 ; 0xff0e2 orgs.asm:1679
+ inc sp ; 44 ; 0xff0e3 orgs.asm:1680
+ test ax, ax ; 85 c0 ; 0xff0e4 orgs.asm:1681
+ je short 0f0a4h ; 74 bc ; 0xff0e6 orgs.asm:1682
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0e8 orgs.asm:1688
+ sal ax, 1 ; d1 e0 ; 0xff0eb orgs.asm:222
+ sal ax, 1 ; d1 e0 ; 0xff0ed orgs.asm:225
+ sal ax, 1 ; d1 e0 ; 0xff0ef orgs.asm:228
+ sal ax, 1 ; d1 e0 ; 0xff0f1 orgs.asm:231
+ mov word [bp+002h], ax ; 89 46 02 ; 0xff0f3 orgs.asm:1690
+ mov ax, word [byte bp+000h] ; 8b 46 00 ; 0xff0f6 orgs.asm:1691
+ and ax, 0f000h ; 25 00 f0 ; 0xff0f9 orgs.asm:1700
+ mov word [bp+004h], ax ; 89 46 04 ; 0xff0fc orgs.asm:1701
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff0ff orgs.asm:1702
+ mov ds, ax ; 8e d8 ; 0xff101 orgs.asm:1703
+ mov es, ax ; 8e c0 ; 0xff103 orgs.asm:1704
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff105 orgs.asm:1705
+ mov ax, 0aa55h ; b8 55 aa ; 0xff108 orgs.asm:1706
+ pop bp ; 5d ; 0xff10b orgs.asm:1708
+ iret ; cf ; 0xff10c orgs.asm:1709
+ or cx, word [bp+si] ; 0b 0a ; 0xff10d
+ or word [bp+di], cx ; 09 0b ; 0xff10f
+ push eax ; 66 50 ; 0xff111 orgs.asm:98
+ mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff113 orgs.asm:99
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xff119 orgs.asm:100
+ sal eax, 008h ; 66 c1 e0 08 ; 0xff11b orgs.asm:101
+ and dl, 0fch ; 80 e2 fc ; 0xff11f orgs.asm:102
+ db 00ah, 0c2h
+ ; or al, dl ; 0a c2 ; 0xff122 orgs.asm:103
+ mov dx, 00cf8h ; ba f8 0c ; 0xff124 orgs.asm:104
+ out DX, eax ; 66 ef ; 0xff127 orgs.asm:105
+ pop eax ; 66 58 ; 0xff129 orgs.asm:106
+ retn ; c3 ; 0xff12b orgs.asm:107
+ ; disGetNextSymbol 0xff12c LB 0xed4 -> off=0x0 cb=0000000000000012 uValue=00000000000f112c 'pcibios_init_iomem_bases'
+pcibios_init_iomem_bases: ; 0xff12c LB 0x12
+ push bp ; 55 ; 0xff12c orgs.asm:110
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff12d orgs.asm:111
+ mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff12f orgs.asm:113
+ mov dx, 00410h ; ba 10 04 ; 0xff135 orgs.asm:114
+ out DX, eax ; 66 ef ; 0xff138 orgs.asm:115
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xff13a orgs.asm:228
+ pop bp ; 5d ; 0xff13c orgs.asm:229
+ retn ; c3 ; 0xff13d orgs.asm:230
+ ; disGetNextSymbol 0xff13e LB 0xec2 -> off=0x0 cb=000000000000000c uValue=00000000000f113e 'pcibios_init_set_elcr'
+pcibios_init_set_elcr: ; 0xff13e LB 0xc
+ push ax ; 50 ; 0xff13e orgs.asm:233
+ push cx ; 51 ; 0xff13f orgs.asm:234
+ mov dx, 004d0h ; ba d0 04 ; 0xff140 orgs.asm:235
+ test AL, strict byte 008h ; a8 08 ; 0xff143 orgs.asm:236
+ je short 0f14ah ; 74 03 ; 0xff145 orgs.asm:237
+ inc dx ; 42 ; 0xff147 orgs.asm:239
+ and AL, strict byte 007h ; 24 07 ; 0xff148 orgs.asm:240
+ ; disGetNextSymbol 0xff14a LB 0xeb6 -> off=0x0 cb=000000000000000d uValue=00000000000f114a 'is_master_pic'
+is_master_pic: ; 0xff14a LB 0xd
+ db 08ah, 0c8h
+ ; mov cl, al ; 8a c8 ; 0xff14a orgs.asm:242
+ mov BL, strict byte 001h ; b3 01 ; 0xff14c orgs.asm:243
+ sal bl, CL ; d2 e3 ; 0xff14e orgs.asm:244
+ in AL, DX ; ec ; 0xff150 orgs.asm:245
+ db 00ah, 0c3h
+ ; or al, bl ; 0a c3 ; 0xff151 orgs.asm:246
+ out DX, AL ; ee ; 0xff153 orgs.asm:247
+ pop cx ; 59 ; 0xff154 orgs.asm:248
+ pop ax ; 58 ; 0xff155 orgs.asm:249
+ retn ; c3 ; 0xff156 orgs.asm:250
+ ; disGetNextSymbol 0xff157 LB 0xea9 -> off=0x0 cb=0000000000000039 uValue=00000000000f1157 'pcibios_init_irqs'
+pcibios_init_irqs: ; 0xff157 LB 0x39
+ push DS ; 1e ; 0xff157 orgs.asm:253
+ push bp ; 55 ; 0xff158 orgs.asm:254
+ mov ax, 0f000h ; b8 00 f0 ; 0xff159 orgs.asm:255
+ mov ds, ax ; 8e d8 ; 0xff15c orgs.asm:256
+ pop bp ; 5d ; 0xff15e orgs.asm:363
+ pop DS ; 1f ; 0xff15f orgs.asm:364
+ retn ; c3 ; 0xff160 orgs.asm:365
+ mov ax, ax ; 89 c0 ; 0xff161
+ mov ax, ax ; 89 c0 ; 0xff163
+ mov ax, ax ; 89 c0 ; 0xff165
+ mov ax, ax ; 89 c0 ; 0xff167
+ mov ax, ax ; 89 c0 ; 0xff169
+ mov ax, ax ; 89 c0 ; 0xff16b
+ mov ax, ax ; 89 c0 ; 0xff16d
+ cld ; fc ; 0xff16f
+ 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:1739
+ push DS ; 1e ; 0xff842 orgs.asm:1740
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1741
+ mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1742
+ mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1743
+ pop DS ; 1f ; 0xff84b orgs.asm:1744
+ iret ; cf ; 0xff84c orgs.asm:1745
+ ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler'
+int11_handler: ; 0xff84d LB 0xc
+ sti ; fb ; 0xff84d orgs.asm:1754
+ push DS ; 1e ; 0xff84e orgs.asm:1755
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1756
+ mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1757
+ mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1758
+ pop DS ; 1f ; 0xff857 orgs.asm:1759
+ iret ; cf ; 0xff858 orgs.asm:1760
+ ; disGetNextSymbol 0xff859 LB 0x7a7 -> off=0x0 cb=000000000000002d uValue=00000000000f1859 'int15_handler'
+int15_handler: ; 0xff859 LB 0x2d
+ pushfw ; 9c ; 0xff859 orgs.asm:1789
+ push DS ; 1e ; 0xff85a orgs.asm:1790
+ push ES ; 06 ; 0xff85b orgs.asm:1791
+ push CS ; 0e ; 0xff85c orgs.asm:113
+ pop DS ; 1f ; 0xff85d orgs.asm:114
+ cld ; fc ; 0xff85e orgs.asm:115
+ push ax ; 50 ; 0xff85f orgs.asm:109
+ push cx ; 51 ; 0xff860 orgs.asm:110
+ push dx ; 52 ; 0xff861 orgs.asm:111
+ push bx ; 53 ; 0xff862 orgs.asm:112
+ push sp ; 54 ; 0xff863 orgs.asm:113
+ push bp ; 55 ; 0xff864 orgs.asm:114
+ push si ; 56 ; 0xff865 orgs.asm:115
+ push di ; 57 ; 0xff866 orgs.asm:116
+ cmp ah, 053h ; 80 fc 53 ; 0xff867 orgs.asm:1802
+ je short 0f881h ; 74 15 ; 0xff86a orgs.asm:1803
+ cmp ah, 0c2h ; 80 fc c2 ; 0xff86c orgs.asm:1804
+ je short 0f886h ; 74 15 ; 0xff86f orgs.asm:1805
+ call 06556h ; e8 e2 6c ; 0xff871 orgs.asm:1807
+ pop di ; 5f ; 0xff874 orgs.asm:126
+ pop si ; 5e ; 0xff875 orgs.asm:127
+ pop bp ; 5d ; 0xff876 orgs.asm:128
+ pop bx ; 5b ; 0xff877 orgs.asm:129
+ pop bx ; 5b ; 0xff878 orgs.asm:130
+ pop dx ; 5a ; 0xff879 orgs.asm:131
+ pop cx ; 59 ; 0xff87a orgs.asm:132
+ pop ax ; 58 ; 0xff87b orgs.asm:133
+ pop ES ; 07 ; 0xff87c orgs.asm:1813
+ pop DS ; 1f ; 0xff87d orgs.asm:1814
+ popfw ; 9d ; 0xff87e orgs.asm:1815
+ jmp short 0f88bh ; eb 0a ; 0xff87f orgs.asm:1816
+ call 0a56ch ; e8 e8 ac ; 0xff881 orgs.asm:1819
+ jmp short 0f874h ; eb ee ; 0xff884 orgs.asm:1820
+ ; disGetNextSymbol 0xff886 LB 0x77a -> off=0x0 cb=0000000000000005 uValue=00000000000f1886 'int15_handler_mouse'
+int15_handler_mouse: ; 0xff886 LB 0x5
+ call 06e8ah ; e8 01 76 ; 0xff886 orgs.asm:1823
+ jmp short 0f874h ; eb e9 ; 0xff889 orgs.asm:1824
+ ; 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:1841
+ push bp ; 55 ; 0xff88d orgs.asm:1842
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff88e orgs.asm:1843
+ and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff890 orgs.asm:1844
+ or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff894 orgs.asm:1845
+ pop bp ; 5d ; 0xff899 orgs.asm:1846
+ iret ; cf ; 0xff89a orgs.asm:1847
+ push bp ; 55 ; 0xff89b orgs.asm:1849
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff89c orgs.asm:1850
+ or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff89e orgs.asm:1851
+ pop bp ; 5d ; 0xff8a3 orgs.asm:1852
+ iret ; cf ; 0xff8a4 orgs.asm:1853
+ ; disGetNextSymbol 0xff8a5 LB 0x75b -> off=0x0 cb=000000000000003a uValue=00000000000f18a5 'int74_handler'
+int74_handler: ; 0xff8a5 LB 0x3a
+ sti ; fb ; 0xff8a5 orgs.asm:1860
+ push ax ; 50 ; 0xff8a6 orgs.asm:109
+ push cx ; 51 ; 0xff8a7 orgs.asm:110
+ push dx ; 52 ; 0xff8a8 orgs.asm:111
+ push bx ; 53 ; 0xff8a9 orgs.asm:112
+ push sp ; 54 ; 0xff8aa orgs.asm:113
+ push bp ; 55 ; 0xff8ab orgs.asm:114
+ push si ; 56 ; 0xff8ac orgs.asm:115
+ push di ; 57 ; 0xff8ad orgs.asm:116
+ push ES ; 06 ; 0xff8ae orgs.asm:1862
+ push DS ; 1e ; 0xff8af orgs.asm:1863
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8b0 orgs.asm:1864
+ push ax ; 50 ; 0xff8b2 orgs.asm:1865
+ push ax ; 50 ; 0xff8b3 orgs.asm:1866
+ push ax ; 50 ; 0xff8b4 orgs.asm:1867
+ push ax ; 50 ; 0xff8b5 orgs.asm:1868
+ push ax ; 50 ; 0xff8b6 orgs.asm:1869
+ push CS ; 0e ; 0xff8b7 orgs.asm:113
+ pop DS ; 1f ; 0xff8b8 orgs.asm:114
+ cld ; fc ; 0xff8b9 orgs.asm:115
+ call 06ddch ; e8 1f 75 ; 0xff8ba orgs.asm:1871
+ pop cx ; 59 ; 0xff8bd orgs.asm:1872
+ jcxz 0f8cdh ; e3 0d ; 0xff8be orgs.asm:1873
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8c0 orgs.asm:1879
+ push ax ; 50 ; 0xff8c2 orgs.asm:1880
+ pop DS ; 1f ; 0xff8c3 orgs.asm:1882
+ push word [0040eh] ; ff 36 0e 04 ; 0xff8c4 orgs.asm:1883
+ pop DS ; 1f ; 0xff8c8 orgs.asm:1884
+ call far [word 00022h] ; ff 1e 22 00 ; 0xff8c9 orgs.asm:1885
+ cli ; fa ; 0xff8cd orgs.asm:1887
+ call 0e030h ; e8 5f e7 ; 0xff8ce orgs.asm:1888
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xff8d1 orgs.asm:1889
+ pop DS ; 1f ; 0xff8d4 orgs.asm:1890
+ pop ES ; 07 ; 0xff8d5 orgs.asm:1891
+ pop di ; 5f ; 0xff8d6 orgs.asm:126
+ pop si ; 5e ; 0xff8d7 orgs.asm:127
+ pop bp ; 5d ; 0xff8d8 orgs.asm:128
+ pop bx ; 5b ; 0xff8d9 orgs.asm:129
+ pop bx ; 5b ; 0xff8da orgs.asm:130
+ pop dx ; 5a ; 0xff8db orgs.asm:131
+ pop cx ; 59 ; 0xff8dc orgs.asm:132
+ pop ax ; 58 ; 0xff8dd orgs.asm:133
+ iret ; cf ; 0xff8de orgs.asm:1893
+ ; disGetNextSymbol 0xff8df LB 0x721 -> off=0x0 cb=0000000000000012 uValue=00000000000f18df 'int76_handler'
+int76_handler: ; 0xff8df LB 0x12
+ push ax ; 50 ; 0xff8df orgs.asm:1900
+ push DS ; 1e ; 0xff8e0 orgs.asm:1901
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff8e1 orgs.asm:1902
+ mov ds, ax ; 8e d8 ; 0xff8e4 orgs.asm:1903
+ mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8e6 orgs.asm:1904
+ call 0e030h ; e8 42 e7 ; 0xff8eb orgs.asm:1905
+ pop DS ; 1f ; 0xff8ee orgs.asm:1906
+ pop ax ; 58 ; 0xff8ef orgs.asm:1907
+ iret ; cf ; 0xff8f0 orgs.asm:1908
+ ; disGetNextSymbol 0xff8f1 LB 0x70f -> off=0x0 cb=000000000000002d uValue=00000000000f18f1 'int70_handler'
+int70_handler: ; 0xff8f1 LB 0x2d
+ push ES ; 06 ; 0xff8f1 orgs.asm:1917
+ push DS ; 1e ; 0xff8f2 orgs.asm:1918
+ push ax ; 50 ; 0xff8f3 orgs.asm:109
+ push cx ; 51 ; 0xff8f4 orgs.asm:110
+ push dx ; 52 ; 0xff8f5 orgs.asm:111
+ push bx ; 53 ; 0xff8f6 orgs.asm:112
+ push sp ; 54 ; 0xff8f7 orgs.asm:113
+ push bp ; 55 ; 0xff8f8 orgs.asm:114
+ push si ; 56 ; 0xff8f9 orgs.asm:115
+ push di ; 57 ; 0xff8fa orgs.asm:116
+ push CS ; 0e ; 0xff8fb orgs.asm:113
+ pop DS ; 1f ; 0xff8fc orgs.asm:114
+ cld ; fc ; 0xff8fd orgs.asm:115
+ call 06a90h ; e8 8f 71 ; 0xff8fe orgs.asm:1921
+ pop di ; 5f ; 0xff901 orgs.asm:126
+ pop si ; 5e ; 0xff902 orgs.asm:127
+ pop bp ; 5d ; 0xff903 orgs.asm:128
+ pop bx ; 5b ; 0xff904 orgs.asm:129
+ pop bx ; 5b ; 0xff905 orgs.asm:130
+ pop dx ; 5a ; 0xff906 orgs.asm:131
+ pop cx ; 59 ; 0xff907 orgs.asm:132
+ pop ax ; 58 ; 0xff908 orgs.asm:133
+ pop DS ; 1f ; 0xff909 orgs.asm:1923
+ pop ES ; 07 ; 0xff90a orgs.asm:1924
+ iret ; cf ; 0xff90b orgs.asm:1925
+ jnbe short 0f913h ; 77 05 ; 0xff90c orgs.asm:1935
+ cmp ax, 000b0h ; 3d b0 00 ; 0xff90e orgs.asm:1936
+ jc short 0f91bh ; 72 08 ; 0xff911 orgs.asm:1937
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xff913 orgs.asm:1940
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff915 orgs.asm:1941
+ inc byte [word 00070h] ; fe 06 70 00 ; 0xff917 orgs.asm:1943
+ jmp near 0fec1h ; e9 a3 05 ; 0xff91b orgs.asm:1945
+ ; 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:1979
+ push DS ; 1e ; 0xffe6f orgs.asm:1980
+ push ax ; 50 ; 0xffe70 orgs.asm:109
+ push cx ; 51 ; 0xffe71 orgs.asm:110
+ push dx ; 52 ; 0xffe72 orgs.asm:111
+ push bx ; 53 ; 0xffe73 orgs.asm:112
+ push sp ; 54 ; 0xffe74 orgs.asm:113
+ push bp ; 55 ; 0xffe75 orgs.asm:114
+ push si ; 56 ; 0xffe76 orgs.asm:115
+ push di ; 57 ; 0xffe77 orgs.asm:116
+ push CS ; 0e ; 0xffe78 orgs.asm:113
+ pop DS ; 1f ; 0xffe79 orgs.asm:114
+ cld ; fc ; 0xffe7a orgs.asm:115
+ call 06b38h ; e8 ba 6c ; 0xffe7b orgs.asm:1984
+ pop di ; 5f ; 0xffe7e orgs.asm:126
+ pop si ; 5e ; 0xffe7f orgs.asm:127
+ pop bp ; 5d ; 0xffe80 orgs.asm:128
+ pop bx ; 5b ; 0xffe81 orgs.asm:129
+ pop bx ; 5b ; 0xffe82 orgs.asm:130
+ pop dx ; 5a ; 0xffe83 orgs.asm:131
+ pop cx ; 59 ; 0xffe84 orgs.asm:132
+ pop ax ; 58 ; 0xffe85 orgs.asm:133
+ pop DS ; 1f ; 0xffe86 orgs.asm:1986
+ pop ES ; 07 ; 0xffe87 orgs.asm:1987
+ iret ; cf ; 0xffe88 orgs.asm:1988
+ ; 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:2001
+ push ax ; 50 ; 0xffea6 orgs.asm:2002
+ push DS ; 1e ; 0xffea7 orgs.asm:2004
+ push dx ; 52 ; 0xffea8 orgs.asm:2005
+ mov ax, strict word 00040h ; b8 40 00 ; 0xffea9 orgs.asm:2006
+ mov ds, ax ; 8e d8 ; 0xffeac orgs.asm:2007
+ mov ax, word [0006ch] ; a1 6c 00 ; 0xffeae orgs.asm:2013
+ mov dx, word [word 0006eh] ; 8b 16 6e 00 ; 0xffeb1 orgs.asm:2014
+ inc ax ; 40 ; 0xffeb5 orgs.asm:2015
+ jne short 0feb9h ; 75 01 ; 0xffeb6 orgs.asm:2016
+ inc dx ; 42 ; 0xffeb8 orgs.asm:2017
+ cmp dx, strict byte 00018h ; 83 fa 18 ; 0xffeb9 orgs.asm:2026
+ jc short 0fec1h ; 72 03 ; 0xffebc orgs.asm:2027
+ jmp near 0f90ch ; e9 4b fa ; 0xffebe orgs.asm:2028
+ mov word [0006ch], ax ; a3 6c 00 ; 0xffec1 orgs.asm:2040
+ mov word [word 0006eh], dx ; 89 16 6e 00 ; 0xffec4 orgs.asm:2041
+ mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:2045
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xffecb orgs.asm:2046
+ je short 0feddh ; 74 0e ; 0xffecd orgs.asm:2047
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xffecf orgs.asm:2048
+ mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:2049
+ jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:2050
+ mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:2052
+ in AL, DX ; ec ; 0xffed9 orgs.asm:2053
+ and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:2054
+ out DX, AL ; ee ; 0xffedc orgs.asm:2055
+ int 01ch ; cd 1c ; 0xffedd orgs.asm:2058
+ cli ; fa ; 0xffedf orgs.asm:2060
+ call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2061
+ pop dx ; 5a ; 0xffee3 orgs.asm:2062
+ pop DS ; 1f ; 0xffee4 orgs.asm:2063
+ pop ax ; 58 ; 0xffee5 orgs.asm:2068
+ iret ; cf ; 0xffee6 orgs.asm:2070
+ ; 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:2095
+ ; 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:2104
+ 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:2114
+ ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
+ db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0bdh
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
new file mode 100644
index 00000000..7746ce56
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
@@ -0,0 +1 @@
+341856987bd565a025d1f9896927c8a6 *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..31ccf3c6
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ahci.c
@@ -0,0 +1,1029 @@
+/* $Id: ahci.c $ */
+/** @file
+ * AHCI host adapter driver to boot from SATA disks.
+ */
+
+/*
+ * Copyright (C) 2011-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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;
+ /** 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\n", (uint32_t)n_sect * sectsz);
+ 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 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,
+ 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;
+ }
+
+ /* Convert to AHCI specific device number. */
+ device_id = VBOX_GET_AHCI_DEVICE(device_id);
+
+ DBG_AHCI("%s: reading %lu bytes, device %d, port %d\n", __func__,
+ length, 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;
+
+ 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 = get_cmos_word(idxCmosChsBase /*, idxCmosChsBase+1*/);
+ 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;
+
+ /* 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..b3326fbe
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/apm.c
@@ -0,0 +1,234 @@
+/* $Id: apm.c $ */
+/** @file
+ * APM BIOS support. Implements APM version 1.2.
+ */
+
+/*
+ * Copyright (C) 2004-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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
+ * ensure 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.
+ */
+
+/* Wrapper to avoid unnecessary inlining. */
+void apm_out_str(const char *s)
+{
+ if (*s)
+ out_ctrl_str_asm(VBOX_BIOS_SHUTDOWN_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");
+ break;
+ case APM_PS_SUSPEND:
+ apm_out_str("Suspend");
+ break;
+ case APM_PS_OFF:
+ apm_out_str("Shutdown"); /* 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_STATUS:
+ /* We do not attempt to report battery status. */
+ BX = 0x01FF; /* AC line power, battery unknown. */
+ CX = 0x80FF; /* No battery. */
+ DX = 0xFFFF; /* No idea about remaining battery life. */
+ 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..42c0baa0
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/apm_pm.asm
@@ -0,0 +1,229 @@
+; $Id:
+;; @file
+; Protected-mode APM implementation.
+;
+
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+
+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
+ ;
+ ; Windows 3.1 POWER.DRV in Standard mode calls into APM
+ ; with CPL=3. If that happens, the HLT instruction will fault
+ ; and Windows will crash. To prevent that, we check the CPL
+ ; and do nothing (better than crashing).
+ ;
+ push cs
+ pop ax
+ test ax, 3 ; CPL > 0?
+ jnz apmw_success
+ 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..ac1d4c24
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ata.c
@@ -0,0 +1,1233 @@
+/* $Id: ata.c $ */
+/** @file
+ * PC BIOS - ATA disk support.
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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"
+#include "pciutil.h"
+
+
+#if DEBUG_ATA
+# define BX_DEBUG_ATA(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_ATA(...)
+#endif
+
+
+// ---------------------------------------------------------------------------
+// Start of ATA/ATAPI Driver
+// ---------------------------------------------------------------------------
+
+// ---------------------------------------------------------------------------
+// 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);
+
+ // 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 */
+ }
+ }
+
+ 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 (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
+// ---------------------------------------------------------------------------
+
+int ata_signature(uint16_t iobase1, uint8_t channel, uint8_t slave)
+{
+ int dsk_type = DSK_TYPE_NONE;
+ uint8_t sc, sn, st, cl, ch;
+
+ /*
+ * Wait for BSY=0 so that the signature can be read. We already determined that
+ * an ATA interface is present, and rely on the fact that for non-existent
+ * devices, the BSY bit will always be clear.
+ */
+ outb(iobase1+ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0);
+ do {
+ st = inb(iobase1+ATA_CB_STAT);
+ } while (st & ATA_CB_STAT_BSY);
+
+ /*
+ * Look for ATA/ATAPI signature. Fun Fact #1: If there's a Device 1 but no
+ * Device 0, Device 1 can't tell and does not respond for it. Accessing
+ * non-existent Device 0 behaves the same regardless of whether Device 1
+ * is present or not.
+ */
+ sc = inb(iobase1+ATA_CB_SC);
+ sn = inb(iobase1+ATA_CB_SN);
+ if ((sc == 1) && (sn == 1)) {
+ cl = inb(iobase1+ATA_CB_CL);
+ ch = inb(iobase1+ATA_CB_CH);
+
+ /*
+ * Fun fact #2: If Device 0 responds for Device 1, an ATA device generally
+ * returns the values of its own registers, while an ATAPI device returns
+ * zeros. In both cases, the Status register is read as zero.
+ */
+ if ((cl == 0x14) && (ch == 0xEB)) {
+ dsk_type = DSK_TYPE_ATAPI;
+ BX_DEBUG_ATA("ata%d-%d: ATAPI device\n", channel, slave);
+ } else if ((cl == 0) && (ch == 0)) {
+ if (st != 0) {
+ dsk_type = DSK_TYPE_ATA;
+ BX_DEBUG_ATA("ata%d-%d: ATA device\n", channel, slave);
+ } else {
+ BX_DEBUG_ATA("ata%d-%d: ATA master responding for slave\n", channel, slave);
+ }
+ } else {
+ dsk_type = DSK_TYPE_UNKNOWN;
+ BX_DEBUG_ATA("ata%d-%d: something else (%02X/%02X/%02X)\n", channel, slave, cl, ch, st);
+ }
+ } else /* Possibly ATAPI Device 0 responding for Device 1. */
+ BX_DEBUG_ATA("ata%d-%d: bad sc/sn signature (%02X/%02X)\n", channel, slave, sc, sn);
+
+ return dsk_type;
+}
+
+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;
+
+ /* If we have PCI support, look for an IDE controller (it has to be a PCI device)
+ * so that we can skip silly probing. If there's no PCI, assume IDE is present.
+ *
+ * Needs an internal PCI function because the Programming Interface byte can be
+ * almost anything, and we conly care about the base-class and sub-class code.
+ */
+#if VBOX_BIOS_CPU >= 80386
+ uint16_t busdevfn;
+
+ busdevfn = pci_find_class_noif(0x0101);
+ if (busdevfn == 0xffff) {
+ BX_INFO("No PCI IDE controller, not probing IDE\n");
+ return;
+ }
+#endif
+
+ 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 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
+#if BX_MAX_ATA_INTERFACES > 4
+#error Please fill the ATA interface information
+#endif
+
+ // Device detection
+ hdcount = cdcount = 0;
+
+ for (device = 0; device < BX_MAX_ATA_DEVICES; device++) {
+ uint16_t iobase1, iobase2;
+ uint16_t retries;
+ uint8_t channel, slave;
+ uint8_t st;
+
+ channel = device / 2;
+ slave = device % 2;
+
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+
+ /*
+ * Here we are in a tricky situation. We do not know if an ATA
+ * interface is even present at a given address. If it is present,
+ * we don't know if a device is present. We also need to consider
+ * the case of only a slave device being present, which does not
+ * respond for the missing master device. If a device is present,
+ * it may be still powering up or processing reset, which means it
+ * may be busy.
+ *
+ * If a device is busy, we can't reliably write any registers, and
+ * reads will return the Status register. If the Status register
+ * value is 0FFh, there might be no ATA controller at all, or it
+ * might be a busy drive. Fortunately we know that our own devices
+ * never return such a value when busy, and we use that knowledge
+ * to detect non-existent interfaces.
+ *
+ * We also know that our ATA interface will not return 0FFh even when
+ * no device is present on a given channel. This knowledge is handy
+ * when only a slave device exists because we won't read 0FFh and
+ * think there is no ATA interface at all.
+ */
+
+ st = inb(iobase1+ATA_CB_STAT);
+ BX_DEBUG_ATA("ata%d-%d: Status=%02X\n", channel, slave, st);
+ if (st == 0xff)
+ continue;
+
+ /*
+ * Perform a software reset by setting and clearing the SRST bit. This
+ * can be done at any time, and forces device signature into the task file
+ * registers. If present, both devices are reset at once, so we only do
+ * this once per channel.
+ */
+ if (!slave) {
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN | ATA_CB_DC_SRST);
+
+ /*
+ * Ensure reasonable SRST pulse width, but do not wait long for
+ * non-existent devices.
+ */
+ retries = 32;
+ while (--retries > 0) {
+ st = inb(iobase1+ATA_CB_STAT);
+ if (st & ATA_CB_STAT_BSY)
+ break;
+ }
+
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+
+ /* After reset, device signature will be placed in registers. But
+ * executing any commands will overwrite it for Device 1. So that
+ * we don't have to reset twice, look for both Device 0 and Device 1
+ * signatures here right after reset.
+ */
+ bios_dsk->devices[device + 0].type = ata_signature(iobase1, channel, 0);
+ bios_dsk->devices[device + 1].type = ata_signature(iobase1, channel, 1);
+ }
+
+ // 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 = get_cmos_word(chsgeo_base /*, chsgeo_base + 1*/);
+ 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,
+ uint32_t length, uint8_t inout, char __far *buffer)
+{
+ uint16_t iobase1, iobase2;
+ uint16_t lcount, 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;
+ }
+
+ 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);
+
+ // Save byte count
+ count = lcount;
+
+ BX_DEBUG_ATA("Trying to read %04x bytes ",lcount);
+ 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 (lcount & 0x03)
+ lmode = ATA_MODE_PIO16;
+
+ // adds an extra byte if count are odd. before is always even
+ if (lcount & 0x01) {
+ lcount += 1;
+ }
+
+#if VBOX_BIOS_CPU >= 80386
+ if (lmode == ATA_MODE_PIO32) {
+ lcount >>= 2;
+ } else
+#endif
+ {
+ lcount >>= 1;
+ }
+
+#if VBOX_BIOS_CPU >= 80386
+ if (lmode == ATA_MODE_PIO32) {
+ rep_insd(buffer, lcount, iobase1);
+ } else
+#endif
+ {
+ rep_insw(buffer, lcount, 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..658738b5
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ata.h
@@ -0,0 +1,200 @@
+/* $Id: ata.h $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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..5d6c748b
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/bios.c
@@ -0,0 +1,212 @@
+/* $Id: bios.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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"
+#include "VBox/bios.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);
+}
+
+/**
+ * Reads two adjacent cmos bytes and return their values as a 16-bit word.
+ */
+uint16_t get_cmos_word(uint8_t idxFirst)
+{
+ return ((uint16_t)inb_cmos(idxFirst + 1) << 8)
+ | inb_cmos(idxFirst);
+}
+
+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_INFO("INT18: BOOT FAILURE\n");
+ out_ctrl_str_asm(VBOX_BIOS_SHUTDOWN_PORT, "Bootfail");
+}
+
+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..e95ef4bf
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/biosint.h
@@ -0,0 +1,325 @@
+/* $Id: biosint.h $ */
+/** @file
+ * PC BIOS - BIOS internal definitions.
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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 get_cmos_word(uint8_t idxFirst);
+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)
+#define BX_INFO_CON(...)do { put_str(BIOS_PRINTF_INFO, bios_prefix_string); bios_printf(BIOS_PRINTF_ALL, __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__)
+
+uint16_t pci16_find_device(uint32_t search_item, uint16_t index, int search_class, int ignore_if);
+
+/* 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..8834aa30
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/boot.c
@@ -0,0 +1,365 @@
+/* $Id: boot.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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_INFO_CON("No bootable medium found!\n");
+ else
+ BX_INFO_CON("Could not read from the boot medium!\n");
+ BX_INFO_CON("Please insert a bootable medium and reboot.\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/buslogic.c b/src/VBox/Devices/PC/BIOS/buslogic.c
new file mode 100644
index 00000000..7d80c6ef
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/buslogic.c
@@ -0,0 +1,313 @@
+/* $Id: buslogic.c $ */
+/** @file
+ * BusLogic SCSI host adapter driver to boot from disks.
+ */
+
+/*
+ * Copyright (C) 2021-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "ebda.h"
+#include "inlines.h"
+#include "pciutil.h"
+#include "vds.h"
+#include "scsi.h"
+
+//#define DEBUG_BUSLOGIC 1
+#if DEBUG_BUSLOGIC
+# define DBG_BUSLOGIC(...) BX_INFO(__VA_ARGS__)
+#else
+# define DBG_BUSLOGIC(...)
+#endif
+
+#define BUSLOGICCOMMAND_DISABLE_HOST_ADAPTER_INTERRUPT 0x25
+#define BUSLOGICCOMMAND_EXECUTE_SCSI_COMMAND 0x83
+
+
+#define RT_BIT(bit) (1 << (bit))
+
+/** Register offsets in the I/O port space. */
+#define BUSLOGIC_REGISTER_CONTROL 0 /**< Writeonly */
+/** Fields for the control register. */
+# define BL_CTRL_RSBUS RT_BIT(4) /* Reset SCSI Bus. */
+# define BL_CTRL_RINT RT_BIT(5) /* Reset Interrupt. */
+# define BL_CTRL_RSOFT RT_BIT(6) /* Soft Reset. */
+# define BL_CTRL_RHARD RT_BIT(7) /* Hard Reset. */
+
+#define BUSLOGIC_REGISTER_STATUS 0 /**< Readonly */
+/** Fields for the status register. */
+# define BL_STAT_CMDINV RT_BIT(0) /* Command Invalid. */
+# define BL_STAT_DIRRDY RT_BIT(2) /* Data In Register Ready. */
+# define BL_STAT_CPRBSY RT_BIT(3) /* Command/Parameter Out Register Busy. */
+# define BL_STAT_HARDY RT_BIT(4) /* Host Adapter Ready. */
+# define BL_STAT_INREQ RT_BIT(5) /* Initialization Required. */
+# define BL_STAT_DFAIL RT_BIT(6) /* Diagnostic Failure. */
+# define BL_STAT_DACT RT_BIT(7) /* Diagnistic Active. */
+
+#define BUSLOGIC_REGISTER_COMMAND 1 /**< Writeonly */
+#define BUSLOGIC_REGISTER_DATAIN 1 /**< Readonly */
+#define BUSLOGIC_REGISTER_INTERRUPT 2 /**< Readonly */
+#define BUSLOGIC_REGISTER_GEOMETRY 3 /**< Readonly */
+
+/** Fields for the interrupt register. */
+# define BL_INTR_IMBL RT_BIT(0) /* Incoming Mailbox Loaded. */
+# define BL_INTR_OMBR RT_BIT(1) /* Outgoing Mailbox Available. */
+# define BL_INTR_CMDC RT_BIT(2) /* Command Complete. */
+# define BL_INTR_RSTS RT_BIT(3) /* SCSI Bus Reset State. */
+# define BL_INTR_INTV RT_BIT(7) /* Interrupt Valid. */
+
+/**
+ * The structure for the "Execute SCSI Command" command.
+ */
+typedef struct ESCMD
+{
+ /** Data length. */
+ uint32_t cbData;
+ /** Data pointer. */
+ uint32_t u32PhysAddrData;
+ /** The device the request is sent to. */
+ uint8_t uTargetId;
+ /** The LUN in the device. */
+ uint8_t uLogicalUnit;
+ /** Reserved */
+ unsigned char uReserved1 : 3;
+ /** Data direction for the request. */
+ unsigned char uDataDirection : 2;
+ /** Reserved */
+ unsigned char uReserved2 : 3;
+ /** Length of the SCSI CDB. */
+ uint8_t cbCDB;
+ /** The SCSI CDB. (A CDB can be 12 bytes long.) */
+ uint8_t abCDB[16];
+} ESCMD, *PESCMD;
+
+/**
+ * BusLogic-SCSI controller data.
+ */
+typedef struct
+{
+ /** The execute SCSI command. */
+ ESCMD EsCmd;
+ /** I/O base of device. */
+ uint16_t u16IoBase;
+} buslogic_t;
+
+/* The BusLogic specific data must fit into 1KB (statically allocated). */
+ct_assert(sizeof(buslogic_t) <= 1024);
+
+/**
+ * Converts a segment:offset pair into a 32bit physical address.
+ */
+static uint32_t buslogic_addr_to_phys(void __far *ptr)
+{
+ return ((uint32_t)FP_SEG(ptr) << 4) + FP_OFF(ptr);
+}
+
+static int buslogic_cmd(buslogic_t __far *buslogic, uint8_t uCmd, uint8_t __far *pbReq, uint16_t cbReq,
+ uint8_t __far *pbReply, uint16_t cbReply)
+{
+ uint16_t i;
+
+ outb(buslogic->u16IoBase + BUSLOGIC_REGISTER_COMMAND, uCmd);
+ for (i = 0; i < cbReq; i++)
+ outb(buslogic->u16IoBase + BUSLOGIC_REGISTER_COMMAND, *pbReq++);
+
+ /* Wait for the HBA to finish processing the command. */
+ if (cbReply)
+ {
+ while (!(inb(buslogic->u16IoBase + BUSLOGIC_REGISTER_STATUS) & BL_STAT_DIRRDY));
+ for (i = 0; i < cbReply; i++)
+ *pbReply++ = inb(buslogic->u16IoBase + BUSLOGIC_REGISTER_DATAIN);
+ }
+
+ while (!(inb(buslogic->u16IoBase + BUSLOGIC_REGISTER_STATUS) & BL_STAT_HARDY));
+
+ /* Clear interrupt status. */
+ outb(buslogic->u16IoBase + BUSLOGIC_REGISTER_CONTROL, BL_CTRL_RINT);
+
+ return 0;
+}
+
+int buslogic_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ buslogic_t __far *buslogic = (buslogic_t __far *)pvHba;
+ uint8_t abReply[4];
+ int i;
+ int rc;
+
+ _fmemset(&buslogic->EsCmd, 0, sizeof(buslogic->EsCmd));
+ _fmemset(abReply, 0, sizeof(abReply));
+
+ buslogic->EsCmd.cbData = length;
+ buslogic->EsCmd.u32PhysAddrData = buslogic_addr_to_phys(buffer);
+ buslogic->EsCmd.uTargetId = idTgt;
+ buslogic->EsCmd.uLogicalUnit = 0;
+ buslogic->EsCmd.uDataDirection = 0;
+ buslogic->EsCmd.cbCDB = cbCDB;
+
+ for (i = 0; i < cbCDB; i++)
+ buslogic->EsCmd.abCDB[i] = aCDB[i];
+
+ rc = buslogic_cmd(buslogic, BUSLOGICCOMMAND_EXECUTE_SCSI_COMMAND, (uint8_t __far *)&buslogic->EsCmd,
+ sizeof(buslogic->EsCmd) - sizeof(buslogic->EsCmd.abCDB) + cbCDB, &abReply[0], sizeof(abReply));
+ if (!rc)
+ rc = abReply[2];
+
+ return rc;
+}
+
+int buslogic_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ buslogic_t __far *buslogic = (buslogic_t __far *)pvHba;
+ uint8_t abReply[4];
+ int i;
+ int rc;
+
+ DBG_BUSLOGIC("buslogic_scsi_cmd_data_in:\n");
+
+ _fmemset(&buslogic->EsCmd, 0, sizeof(buslogic->EsCmd));
+ _fmemset(abReply, 0, sizeof(abReply));
+
+ buslogic->EsCmd.cbData = length;
+ buslogic->EsCmd.u32PhysAddrData = buslogic_addr_to_phys(buffer);
+ buslogic->EsCmd.uTargetId = idTgt;
+ buslogic->EsCmd.uLogicalUnit = 0;
+ buslogic->EsCmd.uDataDirection = 0;
+ buslogic->EsCmd.cbCDB = cbCDB;
+
+ for (i = 0; i < cbCDB; i++)
+ buslogic->EsCmd.abCDB[i] = aCDB[i];
+
+ rc = buslogic_cmd(buslogic, BUSLOGICCOMMAND_EXECUTE_SCSI_COMMAND, (uint8_t __far *)&buslogic->EsCmd,
+ sizeof(buslogic->EsCmd) - sizeof(buslogic->EsCmd.abCDB) + cbCDB, &abReply[0], sizeof(abReply));
+ if (!rc)
+ rc = abReply[2];
+
+ return rc;
+}
+
+/**
+ * Initializes the BusLogic SCSI HBA and detects attached devices.
+ */
+static int buslogic_scsi_hba_init(buslogic_t __far *buslogic)
+{
+ /* Hard reset. */
+ outb(buslogic->u16IoBase + BUSLOGIC_REGISTER_CONTROL, BL_CTRL_RHARD);
+ while (!(inb(buslogic->u16IoBase + BUSLOGIC_REGISTER_STATUS) & BL_STAT_HARDY));
+
+ return 0;
+}
+
+/**
+ * Init the BusLogic PCI SCSI driver and detect attached disks.
+ */
+int buslogic_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn)
+{
+ buslogic_t __far *buslogic = (buslogic_t __far *)pvHba;
+ uint32_t u32Bar;
+
+ DBG_BUSLOGIC("BusLogic SCSI HBA at Bus %u DevFn 0x%x (raw 0x%x)\n", u8Bus, u8DevFn);
+
+ u32Bar = pci_read_config_dword(u8Bus, u8DevFn, 0x10);
+
+ DBG_BUSLOGIC("BAR at 0x10 : 0x%x\n", u32Bar);
+
+ if ((u32Bar & 0x01) != 0)
+ {
+ uint16_t u16IoBase = (u32Bar & 0xfff0);
+
+ /* Enable PCI memory, I/O, bus mastering access in command register. */
+ pci_write_config_word(u8Bus, u8DevFn, 4, 0x7);
+
+ DBG_BUSLOGIC("I/O base: 0x%x\n", u16IoBase);
+ buslogic->u16IoBase = u16IoBase;
+ return buslogic_scsi_hba_init(buslogic);
+ }
+ else
+ DBG_BUSLOGIC("BAR is MMIO\n");
+
+ return 1;
+}
+
+/**
+ * Init the AHA-154x compatible ISA SCSI driver and find attached disks.
+ * The HBA was already detected.
+ */
+int btaha_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn)
+{
+ buslogic_t __far *buslogic = (buslogic_t __far *)pvHba;
+
+ buslogic->u16IoBase = (u8Bus << 8) | u8DevFn;
+ DBG_BUSLOGIC("AHA 154x compatible SCSI HBA at I/O port 0x%x)\n", buslogic->u16IoBase);
+
+ return buslogic_scsi_hba_init(buslogic);
+}
+
+/**
+ * Detect AHA-154x compatible ISA SCSI HBA presence.
+ */
+uint16_t btaha_scsi_detect(void)
+{
+ uint16_t bases[] = { 0x330, 0x334, 0 };
+ uint16_t iobase;
+ uint8_t val;
+ int i;
+
+ for (i = 0, iobase = bases[0]; iobase; iobase = bases[++i])
+ {
+ /* Read the status register. The possible valid values after power-up
+ * or reset are 0x10 or 0x30.
+ */
+ val = inb(iobase + BUSLOGIC_REGISTER_STATUS);
+ if ((val != 0x30) && (val != 0x10))
+ continue;
+
+ /* Exclude PCI adapters in ISA compatible mode. The check reads the
+ * undocumented "geometry" register and only continues if bit 6 is
+ * set.
+ * The logic is kind of genius. On AHA-154xB and earlier, there's
+ * nothing and the read returns 0xFF. On AHA-154xC, the register
+ * returns the letters 'ADAP' in a round-robin fashion. On BusLogic
+ * ISA adapters, the firmware sets the register to 0x55 during
+ * power-up/reset (possibly also setting bit 7 if > 1GB drive
+ * support is enabled). In all cases, bit 6 will be set.
+ * But on BusLogic PCI HBAs, the geometry register is 0x80 (in our
+ * emulation) or possibly 0 and bit 6 is clear.
+ * Thus if bit 6 is not set, the device is rejected because it was
+ * likely already found as a PCI device, and must not be detected
+ * again at the alternative ISA-compatible I/O base.
+ */
+ val = inb(iobase + BUSLOGIC_REGISTER_GEOMETRY);
+ if ((val & 0x40) == 0)
+ continue;
+
+ /* If we got this far, the I/O base is valid and we're done. */
+ break;
+ }
+
+ return iobase ? iobase: 0xffff;
+}
+
diff --git a/src/VBox/Devices/PC/BIOS/disk.c b/src/VBox/Devices/PC/BIOS/disk.c
new file mode 100644
index 00000000..b5eb65a1
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/disk.c
@@ -0,0 +1,664 @@
+/* $Id: disk.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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 int __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);
+ } else {
+ BX_DEBUG_INT13_HD("%s: %d sectors from C/H/S %u/%u/%u @ %04x:%04x\n", __func__,
+ count, cylinder, head, sector, 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. */
+ /* To make Windows 3.1x WDCTRL.386 happy, we'd have to subtract 2, not 1,
+ * to account for a diagnostic cylinder.
+ */
+ 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???
+
+#ifdef VBOX_WITH_SCSI
+ /* SCSI drives are always "ready". */
+ if (!VBOX_IS_SCSI_DEVICE(device)) {
+#endif
+ // 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;
+ }
+#ifdef VBOX_WITH_SCSI
+ } else /* It's not an ATA drive. */
+ goto int13_success;
+#endif
+ 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..7826fad0
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ebda.h
@@ -0,0 +1,405 @@
+/* $Id: ebda.h $ */
+/** @file
+ * PC BIOS - EBDA (Extended BIOS Data Area) Definition
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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
+
+#ifdef VBOX_WITH_VIRTIO_SCSI
+ /* Four should be enough for now */
+ #define BX_MAX_VIRTIO_SCSI_DEVICES 4
+
+ /* An AHCI device starts always at BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES. */
+ #define VBOX_IS_VIRTIO_SCSI_DEVICE(device_id) (device_id >= (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES))
+ #define VBOX_GET_VIRTIO_SCSI_DEVICE(device_id) (device_id - (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES))
+#else
+ #define BX_MAX_VIRTIO_SCSI_DEVICES 0
+#endif
+
+#define BX_MAX_STORAGE_DEVICES (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES + BX_MAX_VIRTIO_SCSI_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 hba_seg; /* Segment of HBA driver data block. */
+ uint8_t idx_hba; /* The HBA driver to use. */
+ 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. */
+} disk_req_t;
+
+extern uint16_t ahci_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf,
+ uint32_t length, uint8_t inout, char __far *buffer);
+extern uint16_t scsi_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf,
+ uint32_t length, uint8_t inout, char __far *buffer);
+extern uint16_t ata_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf,
+ 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. */
+ uint8_t __far *ptr_unaligned; /* Bounce buffer for sector unaligned reads. */
+} 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;
+
+#ifndef VBOX_WITH_VIRTIO_SCSI /** @todo For development only, need to find a real solution to voercome the 1KB limit. */
+ uint8_t filler2[0xC4];
+#endif
+
+ 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..ce8b0dc7
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/eltorito.c
@@ -0,0 +1,1048 @@
+/* $Id: eltorito.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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
+
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+
+/// @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,
+ 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;
+
+/**
+ * Allocates 2K of conventional memory.
+ */
+static uint16_t cdemu_bounce_buf_alloc(void)
+{
+ uint16_t base_mem_kb;
+ uint16_t bounce_seg;
+
+ base_mem_kb = read_word(0x00, 0x0413);
+ if (base_mem_kb == 0)
+ return 0;
+
+ base_mem_kb -= 2;
+ bounce_seg = (((uint32_t)base_mem_kb * 1024) >> 4); /* Calculate start segment. */
+
+ write_word(0x00, 0x0413, base_mem_kb);
+
+ return bounce_seg;
+}
+
+void BIOSCALL cdemu_init(void)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+ cdemu_t __far *cdemu = ebda_seg :> &EbdaData->cdemu;
+
+ // the only important data is this one for now
+ 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;
+}
+
+static uint16_t cdrom_read(uint8_t device, uint32_t lba, uint16_t nbsectors, void __far *buf)
+{
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ cdb_atapi atapicmd;
+ bio_dsk_t __far *bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(lba);
+ atapicmd.nsect = swap_16(nbsectors);
+
+ bios_dsk->drqp.nsect = nbsectors;
+ bios_dsk->drqp.sect_sz = 2048L;
+
+ return pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, nbsectors*2048L, ATA_DATA_IN, buf);
+}
+
+static uint16_t cdemu_read(uint8_t device, uint32_t lba, uint16_t nbsectors, void __far *buf)
+{
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint16_t error;
+ cdemu_t __far *cdemu = ebda_seg :> &EbdaData->cdemu;
+ uint32_t ilba = cdemu->ilba;
+ uint32_t slba;
+ uint16_t before;
+ uint8_t __far *dst = (uint8_t __far *)buf;
+
+ BX_DEBUG_ELTORITO("cdemu_read: lba=%lu nbsectors=%u\n", lba, nbsectors);
+
+ // start lba on cd
+ slba = (uint32_t)lba / 4;
+ before = (uint32_t)lba % 4;
+
+ // Unaligned start will go to a bounce buffer first.
+ if (before)
+ {
+ uint16_t xfer_sect = MIN(nbsectors, 4 - before);
+
+ error = cdrom_read(device, ilba + slba, 1, cdemu->ptr_unaligned);
+ if (error != 0)
+ return error;
+
+ _fmemcpy(dst, cdemu->ptr_unaligned + before * 512L, xfer_sect * 512L);
+ dst += xfer_sect * 512L;
+ nbsectors -= xfer_sect;
+ slba++;
+ }
+
+ // Now for the aligned part.
+ if (nbsectors / 4)
+ {
+ uint16_t xfer_sect = nbsectors / 4;
+
+ error = cdrom_read(device, ilba + slba, xfer_sect, dst);
+ if (error != 0)
+ return error;
+ dst += xfer_sect * 2048L;
+ nbsectors -= xfer_sect * 4;
+ slba += xfer_sect;
+ }
+
+ // Now for the unaligned end.
+ if (nbsectors)
+ {
+ error = cdrom_read(device, ilba + slba, 1, cdemu->ptr_unaligned);
+ if (error != 0)
+ return error;
+
+ _fmemcpy(dst, cdemu->ptr_unaligned, nbsectors * 512);
+ }
+
+ return error;
+}
+
+// ---------------------------------------------------------------------------
+// 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];
+ 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). */
+ for (read_try = 0; read_try <= 4; ++read_try)
+ {
+ error = cdrom_read(device, 0x11, 1, &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. */
+ error = cdrom_read(device, lba, 1, 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);
+
+ /* Now that we know El Torito emulation is in use, allocate buffer. */
+ cdemu->ptr_unaligned = cdemu_bounce_buf_alloc() :> 0;
+ if (cdemu->ptr_unaligned == NULL)
+ return 13;
+
+ /* Read the disk image's boot sector into memory. */
+ error = cdemu_read(device, 0, nbsectors, MK_FP(boot_segment,0));
+ if (error != 0)
+ return 14;
+
+ 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;
+ uint16_t segment, offset;
+ 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;
+
+ 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);
+
+ status = cdemu_read(device, vlba, nbsectors, MK_FP(segment,offset));
+ 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);
+
+ status = cdemu_read(device, lba, count, MK_FP(segment,offset));
+ 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;
+ 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);
+
+ status = cdrom_read(device, lba, count, 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..89ac45c4
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/floppy.c
@@ -0,0 +1,1370 @@
+/* $Id: floppy.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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..114a0300
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/floppyt.c
@@ -0,0 +1,114 @@
+/* $Id: floppyt.c $ */
+/** @file
+ * Floppy drive tables.
+ */
+
+/*
+ * Copyright (C) 2011-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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..c2ded15e
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/inlines.h
@@ -0,0 +1,271 @@
+/* $Id: inlines.h $ */
+/** @file
+ * Inline routines for Watcom C.
+ */
+
+/*
+ * Copyright (C) 2010-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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;
+
+/* Output a null-terminated string to a specified port, without the
+ * terminating null character.
+ */
+static void out_ctrl_str_asm(uint16_t port, const char *s);
+#pragma aux out_ctrl_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;
+
+#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..71955e9b
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/invop.c
@@ -0,0 +1,360 @@
+/* $Id: invop.c $ */
+/** @file
+ * Real mode invalid opcode handler.
+ */
+
+/*
+ * Copyright (C) 2013-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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..eeec084c
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/keyboard.c
@@ -0,0 +1,832 @@
+/* $Id: keyboard.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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..39d62135
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/logo.c
@@ -0,0 +1,568 @@
+/* $Id: logo.c $ */
+/** @file
+ * Stuff for drawing the BIOS logo.
+ */
+
+/*
+ * Copyright (C) 2004-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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/lsilogic.c b/src/VBox/Devices/PC/BIOS/lsilogic.c
new file mode 100644
index 00000000..6194b48c
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/lsilogic.c
@@ -0,0 +1,537 @@
+/* $Id: lsilogic.c $ */
+/** @file
+ * LsiLogic SCSI host adapter driver to boot from disks.
+ */
+
+/*
+ * Copyright (C) 2021-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "ebda.h"
+#include "inlines.h"
+#include "pciutil.h"
+#include "vds.h"
+#include "scsi.h"
+
+//#define DEBUG_LSILOGIC 1
+#if DEBUG_LSILOGIC
+# define DBG_LSILOGIC(...) BX_INFO(__VA_ARGS__)
+#else
+# define DBG_LSILOGIC(...)
+#endif
+
+#define RT_BIT(bit) (1L << (bit))
+
+/**
+ * A simple SG element for a 32bit address.
+ */
+typedef struct MptSGEntrySimple32
+{
+ /** Length of the buffer this entry describes. */
+ uint32_t u24Length: 24;
+ /** Flag whether this element is the end of the list. */
+ uint32_t fEndOfList: 1;
+ /** Flag whether the address is 32bit or 64bits wide. */
+ uint32_t f64BitAddress: 1;
+ /** Flag whether this buffer contains data to be transferred or is the destination. */
+ uint32_t fBufferContainsData: 1;
+ /** Flag whether this is a local address or a system address. */
+ uint32_t fLocalAddress: 1;
+ /** Element type. */
+ uint32_t u2ElementType: 2;
+ /** Flag whether this is the last element of the buffer. */
+ uint32_t fEndOfBuffer: 1;
+ /** Flag whether this is the last element of the current segment. */
+ uint32_t fLastElement: 1;
+ /** Lower 32bits of the address of the data buffer. */
+ uint32_t u32DataBufferAddressLow: 32;
+} MptSGEntrySimple32, *PMptSGEntrySimple32;
+
+/** Defined function codes found in the message header. */
+#define MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST (0x00)
+#define MPT_MESSAGE_HDR_FUNCTION_IOC_INIT (0x02)
+
+/**
+ * SCSI IO Request
+ */
+typedef struct MptSCSIIORequest
+{
+ /** Target ID */
+ uint8_t u8TargetID;
+ /** Bus number */
+ uint8_t u8Bus;
+ /** Chain offset */
+ uint8_t u8ChainOffset;
+ /** Function number. */
+ uint8_t u8Function;
+ /** CDB length. */
+ uint8_t u8CDBLength;
+ /** Sense buffer length. */
+ uint8_t u8SenseBufferLength;
+ /** Reserved */
+ uint8_t u8Reserved;
+ /** Message flags. */
+ uint8_t u8MessageFlags;
+ /** Message context ID. */
+ uint32_t u32MessageContext;
+ /** LUN */
+ uint8_t au8LUN[8];
+ /** Control values. */
+ uint32_t u32Control;
+ /** The CDB. */
+ uint8_t au8CDB[16];
+ /** Data length. */
+ uint32_t u32DataLength;
+ /** Sense buffer low 32bit address. */
+ uint32_t u32SenseBufferLowAddress;
+} MptSCSIIORequest, *PMptSCSIIORequest;
+
+#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_NONE (0x0L)
+#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_WRITE (0x1L)
+#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_READ (0x2L)
+
+/**
+ * SCSI IO error reply.
+ */
+typedef struct MptSCSIIOErrorReply
+{
+ /** Target ID */
+ uint8_t u8TargetID;
+ /** Bus number */
+ uint8_t u8Bus;
+ /** Message length. */
+ uint8_t u8MessageLength;
+ /** Function number. */
+ uint8_t u8Function;
+ /** CDB length */
+ uint8_t u8CDBLength;
+ /** Sense buffer length */
+ uint8_t u8SenseBufferLength;
+ /** Reserved */
+ uint8_t u8Reserved;
+ /** Message flags */
+ uint8_t u8MessageFlags;
+ /** Message context ID */
+ uint32_t u32MessageContext;
+ /** SCSI status. */
+ uint8_t u8SCSIStatus;
+ /** SCSI state */
+ uint8_t u8SCSIState;
+ /** IO controller status */
+ uint16_t u16IOCStatus;
+ /** IO controller log information */
+ uint32_t u32IOCLogInfo;
+ /** Transfer count */
+ uint32_t u32TransferCount;
+ /** Sense count */
+ uint32_t u32SenseCount;
+ /** Response information */
+ uint32_t u32ResponseInfo;
+} MptSCSIIOErrorReply, *PMptSCSIIOErrorReply;
+
+/**
+ * IO controller init request.
+ */
+typedef struct MptIOCInitRequest
+{
+ /** Which system send this init request. */
+ uint8_t u8WhoInit;
+ /** Reserved */
+ uint8_t u8Reserved;
+ /** Chain offset in the SG list. */
+ uint8_t u8ChainOffset;
+ /** Function to execute. */
+ uint8_t u8Function;
+ /** Flags */
+ uint8_t u8Flags;
+ /** Maximum number of devices the driver can handle. */
+ uint8_t u8MaxDevices;
+ /** Maximum number of buses the driver can handle. */
+ uint8_t u8MaxBuses;
+ /** Message flags. */
+ uint8_t u8MessageFlags;
+ /** Message context ID. */
+ uint32_t u32MessageContext;
+ /** Reply frame size. */
+ uint16_t u16ReplyFrameSize;
+ /** Reserved */
+ uint16_t u16Reserved;
+ /** Upper 32bit part of the 64bit address the message frames are in.
+ * That means all frames must be in the same 4GB segment. */
+ uint32_t u32HostMfaHighAddr;
+ /** Upper 32bit of the sense buffer. */
+ uint32_t u32SenseBufferHighAddr;
+} MptIOCInitRequest, *PMptIOCInitRequest;
+
+#define LSILOGICWHOINIT_SYSTEM_BIOS 0x01
+
+
+/**
+ * IO controller init reply.
+ */
+typedef struct MptIOCInitReply
+{
+ /** Which subsystem send this init request. */
+ uint8_t u8WhoInit;
+ /** Reserved */
+ uint8_t u8Reserved;
+ /** Message length */
+ uint8_t u8MessageLength;
+ /** Function. */
+ uint8_t u8Function;
+ /** Flags */
+ uint8_t u8Flags;
+ /** Maximum number of devices the driver can handle. */
+ uint8_t u8MaxDevices;
+ /** Maximum number of busses the driver can handle. */
+ uint8_t u8MaxBuses;
+ /** Message flags. */
+ uint8_t u8MessageFlags;
+ /** Message context ID */
+ uint32_t u32MessageContext;
+ /** Reserved */
+ uint16_t u16Reserved;
+ /** IO controller status. */
+ uint16_t u16IOCStatus;
+ /** IO controller log information. */
+ uint32_t u32IOCLogInfo;
+} MptIOCInitReply, *PMptIOCInitReply;
+
+/**
+ * Doorbell register - Used to get the status of the controller and
+ * initialise it.
+ */
+#define LSILOGIC_REG_DOORBELL 0x00
+# define LSILOGIC_REG_DOORBELL_SET_STATE(enmState) (((enmState) & 0x0f) << 28)
+# define LSILOGIC_REG_DOORBELL_SET_USED(enmDoorbell) (((enmDoorbell != LSILOGICDOORBELLSTATE_NOT_IN_USE) ? 1 : 0) << 27)
+# define LSILOGIC_REG_DOORBELL_SET_WHOINIT(enmWhoInit) (((enmWhoInit) & 0x07) << 24)
+# define LSILOGIC_REG_DOORBELL_SET_FAULT_CODE(u16Code) (u16Code)
+# define LSILOGIC_REG_DOORBELL_GET_FUNCTION(x) (((x) & 0xff000000) >> 24)
+# define LSILOGIC_REG_DOORBELL_GET_SIZE(x) (((x) & 0x00ff0000) >> 16)
+
+/**
+ * Functions which can be passed through the system doorbell.
+ */
+#define LSILOGIC_DOORBELL_FUNCTION_IOC_MSG_UNIT_RESET 0x40L
+#define LSILOGIC_DOORBELL_FUNCTION_IO_UNIT_RESET 0x41L
+#define LSILOGIC_DOORBELL_FUNCTION_HANDSHAKE 0x42L
+#define LSILOGIC_DOORBELL_FUNCTION_REPLY_FRAME_REMOVAL 0x43L
+
+/**
+ * Write sequence register for the diagnostic register.
+ */
+#define LSILOGIC_REG_WRITE_SEQUENCE 0x04
+
+/**
+ * Diagnostic register - used to reset the controller.
+ */
+#define LSILOGIC_REG_HOST_DIAGNOSTIC 0x08
+# define LSILOGIC_REG_HOST_DIAGNOSTIC_DIAG_MEM_ENABLE (RT_BIT(0))
+# define LSILOGIC_REG_HOST_DIAGNOSTIC_DISABLE_ARM (RT_BIT(1))
+# define LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_ADAPTER (RT_BIT(2))
+# define LSILOGIC_REG_HOST_DIAGNOSTIC_DIAG_RW_ENABLE (RT_BIT(4))
+# define LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_HISTORY (RT_BIT(5))
+# define LSILOGIC_REG_HOST_DIAGNOSTIC_FLASH_BAD_SIG (RT_BIT(6))
+# define LSILOGIC_REG_HOST_DIAGNOSTIC_DRWE (RT_BIT(7))
+# define LSILOGIC_REG_HOST_DIAGNOSTIC_PREVENT_IOC_BOOT (RT_BIT(9))
+# define LSILOGIC_REG_HOST_DIAGNOSTIC_CLEAR_FLASH_BAD_SIG (RT_BIT(10))
+
+#define LSILOGIC_REG_TEST_BASE_ADDRESS 0x0c
+#define LSILOGIC_REG_DIAG_RW_DATA 0x10
+#define LSILOGIC_REG_DIAG_RW_ADDRESS 0x14
+
+/**
+ * Interrupt status register.
+ */
+#define LSILOGIC_REG_HOST_INTR_STATUS 0x30
+# define LSILOGIC_REG_HOST_INTR_STATUS_W_MASK (RT_BIT(3))
+# define LSILOGIC_REG_HOST_INTR_STATUS_DOORBELL_STS (RT_BIT(31))
+# define LSILOGIC_REG_HOST_INTR_STATUS_REPLY_INTR (RT_BIT(3))
+# define LSILOGIC_REG_HOST_INTR_STATUS_SYSTEM_DOORBELL (RT_BIT(0))
+
+/**
+ * Interrupt mask register.
+ */
+#define LSILOGIC_REG_HOST_INTR_MASK 0x34
+# define LSILOGIC_REG_HOST_INTR_MASK_W_MASK (RT_BIT(0) | RT_BIT(3) | RT_BIT(8) | RT_BIT(9))
+# define LSILOGIC_REG_HOST_INTR_MASK_IRQ_ROUTING (RT_BIT(8) | RT_BIT(9))
+# define LSILOGIC_REG_HOST_INTR_MASK_DOORBELL RT_BIT(0)
+# define LSILOGIC_REG_HOST_INTR_MASK_REPLY RT_BIT(3)
+
+/**
+ * Queue registers.
+ */
+#define LSILOGIC_REG_REQUEST_QUEUE 0x40
+#define LSILOGIC_REG_REPLY_QUEUE 0x44
+
+/**
+ * LsiLogic-SCSI controller data.
+ */
+typedef struct
+{
+ /** The SCSI I/O request structure. */
+ MptSCSIIORequest ScsiIoReq;
+ /** S/G elements being used, must come after the I/O request structure. */
+ MptSGEntrySimple32 Sge;
+ /** The reply frame used for address replies. */
+ uint8_t abReply[128];
+ /** I/O base of device. */
+ uint16_t u16IoBase;
+} lsilogic_t;
+
+/* The BusLogic specific data must fit into 1KB (statically allocated). */
+ct_assert(sizeof(lsilogic_t) <= 1024);
+
+#define VBOX_LSILOGIC_NO_DEVICE 0xffff
+
+/* 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;
+
+/**
+ * Converts a segment:offset pair into a 32bit physical address.
+ */
+static uint32_t lsilogic_addr_to_phys(void __far *ptr)
+{
+ return ((uint32_t)FP_SEG(ptr) << 4) + FP_OFF(ptr);
+}
+
+static int lsilogic_cmd(lsilogic_t __far *lsilogic, const void __far *pvReq, uint16_t cbReq,
+ void __far *pvReply, uint16_t cbReply)
+{
+ uint16_t i;
+ const uint32_t __far *pu32Req = (const uint32_t __far *)pvReq;
+ uint16_t __far *pu16Reply = (uint16_t *)pvReply;
+ uint32_t cMsg = cbReq / sizeof(uint32_t);
+ uint16_t cReply = cbReply / sizeof(uint16_t);
+ uint32_t u32Fn = (LSILOGIC_DOORBELL_FUNCTION_HANDSHAKE << 24) | (cMsg << 16);
+
+ if ( cbReq % sizeof(uint32_t)
+ || cbReply % sizeof(uint16_t))
+ return 1;
+
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_DOORBELL, u32Fn);
+ for (i = 0; i < cMsg; i++)
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_DOORBELL, pu32Req[i]);
+
+ for (i = 0; i < cReply; i++)
+ {
+ /* Wait for the system doorbell interrupt status to be set. */
+ while (!(inpd(lsilogic->u16IoBase + LSILOGIC_REG_HOST_INTR_STATUS) & LSILOGIC_REG_HOST_INTR_STATUS_SYSTEM_DOORBELL));
+
+ pu16Reply[i] = (uint16_t)inpd(lsilogic->u16IoBase + LSILOGIC_REG_DOORBELL); /* The lower 16bits contain the reply data. */
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_HOST_INTR_STATUS, 1);
+ }
+
+ return 0;
+}
+
+static int lsilogic_scsi_cmd_exec(lsilogic_t __far *lsilogic)
+{
+ uint32_t u32Reply = 0;
+ uint32_t u32ReplyDummy = 0;
+
+ /* Send it off. */
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_REQUEST_QUEUE, lsilogic_addr_to_phys(&lsilogic->ScsiIoReq));
+
+ /* Wait for it to finish. */
+ while (!(inpd(lsilogic->u16IoBase + LSILOGIC_REG_HOST_INTR_STATUS) & LSILOGIC_REG_HOST_INTR_STATUS_REPLY_INTR));
+
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_HOST_INTR_STATUS, 1);
+
+ /* Read the reply queue. */
+ u32Reply = inpd(lsilogic->u16IoBase + LSILOGIC_REG_REPLY_QUEUE);
+ u32ReplyDummy = inpd(lsilogic->u16IoBase + LSILOGIC_REG_REPLY_QUEUE);
+ if (u32ReplyDummy != 0xffffffff)
+ return 5;
+ if (u32Reply & RT_BIT(31))
+ {
+ /*
+ * This is an address reply indicating a failed transaction, so just return an error without
+ * bothering to check the exact failure reason for now.
+ *
+ * Just provide the reply frame to the reply queue again.
+ */
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_REPLY_QUEUE, lsilogic_addr_to_phys(&lsilogic->abReply));
+ return 4;
+ }
+
+ if (u32Reply != 0xcafe) /* Getting a different context ID should never ever happen. */
+ return 3;
+
+ return 0;
+}
+
+int lsilogic_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ lsilogic_t __far *lsilogic = (lsilogic_t __far *)pvHba;
+ int i;
+
+ _fmemset(&lsilogic->ScsiIoReq, 0, sizeof(lsilogic->ScsiIoReq));
+
+ lsilogic->ScsiIoReq.u8TargetID = idTgt;
+ lsilogic->ScsiIoReq.u8Bus = 0;
+ lsilogic->ScsiIoReq.u8ChainOffset = 0;
+ lsilogic->ScsiIoReq.u8Function = MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST;
+ lsilogic->ScsiIoReq.u8CDBLength = cbCDB;
+ lsilogic->ScsiIoReq.u8SenseBufferLength = 0;
+ lsilogic->ScsiIoReq.u32MessageContext = 0xcafe;
+ lsilogic->ScsiIoReq.u32Control = MPT_SCSIIO_REQUEST_CONTROL_TXDIR_WRITE << 24;
+ lsilogic->ScsiIoReq.u32DataLength = length;
+ for (i = 0; i < cbCDB; i++)
+ lsilogic->ScsiIoReq.au8CDB[i] = aCDB[i];
+
+ lsilogic->Sge.u24Length = length;
+ lsilogic->Sge.fEndOfList = 1;
+ lsilogic->Sge.f64BitAddress = 0;
+ lsilogic->Sge.fBufferContainsData = 0;
+ lsilogic->Sge.fLocalAddress = 0;
+ lsilogic->Sge.u2ElementType = 0x01; /* Simple type */
+ lsilogic->Sge.fEndOfBuffer = 1;
+ lsilogic->Sge.fLastElement = 1;
+ lsilogic->Sge.u32DataBufferAddressLow = lsilogic_addr_to_phys(buffer);
+
+ return lsilogic_scsi_cmd_exec(lsilogic);
+}
+
+int lsilogic_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ lsilogic_t __far *lsilogic = (lsilogic_t __far *)pvHba;
+ int i;
+
+ _fmemset(&lsilogic->ScsiIoReq, 0, sizeof(lsilogic->ScsiIoReq));
+
+ lsilogic->ScsiIoReq.u8TargetID = idTgt;
+ lsilogic->ScsiIoReq.u8Bus = 0;
+ lsilogic->ScsiIoReq.u8ChainOffset = 0;
+ lsilogic->ScsiIoReq.u8Function = MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST;
+ lsilogic->ScsiIoReq.u8CDBLength = cbCDB;
+ lsilogic->ScsiIoReq.u8SenseBufferLength = 0;
+ lsilogic->ScsiIoReq.u32MessageContext = 0xcafe;
+ lsilogic->ScsiIoReq.u32Control = MPT_SCSIIO_REQUEST_CONTROL_TXDIR_READ << 24;
+ lsilogic->ScsiIoReq.u32DataLength = length;
+ for (i = 0; i < cbCDB; i++)
+ lsilogic->ScsiIoReq.au8CDB[i] = aCDB[i];
+
+ lsilogic->Sge.u24Length = length;
+ lsilogic->Sge.fEndOfList = 1;
+ lsilogic->Sge.f64BitAddress = 0;
+ lsilogic->Sge.fBufferContainsData = 0;
+ lsilogic->Sge.fLocalAddress = 0;
+ lsilogic->Sge.u2ElementType = 0x01; /* Simple type */
+ lsilogic->Sge.fEndOfBuffer = 1;
+ lsilogic->Sge.fLastElement = 1;
+ lsilogic->Sge.u32DataBufferAddressLow = lsilogic_addr_to_phys(buffer);
+
+ return lsilogic_scsi_cmd_exec(lsilogic);
+}
+
+/**
+ * Initializes the LsiLogic SCSI HBA and detects attached devices.
+ */
+static int lsilogic_scsi_hba_init(lsilogic_t __far *lsilogic)
+{
+ int rc;
+ MptIOCInitRequest IocInitReq;
+ MptIOCInitReply IocInitReply;
+
+ /*
+ * The following initialization sequence is stripped down to the point to work with
+ * our emulated LsiLogic controller, it will most certainly fail on real hardware.
+ */
+
+ /* Hard reset, write the sequence to enable the diagnostic access. */
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_WRITE_SEQUENCE, 0x04);
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_WRITE_SEQUENCE, 0x02);
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_WRITE_SEQUENCE, 0x07);
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_WRITE_SEQUENCE, 0x0d);
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_HOST_DIAGNOSTIC, LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_ADAPTER);
+
+ IocInitReq.u8WhoInit = LSILOGICWHOINIT_SYSTEM_BIOS;
+ IocInitReq.u8Function = MPT_MESSAGE_HDR_FUNCTION_IOC_INIT;
+ IocInitReq.u32HostMfaHighAddr = 0;
+ IocInitReq.u32SenseBufferHighAddr = 0;
+ IocInitReq.u8MaxBuses = 1;
+ IocInitReq.u8MaxDevices = 4;
+ IocInitReq.u16ReplyFrameSize = sizeof(lsilogic->abReply);
+ rc = lsilogic_cmd(lsilogic, &IocInitReq, sizeof(IocInitReq), &IocInitReply, sizeof(IocInitReply));
+ if (!rc)
+ {
+ /* Provide a single reply frame for SCSI I/O errors. */
+ outpd(lsilogic->u16IoBase + LSILOGIC_REG_REPLY_QUEUE, lsilogic_addr_to_phys(&lsilogic->abReply));
+ return 0;
+ }
+
+ return 1;
+}
+
+/**
+ * Init the LsiLogic SCSI driver and detect attached disks.
+ */
+int lsilogic_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn)
+{
+ lsilogic_t __far *lsilogic = (lsilogic_t __far *)pvHba;
+ uint32_t u32Bar;
+
+ DBG_LSILOGIC("LsiLogic SCSI HBA at Bus %u DevFn 0x%x (raw 0x%x)\n", u8Bus, u8DevFn);
+
+ u32Bar = pci_read_config_dword(u8Bus, u8DevFn, 0x10);
+
+ DBG_LSILOGIC("BAR at 0x10 : 0x%x\n", u32Bar);
+
+ if ((u32Bar & 0x01) != 0)
+ {
+ uint16_t u16IoBase = (u32Bar & 0xfff0);
+
+ /* Enable PCI memory, I/O, bus mastering access in command register. */
+ pci_write_config_word(u8Bus, u8DevFn, 4, 0x7);
+
+ DBG_LSILOGIC("I/O base: 0x%x\n", u16IoBase);
+ lsilogic->u16IoBase = u16IoBase;
+ return lsilogic_scsi_hba_init(lsilogic);
+ }
+ else
+ DBG_LSILOGIC("BAR is MMIO\n");
+
+ return 1;
+}
+
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..e62355d6
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/notes.txt
@@ -0,0 +1,211 @@
+
+ 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.
+
+- NetWare 6.5 boot CD is a rare user of INT 15h/86h, asking for 1,000,000
+ microsecond (1 second) delays. The initial NW 6.5 release boots to Caldera
+ DOS and does not exhibit this behavior. NetWare 6.5 SP2 and later boots
+ straight to NetWare and uses the 1-second sleep.
+
+- 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.
+
+- Older NetWare IDE disk drivers (IDE.DSK from 1993, likely older as well)
+ fall into the same category. If FDPT contains logical geometry, NetWare
+ malfunctions. NetWare 3.x/4.x is unusual in that it boots from a DOS
+ partition using BIOS, and only later switches to its own disk drivers.
+ NetWare reportedly understands FDPT cylinder values over 1024, but requires
+ physical disk geometry in the FDPT (only up to 16 heads).
+
+- 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, Windows 3.1 POWER.DRV and
+ OS/2 APM.SYS use 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.
+
+- Windows 3.1 Standard mode violates the APM specifications and calls into
+ APM with CPL=3, causing the HLT instruction to fault if used. 386 Enhanced
+ mode Windows 3.1 calls into APM with CPL=3.
+
+- 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..f4c6deab
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/orgs.asm
@@ -0,0 +1,2128 @@
+; $Id: orgs.asm $
+;; @file
+; ???
+;
+
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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_SIZE equ 1 ; 1K minimum -- other modules may add to it
+
+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
+SYS_SUBMODEL_ID equ 1
+else
+SYS_MODEL_ID equ 0FBh ; PC/XT
+SYS_SUBMODEL_ID equ 0
+endif
+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 al, 16h
+ out CMOS_ADDR, al
+ in al, CMOS_DATA
+ mov ah, al
+ mov al, 15h
+ out CMOS_ADDR, al
+ in al, CMOS_DATA
+ sub ax, EBDA_SIZE
+ 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
+ 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 table entry
+fd_entry struc
+ cyls dw ? ; Cylinders
+ heads db ? ; Heads
+ res_1 dw ?
+ wpcomp dw ? ; Write pre-compensation start cylinder
+ res_2 db ?
+ ctrl db ? ; Control byte
+ res_3 db ?
+ res_4 db ?
+ res_5 db ?
+ lzone dw ? ; Landing zone cylinder
+ spt db ? ; Sectors per track
+ res_6 db ?
+fd_entry ends
+
+;; --------------------------------------------------------
+;; Fixed Disk Parameter Table
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0E401h ; fixed wrt preceding
+
+rom_fdpt:
+ fd_entry < 306, 4, 0, 128, 0, 0, 0, 0, 0, 305, 17, 0> ; Type 1, 10 MB
+ fd_entry < 615, 4, 0, 300, 0, 0, 0, 0, 0, 615, 17, 0> ; Type 2, 20 MB
+ fd_entry < 615, 6, 0, 300, 0, 0, 0, 0, 0, 615, 17, 0> ; Type 3, 30 MB
+ fd_entry < 940, 8, 0, 512, 0, 0, 0, 0, 0, 940, 17, 0> ; Type 4, 62 MB
+ fd_entry < 940, 6, 0, 512, 0, 0, 0, 0, 0, 940, 17, 0> ; Type 5, 46 MB
+ fd_entry < 615, 4, 0, -1, 0, 0, 0, 0, 0, 615, 17, 0> ; Type 6, 20 MB
+ fd_entry < 462, 8, 0, 256, 0, 0, 0, 0, 0, 511, 17, 0> ; Type 7, 31 MB
+ fd_entry < 733, 5, 0, -1, 0, 0, 0, 0, 0, 733, 17, 0> ; Type 8, 30 MB
+ fd_entry < 900, 15, 0, -1, 0, 8, 0, 0, 0, 901, 17, 0> ; Type 9, 112 MB
+ fd_entry < 820, 3, 0, -1, 0, 0, 0, 0, 0, 820, 17, 0> ; Type 10, 20 MB
+
+ fd_entry < 855, 5, 0, -1, 0, 0, 0, 0, 0, 855, 17, 0> ; Type 11, 35 MB
+ fd_entry < 855, 7, 0, -1, 0, 0, 0, 0, 0, 855, 17, 0> ; Type 12, 49 MB
+ fd_entry < 306, 8, 0, 128, 0, 0, 0, 0, 0, 319, 17, 0> ; Type 13, 20 MB
+ fd_entry < 733, 7, 0, -1, 0, 0, 0, 0, 0, 733, 17, 0> ; Type 14, 42 MB
+ fd_entry < 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0> ; Reserved
+ fd_entry < 612, 4, 0, -1, 0, 0, 0, 0, 0, 633, 17, 0> ; Type 16, 20 MB
+ fd_entry < 977, 5, 0, 300, 0, 0, 0, 0, 0, 977, 17, 0> ; Type 17, 40 MB
+ fd_entry < 977, 7, 0, -1, 0, 0, 0, 0, 0, 977, 17, 0> ; Type 18, 56 MB
+ fd_entry <1024, 7, 0, 512, 0, 0, 0, 0, 0,1023, 17, 0> ; Type 19, 59 MB
+ fd_entry < 733, 5, 0, 300, 0, 0, 0, 0, 0, 732, 17, 0> ; Type 20, 30 MB
+
+ fd_entry < 733, 7, 0, 300, 0, 0, 0, 0, 0, 732, 17, 0> ; Type 21, 42 MB
+ fd_entry < 733, 5, 0, 300, 0, 0, 0, 0, 0, 733, 17, 0> ; Type 22, 30 MB
+ fd_entry < 306, 4, 0, 0, 0, 0, 0, 0, 0, 336, 17, 0> ; Type 23, 10 MB
+
+;; --------------------------------------------------------
+;; 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
+
+ ;; calculate EBDA segment
+ xor ax, ax
+ mov ds, ax
+ mov ax, ds:[413h] ; conventional memory size minus EBDA size
+ mov cx, 64 ; 64 paras per KB
+ mul cx
+ ;; store EBDA seg in 40:0E
+ mov word ptr ds:[40Eh], ax
+ ;; store EBDA size in the first word of EBDA
+ mov ds, ax
+ mov byte ptr ds:[0], EBDA_SIZE
+ ;; must reset DS to zero again
+ xor ax, ax
+ mov ds, ax
+ 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?
+ sti
+stay_here:
+ hlt
+ jmp stay_here
+
+;;
+;; INT 19h - boot service - relocated
+;;
+int19_relocated:
+ ;; 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
+
+if 0 ; Sample VPD table
+
+;; IBM style VPD (Vital Product Data) information. Most IBM systems
+;; had a VPD table since about 1992, later the same information was
+;; also reported through DMI.
+
+align 16
+ db 0AAh, 055h, 'VPD'
+ db 48 ; VPD size
+ db 'RESERVE' ; reserved... for what?
+ db 'INET35WW ' ; BIOS build ID
+ db '5238NXU' ; system serial number
+ db 'J1Y3581338D' ; unique ID
+ db '8643MD0' ; IBM machine type
+ db 0 ; checksum (to be calculated)
+endif
+
+;; --------------------------------------------------------
+;; 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 ; null terminator
+ ;; 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..5a4cbe6b
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/parallel.c
@@ -0,0 +1,101 @@
+/* $Id: parallel.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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..49e35b35
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pci32.c
@@ -0,0 +1,32 @@
+/* $Id: pci32.c $ */
+/** @file
+ * 32-bit PCI BIOS wrapper.
+ */
+
+/*
+ * Copyright (C) 2004-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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..b6c9f06c
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcibio32.asm
@@ -0,0 +1,108 @@
+; $Id: pcibio32.asm $
+;; @file
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+
+
+; 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..5e52e05a
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcibios.c
@@ -0,0 +1,423 @@
+/* $Id: pcibios.c $ */
+/** @file
+ * PCI BIOS support.
+ */
+
+/*
+ * Copyright (C) 2004-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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. When searching
+ * by class, the ignore_if flag only compares the base and sub-class code,
+ * ignoring the programming interface code.
+ *
+ * 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, int ignore_if)
+{
+ 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 or even just 2 bytes are compared for class searches. */
+ if (search_class)
+ if (ignore_if)
+ data >>= 16;
+ else
+ 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, 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, 0);
+ 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..4f60fcb8
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcibios.inc
@@ -0,0 +1,372 @@
+; $Id: pcibios.inc $
+;; @file
+; ???
+;
+
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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..aca6c9ea
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pciutil.c
@@ -0,0 +1,220 @@
+/* $Id: pciutil.c $ */
+/** @file
+ * Utility routines for calling the PCI BIOS.
+ */
+
+/*
+ * Copyright (C) 2011-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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" \
+ "shl ecx, 16" \
+ "mov cx, dx" \
+ "int 0x1a" \
+ parm [ax] [bx] [di] [cx dx];
+#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 base and sub-class code, ignoring the programming interface
+ * 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_class_noif(uint16_t dev_class)
+{
+#if VBOX_BIOS_CPU >= 80386
+ /* Internal call, not an interrupt service! */
+ return pci16_find_device(dev_class, 0 /*index*/, 1 /*search class*/, 1 /*ignore prog if*/);
+#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);
+}
+
+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)
+{
+#if VBOX_BIOS_CPU >= 80386
+ pci_write_cfgd((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_DWORD, (bus << 8) | dev_fn, reg, val);
+#else
+ pci_write_cfgw((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_WORD, (bus << 8) | dev_fn, reg, val & 0xffff);
+ pci_write_cfgw((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_WORD, (bus << 8) | dev_fn, reg + 2, val >> 16);
+#endif
+}
+
diff --git a/src/VBox/Devices/PC/BIOS/pciutil.h b/src/VBox/Devices/PC/BIOS/pciutil.h
new file mode 100644
index 00000000..174605f5
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pciutil.h
@@ -0,0 +1,48 @@
+/* $Id: pciutil.h $ */
+/** @file
+ * Utility routines for calling the PCI BIOS.
+ */
+
+/*
+ * Copyright (C) 2011-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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);
+extern uint16_t pci_find_class_noif(uint16_t dev_class);
+
+#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..49f0bdba
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pirq.inc
@@ -0,0 +1,487 @@
+; $Id: pirq.inc $
+;; @file
+; ???
+;
+
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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..a72cb4ae
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pmode.inc
@@ -0,0 +1,91 @@
+; $Id: pmode.inc $
+;; @file
+; Enter and exit a minimal protected-mode environment.
+;
+
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;; 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..a6ba8c44
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pmsetup.inc
@@ -0,0 +1,75 @@
+; $Id: pmsetup.inc $
+;; @file
+; Initial system setup which needs to run in protected mode.
+;
+
+;
+; Copyright (C) 2004-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+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..f7a20173
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/post.c
@@ -0,0 +1,218 @@
+/* $Id: post.c $ */
+/** @file
+ * BIOS POST routines. Used only during initialization.
+ */
+
+/*
+ * Copyright (C) 2004-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+#if DEBUG_POST || 0
+# 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;
+}
+
+/* The ROM init routine might trash register. Give the compiler a heads-up. */
+typedef void __far (rom_init_rtn)(void);
+#pragma aux rom_init_rtn modify [ax bx cx dx si di es /*ignored:*/ bp] /*ignored:*/ loadds;
+
+/* The loadds bit is ignored for rom_init_rtn, the impression from the code
+ generator is that this is due to using a memory model where DS is fixed.
+ If we add DS as a modified register, we'll get run into compiler error
+ E1122 (BAD_REG) because FixedRegs() in cg/intel/386/c/386rgtbl.c returns
+ HW_DS as part of the fixed register set that cannot be modified.
+
+ The problem of the vga bios trashing DS isn't a biggie, except when
+ something goes sideways before we can reload it. Setting a I/O port
+ breakpoint on port 80h and wait a while before resuming execution
+ (ba i 1 80 "sleep 400 ; g") will usually trigger a keyboard init panic and
+ showcase the issue. The panic message is garbage because it's read from
+ segment 0c000h instead of 0f000h. */
+static void restore_ds_as_dgroup(void);
+#pragma aux restore_ds_as_dgroup = \
+ "mov ax, 0f000h" \
+ "mov ds, ax" \
+ modify exact [ax];
+
+
+/* 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)) {
+ rom_init_rtn *rom_init;
+
+ /* Checksum good, initialize ROM. */
+ rom_init = (rom_init_rtn *)&rom->code;
+ rom_init();
+ int_disable();
+ restore_ds_as_dgroup();
+ /** @todo BP is not restored. */
+ 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..88b08c88
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/print.c
@@ -0,0 +1,306 @@
+/* $Id: print.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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..bccdf9c5
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ps2mouse.c
@@ -0,0 +1,462 @@
+/* $Id: ps2mouse.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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..2ca304f4
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/scsi.c
@@ -0,0 +1,560 @@
+/* $Id: scsi.c $ */
+/** @file
+ * SCSI host adapter driver to boot from SCSI disks
+ */
+
+/*
+ * Copyright (C) 2004-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+#include "pciutil.h"
+#include "ebda.h"
+#include "scsi.h"
+
+
+#if DEBUG_SCSI
+# define DBG_SCSI(...) BX_INFO(__VA_ARGS__)
+#else
+# define DBG_SCSI(...)
+#endif
+
+#define VBSCSI_MAX_DEVICES 16 /* Maximum number of devices a SCSI device currently supported. */
+
+#define VBOX_SCSI_NO_HBA 0xffff
+
+typedef uint16_t (* scsi_hba_detect)(void);
+typedef int (* scsi_hba_init)(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn);
+typedef int (* scsi_hba_cmd_data_out)(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length);
+typedef int (* scsi_hba_cmd_data_in)(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length);
+
+typedef struct
+{
+ uint16_t idPciVendor;
+ uint16_t idPciDevice;
+ scsi_hba_detect detect;
+ scsi_hba_init init;
+ scsi_hba_cmd_data_out cmd_data_out;
+ scsi_hba_cmd_data_in cmd_data_in;
+} scsi_hba_t;
+
+/* 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(uint16_t __far *pu16EaxHi)
+{
+ *pu16EaxHi = eax_hi_rd();
+}
+
+void inline high_bits_restore(uint16_t u16EaxHi)
+{
+ eax_hi_wr(u16EaxHi);
+}
+
+/* Pointers to the HBA specific access routines. */
+scsi_hba_t hbaacc[] =
+{
+ { 0x1000, 0x0030, NULL, lsilogic_scsi_init, lsilogic_scsi_cmd_data_out, lsilogic_scsi_cmd_data_in }, /* SPI */
+ { 0x1000, 0x0054, NULL, lsilogic_scsi_init, lsilogic_scsi_cmd_data_out, lsilogic_scsi_cmd_data_in }, /* SAS */
+ { 0x104b, 0x1040, NULL, buslogic_scsi_init, buslogic_scsi_cmd_data_out, buslogic_scsi_cmd_data_in }, /* PCI */
+#ifdef VBOX_WITH_VIRTIO_SCSI
+ { 0x1af4, 0x1048, NULL, virtio_scsi_init, virtio_scsi_cmd_data_out, virtio_scsi_cmd_data_in },
+#endif
+ { 0xffff, 0xffff, btaha_scsi_detect, btaha_scsi_init, buslogic_scsi_cmd_data_out, buslogic_scsi_cmd_data_in } /* ISA */
+};
+
+/**
+ * Allocates 1K of conventional memory.
+ */
+static uint16_t scsi_hba_mem_alloc(void)
+{
+ uint16_t base_mem_kb;
+ uint16_t hba_seg;
+
+ base_mem_kb = read_word(0x00, 0x0413);
+
+ DBG_SCSI("SCSI: %dK of base mem\n", base_mem_kb);
+
+ if (base_mem_kb == 0)
+ return 0;
+
+ base_mem_kb--; /* Allocate one block. */
+ hba_seg = (((uint32_t)base_mem_kb * 1024) >> 4); /* Calculate start segment. */
+
+ write_word(0x00, 0x0413, base_mem_kb);
+
+ return hba_seg;
+}
+
+/**
+ * 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 hba_seg;
+ uint8_t idx_hba;
+ uint8_t target_id;
+ uint8_t device_id;
+ uint16_t eax_hi;
+
+ 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;
+
+ high_bits_save(&eax_hi);
+
+ /* 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;
+
+
+ hba_seg = bios_dsk->scsidev[device_id].hba_seg;
+ idx_hba = bios_dsk->scsidev[device_id].idx_hba;
+ 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 = hbaacc[idx_hba].cmd_data_in(hba_seg :> 0, 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);
+ high_bits_restore(eax_hi);
+
+ 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 hba_seg;
+ uint8_t idx_hba;
+ uint8_t target_id;
+ uint8_t device_id;
+ uint16_t eax_hi;
+
+ 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;
+
+ high_bits_save(&eax_hi);
+
+ /* 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;
+
+ hba_seg = bios_dsk->scsidev[device_id].hba_seg;
+ idx_hba = bios_dsk->scsidev[device_id].idx_hba;
+ 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 = hbaacc[idx_hba].cmd_data_out(hba_seg :> 0, 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);
+ high_bits_restore(eax_hi);
+
+ 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 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,
+ uint32_t length, uint8_t inout, char __far *buffer)
+{
+ bio_dsk_t __far *bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+ uint8_t rc;
+ uint8_t target_id;
+ uint16_t hba_seg;
+ uint8_t idx_hba;
+ uint16_t eax_hi;
+
+ /* 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, device %d, target %d\n", __func__,
+ length, 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);
+
+ high_bits_save(&eax_hi);
+ hba_seg = bios_dsk->scsidev[device_id].hba_seg;
+ idx_hba = bios_dsk->scsidev[device_id].idx_hba;
+ target_id = bios_dsk->scsidev[device_id].target_id;
+
+ 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;
+
+ DBG_SCSI("%s: reading %u bytes, device %d, target %d\n", __func__,
+ length, device_id, bios_dsk->scsidev[device_id].target_id);
+
+ rc = hbaacc[idx_hba].cmd_data_in(hba_seg :> 0, target_id, (void __far *)cmdbuf, cmdlen,
+ bios_dsk->drqp.buffer, length);
+ if (!rc)
+ bios_dsk->drqp.trsfbytes = length;
+
+ DBG_SCSI("%s: transferred %u bytes\n", __func__, length);
+ high_bits_restore(eax_hi);
+
+ return rc;
+}
+
+/**
+ * Enumerate attached devices.
+ *
+ * @param hba_seg Segement of the HBA controller block.
+ * @param idx_hba The HBA driver index used for accessing the enumerated devices.
+ */
+static void scsi_enumerate_attached_devices(uint16_t hba_seg, uint8_t idx_hba)
+{
+ 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 = hbaacc[idx_hba].cmd_data_in(hba_seg :> 0, i, aCDB, 6, buffer, 5);
+ if (rc != 0)
+ {
+ DBG_SCSI("%s: SCSI_INQUIRY failed\n", __func__); /* Not a fatal error if the device doesn't exist. */
+ continue;
+ }
+
+ 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 = hbaacc[idx_hba].cmd_data_in(hba_seg :> 0, 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 = get_cmos_word(cmos_base /*, cmos_base + 1*/);
+ 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].hba_seg = hba_seg;
+ bios_dsk->scsidev[devcount_scsi].idx_hba = idx_hba;
+ 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].hba_seg = hba_seg;
+ bios_dsk->scsidev[devcount_scsi].idx_hba = idx_hba;
+ 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;
+ }
+}
+
+/**
+ * Init the SCSI driver and detect attached disks.
+ */
+void BIOSCALL scsi_init(void)
+{
+ int i;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+ bios_dsk->scsi_devcount = 0;
+
+ /* Walk the supported drivers and try to detect the HBA. */
+ for (i = 0; i < sizeof(hbaacc)/sizeof(hbaacc[0]); i++)
+ {
+ uint16_t busdevfn;
+
+ if (hbaacc[i].detect) {
+ busdevfn = hbaacc[i].detect();
+ } else {
+ busdevfn = pci_find_device(hbaacc[i].idPciVendor, hbaacc[i].idPciDevice);
+ }
+
+ if (busdevfn != VBOX_SCSI_NO_HBA)
+ {
+ int rc;
+ uint8_t u8Bus, u8DevFn;
+ uint16_t hba_seg = scsi_hba_mem_alloc();
+ if (hba_seg == 0) /* No point in trying the rest if we are out of memory. */
+ break;
+
+ u8Bus = (busdevfn & 0xff00) >> 8;
+ u8DevFn = busdevfn & 0x00ff;
+
+ DBG_SCSI("SCSI HBA at Bus %u DevFn 0x%x (raw 0x%x)\n", u8Bus, u8DevFn, busdevfn);
+ rc = hbaacc[i].init(hba_seg :> 0, u8Bus, u8DevFn);
+ if (!rc)
+ scsi_enumerate_attached_devices(hba_seg, i);
+ /** @todo Free memory on error. */
+ }
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/scsi.h b/src/VBox/Devices/PC/BIOS/scsi.h
new file mode 100644
index 00000000..f2133546
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/scsi.h
@@ -0,0 +1,91 @@
+/* $Id: scsi.h $ */
+/** @file
+ * PC BIOS - SCSI definitions.
+ */
+
+/*
+ * Copyright (C) 2019-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_scsi_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_scsi_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+/* 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
+
+#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);
+
+extern int lsilogic_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn);
+extern int lsilogic_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length);
+extern int lsilogic_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length);
+
+extern int buslogic_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn);
+extern int buslogic_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length);
+extern int buslogic_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length);
+
+extern uint16_t btaha_scsi_detect();
+extern int btaha_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn);
+
+extern int virtio_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn);
+extern int virtio_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length);
+extern int virtio_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length);
+
+#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_scsi_h */
+
diff --git a/src/VBox/Devices/PC/BIOS/serial.c b/src/VBox/Devices/PC/BIOS/serial.c
new file mode 100644
index 00000000..c7bdfc0b
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/serial.c
@@ -0,0 +1,138 @@
+/* $Id: serial.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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..6d725938
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/smidmi.inc
@@ -0,0 +1,84 @@
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+; --------------------------------------------------------------------
+;
+; 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
+
+align 16
+ ;;
+ ;; NOTE! These are placeholders, also required for correct BIOS
+ ;; checksum calculation. Overwritten by DevPcBios.
+ ;;
+
+ ;; 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..96d36847
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/system.c
@@ -0,0 +1,897 @@
+/* $Id: system.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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 <iprt/cdefs.h>
+#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;
+
+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( );
+ // Unmask IRQ8 so INT70 will get through.
+ irqDisable = inb( 0xA1 );
+ outb( 0xA1, irqDisable & 0xFE );
+ bRegister = inb_cmos( 0xB );
+ // Turn on the Periodic Interrupt timer
+ outb_cmos( 0xB, bRegister | 0x40 );
+ } else {
+ // Interval already set.
+ BX_DEBUG_INT15("int15: Func 83h, failed, already waiting.\n" );
+ SET_CF(); // AH is left unmodified
+ }
+ } 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:
+ // 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, 0x40 ); // Byte location, segment
+ write_word( 0x40, 0x9A, 0xA0 ); // Byte location, offset
+ write_word( 0x40, 0x9C, DX ); // Low word, delay
+ write_word( 0x40, 0x9E, CX ); // High word, delay.
+ // Unmask IRQ8 so INT70 will get through.
+ irqDisable = inb( 0xA1 );
+ outb( 0xA1, irqDisable & 0xFE );
+ bRegister = inb_cmos( 0xB );
+ // Turn on the Periodic Interrupt timer
+ outb_cmos( 0xB, bRegister | 0x40 );
+ // Now wait until timer interrupt says wait is done.
+ int_enable();
+ do {
+ halt();
+ bRegister = read_byte( 0x40, 0xA0 );
+ }
+ while( !(bRegister & 0x80) );
+ write_byte( 0x40, 0xA0, 0 ); // Deactivate wait.
+ CLEAR_CF( );
+ } else {
+ // Interval already set.
+ BX_DEBUG_INT15("int15: Func 86h, failed, already waiting.\n" );
+ SET_CF(); // AH is left unmodified
+ }
+ break;
+
+ case 0x88:
+ // Get the amount of extended memory (above 1M)
+#if VBOX_BIOS_CPU >= 80286
+ AX = get_cmos_word(0x30 /*, 0x31*/);
+
+#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;
+
+static void set_e820_range_len(uint16_t reg_ES, uint16_t reg_DI, uint32_t start, uint32_t len, uint8_t type)
+{
+ mem_range_t __far *fpRange = reg_ES :> (mem_range_t *)reg_DI;
+ fpRange->start = start;
+ fpRange->len = len;
+ fpRange->type = type;
+ fpRange->xlen = 0;
+ fpRange->xstart = 0;
+}
+
+#define set_e820_range_end(reg_ES, reg_DI, start, end, type) set_e820_range_len(reg_ES, reg_DI, start, end - start, type)
+
+static void set_e820_range_above_4g(uint16_t reg_ES, uint16_t reg_DI, uint16_t c64k_above_4G_low, uint16_t c64k_above_4G_high)
+{
+ mem_range_t __far *fpRange = reg_ES :> (mem_range_t *)reg_DI;
+ fpRange->start = 0; /* Starts at 4G, so low start address dword is zero */
+ fpRange->xstart = 1; /* And the high start dword is 1. */
+ fpRange->len = (uint32_t)c64k_above_4G_low << 16;
+ fpRange->xlen = c64k_above_4G_high;
+ fpRange->type = 1; /* type is usable */
+}
+
+void BIOSCALL int15_function32(sys32_regs_t r)
+{
+ 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) {
+ uint32_t extended_memory_size; // 64bits long
+ uint16_t c64k_above_4G_low;
+ uint16_t c64k_above_4G_high;
+#ifdef BIOS_WITH_MCFG_E820
+ uint32_t mcfgStart, mcfgSize;
+#endif
+
+ /* Go for the amount of memory above 16MB first. */
+ extended_memory_size = get_cmos_word(0x34 /*, 0x35*/);
+ if (extended_memory_size > 0)
+ {
+ extended_memory_size += _16M / _64K;
+ extended_memory_size <<= 16;
+ }
+ else
+ {
+ /* No memory above 16MB, query memory above 1MB ASSUMING we have at least 1MB. */
+ extended_memory_size = get_cmos_word(0x30 /*, 0x31*/);
+ extended_memory_size += _1M / _1K;
+ extended_memory_size *= _1K;
+ }
+
+ /* This is the amount of memory above 4GB measured in 64KB units.
+ Note! 0x65 can be used when we need to go beyond 255 TiB */
+ c64k_above_4G_low = get_cmos_word(0x61 /*, 0x62*/);
+ c64k_above_4G_high = get_cmos_word(0x63 /*, 0x64*/);
+
+#ifdef BIOS_WITH_MCFG_E820 /** @todo Actually implement the mcfg reporting. */
+ mcfgStart = 0;
+ mcfgSize = 0;
+#endif
+ switch (BX)
+ {
+ case 0:
+ set_e820_range_end(ES, DI, 0x0000000L, 0x0009fc00L, 1);
+ EBX = 1;
+ break;
+ case 1:
+ set_e820_range_end(ES, DI, 0x0009fc00L, 0x000a0000L, 2);
+ EBX = 2;
+ break;
+ case 2:
+ /* 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_end(ES, DI, 0x000f0000L, 0x00100000L, 2);
+ EBX = 3;
+ break;
+ case 3:
+ set_e820_range_end(ES, DI, 0x00100000L, extended_memory_size - ACPI_DATA_SIZE, 1);
+ EBX = 4;
+ break;
+ case 4:
+ set_e820_range_len(ES, DI, extended_memory_size - ACPI_DATA_SIZE, ACPI_DATA_SIZE, 3); // ACPI RAM
+ EBX = 5;
+ break;
+ case 5:
+ set_e820_range_len(ES, DI, 0xfec00000, 0x1000, 2); // I/O APIC
+ EBX = 6;
+ break;
+ case 6:
+ set_e820_range_len(ES, DI, 0xfee00000, 0x1000, 2); // Local APIC
+ EBX = 7;
+ break;
+ case 7:
+ /* 256KB BIOS area at the end of 4 GB */
+ set_e820_range_len(ES, DI, 0xfffc0000L, 0x40000, 2);
+#ifdef BIOS_WITH_MCFG_E820
+ if (mcfgStart != 0)
+ EBX = 8;
+ else
+#endif
+ if (c64k_above_4G_low || c64k_above_4G_high)
+ EBX = 9;
+ else
+ EBX = 0;
+ break;
+#ifdef BIOS_WITH_MCFG_E820
+ case 8:
+ /* PCI MMIO config space (MCFG) */
+ set_e820_range_len(ES, DI, mcfgStart, mcfgSize, 2);
+ if (c64k_above_4G_low || c64k_above_4G_high)
+ EBX = 9;
+ else
+ EBX = 0;
+ break;
+#endif
+ case 9:
+ /* Mapping of memory above 4 GB if present. */
+ if (c64k_above_4G_low || c64k_above_4G_high)
+ {
+ set_e820_range_above_4g(ES, DI, c64k_above_4G_low, c64k_above_4G_high);
+ EBX = 0;
+ break;
+ }
+ /* fall thru */
+ 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 = get_cmos_word(0x30 /*, 0x31*/);
+
+ // limit to 15M
+ if(CX > 0x3c00)
+ CX = 0x3c00;
+
+ // Get the amount of extended memory above 16M in 64k blocks
+ DX = get_cmos_word(0x34 /*, 0x35*/);
+
+ // 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..ec812ce1
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/timepci.c
@@ -0,0 +1,334 @@
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ * --------------------------------------------------------------------
+ *
+ * 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 or AH=86) 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 off 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..37772baf
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/vbdmismi.inc
@@ -0,0 +1,37 @@
+; $Id: vbdmismi.inc $
+;; @file
+; DMI and SMBIOS definitions for VBox.
+;
+
+;
+; Copyright (C) 2006-2023 Oracle and/or its affiliates.
+;
+; This file is part of VirtualBox base platform packages, as
+; available from https://www.virtualbox.org.
+;
+; This program is free software; you can redistribute it and/or
+; modify it under the terms of the GNU General Public License
+; as published by the Free Software Foundation, in version 3 of the
+; License.
+;
+; This program 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
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program; if not, see <https://www.gnu.org/licenses>.
+;
+; SPDX-License-Identifier: GPL-3.0-only
+;
+
+;; 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..706144a4
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/vds.c
@@ -0,0 +1,128 @@
+/* $Id: vds.c $ */
+/** @file
+ * Utility routines for calling the Virtual DMA Services.
+ */
+
+/*
+ * Copyright (C) 2011-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+
+#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..f4d89308
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/vds.h
@@ -0,0 +1,132 @@
+/* $Id: vds.h $ */
+/** @file
+ * Utility routines for calling the Virtual DMA Services.
+ */
+
+/*
+ * Copyright (C) 2006-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#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 */
+
diff --git a/src/VBox/Devices/PC/BIOS/virtio.c b/src/VBox/Devices/PC/BIOS/virtio.c
new file mode 100644
index 00000000..37560b5f
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/virtio.c
@@ -0,0 +1,701 @@
+/* $Id: virtio.c $ */
+/** @file
+ * VirtIO-SCSI host adapter driver to boot from disks.
+ */
+
+/*
+ * Copyright (C) 2019-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "ebda.h"
+#include "inlines.h"
+#include "pciutil.h"
+#include "vds.h"
+#include "scsi.h"
+
+//#define DEBUG_VIRTIO 1
+#if DEBUG_VIRTIO
+# define DBG_VIRTIO(...) BX_INFO(__VA_ARGS__)
+#else
+# define DBG_VIRTIO(...)
+#endif
+
+/* The maximum CDB size. */
+#define VIRTIO_SCSI_CDB_SZ 16
+/** Maximum sense data to return. */
+#define VIRTIO_SCSI_SENSE_SZ 32
+
+#define VIRTIO_SCSI_RING_ELEM 3
+
+/**
+ * VirtIO queue descriptor.
+ */
+typedef struct
+{
+ /** 64bit guest physical address of the buffer, split into high and low part because we work in real mode. */
+ uint32_t GCPhysBufLow;
+ uint32_t GCPhysBufHigh;
+ /** Length of the buffer in bytes. */
+ uint32_t cbBuf;
+ /** Flags for the buffer. */
+ uint16_t fFlags;
+ /** Next field where the buffer is continued if _NEXT flag is set. */
+ uint16_t idxNext;
+} virtio_q_desc_t;
+
+#define VIRTIO_Q_DESC_F_NEXT 0x1
+#define VIRTIO_Q_DESC_F_WRITE 0x2
+#define VIRTIO_Q_DESC_F_INDIRECT 0x4
+
+/**
+ * VirtIO available ring.
+ */
+typedef struct
+{
+ /** Flags. */
+ volatile uint16_t fFlags;
+ /** Next index to write an available buffer by the driver. */
+ volatile uint16_t idxNextFree;
+ /** The ring - we only provide one entry. */
+ volatile uint16_t au16Ring[VIRTIO_SCSI_RING_ELEM];
+ /** Used event index. */
+ volatile uint16_t u16EvtUsed;
+} virtio_q_avail_t;
+
+/**
+ * VirtIO queue used element.
+ */
+typedef struct
+{
+ /** Index of the start of the descriptor chain. */
+ uint32_t u32Id;
+ /** Number of bytes used in the descriptor chain. */
+ uint32_t cbUsed;
+} virtio_q_used_elem_t;
+
+/**
+ * VirtIo used ring.
+ */
+typedef struct
+{
+ /** Flags. */
+ volatile uint16_t fFlags;
+ /** Index where the next entry would be written by the device. */
+ volatile uint16_t idxNextUsed;
+ /** The used ring. */
+ virtio_q_used_elem_t aRing[VIRTIO_SCSI_RING_ELEM];
+} virtio_q_used_t;
+
+/**
+ * VirtIO queue structure we are using, needs to be aligned on a 16byte boundary.
+ */
+typedef struct
+{
+ /** The descriptor table, using 3 max. */
+ virtio_q_desc_t aDescTbl[3];
+ /** Available ring. */
+ virtio_q_avail_t AvailRing;
+ /** Used ring. */
+ virtio_q_used_t UsedRing;
+ /** The notification offset for the queue. */
+ uint32_t offNotify;
+} virtio_q_t;
+
+/**
+ * VirtIO SCSI request structure passed in the queue.
+ */
+typedef struct
+{
+ /** The LUN to address. */
+ uint8_t au8Lun[8];
+ /** Request ID - split into low and high part. */
+ uint32_t u32IdLow;
+ uint32_t u32IdHigh;
+ /** Task attributes. */
+ uint8_t u8TaskAttr;
+ /** Priority. */
+ uint8_t u8Prio;
+ /** CRN value, usually 0. */
+ uint8_t u8Crn;
+ /** The CDB. */
+ uint8_t abCdb[VIRTIO_SCSI_CDB_SZ];
+} virtio_scsi_req_hdr_t;
+
+/**
+ * VirtIO SCSI status structure filled by the device.
+ */
+typedef struct
+{
+ /** Returned sense length. */
+ uint32_t cbSense;
+ /** Residual amount of bytes left. */
+ uint32_t cbResidual;
+ /** Status qualifier. */
+ uint16_t u16StatusQual;
+ /** Status code. */
+ uint8_t u8Status;
+ /** Response code. */
+ uint8_t u8Response;
+ /** Sense data. */
+ uint8_t abSense[VIRTIO_SCSI_SENSE_SZ];
+} virtio_scsi_req_sts_t;
+
+/**
+ * VirtIO config for the different data structures.
+ */
+typedef struct
+{
+ /** BAR where to find it. */
+ uint8_t u8Bar;
+ /** Padding. */
+ uint8_t abPad[3];
+ /** Offset within the bar. */
+ uint32_t u32Offset;
+ /** Length of the structure in bytes. */
+ uint32_t u32Length;
+} virtio_bar_cfg_t;
+
+/**
+ * VirtIO PCI capability structure.
+ */
+typedef struct
+{
+ /** Capability typem should always be PCI_CAP_ID_VNDR*/
+ uint8_t u8PciCapId;
+ /** Offset where to find the next capability or 0 if last capability. */
+ uint8_t u8PciCapNext;
+ /** Size of the capability in bytes. */
+ uint8_t u8PciCapLen;
+ /** VirtIO capability type. */
+ uint8_t u8VirtIoCfgType;
+ /** BAR where to find it. */
+ uint8_t u8Bar;
+ /** Padding. */
+ uint8_t abPad[3];
+ /** Offset within the bar. */
+ uint32_t u32Offset;
+ /** Length of the structure in bytes. */
+ uint32_t u32Length;
+} virtio_pci_cap_t;
+
+/**
+ * VirtIO-SCSI controller data.
+ */
+typedef struct
+{
+ /** The queue used - must be first for alignment reasons. */
+ virtio_q_t Queue;
+ /** The BAR configs read from the PCI configuration space, see VIRTIO_PCI_CAP_*_CFG,
+ * only use 4 because VIRTIO_PCI_CAP_PCI_CFG is not part of this. */
+ virtio_bar_cfg_t aBarCfgs[4];
+ /** The start offset in the PCI configuration space where to find the VIRTIO_PCI_CAP_PCI_CFG
+ * capability for the alternate access method to the registers. */
+ uint8_t u8PciCfgOff;
+ /** The notification offset multiplier. */
+ uint32_t u32NotifyOffMult;
+ /** PCI bus where the device is located. */
+ uint8_t u8Bus;
+ /** Device/Function number. */
+ uint8_t u8DevFn;
+ /** The current executed command structure. */
+ virtio_scsi_req_hdr_t ScsiReqHdr;
+ virtio_scsi_req_sts_t ScsiReqSts;
+} virtio_t;
+
+/* The VirtIO specific data must fit into 1KB (statically allocated). */
+ct_assert(sizeof(virtio_t) <= 1024);
+
+/** PCI configuration fields. */
+#define PCI_CONFIG_CAP 0x34
+
+#define PCI_CAP_ID_VNDR 0x09
+
+#define VBOX_VIRTIO_NIL_CFG 0xff
+
+#define VIRTIO_PCI_CAP_COMMON_CFG 0x01
+#define VIRTIO_PCI_CAP_NOTIFY_CFG 0x02
+#define VIRTIO_PCI_CAP_ISR_CFG 0x03
+#define VIRTIO_PCI_CAP_DEVICE_CFG 0x04
+#define VIRTIO_PCI_CAP_PCI_CFG 0x05
+
+#define RT_BIT_32(bit) ((uint32_t)(1L << (bit)))
+
+#define VIRTIO_COMMON_REG_DEV_FEAT_SLCT 0x00
+#define VIRTIO_COMMON_REG_DEV_FEAT 0x04
+# define VIRTIO_CMN_REG_DEV_FEAT_SCSI_INOUT 0x01
+#define VIRTIO_COMMON_REG_DRV_FEAT_SLCT 0x08
+#define VIRTIO_COMMON_REG_DRV_FEAT 0x0c
+#define VIRTIO_COMMON_REG_MSIX_CFG 0x10
+#define VIRTIO_COMMON_REG_NUM_QUEUES 0x12
+#define VIRTIO_COMMON_REG_DEV_STS 0x14
+# define VIRTIO_CMN_REG_DEV_STS_F_RST 0x00
+# define VIRTIO_CMN_REG_DEV_STS_F_ACK 0x01
+# define VIRTIO_CMN_REG_DEV_STS_F_DRV 0x02
+# define VIRTIO_CMN_REG_DEV_STS_F_DRV_OK 0x04
+# define VIRTIO_CMN_REG_DEV_STS_F_FEAT_OK 0x08
+# define VIRTIO_CMN_REG_DEV_STS_F_DEV_RST 0x40
+# define VIRTIO_CMN_REG_DEV_STS_F_FAILED 0x80
+#define VIRTIO_COMMON_REG_CFG_GEN 0x15
+
+#define VIRTIO_COMMON_REG_Q_SELECT 0x16
+#define VIRTIO_COMMON_REG_Q_SIZE 0x18
+#define VIRTIO_COMMON_REG_Q_MSIX_VEC 0x1a
+#define VIRTIO_COMMON_REG_Q_ENABLE 0x1c
+#define VIRTIO_COMMON_REG_Q_NOTIFY_OFF 0x1e
+#define VIRTIO_COMMON_REG_Q_DESC 0x20
+#define VIRTIO_COMMON_REG_Q_DRIVER 0x28
+#define VIRTIO_COMMON_REG_Q_DEVICE 0x30
+
+#define VIRTIO_DEV_CFG_REG_Q_NUM 0x00
+#define VIRTIO_DEV_CFG_REG_SEG_MAX 0x04
+#define VIRTIO_DEV_CFG_REG_SECT_MAX 0x08
+#define VIRTIO_DEV_CFG_REG_CMD_PER_LUN 0x0c
+#define VIRTIO_DEV_CFG_REG_EVT_INFO_SZ 0x10
+#define VIRTIO_DEV_CFG_REG_SENSE_SZ 0x14
+#define VIRTIO_DEV_CFG_REG_CDB_SZ 0x18
+#define VIRTIO_DEV_CFG_REG_MAX_CHANNEL 0x1c
+#define VIRTIO_DEV_CFG_REG_MAX_TGT 0x1e
+#define VIRTIO_DEV_CFG_REG_MAX_LUN 0x20
+
+#define VIRTIO_SCSI_Q_CONTROL 0x00
+#define VIRTIO_SCSI_Q_EVENT 0x01
+#define VIRTIO_SCSI_Q_REQUEST 0x02
+
+#define VIRTIO_SCSI_STS_RESPONSE_OK 0x00
+
+static void virtio_reg_set_bar_offset_length(virtio_t __far *virtio, uint8_t u8Bar, uint32_t offReg, uint32_t cb)
+{
+ pci_write_config_byte(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + 4, u8Bar);
+ pci_write_config_dword(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + 8, offReg);
+ pci_write_config_dword(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + 12, cb);
+}
+
+static void virtio_reg_common_access_prepare(virtio_t __far *virtio, uint16_t offReg, uint32_t cbAcc)
+{
+ virtio_reg_set_bar_offset_length(virtio,
+ virtio->aBarCfgs[VIRTIO_PCI_CAP_COMMON_CFG - 1].u8Bar,
+ virtio->aBarCfgs[VIRTIO_PCI_CAP_COMMON_CFG - 1].u32Offset + offReg,
+ cbAcc);
+}
+
+static void virtio_reg_dev_access_prepare(virtio_t __far *virtio, uint16_t offReg, uint32_t cbAcc)
+{
+ virtio_reg_set_bar_offset_length(virtio,
+ virtio->aBarCfgs[VIRTIO_PCI_CAP_DEVICE_CFG - 1].u8Bar,
+ virtio->aBarCfgs[VIRTIO_PCI_CAP_DEVICE_CFG - 1].u32Offset + offReg,
+ cbAcc);
+}
+
+static void virtio_reg_notify_access_prepare(virtio_t __far *virtio, uint16_t offReg, uint32_t cbAcc)
+{
+ virtio_reg_set_bar_offset_length(virtio,
+ virtio->aBarCfgs[VIRTIO_PCI_CAP_NOTIFY_CFG - 1].u8Bar,
+ virtio->aBarCfgs[VIRTIO_PCI_CAP_NOTIFY_CFG - 1].u32Offset + offReg,
+ cbAcc);
+}
+
+static void virtio_reg_isr_prepare(virtio_t __far *virtio, uint32_t cbAcc)
+{
+ virtio_reg_set_bar_offset_length(virtio,
+ virtio->aBarCfgs[VIRTIO_PCI_CAP_ISR_CFG - 1].u8Bar,
+ virtio->aBarCfgs[VIRTIO_PCI_CAP_ISR_CFG - 1].u32Offset,
+ cbAcc);
+}
+
+static uint8_t virtio_reg_common_read_u8(virtio_t __far *virtio, uint16_t offReg)
+{
+ virtio_reg_common_access_prepare(virtio, offReg, sizeof(uint8_t));
+ return pci_read_config_byte(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t));
+}
+
+static void virtio_reg_common_write_u8(virtio_t __far *virtio, uint16_t offReg, uint8_t u8Val)
+{
+ virtio_reg_common_access_prepare(virtio, offReg, sizeof(uint8_t));
+ pci_write_config_byte(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t), u8Val);
+}
+
+static uint16_t virtio_reg_common_read_u16(virtio_t __far *virtio, uint16_t offReg)
+{
+ virtio_reg_common_access_prepare(virtio, offReg, sizeof(uint16_t));
+ return pci_read_config_word(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t));
+}
+
+static void virtio_reg_common_write_u16(virtio_t __far *virtio, uint16_t offReg, uint16_t u16Val)
+{
+ virtio_reg_common_access_prepare(virtio, offReg, sizeof(uint16_t));
+ pci_write_config_word(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t), u16Val);
+}
+
+static void virtio_reg_common_write_u32(virtio_t __far *virtio, uint16_t offReg, uint32_t u32Val)
+{
+ virtio_reg_common_access_prepare(virtio, offReg, sizeof(uint32_t));
+ pci_write_config_dword(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t), u32Val);
+}
+
+static uint32_t virtio_reg_dev_cfg_read_u32(virtio_t __far *virtio, uint16_t offReg)
+{
+ virtio_reg_dev_access_prepare(virtio, offReg, sizeof(uint32_t));
+ return pci_read_config_dword(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t));
+}
+
+static void virtio_reg_dev_cfg_write_u32(virtio_t __far *virtio, uint16_t offReg, uint32_t u32Val)
+{
+ virtio_reg_dev_access_prepare(virtio, offReg, sizeof(uint32_t));
+ pci_write_config_dword(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t), u32Val);
+}
+
+static void virtio_reg_notify_write_u16(virtio_t __far *virtio, uint16_t offReg, uint16_t u16Val)
+{
+ virtio_reg_notify_access_prepare(virtio, offReg, sizeof(uint16_t));
+ pci_write_config_word(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t), u16Val);
+}
+
+static uint8_t virtio_reg_isr_read_u8(virtio_t __far *virtio)
+{
+ virtio_reg_isr_prepare(virtio, sizeof(uint8_t));
+ return pci_read_config_byte(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t));
+}
+
+/**
+ * Converts a segment:offset pair into a 32bit physical address.
+ */
+static uint32_t virtio_addr_to_phys(void __far *ptr)
+{
+ return ((uint32_t)FP_SEG(ptr) << 4) + FP_OFF(ptr);
+}
+
+int virtio_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ virtio_t __far *virtio = (virtio_t __far *)pvHba;
+ uint16_t idxUsedOld = virtio->Queue.UsedRing.idxNextUsed;
+
+ _fmemset(&virtio->ScsiReqHdr, 0, sizeof(virtio->ScsiReqHdr));
+ _fmemset(&virtio->ScsiReqSts, 0, sizeof(virtio->ScsiReqSts));
+
+ virtio->ScsiReqHdr.au8Lun[0] = 0x1;
+ virtio->ScsiReqHdr.au8Lun[1] = idTgt;
+ virtio->ScsiReqHdr.au8Lun[2] = 0;
+ virtio->ScsiReqHdr.au8Lun[3] = 0;
+ _fmemcpy(&virtio->ScsiReqHdr.abCdb[0], aCDB, cbCDB);
+
+ /* Fill in the descriptors. */
+ virtio->Queue.aDescTbl[0].GCPhysBufLow = virtio_addr_to_phys(&virtio->ScsiReqHdr);
+ virtio->Queue.aDescTbl[0].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[0].cbBuf = sizeof(virtio->ScsiReqHdr);
+ virtio->Queue.aDescTbl[0].fFlags = VIRTIO_Q_DESC_F_NEXT;
+ virtio->Queue.aDescTbl[0].idxNext = 1;
+
+ virtio->Queue.aDescTbl[1].GCPhysBufLow = virtio_addr_to_phys(buffer);
+ virtio->Queue.aDescTbl[1].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[1].cbBuf = length;
+ virtio->Queue.aDescTbl[1].fFlags = VIRTIO_Q_DESC_F_NEXT;
+ virtio->Queue.aDescTbl[1].idxNext = 2;
+
+ virtio->Queue.aDescTbl[2].GCPhysBufLow = virtio_addr_to_phys(&virtio->ScsiReqSts);
+ virtio->Queue.aDescTbl[2].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[2].cbBuf = sizeof(virtio->ScsiReqSts);
+ virtio->Queue.aDescTbl[2].fFlags = VIRTIO_Q_DESC_F_WRITE; /* End of chain. */
+ virtio->Queue.aDescTbl[2].idxNext = 0;
+
+ /* Put it into the queue. */
+ virtio->Queue.AvailRing.au16Ring[virtio->Queue.AvailRing.idxNextFree % VIRTIO_SCSI_RING_ELEM] = 0;
+ virtio->Queue.AvailRing.idxNextFree++;
+
+ /* Notify the device about the new command. */
+ DBG_VIRTIO("VirtIO: Submitting new request, Queue.offNotify=0x%x\n", virtio->Queue.offNotify);
+ virtio_reg_notify_write_u16(virtio, virtio->Queue.offNotify, VIRTIO_SCSI_Q_REQUEST);
+
+ /* Wait for it to complete. */
+ while (idxUsedOld == virtio->Queue.UsedRing.idxNextUsed);
+
+ DBG_VIRTIO("VirtIO: Request complete u8Response=%u\n", virtio->ScsiReqSts.u8Response);
+
+ /* Read ISR register to de-assert the interrupt, don't need to do anything with it. */
+ virtio_reg_isr_read_u8(virtio);
+
+ if (virtio->ScsiReqSts.u8Response != VIRTIO_SCSI_STS_RESPONSE_OK)
+ return 4;
+
+ return 0;
+}
+
+int virtio_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ virtio_t __far *virtio = (virtio_t __far *)pvHba;
+ uint16_t idxUsedOld = virtio->Queue.UsedRing.idxNextUsed;
+
+ _fmemset(&virtio->ScsiReqHdr, 0, sizeof(virtio->ScsiReqHdr));
+ _fmemset(&virtio->ScsiReqSts, 0, sizeof(virtio->ScsiReqSts));
+
+ virtio->ScsiReqHdr.au8Lun[0] = 0x1;
+ virtio->ScsiReqHdr.au8Lun[1] = idTgt;
+ virtio->ScsiReqHdr.au8Lun[2] = 0;
+ virtio->ScsiReqHdr.au8Lun[3] = 0;
+ _fmemcpy(&virtio->ScsiReqHdr.abCdb[0], aCDB, cbCDB);
+
+ /* Fill in the descriptors. */
+ virtio->Queue.aDescTbl[0].GCPhysBufLow = virtio_addr_to_phys(&virtio->ScsiReqHdr);
+ virtio->Queue.aDescTbl[0].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[0].cbBuf = sizeof(virtio->ScsiReqHdr);
+ virtio->Queue.aDescTbl[0].fFlags = VIRTIO_Q_DESC_F_NEXT;
+ virtio->Queue.aDescTbl[0].idxNext = 1;
+
+ /* No data out buffer, the status comes right after this in the next descriptor. */
+ virtio->Queue.aDescTbl[1].GCPhysBufLow = virtio_addr_to_phys(&virtio->ScsiReqSts);
+ virtio->Queue.aDescTbl[1].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[1].cbBuf = sizeof(virtio->ScsiReqSts);
+ virtio->Queue.aDescTbl[1].fFlags = VIRTIO_Q_DESC_F_WRITE | VIRTIO_Q_DESC_F_NEXT;
+ virtio->Queue.aDescTbl[1].idxNext = 2;
+
+ virtio->Queue.aDescTbl[2].GCPhysBufLow = virtio_addr_to_phys(buffer);
+ virtio->Queue.aDescTbl[2].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[2].cbBuf = length;
+ virtio->Queue.aDescTbl[2].fFlags = VIRTIO_Q_DESC_F_WRITE; /* End of chain. */
+ virtio->Queue.aDescTbl[2].idxNext = 0;
+
+ /* Put it into the queue, the index is supposed to be free-running and clipped to the ring size
+ * internally. The free running index is what the driver sees. */
+ virtio->Queue.AvailRing.au16Ring[virtio->Queue.AvailRing.idxNextFree % VIRTIO_SCSI_RING_ELEM] = 0;
+ virtio->Queue.AvailRing.idxNextFree++;
+
+ /* Notify the device about the new command. */
+ DBG_VIRTIO("VirtIO: Submitting new request, Queue.offNotify=0x%x\n", virtio->Queue.offNotify);
+ virtio_reg_notify_write_u16(virtio, virtio->Queue.offNotify, VIRTIO_SCSI_Q_REQUEST);
+
+ /* Wait for it to complete. */
+ while (idxUsedOld == virtio->Queue.UsedRing.idxNextUsed);
+
+ DBG_VIRTIO("VirtIO: Request complete u8Response=%u\n", virtio->ScsiReqSts.u8Response);
+
+ /* Read ISR register to de-assert the interrupt, don't need to do anything with it. */
+ virtio_reg_isr_read_u8(virtio);
+
+ if (virtio->ScsiReqSts.u8Response != VIRTIO_SCSI_STS_RESPONSE_OK)
+ return 4;
+
+ return 0;
+}
+
+/**
+ * Initializes the VirtIO SCSI HBA and detects attached devices.
+ */
+static int virtio_scsi_hba_init(virtio_t __far *virtio, uint8_t u8Bus, uint8_t u8DevFn, uint8_t u8PciCapOffVirtIo)
+{
+ uint8_t u8PciCapOff;
+ uint8_t u8DevStat;
+
+ virtio->u8Bus = u8Bus;
+ virtio->u8DevFn = u8DevFn;
+
+ /*
+ * Go through the config space again, read the complete config capabilities
+ * this time and fill in the data.
+ */
+ u8PciCapOff = u8PciCapOffVirtIo;
+ while (u8PciCapOff != 0)
+ {
+ uint8_t u8PciCapId = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff);
+ uint8_t cbPciCap = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 2); /* Capability length. */
+
+ DBG_VIRTIO("Capability ID 0x%x at 0x%x\n", u8PciCapId, u8PciCapOff);
+
+ if ( u8PciCapId == PCI_CAP_ID_VNDR
+ && cbPciCap >= sizeof(virtio_pci_cap_t))
+ {
+ /* Read in the config type and see what we got. */
+ uint8_t u8PciVirtioCfg = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 3);
+
+ DBG_VIRTIO("VirtIO: CFG ID 0x%x\n", u8PciVirtioCfg);
+ switch (u8PciVirtioCfg)
+ {
+ case VIRTIO_PCI_CAP_COMMON_CFG:
+ case VIRTIO_PCI_CAP_NOTIFY_CFG:
+ case VIRTIO_PCI_CAP_ISR_CFG:
+ case VIRTIO_PCI_CAP_DEVICE_CFG:
+ {
+ virtio_bar_cfg_t __far *pBarCfg = &virtio->aBarCfgs[u8PciVirtioCfg - 1];
+
+ pBarCfg->u8Bar = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 4);
+ pBarCfg->u32Offset = pci_read_config_dword(u8Bus, u8DevFn, u8PciCapOff + 8);
+ pBarCfg->u32Length = pci_read_config_dword(u8Bus, u8DevFn, u8PciCapOff + 12);
+ if (u8PciVirtioCfg == VIRTIO_PCI_CAP_NOTIFY_CFG)
+ {
+ virtio->u32NotifyOffMult = pci_read_config_dword(u8Bus, u8DevFn, u8PciCapOff + 16);
+ DBG_VIRTIO("VirtIO: u32NotifyOffMult 0x%x\n", virtio->u32NotifyOffMult);
+ }
+ break;
+ }
+ case VIRTIO_PCI_CAP_PCI_CFG:
+ virtio->u8PciCfgOff = u8PciCapOff;
+ DBG_VIRTIO("VirtIO PCI CAP window offset: %x\n", u8PciCapOff);
+ break;
+ default:
+ DBG_VIRTIO("VirtIO SCSI HBA with unknown PCI capability type 0x%x\n", u8PciVirtioCfg);
+ break;
+ }
+ }
+
+ u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 1);
+ }
+
+ /* Reset the device. */
+ u8DevStat = VIRTIO_CMN_REG_DEV_STS_F_RST;
+ virtio_reg_common_write_u8(virtio, VIRTIO_COMMON_REG_DEV_STS, u8DevStat);
+ /* Acknowledge presence. */
+ u8DevStat |= VIRTIO_CMN_REG_DEV_STS_F_ACK;
+ virtio_reg_common_write_u8(virtio, VIRTIO_COMMON_REG_DEV_STS, u8DevStat);
+ /* Our driver knows how to operate the device. */
+ u8DevStat |= VIRTIO_CMN_REG_DEV_STS_F_DRV;
+ virtio_reg_common_write_u8(virtio, VIRTIO_COMMON_REG_DEV_STS, u8DevStat);
+
+#if 0
+ /* Read the feature bits and only program the VIRTIO_CMN_REG_DEV_FEAT_SCSI_INOUT bit if available. */
+ fFeatures = virtio_reg_common_read_u32(virtio, VIRTIO_COMMON_REG_DEV_FEAT);
+ fFeatures &= VIRTIO_CMN_REG_DEV_FEAT_SCSI_INOUT;
+#endif
+
+ /* Check that the device is sane. */
+ if ( virtio_reg_dev_cfg_read_u32(virtio, VIRTIO_DEV_CFG_REG_Q_NUM) < 1
+ || virtio_reg_dev_cfg_read_u32(virtio, VIRTIO_DEV_CFG_REG_CDB_SZ) < 16
+ || virtio_reg_dev_cfg_read_u32(virtio, VIRTIO_DEV_CFG_REG_SENSE_SZ) < 32
+ || virtio_reg_dev_cfg_read_u32(virtio, VIRTIO_DEV_CFG_REG_SECT_MAX) < 1)
+ {
+ DBG_VIRTIO("VirtIO-SCSI: Invalid SCSI device configuration, ignoring device\n");
+ return 1;
+ }
+
+ virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_DRV_FEAT, VIRTIO_CMN_REG_DEV_FEAT_SCSI_INOUT);
+
+ /* Set the features OK bit. */
+ u8DevStat |= VIRTIO_CMN_REG_DEV_STS_F_FEAT_OK;
+ virtio_reg_common_write_u8(virtio, VIRTIO_COMMON_REG_DEV_STS, u8DevStat);
+
+ /* Read again and check the the okay bit is still set. */
+ if (!(virtio_reg_common_read_u8(virtio, VIRTIO_COMMON_REG_DEV_STS) & VIRTIO_CMN_REG_DEV_STS_F_FEAT_OK))
+ {
+ DBG_VIRTIO("VirtIO-SCSI: Device doesn't accept our feature set, ignoring device\n");
+ return 1;
+ }
+
+ /* Disable event and control queue. */
+ virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SELECT, VIRTIO_SCSI_Q_CONTROL);
+ virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SIZE, 0);
+ virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_ENABLE, 0);
+
+ virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SELECT, VIRTIO_SCSI_Q_EVENT);
+ virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SIZE, 0);
+ virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_ENABLE, 0);
+
+ /* Setup the request queue. */
+ virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SELECT, VIRTIO_SCSI_Q_REQUEST);
+ virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SIZE, VIRTIO_SCSI_RING_ELEM);
+ virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_ENABLE, 1);
+
+ /* Set queue area addresses (only low part, leave high part 0). */
+ virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DESC, virtio_addr_to_phys(&virtio->Queue.aDescTbl[0]));
+ virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DESC + 4, 0);
+
+ virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DRIVER, virtio_addr_to_phys(&virtio->Queue.AvailRing));
+ virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DRIVER + 4, 0);
+
+ virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DEVICE, virtio_addr_to_phys(&virtio->Queue.UsedRing));
+ virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DEVICE + 4, 0);
+
+ virtio_reg_dev_cfg_write_u32(virtio, VIRTIO_DEV_CFG_REG_CDB_SZ, VIRTIO_SCSI_CDB_SZ);
+ virtio_reg_dev_cfg_write_u32(virtio, VIRTIO_DEV_CFG_REG_SENSE_SZ, VIRTIO_SCSI_SENSE_SZ);
+
+ DBG_VIRTIO("VirtIO: Q notify offset 0x%x\n", virtio_reg_common_read_u16(virtio, VIRTIO_COMMON_REG_Q_NOTIFY_OFF));
+ virtio->Queue.offNotify = virtio_reg_common_read_u16(virtio, VIRTIO_COMMON_REG_Q_NOTIFY_OFF) * virtio->u32NotifyOffMult;
+
+ /* Bring the device into operational mode. */
+ u8DevStat |= VIRTIO_CMN_REG_DEV_STS_F_DRV_OK;
+ virtio_reg_common_write_u8(virtio, VIRTIO_COMMON_REG_DEV_STS, u8DevStat);
+
+ return 0;
+}
+
+/**
+ * Init the VirtIO SCSI driver and detect attached disks.
+ */
+int virtio_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn)
+{
+ virtio_t __far *virtio = (virtio_t __far *)pvHba;
+ uint8_t u8PciCapOff;
+ uint8_t u8PciCapOffVirtIo = VBOX_VIRTIO_NIL_CFG;
+ uint8_t u8PciCapVirtioSeen = 0;
+
+ /* Examine the capability list and search for the VirtIO specific capabilities. */
+ u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, PCI_CONFIG_CAP);
+
+ while (u8PciCapOff != 0)
+ {
+ uint8_t u8PciCapId = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff);
+ uint8_t cbPciCap = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 2); /* Capability length. */
+
+ DBG_VIRTIO("Capability ID 0x%x at 0x%x\n", u8PciCapId, u8PciCapOff);
+
+ if ( u8PciCapId == PCI_CAP_ID_VNDR
+ && cbPciCap >= sizeof(virtio_pci_cap_t))
+ {
+ /* Read in the config type and see what we got. */
+ uint8_t u8PciVirtioCfg = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 3);
+
+ if (u8PciCapOffVirtIo == VBOX_VIRTIO_NIL_CFG)
+ u8PciCapOffVirtIo = u8PciCapOff;
+
+ DBG_VIRTIO("VirtIO: CFG ID 0x%x\n", u8PciVirtioCfg);
+ switch (u8PciVirtioCfg)
+ {
+ case VIRTIO_PCI_CAP_COMMON_CFG:
+ case VIRTIO_PCI_CAP_NOTIFY_CFG:
+ case VIRTIO_PCI_CAP_ISR_CFG:
+ case VIRTIO_PCI_CAP_DEVICE_CFG:
+ case VIRTIO_PCI_CAP_PCI_CFG:
+ u8PciCapVirtioSeen |= 1 << (u8PciVirtioCfg - 1);
+ break;
+ default:
+ DBG_VIRTIO("VirtIO SCSI HBA with unknown PCI capability type 0x%x\n", u8PciVirtioCfg);
+ }
+ }
+
+ u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 1);
+ }
+
+ /* Initialize the controller if all required PCI capabilities where found. */
+ if ( u8PciCapOffVirtIo != VBOX_VIRTIO_NIL_CFG
+ && u8PciCapVirtioSeen == 0x1f)
+ {
+ DBG_VIRTIO("VirtIO SCSI HBA with all required capabilities at 0x%x\n", u8PciCapOffVirtIo);
+
+ /* Enable PCI memory, I/O, bus mastering access in command register. */
+ pci_write_config_word(u8Bus, u8DevFn, 4, 0x7);
+ return virtio_scsi_hba_init(virtio, u8Bus, u8DevFn, u8PciCapOffVirtIo);
+ }
+ else
+ DBG_VIRTIO("VirtIO SCSI HBA with no usable PCI config access!\n");
+
+ return 1;
+}