summaryrefslogtreecommitdiffstats
path: root/src/VBox/Devices/PC/BIOS
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 14:19:18 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 14:19:18 +0000
commit4035b1bfb1e5843a539a8b624d21952b756974d1 (patch)
treef1e9cd5bf548cbc57ff2fddfb2b4aa9ae95587e2 /src/VBox/Devices/PC/BIOS
parentInitial commit. (diff)
downloadvirtualbox-4035b1bfb1e5843a539a8b624d21952b756974d1.tar.xz
virtualbox-4035b1bfb1e5843a539a8b624d21952b756974d1.zip
Adding upstream version 6.1.22-dfsg.upstream/6.1.22-dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/VBox/Devices/PC/BIOS')
-rw-r--r--src/VBox/Devices/PC/BIOS/Makefile.kmk203
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm19428
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum1
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm19203
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum1
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm19902
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum1
-rw-r--r--src/VBox/Devices/PC/BIOS/ahci.c1047
-rw-r--r--src/VBox/Devices/PC/BIOS/apm.c232
-rw-r--r--src/VBox/Devices/PC/BIOS/apm_pm.asm219
-rw-r--r--src/VBox/Devices/PC/BIOS/ata.c1290
-rw-r--r--src/VBox/Devices/PC/BIOS/ata.h190
-rw-r--r--src/VBox/Devices/PC/BIOS/bios.c191
-rw-r--r--src/VBox/Devices/PC/BIOS/biosint.h313
-rw-r--r--src/VBox/Devices/PC/BIOS/boot.c354
-rw-r--r--src/VBox/Devices/PC/BIOS/disk.c654
-rw-r--r--src/VBox/Devices/PC/BIOS/ebda.h413
-rw-r--r--src/VBox/Devices/PC/BIOS/eltorito.c1028
-rw-r--r--src/VBox/Devices/PC/BIOS/floppy.c1360
-rw-r--r--src/VBox/Devices/PC/BIOS/floppyt.c104
-rw-r--r--src/VBox/Devices/PC/BIOS/font8x8.inc133
-rw-r--r--src/VBox/Devices/PC/BIOS/inlines.h247
-rw-r--r--src/VBox/Devices/PC/BIOS/invop.c350
-rw-r--r--src/VBox/Devices/PC/BIOS/keyboard.c822
-rw-r--r--src/VBox/Devices/PC/BIOS/logo.c558
-rw-r--r--src/VBox/Devices/PC/BIOS/makefile72
-rw-r--r--src/VBox/Devices/PC/BIOS/notes.txt206
-rw-r--r--src/VBox/Devices/PC/BIOS/orgs.asm2077
-rw-r--r--src/VBox/Devices/PC/BIOS/parallel.c91
-rw-r--r--src/VBox/Devices/PC/BIOS/pci32.c22
-rw-r--r--src/VBox/Devices/PC/BIOS/pcibio32.asm98
-rw-r--r--src/VBox/Devices/PC/BIOS/pcibios.c413
-rw-r--r--src/VBox/Devices/PC/BIOS/pcibios.inc362
-rw-r--r--src/VBox/Devices/PC/BIOS/pcicfg.inc6
-rw-r--r--src/VBox/Devices/PC/BIOS/pciutil.c210
-rw-r--r--src/VBox/Devices/PC/BIOS/pciutil.h38
-rw-r--r--src/VBox/Devices/PC/BIOS/pirq.inc477
-rw-r--r--src/VBox/Devices/PC/BIOS/pmode.inc81
-rw-r--r--src/VBox/Devices/PC/BIOS/pmsetup.inc65
-rw-r--r--src/VBox/Devices/PC/BIOS/post.c187
-rw-r--r--src/VBox/Devices/PC/BIOS/print.c296
-rw-r--r--src/VBox/Devices/PC/BIOS/ps2mouse.c452
-rw-r--r--src/VBox/Devices/PC/BIOS/scsi.c666
-rw-r--r--src/VBox/Devices/PC/BIOS/scsi.h60
-rw-r--r--src/VBox/Devices/PC/BIOS/serial.c128
-rw-r--r--src/VBox/Devices/PC/BIOS/smidmi.inc74
-rw-r--r--src/VBox/Devices/PC/BIOS/system.c901
-rw-r--r--src/VBox/Devices/PC/BIOS/timepci.c324
-rw-r--r--src/VBox/Devices/PC/BIOS/vbdmismi.inc27
-rw-r--r--src/VBox/Devices/PC/BIOS/vds.c118
-rw-r--r--src/VBox/Devices/PC/BIOS/vds.h122
-rw-r--r--src/VBox/Devices/PC/BIOS/virtio.c1184
52 files changed, 77001 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..565395cc
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/Makefile.kmk
@@ -0,0 +1,203 @@
+# $Id: Makefile.kmk $
+## @file
+# Sub-Makefile for the New BIOS ROM.
+#
+
+#
+# Copyright (C) 2012-2020 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+
+SUB_DEPTH = ../../../../..
+include $(KBUILD_PATH)/subheader.kmk
+
+
+ifdef VBOX_WITH_OPEN_WATCOM
+
+ #
+ # VBoxPcBios - The PC BIOS.
+ #
+ MISCBINS += VBoxPcBios386
+ VBoxPcBios386_TEMPLATE = VBoxBios
+ VBoxPcBios386_BLD_TYPE = release
+ VBoxPcBios386_CFLAGS = -3
+ VBoxPcBios386_DEFS = \
+ VBOX_PC_BIOS \
+ VBOX_LANBOOT_SEG=0xE200 \
+ VBOX_WITH_SCSI \
+ VBOX_WITH_AHCI \
+ VBOX_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 \
+ apm.c \
+ pcibios.c \
+ pciutil.c \
+ vds.c \
+ ../../BiosCommonCode/__U4M.asm \
+ ../../BiosCommonCode/__U4D.asm \
+ ../../BiosCommonCode/__U8RS.asm \
+ ../../BiosCommonCode/__U8LS.asm \
+ ../../BiosCommonCode/fmemset.asm \
+ ../../BiosCommonCode/fmemcpy.asm \
+ pcibio32.asm \
+ apm_pm.asm \
+ $(VBoxPcBios32_0_OUTDIR)/VBoxPcBios32.lib \
+ orgs.asm
+
+ #$(VBoxPcBios32_1_TARGET) - reference is lost when extending the target. weird.
+
+ # For 32-bit C code in PC BIOS.
+ LIBRARIES += VBoxPcBios32
+ VBoxPcBios32_TEMPLATE = VBoxBios32Lib
+ VBoxPcBios32_SOURCES = \
+ pci32.c
+
+ ../../BiosCommonCode/DoUInt32Div.c_CFLAGS = -mc # asm.h and uint32.h both require far data pointers by default.
+
+ MISCBINS += VBoxPcBios286
+ VBoxPcBios286_EXTENDS = VBoxPcBios386
+ VBoxPcBios286_CFLAGS = -2
+ VBoxPcBios286_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxPcBios386_DEFS)) VBOX_BIOS_CPU=80286
+ VBoxPcBios286_SOURCES = $(VBoxPcBios386_SOURCES) \
+ ../../BiosCommonCode/DoUInt32Div.c \
+ ../../BiosCommonCode/ASMBitLastSetU16.asm
+
+ MISCBINS += VBoxPcBios8086
+ VBoxPcBios8086_EXTENDS = VBoxPcBios386
+ VBoxPcBios8086_CFLAGS = -0
+ VBoxPcBios8086_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxPcBios386_DEFS)) VBOX_BIOS_CPU=8086
+ VBoxPcBios8086_SOURCES = $(VBoxPcBios386_SOURCES) \
+ ../../BiosCommonCode/DoUInt32Div.c \
+ ../../BiosCommonCode/ASMBitLastSetU16.asm
+
+
+ #
+ # Updates the alternative source files.
+ #
+ define def_VBoxPcBiosUpdateAltSource
+
+ $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).asm +| $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).md5sum: \
+ $$$$(VBoxPcBios$(1)_1_TARGET) \
+ $$(VBOX_MAKE_ALTERNATIVE_SOURCE) \
+ $$(VBOX_VBOXCMP)
+ if1of ($(KBUILD_TYPE), release)
+ $$(VBOX_MAKE_ALTERNATIVE_SOURCE) \
+ --bios-image $$< \
+ --bios-map $$(basename $$<).map \
+ --bios-sym $$(basename $$<).sym \
+ --bios-type system \
+ --output $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm
+ $$(QUIET)yasm -f bin -o $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).bin $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm
+ $$(VBOX_VBOXCMP) $$< $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).bin
+ $$(CP) --changed -- $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm $$(PATH_ROOT)/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative$(1).asm
+ $$(REDIRECT) -C $$(dir $$(VBoxPcBios$(1)_1_TARGET)) -- \
+ $$(MD5SUM_EXT) -bo $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).md5sum $$(notdir $$(VBoxPcBios$(1)_1_TARGET))
+ $$(CP) --changed -- $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).md5sum $$(PATH_ROOT)/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative$(1).md5sum
+ $$(RM) -f -- $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative.bin $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).md5sum
+ else
+ $$(QUIET)$$(ECHO) "Fatal error: Can only update VBoxBiosAlternative$(1).asm/md5sum with a release build."
+ $$(QUIET)exit 1
+ endif
+
+ endef
+
+ $(evalcall2 def_VBoxPcBiosUpdateAltSource,386)
+ $(evalcall2 def_VBoxPcBiosUpdateAltSource,286)
+ $(evalcall2 def_VBoxPcBiosUpdateAltSource,8086)
+
+ update-pcbios-source: \
+ $(PATH_SUB_CURRENT)/VBoxBiosAlternative386.asm \
+ $(PATH_SUB_CURRENT)/VBoxBiosAlternative286.asm \
+ $(PATH_SUB_CURRENT)/VBoxBiosAlternative8086.asm
+
+endif # VBOX_WITH_OPEN_WATCOM
+
+
+#
+# The library containing the PC BIOS image.
+#
+LIBRARIES += PcBiosBin
+PcBiosBin_TEMPLATE = VBOXR3
+PcBiosBin_DEFS = IN_VBOXDD2
+
+define def_VBoxPcBiosBin
+ PcBiosBin_CLEAN += $$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c
+ PcBiosBin_SOURCES += $$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c
+
+ ifdef VBOX_WITH_OPEN_WATCOM
+ $$$$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c: $$$$(VBoxPcBios$(1)_1_TARGET) $$(VBOX_BIN2C) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,bin2c,PcBiosBin,$$<,$$@)
+ $$(QUIET)$$(VBOX_BIN2C) -min 64 -max 256 -mask 0xffff -ascii -export PcBiosBinary$(1) $$< $$@
+ else
+ PcBiosBin_CLEAN += $$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom
+
+ $$$$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c + $$$$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom: \
+ $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).asm \
+ $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).md5sum \
+ $$(VBOX_BIN2C) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,bin2c,PcBiosBin,$$<,$$@)
+ $$(QUIET)yasm -f bin -o $$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom $$<
+ $$(QUIET)$$(REDIRECT) -C $$(PcBiosBin_0_OUTDIR) -- \
+ $$(MD5SUM_EXT) -c $$(basename $$<).md5sum
+ $$(QUIET)$$(VBOX_BIN2C) -min 64 -max 256 -mask 0xffff -ascii -export PcBiosBinary$(1) $$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom $$@
+ $$(QUIET)$$(RM) -f -- $$$$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom
+ endif
+endef
+$(evalcall2 def_VBoxPcBiosBin,386)
+$(evalcall2 def_VBoxPcBiosBin,286)
+$(evalcall2 def_VBoxPcBiosBin,8086)
+
+
+
+ifdef VBOX_WITH_OPEN_WATCOM
+ #
+ # Install the symbol file for the BIOS.
+ #
+ INSTALLS += VBoxPcBiosSym
+ VBoxPcBiosSym_TEMPLATE = VBoxDbgSyms
+ VBoxPcBiosSym_SOURCES = \
+ $(basename $(VBoxPcBios386_1_TARGET)).sym \
+ $(basename $(VBoxPcBios286_1_TARGET)).sym \
+ $(basename $(VBoxPcBios8086_1_TARGET)).sym
+endif
+
+
+include $(FILE_KBUILD_SUB_FOOTER)
+
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
new file mode 100644
index 00000000..6473c5ac
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
@@ -0,0 +1,19428 @@
+; $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-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: bios.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: print.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ata.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ATA disk support.
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppy.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppyt.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Floppy drive tables.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: eltorito.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: boot.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: keyboard.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: disk.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: serial.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: system.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: invop.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Real mode invalid opcode handler.
+;
+;
+;
+; Copyright (C) 2013-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: timepci.c
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ps2mouse.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: parallel.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: logo.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Stuff for drawing the BIOS logo.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: scsi.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; SCSI host adapter driver to boot from SCSI disks
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: ahci.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: virtio.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; VirtIO-SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2019-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: apm.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; APM BIOS support. Implements APM version 1.2.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pcibios.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PCI BIOS support.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pciutil.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Utility routines for calling the PCI BIOS.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: vds.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Utility routines for calling the Virtual DMA Services.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: __U4M.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U4D.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8RS.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8LS.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemset.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemcpy.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: pcibio32.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+
+;
+; Source file: apm_pm.asm
+;
+; $Id:
+; Protected-mode APM implementation.
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: orgs.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: DoUInt32Div.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: ASMBitLastSetU16.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; BiosCommonCode - ASMBitLastSetU16() - borrowed from IPRT.
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: pci32.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; 32-bit PCI BIOS wrapper.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+
+
+
+section _DATA progbits vstart=0x0 align=1 ; size=0xc0 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0000 LB 0xc0 -> 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 0x65 -> 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 0x56 -> off=0x0 cb=000000000000000e uValue=00000000000f006a '_pktacc'
+_pktacc: ; 0xf006a LB 0xe
+ db 000h, 000h, 000h, 000h, 000h, 000h, 016h, 02bh, 07ch, 07ch, 036h, 08ch, 0aah, 09eh
+ ; disGetNextSymbol 0xf0078 LB 0x48 -> off=0x0 cb=000000000000000e uValue=00000000000f0078 '_softrst'
+_softrst: ; 0xf0078 LB 0xe
+ db 000h, 000h, 000h, 000h, 000h, 000h, 09bh, 02dh, 05dh, 03bh, 05dh, 03bh, 000h, 000h
+ ; disGetNextSymbol 0xf0086 LB 0x3a -> off=0x0 cb=000000000000003a uValue=00000000000f0086 '_dskacc'
+_dskacc: ; 0xf0086 LB 0x3a
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 006h, 02ah, 0bbh, 02ah, 000h, 000h, 000h, 000h
+ db 0bch, 07ah, 09ch, 07bh, 008h, 08bh, 0b0h, 08bh, 096h, 09ch, 0a2h, 09dh, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h, 032h, 05fh, 000h, 0dah
+ db 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
+
+section CONST progbits vstart=0xc0 align=1 ; size=0xe18 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf00c0 LB 0xe18 -> off=0xe18 cb=0000000000000000 uValue=00000000000f0ed8 'bios_cvs_version_string'
+ db 'NMI Handler called', 00ah, 000h
+ db 'INT18: BOOT FAILURE', 00ah, 000h
+ db '%s', 00ah, 000h, 000h
+ db 'FATAL: ', 000h
+ db 'bios_printf: unknown %ll format', 00ah, 000h
+ db 'bios_printf: unknown format', 00ah, 000h
+ db 'ata-detect: Failed to detect ATA device', 00ah, 000h
+ db 'ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u', 00ah, 000h
+ db 'ata-detect: Failed to detect ATAPI device', 00ah, 000h
+ db ' slave', 000h
+ db 'master', 000h
+ db 'ata%d %s: ', 000h
+ db '%c', 000h
+ db ' ATA-%d Hard-Disk (%lu MBytes)', 00ah, 000h
+ db ' ATAPI-%d CD-ROM/DVD-ROM', 00ah, 000h
+ db ' ATAPI-%d Device', 00ah, 000h
+ db 'ata%d %s: Unknown device', 00ah, 000h
+ db 'ata_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'set_diskette_current_cyl: drive > 1', 00ah, 000h
+ db 'int13_diskette_function', 000h
+ db '%s: drive>1 || head>1 ...', 00ah, 000h
+ db '%s: ctrl not ready', 00ah, 000h
+ db '%s: write error', 00ah, 000h
+ db '%s: bad floppy type', 00ah, 000h
+ db '%s: unsupported AH=%02x', 00ah, 000h, 000h
+ db 'int13_eltorito', 000h
+ db '%s: call with AX=%04x not implemented.', 00ah, 000h
+ db '%s: unsupported AH=%02x', 00ah, 000h
+ db 'int13_cdemu', 000h
+ db '%s: function %02x, emulation not active for DL= %02x', 00ah, 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db '%s: function %02x. Can', 027h, 't use 64bits lba', 00ah, 000h
+ db '%s: function %02x, status %02x !', 00ah, 000h
+ db '%s: function AH=%02x unsupported, returns fail', 00ah, 000h
+ db 'int13_cdrom', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h, 000h
+ db 'Booting from %s...', 00ah, 000h
+ db 'Boot from %s failed', 00ah, 000h
+ db 'Boot from %s %d failed', 00ah, 000h
+ db 'No bootable medium found! System halted.', 00ah, 000h
+ db 'Could not read from the boot medium! System halted.', 00ah, 000h
+ db 'CDROM boot failure code : %04x', 00ah, 000h
+ db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 000h, 000h
+ db 'Keyboard error:%u', 00ah, 000h
+ db 'KBD: int09 handler: AL=0', 00ah, 000h
+ db 'KBD: int09h_handler(): unknown scancode read: 0x%02x!', 00ah, 000h
+ db 'KBD: int09h_handler(): scancode & asciicode are zero?', 00ah, 000h
+ db 'KBD: int16h: out of keyboard input', 00ah, 000h
+ db 'KBD: unsupported int 16h function %02x', 00ah, 000h
+ db 'AX=%04x BX=%04x CX=%04x DX=%04x ', 00ah, 000h, 000h
+ db 'int13_harddisk', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h
+ db '%s: function %02x, count out of range!', 00ah, 000h
+ db '%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!', 00ah
+ db 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db 'format disk track called', 00ah, 000h
+ db '%s: function %02xh unimplemented, returns success', 00ah, 000h
+ db '%s: function %02xh unsupported, returns fail', 00ah, 000h
+ db 'int13_harddisk_ext', 000h
+ db '%s: function %02x. LBA out of range', 00ah, 000h, 000h
+ db 'int15: Func 24h, subfunc %02xh, A20 gate control not supported', 00ah, 000h
+ db '*** int 15h function AH=bf not yet supported!', 00ah, 000h
+ db 'EISA BIOS not present', 00ah, 000h
+ db '*** int 15h function AX=%04x, BX=%04x not yet supported!', 00ah, 000h
+ db 'sendmouse', 000h
+ db 'setkbdcomm', 000h
+ db 'Mouse reset returned %02x (should be ack)', 00ah, 000h
+ db 'Mouse status returned %02x (should be ack)', 00ah, 000h
+ db 'INT 15h C2 AL=6, BH=%02x', 00ah, 000h
+ db 'INT 15h C2 default case entered', 00ah, 000h, 000h
+ db 'Key pressed: %x', 00ah, 000h
+ db 00ah, 00ah, ' AHCI controller:', 000h
+ db 00ah, ' %d) Hard disk', 000h
+ db 00ah, 00ah, ' SCSI controller:', 000h
+ db ' IDE controller:', 000h
+ db 00ah, 00ah, 'AHCI controller:', 00ah, 000h
+ db 00ah, ' %d) ', 000h
+ db 'Secondary ', 000h
+ db 'Primary ', 000h
+ db 'Slave', 000h
+ db 'Master', 000h
+ db 'No hard disks found', 000h
+ db 00ah, 000h
+ db 'Press F12 to select boot device.', 00ah, 000h
+ db 00ah, 'VirtualBox temporary boot device selection', 00ah, 00ah, 'Detected H'
+ db 'ard disks:', 00ah, 00ah, 000h
+ db 00ah, 'Other boot devices:', 00ah, ' f) Floppy', 00ah, ' c) CD-ROM', 00ah
+ db ' l) LAN', 00ah, 00ah, ' b) Continue booting', 00ah, 000h
+ db 'Delaying boot for %d seconds:', 000h
+ db ' %d', 000h, 000h
+ db 'scsi_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'scsi_write_sectors', 000h
+ db 'scsi_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'scsi_enumerate_attached_devices', 000h
+ db '%s: SCSI_INQUIRY failed', 00ah, 000h
+ db '%s: SCSI_READ_CAPACITY failed', 00ah, 000h
+ db 'Disk %d has an unsupported sector size of %u', 00ah, 000h
+ db 'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
+ db 'ahci_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'ahci_write_sectors', 000h
+ db 'ahci_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'virtio_scsi_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'virtio_scsi_write_sectors', 000h
+ db 'virtio_scsi_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'virtio_scsi_detect_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 '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=0xed8 align=1 ; size=0x3fa class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0ed8 LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0ed8 'bios_cvs_version_string'
+bios_cvs_version_string: ; 0xf0ed8 LB 0x12
+ db 'VirtualBox 6.1.19', 000h
+ ; disGetNextSymbol 0xf0eea LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0eea '_bios_prefix_string'
+_bios_prefix_string: ; 0xf0eea LB 0x8
+ db 'BIOS: ', 000h, 000h
+ ; disGetNextSymbol 0xf0ef2 LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0ef2 'isotag'
+isotag: ; 0xf0ef2 LB 0x6
+ db 'CD001', 000h
+ ; disGetNextSymbol 0xf0ef8 LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0ef8 'eltorito'
+eltorito: ; 0xf0ef8 LB 0x18
+ db 'EL TORITO SPECIFICATION', 000h
+ ; disGetNextSymbol 0xf0f10 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0f10 'drivetypes'
+drivetypes: ; 0xf0f10 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 0xf0f38 LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0f38 'scan_to_scanascii'
+scan_to_scanascii: ; 0xf0f38 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 0xf12b2 LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f12b2 'panic_msg_keyb_buffer_full'
+panic_msg_keyb_buffer_full: ; 0xf12b2 LB 0x20
+ db '%s: keyboard input buffer full', 00ah, 000h
+
+ ; Padding 0x32e bytes at 0xf12d2
+ times 814 db 0
+
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x9cd8 class=CODE group=AUTO
+ ; disGetNextSymbol 0xf1600 LB 0x9cd8 -> off=0x0 cb=000000000000005f uValue=00000000000f0000 'rom_scan'
+rom_scan: ; 0xf1600 LB 0x5f
+ push bp ; 55 ; 0xf1600 post.c:77
+ 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:84
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf160f
+ jnc short 01656h ; 73 42 ; 0xf1612
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf1614 post.c:85
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1619
+ mov es, ax ; 8e c0 ; 0xf161c post.c:87
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf161e
+ cmp word [es:bx], 0aa55h ; 26 81 3f 55 aa ; 0xf1621
+ jne short 0164fh ; 75 27 ; 0xf1626
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1628 post.c:93
+ mov word [bp-010h], strict word 00003h ; c7 46 f0 03 00 ; 0xf162b
+ call far [bp-010h] ; ff 5e f0 ; 0xf1630 post.c:94
+ cli ; fa ; 0xf1633 post.c:95
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf1634 post.c:99
+ mov al, byte [es:bx+002h] ; 26 8a 47 02 ; 0xf1637
+ add AL, strict byte 003h ; 04 03 ; 0xf163b
+ and AL, strict byte 0fch ; 24 fc ; 0xf163d
+ xor ah, ah ; 30 e4 ; 0xf163f post.c:100
+ cwd ; 99 ; 0xf1641
+ sal dx, 002h ; c1 e2 02 ; 0xf1642
+ db 01bh, 0c2h
+ ; sbb ax, dx ; 1b c2 ; 0xf1645
+ sar ax, 002h ; c1 f8 02 ; 0xf1647
+ add word [bp-012h], ax ; 01 46 ee ; 0xf164a
+ jmp short 0160ch ; eb bd ; 0xf164d post.c:102
+ add word [bp-012h], 00080h ; 81 46 ee 80 00 ; 0xf164f post.c:104
+ jmp short 0160ch ; eb b6 ; 0xf1654 post.c:106
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf1656 post.c:107
+ pop di ; 5f ; 0xf1659
+ pop si ; 5e ; 0xf165a
+ pop cx ; 59 ; 0xf165b
+ pop bx ; 5b ; 0xf165c
+ pop bp ; 5d ; 0xf165d
+ retn ; c3 ; 0xf165e
+ ; disGetNextSymbol 0xf165f LB 0x9c79 -> off=0x0 cb=000000000000001b uValue=00000000000f005f 'inb_cmos'
+inb_cmos: ; 0xf165f LB 0x1b
+ push bp ; 55 ; 0xf165f bios.c:65
+ mov bp, sp ; 89 e5 ; 0xf1660
+ push dx ; 52 ; 0xf1662
+ mov AH, strict byte 070h ; b4 70 ; 0xf1663 bios.c:67
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1665 bios.c:69
+ jc short 0166bh ; 72 02 ; 0xf1667
+ mov AH, strict byte 072h ; b4 72 ; 0xf1669 bios.c:70
+ mov dl, ah ; 88 e2 ; 0xf166b bios.c:71
+ xor dh, dh ; 30 f6 ; 0xf166d
+ out DX, AL ; ee ; 0xf166f
+ inc dx ; 42 ; 0xf1670 bios.c:72
+ in AL, DX ; ec ; 0xf1671
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1672
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1674 bios.c:73
+ pop dx ; 5a ; 0xf1677
+ pop bp ; 5d ; 0xf1678
+ retn ; c3 ; 0xf1679
+ ; disGetNextSymbol 0xf167a LB 0x9c5e -> off=0x0 cb=000000000000001d uValue=00000000000f007a 'outb_cmos'
+outb_cmos: ; 0xf167a LB 0x1d
+ push bp ; 55 ; 0xf167a bios.c:75
+ mov bp, sp ; 89 e5 ; 0xf167b
+ push bx ; 53 ; 0xf167d
+ mov bl, dl ; 88 d3 ; 0xf167e
+ mov AH, strict byte 070h ; b4 70 ; 0xf1680 bios.c:77
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1682 bios.c:79
+ jc short 01688h ; 72 02 ; 0xf1684
+ mov AH, strict byte 072h ; b4 72 ; 0xf1686 bios.c:80
+ mov dl, ah ; 88 e2 ; 0xf1688 bios.c:81
+ xor dh, dh ; 30 f6 ; 0xf168a
+ out DX, AL ; ee ; 0xf168c
+ inc dx ; 42 ; 0xf168d bios.c:82
+ mov al, bl ; 88 d8 ; 0xf168e
+ out DX, AL ; ee ; 0xf1690
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1691 bios.c:83
+ pop bx ; 5b ; 0xf1694
+ pop bp ; 5d ; 0xf1695
+ retn ; c3 ; 0xf1696
+ ; disGetNextSymbol 0xf1697 LB 0x9c41 -> off=0x0 cb=0000000000000061 uValue=00000000000f0097 'dummy_isr_function'
+dummy_isr_function: ; 0xf1697 LB 0x61
+ push bp ; 55 ; 0xf1697 bios.c:85
+ mov bp, sp ; 89 e5 ; 0xf1698
+ push ax ; 50 ; 0xf169a
+ mov CL, strict byte 0ffh ; b1 ff ; 0xf169b bios.c:93
+ mov AL, strict byte 00bh ; b0 0b ; 0xf169d bios.c:95
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf169f
+ out DX, AL ; ee ; 0xf16a2
+ in AL, DX ; ec ; 0xf16a3 bios.c:96
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16a4
+ mov bx, ax ; 89 c3 ; 0xf16a6
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf16a8
+ test al, al ; 84 c0 ; 0xf16ab bios.c:97
+ je short 016e9h ; 74 3a ; 0xf16ad
+ mov AL, strict byte 00bh ; b0 0b ; 0xf16af bios.c:98
+ mov dx, 000a0h ; ba a0 00 ; 0xf16b1
+ out DX, AL ; ee ; 0xf16b4
+ in AL, DX ; ec ; 0xf16b5 bios.c:99
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16b6
+ mov cx, ax ; 89 c1 ; 0xf16b8
+ test al, al ; 84 c0 ; 0xf16ba bios.c:100
+ je short 016d1h ; 74 13 ; 0xf16bc
+ mov dx, 000a1h ; ba a1 00 ; 0xf16be bios.c:101
+ in AL, DX ; ec ; 0xf16c1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16c2
+ mov bl, cl ; 88 cb ; 0xf16c4 bios.c:102
+ or al, bl ; 08 d8 ; 0xf16c6
+ out DX, AL ; ee ; 0xf16c8
+ mov AL, strict byte 020h ; b0 20 ; 0xf16c9 bios.c:103
+ mov dx, 000a0h ; ba a0 00 ; 0xf16cb
+ out DX, AL ; ee ; 0xf16ce
+ jmp short 016e0h ; eb 0f ; 0xf16cf bios.c:104
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf16d1 bios.c:105
+ in AL, DX ; ec ; 0xf16d4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16d5
+ and bl, 0fbh ; 80 e3 fb ; 0xf16d7 bios.c:106
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf16da
+ or al, bl ; 08 d8 ; 0xf16dd bios.c:107
+ out DX, AL ; ee ; 0xf16df
+ mov AL, strict byte 020h ; b0 20 ; 0xf16e0 bios.c:109
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf16e2
+ out DX, AL ; ee ; 0xf16e5
+ mov cl, byte [bp-002h] ; 8a 4e fe ; 0xf16e6 bios.c:110
+ mov bx, strict word 0006bh ; bb 6b 00 ; 0xf16e9 bios.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf16ec
+ mov es, ax ; 8e c0 ; 0xf16ef
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf16f1
+ mov sp, bp ; 89 ec ; 0xf16f4 bios.c:113
+ pop bp ; 5d ; 0xf16f6
+ retn ; c3 ; 0xf16f7
+ ; disGetNextSymbol 0xf16f8 LB 0x9be0 -> off=0x0 cb=0000000000000012 uValue=00000000000f00f8 'nmi_handler_msg'
+nmi_handler_msg: ; 0xf16f8 LB 0x12
+ push bp ; 55 ; 0xf16f8 bios.c:116
+ mov bp, sp ; 89 e5 ; 0xf16f9
+ push 000c0h ; 68 c0 00 ; 0xf16fb bios.c:118
+ push strict byte 00007h ; 6a 07 ; 0xf16fe
+ call 0190eh ; e8 0b 02 ; 0xf1700
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1703
+ mov sp, bp ; 89 ec ; 0xf1706 bios.c:119
+ pop bp ; 5d ; 0xf1708
+ retn ; c3 ; 0xf1709
+ ; disGetNextSymbol 0xf170a LB 0x9bce -> off=0x0 cb=0000000000000012 uValue=00000000000f010a 'int18_panic_msg'
+int18_panic_msg: ; 0xf170a LB 0x12
+ push bp ; 55 ; 0xf170a bios.c:121
+ mov bp, sp ; 89 e5 ; 0xf170b
+ push 000d4h ; 68 d4 00 ; 0xf170d bios.c:123
+ push strict byte 00007h ; 6a 07 ; 0xf1710
+ call 0190eh ; e8 f9 01 ; 0xf1712
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1715
+ mov sp, bp ; 89 ec ; 0xf1718 bios.c:124
+ pop bp ; 5d ; 0xf171a
+ retn ; c3 ; 0xf171b
+ ; disGetNextSymbol 0xf171c LB 0x9bbc -> off=0x0 cb=0000000000000020 uValue=00000000000f011c 'log_bios_start'
+log_bios_start: ; 0xf171c LB 0x20
+ push bp ; 55 ; 0xf171c bios.c:126
+ mov bp, sp ; 89 e5 ; 0xf171d
+ mov bx, 00eeah ; bb ea 0e ; 0xf171f bios.c:131
+ mov cx, ds ; 8c d9 ; 0xf1722
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf1724
+ call 018cbh ; e8 a1 01 ; 0xf1727
+ push 00ed8h ; 68 d8 0e ; 0xf172a
+ push 000e9h ; 68 e9 00 ; 0xf172d
+ push strict byte 00004h ; 6a 04 ; 0xf1730
+ call 0190eh ; e8 d9 01 ; 0xf1732
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf1735
+ mov sp, bp ; 89 ec ; 0xf1738 bios.c:132
+ pop bp ; 5d ; 0xf173a
+ retn ; c3 ; 0xf173b
+ ; disGetNextSymbol 0xf173c LB 0x9b9c -> off=0x0 cb=0000000000000027 uValue=00000000000f013c 'print_bios_banner'
+print_bios_banner: ; 0xf173c LB 0x27
+ push bp ; 55 ; 0xf173c bios.c:151
+ mov bp, sp ; 89 e5 ; 0xf173d
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf173f bios.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1742
+ mov es, ax ; 8e c0 ; 0xf1745
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1747
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf174a bios.c:53
+ cmp ax, 01234h ; 3d 34 12 ; 0xf174f bios.c:157
+ jne short 0175ch ; 75 08 ; 0xf1752
+ mov AL, strict byte 003h ; b0 03 ; 0xf1754 bios.c:160
+ mov AH, strict byte 000h ; b4 00 ; 0xf1756
+ int 010h ; cd 10 ; 0xf1758
+ jmp short 0175fh ; eb 03 ; 0xf175a bios.c:161
+ call 07655h ; e8 f6 5e ; 0xf175c bios.c:164
+ mov sp, bp ; 89 ec ; 0xf175f bios.c:191
+ pop bp ; 5d ; 0xf1761
+ retn ; c3 ; 0xf1762
+ ; disGetNextSymbol 0xf1763 LB 0x9b75 -> off=0x0 cb=000000000000003b uValue=00000000000f0163 'send'
+send: ; 0xf1763 LB 0x3b
+ push bp ; 55 ; 0xf1763 print.c:72
+ mov bp, sp ; 89 e5 ; 0xf1764
+ push bx ; 53 ; 0xf1766
+ push cx ; 51 ; 0xf1767
+ mov bx, ax ; 89 c3 ; 0xf1768
+ mov cl, dl ; 88 d1 ; 0xf176a
+ test AL, strict byte 008h ; a8 08 ; 0xf176c print.c:80
+ je short 01776h ; 74 06 ; 0xf176e
+ mov al, dl ; 88 d0 ; 0xf1770 print.c:81
+ mov dx, 00403h ; ba 03 04 ; 0xf1772
+ out DX, AL ; ee ; 0xf1775
+ test bl, 004h ; f6 c3 04 ; 0xf1776 print.c:82
+ je short 01781h ; 74 06 ; 0xf1779
+ mov al, cl ; 88 c8 ; 0xf177b print.c:83
+ mov dx, 00504h ; ba 04 05 ; 0xf177d
+ out DX, AL ; ee ; 0xf1780
+ test bl, 002h ; f6 c3 02 ; 0xf1781 print.c:85
+ je short 01797h ; 74 11 ; 0xf1784
+ cmp cl, 00ah ; 80 f9 0a ; 0xf1786 print.c:86
+ jne short 01791h ; 75 06 ; 0xf1789
+ mov AL, strict byte 00dh ; b0 0d ; 0xf178b print.c:87
+ mov AH, strict byte 00eh ; b4 0e ; 0xf178d
+ int 010h ; cd 10 ; 0xf178f
+ mov al, cl ; 88 c8 ; 0xf1791 print.c:88
+ mov AH, strict byte 00eh ; b4 0e ; 0xf1793
+ int 010h ; cd 10 ; 0xf1795
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1797 print.c:90
+ pop cx ; 59 ; 0xf179a
+ pop bx ; 5b ; 0xf179b
+ pop bp ; 5d ; 0xf179c
+ retn ; c3 ; 0xf179d
+ ; disGetNextSymbol 0xf179e LB 0x9b3a -> off=0x0 cb=000000000000005f uValue=00000000000f019e 'put_int'
+put_int: ; 0xf179e LB 0x5f
+ push bp ; 55 ; 0xf179e print.c:92
+ mov bp, sp ; 89 e5 ; 0xf179f
+ push si ; 56 ; 0xf17a1
+ push di ; 57 ; 0xf17a2
+ push ax ; 50 ; 0xf17a3
+ push ax ; 50 ; 0xf17a4
+ mov si, ax ; 89 c6 ; 0xf17a5
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf17a7
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf17aa print.c:94
+ mov ax, dx ; 89 d0 ; 0xf17ad
+ cwd ; 99 ; 0xf17af
+ idiv di ; f7 ff ; 0xf17b0
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf17b2
+ test ax, ax ; 85 c0 ; 0xf17b5 print.c:95
+ je short 017c3h ; 74 0a ; 0xf17b7
+ dec bx ; 4b ; 0xf17b9 print.c:96
+ mov dx, ax ; 89 c2 ; 0xf17ba
+ mov ax, si ; 89 f0 ; 0xf17bc
+ call 0179eh ; e8 dd ff ; 0xf17be
+ jmp short 017deh ; eb 1b ; 0xf17c1 print.c:97
+ dec bx ; 4b ; 0xf17c3 print.c:98
+ test bx, bx ; 85 db ; 0xf17c4
+ jle short 017d2h ; 7e 0a ; 0xf17c6
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf17c8 print.c:99
+ mov ax, si ; 89 f0 ; 0xf17cb
+ call 01763h ; e8 93 ff ; 0xf17cd
+ jmp short 017c3h ; eb f1 ; 0xf17d0
+ test cx, cx ; 85 c9 ; 0xf17d2 print.c:100
+ je short 017deh ; 74 08 ; 0xf17d4
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf17d6 print.c:101
+ mov ax, si ; 89 f0 ; 0xf17d9
+ call 01763h ; e8 85 ff ; 0xf17db
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf17de print.c:103
+ mov BL, strict byte 00ah ; b3 0a ; 0xf17e1
+ mul bl ; f6 e3 ; 0xf17e3
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf17e5
+ sub bl, al ; 28 c3 ; 0xf17e8
+ add bl, 030h ; 80 c3 30 ; 0xf17ea
+ xor bh, bh ; 30 ff ; 0xf17ed
+ mov dx, bx ; 89 da ; 0xf17ef
+ mov ax, si ; 89 f0 ; 0xf17f1
+ call 01763h ; e8 6d ff ; 0xf17f3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf17f6 print.c:104
+ pop di ; 5f ; 0xf17f9
+ pop si ; 5e ; 0xf17fa
+ pop bp ; 5d ; 0xf17fb
+ retn ; c3 ; 0xf17fc
+ ; disGetNextSymbol 0xf17fd LB 0x9adb -> off=0x0 cb=000000000000005e uValue=00000000000f01fd 'put_uint'
+put_uint: ; 0xf17fd LB 0x5e
+ push bp ; 55 ; 0xf17fd print.c:106
+ mov bp, sp ; 89 e5 ; 0xf17fe
+ push si ; 56 ; 0xf1800
+ push di ; 57 ; 0xf1801
+ push ax ; 50 ; 0xf1802
+ push ax ; 50 ; 0xf1803
+ mov si, ax ; 89 c6 ; 0xf1804
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf1806
+ mov ax, dx ; 89 d0 ; 0xf1809 print.c:108
+ xor dx, dx ; 31 d2 ; 0xf180b
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf180d
+ div di ; f7 f7 ; 0xf1810
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf1812
+ test ax, ax ; 85 c0 ; 0xf1815 print.c:109
+ je short 01823h ; 74 0a ; 0xf1817
+ dec bx ; 4b ; 0xf1819 print.c:110
+ mov dx, ax ; 89 c2 ; 0xf181a
+ mov ax, si ; 89 f0 ; 0xf181c
+ call 017fdh ; e8 dc ff ; 0xf181e
+ jmp short 0183eh ; eb 1b ; 0xf1821 print.c:111
+ dec bx ; 4b ; 0xf1823 print.c:112
+ test bx, bx ; 85 db ; 0xf1824
+ jle short 01832h ; 7e 0a ; 0xf1826
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1828 print.c:113
+ mov ax, si ; 89 f0 ; 0xf182b
+ call 01763h ; e8 33 ff ; 0xf182d
+ jmp short 01823h ; eb f1 ; 0xf1830
+ test cx, cx ; 85 c9 ; 0xf1832 print.c:114
+ je short 0183eh ; 74 08 ; 0xf1834
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1836 print.c:115
+ mov ax, si ; 89 f0 ; 0xf1839
+ call 01763h ; e8 25 ff ; 0xf183b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf183e print.c:117
+ mov DL, strict byte 00ah ; b2 0a ; 0xf1841
+ mul dl ; f6 e2 ; 0xf1843
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1845
+ sub dl, al ; 28 c2 ; 0xf1848
+ add dl, 030h ; 80 c2 30 ; 0xf184a
+ xor dh, dh ; 30 f6 ; 0xf184d
+ mov ax, si ; 89 f0 ; 0xf184f
+ call 01763h ; e8 0f ff ; 0xf1851
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1854 print.c:118
+ pop di ; 5f ; 0xf1857
+ pop si ; 5e ; 0xf1858
+ pop bp ; 5d ; 0xf1859
+ retn ; c3 ; 0xf185a
+ ; disGetNextSymbol 0xf185b LB 0x9a7d -> off=0x0 cb=0000000000000070 uValue=00000000000f025b 'put_luint'
+put_luint: ; 0xf185b LB 0x70
+ push bp ; 55 ; 0xf185b print.c:120
+ mov bp, sp ; 89 e5 ; 0xf185c
+ push si ; 56 ; 0xf185e
+ push di ; 57 ; 0xf185f
+ push ax ; 50 ; 0xf1860
+ push ax ; 50 ; 0xf1861
+ mov si, ax ; 89 c6 ; 0xf1862
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf1864
+ mov di, dx ; 89 d7 ; 0xf1867
+ mov ax, bx ; 89 d8 ; 0xf1869 print.c:122
+ mov dx, cx ; 89 ca ; 0xf186b
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf186d
+ xor cx, cx ; 31 c9 ; 0xf1870
+ call 0af60h ; e8 eb 96 ; 0xf1872
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf1875
+ mov cx, dx ; 89 d1 ; 0xf1878
+ mov dx, ax ; 89 c2 ; 0xf187a print.c:123
+ or dx, cx ; 09 ca ; 0xf187c
+ je short 0188fh ; 74 0f ; 0xf187e
+ push word [bp+004h] ; ff 76 04 ; 0xf1880 print.c:124
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf1883
+ mov bx, ax ; 89 c3 ; 0xf1886
+ mov ax, si ; 89 f0 ; 0xf1888
+ call 0185bh ; e8 ce ff ; 0xf188a
+ jmp short 018ach ; eb 1d ; 0xf188d print.c:125
+ dec di ; 4f ; 0xf188f print.c:126
+ test di, di ; 85 ff ; 0xf1890
+ jle short 0189eh ; 7e 0a ; 0xf1892
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1894 print.c:127
+ mov ax, si ; 89 f0 ; 0xf1897
+ call 01763h ; e8 c7 fe ; 0xf1899
+ jmp short 0188fh ; eb f1 ; 0xf189c
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf189e print.c:128
+ je short 018ach ; 74 08 ; 0xf18a2
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18a4 print.c:129
+ mov ax, si ; 89 f0 ; 0xf18a7
+ call 01763h ; e8 b7 fe ; 0xf18a9
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf18ac print.c:131
+ mov DL, strict byte 00ah ; b2 0a ; 0xf18af
+ mul dl ; f6 e2 ; 0xf18b1
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf18b3
+ sub dl, al ; 28 c2 ; 0xf18b6
+ add dl, 030h ; 80 c2 30 ; 0xf18b8
+ xor dh, dh ; 30 f6 ; 0xf18bb
+ mov ax, si ; 89 f0 ; 0xf18bd
+ call 01763h ; e8 a1 fe ; 0xf18bf
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18c2 print.c:132
+ pop di ; 5f ; 0xf18c5
+ pop si ; 5e ; 0xf18c6
+ pop bp ; 5d ; 0xf18c7
+ retn 00002h ; c2 02 00 ; 0xf18c8
+ ; disGetNextSymbol 0xf18cb LB 0x9a0d -> off=0x0 cb=0000000000000021 uValue=00000000000f02cb 'put_str'
+put_str: ; 0xf18cb LB 0x21
+ push bp ; 55 ; 0xf18cb print.c:134
+ mov bp, sp ; 89 e5 ; 0xf18cc
+ push dx ; 52 ; 0xf18ce
+ push si ; 56 ; 0xf18cf
+ mov si, ax ; 89 c6 ; 0xf18d0
+ mov es, cx ; 8e c1 ; 0xf18d2 print.c:138
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf18d4
+ test dl, dl ; 84 d2 ; 0xf18d7
+ je short 018e5h ; 74 0a ; 0xf18d9
+ xor dh, dh ; 30 f6 ; 0xf18db print.c:139
+ mov ax, si ; 89 f0 ; 0xf18dd
+ call 01763h ; e8 81 fe ; 0xf18df
+ inc bx ; 43 ; 0xf18e2 print.c:140
+ jmp short 018d2h ; eb ed ; 0xf18e3 print.c:141
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18e5 print.c:142
+ pop si ; 5e ; 0xf18e8
+ pop dx ; 5a ; 0xf18e9
+ pop bp ; 5d ; 0xf18ea
+ retn ; c3 ; 0xf18eb
+ ; disGetNextSymbol 0xf18ec LB 0x99ec -> off=0x0 cb=0000000000000022 uValue=00000000000f02ec 'put_str_near'
+put_str_near: ; 0xf18ec LB 0x22
+ push bp ; 55 ; 0xf18ec print.c:144
+ mov bp, sp ; 89 e5 ; 0xf18ed
+ push bx ; 53 ; 0xf18ef
+ push cx ; 51 ; 0xf18f0
+ mov cx, ax ; 89 c1 ; 0xf18f1
+ mov bx, dx ; 89 d3 ; 0xf18f3
+ mov al, byte [bx] ; 8a 07 ; 0xf18f5 print.c:148
+ test al, al ; 84 c0 ; 0xf18f7
+ je short 01907h ; 74 0c ; 0xf18f9
+ xor ah, ah ; 30 e4 ; 0xf18fb print.c:149
+ mov dx, ax ; 89 c2 ; 0xf18fd
+ mov ax, cx ; 89 c8 ; 0xf18ff
+ call 01763h ; e8 5f fe ; 0xf1901
+ inc bx ; 43 ; 0xf1904 print.c:150
+ jmp short 018f5h ; eb ee ; 0xf1905 print.c:151
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1907 print.c:152
+ pop cx ; 59 ; 0xf190a
+ pop bx ; 5b ; 0xf190b
+ pop bp ; 5d ; 0xf190c
+ retn ; c3 ; 0xf190d
+ ; disGetNextSymbol 0xf190e LB 0x99ca -> off=0x0 cb=0000000000000339 uValue=00000000000f030e 'bios_printf'
+bios_printf: ; 0xf190e LB 0x339
+ push bp ; 55 ; 0xf190e print.c:165
+ mov bp, sp ; 89 e5 ; 0xf190f
+ push bx ; 53 ; 0xf1911
+ push cx ; 51 ; 0xf1912
+ push dx ; 52 ; 0xf1913
+ push si ; 56 ; 0xf1914
+ push di ; 57 ; 0xf1915
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1916
+ lea bx, [bp+008h] ; 8d 5e 08 ; 0xf1919 print.c:173
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf191c
+ mov [bp-014h], ss ; 8c 56 ec ; 0xf191f
+ xor cx, cx ; 31 c9 ; 0xf1922 print.c:175
+ xor di, di ; 31 ff ; 0xf1924 print.c:176
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1926 print.c:178
+ and ax, strict word 00007h ; 25 07 00 ; 0xf1929
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf192c
+ jne short 0193ch ; 75 0b ; 0xf192f
+ push 000eeh ; 68 ee 00 ; 0xf1931 print.c:179
+ push strict byte 00002h ; 6a 02 ; 0xf1934
+ call 0190eh ; e8 d5 ff ; 0xf1936
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1939
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf193c print.c:182
+ mov dl, byte [bx] ; 8a 17 ; 0xf193f
+ test dl, dl ; 84 d2 ; 0xf1941
+ je short 019a0h ; 74 5b ; 0xf1943
+ cmp dl, 025h ; 80 fa 25 ; 0xf1945 print.c:183
+ jne short 01952h ; 75 08 ; 0xf1948
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf194a print.c:184
+ xor di, di ; 31 ff ; 0xf194d print.c:185
+ jmp near 01c25h ; e9 d3 02 ; 0xf194f print.c:187
+ test cx, cx ; 85 c9 ; 0xf1952
+ je short 019a3h ; 74 4d ; 0xf1954
+ cmp dl, 030h ; 80 fa 30 ; 0xf1956 print.c:188
+ jc short 0196fh ; 72 14 ; 0xf1959
+ cmp dl, 039h ; 80 fa 39 ; 0xf195b
+ jnbe short 0196fh ; 77 0f ; 0xf195e
+ mov al, dl ; 88 d0 ; 0xf1960 print.c:189
+ xor ah, ah ; 30 e4 ; 0xf1962
+ imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf1964
+ sub ax, strict word 00030h ; 2d 30 00 ; 0xf1967
+ add di, ax ; 01 c7 ; 0xf196a
+ jmp near 01c25h ; e9 b6 02 ; 0xf196c print.c:191
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf196f print.c:192
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1972
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1975
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1979
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf197c
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1980
+ cmp dl, 078h ; 80 fa 78 ; 0xf1983 print.c:193
+ je short 0198dh ; 74 05 ; 0xf1986
+ cmp dl, 058h ; 80 fa 58 ; 0xf1988
+ jne short 019e7h ; 75 5a ; 0xf198b
+ test di, di ; 85 ff ; 0xf198d print.c:194
+ jne short 01994h ; 75 03 ; 0xf198f
+ mov di, strict word 00004h ; bf 04 00 ; 0xf1991 print.c:195
+ cmp dl, 078h ; 80 fa 78 ; 0xf1994 print.c:196
+ jne short 019a6h ; 75 0d ; 0xf1997
+ mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1999 print.c:197
+ jmp short 019abh ; eb 0b ; 0xf199e print.c:198
+ jmp near 01c2bh ; e9 88 02 ; 0xf19a0
+ jmp near 01c1dh ; e9 77 02 ; 0xf19a3
+ mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf19a6 print.c:199
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf19ab print.c:200
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf19ae
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf19b1
+ test ax, ax ; 85 c0 ; 0xf19b4
+ jl short 019f8h ; 7c 40 ; 0xf19b6
+ mov cx, ax ; 89 c1 ; 0xf19b8 print.c:201
+ sal cx, 002h ; c1 e1 02 ; 0xf19ba
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf19bd
+ shr ax, CL ; d3 e8 ; 0xf19c0
+ xor ah, ah ; 30 e4 ; 0xf19c2
+ and AL, strict byte 00fh ; 24 0f ; 0xf19c4
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf19c6 print.c:202
+ jnbe short 019d2h ; 77 07 ; 0xf19c9
+ mov dx, ax ; 89 c2 ; 0xf19cb
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf19cd
+ jmp short 019dah ; eb 08 ; 0xf19d0
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf19d2
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf19d5
+ add dx, ax ; 01 c2 ; 0xf19d8
+ xor dh, dh ; 30 f6 ; 0xf19da
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19dc
+ call 01763h ; e8 81 fd ; 0xf19df
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf19e2 print.c:203
+ jmp short 019b1h ; eb ca ; 0xf19e5
+ cmp dl, 075h ; 80 fa 75 ; 0xf19e7 print.c:205
+ jne short 019fbh ; 75 0f ; 0xf19ea
+ xor cx, cx ; 31 c9 ; 0xf19ec print.c:206
+ mov bx, di ; 89 fb ; 0xf19ee
+ mov dx, ax ; 89 c2 ; 0xf19f0
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19f2
+ call 017fdh ; e8 05 fe ; 0xf19f5
+ jmp near 01c19h ; e9 1e 02 ; 0xf19f8 print.c:208
+ cmp dl, 06ch ; 80 fa 6c ; 0xf19fb
+ jne short 01a08h ; 75 08 ; 0xf19fe
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a00
+ cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1a03
+ je short 01a0bh ; 74 03 ; 0xf1a06
+ jmp near 01adch ; e9 d1 00 ; 0xf1a08
+ add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1a0b print.c:212
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a0f print.c:213
+ mov dl, byte [bx] ; 8a 17 ; 0xf1a12
+ mov word [bp-026h], ax ; 89 46 da ; 0xf1a14 print.c:215
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a17 print.c:216
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a1a
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a1d
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a21
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a24
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf1a28
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a2b print.c:217
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a2e
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a31
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a35
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a38
+ mov word [bp-022h], ax ; 89 46 de ; 0xf1a3c
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a3f print.c:218
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a42
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a45
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a49
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a4c
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf1a50
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a53 print.c:219
+ je short 01a5dh ; 74 05 ; 0xf1a56
+ cmp dl, 058h ; 80 fa 58 ; 0xf1a58
+ jne short 01ab7h ; 75 5a ; 0xf1a5b
+ test di, di ; 85 ff ; 0xf1a5d print.c:220
+ jne short 01a64h ; 75 03 ; 0xf1a5f
+ mov di, strict word 00010h ; bf 10 00 ; 0xf1a61 print.c:221
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a64 print.c:222
+ jne short 01a70h ; 75 07 ; 0xf1a67
+ mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1a69 print.c:223
+ jmp short 01a75h ; eb 05 ; 0xf1a6e print.c:224
+ mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1a70 print.c:225
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1a75 print.c:226
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1a78
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1a7b
+ test ax, ax ; 85 c0 ; 0xf1a7e
+ jl short 01ad9h ; 7c 57 ; 0xf1a80
+ sal ax, 002h ; c1 e0 02 ; 0xf1a82 print.c:227
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1a85
+ xor ax, ax ; 31 c0 ; 0xf1a88
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1a8a
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1a8d
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf1a90
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1a93
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf1a96
+ mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1a99
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf1a9c
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1a9f
+ call 0af90h ; e8 eb 94 ; 0xf1aa2
+ mov ax, dx ; 89 d0 ; 0xf1aa5
+ xor ah, dh ; 30 f4 ; 0xf1aa7
+ and AL, strict byte 00fh ; 24 0f ; 0xf1aa9
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1aab print.c:228
+ jnbe short 01ab9h ; 77 09 ; 0xf1aae
+ mov dx, ax ; 89 c2 ; 0xf1ab0
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1ab2
+ jmp short 01ac1h ; eb 0a ; 0xf1ab5
+ jmp short 01aceh ; eb 15 ; 0xf1ab7
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1ab9
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1abc
+ add dx, ax ; 01 c2 ; 0xf1abf
+ xor dh, dh ; 30 f6 ; 0xf1ac1
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1ac3
+ call 01763h ; e8 9a fc ; 0xf1ac6
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1ac9 print.c:229
+ jmp short 01a7bh ; eb ad ; 0xf1acc
+ push 000f6h ; 68 f6 00 ; 0xf1ace print.c:231
+ push strict byte 00007h ; 6a 07 ; 0xf1ad1
+ call 0190eh ; e8 38 fe ; 0xf1ad3
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1ad6
+ jmp near 01c19h ; e9 3d 01 ; 0xf1ad9 print.c:234
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf1adc
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1adf
+ jne short 01b38h ; 75 54 ; 0xf1ae2
+ inc word [bp+006h] ; ff 46 06 ; 0xf1ae4 print.c:235
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1ae7 print.c:236
+ mov dl, byte [si] ; 8a 14 ; 0xf1aea
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1aec print.c:237
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1aef
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1af2
+ les si, [bp-016h] ; c4 76 ea ; 0xf1af6
+ mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1af9
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1afd
+ cmp dl, 064h ; 80 fa 64 ; 0xf1b00 print.c:238
+ jne short 01b31h ; 75 2c ; 0xf1b03
+ test byte [bp-00dh], 080h ; f6 46 f3 80 ; 0xf1b05 print.c:239
+ je short 01b20h ; 74 15 ; 0xf1b09
+ push strict byte 00001h ; 6a 01 ; 0xf1b0b print.c:240
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1b0d
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf1b10
+ neg cx ; f7 d9 ; 0xf1b13
+ neg ax ; f7 d8 ; 0xf1b15
+ sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1b17
+ mov dx, bx ; 89 da ; 0xf1b1a
+ mov bx, ax ; 89 c3 ; 0xf1b1c
+ jmp short 01b29h ; eb 09 ; 0xf1b1e print.c:241
+ push strict byte 00000h ; 6a 00 ; 0xf1b20 print.c:242
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf1b22
+ mov dx, di ; 89 fa ; 0xf1b25
+ mov cx, ax ; 89 c1 ; 0xf1b27
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b29
+ call 0185bh ; e8 2c fd ; 0xf1b2c
+ jmp short 01ad9h ; eb a8 ; 0xf1b2f print.c:244
+ cmp dl, 075h ; 80 fa 75 ; 0xf1b31
+ jne short 01b3ah ; 75 04 ; 0xf1b34
+ jmp short 01b20h ; eb e8 ; 0xf1b36
+ jmp short 01ba0h ; eb 66 ; 0xf1b38
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b3a print.c:247
+ je short 01b44h ; 74 05 ; 0xf1b3d
+ cmp dl, 058h ; 80 fa 58 ; 0xf1b3f
+ jne short 01ad9h ; 75 95 ; 0xf1b42
+ test di, di ; 85 ff ; 0xf1b44 print.c:249
+ jne short 01b4bh ; 75 03 ; 0xf1b46
+ mov di, strict word 00008h ; bf 08 00 ; 0xf1b48 print.c:250
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b4b print.c:251
+ jne short 01b57h ; 75 07 ; 0xf1b4e
+ mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1b50 print.c:252
+ jmp short 01b5ch ; eb 05 ; 0xf1b55 print.c:253
+ mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1b57 print.c:254
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1b5c print.c:255
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1b5f
+ cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf1b62
+ jl short 01bc2h ; 7c 5a ; 0xf1b66
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1b68 print.c:256
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf1b6b
+ sal cx, 002h ; c1 e1 02 ; 0xf1b6e
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1b71
+ jcxz 01b7ch ; e3 06 ; 0xf1b74
+ shr dx, 1 ; d1 ea ; 0xf1b76
+ rcr ax, 1 ; d1 d8 ; 0xf1b78
+ loop 01b76h ; e2 fa ; 0xf1b7a
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf1b7c
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1b7f print.c:257
+ jnbe short 01b8bh ; 77 07 ; 0xf1b82
+ mov dx, ax ; 89 c2 ; 0xf1b84
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1b86
+ jmp short 01b93h ; eb 08 ; 0xf1b89
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1b8b
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1b8e
+ add dx, ax ; 01 c2 ; 0xf1b91
+ xor dh, dh ; 30 f6 ; 0xf1b93
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b95
+ call 01763h ; e8 c8 fb ; 0xf1b98
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1b9b print.c:258
+ jmp short 01b62h ; eb c2 ; 0xf1b9e
+ cmp dl, 064h ; 80 fa 64 ; 0xf1ba0 print.c:261
+ jne short 01bc4h ; 75 1f ; 0xf1ba3
+ test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1ba5 print.c:262
+ je short 01bb5h ; 74 0a ; 0xf1ba9
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1bab print.c:263
+ neg dx ; f7 da ; 0xf1bae
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf1bb0
+ jmp short 01bbch ; eb 07 ; 0xf1bb3 print.c:264
+ xor cx, cx ; 31 c9 ; 0xf1bb5 print.c:265
+ mov bx, di ; 89 fb ; 0xf1bb7
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1bb9
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bbc
+ call 0179eh ; e8 dc fb ; 0xf1bbf
+ jmp short 01c19h ; eb 55 ; 0xf1bc2 print.c:267
+ cmp dl, 073h ; 80 fa 73 ; 0xf1bc4
+ jne short 01bd6h ; 75 0d ; 0xf1bc7
+ mov cx, ds ; 8c d9 ; 0xf1bc9 print.c:268
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf1bcb
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bce
+ call 018cbh ; e8 f7 fc ; 0xf1bd1
+ jmp short 01c19h ; eb 43 ; 0xf1bd4 print.c:270
+ cmp dl, 053h ; 80 fa 53 ; 0xf1bd6
+ jne short 01bfch ; 75 21 ; 0xf1bd9
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1bdb print.c:271
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1bde
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1be1 print.c:272
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1be4
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1be7
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1beb
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1bee
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1bf2
+ mov bx, ax ; 89 c3 ; 0xf1bf5 print.c:273
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf1bf7
+ jmp short 01bceh ; eb d2 ; 0xf1bfa
+ cmp dl, 063h ; 80 fa 63 ; 0xf1bfc print.c:275
+ jne short 01c0eh ; 75 0d ; 0xf1bff
+ mov dl, byte [bp-010h] ; 8a 56 f0 ; 0xf1c01 print.c:276
+ xor dh, dh ; 30 f6 ; 0xf1c04
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c06
+ call 01763h ; e8 57 fb ; 0xf1c09
+ jmp short 01c19h ; eb 0b ; 0xf1c0c print.c:278
+ push 00117h ; 68 17 01 ; 0xf1c0e print.c:279
+ push strict byte 00007h ; 6a 07 ; 0xf1c11
+ call 0190eh ; e8 f8 fc ; 0xf1c13
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c16
+ xor cx, cx ; 31 c9 ; 0xf1c19 print.c:280
+ jmp short 01c25h ; eb 08 ; 0xf1c1b print.c:283
+ xor dh, dh ; 30 f6 ; 0xf1c1d print.c:284
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c1f
+ call 01763h ; e8 3e fb ; 0xf1c22
+ inc word [bp+006h] ; ff 46 06 ; 0xf1c25 print.c:286
+ jmp near 0193ch ; e9 11 fd ; 0xf1c28 print.c:287
+ xor ax, ax ; 31 c0 ; 0xf1c2b print.c:288
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1c2d
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c30
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1c33 print.c:289
+ je short 01c3dh ; 74 04 ; 0xf1c37
+ cli ; fa ; 0xf1c39 print.c:291
+ hlt ; f4 ; 0xf1c3a print.c:292
+ jmp short 01c3ah ; eb fd ; 0xf1c3b
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1c3d print.c:294
+ pop di ; 5f ; 0xf1c40
+ pop si ; 5e ; 0xf1c41
+ pop dx ; 5a ; 0xf1c42
+ pop cx ; 59 ; 0xf1c43
+ pop bx ; 5b ; 0xf1c44
+ pop bp ; 5d ; 0xf1c45
+ retn ; c3 ; 0xf1c46
+ ; disGetNextSymbol 0xf1c47 LB 0x9691 -> off=0x0 cb=00000000000000e5 uValue=00000000000f0647 'ata_init'
+ata_init: ; 0xf1c47 LB 0xe5
+ push si ; 56 ; 0xf1c47 ata.c:99
+ push bp ; 55 ; 0xf1c48
+ mov bp, sp ; 89 e5 ; 0xf1c49
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1c4b ata.c:48
+ mov si, strict word 00040h ; be 40 00 ; 0xf1c4e
+ mov es, si ; 8e c6 ; 0xf1c51
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf1c53
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf1c56 ata.c:49
+ mov dx, bx ; 89 da ; 0xf1c59
+ xor al, al ; 30 c0 ; 0xf1c5b ata.c:107
+ jmp short 01c63h ; eb 04 ; 0xf1c5d
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf1c5f
+ jnc short 01c8ch ; 73 29 ; 0xf1c61
+ mov bl, al ; 88 c3 ; 0xf1c63 ata.c:108
+ xor bh, bh ; 30 ff ; 0xf1c65
+ imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf1c67
+ mov es, dx ; 8e c2 ; 0xf1c6a
+ add bx, si ; 01 f3 ; 0xf1c6c
+ mov byte [es:bx+0027ch], 000h ; 26 c6 87 7c 02 00 ; 0xf1c6e
+ mov word [es:bx+0027eh], strict word 00000h ; 26 c7 87 7e 02 00 00 ; 0xf1c74 ata.c:109
+ mov word [es:bx+00280h], strict word 00000h ; 26 c7 87 80 02 00 00 ; 0xf1c7b ata.c:110
+ mov byte [es:bx+0027dh], 000h ; 26 c6 87 7d 02 00 ; 0xf1c82 ata.c:111
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1c88 ata.c:112
+ jmp short 01c5fh ; eb d3 ; 0xf1c8a
+ xor al, al ; 30 c0 ; 0xf1c8c ata.c:115
+ jmp short 01c94h ; eb 04 ; 0xf1c8e
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf1c90
+ jnc short 01cfbh ; 73 67 ; 0xf1c92
+ mov bl, al ; 88 c3 ; 0xf1c94 ata.c:116
+ xor bh, bh ; 30 ff ; 0xf1c96
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1c98
+ mov es, dx ; 8e c2 ; 0xf1c9b
+ add bx, si ; 01 f3 ; 0xf1c9d
+ mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00 ; 0xf1c9f
+ mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf1ca5 ata.c:118
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf1cab ata.c:120
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf1cb0 ata.c:121
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf1cb6 ata.c:122
+ mov word [es:bx+02ah], strict word 00000h ; 26 c7 47 2a 00 00 ; 0xf1cbb ata.c:123
+ mov word [es:bx+02ch], strict word 00000h ; 26 c7 47 2c 00 00 ; 0xf1cc1 ata.c:124
+ mov word [es:bx+02eh], strict word 00000h ; 26 c7 47 2e 00 00 ; 0xf1cc7 ata.c:125
+ mov word [es:bx+030h], strict word 00000h ; 26 c7 47 30 00 00 ; 0xf1ccd ata.c:126
+ mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00 ; 0xf1cd3 ata.c:127
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf1cd9 ata.c:128
+ mov word [es:bx+03ch], strict word 00000h ; 26 c7 47 3c 00 00 ; 0xf1cdf ata.c:129
+ mov word [es:bx+03ah], strict word 00000h ; 26 c7 47 3a 00 00 ; 0xf1ce5
+ mov word [es:bx+038h], strict word 00000h ; 26 c7 47 38 00 00 ; 0xf1ceb
+ mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00 ; 0xf1cf1
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1cf7 ata.c:130
+ jmp short 01c90h ; eb 95 ; 0xf1cf9
+ xor al, al ; 30 c0 ; 0xf1cfb ata.c:133
+ jmp short 01d03h ; eb 04 ; 0xf1cfd
+ cmp AL, strict byte 014h ; 3c 14 ; 0xf1cff
+ jnc short 01d1bh ; 73 18 ; 0xf1d01
+ mov bl, al ; 88 c3 ; 0xf1d03 ata.c:134
+ xor bh, bh ; 30 ff ; 0xf1d05
+ mov es, dx ; 8e c2 ; 0xf1d07
+ add bx, si ; 01 f3 ; 0xf1d09
+ mov byte [es:bx+00253h], 014h ; 26 c6 87 53 02 14 ; 0xf1d0b
+ mov byte [es:bx+00268h], 014h ; 26 c6 87 68 02 14 ; 0xf1d11 ata.c:135
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1d17 ata.c:136
+ jmp short 01cffh ; eb e4 ; 0xf1d19
+ mov es, dx ; 8e c2 ; 0xf1d1b ata.c:138
+ mov byte [es:si+00252h], 000h ; 26 c6 84 52 02 00 ; 0xf1d1d
+ mov byte [es:si+00267h], 000h ; 26 c6 84 67 02 00 ; 0xf1d23 ata.c:139
+ pop bp ; 5d ; 0xf1d29 ata.c:140
+ pop si ; 5e ; 0xf1d2a
+ retn ; c3 ; 0xf1d2b
+ ; disGetNextSymbol 0xf1d2c LB 0x95ac -> off=0x0 cb=00000000000000dd uValue=00000000000f072c 'ata_reset'
+ata_reset: ; 0xf1d2c LB 0xdd
+ push bp ; 55 ; 0xf1d2c ata.c:148
+ mov bp, sp ; 89 e5 ; 0xf1d2d
+ push bx ; 53 ; 0xf1d2f
+ push cx ; 51 ; 0xf1d30
+ push dx ; 52 ; 0xf1d31
+ push si ; 56 ; 0xf1d32
+ push di ; 57 ; 0xf1d33
+ push ax ; 50 ; 0xf1d34
+ push ax ; 50 ; 0xf1d35
+ push ax ; 50 ; 0xf1d36
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d37 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1d3a
+ mov es, ax ; 8e c0 ; 0xf1d3d
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf1d3f
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf1d42 ata.c:49
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf1d45
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1d48 ata.c:157
+ shr ax, 1 ; d1 e8 ; 0xf1d4b
+ mov ah, byte [bp-010h] ; 8a 66 f0 ; 0xf1d4d ata.c:158
+ and ah, 001h ; 80 e4 01 ; 0xf1d50
+ mov byte [bp-00ch], ah ; 88 66 f4 ; 0xf1d53
+ xor ah, ah ; 30 e4 ; 0xf1d56 ata.c:160
+ imul bx, ax, strict byte 00006h ; 6b d8 06 ; 0xf1d58
+ mov es, dx ; 8e c2 ; 0xf1d5b
+ add bx, di ; 01 fb ; 0xf1d5d
+ mov cx, word [es:bx+0027eh] ; 26 8b 8f 7e 02 ; 0xf1d5f
+ mov si, word [es:bx+00280h] ; 26 8b b7 80 02 ; 0xf1d64 ata.c:161
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1d69 ata.c:166
+ mov AL, strict byte 00eh ; b0 0e ; 0xf1d6c
+ out DX, AL ; ee ; 0xf1d6e
+ mov bx, 000ffh ; bb ff 00 ; 0xf1d6f ata.c:169
+ dec bx ; 4b ; 0xf1d72 ata.c:170
+ test bx, bx ; 85 db ; 0xf1d73
+ jbe short 01d83h ; 76 0c ; 0xf1d75
+ mov dx, cx ; 89 ca ; 0xf1d77 ata.c:171
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1d79
+ in AL, DX ; ec ; 0xf1d7c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1d7d
+ test AL, strict byte 080h ; a8 80 ; 0xf1d7f ata.c:172
+ je short 01d72h ; 74 ef ; 0xf1d81
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1d83 ata.c:177
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1d86
+ out DX, AL ; ee ; 0xf1d88
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf1d89 ata.c:180
+ dec bx ; 4b ; 0xf1d8c ata.c:181
+ test bx, bx ; 85 db ; 0xf1d8d
+ jbe short 01da7h ; 76 16 ; 0xf1d8f
+ mov dx, cx ; 89 ca ; 0xf1d91 ata.c:182
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1d93
+ in AL, DX ; ec ; 0xf1d96
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1d97
+ test AL, strict byte 080h ; a8 80 ; 0xf1d99 ata.c:183
+ je short 01da7h ; 74 0a ; 0xf1d9b
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1d9d ata.c:185
+ dec ax ; 48 ; 0xf1da0 ata.c:186
+ test ax, ax ; 85 c0 ; 0xf1da1
+ jnbe short 01da0h ; 77 fb ; 0xf1da3
+ jmp short 01d8ch ; eb e5 ; 0xf1da5 ata.c:189
+ imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c ; 0xf1da7 ata.c:191
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf1dab
+ add bx, di ; 01 fb ; 0xf1dae
+ cmp byte [es:bx+022h], 000h ; 26 80 7f 22 00 ; 0xf1db0
+ je short 01df9h ; 74 42 ; 0xf1db5
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1db7 ata.c:194
+ je short 01dc2h ; 74 05 ; 0xf1dbb
+ mov ax, 000b0h ; b8 b0 00 ; 0xf1dbd
+ jmp short 01dc5h ; eb 03 ; 0xf1dc0
+ mov ax, 000a0h ; b8 a0 00 ; 0xf1dc2
+ mov dx, cx ; 89 ca ; 0xf1dc5
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1dc7
+ out DX, AL ; ee ; 0xf1dca
+ mov dx, cx ; 89 ca ; 0xf1dcb ata.c:195
+ inc dx ; 42 ; 0xf1dcd
+ inc dx ; 42 ; 0xf1dce
+ in AL, DX ; ec ; 0xf1dcf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1dd0
+ mov bx, ax ; 89 c3 ; 0xf1dd2
+ mov dx, cx ; 89 ca ; 0xf1dd4 ata.c:196
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1dd6
+ in AL, DX ; ec ; 0xf1dd9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1dda
+ cmp bl, 001h ; 80 fb 01 ; 0xf1ddc ata.c:198
+ jne short 01df9h ; 75 18 ; 0xf1ddf
+ cmp al, bl ; 38 d8 ; 0xf1de1
+ jne short 01df9h ; 75 14 ; 0xf1de3
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf1de5 ata.c:200
+ dec bx ; 4b ; 0xf1de8 ata.c:201
+ test bx, bx ; 85 db ; 0xf1de9
+ jbe short 01df9h ; 76 0c ; 0xf1deb
+ mov dx, cx ; 89 ca ; 0xf1ded ata.c:202
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1def
+ in AL, DX ; ec ; 0xf1df2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1df3
+ test AL, strict byte 040h ; a8 40 ; 0xf1df5 ata.c:203
+ je short 01de8h ; 74 ef ; 0xf1df7
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1df9 ata.c:210
+ mov AL, strict byte 008h ; b0 08 ; 0xf1dfc
+ out DX, AL ; ee ; 0xf1dfe
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1dff ata.c:211
+ pop di ; 5f ; 0xf1e02
+ pop si ; 5e ; 0xf1e03
+ pop dx ; 5a ; 0xf1e04
+ pop cx ; 59 ; 0xf1e05
+ pop bx ; 5b ; 0xf1e06
+ pop bp ; 5d ; 0xf1e07
+ retn ; c3 ; 0xf1e08
+ ; disGetNextSymbol 0xf1e09 LB 0x94cf -> off=0x0 cb=00000000000002b5 uValue=00000000000f0809 'ata_cmd_data_in'
+ata_cmd_data_in: ; 0xf1e09 LB 0x2b5
+ push bp ; 55 ; 0xf1e09 ata.c:225
+ mov bp, sp ; 89 e5 ; 0xf1e0a
+ push si ; 56 ; 0xf1e0c
+ push di ; 57 ; 0xf1e0d
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf1e0e
+ push ax ; 50 ; 0xf1e11
+ push dx ; 52 ; 0xf1e12
+ push bx ; 53 ; 0xf1e13
+ push cx ; 51 ; 0xf1e14
+ mov es, dx ; 8e c2 ; 0xf1e15 ata.c:235
+ mov bx, ax ; 89 c3 ; 0xf1e17
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1e19
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf1e1d
+ mov bl, al ; 88 c3 ; 0xf1e20 ata.c:237
+ xor bh, ah ; 30 e7 ; 0xf1e22
+ mov ax, bx ; 89 d8 ; 0xf1e24
+ cwd ; 99 ; 0xf1e26
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf1e27
+ sar ax, 1 ; d1 f8 ; 0xf1e29
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf1e2b
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e2e
+ add di, ax ; 01 c7 ; 0xf1e31
+ mov ax, word [es:di+0027eh] ; 26 8b 85 7e 02 ; 0xf1e33
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1e38
+ mov ax, word [es:di+00280h] ; 26 8b 85 80 02 ; 0xf1e3b ata.c:238
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1e40
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1e43 ata.c:240
+ add bx, word [bp-016h] ; 03 5e ea ; 0xf1e46
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf1e49
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e4d
+ test ax, ax ; 85 c0 ; 0xf1e50 ata.c:241
+ jne short 01e5bh ; 75 07 ; 0xf1e52
+ mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1e54 ata.c:247
+ jmp short 01e5eh ; eb 03 ; 0xf1e59 ata.c:248
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1e5b ata.c:254
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1e5e ata.c:257
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e61
+ in AL, DX ; ec ; 0xf1e64
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e65
+ test AL, strict byte 080h ; a8 80 ; 0xf1e67 ata.c:258
+ je short 01e7ah ; 74 0f ; 0xf1e69
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1e6b ata.c:262
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1e6e
+ mov AL, strict byte 008h ; b0 08 ; 0xf1e71
+ out DX, AL ; ee ; 0xf1e73
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1e74 ata.c:263
+ jmp near 020b7h ; e9 3d 02 ; 0xf1e77
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1e7a ata.c:266
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e7d
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1e80
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1e84
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1e87
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1e8b
+ mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1e8e ata.c:267
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1e92
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1e95 ata.c:268
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1e99
+ mov ah, byte [es:bx+014h] ; 26 8a 67 14 ; 0xf1e9c ata.c:269
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1ea0 ata.c:272
+ test al, al ; 84 c0 ; 0xf1ea3
+ je short 01eaah ; 74 03 ; 0xf1ea5
+ jmp near 01f8dh ; e9 e3 00 ; 0xf1ea7
+ xor bx, bx ; 31 db ; 0xf1eaa ata.c:273
+ xor dx, dx ; 31 d2 ; 0xf1eac
+ xor ah, ah ; 30 e4 ; 0xf1eae
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1eb0
+ mov cx, word [es:si] ; 26 8b 0c ; 0xf1eb3
+ add cx, word [bp-01ch] ; 03 4e e4 ; 0xf1eb6
+ mov word [bp-014h], cx ; 89 4e ec ; 0xf1eb9
+ adc bx, word [es:si+002h] ; 26 13 5c 02 ; 0xf1ebc
+ adc dx, word [es:si+004h] ; 26 13 54 04 ; 0xf1ec0
+ adc ax, word [es:si+006h] ; 26 13 44 06 ; 0xf1ec4
+ test ax, ax ; 85 c0 ; 0xf1ec8
+ jnbe short 01edfh ; 77 13 ; 0xf1eca
+ je short 01ed1h ; 74 03 ; 0xf1ecc
+ jmp near 01f43h ; e9 72 00 ; 0xf1ece
+ test dx, dx ; 85 d2 ; 0xf1ed1
+ jnbe short 01edfh ; 77 0a ; 0xf1ed3
+ jne short 01f43h ; 75 6c ; 0xf1ed5
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf1ed7
+ jnbe short 01edfh ; 77 02 ; 0xf1edb
+ jne short 01f43h ; 75 64 ; 0xf1edd
+ mov bx, si ; 89 f3 ; 0xf1edf ata.c:275
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1ee1
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1ee5
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1ee9
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1eed
+ mov si, strict word 00018h ; be 18 00 ; 0xf1ef0
+ call 0af90h ; e8 9a 90 ; 0xf1ef3
+ xor dh, dh ; 30 f6 ; 0xf1ef6
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf1ef8
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1efb ata.c:276
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1efe
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f02
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f06
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f09
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f0d
+ mov si, strict word 00020h ; be 20 00 ; 0xf1f10
+ call 0af90h ; e8 7a 90 ; 0xf1f13
+ mov bx, dx ; 89 d3 ; 0xf1f16
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf1f18 ata.c:277
+ xor al, al ; 30 c0 ; 0xf1f1b
+ shr ax, 008h ; c1 e8 08 ; 0xf1f1d
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f20
+ inc dx ; 42 ; 0xf1f23
+ inc dx ; 42 ; 0xf1f24
+ out DX, AL ; ee ; 0xf1f25
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f26 ata.c:278
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f29
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf1f2c
+ out DX, AL ; ee ; 0xf1f2f
+ mov ax, bx ; 89 d8 ; 0xf1f30 ata.c:279
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f32
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1f35
+ out DX, AL ; ee ; 0xf1f38
+ shr ax, 008h ; c1 e8 08 ; 0xf1f39 ata.c:280
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f3c
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf1f3f
+ out DX, AL ; ee ; 0xf1f42
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1f43 ata.c:284
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f46
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1f49
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1f4c
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f4f ata.c:285
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f53
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f57
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f5a
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f5e
+ mov si, strict word 00008h ; be 08 00 ; 0xf1f61
+ call 0af90h ; e8 29 90 ; 0xf1f64
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf1f67
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f6a ata.c:286
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f6d
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f71
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f75
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f78
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f7c
+ mov si, strict word 00018h ; be 18 00 ; 0xf1f7f
+ call 0af90h ; e8 0b 90 ; 0xf1f82
+ mov ah, dl ; 88 d4 ; 0xf1f85
+ and ah, 00fh ; 80 e4 0f ; 0xf1f87
+ or ah, 040h ; 80 cc 40 ; 0xf1f8a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1f8d ata.c:289
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1f90
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1f93
+ out DX, AL ; ee ; 0xf1f95
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f96 ata.c:290
+ inc dx ; 42 ; 0xf1f99
+ xor al, al ; 30 c0 ; 0xf1f9a
+ out DX, AL ; ee ; 0xf1f9c
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f9d ata.c:291
+ inc dx ; 42 ; 0xf1fa0
+ inc dx ; 42 ; 0xf1fa1
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf1fa2
+ out DX, AL ; ee ; 0xf1fa5
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fa6 ata.c:292
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1fa9
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1fac
+ out DX, AL ; ee ; 0xf1faf
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1fb0 ata.c:293
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fb3
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1fb6
+ mov al, bl ; 88 d8 ; 0xf1fb9
+ out DX, AL ; ee ; 0xf1fbb
+ mov dx, bx ; 89 da ; 0xf1fbc ata.c:294
+ shr dx, 008h ; c1 ea 08 ; 0xf1fbe
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf1fc1
+ add bx, strict byte 00005h ; 83 c3 05 ; 0xf1fc4
+ mov al, dl ; 88 d0 ; 0xf1fc7
+ mov dx, bx ; 89 da ; 0xf1fc9
+ out DX, AL ; ee ; 0xf1fcb
+ test byte [bp-008h], 001h ; f6 46 f8 01 ; 0xf1fcc ata.c:295
+ je short 01fd7h ; 74 05 ; 0xf1fd0
+ mov dx, 000b0h ; ba b0 00 ; 0xf1fd2
+ jmp short 01fdah ; eb 03 ; 0xf1fd5
+ mov dx, 000a0h ; ba a0 00 ; 0xf1fd7
+ mov al, ah ; 88 e0 ; 0xf1fda
+ xor ah, ah ; 30 e4 ; 0xf1fdc
+ or ax, dx ; 09 d0 ; 0xf1fde
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fe0
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1fe3
+ out DX, AL ; ee ; 0xf1fe6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fe7 ata.c:296
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1fea
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf1fed
+ out DX, AL ; ee ; 0xf1ff0
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf1ff1 ata.c:298
+ cmp ax, 000c4h ; 3d c4 00 ; 0xf1ff4
+ je short 01ffeh ; 74 05 ; 0xf1ff7
+ cmp ax, strict word 00029h ; 3d 29 00 ; 0xf1ff9
+ jne short 02008h ; 75 0a ; 0xf1ffc
+ mov si, word [bp-01ch] ; 8b 76 e4 ; 0xf1ffe ata.c:299
+ mov word [bp-01ch], strict word 00001h ; c7 46 e4 01 00 ; 0xf2001 ata.c:300
+ jmp short 0200bh ; eb 03 ; 0xf2006 ata.c:301
+ mov si, strict word 00001h ; be 01 00 ; 0xf2008 ata.c:302
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf200b ata.c:306
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf200e
+ in AL, DX ; ec ; 0xf2011
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2012
+ mov bl, al ; 88 c3 ; 0xf2014
+ test AL, strict byte 080h ; a8 80 ; 0xf2016 ata.c:307
+ jne short 0200bh ; 75 f1 ; 0xf2018
+ test AL, strict byte 001h ; a8 01 ; 0xf201a ata.c:311
+ je short 0202dh ; 74 0f ; 0xf201c
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf201e ata.c:314
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2021
+ mov AL, strict byte 008h ; b0 08 ; 0xf2024
+ out DX, AL ; ee ; 0xf2026
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2027 ata.c:315
+ jmp near 020b7h ; e9 8a 00 ; 0xf202a
+ test bl, 008h ; f6 c3 08 ; 0xf202d ata.c:316
+ jne short 02041h ; 75 0f ; 0xf2030
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2032 ata.c:319
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2035
+ mov AL, strict byte 008h ; b0 08 ; 0xf2038
+ out DX, AL ; ee ; 0xf203a
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf203b ata.c:320
+ jmp near 020b7h ; e9 76 00 ; 0xf203e
+ sti ; fb ; 0xf2041 ata.c:325
+ cmp di, 0f800h ; 81 ff 00 f8 ; 0xf2042 ata.c:330
+ jc short 02055h ; 72 0d ; 0xf2046
+ sub di, 00800h ; 81 ef 00 08 ; 0xf2048 ata.c:331
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf204c
+ add ax, 00080h ; 05 80 00 ; 0xf204f
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf2052
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2055 ata.c:338
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2058
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf205b
+ rep insw ; f3 6d ; 0xf205e
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf2060 ata.c:339
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf2063
+ add word [es:bx+018h], si ; 26 01 77 18 ; 0xf2066
+ dec word [bp-01ch] ; ff 4e e4 ; 0xf206a ata.c:340
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf206d ata.c:342
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2070
+ in AL, DX ; ec ; 0xf2073
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2074
+ mov bl, al ; 88 c3 ; 0xf2076
+ test AL, strict byte 080h ; a8 80 ; 0xf2078 ata.c:343
+ jne short 0206dh ; 75 f1 ; 0xf207a
+ cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf207c ata.c:346
+ jne short 02096h ; 75 14 ; 0xf2080
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2082 ata.c:347
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2084
+ je short 020ach ; 74 24 ; 0xf2086
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2088 ata.c:351
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf208b
+ mov AL, strict byte 008h ; b0 08 ; 0xf208e
+ out DX, AL ; ee ; 0xf2090
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2091 ata.c:352
+ jmp short 020b7h ; eb 21 ; 0xf2094
+ mov al, bl ; 88 d8 ; 0xf2096 ata.c:357
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2098
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf209a
+ je short 02042h ; 74 a4 ; 0xf209c
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf209e ata.c:361
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20a1
+ mov AL, strict byte 008h ; b0 08 ; 0xf20a4
+ out DX, AL ; ee ; 0xf20a6
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf20a7 ata.c:362
+ jmp short 020b7h ; eb 0b ; 0xf20aa
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20ac ata.c:368
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20af
+ mov AL, strict byte 008h ; b0 08 ; 0xf20b2
+ out DX, AL ; ee ; 0xf20b4
+ xor ax, ax ; 31 c0 ; 0xf20b5 ata.c:369
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf20b7 ata.c:370
+ pop di ; 5f ; 0xf20ba
+ pop si ; 5e ; 0xf20bb
+ pop bp ; 5d ; 0xf20bc
+ retn ; c3 ; 0xf20bd
+ ; disGetNextSymbol 0xf20be LB 0x921a -> off=0x0 cb=0000000000000094 uValue=00000000000f0abe 'ata_signature'
+ata_signature: ; 0xf20be LB 0x94
+ push bp ; 55 ; 0xf20be ata.c:376
+ mov bp, sp ; 89 e5 ; 0xf20bf
+ push cx ; 51 ; 0xf20c1
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf20c2
+ mov cx, ax ; 89 c1 ; 0xf20c5
+ mov al, bl ; 88 d8 ; 0xf20c7
+ xor bx, bx ; 31 db ; 0xf20c9 ata.c:378
+ test al, al ; 84 c0 ; 0xf20cb ata.c:386
+ je short 020d4h ; 74 05 ; 0xf20cd
+ mov ax, 000b0h ; b8 b0 00 ; 0xf20cf
+ jmp short 020d7h ; eb 03 ; 0xf20d2
+ mov ax, 000a0h ; b8 a0 00 ; 0xf20d4
+ mov dx, cx ; 89 ca ; 0xf20d7
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20d9
+ out DX, AL ; ee ; 0xf20dc
+ mov dx, cx ; 89 ca ; 0xf20dd ata.c:388
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf20df
+ in AL, DX ; ec ; 0xf20e2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf20e3
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf20e5
+ test AL, strict byte 080h ; a8 80 ; 0xf20e8 ata.c:389
+ jne short 020ddh ; 75 f1 ; 0xf20ea
+ mov dx, cx ; 89 ca ; 0xf20ec ata.c:397
+ inc dx ; 42 ; 0xf20ee
+ inc dx ; 42 ; 0xf20ef
+ in AL, DX ; ec ; 0xf20f0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf20f1
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf20f3
+ mov dx, cx ; 89 ca ; 0xf20f6 ata.c:398
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf20f8
+ in AL, DX ; ec ; 0xf20fb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf20fc
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf20fe ata.c:399
+ jne short 0214ah ; 75 46 ; 0xf2102
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2104
+ jne short 0214ah ; 75 42 ; 0xf2106
+ mov dx, cx ; 89 ca ; 0xf2108 ata.c:400
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf210a
+ in AL, DX ; ec ; 0xf210d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf210e
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2110
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2113
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf2116
+ mov dx, cx ; 89 ca ; 0xf2119 ata.c:401
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf211b
+ in AL, DX ; ec ; 0xf211e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf211f
+ mov dl, al ; 88 c2 ; 0xf2121
+ cmp byte [bp-008h], 014h ; 80 7e f8 14 ; 0xf2123 ata.c:408
+ jne short 02132h ; 75 09 ; 0xf2127
+ cmp AL, strict byte 0ebh ; 3c eb ; 0xf2129
+ jne short 02132h ; 75 05 ; 0xf212b
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf212d ata.c:409
+ jmp short 0214ah ; eb 18 ; 0xf2130 ata.c:411
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf2132
+ jne short 02147h ; 75 0f ; 0xf2136
+ test dl, dl ; 84 d2 ; 0xf2138
+ jne short 02147h ; 75 0b ; 0xf213a
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf213c ata.c:412
+ je short 0214ah ; 74 08 ; 0xf2140
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf2142 ata.c:413
+ jmp short 0214ah ; eb 03 ; 0xf2145 ata.c:418
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2147 ata.c:419
+ mov ax, bx ; 89 d8 ; 0xf214a ata.c:426
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf214c
+ pop cx ; 59 ; 0xf214f
+ pop bp ; 5d ; 0xf2150
+ retn ; c3 ; 0xf2151
+ ; disGetNextSymbol 0xf2152 LB 0x9186 -> off=0x0 cb=000000000000062a uValue=00000000000f0b52 'ata_detect'
+ata_detect: ; 0xf2152 LB 0x62a
+ push bp ; 55 ; 0xf2152 ata.c:428
+ mov bp, sp ; 89 e5 ; 0xf2153
+ push si ; 56 ; 0xf2155
+ push di ; 57 ; 0xf2156
+ sub sp, 0025ch ; 81 ec 5c 02 ; 0xf2157
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf215b ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf215e
+ mov es, ax ; 8e c0 ; 0xf2161
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf2163
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2166 ata.c:49
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf2169 ata.c:451
+ mov es, ax ; 8e c0 ; 0xf216c
+ mov word [bp-024h], bx ; 89 5e dc ; 0xf216e
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2171
+ mov byte [es:bx+0027ch], 000h ; 26 c6 87 7c 02 00 ; 0xf2174 ata.c:454
+ mov word [es:bx+0027eh], 001f0h ; 26 c7 87 7e 02 f0 01 ; 0xf217a ata.c:455
+ mov word [es:bx+00280h], 003f0h ; 26 c7 87 80 02 f0 03 ; 0xf2181 ata.c:456
+ mov byte [es:bx+0027dh], 00eh ; 26 c6 87 7d 02 0e ; 0xf2188 ata.c:457
+ mov byte [es:bx+00282h], 000h ; 26 c6 87 82 02 00 ; 0xf218e ata.c:460
+ mov word [es:bx+00284h], 00170h ; 26 c7 87 84 02 70 01 ; 0xf2194 ata.c:461
+ mov word [es:bx+00286h], 00370h ; 26 c7 87 86 02 70 03 ; 0xf219b ata.c:462
+ mov byte [es:bx+00283h], 00fh ; 26 c6 87 83 02 0f ; 0xf21a2 ata.c:463
+ mov byte [es:bx+00288h], 000h ; 26 c6 87 88 02 00 ; 0xf21a8 ata.c:466
+ mov word [es:bx+0028ah], 001e8h ; 26 c7 87 8a 02 e8 01 ; 0xf21ae ata.c:467
+ mov word [es:bx+0028ch], 003e0h ; 26 c7 87 8c 02 e0 03 ; 0xf21b5 ata.c:468
+ mov byte [es:bx+00289h], 00ch ; 26 c6 87 89 02 0c ; 0xf21bc ata.c:469
+ mov byte [es:bx+0028eh], 000h ; 26 c6 87 8e 02 00 ; 0xf21c2 ata.c:472
+ mov word [es:bx+00290h], 00168h ; 26 c7 87 90 02 68 01 ; 0xf21c8 ata.c:473
+ mov word [es:bx+00292h], 00360h ; 26 c7 87 92 02 60 03 ; 0xf21cf ata.c:474
+ mov byte [es:bx+0028fh], 00bh ; 26 c6 87 8f 02 0b ; 0xf21d6 ata.c:475
+ xor al, al ; 30 c0 ; 0xf21dc ata.c:482
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf21de
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf21e1
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf21e4 ata.c:484
+ jmp near 02706h ; e9 1c 05 ; 0xf21e7
+ test cl, cl ; 84 c9 ; 0xf21ea ata.c:529
+ jne short 0224ch ; 75 5e ; 0xf21ec
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf21ee ata.c:530
+ mov AL, strict byte 00eh ; b0 0e ; 0xf21f1
+ out DX, AL ; ee ; 0xf21f3
+ mov bx, strict word 00020h ; bb 20 00 ; 0xf21f4 ata.c:536
+ dec bx ; 4b ; 0xf21f7 ata.c:537
+ test bx, bx ; 85 db ; 0xf21f8
+ jbe short 02206h ; 76 0a ; 0xf21fa
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf21fc ata.c:538
+ in AL, DX ; ec ; 0xf21ff
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2200
+ test AL, strict byte 080h ; a8 80 ; 0xf2202 ata.c:539
+ je short 021f7h ; 74 f1 ; 0xf2204
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf2206 ata.c:543
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2209
+ out DX, AL ; ee ; 0xf220b
+ mov cl, byte [bp-010h] ; 8a 4e f0 ; 0xf220c ata.c:550
+ xor ch, ch ; 30 ed ; 0xf220f
+ xor bx, bx ; 31 db ; 0xf2211
+ mov dx, cx ; 89 ca ; 0xf2213
+ mov ax, si ; 89 f0 ; 0xf2215
+ call 020beh ; e8 a4 fe ; 0xf2217
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xf221a
+ mov byte [bp-02ah], ah ; 88 66 d6 ; 0xf221d
+ mov byte [bp-029h], ch ; 88 6e d7 ; 0xf2220
+ imul bx, word [bp-02ah], strict byte 0001ch ; 6b 5e d6 1c ; 0xf2223
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2227
+ add bx, word [bp-024h] ; 03 5e dc ; 0xf222a
+ mov byte [es:bx+022h], al ; 26 88 47 22 ; 0xf222d
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2231 ata.c:551
+ mov dx, cx ; 89 ca ; 0xf2234
+ mov ax, si ; 89 f0 ; 0xf2236
+ call 020beh ; e8 83 fe ; 0xf2238
+ mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xf223b
+ inc bx ; 43 ; 0xf223e
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf223f
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2242
+ add bx, word [bp-024h] ; 03 5e dc ; 0xf2245
+ mov byte [es:bx+022h], al ; 26 88 47 22 ; 0xf2248
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf224c ata.c:555
+ mov AL, strict byte 008h ; b0 08 ; 0xf224f
+ out DX, AL ; ee ; 0xf2251
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2252 ata.c:557
+ xor ah, ah ; 30 e4 ; 0xf2255
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2257
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf225a
+ mov bx, word [bp-024h] ; 8b 5e dc ; 0xf225d
+ add bx, ax ; 01 c3 ; 0xf2260
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf2262
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf2266
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2269 ata.c:560
+ jne short 022b6h ; 75 49 ; 0xf226b
+ mov byte [es:bx+023h], 0ffh ; 26 c6 47 23 ff ; 0xf226d ata.c:568
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf2272 ata.c:569
+ lea dx, [bp-00260h] ; 8d 96 a0 fd ; 0xf2277 ata.c:570
+ mov bx, word [bp-024h] ; 8b 5e dc ; 0xf227b
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf227e
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf2282
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2286 ata.c:571
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2289
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf228d ata.c:573
+ mov bx, 000ech ; bb ec 00 ; 0xf2290
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2293
+ mov dx, es ; 8c c2 ; 0xf2296
+ call 01e09h ; e8 6e fb ; 0xf2298
+ test ax, ax ; 85 c0 ; 0xf229b
+ je short 022aah ; 74 0b ; 0xf229d
+ push 00134h ; 68 34 01 ; 0xf229f ata.c:574
+ push strict byte 00007h ; 6a 07 ; 0xf22a2
+ call 0190eh ; e8 67 f6 ; 0xf22a4
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf22a7
+ test byte [bp-00260h], 080h ; f6 86 a0 fd 80 ; 0xf22aa ata.c:576
+ je short 022b9h ; 74 08 ; 0xf22af
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf22b1
+ jmp short 022bbh ; eb 05 ; 0xf22b4
+ jmp near 024cdh ; e9 14 02 ; 0xf22b6
+ xor ax, ax ; 31 c0 ; 0xf22b9
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf22bb
+ mov byte [bp-014h], 000h ; c6 46 ec 00 ; 0xf22be ata.c:580
+ mov word [bp-02ch], 00200h ; c7 46 d4 00 02 ; 0xf22c2 ata.c:582
+ mov ax, word [bp-0025eh] ; 8b 86 a2 fd ; 0xf22c7 ata.c:584
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf22cb
+ mov ax, word [bp-0025ah] ; 8b 86 a6 fd ; 0xf22ce ata.c:585
+ mov word [bp-022h], ax ; 89 46 de ; 0xf22d2
+ mov ax, word [bp-00254h] ; 8b 86 ac fd ; 0xf22d5 ata.c:586
+ mov word [bp-026h], ax ; 89 46 da ; 0xf22d9
+ mov ax, word [bp-001e8h] ; 8b 86 18 fe ; 0xf22dc ata.c:588
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf22e0
+ mov si, word [bp-001e6h] ; 8b b6 1a fe ; 0xf22e3
+ xor ax, ax ; 31 c0 ; 0xf22e7
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf22e9
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf22ec
+ cmp si, 00fffh ; 81 fe ff 0f ; 0xf22ef ata.c:589
+ jne short 02314h ; 75 1f ; 0xf22f3
+ cmp word [bp-028h], strict byte 0ffffh ; 83 7e d8 ff ; 0xf22f5
+ jne short 02314h ; 75 19 ; 0xf22f9
+ mov ax, word [bp-00192h] ; 8b 86 6e fe ; 0xf22fb ata.c:590
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf22ff
+ mov ax, word [bp-00194h] ; 8b 86 6c fe ; 0xf2302
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf2306
+ mov si, word [bp-00196h] ; 8b b6 6a fe ; 0xf2309
+ mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf230d
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf2311
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2314 ata.c:591
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2317
+ jc short 02327h ; 72 0c ; 0xf2319
+ jbe short 0232fh ; 76 12 ; 0xf231b
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf231d
+ je short 02337h ; 74 16 ; 0xf231f
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2321
+ je short 02333h ; 74 0e ; 0xf2323
+ jmp short 02371h ; eb 4a ; 0xf2325
+ test al, al ; 84 c0 ; 0xf2327
+ jne short 02371h ; 75 46 ; 0xf2329
+ mov BL, strict byte 01eh ; b3 1e ; 0xf232b ata.c:594
+ jmp short 02339h ; eb 0a ; 0xf232d ata.c:595
+ mov BL, strict byte 026h ; b3 26 ; 0xf232f ata.c:597
+ jmp short 02339h ; eb 06 ; 0xf2331 ata.c:598
+ mov BL, strict byte 067h ; b3 67 ; 0xf2333 ata.c:600
+ jmp short 02339h ; eb 02 ; 0xf2335 ata.c:601
+ mov BL, strict byte 070h ; b3 70 ; 0xf2337 ata.c:603
+ mov al, bl ; 88 d8 ; 0xf2339 ata.c:610
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf233b
+ xor ah, ah ; 30 e4 ; 0xf233d
+ call 0165fh ; e8 1d f3 ; 0xf233f
+ xor ah, ah ; 30 e4 ; 0xf2342
+ mov dx, ax ; 89 c2 ; 0xf2344
+ sal dx, 008h ; c1 e2 08 ; 0xf2346
+ mov al, bl ; 88 d8 ; 0xf2349
+ call 0165fh ; e8 11 f3 ; 0xf234b
+ xor ah, ah ; 30 e4 ; 0xf234e
+ add ax, dx ; 01 d0 ; 0xf2350
+ mov word [bp-034h], ax ; 89 46 cc ; 0xf2352
+ mov al, bl ; 88 d8 ; 0xf2355 ata.c:611
+ add AL, strict byte 002h ; 04 02 ; 0xf2357
+ xor ah, ah ; 30 e4 ; 0xf2359
+ call 0165fh ; e8 01 f3 ; 0xf235b
+ xor ah, ah ; 30 e4 ; 0xf235e
+ mov word [bp-036h], ax ; 89 46 ca ; 0xf2360
+ mov al, bl ; 88 d8 ; 0xf2363 ata.c:612
+ add AL, strict byte 007h ; 04 07 ; 0xf2365
+ call 0165fh ; e8 f5 f2 ; 0xf2367
+ xor ah, ah ; 30 e4 ; 0xf236a
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf236c
+ jmp short 02383h ; eb 12 ; 0xf236f ata.c:614
+ push word [bp-01ah] ; ff 76 e6 ; 0xf2371 ata.c:615
+ push word [bp-020h] ; ff 76 e0 ; 0xf2374
+ push si ; 56 ; 0xf2377
+ push word [bp-028h] ; ff 76 d8 ; 0xf2378
+ mov dx, ss ; 8c d2 ; 0xf237b
+ lea ax, [bp-036h] ; 8d 46 ca ; 0xf237d
+ call 058d1h ; e8 4e 35 ; 0xf2380
+ mov bx, 00eeah ; bb ea 0e ; 0xf2383 ata.c:618
+ mov cx, ds ; 8c d9 ; 0xf2386
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2388
+ call 018cbh ; e8 3d f5 ; 0xf238b
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf238e
+ push ax ; 50 ; 0xf2391
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf2392
+ push ax ; 50 ; 0xf2395
+ mov ax, word [bp-034h] ; 8b 46 cc ; 0xf2396
+ push ax ; 50 ; 0xf2399
+ push word [bp-026h] ; ff 76 da ; 0xf239a
+ push word [bp-022h] ; ff 76 de ; 0xf239d
+ push word [bp-018h] ; ff 76 e8 ; 0xf23a0
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf23a3
+ xor ah, ah ; 30 e4 ; 0xf23a6
+ push ax ; 50 ; 0xf23a8
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf23a9
+ push ax ; 50 ; 0xf23ac
+ push 0015dh ; 68 5d 01 ; 0xf23ad
+ push strict byte 00004h ; 6a 04 ; 0xf23b0
+ call 0190eh ; e8 59 f5 ; 0xf23b2
+ add sp, strict byte 00014h ; 83 c4 14 ; 0xf23b5
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf23b8 ata.c:620
+ xor ah, ah ; 30 e4 ; 0xf23bb
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf23bd
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf23c0
+ mov di, word [bp-024h] ; 8b 7e dc ; 0xf23c3
+ add di, ax ; 01 c7 ; 0xf23c6
+ mov byte [es:di+023h], 0ffh ; 26 c6 45 23 ff ; 0xf23c8
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf23cd ata.c:621
+ mov byte [es:di+024h], al ; 26 88 45 24 ; 0xf23d0
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf23d4 ata.c:622
+ mov byte [es:di+026h], al ; 26 88 45 26 ; 0xf23d7
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf23db ata.c:623
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xf23de
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf23e2 ata.c:624
+ mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf23e5
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf23e9 ata.c:625
+ mov word [es:di+032h], ax ; 26 89 45 32 ; 0xf23ec
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf23f0 ata.c:626
+ mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf23f3
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf23f7 ata.c:627
+ mov word [es:di+03ch], ax ; 26 89 45 3c ; 0xf23fa
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf23fe
+ mov word [es:di+03ah], ax ; 26 89 45 3a ; 0xf2401
+ mov word [es:di+038h], si ; 26 89 75 38 ; 0xf2405
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf2409
+ mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf240c
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf2410 ata.c:628
+ push DS ; 1e ; 0xf2413
+ push SS ; 16 ; 0xf2414
+ pop DS ; 1f ; 0xf2415
+ lea si, [bp-036h] ; 8d 76 ca ; 0xf2416
+ movsw ; a5 ; 0xf2419
+ movsw ; a5 ; 0xf241a
+ movsw ; a5 ; 0xf241b
+ pop DS ; 1f ; 0xf241c
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf241d ata.c:629
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2420
+ jnc short 02497h ; 73 73 ; 0xf2422
+ test al, al ; 84 c0 ; 0xf2424 ata.c:635
+ jne short 0242dh ; 75 05 ; 0xf2426
+ mov bx, strict word 0003dh ; bb 3d 00 ; 0xf2428 ata.c:636
+ jmp short 02430h ; eb 03 ; 0xf242b ata.c:637
+ mov bx, strict word 0004dh ; bb 4d 00 ; 0xf242d ata.c:638
+ mov cx, word [bp-01eh] ; 8b 4e e2 ; 0xf2430
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2433 ata.c:650
+ xor ah, ah ; 30 e4 ; 0xf2436
+ imul si, ax, strict byte 00005h ; 6b f0 05 ; 0xf2438
+ sal si, 002h ; c1 e6 02 ; 0xf243b
+ add si, 00104h ; 81 c6 04 01 ; 0xf243e
+ xor al, al ; 30 c0 ; 0xf2442
+ mov es, ax ; 8e c0 ; 0xf2444
+ mov word [es:si], bx ; 26 89 1c ; 0xf2446 ata.c:651
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf2449
+ mov es, cx ; 8e c1 ; 0xf244d ata.c:657
+ mov word [es:bx+00ch], strict word 00000h ; 26 c7 47 0c 00 00 ; 0xf244f
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf2455
+ mov word [es:bx+005h], ax ; 26 89 47 05 ; 0xf2459
+ mov word [es:bx+007h], strict word 00000h ; 26 c7 47 07 00 00 ; 0xf245d
+ mov ax, word [bp-034h] ; 8b 46 cc ; 0xf2463 ata.c:659
+ mov word [es:bx], ax ; 26 89 07 ; 0xf2466
+ mov al, byte [bp-036h] ; 8a 46 ca ; 0xf2469 ata.c:660
+ mov byte [es:bx+002h], al ; 26 88 47 02 ; 0xf246c
+ mov byte [es:bx+003h], 0a0h ; 26 c6 47 03 a0 ; 0xf2470 ata.c:661
+ mov al, byte [bp-026h] ; 8a 46 da ; 0xf2475 ata.c:662
+ mov byte [es:bx+004h], al ; 26 88 47 04 ; 0xf2478
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf247c ata.c:663
+ mov word [es:bx+009h], ax ; 26 89 47 09 ; 0xf247f
+ mov al, byte [bp-022h] ; 8a 46 de ; 0xf2483 ata.c:664
+ mov byte [es:bx+00bh], al ; 26 88 47 0b ; 0xf2486
+ mov al, byte [bp-032h] ; 8a 46 ce ; 0xf248a ata.c:665
+ mov byte [es:bx+00eh], al ; 26 88 47 0e ; 0xf248d
+ xor al, al ; 30 c0 ; 0xf2491 ata.c:666
+ xor ah, ah ; 30 e4 ; 0xf2493 ata.c:667
+ jmp short 0249eh ; eb 07 ; 0xf2495
+ jmp short 024b7h ; eb 1e ; 0xf2497
+ cmp ah, 00fh ; 80 fc 0f ; 0xf2499
+ jnc short 024afh ; 73 11 ; 0xf249c
+ mov dl, ah ; 88 e2 ; 0xf249e ata.c:668
+ xor dh, dh ; 30 f6 ; 0xf24a0
+ mov es, cx ; 8e c1 ; 0xf24a2
+ mov si, bx ; 89 de ; 0xf24a4
+ add si, dx ; 01 d6 ; 0xf24a6
+ add al, byte [es:si] ; 26 02 04 ; 0xf24a8
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf24ab
+ jmp short 02499h ; eb ea ; 0xf24ad
+ neg al ; f6 d8 ; 0xf24af ata.c:669
+ mov es, cx ; 8e c1 ; 0xf24b1 ata.c:670
+ mov byte [es:bx+00fh], al ; 26 88 47 0f ; 0xf24b3
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf24b7 ata.c:674
+ xor bh, bh ; 30 ff ; 0xf24ba
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf24bc
+ add bx, word [bp-024h] ; 03 5e dc ; 0xf24bf
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf24c2
+ mov byte [es:bx+00253h], al ; 26 88 87 53 02 ; 0xf24c5
+ inc byte [bp-006h] ; fe 46 fa ; 0xf24ca ata.c:675
+ cmp byte [bp-00eh], 003h ; 80 7e f2 03 ; 0xf24cd ata.c:679
+ jne short 02533h ; 75 60 ; 0xf24d1
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf24d3 ata.c:684
+ xor ah, ah ; 30 e4 ; 0xf24d6
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf24d8
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf24db
+ mov bx, word [bp-024h] ; 8b 5e dc ; 0xf24de
+ add bx, ax ; 01 c3 ; 0xf24e1
+ mov byte [es:bx+023h], 005h ; 26 c6 47 23 05 ; 0xf24e3
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf24e8 ata.c:685
+ lea dx, [bp-00260h] ; 8d 96 a0 fd ; 0xf24ed ata.c:686
+ mov bx, word [bp-024h] ; 8b 5e dc ; 0xf24f1
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf24f4
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf24f8
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf24fc ata.c:687
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf24ff
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf2503 ata.c:689
+ mov bx, 000a1h ; bb a1 00 ; 0xf2506
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2509
+ mov dx, es ; 8c c2 ; 0xf250c
+ call 01e09h ; e8 f8 f8 ; 0xf250e
+ test ax, ax ; 85 c0 ; 0xf2511
+ je short 02520h ; 74 0b ; 0xf2513
+ push 00184h ; 68 84 01 ; 0xf2515 ata.c:690
+ push strict byte 00007h ; 6a 07 ; 0xf2518
+ call 0190eh ; e8 f1 f3 ; 0xf251a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf251d
+ mov cl, byte [bp-0025fh] ; 8a 8e a1 fd ; 0xf2520 ata.c:692
+ and cl, 01fh ; 80 e1 1f ; 0xf2524
+ test byte [bp-00260h], 080h ; f6 86 a0 fd 80 ; 0xf2527 ata.c:693
+ je short 02535h ; 74 07 ; 0xf252c
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf252e
+ jmp short 02537h ; eb 04 ; 0xf2531
+ jmp short 0256dh ; eb 38 ; 0xf2533
+ xor dx, dx ; 31 d2 ; 0xf2535
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2537 ata.c:701
+ xor ah, ah ; 30 e4 ; 0xf253a
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf253c
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf253f
+ mov bx, word [bp-024h] ; 8b 5e dc ; 0xf2542
+ add bx, ax ; 01 c3 ; 0xf2545
+ mov byte [es:bx+023h], cl ; 26 88 4f 23 ; 0xf2547
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf254b ata.c:702
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf254f ata.c:703
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf2554 ata.c:704
+ mov bl, byte [bp-012h] ; 8a 5e ee ; 0xf255a ata.c:707
+ xor bh, bh ; 30 ff ; 0xf255d
+ add bx, word [bp-024h] ; 03 5e dc ; 0xf255f
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2562
+ mov byte [es:bx+00268h], al ; 26 88 87 68 02 ; 0xf2565
+ inc byte [bp-012h] ; fe 46 ee ; 0xf256a ata.c:708
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf256d ata.c:717
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2570
+ je short 025a4h ; 74 30 ; 0xf2572
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2574
+ jne short 025d4h ; 75 5c ; 0xf2576
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2578 ata.c:719
+ xor ah, ah ; 30 e4 ; 0xf257b
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf257d
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2580
+ mov si, word [bp-024h] ; 8b 76 dc ; 0xf2583
+ add si, ax ; 01 c6 ; 0xf2586
+ mov ax, word [es:si+03ch] ; 26 8b 44 3c ; 0xf2588
+ mov bx, word [es:si+03ah] ; 26 8b 5c 3a ; 0xf258c
+ mov cx, word [es:si+038h] ; 26 8b 4c 38 ; 0xf2590
+ mov dx, word [es:si+036h] ; 26 8b 54 36 ; 0xf2594
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf2598
+ call 0af90h ; e8 f2 89 ; 0xf259b
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf259e
+ mov word [bp-02eh], cx ; 89 4e d2 ; 0xf25a1
+ mov al, byte [bp-001bfh] ; 8a 86 41 fe ; 0xf25a4 ata.c:722
+ xor ah, ah ; 30 e4 ; 0xf25a8
+ mov dx, ax ; 89 c2 ; 0xf25aa
+ sal dx, 008h ; c1 e2 08 ; 0xf25ac
+ mov al, byte [bp-001c0h] ; 8a 86 40 fe ; 0xf25af
+ or dx, ax ; 09 c2 ; 0xf25b3
+ mov byte [bp-00ch], 00fh ; c6 46 f4 0f ; 0xf25b5 ata.c:723
+ jmp short 025c4h ; eb 09 ; 0xf25b9
+ dec byte [bp-00ch] ; fe 4e f4 ; 0xf25bb ata.c:726
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf25be
+ jbe short 025d0h ; 76 0c ; 0xf25c2
+ mov cl, byte [bp-00ch] ; 8a 4e f4 ; 0xf25c4
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf25c7
+ sal ax, CL ; d3 e0 ; 0xf25ca
+ test dx, ax ; 85 c2 ; 0xf25cc
+ je short 025bbh ; 74 eb ; 0xf25ce
+ xor di, di ; 31 ff ; 0xf25d0 ata.c:729
+ jmp short 025dbh ; eb 07 ; 0xf25d2
+ jmp short 0260ah ; eb 34 ; 0xf25d4
+ cmp di, strict byte 00014h ; 83 ff 14 ; 0xf25d6
+ jnl short 025f0h ; 7d 15 ; 0xf25d9
+ mov si, di ; 89 fe ; 0xf25db ata.c:730
+ add si, di ; 01 fe ; 0xf25dd
+ mov al, byte [bp+si-00229h] ; 8a 82 d7 fd ; 0xf25df
+ mov byte [bp+si-060h], al ; 88 42 a0 ; 0xf25e3
+ mov al, byte [bp+si-0022ah] ; 8a 82 d6 fd ; 0xf25e6 ata.c:731
+ mov byte [bp+si-05fh], al ; 88 42 a1 ; 0xf25ea
+ inc di ; 47 ; 0xf25ed ata.c:732
+ jmp short 025d6h ; eb e6 ; 0xf25ee
+ mov byte [bp-038h], 000h ; c6 46 c8 00 ; 0xf25f0 ata.c:735
+ mov di, strict word 00027h ; bf 27 00 ; 0xf25f4 ata.c:736
+ jmp short 025feh ; eb 05 ; 0xf25f7
+ dec di ; 4f ; 0xf25f9 ata.c:741
+ test di, di ; 85 ff ; 0xf25fa
+ jle short 0260ah ; 7e 0c ; 0xf25fc
+ cmp byte [bp+di-060h], 020h ; 80 7b a0 20 ; 0xf25fe
+ jne short 0260ah ; 75 06 ; 0xf2602
+ mov byte [bp+di-060h], 000h ; c6 43 a0 00 ; 0xf2604
+ jmp short 025f9h ; eb ef ; 0xf2608
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf260a ata.c:748
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf260d
+ je short 0266eh ; 74 5d ; 0xf260f
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2611
+ je short 0261ch ; 74 07 ; 0xf2613
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2615
+ je short 02679h ; 74 60 ; 0xf2617
+ jmp near 026fdh ; e9 e1 00 ; 0xf2619
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf261c ata.c:751
+ je short 02627h ; 74 05 ; 0xf2620
+ mov ax, 001afh ; b8 af 01 ; 0xf2622
+ jmp short 0262ah ; eb 03 ; 0xf2625
+ mov ax, 001b6h ; b8 b6 01 ; 0xf2627
+ push ax ; 50 ; 0xf262a
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf262b
+ xor ah, ah ; 30 e4 ; 0xf262e
+ push ax ; 50 ; 0xf2630
+ push 001bdh ; 68 bd 01 ; 0xf2631
+ push strict byte 00002h ; 6a 02 ; 0xf2634
+ call 0190eh ; e8 d5 f2 ; 0xf2636
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf2639
+ xor di, di ; 31 ff ; 0xf263c ata.c:752
+ mov al, byte [bp+di-060h] ; 8a 43 a0 ; 0xf263e ata.c:753
+ xor ah, ah ; 30 e4 ; 0xf2641
+ inc di ; 47 ; 0xf2643
+ test ax, ax ; 85 c0 ; 0xf2644
+ je short 02656h ; 74 0e ; 0xf2646
+ push ax ; 50 ; 0xf2648 ata.c:754
+ push 001c8h ; 68 c8 01 ; 0xf2649
+ push strict byte 00002h ; 6a 02 ; 0xf264c
+ call 0190eh ; e8 bd f2 ; 0xf264e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2651
+ jmp short 0263eh ; eb e8 ; 0xf2654
+ push word [bp-02eh] ; ff 76 d2 ; 0xf2656 ata.c:755
+ push word [bp-030h] ; ff 76 d0 ; 0xf2659
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf265c
+ push ax ; 50 ; 0xf265f
+ push 001cbh ; 68 cb 01 ; 0xf2660
+ push strict byte 00002h ; 6a 02 ; 0xf2663
+ call 0190eh ; e8 a6 f2 ; 0xf2665
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf2668
+ jmp near 026fdh ; e9 8f 00 ; 0xf266b ata.c:756
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf266e ata.c:758
+ je short 0267bh ; 74 07 ; 0xf2672
+ mov ax, 001afh ; b8 af 01 ; 0xf2674
+ jmp short 0267eh ; eb 05 ; 0xf2677
+ jmp short 026ddh ; eb 62 ; 0xf2679
+ mov ax, 001b6h ; b8 b6 01 ; 0xf267b
+ push ax ; 50 ; 0xf267e
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf267f
+ xor ah, ah ; 30 e4 ; 0xf2682
+ push ax ; 50 ; 0xf2684
+ push 001bdh ; 68 bd 01 ; 0xf2685
+ push strict byte 00002h ; 6a 02 ; 0xf2688
+ call 0190eh ; e8 81 f2 ; 0xf268a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf268d
+ xor di, di ; 31 ff ; 0xf2690 ata.c:759
+ mov al, byte [bp+di-060h] ; 8a 43 a0 ; 0xf2692 ata.c:760
+ xor ah, ah ; 30 e4 ; 0xf2695
+ inc di ; 47 ; 0xf2697
+ test ax, ax ; 85 c0 ; 0xf2698
+ je short 026aah ; 74 0e ; 0xf269a
+ push ax ; 50 ; 0xf269c ata.c:761
+ push 001c8h ; 68 c8 01 ; 0xf269d
+ push strict byte 00002h ; 6a 02 ; 0xf26a0
+ call 0190eh ; e8 69 f2 ; 0xf26a2
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf26a5
+ jmp short 02692h ; eb e8 ; 0xf26a8
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf26aa ata.c:762
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf26ad
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf26b0
+ mov bx, word [bp-024h] ; 8b 5e dc ; 0xf26b3
+ add bx, ax ; 01 c3 ; 0xf26b6
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf26b8
+ jne short 026cah ; 75 0b ; 0xf26bd
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf26bf ata.c:763
+ xor ah, ah ; 30 e4 ; 0xf26c2
+ push ax ; 50 ; 0xf26c4
+ push 001ebh ; 68 eb 01 ; 0xf26c5
+ jmp short 026d3h ; eb 09 ; 0xf26c8 ata.c:764
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf26ca ata.c:765
+ xor ah, ah ; 30 e4 ; 0xf26cd
+ push ax ; 50 ; 0xf26cf
+ push 00205h ; 68 05 02 ; 0xf26d0
+ push strict byte 00002h ; 6a 02 ; 0xf26d3
+ call 0190eh ; e8 36 f2 ; 0xf26d5
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf26d8
+ jmp short 026fdh ; eb 20 ; 0xf26db ata.c:766
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf26dd ata.c:768
+ je short 026e8h ; 74 05 ; 0xf26e1
+ mov ax, 001afh ; b8 af 01 ; 0xf26e3
+ jmp short 026ebh ; eb 03 ; 0xf26e6
+ mov ax, 001b6h ; b8 b6 01 ; 0xf26e8
+ push ax ; 50 ; 0xf26eb
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf26ec
+ xor ah, ah ; 30 e4 ; 0xf26ef
+ push ax ; 50 ; 0xf26f1
+ push 00217h ; 68 17 02 ; 0xf26f2
+ push strict byte 00002h ; 6a 02 ; 0xf26f5
+ call 0190eh ; e8 14 f2 ; 0xf26f7
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf26fa
+ inc byte [bp-00ah] ; fe 46 f6 ; 0xf26fd ata.c:773
+ cmp byte [bp-00ah], 008h ; 80 7e f6 08 ; 0xf2700
+ jnc short 02751h ; 73 4b ; 0xf2704
+ mov bl, byte [bp-00ah] ; 8a 5e f6 ; 0xf2706
+ xor bh, bh ; 30 ff ; 0xf2709
+ mov ax, bx ; 89 d8 ; 0xf270b
+ cwd ; 99 ; 0xf270d
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf270e
+ sar ax, 1 ; d1 f8 ; 0xf2710
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf2712
+ mov al, byte [bp-02ah] ; 8a 46 d6 ; 0xf2715
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf2718
+ mov ax, bx ; 89 d8 ; 0xf271b
+ cwd ; 99 ; 0xf271d
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf271e
+ idiv bx ; f7 fb ; 0xf2721
+ mov cx, dx ; 89 d1 ; 0xf2723
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf2725
+ mov al, byte [bp-02ah] ; 8a 46 d6 ; 0xf2728
+ xor ah, ah ; 30 e4 ; 0xf272b
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf272d
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2730
+ mov bx, word [bp-024h] ; 8b 5e dc ; 0xf2733
+ add bx, ax ; 01 c3 ; 0xf2736
+ mov si, word [es:bx+0027eh] ; 26 8b b7 7e 02 ; 0xf2738
+ mov di, word [es:bx+00280h] ; 26 8b bf 80 02 ; 0xf273d
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf2742
+ in AL, DX ; ec ; 0xf2745
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2746
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf2748
+ je short 0274fh ; 74 03 ; 0xf274a
+ jmp near 021eah ; e9 9b fa ; 0xf274c
+ jmp short 026fdh ; eb ac ; 0xf274f
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2751 ata.c:776
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2754
+ mov bx, word [bp-024h] ; 8b 5e dc ; 0xf2757
+ mov byte [es:bx+00252h], al ; 26 88 87 52 02 ; 0xf275a
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf275f ata.c:777
+ mov byte [es:bx+00267h], al ; 26 88 87 67 02 ; 0xf2762
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf2767 ata.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf276a
+ mov es, ax ; 8e c0 ; 0xf276d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf276f
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2772
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2775 ata.c:790
+ pop di ; 5f ; 0xf2778
+ pop si ; 5e ; 0xf2779
+ pop bp ; 5d ; 0xf277a
+ retn ; c3 ; 0xf277b
+ ; disGetNextSymbol 0xf277c LB 0x8b5c -> off=0x0 cb=000000000000028a uValue=00000000000f117c 'ata_cmd_data_out'
+ata_cmd_data_out: ; 0xf277c LB 0x28a
+ push bp ; 55 ; 0xf277c ata.c:804
+ mov bp, sp ; 89 e5 ; 0xf277d
+ push si ; 56 ; 0xf277f
+ push di ; 57 ; 0xf2780
+ sub sp, strict byte 00020h ; 83 ec 20 ; 0xf2781
+ mov di, ax ; 89 c7 ; 0xf2784
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf2786
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf2789
+ mov word [bp-022h], cx ; 89 4e de ; 0xf278c
+ mov es, dx ; 8e c2 ; 0xf278f ata.c:816
+ mov al, byte [es:di+00ch] ; 26 8a 45 0c ; 0xf2791
+ xor ah, ah ; 30 e4 ; 0xf2795
+ mov dx, ax ; 89 c2 ; 0xf2797
+ shr ax, 1 ; d1 e8 ; 0xf2799 ata.c:817
+ and dl, 001h ; 80 e2 01 ; 0xf279b ata.c:818
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf279e
+ xor ah, ah ; 30 e4 ; 0xf27a1 ata.c:820
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf27a3
+ mov bx, di ; 89 fb ; 0xf27a6
+ add bx, ax ; 01 c3 ; 0xf27a8
+ mov ax, word [es:bx+0027eh] ; 26 8b 87 7e 02 ; 0xf27aa
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf27af
+ mov ax, word [es:bx+00280h] ; 26 8b 87 80 02 ; 0xf27b2 ata.c:821
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf27b7
+ mov word [bp-020h], 00100h ; c7 46 e0 00 01 ; 0xf27ba ata.c:829
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf27bf ata.c:831
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf27c2
+ in AL, DX ; ec ; 0xf27c5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf27c6
+ test AL, strict byte 080h ; a8 80 ; 0xf27c8 ata.c:832
+ je short 027dbh ; 74 0f ; 0xf27ca
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf27cc ata.c:835
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf27cf
+ mov AL, strict byte 008h ; b0 08 ; 0xf27d2
+ out DX, AL ; ee ; 0xf27d4
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf27d5 ata.c:836
+ jmp near 029ffh ; e9 24 02 ; 0xf27d8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf27db ata.c:839
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf27de
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf27e2
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf27e5
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf27e9
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf27ec
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf27f0
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf27f3
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf27f6
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf27f9 ata.c:840
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf27fd
+ mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf2800
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2804
+ mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf2807 ata.c:841
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf280b
+ mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf280e ata.c:842
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf2812
+ mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf2815 ata.c:843
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2819
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf281c ata.c:846
+ test ax, ax ; 85 c0 ; 0xf281f
+ je short 02826h ; 74 03 ; 0xf2821
+ jmp near 028edh ; e9 c7 00 ; 0xf2823
+ xor bx, bx ; 31 db ; 0xf2826 ata.c:847
+ xor dx, dx ; 31 d2 ; 0xf2828
+ mov si, word [bp-024h] ; 8b 76 dc ; 0xf282a
+ add si, word [bp-022h] ; 03 76 de ; 0xf282d
+ adc bx, word [bp-010h] ; 13 5e f0 ; 0xf2830
+ adc ax, word [bp-00eh] ; 13 46 f2 ; 0xf2833
+ adc dx, word [bp-00ch] ; 13 56 f4 ; 0xf2836
+ test dx, dx ; 85 d2 ; 0xf2839
+ jnbe short 0284dh ; 77 10 ; 0xf283b
+ jne short 028b0h ; 75 71 ; 0xf283d
+ test ax, ax ; 85 c0 ; 0xf283f
+ jnbe short 0284dh ; 77 0a ; 0xf2841
+ jne short 028b0h ; 75 6b ; 0xf2843
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf2845
+ jnbe short 0284dh ; 77 02 ; 0xf2849
+ jne short 028b0h ; 75 63 ; 0xf284b
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf284d ata.c:849
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf2850
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2853
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf2856
+ mov si, strict word 00018h ; be 18 00 ; 0xf2859
+ call 0af90h ; e8 31 87 ; 0xf285c
+ xor dh, dh ; 30 f6 ; 0xf285f
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf2861
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2864 ata.c:850
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf2867
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf286a
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf286d
+ mov si, strict word 00020h ; be 20 00 ; 0xf2870
+ call 0af90h ; e8 1a 87 ; 0xf2873
+ mov bx, dx ; 89 d3 ; 0xf2876
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf2878 ata.c:851
+ xor al, al ; 30 c0 ; 0xf287b
+ shr ax, 008h ; c1 e8 08 ; 0xf287d
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2880
+ inc dx ; 42 ; 0xf2883
+ inc dx ; 42 ; 0xf2884
+ out DX, AL ; ee ; 0xf2885
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2886 ata.c:852
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2889
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf288c
+ out DX, AL ; ee ; 0xf288f
+ mov ax, bx ; 89 d8 ; 0xf2890 ata.c:853
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2892
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2895
+ out DX, AL ; ee ; 0xf2898
+ shr ax, 008h ; c1 e8 08 ; 0xf2899 ata.c:854
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf289c
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf289f
+ out DX, AL ; ee ; 0xf28a2
+ xor al, al ; 30 c0 ; 0xf28a3 ata.c:857
+ mov byte [bp-00fh], al ; 88 46 f1 ; 0xf28a5
+ xor ah, ah ; 30 e4 ; 0xf28a8
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf28aa
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28ad
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf28b0 ata.c:859
+ xor ah, ah ; 30 e4 ; 0xf28b3
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf28b5
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28b8 ata.c:860
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf28bb
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28be
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf28c1
+ mov si, strict word 00008h ; be 08 00 ; 0xf28c4
+ call 0af90h ; e8 c6 86 ; 0xf28c7
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28ca
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf28cd
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf28d0
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf28d3
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf28d6 ata.c:861
+ mov si, strict word 00010h ; be 10 00 ; 0xf28d9 ata.c:862
+ call 0af90h ; e8 b1 86 ; 0xf28dc
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf28df
+ mov ax, dx ; 89 d0 ; 0xf28e2 ata.c:863
+ xor ah, dh ; 30 f4 ; 0xf28e4
+ and AL, strict byte 00fh ; 24 0f ; 0xf28e6
+ or AL, strict byte 040h ; 0c 40 ; 0xf28e8
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf28ea
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf28ed ata.c:866
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf28f0
+ mov AL, strict byte 00ah ; b0 0a ; 0xf28f3
+ out DX, AL ; ee ; 0xf28f5
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28f6 ata.c:867
+ inc dx ; 42 ; 0xf28f9
+ xor al, al ; 30 c0 ; 0xf28fa
+ out DX, AL ; ee ; 0xf28fc
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28fd ata.c:868
+ inc dx ; 42 ; 0xf2900
+ inc dx ; 42 ; 0xf2901
+ mov al, byte [bp-022h] ; 8a 46 de ; 0xf2902
+ out DX, AL ; ee ; 0xf2905
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2906 ata.c:869
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2909
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf290c
+ out DX, AL ; ee ; 0xf290f
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf2910 ata.c:870
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2913
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2916
+ out DX, AL ; ee ; 0xf2919
+ shr ax, 008h ; c1 e8 08 ; 0xf291a ata.c:871
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf291d
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2920
+ out DX, AL ; ee ; 0xf2923
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2924 ata.c:872
+ je short 0292fh ; 74 05 ; 0xf2928
+ mov ax, 000b0h ; b8 b0 00 ; 0xf292a
+ jmp short 02932h ; eb 03 ; 0xf292d
+ mov ax, 000a0h ; b8 a0 00 ; 0xf292f
+ mov dl, byte [bp-01ch] ; 8a 56 e4 ; 0xf2932
+ xor dh, dh ; 30 f6 ; 0xf2935
+ or ax, dx ; 09 d0 ; 0xf2937
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2939
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf293c
+ out DX, AL ; ee ; 0xf293f
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2940 ata.c:873
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2943
+ mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf2946
+ out DX, AL ; ee ; 0xf2949
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf294a ata.c:876
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf294d
+ in AL, DX ; ec ; 0xf2950
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2951
+ mov bl, al ; 88 c3 ; 0xf2953
+ test AL, strict byte 080h ; a8 80 ; 0xf2955 ata.c:877
+ jne short 0294ah ; 75 f1 ; 0xf2957
+ test AL, strict byte 001h ; a8 01 ; 0xf2959 ata.c:881
+ je short 0296ch ; 74 0f ; 0xf295b
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf295d ata.c:884
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2960
+ mov AL, strict byte 008h ; b0 08 ; 0xf2963
+ out DX, AL ; ee ; 0xf2965
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2966 ata.c:885
+ jmp near 029ffh ; e9 93 00 ; 0xf2969
+ test bl, 008h ; f6 c3 08 ; 0xf296c ata.c:886
+ jne short 02980h ; 75 0f ; 0xf296f
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf2971 ata.c:889
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2974
+ mov AL, strict byte 008h ; b0 08 ; 0xf2977
+ out DX, AL ; ee ; 0xf2979
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf297a ata.c:890
+ jmp near 029ffh ; e9 7f 00 ; 0xf297d
+ sti ; fb ; 0xf2980 ata.c:895
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf2981 ata.c:900
+ cmp ax, 0f800h ; 3d 00 f8 ; 0xf2984
+ jc short 02999h ; 72 10 ; 0xf2987
+ sub ax, 00800h ; 2d 00 08 ; 0xf2989 ata.c:901
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf298c
+ add dx, 00080h ; 81 c2 80 00 ; 0xf298f
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf2993
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf2996
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2999 ata.c:908
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf299c
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf299f
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf29a2
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf29a5
+ mov word [bp-016h], si ; 89 76 ea ; 0xf29a8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf29ab ata.c:910
+ inc word [es:di+018h] ; 26 ff 45 18 ; 0xf29ae
+ dec word [bp-022h] ; ff 4e de ; 0xf29b2 ata.c:911
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29b5 ata.c:913
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf29b8
+ in AL, DX ; ec ; 0xf29bb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf29bc
+ mov bl, al ; 88 c3 ; 0xf29be
+ test AL, strict byte 080h ; a8 80 ; 0xf29c0 ata.c:914
+ jne short 029b5h ; 75 f1 ; 0xf29c2
+ cmp word [bp-022h], strict byte 00000h ; 83 7e de 00 ; 0xf29c4 ata.c:917
+ jne short 029deh ; 75 14 ; 0xf29c8
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf29ca ata.c:918
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf29cc
+ je short 029f4h ; 74 24 ; 0xf29ce
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29d0 ata.c:922
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29d3
+ mov AL, strict byte 008h ; b0 08 ; 0xf29d6
+ out DX, AL ; ee ; 0xf29d8
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf29d9 ata.c:923
+ jmp short 029ffh ; eb 21 ; 0xf29dc
+ mov al, bl ; 88 d8 ; 0xf29de ata.c:928
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf29e0
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf29e2
+ je short 02981h ; 74 9b ; 0xf29e4
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29e6 ata.c:932
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29e9
+ mov AL, strict byte 008h ; b0 08 ; 0xf29ec
+ out DX, AL ; ee ; 0xf29ee
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf29ef ata.c:933
+ jmp short 029ffh ; eb 0b ; 0xf29f2
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29f4 ata.c:939
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29f7
+ mov AL, strict byte 008h ; b0 08 ; 0xf29fa
+ out DX, AL ; ee ; 0xf29fc
+ xor ax, ax ; 31 c0 ; 0xf29fd ata.c:940
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf29ff ata.c:941
+ pop di ; 5f ; 0xf2a02
+ pop si ; 5e ; 0xf2a03
+ pop bp ; 5d ; 0xf2a04
+ retn ; c3 ; 0xf2a05
+ ; disGetNextSymbol 0xf2a06 LB 0x88d2 -> off=0x0 cb=00000000000000b5 uValue=00000000000f1406 'ata_read_sectors'
+ata_read_sectors: ; 0xf2a06 LB 0xb5
+ push bp ; 55 ; 0xf2a06 ata.c:951
+ mov bp, sp ; 89 e5 ; 0xf2a07
+ push si ; 56 ; 0xf2a09
+ push di ; 57 ; 0xf2a0a
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf2a0b
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf2a0e
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf2a11 ata.c:957
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2a14
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2a18 ata.c:958
+ mov dx, cx ; 89 ca ; 0xf2a1c
+ sal dx, 009h ; c1 e2 09 ; 0xf2a1e
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2a21 ata.c:960
+ je short 02a47h ; 74 1f ; 0xf2a26
+ xor ah, ah ; 30 e4 ; 0xf2a28 ata.c:962
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2a2a
+ mov [bp-00ch], es ; 8c 46 f4 ; 0xf2a2d
+ mov di, si ; 89 f7 ; 0xf2a30
+ add di, ax ; 01 c7 ; 0xf2a32
+ mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2a34
+ mov bx, 000c4h ; bb c4 00 ; 0xf2a38 ata.c:964
+ mov ax, si ; 89 f0 ; 0xf2a3b
+ mov dx, es ; 8c c2 ; 0xf2a3d
+ call 01e09h ; e8 c7 f3 ; 0xf2a3f
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2a42 ata.c:965
+ jmp short 02aach ; eb 65 ; 0xf2a45 ata.c:966
+ xor bx, bx ; 31 db ; 0xf2a47 ata.c:968
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf2a49
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf2a4c
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2a4f
+ add di, cx ; 01 cf ; 0xf2a52
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf2a54
+ mov di, word [es:si+002h] ; 26 8b 7c 02 ; 0xf2a57
+ adc di, bx ; 11 df ; 0xf2a5b
+ mov word [bp-008h], di ; 89 7e f8 ; 0xf2a5d
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf2a60
+ adc bx, word [bp-00ch] ; 13 5e f4 ; 0xf2a64
+ mov di, word [es:si+006h] ; 26 8b 7c 06 ; 0xf2a67
+ adc di, word [bp-006h] ; 13 7e fa ; 0xf2a6b
+ test di, di ; 85 ff ; 0xf2a6e
+ jnbe short 02a83h ; 77 11 ; 0xf2a70
+ jne short 02a8fh ; 75 1b ; 0xf2a72
+ test bx, bx ; 85 db ; 0xf2a74
+ jnbe short 02a83h ; 77 0b ; 0xf2a76
+ jne short 02a8fh ; 75 15 ; 0xf2a78
+ cmp word [bp-008h], 01000h ; 81 7e f8 00 10 ; 0xf2a7a
+ jnbe short 02a83h ; 77 02 ; 0xf2a7f
+ jne short 02a8fh ; 75 0c ; 0xf2a81
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf2a83 ata.c:970
+ mov ax, si ; 89 f0 ; 0xf2a86
+ mov dx, es ; 8c c2 ; 0xf2a88
+ call 01e09h ; e8 7c f3 ; 0xf2a8a
+ jmp short 02ab2h ; eb 23 ; 0xf2a8d ata.c:971
+ xor ah, ah ; 30 e4 ; 0xf2a8f ata.c:972
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2a91
+ mov [bp-006h], es ; 8c 46 fa ; 0xf2a94
+ mov di, si ; 89 f7 ; 0xf2a97
+ add di, ax ; 01 c7 ; 0xf2a99
+ mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2a9b
+ mov bx, 000c4h ; bb c4 00 ; 0xf2a9f ata.c:974
+ mov ax, si ; 89 f0 ; 0xf2aa2
+ mov dx, es ; 8c c2 ; 0xf2aa4
+ call 01e09h ; e8 60 f3 ; 0xf2aa6
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf2aa9 ata.c:975
+ mov word [es:di+028h], 00200h ; 26 c7 45 28 00 02 ; 0xf2aac
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2ab2 ata.c:979
+ pop di ; 5f ; 0xf2ab5
+ pop si ; 5e ; 0xf2ab6
+ pop bp ; 5d ; 0xf2ab7
+ retn 00004h ; c2 04 00 ; 0xf2ab8
+ ; disGetNextSymbol 0xf2abb LB 0x881d -> off=0x0 cb=000000000000005b uValue=00000000000f14bb 'ata_write_sectors'
+ata_write_sectors: ; 0xf2abb LB 0x5b
+ push bp ; 55 ; 0xf2abb ata.c:988
+ mov bp, sp ; 89 e5 ; 0xf2abc
+ push si ; 56 ; 0xf2abe
+ push di ; 57 ; 0xf2abf
+ push ax ; 50 ; 0xf2ac0
+ les si, [bp+004h] ; c4 76 04 ; 0xf2ac1
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2ac4 ata.c:992
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2ac8 ata.c:994
+ je short 02adbh ; 74 0c ; 0xf2acd
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf2acf ata.c:996
+ mov ax, si ; 89 f0 ; 0xf2ad2
+ mov dx, es ; 8c c2 ; 0xf2ad4
+ call 0277ch ; e8 a3 fc ; 0xf2ad6
+ jmp short 02b0dh ; eb 32 ; 0xf2ad9
+ xor ax, ax ; 31 c0 ; 0xf2adb ata.c:999
+ xor bx, bx ; 31 db ; 0xf2add
+ xor dx, dx ; 31 d2 ; 0xf2adf
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2ae1
+ add di, cx ; 01 cf ; 0xf2ae4
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2ae6
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2ae9
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2aed
+ adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2af1
+ test dx, dx ; 85 d2 ; 0xf2af5
+ jnbe short 02b08h ; 77 0f ; 0xf2af7
+ jne short 02acfh ; 75 d4 ; 0xf2af9
+ test bx, bx ; 85 db ; 0xf2afb
+ jnbe short 02b08h ; 77 09 ; 0xf2afd
+ jne short 02acfh ; 75 ce ; 0xf2aff
+ cmp ax, 01000h ; 3d 00 10 ; 0xf2b01
+ jnbe short 02b08h ; 77 02 ; 0xf2b04
+ jne short 02acfh ; 75 c7 ; 0xf2b06
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf2b08 ata.c:1000
+ jmp short 02ad2h ; eb c5 ; 0xf2b0b
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b0d ata.c:1004
+ pop di ; 5f ; 0xf2b10
+ pop si ; 5e ; 0xf2b11
+ pop bp ; 5d ; 0xf2b12
+ retn 00004h ; c2 04 00 ; 0xf2b13
+ ; disGetNextSymbol 0xf2b16 LB 0x87c2 -> off=0x0 cb=0000000000000285 uValue=00000000000f1516 'ata_cmd_packet'
+ata_cmd_packet: ; 0xf2b16 LB 0x285
+ push bp ; 55 ; 0xf2b16 ata.c:1016
+ mov bp, sp ; 89 e5 ; 0xf2b17
+ push si ; 56 ; 0xf2b19
+ push di ; 57 ; 0xf2b1a
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf2b1b
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2b1e
+ mov si, bx ; 89 de ; 0xf2b21
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2b23 ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2b26
+ mov es, dx ; 8e c2 ; 0xf2b29
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf2b2b
+ mov word [bp-010h], strict word 0005eh ; c7 46 f0 5e 00 ; 0xf2b2e ata.c:49
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf2b33
+ mov dx, ax ; 89 c2 ; 0xf2b36 ata.c:1028
+ shr dx, 1 ; d1 ea ; 0xf2b38
+ mov ah, dl ; 88 d4 ; 0xf2b3a
+ and AL, strict byte 001h ; 24 01 ; 0xf2b3c ata.c:1029
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2b3e
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf2b41 ata.c:1032
+ jne short 02b66h ; 75 1f ; 0xf2b45
+ mov bx, 00eeah ; bb ea 0e ; 0xf2b47 ata.c:1033
+ mov cx, ds ; 8c d9 ; 0xf2b4a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2b4c
+ call 018cbh ; e8 79 ed ; 0xf2b4f
+ push 00231h ; 68 31 02 ; 0xf2b52
+ push 00240h ; 68 40 02 ; 0xf2b55
+ push strict byte 00004h ; 6a 04 ; 0xf2b58
+ call 0190eh ; e8 b1 ed ; 0xf2b5a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2b5d
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2b60 ata.c:1034
+ jmp near 02d92h ; e9 2c 02 ; 0xf2b63
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf2b66 ata.c:1038
+ jne short 02b60h ; 75 f4 ; 0xf2b6a
+ mov al, ah ; 88 e0 ; 0xf2b6c ata.c:1043
+ xor ah, ah ; 30 e4 ; 0xf2b6e
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf2b70
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf2b73
+ add bx, ax ; 01 c3 ; 0xf2b76
+ mov ax, word [es:bx+0027eh] ; 26 8b 87 7e 02 ; 0xf2b78
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf2b7d
+ mov ax, word [es:bx+00280h] ; 26 8b 87 80 02 ; 0xf2b80 ata.c:1044
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2b85
+ xor ax, ax ; 31 c0 ; 0xf2b88 ata.c:1046
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2b8a
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2b8d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2b90 ata.c:1048
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf2b93
+ jnc short 02b9dh ; 73 06 ; 0xf2b95
+ mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2b97 ata.c:1049
+ jmp short 02ba3h ; eb 06 ; 0xf2b9b
+ jbe short 02ba3h ; 76 04 ; 0xf2b9d ata.c:1050
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2b9f ata.c:1051
+ shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2ba3 ata.c:1052
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf2ba6 ata.c:1056
+ mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00 ; 0xf2ba9
+ mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00 ; 0xf2baf ata.c:1057
+ mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2bb5
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bbb ata.c:1059
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2bbe
+ in AL, DX ; ec ; 0xf2bc1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2bc2
+ test AL, strict byte 080h ; a8 80 ; 0xf2bc4 ata.c:1060
+ je short 02bceh ; 74 06 ; 0xf2bc6
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2bc8 ata.c:1061
+ jmp near 02d92h ; e9 c4 01 ; 0xf2bcb
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2bce ata.c:1063
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2bd1
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2bd4
+ out DX, AL ; ee ; 0xf2bd6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bd7 ata.c:1067
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2bda
+ mov AL, strict byte 0f0h ; b0 f0 ; 0xf2bdd
+ out DX, AL ; ee ; 0xf2bdf
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2be0 ata.c:1068
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2be3
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf2be6
+ out DX, AL ; ee ; 0xf2be8
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2be9 ata.c:1069
+ je short 02bf4h ; 74 05 ; 0xf2bed
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2bef
+ jmp short 02bf7h ; eb 03 ; 0xf2bf2
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2bf4
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bf7
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2bfa
+ out DX, AL ; ee ; 0xf2bfd
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bfe ata.c:1070
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c01
+ mov AL, strict byte 0a0h ; b0 a0 ; 0xf2c04
+ out DX, AL ; ee ; 0xf2c06
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c07 ata.c:1074
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c0a
+ in AL, DX ; ec ; 0xf2c0d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c0e
+ mov bl, al ; 88 c3 ; 0xf2c10
+ test AL, strict byte 080h ; a8 80 ; 0xf2c12 ata.c:1075
+ jne short 02c07h ; 75 f1 ; 0xf2c14
+ test AL, strict byte 001h ; a8 01 ; 0xf2c16 ata.c:1078
+ je short 02c29h ; 74 0f ; 0xf2c18
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2c1a ata.c:1081
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c1d
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c20
+ out DX, AL ; ee ; 0xf2c22
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2c23 ata.c:1082
+ jmp near 02d92h ; e9 69 01 ; 0xf2c26
+ test bl, 008h ; f6 c3 08 ; 0xf2c29 ata.c:1083
+ jne short 02c3dh ; 75 0f ; 0xf2c2c
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2c2e ata.c:1086
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c31
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c34
+ out DX, AL ; ee ; 0xf2c36
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2c37 ata.c:1087
+ jmp near 02d92h ; e9 55 01 ; 0xf2c3a
+ sti ; fb ; 0xf2c3d ata.c:1090
+ mov ax, si ; 89 f0 ; 0xf2c3e ata.c:1094
+ shr ax, 004h ; c1 e8 04 ; 0xf2c40
+ add ax, cx ; 01 c8 ; 0xf2c43
+ and si, strict byte 0000fh ; 83 e6 0f ; 0xf2c45
+ mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2c48 ata.c:1099
+ xor ch, ch ; 30 ed ; 0xf2c4b
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c4d
+ mov es, ax ; 8e c0 ; 0xf2c50
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2c52
+ cmp byte [bp+00ah], 000h ; 80 7e 0a 00 ; 0xf2c55 ata.c:1101
+ jne short 02c66h ; 75 0b ; 0xf2c59
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c5b ata.c:1102
+ in AL, DX ; ec ; 0xf2c5e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c5f
+ mov bl, al ; 88 c3 ; 0xf2c61
+ jmp near 02d73h ; e9 0d 01 ; 0xf2c63 ata.c:1104
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c66 ata.c:1108
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c69
+ in AL, DX ; ec ; 0xf2c6c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c6d
+ mov bl, al ; 88 c3 ; 0xf2c6f
+ test AL, strict byte 080h ; a8 80 ; 0xf2c71 ata.c:1109
+ jne short 02c66h ; 75 f1 ; 0xf2c73
+ test AL, strict byte 088h ; a8 88 ; 0xf2c75 ata.c:1114
+ je short 02cd9h ; 74 60 ; 0xf2c77
+ test AL, strict byte 001h ; a8 01 ; 0xf2c79 ata.c:1117
+ je short 02c88h ; 74 0b ; 0xf2c7b
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2c7d ata.c:1120
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c80
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c83
+ out DX, AL ; ee ; 0xf2c85
+ jmp short 02c23h ; eb 9b ; 0xf2c86
+ mov al, bl ; 88 d8 ; 0xf2c88 ata.c:1125
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2c8a
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2c8c
+ je short 02c9bh ; 74 0b ; 0xf2c8e
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2c90 ata.c:1129
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c93
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c96
+ out DX, AL ; ee ; 0xf2c98
+ jmp short 02c37h ; eb 9c ; 0xf2c99
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2c9b ata.c:1135
+ shr ax, 004h ; c1 e8 04 ; 0xf2c9e
+ add ax, word [bp+00eh] ; 03 46 0e ; 0xf2ca1
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf2ca4
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf2ca7
+ mov word [bp+00ch], dx ; 89 56 0c ; 0xf2caa
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf2cad
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2cb0 ata.c:1140
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2cb3
+ in AL, DX ; ec ; 0xf2cb6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2cb7
+ mov bx, ax ; 89 c3 ; 0xf2cb9
+ sal bx, 008h ; c1 e3 08 ; 0xf2cbb
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2cbe
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2cc1
+ in AL, DX ; ec ; 0xf2cc4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2cc5
+ add bx, ax ; 01 c3 ; 0xf2cc7
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf2cc9 ata.c:1143
+ cmp bx, ax ; 39 c3 ; 0xf2ccc
+ jnc short 02cdch ; 73 0c ; 0xf2cce
+ mov cx, bx ; 89 d9 ; 0xf2cd0 ata.c:1144
+ sub word [bp+004h], bx ; 29 5e 04 ; 0xf2cd2 ata.c:1145
+ xor bx, bx ; 31 db ; 0xf2cd5 ata.c:1146
+ jmp short 02ce5h ; eb 0c ; 0xf2cd7 ata.c:1148
+ jmp near 02d73h ; e9 97 00 ; 0xf2cd9
+ mov cx, ax ; 89 c1 ; 0xf2cdc ata.c:1149
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf2cde ata.c:1150
+ sub bx, ax ; 29 c3 ; 0xf2ce3 ata.c:1151
+ xor ax, ax ; 31 c0 ; 0xf2ce5 ata.c:1154
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf2ce7
+ jne short 02d03h ; 75 16 ; 0xf2ceb
+ cmp bx, word [bp+006h] ; 3b 5e 06 ; 0xf2ced
+ jbe short 02d03h ; 76 11 ; 0xf2cf0
+ sub bx, word [bp+006h] ; 2b 5e 06 ; 0xf2cf2 ata.c:1155
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf2cf5
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf2cf8 ata.c:1156
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf2cfb ata.c:1157
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf2cfe
+ jmp short 02d0ch ; eb 09 ; 0xf2d01 ata.c:1159
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf2d03 ata.c:1160
+ sub word [bp+006h], bx ; 29 5e 06 ; 0xf2d06 ata.c:1161
+ sbb word [bp+008h], ax ; 19 46 08 ; 0xf2d09
+ mov si, bx ; 89 de ; 0xf2d0c ata.c:1165
+ test cl, 003h ; f6 c1 03 ; 0xf2d0e ata.c:1172
+ test bl, 003h ; f6 c3 03 ; 0xf2d11 ata.c:1174
+ test byte [bp-016h], 003h ; f6 46 ea 03 ; 0xf2d14 ata.c:1176
+ test bl, 001h ; f6 c3 01 ; 0xf2d18 ata.c:1180
+ je short 02d2dh ; 74 10 ; 0xf2d1b
+ inc bx ; 43 ; 0xf2d1d ata.c:1181
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf2d1e ata.c:1182
+ jbe short 02d2dh ; 76 09 ; 0xf2d22
+ test byte [bp-016h], 001h ; f6 46 ea 01 ; 0xf2d24
+ je short 02d2dh ; 74 03 ; 0xf2d28
+ dec word [bp-016h] ; ff 4e ea ; 0xf2d2a ata.c:1183
+ shr bx, 1 ; d1 eb ; 0xf2d2d ata.c:1195
+ shr cx, 1 ; d1 e9 ; 0xf2d2f ata.c:1196
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xf2d31 ata.c:1197
+ test cx, cx ; 85 c9 ; 0xf2d34 ata.c:1210
+ je short 02d3eh ; 74 06 ; 0xf2d36
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2d38 ata.c:1211
+ in ax, DX ; ed ; 0xf2d3b
+ loop 02d3bh ; e2 fd ; 0xf2d3c
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2d3e ata.c:1212
+ mov cx, bx ; 89 d9 ; 0xf2d41
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf2d43
+ rep insw ; f3 6d ; 0xf2d46
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf2d48 ata.c:1213
+ test ax, ax ; 85 c0 ; 0xf2d4b
+ je short 02d54h ; 74 05 ; 0xf2d4d
+ mov cx, ax ; 89 c1 ; 0xf2d4f ata.c:1214
+ in ax, DX ; ed ; 0xf2d51
+ loop 02d51h ; e2 fd ; 0xf2d52
+ add word [bp+00ch], si ; 01 76 0c ; 0xf2d54 ata.c:1219
+ xor ax, ax ; 31 c0 ; 0xf2d57 ata.c:1222
+ add word [bp-014h], si ; 01 76 ec ; 0xf2d59
+ adc word [bp-012h], ax ; 11 46 ee ; 0xf2d5c
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2d5f ata.c:1223
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf2d62
+ mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2d65
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2d69
+ mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2d6c
+ jmp near 02c66h ; e9 f3 fe ; 0xf2d70 ata.c:1224
+ mov al, bl ; 88 d8 ; 0xf2d73 ata.c:1228
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2d75
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2d77
+ je short 02d87h ; 74 0c ; 0xf2d79
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d7b ata.c:1232
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d7e
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d81
+ out DX, AL ; ee ; 0xf2d83
+ jmp near 02c37h ; e9 b0 fe ; 0xf2d84
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d87 ata.c:1237
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d8a
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d8d
+ out DX, AL ; ee ; 0xf2d8f
+ xor ax, ax ; 31 c0 ; 0xf2d90 ata.c:1238
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2d92 ata.c:1239
+ pop di ; 5f ; 0xf2d95
+ pop si ; 5e ; 0xf2d96
+ pop bp ; 5d ; 0xf2d97
+ retn 0000ch ; c2 0c 00 ; 0xf2d98
+ ; disGetNextSymbol 0xf2d9b LB 0x853d -> off=0x0 cb=000000000000007e uValue=00000000000f179b 'ata_soft_reset'
+ata_soft_reset: ; 0xf2d9b LB 0x7e
+ push bp ; 55 ; 0xf2d9b ata.c:1247
+ mov bp, sp ; 89 e5 ; 0xf2d9c
+ push bx ; 53 ; 0xf2d9e
+ push cx ; 51 ; 0xf2d9f
+ push dx ; 52 ; 0xf2da0
+ push ax ; 50 ; 0xf2da1
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2da2 ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2da5
+ mov es, dx ; 8e c2 ; 0xf2da8
+ mov es, [es:bx] ; 26 8e 07 ; 0xf2daa
+ mov dx, ax ; 89 c2 ; 0xf2dad ata.c:1256
+ shr dx, 1 ; d1 ea ; 0xf2daf
+ and AL, strict byte 001h ; 24 01 ; 0xf2db1 ata.c:1257
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2db3
+ mov al, dl ; 88 d0 ; 0xf2db6 ata.c:1259
+ xor ah, ah ; 30 e4 ; 0xf2db8
+ imul bx, ax, strict byte 00006h ; 6b d8 06 ; 0xf2dba
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf2dbd
+ mov cx, word [es:bx+0027eh] ; 26 8b 8f 7e 02 ; 0xf2dc0
+ mov bx, word [es:bx+00280h] ; 26 8b 9f 80 02 ; 0xf2dc5 ata.c:1260
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2dca ata.c:1263
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2dcd
+ out DX, AL ; ee ; 0xf2dcf
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2dd0 ata.c:1264
+ je short 02ddbh ; 74 05 ; 0xf2dd4
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2dd6
+ jmp short 02ddeh ; eb 03 ; 0xf2dd9
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2ddb
+ mov dx, cx ; 89 ca ; 0xf2dde
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2de0
+ out DX, AL ; ee ; 0xf2de3
+ mov dx, cx ; 89 ca ; 0xf2de4 ata.c:1265
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2de6
+ mov AL, strict byte 008h ; b0 08 ; 0xf2de9
+ out DX, AL ; ee ; 0xf2deb
+ mov dx, cx ; 89 ca ; 0xf2dec ata.c:1269
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2dee
+ in AL, DX ; ec ; 0xf2df1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2df2
+ test AL, strict byte 080h ; a8 80 ; 0xf2df4 ata.c:1270
+ jne short 02dech ; 75 f4 ; 0xf2df6
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2df8 ata.c:1274
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2dfa
+ je short 02e09h ; 74 0b ; 0xf2dfc
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2dfe ata.c:1278
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e01
+ out DX, AL ; ee ; 0xf2e03
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2e04 ata.c:1279
+ jmp short 02e11h ; eb 08 ; 0xf2e07
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e09 ata.c:1283
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e0c
+ out DX, AL ; ee ; 0xf2e0e
+ xor ax, ax ; 31 c0 ; 0xf2e0f ata.c:1284
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2e11 ata.c:1285
+ pop dx ; 5a ; 0xf2e14
+ pop cx ; 59 ; 0xf2e15
+ pop bx ; 5b ; 0xf2e16
+ pop bp ; 5d ; 0xf2e17
+ retn ; c3 ; 0xf2e18
+ ; disGetNextSymbol 0xf2e19 LB 0x84bf -> off=0x0 cb=000000000000002b uValue=00000000000f1819 'set_diskette_current_cyl'
+set_diskette_current_cyl: ; 0xf2e19 LB 0x2b
+ push bp ; 55 ; 0xf2e19 floppy.c:71
+ mov bp, sp ; 89 e5 ; 0xf2e1a
+ push bx ; 53 ; 0xf2e1c
+ mov dh, al ; 88 c6 ; 0xf2e1d
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2e1f floppy.c:73
+ jbe short 02e2eh ; 76 0b ; 0xf2e21
+ push 00260h ; 68 60 02 ; 0xf2e23 floppy.c:74
+ push strict byte 00007h ; 6a 07 ; 0xf2e26
+ call 0190eh ; e8 e3 ea ; 0xf2e28
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2e2b
+ mov bl, dh ; 88 f3 ; 0xf2e2e floppy.c:75
+ xor bh, bh ; 30 ff ; 0xf2e30
+ add bx, 00094h ; 81 c3 94 00 ; 0xf2e32
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e36 floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf2e39
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf2e3b
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e3e floppy.c:76
+ pop bx ; 5b ; 0xf2e41
+ pop bp ; 5d ; 0xf2e42
+ retn ; c3 ; 0xf2e43
+ ; disGetNextSymbol 0xf2e44 LB 0x8494 -> off=0x0 cb=0000000000000023 uValue=00000000000f1844 'floppy_wait_for_interrupt'
+floppy_wait_for_interrupt: ; 0xf2e44 LB 0x23
+ push bp ; 55 ; 0xf2e44 floppy.c:96
+ mov bp, sp ; 89 e5 ; 0xf2e45
+ push bx ; 53 ; 0xf2e47
+ cli ; fa ; 0xf2e48 floppy.c:98
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e49 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e4c
+ mov es, ax ; 8e c0 ; 0xf2e4f
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e51
+ test AL, strict byte 080h ; a8 80 ; 0xf2e54 floppy.c:102
+ je short 02e5ch ; 74 04 ; 0xf2e56
+ and AL, strict byte 080h ; 24 80 ; 0xf2e58 floppy.c:103
+ jmp short 02e61h ; eb 05 ; 0xf2e5a
+ sti ; fb ; 0xf2e5c floppy.c:104
+ hlt ; f4 ; 0xf2e5d
+ cli ; fa ; 0xf2e5e
+ jmp short 02e49h ; eb e8 ; 0xf2e5f floppy.c:105
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e61 floppy.c:106
+ pop bx ; 5b ; 0xf2e64
+ pop bp ; 5d ; 0xf2e65
+ retn ; c3 ; 0xf2e66
+ ; disGetNextSymbol 0xf2e67 LB 0x8471 -> off=0x0 cb=0000000000000038 uValue=00000000000f1867 'floppy_wait_for_interrupt_or_timeout'
+floppy_wait_for_interrupt_or_timeout: ; 0xf2e67 LB 0x38
+ push bp ; 55 ; 0xf2e67 floppy.c:116
+ mov bp, sp ; 89 e5 ; 0xf2e68
+ push bx ; 53 ; 0xf2e6a
+ cli ; fa ; 0xf2e6b floppy.c:118
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2e6c floppy.c:38
+ mov es, bx ; 8e c3 ; 0xf2e6f
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e71
+ test al, al ; 84 c0 ; 0xf2e74 floppy.c:122
+ jne short 02e7bh ; 75 03 ; 0xf2e76
+ sti ; fb ; 0xf2e78 floppy.c:123
+ jmp short 02e99h ; eb 1e ; 0xf2e79 floppy.c:124
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e7b floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e7e
+ mov es, ax ; 8e c0 ; 0xf2e81
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e83
+ test AL, strict byte 080h ; a8 80 ; 0xf2e86 floppy.c:128
+ je short 02e94h ; 74 0a ; 0xf2e88
+ mov ah, al ; 88 c4 ; 0xf2e8a floppy.c:129
+ and ah, 07fh ; 80 e4 7f ; 0xf2e8c
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf2e8f floppy.c:43
+ jmp short 02e99h ; eb 05 ; 0xf2e92 floppy.c:130
+ sti ; fb ; 0xf2e94 floppy.c:132
+ hlt ; f4 ; 0xf2e95
+ cli ; fa ; 0xf2e96
+ jmp short 02e6ch ; eb d3 ; 0xf2e97 floppy.c:133
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e99 floppy.c:134
+ pop bx ; 5b ; 0xf2e9c
+ pop bp ; 5d ; 0xf2e9d
+ retn ; c3 ; 0xf2e9e
+ ; disGetNextSymbol 0xf2e9f LB 0x8439 -> off=0x0 cb=000000000000003f uValue=00000000000f189f 'floppy_reset_controller'
+floppy_reset_controller: ; 0xf2e9f LB 0x3f
+ push bp ; 55 ; 0xf2e9f floppy.c:138
+ mov bp, sp ; 89 e5 ; 0xf2ea0
+ push bx ; 53 ; 0xf2ea2
+ push cx ; 51 ; 0xf2ea3
+ push dx ; 52 ; 0xf2ea4
+ mov cx, ax ; 89 c1 ; 0xf2ea5
+ mov dx, 003f2h ; ba f2 03 ; 0xf2ea7 floppy.c:143
+ in AL, DX ; ec ; 0xf2eaa
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2eab
+ mov bx, ax ; 89 c3 ; 0xf2ead
+ and AL, strict byte 0fbh ; 24 fb ; 0xf2eaf floppy.c:144
+ out DX, AL ; ee ; 0xf2eb1
+ mov al, bl ; 88 d8 ; 0xf2eb2 floppy.c:145
+ or AL, strict byte 004h ; 0c 04 ; 0xf2eb4
+ out DX, AL ; ee ; 0xf2eb6
+ mov dx, 003f4h ; ba f4 03 ; 0xf2eb7 floppy.c:149
+ in AL, DX ; ec ; 0xf2eba
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ebb
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2ebd floppy.c:150
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2ebf
+ jne short 02eb7h ; 75 f4 ; 0xf2ec1
+ mov bx, cx ; 89 cb ; 0xf2ec3 floppy.c:153
+ add bx, 00090h ; 81 c3 90 00 ; 0xf2ec5
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2ec9 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf2ecc
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ece
+ and AL, strict byte 0efh ; 24 ef ; 0xf2ed1 floppy.c:154
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2ed3 floppy.c:43
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2ed6 floppy.c:157
+ pop dx ; 5a ; 0xf2ed9
+ pop cx ; 59 ; 0xf2eda
+ pop bx ; 5b ; 0xf2edb
+ pop bp ; 5d ; 0xf2edc
+ retn ; c3 ; 0xf2edd
+ ; disGetNextSymbol 0xf2ede LB 0x83fa -> off=0x0 cb=0000000000000074 uValue=00000000000f18de 'floppy_prepare_controller'
+floppy_prepare_controller: ; 0xf2ede LB 0x74
+ push bp ; 55 ; 0xf2ede floppy.c:159
+ mov bp, sp ; 89 e5 ; 0xf2edf
+ push bx ; 53 ; 0xf2ee1
+ push cx ; 51 ; 0xf2ee2
+ push dx ; 52 ; 0xf2ee3
+ push ax ; 50 ; 0xf2ee4
+ mov cx, ax ; 89 c1 ; 0xf2ee5
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ee7 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2eea
+ mov es, ax ; 8e c0 ; 0xf2eed
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2eef
+ and AL, strict byte 07fh ; 24 7f ; 0xf2ef2 floppy.c:165
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2ef4 floppy.c:43
+ mov dx, 003f2h ; ba f2 03 ; 0xf2ef7 floppy.c:169
+ in AL, DX ; ec ; 0xf2efa
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2efb
+ and AL, strict byte 004h ; 24 04 ; 0xf2efd
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2eff
+ test cx, cx ; 85 c9 ; 0xf2f02 floppy.c:170
+ je short 02f0ah ; 74 04 ; 0xf2f04
+ mov AL, strict byte 020h ; b0 20 ; 0xf2f06 floppy.c:171
+ jmp short 02f0ch ; eb 02 ; 0xf2f08 floppy.c:172
+ mov AL, strict byte 010h ; b0 10 ; 0xf2f0a floppy.c:173
+ or AL, strict byte 00ch ; 0c 0c ; 0xf2f0c floppy.c:174
+ or al, cl ; 08 c8 ; 0xf2f0e floppy.c:175
+ mov dx, 003f2h ; ba f2 03 ; 0xf2f10 floppy.c:176
+ out DX, AL ; ee ; 0xf2f13
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2f14 floppy.c:43
+ mov es, bx ; 8e c3 ; 0xf2f17
+ mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf2f19
+ mov bx, 0008bh ; bb 8b 00 ; 0xf2f1d floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f20
+ shr al, 006h ; c0 e8 06 ; 0xf2f23 floppy.c:183
+ mov dx, 003f7h ; ba f7 03 ; 0xf2f26 floppy.c:184
+ out DX, AL ; ee ; 0xf2f29
+ mov dx, 003f4h ; ba f4 03 ; 0xf2f2a floppy.c:188
+ in AL, DX ; ec ; 0xf2f2d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f2e
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2f30 floppy.c:189
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2f32
+ jne short 02f2ah ; 75 f4 ; 0xf2f34
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2f36 floppy.c:191
+ jne short 02f4ah ; 75 0e ; 0xf2f3a
+ call 02e44h ; e8 05 ff ; 0xf2f3c floppy.c:202
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f3f floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2f42
+ mov es, dx ; 8e c2 ; 0xf2f45
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2f47
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f4a floppy.c:206
+ pop dx ; 5a ; 0xf2f4d
+ pop cx ; 59 ; 0xf2f4e
+ pop bx ; 5b ; 0xf2f4f
+ pop bp ; 5d ; 0xf2f50
+ retn ; c3 ; 0xf2f51
+ ; disGetNextSymbol 0xf2f52 LB 0x8386 -> off=0x0 cb=0000000000000049 uValue=00000000000f1952 'floppy_media_known'
+floppy_media_known: ; 0xf2f52 LB 0x49
+ push bx ; 53 ; 0xf2f52 floppy.c:208
+ push dx ; 52 ; 0xf2f53
+ push bp ; 55 ; 0xf2f54
+ mov bp, sp ; 89 e5 ; 0xf2f55
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f57 floppy.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2f5a
+ mov es, dx ; 8e c2 ; 0xf2f5d
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf2f5f
+ mov bl, bh ; 88 fb ; 0xf2f62 floppy.c:39
+ test ax, ax ; 85 c0 ; 0xf2f64 floppy.c:214
+ je short 02f6ah ; 74 02 ; 0xf2f66
+ shr bl, 1 ; d0 eb ; 0xf2f68 floppy.c:215
+ and bl, 001h ; 80 e3 01 ; 0xf2f6a floppy.c:216
+ jne short 02f73h ; 75 04 ; 0xf2f6d floppy.c:217
+ xor bh, bh ; 30 ff ; 0xf2f6f floppy.c:218
+ jmp short 02f95h ; eb 22 ; 0xf2f71
+ mov bx, 00090h ; bb 90 00 ; 0xf2f73 floppy.c:220
+ test ax, ax ; 85 c0 ; 0xf2f76 floppy.c:221
+ je short 02f7dh ; 74 03 ; 0xf2f78
+ mov bx, 00091h ; bb 91 00 ; 0xf2f7a floppy.c:222
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f7d floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf2f80
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f82
+ xor ah, ah ; 30 e4 ; 0xf2f85 floppy.c:225
+ sar ax, 004h ; c1 f8 04 ; 0xf2f87
+ and AL, strict byte 001h ; 24 01 ; 0xf2f8a
+ jne short 02f92h ; 75 04 ; 0xf2f8c floppy.c:226
+ xor bx, bx ; 31 db ; 0xf2f8e floppy.c:227
+ jmp short 02f95h ; eb 03 ; 0xf2f90
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2f92 floppy.c:230
+ mov ax, bx ; 89 d8 ; 0xf2f95 floppy.c:231
+ pop bp ; 5d ; 0xf2f97
+ pop dx ; 5a ; 0xf2f98
+ pop bx ; 5b ; 0xf2f99
+ retn ; c3 ; 0xf2f9a
+ ; disGetNextSymbol 0xf2f9b LB 0x833d -> off=0x0 cb=0000000000000052 uValue=00000000000f199b 'floppy_read_id'
+floppy_read_id: ; 0xf2f9b LB 0x52
+ push bp ; 55 ; 0xf2f9b floppy.c:233
+ mov bp, sp ; 89 e5 ; 0xf2f9c
+ push bx ; 53 ; 0xf2f9e
+ push dx ; 52 ; 0xf2f9f
+ push si ; 56 ; 0xf2fa0
+ mov bx, ax ; 89 c3 ; 0xf2fa1
+ call 02edeh ; e8 38 ff ; 0xf2fa3 floppy.c:240
+ mov AL, strict byte 04ah ; b0 4a ; 0xf2fa6 floppy.c:243
+ mov dx, 003f5h ; ba f5 03 ; 0xf2fa8
+ out DX, AL ; ee ; 0xf2fab
+ mov al, bl ; 88 d8 ; 0xf2fac floppy.c:244
+ out DX, AL ; ee ; 0xf2fae
+ call 02e44h ; e8 92 fe ; 0xf2faf floppy.c:259
+ xor bx, bx ; 31 db ; 0xf2fb2 floppy.c:263
+ jmp short 02fbbh ; eb 05 ; 0xf2fb4
+ cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf2fb6
+ jnl short 02fcfh ; 7d 14 ; 0xf2fb9
+ mov dx, 003f5h ; ba f5 03 ; 0xf2fbb floppy.c:264
+ in AL, DX ; ec ; 0xf2fbe
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2fbf
+ lea si, [bx+042h] ; 8d 77 42 ; 0xf2fc1
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2fc4 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf2fc7
+ mov byte [es:si], al ; 26 88 04 ; 0xf2fc9
+ inc bx ; 43 ; 0xf2fcc floppy.c:264
+ jmp short 02fb6h ; eb e7 ; 0xf2fcd
+ mov bx, strict word 00042h ; bb 42 00 ; 0xf2fcf floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2fd2
+ mov es, ax ; 8e c0 ; 0xf2fd5
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fd7
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf2fda floppy.c:39
+ je short 02fe2h ; 74 04 ; 0xf2fdc
+ xor ax, ax ; 31 c0 ; 0xf2fde floppy.c:267
+ jmp short 02fe5h ; eb 03 ; 0xf2fe0
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2fe2 floppy.c:269
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2fe5 floppy.c:270
+ pop si ; 5e ; 0xf2fe8
+ pop dx ; 5a ; 0xf2fe9
+ pop bx ; 5b ; 0xf2fea
+ pop bp ; 5d ; 0xf2feb
+ retn ; c3 ; 0xf2fec
+ ; disGetNextSymbol 0xf2fed LB 0x82eb -> off=0x0 cb=0000000000000041 uValue=00000000000f19ed 'floppy_drive_recal'
+floppy_drive_recal: ; 0xf2fed LB 0x41
+ push bp ; 55 ; 0xf2fed floppy.c:272
+ mov bp, sp ; 89 e5 ; 0xf2fee
+ push bx ; 53 ; 0xf2ff0
+ push dx ; 52 ; 0xf2ff1
+ push si ; 56 ; 0xf2ff2
+ mov bx, ax ; 89 c3 ; 0xf2ff3
+ call 02edeh ; e8 e6 fe ; 0xf2ff5 floppy.c:277
+ mov AL, strict byte 007h ; b0 07 ; 0xf2ff8 floppy.c:280
+ mov dx, 003f5h ; ba f5 03 ; 0xf2ffa
+ out DX, AL ; ee ; 0xf2ffd
+ mov al, bl ; 88 d8 ; 0xf2ffe floppy.c:281
+ out DX, AL ; ee ; 0xf3000
+ call 02e44h ; e8 40 fe ; 0xf3001 floppy.c:300
+ test bx, bx ; 85 db ; 0xf3004 floppy.c:304
+ je short 0300fh ; 74 07 ; 0xf3006
+ or AL, strict byte 002h ; 0c 02 ; 0xf3008 floppy.c:305
+ mov bx, 00095h ; bb 95 00 ; 0xf300a floppy.c:306
+ jmp short 03014h ; eb 05 ; 0xf300d floppy.c:307
+ or AL, strict byte 001h ; 0c 01 ; 0xf300f floppy.c:308
+ mov bx, 00094h ; bb 94 00 ; 0xf3011 floppy.c:309
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf3014 floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3017
+ mov es, dx ; 8e c2 ; 0xf301a
+ mov byte [es:si], al ; 26 88 04 ; 0xf301c
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf301f floppy.c:43
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3023 floppy.c:315
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf3026
+ pop si ; 5e ; 0xf3029
+ pop dx ; 5a ; 0xf302a
+ pop bx ; 5b ; 0xf302b
+ pop bp ; 5d ; 0xf302c
+ retn ; c3 ; 0xf302d
+ ; disGetNextSymbol 0xf302e LB 0x82aa -> off=0x0 cb=00000000000000e6 uValue=00000000000f1a2e 'floppy_media_sense'
+floppy_media_sense: ; 0xf302e LB 0xe6
+ push bp ; 55 ; 0xf302e floppy.c:318
+ mov bp, sp ; 89 e5 ; 0xf302f
+ push bx ; 53 ; 0xf3031
+ push cx ; 51 ; 0xf3032
+ push dx ; 52 ; 0xf3033
+ push si ; 56 ; 0xf3034
+ push di ; 57 ; 0xf3035
+ mov cx, ax ; 89 c1 ; 0xf3036
+ call 02fedh ; e8 b2 ff ; 0xf3038 floppy.c:324
+ test ax, ax ; 85 c0 ; 0xf303b
+ jne short 03044h ; 75 05 ; 0xf303d
+ xor dx, dx ; 31 d2 ; 0xf303f floppy.c:325
+ jmp near 03108h ; e9 c4 00 ; 0xf3041
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3044 floppy.c:360
+ call 0165fh ; e8 15 e6 ; 0xf3047
+ test cx, cx ; 85 c9 ; 0xf304a floppy.c:361
+ jne short 03055h ; 75 07 ; 0xf304c
+ mov dl, al ; 88 c2 ; 0xf304e floppy.c:362
+ shr dl, 004h ; c0 ea 04 ; 0xf3050
+ jmp short 0305ah ; eb 05 ; 0xf3053 floppy.c:363
+ mov dl, al ; 88 c2 ; 0xf3055 floppy.c:364
+ and dl, 00fh ; 80 e2 0f ; 0xf3057
+ cmp dl, 001h ; 80 fa 01 ; 0xf305a floppy.c:365
+ jne short 03068h ; 75 09 ; 0xf305d
+ xor dl, dl ; 30 d2 ; 0xf305f floppy.c:367
+ mov DH, strict byte 015h ; b6 15 ; 0xf3061 floppy.c:368
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf3063 floppy.c:369
+ jmp short 030a6h ; eb 3e ; 0xf3066 floppy.c:371
+ cmp dl, 002h ; 80 fa 02 ; 0xf3068
+ jne short 03073h ; 75 06 ; 0xf306b
+ xor dl, dl ; 30 d2 ; 0xf306d floppy.c:373
+ mov DH, strict byte 035h ; b6 35 ; 0xf306f floppy.c:374
+ jmp short 03063h ; eb f0 ; 0xf3071
+ cmp dl, 003h ; 80 fa 03 ; 0xf3073 floppy.c:377
+ jne short 0307eh ; 75 06 ; 0xf3076
+ xor dl, dl ; 30 d2 ; 0xf3078 floppy.c:379
+ mov DH, strict byte 017h ; b6 17 ; 0xf307a floppy.c:380
+ jmp short 03063h ; eb e5 ; 0xf307c
+ cmp dl, 004h ; 80 fa 04 ; 0xf307e floppy.c:383
+ jne short 03089h ; 75 06 ; 0xf3081
+ xor dl, dl ; 30 d2 ; 0xf3083 floppy.c:385
+ mov DH, strict byte 017h ; b6 17 ; 0xf3085 floppy.c:386
+ jmp short 03063h ; eb da ; 0xf3087
+ cmp dl, 005h ; 80 fa 05 ; 0xf3089 floppy.c:389
+ jne short 03094h ; 75 06 ; 0xf308c
+ mov DL, strict byte 0cch ; b2 cc ; 0xf308e floppy.c:391
+ mov DH, strict byte 0d7h ; b6 d7 ; 0xf3090 floppy.c:392
+ jmp short 03063h ; eb cf ; 0xf3092
+ cmp dl, 00eh ; 80 fa 0e ; 0xf3094 floppy.c:396
+ je short 0309eh ; 74 05 ; 0xf3097
+ cmp dl, 00fh ; 80 fa 0f ; 0xf3099
+ jne short 030a0h ; 75 02 ; 0xf309c
+ jmp short 0308eh ; eb ee ; 0xf309e
+ xor dl, dl ; 30 d2 ; 0xf30a0 floppy.c:404
+ xor dh, dh ; 30 f6 ; 0xf30a2 floppy.c:405
+ xor bx, bx ; 31 db ; 0xf30a4 floppy.c:406
+ mov si, 0008bh ; be 8b 00 ; 0xf30a6 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf30a9
+ mov es, ax ; 8e c0 ; 0xf30ac
+ mov byte [es:si], dl ; 26 88 14 ; 0xf30ae
+ mov ax, cx ; 89 c8 ; 0xf30b1 floppy.c:410
+ call 02f9bh ; e8 e5 fe ; 0xf30b3
+ test ax, ax ; 85 c0 ; 0xf30b6
+ jne short 030ech ; 75 32 ; 0xf30b8
+ mov al, dl ; 88 d0 ; 0xf30ba floppy.c:411
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf30bc
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf30be
+ je short 030ech ; 74 2a ; 0xf30c0
+ mov al, dl ; 88 d0 ; 0xf30c2 floppy.c:415
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf30c4
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf30c6
+ je short 030d9h ; 74 0f ; 0xf30c8
+ mov ah, dl ; 88 d4 ; 0xf30ca
+ and ah, 03fh ; 80 e4 3f ; 0xf30cc
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf30cf
+ je short 030e5h ; 74 12 ; 0xf30d1
+ test al, al ; 84 c0 ; 0xf30d3
+ je short 030deh ; 74 07 ; 0xf30d5
+ jmp short 030a6h ; eb cd ; 0xf30d7
+ and dl, 03fh ; 80 e2 3f ; 0xf30d9 floppy.c:417
+ jmp short 030a6h ; eb c8 ; 0xf30dc floppy.c:418
+ mov dl, ah ; 88 e2 ; 0xf30de floppy.c:420
+ or dl, 040h ; 80 ca 40 ; 0xf30e0
+ jmp short 030a6h ; eb c1 ; 0xf30e3 floppy.c:421
+ mov dl, ah ; 88 e2 ; 0xf30e5 floppy.c:423
+ or dl, 080h ; 80 ca 80 ; 0xf30e7
+ jmp short 030a6h ; eb ba ; 0xf30ea floppy.c:427
+ test cx, cx ; 85 c9 ; 0xf30ec floppy.c:429
+ jne short 030f5h ; 75 05 ; 0xf30ee
+ mov si, 00090h ; be 90 00 ; 0xf30f0 floppy.c:430
+ jmp short 030f8h ; eb 03 ; 0xf30f3 floppy.c:431
+ mov si, 00091h ; be 91 00 ; 0xf30f5 floppy.c:432
+ mov di, 0008bh ; bf 8b 00 ; 0xf30f8 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf30fb
+ mov es, ax ; 8e c0 ; 0xf30fe
+ mov byte [es:di], dl ; 26 88 15 ; 0xf3100
+ mov byte [es:si], dh ; 26 88 34 ; 0xf3103 floppy.c:43
+ mov dx, bx ; 89 da ; 0xf3106 floppy.c:436
+ mov ax, dx ; 89 d0 ; 0xf3108 floppy.c:437
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf310a
+ pop di ; 5f ; 0xf310d
+ pop si ; 5e ; 0xf310e
+ pop dx ; 5a ; 0xf310f
+ pop cx ; 59 ; 0xf3110
+ pop bx ; 5b ; 0xf3111
+ pop bp ; 5d ; 0xf3112
+ retn ; c3 ; 0xf3113
+ ; disGetNextSymbol 0xf3114 LB 0x81c4 -> off=0x0 cb=0000000000000028 uValue=00000000000f1b14 'floppy_drive_exists'
+floppy_drive_exists: ; 0xf3114 LB 0x28
+ push bp ; 55 ; 0xf3114 floppy.c:440
+ mov bp, sp ; 89 e5 ; 0xf3115
+ push dx ; 52 ; 0xf3117
+ mov dx, ax ; 89 c2 ; 0xf3118
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf311a floppy.c:446
+ call 0165fh ; e8 3f e5 ; 0xf311d
+ test dx, dx ; 85 d2 ; 0xf3120 floppy.c:447
+ jne short 03129h ; 75 05 ; 0xf3122
+ shr al, 004h ; c0 e8 04 ; 0xf3124 floppy.c:448
+ jmp short 0312bh ; eb 02 ; 0xf3127 floppy.c:449
+ and AL, strict byte 00fh ; 24 0f ; 0xf3129 floppy.c:450
+ test al, al ; 84 c0 ; 0xf312b floppy.c:451
+ je short 03134h ; 74 05 ; 0xf312d
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf312f
+ jmp short 03136h ; eb 02 ; 0xf3132
+ xor ah, ah ; 30 e4 ; 0xf3134
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf3136 floppy.c:452
+ pop dx ; 5a ; 0xf3139
+ pop bp ; 5d ; 0xf313a
+ retn ; c3 ; 0xf313b
+ ; disGetNextSymbol 0xf313c LB 0x819c -> off=0x23 cb=00000000000009ce uValue=00000000000f1b5f 'int13_diskette_function'
+ db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 00ah, 03bh, 09dh, 031h, 01eh
+ db 032h, 03fh, 032h, 03fh, 032h, 03fh, 032h, 0f3h, 035h, 0bdh, 037h, 0abh, 038h, 0edh, 038h, 021h
+ db 039h, 095h, 039h
+int13_diskette_function: ; 0xf315f LB 0x9ce
+ push bp ; 55 ; 0xf315f floppy.c:467
+ mov bp, sp ; 89 e5 ; 0xf3160
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf3162
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf3165 floppy.c:478
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3169 floppy.c:480
+ shr ax, 008h ; c1 e8 08 ; 0xf316c
+ cmp ax, strict word 00018h ; 3d 18 00 ; 0xf316f
+ jnbe short 031d0h ; 77 5c ; 0xf3172
+ push CS ; 0e ; 0xf3174
+ pop ES ; 07 ; 0xf3175
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3176
+ mov di, 0313ch ; bf 3c 31 ; 0xf3179
+ repne scasb ; f2 ae ; 0xf317c
+ sal cx, 1 ; d1 e1 ; 0xf317e
+ mov di, cx ; 89 cf ; 0xf3180
+ mov di, word [cs:di+03147h] ; 2e 8b bd 47 31 ; 0xf3182
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf3187
+ xor dh, dh ; 30 f6 ; 0xf318a
+ mov ah, byte [bp+00eh] ; 8a 66 0e ; 0xf318c
+ mov cx, word [bp+01ch] ; 8b 4e 1c ; 0xf318f
+ or cl, 001h ; 80 c9 01 ; 0xf3192
+ mov si, dx ; 89 d6 ; 0xf3195
+ or si, 00100h ; 81 ce 00 01 ; 0xf3197
+ jmp di ; ff e7 ; 0xf319b
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf319d floppy.c:483
+ cmp bl, 001h ; 80 fb 01 ; 0xf31a0 floppy.c:484
+ jbe short 031bfh ; 76 1a ; 0xf31a3
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf31a5 floppy.c:485
+ xor ah, ah ; 30 e4 ; 0xf31a8
+ or ah, 001h ; 80 cc 01 ; 0xf31aa
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf31ad
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf31b0 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf31b3
+ mov es, ax ; 8e c0 ; 0xf31b6
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf31b8
+ jmp near 039f7h ; e9 38 08 ; 0xf31bc
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf31bf floppy.c:491
+ call 0165fh ; e8 9a e4 ; 0xf31c2
+ test bl, bl ; 84 db ; 0xf31c5 floppy.c:492
+ jne short 031d3h ; 75 0a ; 0xf31c7
+ mov dl, al ; 88 c2 ; 0xf31c9 floppy.c:493
+ shr dl, 004h ; c0 ea 04 ; 0xf31cb
+ jmp short 031d8h ; eb 08 ; 0xf31ce floppy.c:494
+ jmp near 03b0ah ; e9 37 09 ; 0xf31d0
+ mov dl, al ; 88 c2 ; 0xf31d3 floppy.c:495
+ and dl, 00fh ; 80 e2 0f ; 0xf31d5
+ test dl, dl ; 84 d2 ; 0xf31d8 floppy.c:496
+ jne short 031f6h ; 75 1a ; 0xf31da
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf31dc floppy.c:497
+ xor ah, ah ; 30 e4 ; 0xf31df
+ or ah, 080h ; 80 cc 80 ; 0xf31e1
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf31e4
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf31e7 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf31ea
+ mov es, ax ; 8e c0 ; 0xf31ed
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf31ef
+ jmp near 039f7h ; e9 01 08 ; 0xf31f3
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf31f6 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf31f9
+ mov es, ax ; 8e c0 ; 0xf31fc
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf31fe
+ xor al, al ; 30 c0 ; 0xf3202 floppy.c:506
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf3204
+ mov si, strict word 00041h ; be 41 00 ; 0xf3207 floppy.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf320a
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf320d floppy.c:508
+ mov al, bl ; 88 d8 ; 0xf3211 floppy.c:509
+ xor ah, ah ; 30 e4 ; 0xf3213
+ xor dx, dx ; 31 d2 ; 0xf3215
+ call 02e19h ; e8 ff fb ; 0xf3217
+ mov sp, bp ; 89 ec ; 0xf321a floppy.c:510
+ pop bp ; 5d ; 0xf321c
+ retn ; c3 ; 0xf321d
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf321e floppy.c:513
+ mov bx, 00441h ; bb 41 04 ; 0xf3222 floppy.c:38
+ xor ax, ax ; 31 c0 ; 0xf3225
+ mov es, ax ; 8e c0 ; 0xf3227
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf3229
+ mov al, bl ; 88 d8 ; 0xf322c floppy.c:515
+ xor ah, ah ; 30 e4 ; 0xf322e
+ sal ax, 008h ; c1 e0 08 ; 0xf3230
+ or dx, ax ; 09 c2 ; 0xf3233
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf3235
+ test bl, bl ; 84 db ; 0xf3238 floppy.c:516
+ je short 0321ah ; 74 de ; 0xf323a
+ jmp near 039f7h ; e9 b8 07 ; 0xf323c
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf323f floppy.c:524
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf3242 floppy.c:525
+ shr ax, 008h ; c1 e8 08 ; 0xf3245
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf3248
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf324b floppy.c:526
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf324e
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf3251 floppy.c:527
+ shr ax, 008h ; c1 e8 08 ; 0xf3254
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf3257
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf325a floppy.c:528
+ cmp bl, 001h ; 80 fb 01 ; 0xf325d floppy.c:530
+ jnbe short 0326fh ; 77 0d ; 0xf3260
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf3262
+ jnbe short 0326fh ; 77 09 ; 0xf3264
+ test bh, bh ; 84 ff ; 0xf3266
+ je short 0326fh ; 74 05 ; 0xf3268
+ cmp bh, 048h ; 80 ff 48 ; 0xf326a
+ jbe short 032a2h ; 76 33 ; 0xf326d
+ mov bx, 00eeah ; bb ea 0e ; 0xf326f floppy.c:532
+ mov cx, ds ; 8c d9 ; 0xf3272
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3274
+ call 018cbh ; e8 51 e6 ; 0xf3277
+ push 00285h ; 68 85 02 ; 0xf327a
+ push 0029dh ; 68 9d 02 ; 0xf327d
+ push strict byte 00004h ; 6a 04 ; 0xf3280
+ call 0190eh ; e8 89 e6 ; 0xf3282
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3285
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3288 floppy.c:533
+ xor ah, ah ; 30 e4 ; 0xf328b
+ or ah, 001h ; 80 cc 01 ; 0xf328d
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3290
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3293 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3296
+ mov es, ax ; 8e c0 ; 0xf3299
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf329b
+ jmp near 0334ch ; e9 aa 00 ; 0xf329f
+ mov al, bl ; 88 d8 ; 0xf32a2 floppy.c:535
+ xor ah, ah ; 30 e4 ; 0xf32a4
+ call 03114h ; e8 6b fe ; 0xf32a6
+ test ax, ax ; 85 c0 ; 0xf32a9
+ jne short 032c7h ; 75 1a ; 0xf32ab
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32ad floppy.c:543
+ xor ah, ah ; 30 e4 ; 0xf32b0
+ or ah, 080h ; 80 cc 80 ; 0xf32b2
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf32b5
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf32b8 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf32bb
+ mov es, ax ; 8e c0 ; 0xf32be
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf32c0
+ jmp near 0334ch ; e9 85 00 ; 0xf32c4
+ mov cl, bl ; 88 d9 ; 0xf32c7 floppy.c:551
+ xor ch, ch ; 30 ed ; 0xf32c9
+ mov ax, cx ; 89 c8 ; 0xf32cb
+ call 02f52h ; e8 82 fc ; 0xf32cd
+ test ax, ax ; 85 c0 ; 0xf32d0
+ jne short 032fah ; 75 26 ; 0xf32d2
+ mov ax, cx ; 89 c8 ; 0xf32d4 floppy.c:552
+ call 0302eh ; e8 55 fd ; 0xf32d6
+ test ax, ax ; 85 c0 ; 0xf32d9
+ jne short 032fah ; 75 1d ; 0xf32db
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32dd floppy.c:554
+ xor ah, ah ; 30 e4 ; 0xf32e0
+ or ah, 00ch ; 80 cc 0c ; 0xf32e2
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf32e5
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf32e8 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf32eb
+ mov es, ax ; 8e c0 ; 0xf32ee
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf32f0
+ mov byte [bp+016h], ch ; 88 6e 16 ; 0xf32f4
+ jmp near 039f7h ; e9 fd 06 ; 0xf32f7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32fa floppy.c:556
+ shr ax, 008h ; c1 e8 08 ; 0xf32fd
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf3300
+ jne short 03353h ; 75 4e ; 0xf3303
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3305 floppy.c:573
+ shr dx, 00ch ; c1 ea 0c ; 0xf3308
+ mov ah, dl ; 88 d4 ; 0xf330b
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf330d floppy.c:574
+ sal cx, 004h ; c1 e1 04 ; 0xf3310
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3313 floppy.c:575
+ add si, cx ; 01 ce ; 0xf3316
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3318
+ cmp cx, si ; 39 f1 ; 0xf331b floppy.c:577
+ jbe short 03321h ; 76 02 ; 0xf331d
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf331f floppy.c:579
+ mov dl, bh ; 88 fa ; 0xf3321 floppy.c:581
+ xor dh, dh ; 30 f6 ; 0xf3323
+ mov cx, dx ; 89 d1 ; 0xf3325
+ sal cx, 009h ; c1 e1 09 ; 0xf3327
+ dec cx ; 49 ; 0xf332a
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf332b floppy.c:584
+ add dx, cx ; 01 ca ; 0xf332e
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf3330 floppy.c:585
+ jnc short 03356h ; 73 21 ; 0xf3333
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3335 floppy.c:586
+ xor ah, ah ; 30 e4 ; 0xf3338
+ or ah, 009h ; 80 cc 09 ; 0xf333a
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf333d
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3340 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3343
+ mov es, ax ; 8e c0 ; 0xf3346
+ mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf3348
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf334c
+ jmp near 039f7h ; e9 a4 06 ; 0xf3350
+ jmp near 034a3h ; e9 4d 01 ; 0xf3353
+ mov AL, strict byte 006h ; b0 06 ; 0xf3356 floppy.c:594
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3358
+ out DX, AL ; ee ; 0xf335b
+ xor al, al ; 30 c0 ; 0xf335c floppy.c:597
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf335e
+ out DX, AL ; ee ; 0xf3361
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3362 floppy.c:598
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3365
+ out DX, AL ; ee ; 0xf3368
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3369 floppy.c:599
+ shr dx, 008h ; c1 ea 08 ; 0xf336c
+ mov al, dl ; 88 d0 ; 0xf336f
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3371
+ out DX, AL ; ee ; 0xf3374
+ xor al, al ; 30 c0 ; 0xf3375 floppy.c:601
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3377
+ out DX, AL ; ee ; 0xf337a
+ mov al, cl ; 88 c8 ; 0xf337b floppy.c:602
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf337d
+ out DX, AL ; ee ; 0xf3380
+ shr cx, 008h ; c1 e9 08 ; 0xf3381 floppy.c:603
+ mov al, cl ; 88 c8 ; 0xf3384
+ out DX, AL ; ee ; 0xf3386
+ mov AL, strict byte 046h ; b0 46 ; 0xf3387 floppy.c:611
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3389
+ out DX, AL ; ee ; 0xf338c
+ mov al, ah ; 88 e0 ; 0xf338d floppy.c:615
+ mov dx, 00081h ; ba 81 00 ; 0xf338f
+ out DX, AL ; ee ; 0xf3392
+ mov AL, strict byte 002h ; b0 02 ; 0xf3393 floppy.c:618
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3395
+ out DX, AL ; ee ; 0xf3398
+ mov cl, bl ; 88 d9 ; 0xf3399 floppy.c:623
+ xor ch, ch ; 30 ed ; 0xf339b
+ mov ax, cx ; 89 c8 ; 0xf339d
+ call 02edeh ; e8 3c fb ; 0xf339f
+ mov AL, strict byte 0e6h ; b0 e6 ; 0xf33a2 floppy.c:626
+ mov dx, 003f5h ; ba f5 03 ; 0xf33a4
+ out DX, AL ; ee ; 0xf33a7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf33a8 floppy.c:627
+ xor ah, ah ; 30 e4 ; 0xf33ab
+ mov dx, ax ; 89 c2 ; 0xf33ad
+ sal dx, 002h ; c1 e2 02 ; 0xf33af
+ mov al, bl ; 88 d8 ; 0xf33b2
+ or ax, dx ; 09 d0 ; 0xf33b4
+ mov dx, 003f5h ; ba f5 03 ; 0xf33b6
+ out DX, AL ; ee ; 0xf33b9
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf33ba floppy.c:628
+ out DX, AL ; ee ; 0xf33bd
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf33be floppy.c:629
+ out DX, AL ; ee ; 0xf33c1
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf33c2 floppy.c:630
+ out DX, AL ; ee ; 0xf33c5
+ mov AL, strict byte 002h ; b0 02 ; 0xf33c6 floppy.c:631
+ out DX, AL ; ee ; 0xf33c8
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf33c9 floppy.c:632
+ xor ah, ah ; 30 e4 ; 0xf33cc
+ mov dl, bh ; 88 fa ; 0xf33ce
+ xor dh, dh ; 30 f6 ; 0xf33d0
+ add ax, dx ; 01 d0 ; 0xf33d2
+ dec ax ; 48 ; 0xf33d4
+ mov dx, 003f5h ; ba f5 03 ; 0xf33d5
+ out DX, AL ; ee ; 0xf33d8
+ xor al, al ; 30 c0 ; 0xf33d9 floppy.c:633
+ out DX, AL ; ee ; 0xf33db
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf33dc floppy.c:634
+ out DX, AL ; ee ; 0xf33de
+ call 02e67h ; e8 85 fa ; 0xf33df floppy.c:666
+ test al, al ; 84 c0 ; 0xf33e2 floppy.c:667
+ jne short 03405h ; 75 1f ; 0xf33e4
+ mov ax, cx ; 89 c8 ; 0xf33e6 floppy.c:669
+ call 02e9fh ; e8 b4 fa ; 0xf33e8
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf33eb floppy.c:670
+ xor ah, ah ; 30 e4 ; 0xf33ee
+ or ah, 080h ; 80 cc 80 ; 0xf33f0
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf33f3
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf33f6 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf33f9
+ mov es, ax ; 8e c0 ; 0xf33fc
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf33fe
+ jmp near 032f4h ; e9 ef fe ; 0xf3402
+ mov dx, 003f4h ; ba f4 03 ; 0xf3405 floppy.c:679
+ in AL, DX ; ec ; 0xf3408
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3409
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf340b floppy.c:680
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf340d
+ je short 0341fh ; 74 0e ; 0xf340f
+ push 00285h ; 68 85 02 ; 0xf3411 floppy.c:681
+ push 002b8h ; 68 b8 02 ; 0xf3414
+ push strict byte 00007h ; 6a 07 ; 0xf3417
+ call 0190eh ; e8 f2 e4 ; 0xf3419
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf341c
+ xor cx, cx ; 31 c9 ; 0xf341f floppy.c:684
+ jmp short 03428h ; eb 05 ; 0xf3421
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3423
+ jnl short 0343eh ; 7d 16 ; 0xf3426
+ mov dx, 003f5h ; ba f5 03 ; 0xf3428 floppy.c:685
+ in AL, DX ; ec ; 0xf342b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf342c
+ mov si, cx ; 89 ce ; 0xf342e
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf3430
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3433 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf3436
+ mov byte [es:si], al ; 26 88 04 ; 0xf3438
+ inc cx ; 41 ; 0xf343b floppy.c:685
+ jmp short 03423h ; eb e5 ; 0xf343c
+ mov si, strict word 00042h ; be 42 00 ; 0xf343e floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3441
+ mov es, ax ; 8e c0 ; 0xf3444
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3446
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3449 floppy.c:39
+ je short 0346eh ; 74 21 ; 0xf344b
+ mov al, bl ; 88 d8 ; 0xf344d floppy.c:689
+ xor ah, ah ; 30 e4 ; 0xf344f
+ call 02e9fh ; e8 4b fa ; 0xf3451
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3454 floppy.c:690
+ xor ah, ah ; 30 e4 ; 0xf3457
+ or ah, 020h ; 80 cc 20 ; 0xf3459
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf345c
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf345f floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3462
+ mov es, ax ; 8e c0 ; 0xf3465
+ mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf3467
+ jmp near 0334ch ; e9 de fe ; 0xf346b
+ mov al, bh ; 88 f8 ; 0xf346e floppy.c:698
+ xor ah, ah ; 30 e4 ; 0xf3470
+ sal ax, 009h ; c1 e0 09 ; 0xf3472
+ cwd ; 99 ; 0xf3475
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf3476
+ sar ax, 1 ; d1 f8 ; 0xf3478
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf347a
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf347d
+ mov di, si ; 89 f7 ; 0xf3480
+ mov cx, ax ; 89 c1 ; 0xf3482
+ mov es, dx ; 8e c2 ; 0xf3484
+ push DS ; 1e ; 0xf3486
+ mov ds, dx ; 8e da ; 0xf3487
+ rep movsw ; f3 a5 ; 0xf3489
+ pop DS ; 1f ; 0xf348b
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf348c floppy.c:702
+ xor dh, dh ; 30 f6 ; 0xf348f
+ mov al, bl ; 88 d8 ; 0xf3491
+ xor ah, ah ; 30 e4 ; 0xf3493
+ call 02e19h ; e8 81 f9 ; 0xf3495
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3498 floppy.c:704
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf349c floppy.c:705
+ jmp near 0321ah ; e9 77 fd ; 0xf34a0 floppy.c:706
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf34a3 floppy.c:707
+ shr ax, 008h ; c1 e8 08 ; 0xf34a6
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf34a9
+ je short 034b1h ; 74 03 ; 0xf34ac
+ jmp near 035dch ; e9 2b 01 ; 0xf34ae
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf34b1 floppy.c:718
+ shr cx, 00ch ; c1 e9 0c ; 0xf34b4
+ mov ah, cl ; 88 cc ; 0xf34b7
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf34b9 floppy.c:719
+ sal dx, 004h ; c1 e2 04 ; 0xf34bc
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf34bf floppy.c:720
+ add si, dx ; 01 d6 ; 0xf34c2
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf34c4
+ cmp dx, si ; 39 f2 ; 0xf34c7 floppy.c:722
+ jbe short 034cdh ; 76 02 ; 0xf34c9
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf34cb floppy.c:724
+ mov dl, bh ; 88 fa ; 0xf34cd floppy.c:726
+ xor dh, dh ; 30 f6 ; 0xf34cf
+ mov cx, dx ; 89 d1 ; 0xf34d1
+ sal cx, 009h ; c1 e1 09 ; 0xf34d3
+ dec cx ; 49 ; 0xf34d6
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf34d7 floppy.c:729
+ add dx, cx ; 01 ca ; 0xf34da
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf34dc floppy.c:730
+ jnc short 034e4h ; 73 03 ; 0xf34df
+ jmp near 03335h ; e9 51 fe ; 0xf34e1
+ mov AL, strict byte 006h ; b0 06 ; 0xf34e4 floppy.c:739
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf34e6
+ out DX, AL ; ee ; 0xf34e9
+ xor al, al ; 30 c0 ; 0xf34ea floppy.c:741
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34ec
+ out DX, AL ; ee ; 0xf34ef
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf34f0 floppy.c:742
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf34f3
+ out DX, AL ; ee ; 0xf34f6
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf34f7 floppy.c:743
+ shr dx, 008h ; c1 ea 08 ; 0xf34fa
+ mov al, dl ; 88 d0 ; 0xf34fd
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf34ff
+ out DX, AL ; ee ; 0xf3502
+ xor al, al ; 30 c0 ; 0xf3503 floppy.c:744
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3505
+ out DX, AL ; ee ; 0xf3508
+ mov al, cl ; 88 c8 ; 0xf3509 floppy.c:745
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf350b
+ out DX, AL ; ee ; 0xf350e
+ shr cx, 008h ; c1 e9 08 ; 0xf350f floppy.c:746
+ mov al, cl ; 88 c8 ; 0xf3512
+ out DX, AL ; ee ; 0xf3514
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3515 floppy.c:753
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3517
+ out DX, AL ; ee ; 0xf351a
+ mov al, ah ; 88 e0 ; 0xf351b floppy.c:756
+ mov dx, 00081h ; ba 81 00 ; 0xf351d
+ out DX, AL ; ee ; 0xf3520
+ mov AL, strict byte 002h ; b0 02 ; 0xf3521 floppy.c:759
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3523
+ out DX, AL ; ee ; 0xf3526
+ mov cl, bl ; 88 d9 ; 0xf3527 floppy.c:764
+ xor ch, ch ; 30 ed ; 0xf3529
+ mov ax, cx ; 89 c8 ; 0xf352b
+ call 02edeh ; e8 ae f9 ; 0xf352d
+ mov AL, strict byte 0c5h ; b0 c5 ; 0xf3530 floppy.c:767
+ mov dx, 003f5h ; ba f5 03 ; 0xf3532
+ out DX, AL ; ee ; 0xf3535
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3536 floppy.c:768
+ xor ah, ah ; 30 e4 ; 0xf3539
+ mov dx, ax ; 89 c2 ; 0xf353b
+ sal dx, 002h ; c1 e2 02 ; 0xf353d
+ mov al, bl ; 88 d8 ; 0xf3540
+ or ax, dx ; 09 d0 ; 0xf3542
+ mov dx, 003f5h ; ba f5 03 ; 0xf3544
+ out DX, AL ; ee ; 0xf3547
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3548 floppy.c:769
+ out DX, AL ; ee ; 0xf354b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf354c floppy.c:770
+ out DX, AL ; ee ; 0xf354f
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3550 floppy.c:771
+ out DX, AL ; ee ; 0xf3553
+ mov AL, strict byte 002h ; b0 02 ; 0xf3554 floppy.c:772
+ out DX, AL ; ee ; 0xf3556
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf3557 floppy.c:773
+ xor dh, dh ; 30 f6 ; 0xf355a
+ mov al, bh ; 88 f8 ; 0xf355c
+ xor ah, ah ; 30 e4 ; 0xf355e
+ add ax, dx ; 01 d0 ; 0xf3560
+ dec ax ; 48 ; 0xf3562
+ mov dx, 003f5h ; ba f5 03 ; 0xf3563
+ out DX, AL ; ee ; 0xf3566
+ xor al, al ; 30 c0 ; 0xf3567 floppy.c:774
+ out DX, AL ; ee ; 0xf3569
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf356a floppy.c:775
+ out DX, AL ; ee ; 0xf356c
+ call 02e67h ; e8 f7 f8 ; 0xf356d floppy.c:804
+ test al, al ; 84 c0 ; 0xf3570 floppy.c:805
+ jne short 03577h ; 75 03 ; 0xf3572
+ jmp near 033e6h ; e9 6f fe ; 0xf3574
+ mov dx, 003f4h ; ba f4 03 ; 0xf3577 floppy.c:816
+ in AL, DX ; ec ; 0xf357a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf357b
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf357d floppy.c:817
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf357f
+ je short 03591h ; 74 0e ; 0xf3581
+ push 00285h ; 68 85 02 ; 0xf3583 floppy.c:818
+ push 002b8h ; 68 b8 02 ; 0xf3586
+ push strict byte 00007h ; 6a 07 ; 0xf3589
+ call 0190eh ; e8 80 e3 ; 0xf358b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf358e
+ xor cx, cx ; 31 c9 ; 0xf3591 floppy.c:821
+ jmp short 0359ah ; eb 05 ; 0xf3593
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3595
+ jnl short 035b0h ; 7d 16 ; 0xf3598
+ mov dx, 003f5h ; ba f5 03 ; 0xf359a floppy.c:822
+ in AL, DX ; ec ; 0xf359d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf359e
+ mov si, cx ; 89 ce ; 0xf35a0
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf35a2
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf35a5 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf35a8
+ mov byte [es:si], al ; 26 88 04 ; 0xf35aa
+ inc cx ; 41 ; 0xf35ad floppy.c:822
+ jmp short 03595h ; eb e5 ; 0xf35ae
+ mov si, strict word 00042h ; be 42 00 ; 0xf35b0 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf35b3
+ mov es, ax ; 8e c0 ; 0xf35b6
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf35b8
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf35bb floppy.c:39
+ jne short 035c2h ; 75 03 ; 0xf35bd
+ jmp near 0348ch ; e9 ca fe ; 0xf35bf
+ mov bx, strict word 00043h ; bb 43 00 ; 0xf35c2 floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf35c5
+ test AL, strict byte 002h ; a8 02 ; 0xf35c8 floppy.c:39
+ je short 035d4h ; 74 08 ; 0xf35ca
+ mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf35cc floppy.c:829
+ jmp near 039f7h ; e9 23 04 ; 0xf35d1
+ mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf35d4 floppy.c:832
+ jmp near 039f7h ; e9 1b 04 ; 0xf35d9 floppy.c:833
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf35dc floppy.c:848
+ xor dh, dh ; 30 f6 ; 0xf35df
+ mov al, bl ; 88 d8 ; 0xf35e1
+ xor ah, ah ; 30 e4 ; 0xf35e3
+ call 02e19h ; e8 31 f8 ; 0xf35e5
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf35e8 floppy.c:850
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf35ec floppy.c:851
+ jmp near 0321ah ; e9 27 fc ; 0xf35f0 floppy.c:852
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf35f3 floppy.c:859
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf35f6 floppy.c:860
+ shr ax, 008h ; c1 e8 08 ; 0xf35f9
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf35fc
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf35ff floppy.c:861
+ shr dx, 008h ; c1 ea 08 ; 0xf3602
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf3605
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3608 floppy.c:862
+ cmp bl, 001h ; 80 fb 01 ; 0xf360b floppy.c:864
+ jnbe short 03622h ; 77 12 ; 0xf360e
+ cmp dl, 001h ; 80 fa 01 ; 0xf3610
+ jnbe short 03622h ; 77 0d ; 0xf3613
+ cmp AL, strict byte 04fh ; 3c 4f ; 0xf3615
+ jnbe short 03622h ; 77 09 ; 0xf3617
+ test bh, bh ; 84 ff ; 0xf3619
+ je short 03622h ; 74 05 ; 0xf361b
+ cmp bh, 012h ; 80 ff 12 ; 0xf361d
+ jbe short 0363dh ; 76 1b ; 0xf3620
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3622 floppy.c:866
+ xor ah, ah ; 30 e4 ; 0xf3625
+ or ah, 001h ; 80 cc 01 ; 0xf3627
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf362a
+ mov si, strict word 00041h ; be 41 00 ; 0xf362d floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3630
+ mov es, ax ; 8e c0 ; 0xf3633
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf3635
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3639 floppy.c:868
+ mov al, bl ; 88 d8 ; 0xf363d floppy.c:872
+ xor ah, ah ; 30 e4 ; 0xf363f
+ call 03114h ; e8 d0 fa ; 0xf3641
+ test ax, ax ; 85 c0 ; 0xf3644
+ jne short 03662h ; 75 1a ; 0xf3646
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3648 floppy.c:873
+ xor ah, ah ; 30 e4 ; 0xf364b
+ or ah, 080h ; 80 cc 80 ; 0xf364d
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3650
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3653 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3656
+ mov es, ax ; 8e c0 ; 0xf3659
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf365b
+ jmp near 039f7h ; e9 95 03 ; 0xf365f
+ mov cl, bl ; 88 d9 ; 0xf3662 floppy.c:880
+ xor ch, ch ; 30 ed ; 0xf3664
+ mov ax, cx ; 89 c8 ; 0xf3666
+ call 02f52h ; e8 e7 f8 ; 0xf3668
+ test ax, ax ; 85 c0 ; 0xf366b
+ jne short 0367bh ; 75 0c ; 0xf366d
+ mov ax, cx ; 89 c8 ; 0xf366f floppy.c:881
+ call 0302eh ; e8 ba f9 ; 0xf3671
+ test ax, ax ; 85 c0 ; 0xf3674
+ jne short 0367bh ; 75 03 ; 0xf3676
+ jmp near 032ddh ; e9 62 fc ; 0xf3678
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf367b floppy.c:892
+ shr cx, 00ch ; c1 e9 0c ; 0xf367e
+ mov ah, cl ; 88 cc ; 0xf3681
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3683 floppy.c:893
+ sal dx, 004h ; c1 e2 04 ; 0xf3686
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3689 floppy.c:894
+ add si, dx ; 01 d6 ; 0xf368c
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf368e
+ cmp dx, si ; 39 f2 ; 0xf3691 floppy.c:896
+ jbe short 03697h ; 76 02 ; 0xf3693
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf3695 floppy.c:898
+ mov dl, bh ; 88 fa ; 0xf3697 floppy.c:900
+ xor dh, dh ; 30 f6 ; 0xf3699
+ mov cx, dx ; 89 d1 ; 0xf369b
+ sal cx, 002h ; c1 e1 02 ; 0xf369d
+ dec cx ; 49 ; 0xf36a0
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf36a1 floppy.c:903
+ add dx, cx ; 01 ca ; 0xf36a4
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf36a6 floppy.c:904
+ jnc short 036aeh ; 73 03 ; 0xf36a9
+ jmp near 03335h ; e9 87 fc ; 0xf36ab
+ mov AL, strict byte 006h ; b0 06 ; 0xf36ae floppy.c:912
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf36b0
+ out DX, AL ; ee ; 0xf36b3
+ xor al, al ; 30 c0 ; 0xf36b4 floppy.c:913
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf36b6
+ out DX, AL ; ee ; 0xf36b9
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf36ba floppy.c:914
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf36bd
+ out DX, AL ; ee ; 0xf36c0
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf36c1 floppy.c:915
+ shr dx, 008h ; c1 ea 08 ; 0xf36c4
+ mov al, dl ; 88 d0 ; 0xf36c7
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf36c9
+ out DX, AL ; ee ; 0xf36cc
+ xor al, al ; 30 c0 ; 0xf36cd floppy.c:916
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf36cf
+ out DX, AL ; ee ; 0xf36d2
+ mov al, cl ; 88 c8 ; 0xf36d3 floppy.c:917
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf36d5
+ out DX, AL ; ee ; 0xf36d8
+ shr cx, 008h ; c1 e9 08 ; 0xf36d9 floppy.c:918
+ mov al, cl ; 88 c8 ; 0xf36dc
+ out DX, AL ; ee ; 0xf36de
+ mov AL, strict byte 04ah ; b0 4a ; 0xf36df floppy.c:921
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf36e1
+ out DX, AL ; ee ; 0xf36e4
+ mov al, ah ; 88 e0 ; 0xf36e5 floppy.c:923
+ mov dx, 00081h ; ba 81 00 ; 0xf36e7
+ out DX, AL ; ee ; 0xf36ea
+ mov AL, strict byte 002h ; b0 02 ; 0xf36eb floppy.c:924
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf36ed
+ out DX, AL ; ee ; 0xf36f0
+ mov cl, bl ; 88 d9 ; 0xf36f1 floppy.c:927
+ xor ch, ch ; 30 ed ; 0xf36f3
+ mov ax, cx ; 89 c8 ; 0xf36f5
+ call 02edeh ; e8 e4 f7 ; 0xf36f7
+ mov AL, strict byte 00fh ; b0 0f ; 0xf36fa floppy.c:930
+ mov dx, 003f5h ; ba f5 03 ; 0xf36fc
+ out DX, AL ; ee ; 0xf36ff
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3700 floppy.c:931
+ xor ah, ah ; 30 e4 ; 0xf3703
+ mov dx, ax ; 89 c2 ; 0xf3705
+ sal dx, 002h ; c1 e2 02 ; 0xf3707
+ mov al, bl ; 88 d8 ; 0xf370a
+ or dx, ax ; 09 c2 ; 0xf370c
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf370e
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf3711
+ mov dx, 003f5h ; ba f5 03 ; 0xf3714
+ out DX, AL ; ee ; 0xf3717
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3718 floppy.c:932
+ out DX, AL ; ee ; 0xf371b
+ mov AL, strict byte 04dh ; b0 4d ; 0xf371c floppy.c:935
+ out DX, AL ; ee ; 0xf371e
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf371f floppy.c:936
+ out DX, AL ; ee ; 0xf3722
+ mov AL, strict byte 002h ; b0 02 ; 0xf3723 floppy.c:937
+ out DX, AL ; ee ; 0xf3725
+ mov al, bh ; 88 f8 ; 0xf3726 floppy.c:938
+ out DX, AL ; ee ; 0xf3728
+ xor al, bh ; 30 f8 ; 0xf3729 floppy.c:939
+ out DX, AL ; ee ; 0xf372b
+ mov AL, strict byte 0f6h ; b0 f6 ; 0xf372c floppy.c:940
+ out DX, AL ; ee ; 0xf372e
+ call 02e67h ; e8 35 f7 ; 0xf372f floppy.c:968
+ test al, al ; 84 c0 ; 0xf3732 floppy.c:969
+ jne short 0373eh ; 75 08 ; 0xf3734
+ mov ax, cx ; 89 c8 ; 0xf3736 floppy.c:970
+ call 02e9fh ; e8 64 f7 ; 0xf3738
+ jmp near 03648h ; e9 0a ff ; 0xf373b floppy.c:68
+ mov dx, 003f4h ; ba f4 03 ; 0xf373e floppy.c:979
+ in AL, DX ; ec ; 0xf3741
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3742
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3744 floppy.c:980
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3746
+ je short 03758h ; 74 0e ; 0xf3748
+ push 00285h ; 68 85 02 ; 0xf374a floppy.c:981
+ push 002b8h ; 68 b8 02 ; 0xf374d
+ push strict byte 00007h ; 6a 07 ; 0xf3750
+ call 0190eh ; e8 b9 e1 ; 0xf3752
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3755
+ xor cx, cx ; 31 c9 ; 0xf3758 floppy.c:984
+ jmp short 03761h ; eb 05 ; 0xf375a
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf375c
+ jnl short 03777h ; 7d 16 ; 0xf375f
+ mov dx, 003f5h ; ba f5 03 ; 0xf3761 floppy.c:985
+ in AL, DX ; ec ; 0xf3764
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3765
+ mov si, cx ; 89 ce ; 0xf3767
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf3769
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf376c floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf376f
+ mov byte [es:si], al ; 26 88 04 ; 0xf3771
+ inc cx ; 41 ; 0xf3774 floppy.c:985
+ jmp short 0375ch ; eb e5 ; 0xf3775
+ mov si, strict word 00042h ; be 42 00 ; 0xf3777 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf377a
+ mov es, ax ; 8e c0 ; 0xf377d
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf377f
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3782 floppy.c:39
+ je short 037a1h ; 74 1b ; 0xf3784
+ mov si, strict word 00043h ; be 43 00 ; 0xf3786 floppy.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3789
+ test AL, strict byte 002h ; a8 02 ; 0xf378c floppy.c:39
+ je short 03793h ; 74 03 ; 0xf378e
+ jmp near 035cch ; e9 39 fe ; 0xf3790
+ push 00285h ; 68 85 02 ; 0xf3793 floppy.c:996
+ push 002cch ; 68 cc 02 ; 0xf3796
+ push strict byte 00007h ; 6a 07 ; 0xf3799
+ call 0190eh ; e8 70 e1 ; 0xf379b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf379e
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf37a1 floppy.c:1000
+ mov si, strict word 00041h ; be 41 00 ; 0xf37a5 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf37a8
+ mov es, ax ; 8e c0 ; 0xf37ab
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf37ad
+ mov al, bl ; 88 d8 ; 0xf37b1 floppy.c:1002
+ xor ah, ah ; 30 e4 ; 0xf37b3
+ xor dx, dx ; 31 d2 ; 0xf37b5
+ call 02e19h ; e8 5f f6 ; 0xf37b7
+ jmp near 0349ch ; e9 df fc ; 0xf37ba
+ mov bl, ah ; 88 e3 ; 0xf37bd floppy.c:1009
+ cmp ah, 001h ; 80 fc 01 ; 0xf37bf floppy.c:1011
+ jbe short 037e2h ; 76 1e ; 0xf37c2
+ xor ax, ax ; 31 c0 ; 0xf37c4 floppy.c:1012
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf37c6
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf37c9 floppy.c:1013
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf37cc floppy.c:1014
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf37cf floppy.c:1015
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf37d2 floppy.c:1016
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf37d5 floppy.c:1017
+ mov al, bh ; 88 f8 ; 0xf37d8 floppy.c:1018
+ xor ah, ah ; 30 e4 ; 0xf37da
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf37dc
+ jmp near 03901h ; e9 1f 01 ; 0xf37df
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf37e2 floppy.c:1019
+ call 0165fh ; e8 77 de ; 0xf37e5
+ mov dl, al ; 88 c2 ; 0xf37e8
+ xor bh, bh ; 30 ff ; 0xf37ea floppy.c:1025
+ test AL, strict byte 0f0h ; a8 f0 ; 0xf37ec floppy.c:1026
+ je short 037f2h ; 74 02 ; 0xf37ee
+ mov BH, strict byte 001h ; b7 01 ; 0xf37f0 floppy.c:1027
+ test dl, 00fh ; f6 c2 0f ; 0xf37f2 floppy.c:1028
+ je short 037f9h ; 74 02 ; 0xf37f5
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf37f7 floppy.c:1029
+ test bl, bl ; 84 db ; 0xf37f9 floppy.c:1031
+ jne short 03802h ; 75 05 ; 0xf37fb
+ shr dl, 004h ; c0 ea 04 ; 0xf37fd floppy.c:1032
+ jmp short 03805h ; eb 03 ; 0xf3800 floppy.c:1033
+ and dl, 00fh ; 80 e2 0f ; 0xf3802 floppy.c:1034
+ mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf3805 floppy.c:1037
+ mov al, dl ; 88 d0 ; 0xf3809
+ xor ah, ah ; 30 e4 ; 0xf380b
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf380d
+ xor al, dl ; 30 d0 ; 0xf3810 floppy.c:1038
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3812
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf3815 floppy.c:1040
+ mov cl, bh ; 88 f9 ; 0xf3818
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf381a
+ mov ax, cx ; 89 c8 ; 0xf381d floppy.c:1041
+ xor ah, ch ; 30 ec ; 0xf381f
+ or ah, 001h ; 80 cc 01 ; 0xf3821
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf3824
+ cmp dl, 003h ; 80 fa 03 ; 0xf3827 floppy.c:1043
+ jc short 03841h ; 72 15 ; 0xf382a
+ jbe short 03868h ; 76 3a ; 0xf382c
+ cmp dl, 005h ; 80 fa 05 ; 0xf382e
+ jc short 0386fh ; 72 3c ; 0xf3831
+ jbe short 03876h ; 76 41 ; 0xf3833
+ cmp dl, 00fh ; 80 fa 0f ; 0xf3835
+ je short 03884h ; 74 4a ; 0xf3838
+ cmp dl, 00eh ; 80 fa 0e ; 0xf383a
+ je short 0387dh ; 74 3e ; 0xf383d
+ jmp short 0388bh ; eb 4a ; 0xf383f
+ cmp dl, 002h ; 80 fa 02 ; 0xf3841
+ je short 03861h ; 74 1b ; 0xf3844
+ cmp dl, 001h ; 80 fa 01 ; 0xf3846
+ je short 0385ah ; 74 0f ; 0xf3849
+ test dl, dl ; 84 d2 ; 0xf384b
+ jne short 0388bh ; 75 3c ; 0xf384d
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf384f floppy.c:1045
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf3854 floppy.c:1046
+ jmp short 03899h ; eb 3f ; 0xf3858 floppy.c:1047
+ mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf385a floppy.c:1050
+ jmp short 03899h ; eb 38 ; 0xf385f floppy.c:1051
+ mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf3861 floppy.c:1054
+ jmp short 03899h ; eb 31 ; 0xf3866 floppy.c:1055
+ mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf3868 floppy.c:1058
+ jmp short 03899h ; eb 2a ; 0xf386d floppy.c:1059
+ mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf386f floppy.c:1062
+ jmp short 03899h ; eb 23 ; 0xf3874 floppy.c:1063
+ mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf3876 floppy.c:1066
+ jmp short 03899h ; eb 1c ; 0xf387b floppy.c:1067
+ mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf387d floppy.c:1070
+ jmp short 03899h ; eb 15 ; 0xf3882 floppy.c:1071
+ mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf3884 floppy.c:1074
+ jmp short 03899h ; eb 0e ; 0xf3889 floppy.c:1075
+ push 00285h ; 68 85 02 ; 0xf388b floppy.c:1079
+ push 002ddh ; 68 dd 02 ; 0xf388e
+ push strict byte 00007h ; 6a 07 ; 0xf3891
+ call 0190eh ; e8 78 e0 ; 0xf3893
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3896
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3899 floppy.c:1083
+ mov al, dl ; 88 d0 ; 0xf389e floppy.c:1084
+ xor ah, ah ; 30 e4 ; 0xf38a0
+ call 03b2dh ; e8 88 02 ; 0xf38a2
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf38a5
+ jmp near 0349ch ; e9 f1 fb ; 0xf38a8
+ mov bl, ah ; 88 e3 ; 0xf38ab floppy.c:1091
+ cmp ah, 001h ; 80 fc 01 ; 0xf38ad floppy.c:1092
+ jbe short 038b7h ; 76 05 ; 0xf38b0
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf38b2 floppy.c:1093
+ jmp short 03901h ; eb 4a ; 0xf38b5
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf38b7 floppy.c:1099
+ call 0165fh ; e8 a2 dd ; 0xf38ba
+ test bl, bl ; 84 db ; 0xf38bd floppy.c:1100
+ jne short 038c8h ; 75 07 ; 0xf38bf
+ mov dl, al ; 88 c2 ; 0xf38c1 floppy.c:1101
+ shr dl, 004h ; c0 ea 04 ; 0xf38c3
+ jmp short 038cdh ; eb 05 ; 0xf38c6 floppy.c:1102
+ mov dl, al ; 88 c2 ; 0xf38c8 floppy.c:1103
+ and dl, 00fh ; 80 e2 0f ; 0xf38ca
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf38cd floppy.c:1104
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf38d1
+ xor ah, ah ; 30 e4 ; 0xf38d4
+ test dl, dl ; 84 d2 ; 0xf38d6 floppy.c:1105
+ je short 038e7h ; 74 0d ; 0xf38d8
+ cmp dl, 001h ; 80 fa 01 ; 0xf38da floppy.c:1106
+ jbe short 038e4h ; 76 05 ; 0xf38dd
+ or ah, 002h ; 80 cc 02 ; 0xf38df floppy.c:1108
+ jmp short 038e7h ; eb 03 ; 0xf38e2 floppy.c:1109
+ or ah, 001h ; 80 cc 01 ; 0xf38e4 floppy.c:1110
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf38e7
+ jmp near 0321ah ; e9 2d f9 ; 0xf38ea floppy.c:1113
+ cmp ah, 001h ; 80 fc 01 ; 0xf38ed floppy.c:1118
+ jbe short 03907h ; 76 15 ; 0xf38f0
+ mov word [bp+016h], si ; 89 76 16 ; 0xf38f2 floppy.c:1119
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf38f5 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf38f8
+ mov es, ax ; 8e c0 ; 0xf38fb
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf38fd
+ mov word [bp+01ch], cx ; 89 4e 1c ; 0xf3901
+ jmp near 0321ah ; e9 13 f9 ; 0xf3904
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3907 floppy.c:1125
+ xor ah, ah ; 30 e4 ; 0xf390a
+ or ah, 006h ; 80 cc 06 ; 0xf390c
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf390f
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3912 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3915
+ mov es, ax ; 8e c0 ; 0xf3918
+ mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf391a
+ jmp near 039f7h ; e9 d6 00 ; 0xf391e
+ mov bl, ah ; 88 e3 ; 0xf3921 floppy.c:1134
+ mov dl, byte [bp+016h] ; 8a 56 16 ; 0xf3923 floppy.c:1142
+ cmp ah, 001h ; 80 fc 01 ; 0xf3926 floppy.c:1146
+ jnbe short 038f2h ; 77 c7 ; 0xf3929
+ mov al, bl ; 88 d8 ; 0xf392b floppy.c:1154
+ xor ah, ah ; 30 e4 ; 0xf392d
+ call 03114h ; e8 e2 f7 ; 0xf392f
+ test ax, ax ; 85 c0 ; 0xf3932
+ jne short 03939h ; 75 03 ; 0xf3934
+ jmp near 03648h ; e9 0f fd ; 0xf3936
+ test bl, bl ; 84 db ; 0xf3939 floppy.c:1162
+ je short 03942h ; 74 05 ; 0xf393b
+ mov bx, 00091h ; bb 91 00 ; 0xf393d
+ jmp short 03945h ; eb 03 ; 0xf3940
+ mov bx, 00090h ; bb 90 00 ; 0xf3942
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf3945
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3948 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf394b
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf394d
+ and bl, 00fh ; 80 e3 0f ; 0xf3950 floppy.c:1166
+ cmp dl, 002h ; 80 fa 02 ; 0xf3953 floppy.c:1168
+ jc short 03967h ; 72 0f ; 0xf3956
+ jbe short 03974h ; 76 1a ; 0xf3958
+ cmp dl, 004h ; 80 fa 04 ; 0xf395a
+ je short 0396fh ; 74 10 ; 0xf395d
+ cmp dl, 003h ; 80 fa 03 ; 0xf395f
+ je short 03979h ; 74 15 ; 0xf3962
+ jmp near 031a5h ; e9 3e f8 ; 0xf3964
+ cmp dl, 001h ; 80 fa 01 ; 0xf3967
+ je short 0396fh ; 74 03 ; 0xf396a
+ jmp near 031a5h ; e9 36 f8 ; 0xf396c
+ or bl, 090h ; 80 cb 90 ; 0xf396f floppy.c:1171
+ jmp short 0397ch ; eb 08 ; 0xf3972 floppy.c:1172
+ or bl, 070h ; 80 cb 70 ; 0xf3974 floppy.c:1175
+ jmp short 0397ch ; eb 03 ; 0xf3977 floppy.c:1176
+ or bl, 010h ; 80 cb 10 ; 0xf3979 floppy.c:1179
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf397c floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf397f
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3981
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3984
+ xor al, al ; 30 c0 ; 0xf3987 floppy.c:1198
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf3989
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf398c floppy.c:43
+ mov byte [es:bx], al ; 26 88 07 ; 0xf398f
+ jmp near 0349ch ; e9 07 fb ; 0xf3992
+ mov bl, ah ; 88 e3 ; 0xf3995 floppy.c:1208
+ mov dl, byte [bp+014h] ; 8a 56 14 ; 0xf3997 floppy.c:1210
+ mov bh, dl ; 88 d7 ; 0xf399a floppy.c:1211
+ and bh, 03fh ; 80 e7 3f ; 0xf399c
+ sar dx, 006h ; c1 fa 06 ; 0xf399f floppy.c:1212
+ sal dx, 008h ; c1 e2 08 ; 0xf39a2
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf39a5
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf39a8
+ shr dx, 008h ; c1 ea 08 ; 0xf39ab
+ add dx, word [bp-00ch] ; 03 56 f4 ; 0xf39ae
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf39b1
+ cmp ah, 001h ; 80 fc 01 ; 0xf39b4 floppy.c:1217
+ jbe short 039bch ; 76 03 ; 0xf39b7
+ jmp near 038f2h ; e9 36 ff ; 0xf39b9
+ mov al, bl ; 88 d8 ; 0xf39bc floppy.c:1225
+ xor ah, ah ; 30 e4 ; 0xf39be
+ call 03114h ; e8 51 f7 ; 0xf39c0
+ test ax, ax ; 85 c0 ; 0xf39c3
+ jne short 039cah ; 75 03 ; 0xf39c5
+ jmp near 03648h ; e9 7e fc ; 0xf39c7
+ mov cl, bl ; 88 d9 ; 0xf39ca floppy.c:1233
+ xor ch, ch ; 30 ed ; 0xf39cc
+ mov ax, cx ; 89 c8 ; 0xf39ce
+ call 02f52h ; e8 7f f5 ; 0xf39d0
+ test ax, ax ; 85 c0 ; 0xf39d3
+ jne short 039feh ; 75 27 ; 0xf39d5
+ mov ax, cx ; 89 c8 ; 0xf39d7 floppy.c:1234
+ call 0302eh ; e8 52 f6 ; 0xf39d9
+ test ax, ax ; 85 c0 ; 0xf39dc
+ jne short 039feh ; 75 1e ; 0xf39de
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf39e0 floppy.c:1235
+ xor ah, ah ; 30 e4 ; 0xf39e3
+ or ah, 00ch ; 80 cc 0c ; 0xf39e5
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf39e8
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf39eb floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf39ee
+ mov es, ax ; 8e c0 ; 0xf39f1
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf39f3
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf39f7
+ jmp near 0321ah ; e9 1c f8 ; 0xf39fb
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf39fe floppy.c:1243
+ call 0165fh ; e8 5b dc ; 0xf3a01
+ test bl, bl ; 84 db ; 0xf3a04 floppy.c:1244
+ jne short 03a0fh ; 75 07 ; 0xf3a06
+ mov dl, al ; 88 c2 ; 0xf3a08 floppy.c:1245
+ shr dl, 004h ; c0 ea 04 ; 0xf3a0a
+ jmp short 03a14h ; eb 05 ; 0xf3a0d floppy.c:1246
+ mov dl, al ; 88 c2 ; 0xf3a0f floppy.c:1247
+ and dl, 00fh ; 80 e2 0f ; 0xf3a11
+ test bl, bl ; 84 db ; 0xf3a14 floppy.c:1250
+ je short 03a1dh ; 74 05 ; 0xf3a16
+ mov si, 00091h ; be 91 00 ; 0xf3a18
+ jmp short 03a20h ; eb 03 ; 0xf3a1b
+ mov si, 00090h ; be 90 00 ; 0xf3a1d
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3a20
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a23 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3a26
+ mov bl, byte [es:si] ; 26 8a 1c ; 0xf3a28
+ and bl, 00fh ; 80 e3 0f ; 0xf3a2b floppy.c:39
+ cmp dl, 003h ; 80 fa 03 ; 0xf3a2e floppy.c:1256
+ jc short 03a4eh ; 72 1b ; 0xf3a31
+ mov al, bl ; 88 d8 ; 0xf3a33
+ or AL, strict byte 090h ; 0c 90 ; 0xf3a35
+ cmp dl, 003h ; 80 fa 03 ; 0xf3a37
+ jbe short 03a8ah ; 76 4e ; 0xf3a3a
+ mov ah, bl ; 88 dc ; 0xf3a3c
+ or ah, 010h ; 80 cc 10 ; 0xf3a3e
+ cmp dl, 005h ; 80 fa 05 ; 0xf3a41
+ je short 03a88h ; 74 42 ; 0xf3a44
+ cmp dl, 004h ; 80 fa 04 ; 0xf3a46
+ je short 03a97h ; 74 4c ; 0xf3a49
+ jmp near 03acfh ; e9 81 00 ; 0xf3a4b
+ cmp dl, 002h ; 80 fa 02 ; 0xf3a4e
+ je short 03a68h ; 74 15 ; 0xf3a51
+ cmp dl, 001h ; 80 fa 01 ; 0xf3a53
+ jne short 03a9bh ; 75 43 ; 0xf3a56
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3a58 floppy.c:1258
+ jne short 03a9bh ; 75 3d ; 0xf3a5c
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a5e
+ jne short 03ab1h ; 75 4e ; 0xf3a61
+ or bl, 090h ; 80 cb 90 ; 0xf3a63 floppy.c:1259
+ jmp short 03ab1h ; eb 49 ; 0xf3a66 floppy.c:1261
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3a68 floppy.c:1263
+ jne short 03a78h ; 75 0a ; 0xf3a6c
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a6e
+ jne short 03a78h ; 75 05 ; 0xf3a71
+ or bl, 070h ; 80 cb 70 ; 0xf3a73 floppy.c:1264
+ jmp short 03ab1h ; eb 39 ; 0xf3a76 floppy.c:1265
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a78
+ jne short 03acfh ; 75 51 ; 0xf3a7c
+ cmp bh, 00fh ; 80 ff 0f ; 0xf3a7e
+ jne short 03acfh ; 75 4c ; 0xf3a81
+ or bl, 010h ; 80 cb 10 ; 0xf3a83 floppy.c:1266
+ jmp short 03acfh ; eb 47 ; 0xf3a86 floppy.c:1268
+ jmp short 03ab3h ; eb 29 ; 0xf3a88
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a8a floppy.c:1270
+ jne short 03acfh ; 75 3f ; 0xf3a8e
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a90
+ je short 03a99h ; 74 04 ; 0xf3a93
+ jmp short 03acfh ; eb 38 ; 0xf3a95
+ jmp short 03a9dh ; eb 04 ; 0xf3a97
+ mov bl, al ; 88 c3 ; 0xf3a99 floppy.c:1271
+ jmp short 03acfh ; eb 32 ; 0xf3a9b floppy.c:1273
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a9d floppy.c:1275
+ jne short 03acfh ; 75 2c ; 0xf3aa1
+ cmp bh, 009h ; 80 ff 09 ; 0xf3aa3 floppy.c:1276
+ jne short 03aaah ; 75 02 ; 0xf3aa6
+ jmp short 03a99h ; eb ef ; 0xf3aa8
+ cmp bh, 012h ; 80 ff 12 ; 0xf3aaa floppy.c:1277
+ jne short 03acfh ; 75 20 ; 0xf3aad
+ mov bl, ah ; 88 e3 ; 0xf3aaf floppy.c:1279
+ jmp short 03acfh ; eb 1c ; 0xf3ab1 floppy.c:1282
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3ab3 floppy.c:1284
+ jne short 03acfh ; 75 16 ; 0xf3ab7
+ cmp bh, 009h ; 80 ff 09 ; 0xf3ab9 floppy.c:1285
+ jne short 03ac0h ; 75 02 ; 0xf3abc
+ jmp short 03a99h ; eb d9 ; 0xf3abe
+ cmp bh, 012h ; 80 ff 12 ; 0xf3ac0 floppy.c:1286
+ jne short 03ac7h ; 75 02 ; 0xf3ac3
+ jmp short 03aafh ; eb e8 ; 0xf3ac5
+ cmp bh, 024h ; 80 ff 24 ; 0xf3ac7 floppy.c:1288
+ jne short 03acfh ; 75 03 ; 0xf3aca
+ or bl, 0d0h ; 80 cb d0 ; 0xf3acc floppy.c:1290
+ mov al, bl ; 88 d8 ; 0xf3acf floppy.c:1299
+ xor ah, ah ; 30 e4 ; 0xf3ad1
+ sar ax, 004h ; c1 f8 04 ; 0xf3ad3
+ test AL, strict byte 001h ; a8 01 ; 0xf3ad6
+ jne short 03addh ; 75 03 ; 0xf3ad8
+ jmp near 039e0h ; e9 03 ff ; 0xf3ada
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3add floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf3ae0
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3ae2
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3ae5
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3ae8 floppy.c:1312
+ mov al, dl ; 88 d0 ; 0xf3aed floppy.c:1313
+ xor ah, ah ; 30 e4 ; 0xf3aef
+ call 03b2dh ; e8 39 00 ; 0xf3af1
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3af4
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3af7 floppy.c:1316
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3afb floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3afe
+ mov es, ax ; 8e c0 ; 0xf3b01
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3b03
+ jmp near 0349ch ; e9 92 f9 ; 0xf3b07
+ mov bx, 00eeah ; bb ea 0e ; 0xf3b0a floppy.c:1322
+ mov cx, ds ; 8c d9 ; 0xf3b0d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3b0f
+ call 018cbh ; e8 b6 dd ; 0xf3b12
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3b15
+ shr ax, 008h ; c1 e8 08 ; 0xf3b18
+ push ax ; 50 ; 0xf3b1b
+ push 00285h ; 68 85 02 ; 0xf3b1c
+ push 002f2h ; 68 f2 02 ; 0xf3b1f
+ push strict byte 00004h ; 6a 04 ; 0xf3b22
+ call 0190eh ; e8 e7 dd ; 0xf3b24
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3b27
+ jmp near 031a5h ; e9 78 f6 ; 0xf3b2a floppy.c:68
+ ; disGetNextSymbol 0xf3b2d LB 0x77ab -> off=0x0 cb=0000000000000030 uValue=00000000000f252d 'get_floppy_dpt'
+get_floppy_dpt: ; 0xf3b2d LB 0x30
+ push bx ; 53 ; 0xf3b2d floppyt.c:94
+ push dx ; 52 ; 0xf3b2e
+ push bp ; 55 ; 0xf3b2f
+ mov bp, sp ; 89 e5 ; 0xf3b30
+ mov dl, al ; 88 c2 ; 0xf3b32
+ xor ax, ax ; 31 c0 ; 0xf3b34 floppyt.c:98
+ jmp short 03b3eh ; eb 06 ; 0xf3b36
+ inc ax ; 40 ; 0xf3b38 floppyt.c:100
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3b39
+ jnc short 03b56h ; 73 18 ; 0xf3b3c
+ mov bx, ax ; 89 c3 ; 0xf3b3e
+ add bx, ax ; 01 c3 ; 0xf3b40
+ cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3b42
+ jne short 03b38h ; 75 f0 ; 0xf3b46
+ mov al, byte [word bx+0005ch] ; 8a 87 5c 00 ; 0xf3b48
+ xor ah, ah ; 30 e4 ; 0xf3b4c
+ imul ax, ax, strict byte 0000dh ; 6b c0 0d ; 0xf3b4e
+ add ax, strict word 00000h ; 05 00 00 ; 0xf3b51
+ jmp short 03b59h ; eb 03 ; 0xf3b54
+ mov ax, strict word 00041h ; b8 41 00 ; 0xf3b56 floppyt.c:103
+ pop bp ; 5d ; 0xf3b59 floppyt.c:104
+ pop dx ; 5a ; 0xf3b5a
+ pop bx ; 5b ; 0xf3b5b
+ retn ; c3 ; 0xf3b5c
+ ; disGetNextSymbol 0xf3b5d LB 0x777b -> off=0x0 cb=0000000000000007 uValue=00000000000f255d 'dummy_soft_reset'
+dummy_soft_reset: ; 0xf3b5d LB 0x7
+ push bp ; 55 ; 0xf3b5d eltorito.c:129
+ mov bp, sp ; 89 e5 ; 0xf3b5e
+ xor ax, ax ; 31 c0 ; 0xf3b60 eltorito.c:132
+ pop bp ; 5d ; 0xf3b62
+ retn ; c3 ; 0xf3b63
+ ; disGetNextSymbol 0xf3b64 LB 0x7774 -> off=0x0 cb=0000000000000017 uValue=00000000000f2564 'cdemu_init'
+cdemu_init: ; 0xf3b64 LB 0x17
+ push bp ; 55 ; 0xf3b64 eltorito.c:158
+ mov bp, sp ; 89 e5 ; 0xf3b65
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b67 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b6a
+ mov es, ax ; 8e c0 ; 0xf3b6d
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3b6f
+ mov bx, 0031eh ; bb 1e 03 ; 0xf3b72 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3b75
+ pop bp ; 5d ; 0xf3b79 eltorito.c:165
+ retn ; c3 ; 0xf3b7a
+ ; disGetNextSymbol 0xf3b7b LB 0x775d -> off=0x0 cb=0000000000000016 uValue=00000000000f257b 'cdemu_isactive'
+cdemu_isactive: ; 0xf3b7b LB 0x16
+ push bp ; 55 ; 0xf3b7b eltorito.c:167
+ mov bp, sp ; 89 e5 ; 0xf3b7c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b7e eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b81
+ mov es, ax ; 8e c0 ; 0xf3b84
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3b86
+ mov bx, 0031eh ; bb 1e 03 ; 0xf3b89 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3b8c
+ pop bp ; 5d ; 0xf3b8f eltorito.c:173
+ retn ; c3 ; 0xf3b90
+ ; disGetNextSymbol 0xf3b91 LB 0x7747 -> off=0x0 cb=0000000000000016 uValue=00000000000f2591 'cdemu_emulated_drive'
+cdemu_emulated_drive: ; 0xf3b91 LB 0x16
+ push bp ; 55 ; 0xf3b91 eltorito.c:175
+ mov bp, sp ; 89 e5 ; 0xf3b92
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b94 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b97
+ mov es, ax ; 8e c0 ; 0xf3b9a
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3b9c
+ mov bx, 00320h ; bb 20 03 ; 0xf3b9f eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3ba2
+ pop bp ; 5d ; 0xf3ba5 eltorito.c:181
+ retn ; c3 ; 0xf3ba6
+ ; disGetNextSymbol 0xf3ba7 LB 0x7731 -> off=0x0 cb=000000000000017b uValue=00000000000f25a7 'int13_eltorito'
+int13_eltorito: ; 0xf3ba7 LB 0x17b
+ push bp ; 55 ; 0xf3ba7 eltorito.c:187
+ mov bp, sp ; 89 e5 ; 0xf3ba8
+ push si ; 56 ; 0xf3baa
+ push di ; 57 ; 0xf3bab
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3bac eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3baf
+ mov es, ax ; 8e c0 ; 0xf3bb2
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf3bb4
+ mov bx, 0031eh ; bb 1e 03 ; 0xf3bb7 eltorito.c:193
+ mov si, word [bp+016h] ; 8b 76 16 ; 0xf3bba eltorito.c:199
+ shr si, 008h ; c1 ee 08 ; 0xf3bbd
+ cmp si, strict byte 0004bh ; 83 fe 4b ; 0xf3bc0
+ jc short 03bcfh ; 72 0a ; 0xf3bc3
+ jbe short 03bf6h ; 76 2f ; 0xf3bc5
+ cmp si, strict byte 0004dh ; 83 fe 4d ; 0xf3bc7
+ jbe short 03bd4h ; 76 08 ; 0xf3bca
+ jmp near 03ce8h ; e9 19 01 ; 0xf3bcc
+ cmp si, strict byte 0004ah ; 83 fe 4a ; 0xf3bcf
+ jne short 03bf3h ; 75 1f ; 0xf3bd2
+ mov bx, 00eeah ; bb ea 0e ; 0xf3bd4 eltorito.c:205
+ mov cx, ds ; 8c d9 ; 0xf3bd7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3bd9
+ call 018cbh ; e8 ec dc ; 0xf3bdc
+ push word [bp+016h] ; ff 76 16 ; 0xf3bdf
+ push 0030ch ; 68 0c 03 ; 0xf3be2
+ push 0031bh ; 68 1b 03 ; 0xf3be5
+ push strict byte 00004h ; 6a 04 ; 0xf3be8
+ call 0190eh ; e8 21 dd ; 0xf3bea
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3bed
+ jmp near 03d03h ; e9 10 01 ; 0xf3bf0 eltorito.c:206
+ jmp near 03ce8h ; e9 f2 00 ; 0xf3bf3
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf3bf6 eltorito.c:41
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bf9
+ mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3bfc
+ inc si ; 46 ; 0xf3c00 eltorito.c:213
+ mov ax, es ; 8c c0 ; 0xf3c01 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3c03
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3c05
+ mov es, ax ; 8e c0 ; 0xf3c09 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c0b
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c0e eltorito.c:214
+ inc si ; 46 ; 0xf3c11
+ inc si ; 46 ; 0xf3c12
+ mov es, di ; 8e c7 ; 0xf3c13 eltorito.c:41
+ mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3c15
+ mov es, ax ; 8e c0 ; 0xf3c19 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c1b
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c1e eltorito.c:215
+ add si, strict byte 00003h ; 83 c6 03 ; 0xf3c21
+ mov es, di ; 8e c7 ; 0xf3c24 eltorito.c:41
+ mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3c26
+ mov es, ax ; 8e c0 ; 0xf3c2a eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c2c
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c2f eltorito.c:216
+ add si, strict byte 00004h ; 83 c6 04 ; 0xf3c32
+ mov es, di ; 8e c7 ; 0xf3c35 eltorito.c:61
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3c37
+ mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3c3b
+ mov es, ax ; 8e c0 ; 0xf3c3f eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c41
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3c44
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c48 eltorito.c:217
+ add si, strict byte 00008h ; 83 c6 08 ; 0xf3c4b
+ mov es, di ; 8e c7 ; 0xf3c4e eltorito.c:51
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3c50
+ mov es, ax ; 8e c0 ; 0xf3c54 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c56
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c59 eltorito.c:218
+ add si, strict byte 0000ah ; 83 c6 0a ; 0xf3c5c
+ mov es, di ; 8e c7 ; 0xf3c5f eltorito.c:51
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3c61
+ mov es, ax ; 8e c0 ; 0xf3c65 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c67
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c6a eltorito.c:219
+ add si, strict byte 0000ch ; 83 c6 0c ; 0xf3c6d
+ mov es, di ; 8e c7 ; 0xf3c70 eltorito.c:51
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3c72
+ mov es, ax ; 8e c0 ; 0xf3c76 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c78
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c7b eltorito.c:220
+ add si, strict byte 0000eh ; 83 c6 0e ; 0xf3c7e
+ mov es, di ; 8e c7 ; 0xf3c81 eltorito.c:51
+ mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3c83
+ mov es, ax ; 8e c0 ; 0xf3c87 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c89
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c8c eltorito.c:221
+ add si, strict byte 00010h ; 83 c6 10 ; 0xf3c8f
+ mov es, di ; 8e c7 ; 0xf3c92 eltorito.c:41
+ mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3c94
+ mov es, ax ; 8e c0 ; 0xf3c98 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c9a
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c9d eltorito.c:222
+ add si, strict byte 00011h ; 83 c6 11 ; 0xf3ca0
+ mov es, di ; 8e c7 ; 0xf3ca3 eltorito.c:41
+ mov dl, byte [es:bx+014h] ; 26 8a 57 14 ; 0xf3ca5
+ mov es, ax ; 8e c0 ; 0xf3ca9 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3cab
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cae eltorito.c:223
+ add si, strict byte 00012h ; 83 c6 12 ; 0xf3cb1
+ mov dx, ax ; 89 c2 ; 0xf3cb4 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3cb6
+ mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3cb8
+ mov es, dx ; 8e c2 ; 0xf3cbc eltorito.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf3cbe
+ test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3cc1 eltorito.c:226
+ jne short 03ccdh ; 75 06 ; 0xf3cc5
+ mov es, di ; 8e c7 ; 0xf3cc7 eltorito.c:228
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3cc9
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3ccd eltorito.c:231
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3cd1
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3cd4
+ mov es, ax ; 8e c0 ; 0xf3cd7
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3cd9
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3cdd
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3ce1
+ pop di ; 5f ; 0xf3ce4
+ pop si ; 5e ; 0xf3ce5
+ pop bp ; 5d ; 0xf3ce6
+ retn ; c3 ; 0xf3ce7
+ mov bx, 00eeah ; bb ea 0e ; 0xf3ce8 eltorito.c:235
+ mov cx, ds ; 8c d9 ; 0xf3ceb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3ced
+ call 018cbh ; e8 d8 db ; 0xf3cf0
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf3cf3
+ shr bx, 008h ; c1 eb 08 ; 0xf3cf6
+ push bx ; 53 ; 0xf3cf9
+ push 0030ch ; 68 0c 03 ; 0xf3cfa
+ push 00343h ; 68 43 03 ; 0xf3cfd
+ jmp near 03be8h ; e9 e5 fe ; 0xf3d00
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3d03 eltorito.c:241
+ xor ah, ah ; 30 e4 ; 0xf3d06
+ or ah, 001h ; 80 cc 01 ; 0xf3d08
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3d0b
+ shr ax, 008h ; c1 e8 08 ; 0xf3d0e eltorito.c:242
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3d11 eltorito.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3d14
+ mov es, dx ; 8e c2 ; 0xf3d17
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3d19
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3d1c eltorito.c:243
+ jmp short 03ce1h ; eb bf ; 0xf3d20 eltorito.c:244
+ ; disGetNextSymbol 0xf3d22 LB 0x75b6 -> off=0x0 cb=0000000000000032 uValue=00000000000f2722 'device_is_cdrom'
+device_is_cdrom: ; 0xf3d22 LB 0x32
+ push bx ; 53 ; 0xf3d22 eltorito.c:259
+ push dx ; 52 ; 0xf3d23
+ push bp ; 55 ; 0xf3d24
+ mov bp, sp ; 89 e5 ; 0xf3d25
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d27 eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3d2a
+ mov es, dx ; 8e c2 ; 0xf3d2d
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf3d2f
+ cmp AL, strict byte 014h ; 3c 14 ; 0xf3d32 eltorito.c:265
+ jc short 03d3ah ; 72 04 ; 0xf3d34
+ xor ax, ax ; 31 c0 ; 0xf3d36 eltorito.c:266
+ jmp short 03d50h ; eb 16 ; 0xf3d38
+ xor ah, ah ; 30 e4 ; 0xf3d3a eltorito.c:271
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3d3c
+ mov es, bx ; 8e c3 ; 0xf3d3f
+ mov bx, ax ; 89 c3 ; 0xf3d41
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3d43
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf3d46
+ jne short 03d36h ; 75 e9 ; 0xf3d4b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3d4d eltorito.c:272
+ pop bp ; 5d ; 0xf3d50 eltorito.c:275
+ pop dx ; 5a ; 0xf3d51
+ pop bx ; 5b ; 0xf3d52
+ retn ; c3 ; 0xf3d53
+ ; disGetNextSymbol 0xf3d54 LB 0x7584 -> off=0x0 cb=00000000000003c1 uValue=00000000000f2754 'cdrom_boot'
+cdrom_boot: ; 0xf3d54 LB 0x3c1
+ push bp ; 55 ; 0xf3d54 eltorito.c:285
+ mov bp, sp ; 89 e5 ; 0xf3d55
+ push bx ; 53 ; 0xf3d57
+ push cx ; 51 ; 0xf3d58
+ push dx ; 52 ; 0xf3d59
+ push si ; 56 ; 0xf3d5a
+ push di ; 57 ; 0xf3d5b
+ sub sp, 0081ch ; 81 ec 1c 08 ; 0xf3d5c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d60 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3d63
+ mov es, ax ; 8e c0 ; 0xf3d66
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf3d68
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf3d6b eltorito.c:49
+ mov si, 0031eh ; be 1e 03 ; 0xf3d6e eltorito.c:298
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf3d71
+ mov word [bp-014h], strict word 0005eh ; c7 46 ec 5e 00 ; 0xf3d74 eltorito.c:299
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf3d79
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3d7c eltorito.c:302
+ jmp short 03d8bh ; eb 09 ; 0xf3d80
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf3d82 eltorito.c:305
+ cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf3d85
+ jnc short 03d97h ; 73 0c ; 0xf3d89
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3d8b
+ xor ah, ah ; 30 e4 ; 0xf3d8e
+ call 03d22h ; e8 8f ff ; 0xf3d90
+ test ax, ax ; 85 c0 ; 0xf3d93
+ je short 03d82h ; 74 eb ; 0xf3d95
+ cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf3d97 eltorito.c:308
+ jc short 03da3h ; 72 06 ; 0xf3d9b
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf3d9d eltorito.c:309
+ jmp near 0410bh ; e9 68 03 ; 0xf3da0
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3da3 eltorito.c:312
+ xor bx, bx ; 31 db ; 0xf3da6
+ mov dx, ss ; 8c d2 ; 0xf3da8
+ lea ax, [bp-026h] ; 8d 46 da ; 0xf3daa
+ call 0afb0h ; e8 00 72 ; 0xf3dad
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3db0 eltorito.c:313
+ mov ax, strict word 00011h ; b8 11 00 ; 0xf3db5 eltorito.c:314
+ xor dx, dx ; 31 d2 ; 0xf3db8
+ xchg ah, al ; 86 c4 ; 0xf3dba
+ xchg dh, dl ; 86 d6 ; 0xf3dbc
+ xchg dx, ax ; 92 ; 0xf3dbe
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3dbf
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3dc2
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3dc5 eltorito.c:315
+ xchg ah, al ; 86 c4 ; 0xf3dc8
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3dca
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf3dcd eltorito.c:317
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3dd0
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf3dd3
+ mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3dd9 eltorito.c:318
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3ddf eltorito.c:320
+ jmp short 03deeh ; eb 09 ; 0xf3de3
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf3de5 eltorito.c:325
+ cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf3de8
+ jnbe short 03e2ah ; 77 3c ; 0xf3dec
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3dee
+ xor ah, ah ; 30 e4 ; 0xf3df1
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3df3
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf3df6
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3df9
+ add bx, ax ; 01 c3 ; 0xf3dfc
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3dfe
+ xor ah, ah ; 30 e4 ; 0xf3e02
+ mov di, ax ; 89 c7 ; 0xf3e04
+ add di, ax ; 01 c7 ; 0xf3e06
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3e08
+ push SS ; 16 ; 0xf3e0c
+ push dx ; 52 ; 0xf3e0d
+ push strict byte 00001h ; 6a 01 ; 0xf3e0e
+ push strict byte 00000h ; 6a 00 ; 0xf3e10
+ push 00800h ; 68 00 08 ; 0xf3e12
+ push strict byte 00000h ; 6a 00 ; 0xf3e15
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e17
+ mov cx, ss ; 8c d1 ; 0xf3e1a
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3e1c
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3e1f
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3e22
+ test ax, ax ; 85 c0 ; 0xf3e26
+ jne short 03de5h ; 75 bb ; 0xf3e28
+ test ax, ax ; 85 c0 ; 0xf3e2a eltorito.c:326
+ je short 03e34h ; 74 06 ; 0xf3e2c
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf3e2e eltorito.c:327
+ jmp near 0410bh ; e9 d7 02 ; 0xf3e31
+ cmp byte [bp-00826h], 000h ; 80 be da f7 00 ; 0xf3e34 eltorito.c:330
+ je short 03e41h ; 74 06 ; 0xf3e39
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3e3b eltorito.c:331
+ jmp near 0410bh ; e9 ca 02 ; 0xf3e3e
+ xor di, di ; 31 ff ; 0xf3e41 eltorito.c:333
+ jmp short 03e4bh ; eb 06 ; 0xf3e43
+ inc di ; 47 ; 0xf3e45 eltorito.c:335
+ cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3e46
+ jnc short 03e5bh ; 73 10 ; 0xf3e49
+ mov al, byte [bp+di-00825h] ; 8a 83 db f7 ; 0xf3e4b
+ cmp al, byte [di+00ef2h] ; 3a 85 f2 0e ; 0xf3e4f
+ je short 03e45h ; 74 f0 ; 0xf3e53
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf3e55
+ jmp near 0410bh ; e9 b0 02 ; 0xf3e58
+ xor di, di ; 31 ff ; 0xf3e5b eltorito.c:337
+ jmp short 03e65h ; eb 06 ; 0xf3e5d
+ inc di ; 47 ; 0xf3e5f eltorito.c:339
+ cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3e60
+ jnc short 03e75h ; 73 10 ; 0xf3e63
+ mov al, byte [bp+di-0081fh] ; 8a 83 e1 f7 ; 0xf3e65
+ cmp al, byte [di+00ef8h] ; 3a 85 f8 0e ; 0xf3e69
+ je short 03e5fh ; 74 f0 ; 0xf3e6d
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf3e6f
+ jmp near 0410bh ; e9 96 02 ; 0xf3e72
+ mov ax, word [bp-007dfh] ; 8b 86 21 f8 ; 0xf3e75 eltorito.c:342
+ mov dx, word [bp-007ddh] ; 8b 96 23 f8 ; 0xf3e79
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3e7d eltorito.c:346
+ xchg ah, al ; 86 c4 ; 0xf3e82 eltorito.c:347
+ xchg dh, dl ; 86 d6 ; 0xf3e84
+ xchg dx, ax ; 92 ; 0xf3e86
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3e87
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3e8a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3e8d eltorito.c:348
+ xchg ah, al ; 86 c4 ; 0xf3e90
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3e92
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e95 eltorito.c:355
+ xor ah, ah ; 30 e4 ; 0xf3e98
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3e9a
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf3e9d
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3ea0
+ add bx, ax ; 01 c3 ; 0xf3ea3
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3ea5
+ xor ah, ah ; 30 e4 ; 0xf3ea9
+ mov di, ax ; 89 c7 ; 0xf3eab
+ add di, ax ; 01 c7 ; 0xf3ead
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3eaf
+ push SS ; 16 ; 0xf3eb3
+ push dx ; 52 ; 0xf3eb4
+ push strict byte 00001h ; 6a 01 ; 0xf3eb5
+ push strict byte 00000h ; 6a 00 ; 0xf3eb7
+ push 00800h ; 68 00 08 ; 0xf3eb9
+ push strict byte 00000h ; 6a 00 ; 0xf3ebc
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3ebe
+ mov cx, ss ; 8c d1 ; 0xf3ec1
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3ec3
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3ec6
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3ec9
+ test ax, ax ; 85 c0 ; 0xf3ecd eltorito.c:356
+ je short 03ed7h ; 74 06 ; 0xf3ecf
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf3ed1 eltorito.c:357
+ jmp near 0410bh ; e9 34 02 ; 0xf3ed4
+ cmp byte [bp-00826h], 001h ; 80 be da f7 01 ; 0xf3ed7 eltorito.c:362
+ je short 03ee4h ; 74 06 ; 0xf3edc
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf3ede eltorito.c:363
+ jmp near 0410bh ; e9 27 02 ; 0xf3ee1
+ cmp byte [bp-00825h], 000h ; 80 be db f7 00 ; 0xf3ee4 eltorito.c:364
+ je short 03ef1h ; 74 06 ; 0xf3ee9
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf3eeb eltorito.c:365
+ jmp near 0410bh ; e9 1a 02 ; 0xf3eee
+ cmp byte [bp-00808h], 055h ; 80 be f8 f7 55 ; 0xf3ef1 eltorito.c:366
+ je short 03efeh ; 74 06 ; 0xf3ef6
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf3ef8 eltorito.c:367
+ jmp near 0410bh ; e9 0d 02 ; 0xf3efb
+ cmp byte [bp-00807h], 0aah ; 80 be f9 f7 aa ; 0xf3efe eltorito.c:368
+ jne short 03ef8h ; 75 f3 ; 0xf3f03
+ cmp byte [bp-00806h], 088h ; 80 be fa f7 88 ; 0xf3f05 eltorito.c:369
+ je short 03f12h ; 74 06 ; 0xf3f0a
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf3f0c eltorito.c:373
+ jmp near 0410bh ; e9 f9 01 ; 0xf3f0f
+ mov al, byte [bp-00805h] ; 8a 86 fb f7 ; 0xf3f12 eltorito.c:375
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf3f16
+ mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf3f19
+ cmp byte [bp-00805h], 000h ; 80 be fb f7 00 ; 0xf3f1d eltorito.c:376
+ jne short 03f2bh ; 75 07 ; 0xf3f22
+ mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf3f24 eltorito.c:379
+ jmp short 03f3eh ; eb 13 ; 0xf3f29 eltorito.c:381
+ cmp byte [bp-00805h], 004h ; 80 be fb f7 04 ; 0xf3f2b
+ jnc short 03f39h ; 73 07 ; 0xf3f30
+ mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf3f32 eltorito.c:382
+ jmp short 03f3eh ; eb 05 ; 0xf3f37 eltorito.c:383
+ mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf3f39 eltorito.c:384
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf3f3e eltorito.c:386
+ xor bh, bh ; 30 ff ; 0xf3f41
+ mov ax, bx ; 89 d8 ; 0xf3f43
+ cwd ; 99 ; 0xf3f45
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf3f46
+ sar ax, 1 ; d1 f8 ; 0xf3f48
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf3f4a
+ mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf3f4d
+ mov ax, bx ; 89 d8 ; 0xf3f51 eltorito.c:387
+ cwd ; 99 ; 0xf3f53
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf3f54
+ idiv bx ; f7 fb ; 0xf3f57
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf3f59
+ mov ax, word [bp-00804h] ; 8b 86 fc f7 ; 0xf3f5d eltorito.c:389
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf3f61
+ test ax, ax ; 85 c0 ; 0xf3f64 eltorito.c:390
+ jne short 03f6dh ; 75 05 ; 0xf3f66
+ mov word [bp-016h], 007c0h ; c7 46 ea c0 07 ; 0xf3f68 eltorito.c:391
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf3f6d eltorito.c:393
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf3f70
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf3f73
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf3f77 eltorito.c:394
+ mov di, word [bp-00800h] ; 8b be 00 f8 ; 0xf3f7d eltorito.c:396
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf3f81 eltorito.c:397
+ test di, di ; 85 ff ; 0xf3f85 eltorito.c:402
+ je short 03f8fh ; 74 06 ; 0xf3f87
+ cmp di, 00400h ; 81 ff 00 04 ; 0xf3f89
+ jbe short 03f95h ; 76 06 ; 0xf3f8d
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf3f8f eltorito.c:403
+ jmp near 0410bh ; e9 76 01 ; 0xf3f92
+ mov ax, word [bp-007feh] ; 8b 86 02 f8 ; 0xf3f95 eltorito.c:405
+ mov dx, word [bp-007fch] ; 8b 96 04 f8 ; 0xf3f99
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf3f9d eltorito.c:406
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf3fa1
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3fa5 eltorito.c:412
+ xchg ah, al ; 86 c4 ; 0xf3faa eltorito.c:413
+ xchg dh, dl ; 86 d6 ; 0xf3fac
+ xchg dx, ax ; 92 ; 0xf3fae
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3faf
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3fb2
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf3fb5 eltorito.c:414
+ shr dx, 002h ; c1 ea 02 ; 0xf3fb8
+ inc dx ; 42 ; 0xf3fbb
+ mov ax, dx ; 89 d0 ; 0xf3fbc
+ xchg ah, al ; 86 c4 ; 0xf3fbe
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3fc0
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf3fc3 eltorito.c:416
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3fc6
+ mov word [es:bx+00eh], dx ; 26 89 57 0e ; 0xf3fc9
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf3fcd eltorito.c:417
+ mov ax, di ; 89 f8 ; 0xf3fd3 eltorito.c:419
+ sal ax, 009h ; c1 e0 09 ; 0xf3fd5
+ mov dx, 00800h ; ba 00 08 ; 0xf3fd8
+ sub dx, ax ; 29 c2 ; 0xf3fdb
+ mov ax, dx ; 89 d0 ; 0xf3fdd
+ and ah, 007h ; 80 e4 07 ; 0xf3fdf
+ mov word [es:bx+020h], ax ; 26 89 47 20 ; 0xf3fe2
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3fe6 eltorito.c:421
+ xor ah, ah ; 30 e4 ; 0xf3fe9
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3feb
+ add bx, ax ; 01 c3 ; 0xf3fee
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3ff0
+ xor ah, ah ; 30 e4 ; 0xf3ff4
+ add ax, ax ; 01 c0 ; 0xf3ff6
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf3ff8
+ push word [bp-016h] ; ff 76 ea ; 0xf3ffb
+ push strict byte 00000h ; 6a 00 ; 0xf3ffe
+ push strict byte 00001h ; 6a 01 ; 0xf4000
+ mov ax, di ; 89 f8 ; 0xf4002
+ xor di, di ; 31 ff ; 0xf4004
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4006
+ sal ax, 1 ; d1 e0 ; 0xf4009
+ rcl di, 1 ; d1 d7 ; 0xf400b
+ loop 04009h ; e2 fa ; 0xf400d
+ push di ; 57 ; 0xf400f
+ push ax ; 50 ; 0xf4010
+ push strict byte 00000h ; 6a 00 ; 0xf4011
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4013
+ xor ah, ah ; 30 e4 ; 0xf4016
+ mov cx, ss ; 8c d1 ; 0xf4018
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf401a
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf401d
+ mov di, word [bp-01ah] ; 8b 7e e6 ; 0xf4020
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4023
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4027 eltorito.c:423
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf402a
+ mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf402d
+ test ax, ax ; 85 c0 ; 0xf4033 eltorito.c:425
+ je short 0403dh ; 74 06 ; 0xf4035
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf4037 eltorito.c:426
+ jmp near 0410bh ; e9 ce 00 ; 0xf403a
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf403d eltorito.c:431
+ mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf4040
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf4044
+ jc short 04054h ; 72 0c ; 0xf4046
+ jbe short 0406fh ; 76 25 ; 0xf4048
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf404a
+ je short 0407fh ; 74 31 ; 0xf404c
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf404e
+ je short 04077h ; 74 25 ; 0xf4050
+ jmp short 040c3h ; eb 6f ; 0xf4052
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf4054
+ jne short 040c3h ; 75 6b ; 0xf4056
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4058 eltorito.c:433
+ mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00 ; 0xf405b
+ mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00 ; 0xf4061 eltorito.c:434
+ mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf4067 eltorito.c:435
+ jmp short 040c3h ; eb 54 ; 0xf406d eltorito.c:436
+ mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00 ; 0xf406f eltorito.c:438
+ jmp short 04061h ; eb ea ; 0xf4075
+ mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00 ; 0xf4077 eltorito.c:443
+ jmp short 04061h ; eb e2 ; 0xf407d
+ mov bx, 001c4h ; bb c4 01 ; 0xf407f eltorito.c:38
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf4082
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4085
+ and AL, strict byte 03fh ; 24 3f ; 0xf4088 eltorito.c:39
+ xor ah, ah ; 30 e4 ; 0xf408a
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf408c
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf408f
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf4093 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4096
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf4099 eltorito.c:39
+ mov dx, ax ; 89 c2 ; 0xf409b
+ sal dx, 002h ; c1 e2 02 ; 0xf409d
+ mov bx, 001c5h ; bb c5 01 ; 0xf40a0 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf40a3
+ add ax, dx ; 01 d0 ; 0xf40a6 eltorito.c:39
+ inc ax ; 40 ; 0xf40a8
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf40a9
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf40ac
+ mov bx, 001c3h ; bb c3 01 ; 0xf40b0 eltorito.c:38
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf40b3
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf40b6
+ xor ah, ah ; 30 e4 ; 0xf40b9 eltorito.c:39
+ inc ax ; 40 ; 0xf40bb
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf40bc
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf40bf
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf40c3 eltorito.c:456
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf40c6
+ je short 040f1h ; 74 24 ; 0xf40cb
+ cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf40cd eltorito.c:458
+ jne short 040e3h ; 75 0f ; 0xf40d2
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf40d4 eltorito.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf40d7
+ mov es, ax ; 8e c0 ; 0xf40da
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf40dc
+ or AL, strict byte 041h ; 0c 41 ; 0xf40df eltorito.c:39
+ jmp short 040eeh ; eb 0b ; 0xf40e1 eltorito.c:460
+ mov bx, 002b0h ; bb b0 02 ; 0xf40e3 eltorito.c:38
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf40e6
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf40e9
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf40ec eltorito.c:39
+ mov byte [es:bx], al ; 26 88 07 ; 0xf40ee eltorito.c:43
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf40f1 eltorito.c:465
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf40f4
+ je short 040ffh ; 74 04 ; 0xf40f9
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf40fb eltorito.c:466
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf40ff eltorito.c:469
+ mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf4102
+ xor ah, ah ; 30 e4 ; 0xf4106
+ sal ax, 008h ; c1 e0 08 ; 0xf4108
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf410b eltorito.c:470
+ pop di ; 5f ; 0xf410e
+ pop si ; 5e ; 0xf410f
+ pop dx ; 5a ; 0xf4110
+ pop cx ; 59 ; 0xf4111
+ pop bx ; 5b ; 0xf4112
+ pop bp ; 5d ; 0xf4113
+ retn ; c3 ; 0xf4114
+ ; disGetNextSymbol 0xf4115 LB 0x71c3 -> off=0x59 cb=00000000000005e8 uValue=00000000000f2b6e '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, 039h, 047h, 018h
+ db 042h, 04bh, 042h, 073h, 042h, 040h, 042h, 073h, 042h, 040h, 042h, 08eh, 044h, 073h, 044h, 039h
+ db 047h, 039h, 047h, 073h, 044h, 073h, 044h, 073h, 044h, 073h, 044h, 073h, 044h, 035h, 045h, 073h
+ db 044h, 039h, 047h, 03eh, 045h, 051h, 045h, 039h, 047h, 051h, 045h, 039h, 047h, 039h, 047h, 051h
+ db 045h, 0feh, 046h, 039h, 047h, 039h, 047h, 039h, 047h
+int13_cdemu: ; 0xf416e LB 0x5e8
+ push bp ; 55 ; 0xf416e eltorito.c:480
+ mov bp, sp ; 89 e5 ; 0xf416f
+ push si ; 56 ; 0xf4171
+ push di ; 57 ; 0xf4172
+ sub sp, strict byte 00038h ; 83 ec 38 ; 0xf4173
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4176 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4179
+ mov es, ax ; 8e c0 ; 0xf417c
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf417e
+ mov dx, 0031eh ; ba 1e 03 ; 0xf4181 eltorito.c:496
+ mov cx, ax ; 89 c1 ; 0xf4184
+ mov bx, dx ; 89 d3 ; 0xf4186
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4188
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf418b eltorito.c:497
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf418e
+ mov es, ax ; 8e c0 ; 0xf4191 eltorito.c:504
+ mov di, dx ; 89 d7 ; 0xf4193
+ mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf4195
+ add al, al ; 00 c0 ; 0xf4199
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf419b
+ mov al, byte [es:di+004h] ; 26 8a 45 04 ; 0xf419e eltorito.c:505
+ add byte [bp-006h], al ; 00 46 fa ; 0xf41a2
+ mov di, strict word 00074h ; bf 74 00 ; 0xf41a5 eltorito.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf41a8
+ mov es, ax ; 8e c0 ; 0xf41ab
+ mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf41ad
+ mov es, cx ; 8e c1 ; 0xf41b1 eltorito.c:510
+ mov di, dx ; 89 d7 ; 0xf41b3
+ cmp byte [es:di], 000h ; 26 80 3d 00 ; 0xf41b5
+ je short 041cah ; 74 0f ; 0xf41b9
+ mov al, byte [es:di+002h] ; 26 8a 45 02 ; 0xf41bb
+ xor ah, ah ; 30 e4 ; 0xf41bf
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf41c1
+ xor dh, dh ; 30 f6 ; 0xf41c4
+ cmp ax, dx ; 39 d0 ; 0xf41c6
+ je short 041f3h ; 74 29 ; 0xf41c8
+ mov bx, 00eeah ; bb ea 0e ; 0xf41ca eltorito.c:511
+ mov cx, ds ; 8c d9 ; 0xf41cd
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf41cf
+ call 018cbh ; e8 f6 d6 ; 0xf41d2
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf41d5
+ xor ah, ah ; 30 e4 ; 0xf41d8
+ push ax ; 50 ; 0xf41da
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf41db
+ shr ax, 008h ; c1 e8 08 ; 0xf41de
+ push ax ; 50 ; 0xf41e1
+ push 0035ch ; 68 5c 03 ; 0xf41e2
+ push 00368h ; 68 68 03 ; 0xf41e5
+ push strict byte 00004h ; 6a 04 ; 0xf41e8
+ call 0190eh ; e8 21 d7 ; 0xf41ea
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf41ed
+ jmp near 04716h ; e9 23 05 ; 0xf41f0 eltorito.c:512
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf41f3 eltorito.c:515
+ shr ax, 008h ; c1 e8 08 ; 0xf41f6
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf41f9
+ jnbe short 04270h ; 77 72 ; 0xf41fc
+ push CS ; 0e ; 0xf41fe
+ pop ES ; 07 ; 0xf41ff
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4200
+ mov di, 04115h ; bf 15 41 ; 0xf4203
+ repne scasb ; f2 ae ; 0xf4206
+ sal cx, 1 ; d1 e1 ; 0xf4208
+ mov di, cx ; 89 cf ; 0xf420a
+ mov ax, word [cs:di+04132h] ; 2e 8b 85 32 41 ; 0xf420c
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf4211
+ xor dh, dh ; 30 f6 ; 0xf4214
+ jmp ax ; ff e0 ; 0xf4216
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4218 eltorito.c:518
+ xor ah, ah ; 30 e4 ; 0xf421b
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf421d
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4220
+ add si, ax ; 01 c6 ; 0xf4223
+ mov bl, byte [es:si+022h] ; 26 8a 5c 22 ; 0xf4225
+ xor bh, bh ; 30 ff ; 0xf4229
+ add bx, bx ; 01 db ; 0xf422b
+ cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf422d
+ je short 0423dh ; 74 09 ; 0xf4232
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4234 eltorito.c:520
+ xor ah, ah ; 30 e4 ; 0xf4237
+ call word [word bx+00078h] ; ff 97 78 00 ; 0xf4239
+ jmp near 04473h ; e9 33 02 ; 0xf423d eltorito.c:522
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4240 eltorito.c:538
+ xor ah, ah ; 30 e4 ; 0xf4243
+ or ah, 003h ; 80 cc 03 ; 0xf4245
+ jmp near 0471eh ; e9 d3 04 ; 0xf4248 eltorito.c:539
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf424b eltorito.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf424e
+ mov es, ax ; 8e c0 ; 0xf4251
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4253
+ mov bl, al ; 88 c3 ; 0xf4256 eltorito.c:544
+ xor bh, bh ; 30 ff ; 0xf4258
+ sal bx, 008h ; c1 e3 08 ; 0xf425a
+ or dx, bx ; 09 da ; 0xf425d
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf425f
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4262 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4265
+ test al, al ; 84 c0 ; 0xf4269 eltorito.c:548
+ je short 042d1h ; 74 64 ; 0xf426b
+ jmp near 04732h ; e9 c2 04 ; 0xf426d eltorito.c:549
+ jmp near 04739h ; e9 c6 04 ; 0xf4270
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4273 eltorito.c:556
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4276
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf427a
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf427d eltorito.c:557
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf4281 eltorito.c:558
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4285
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf4288 eltorito.c:559
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf428c
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf428f
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf4293
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf4296 eltorito.c:561
+ and ax, strict word 0003fh ; 25 3f 00 ; 0xf4299
+ mov word [bp-022h], ax ; 89 46 de ; 0xf429c
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf429f eltorito.c:562
+ and bx, 000c0h ; 81 e3 c0 00 ; 0xf42a2
+ sal bx, 002h ; c1 e3 02 ; 0xf42a6
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf42a9
+ shr ax, 008h ; c1 e8 08 ; 0xf42ac
+ or ax, bx ; 09 d8 ; 0xf42af
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf42b1 eltorito.c:563
+ shr bx, 008h ; c1 eb 08 ; 0xf42b4
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf42b7
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf42ba eltorito.c:564
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf42bd
+ je short 042eah ; 74 27 ; 0xf42c1 eltorito.c:572
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf42c3 eltorito.c:576
+ cmp bx, word [bp-00eh] ; 3b 5e f2 ; 0xf42c6
+ jnbe short 042dch ; 77 11 ; 0xf42c9
+ cmp ax, dx ; 39 d0 ; 0xf42cb
+ jc short 042d4h ; 72 05 ; 0xf42cd
+ jmp short 042dch ; eb 0b ; 0xf42cf
+ jmp near 04477h ; e9 a3 01 ; 0xf42d1
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf42d4
+ cmp dx, word [bp-00ch] ; 3b 56 f4 ; 0xf42d7
+ jc short 042dfh ; 72 03 ; 0xf42da
+ jmp near 04716h ; e9 37 04 ; 0xf42dc eltorito.c:579
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf42df eltorito.c:583
+ shr dx, 008h ; c1 ea 08 ; 0xf42e2
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf42e5
+ jne short 042edh ; 75 03 ; 0xf42e8
+ jmp near 04473h ; e9 86 01 ; 0xf42ea eltorito.c:584
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf42ed eltorito.c:586
+ shr dx, 004h ; c1 ea 04 ; 0xf42f0
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf42f3
+ add bx, dx ; 01 d3 ; 0xf42f6
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf42f8
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf42fb eltorito.c:587
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf42fe
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf4301
+ xor dl, dl ; 30 d2 ; 0xf4304 eltorito.c:590
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf4306
+ xor cx, cx ; 31 c9 ; 0xf4309
+ call 0af40h ; e8 32 6c ; 0xf430b
+ xor bx, bx ; 31 db ; 0xf430e
+ add ax, word [bp-012h] ; 03 46 ee ; 0xf4310
+ adc dx, bx ; 11 da ; 0xf4313
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf4315
+ xor cx, cx ; 31 c9 ; 0xf4318
+ call 0af40h ; e8 23 6c ; 0xf431a
+ mov bx, dx ; 89 d3 ; 0xf431d
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf431f
+ dec dx ; 4a ; 0xf4322
+ mov word [bp-024h], strict word 00000h ; c7 46 dc 00 00 ; 0xf4323
+ add dx, ax ; 01 c2 ; 0xf4328
+ adc bx, word [bp-024h] ; 13 5e dc ; 0xf432a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf432d eltorito.c:593
+ xor al, al ; 30 c0 ; 0xf4330
+ or ax, di ; 09 f8 ; 0xf4332
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4334
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf4337 eltorito.c:596
+ mov word [bp-02eh], bx ; 89 5e d2 ; 0xf433a
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf433d
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf4340
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf4343
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf4346
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf4349
+ mov word [bp-026h], ax ; 89 46 da ; 0xf434c
+ mov ax, dx ; 89 d0 ; 0xf434f eltorito.c:597
+ xor ah, dh ; 30 f4 ; 0xf4351
+ and AL, strict byte 003h ; 24 03 ; 0xf4353
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf4355
+ xor cx, cx ; 31 c9 ; 0xf4358 eltorito.c:600
+ mov ax, dx ; 89 d0 ; 0xf435a
+ add ax, di ; 01 f8 ; 0xf435c
+ mov dx, bx ; 89 da ; 0xf435e
+ adc dx, cx ; 11 ca ; 0xf4360
+ mov bx, ax ; 89 c3 ; 0xf4362
+ add bx, strict byte 0ffffh ; 83 c3 ff ; 0xf4364
+ mov ax, dx ; 89 d0 ; 0xf4367
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf4369
+ mov word [bp-02ch], bx ; 89 5e d4 ; 0xf436c
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf436f
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf4372
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf4375
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf4378
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf437b
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf437e eltorito.c:602
+ xor bx, bx ; 31 db ; 0xf4381
+ mov dx, ss ; 8c d2 ; 0xf4383
+ lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf4385
+ call 0afb0h ; e8 25 6c ; 0xf4388
+ mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf438b eltorito.c:603
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf4390 eltorito.c:604
+ add ax, word [bp-030h] ; 03 46 d0 ; 0xf4393
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf4396
+ adc dx, word [bp-026h] ; 13 56 da ; 0xf4399
+ xchg ah, al ; 86 c4 ; 0xf439c
+ xchg dh, dl ; 86 d6 ; 0xf439e
+ xchg dx, ax ; 92 ; 0xf43a0
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf43a1
+ mov word [bp-038h], dx ; 89 56 c8 ; 0xf43a4
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf43a7 eltorito.c:605
+ sub ax, word [bp-030h] ; 2b 46 d0 ; 0xf43aa
+ inc ax ; 40 ; 0xf43ad
+ xchg ah, al ; 86 c4 ; 0xf43ae
+ mov word [bp-035h], ax ; 89 46 cb ; 0xf43b0
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf43b3 eltorito.c:607
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf43b6
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf43ba eltorito.c:608
+ mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf43c0 eltorito.c:610
+ sal dx, 009h ; c1 e2 09 ; 0xf43c3
+ mov word [es:si+01eh], dx ; 26 89 54 1e ; 0xf43c6
+ mov ax, di ; 89 f8 ; 0xf43ca eltorito.c:611
+ xor ah, ah ; 30 e4 ; 0xf43cc
+ and AL, strict byte 003h ; 24 03 ; 0xf43ce
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf43d0
+ sub bx, ax ; 29 c3 ; 0xf43d3
+ mov ax, bx ; 89 d8 ; 0xf43d5
+ sub ax, word [bp-028h] ; 2b 46 d8 ; 0xf43d7
+ sal ax, 009h ; c1 e0 09 ; 0xf43da
+ and ah, 007h ; 80 e4 07 ; 0xf43dd
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf43e0
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43e4 eltorito.c:613
+ xor ah, ah ; 30 e4 ; 0xf43e7
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf43e9
+ mov bx, si ; 89 f3 ; 0xf43ec
+ add bx, ax ; 01 c3 ; 0xf43ee
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf43f0
+ xor ah, ah ; 30 e4 ; 0xf43f4
+ add ax, ax ; 01 c0 ; 0xf43f6
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf43f8
+ push word [bp-014h] ; ff 76 ec ; 0xf43fb
+ push word [bp-016h] ; ff 76 ea ; 0xf43fe
+ push strict byte 00001h ; 6a 01 ; 0xf4401
+ mov bx, di ; 89 fb ; 0xf4403
+ xor di, di ; 31 ff ; 0xf4405
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4407
+ sal bx, 1 ; d1 e3 ; 0xf440a
+ rcl di, 1 ; d1 d7 ; 0xf440c
+ loop 0440ah ; e2 fa ; 0xf440e
+ push di ; 57 ; 0xf4410
+ push bx ; 53 ; 0xf4411
+ push dx ; 52 ; 0xf4412
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4413
+ xor ah, ah ; 30 e4 ; 0xf4416
+ mov cx, ss ; 8c d1 ; 0xf4418
+ lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf441a
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf441d
+ mov di, word [bp-024h] ; 8b 7e dc ; 0xf4420
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4423
+ mov dx, ax ; 89 c2 ; 0xf4427
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4429 eltorito.c:615
+ mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf442c
+ mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf4432 eltorito.c:616
+ test al, al ; 84 c0 ; 0xf4438 eltorito.c:618
+ je short 04473h ; 74 37 ; 0xf443a
+ mov bx, 00eeah ; bb ea 0e ; 0xf443c eltorito.c:619
+ mov cx, ds ; 8c d9 ; 0xf443f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4441
+ call 018cbh ; e8 84 d4 ; 0xf4444
+ mov al, dl ; 88 d0 ; 0xf4447
+ xor ah, ah ; 30 e4 ; 0xf4449
+ push ax ; 50 ; 0xf444b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf444c
+ shr ax, 008h ; c1 e8 08 ; 0xf444f
+ push ax ; 50 ; 0xf4452
+ push 0035ch ; 68 5c 03 ; 0xf4453
+ push 0039eh ; 68 9e 03 ; 0xf4456
+ push strict byte 00004h ; 6a 04 ; 0xf4459
+ call 0190eh ; e8 b0 d4 ; 0xf445b
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf445e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4461 eltorito.c:620
+ xor ah, ah ; 30 e4 ; 0xf4464
+ or ah, 002h ; 80 cc 02 ; 0xf4466
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4469
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf446c eltorito.c:621
+ jmp near 04721h ; e9 ae 02 ; 0xf4470 eltorito.c:622
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf4473
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4477
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf447a
+ mov es, ax ; 8e c0 ; 0xf447d
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf447f
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf4483
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4487
+ pop di ; 5f ; 0xf448a
+ pop si ; 5e ; 0xf448b
+ pop bp ; 5d ; 0xf448c
+ retn ; c3 ; 0xf448d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf448e eltorito.c:629
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4491
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4495
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf4498 eltorito.c:630
+ dec dx ; 4a ; 0xf449c
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf449d eltorito.c:631
+ dec ax ; 48 ; 0xf44a1
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf44a2
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf44a5 eltorito.c:633
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf44a9 eltorito.c:634
+ xor al, al ; 30 c0 ; 0xf44ac
+ mov si, word [bp+014h] ; 8b 76 14 ; 0xf44ae eltorito.c:635
+ and si, 000ffh ; 81 e6 ff 00 ; 0xf44b1
+ mov cx, dx ; 89 d1 ; 0xf44b5
+ xor ch, dh ; 30 f5 ; 0xf44b7
+ sal cx, 008h ; c1 e1 08 ; 0xf44b9
+ or si, cx ; 09 ce ; 0xf44bc
+ mov word [bp+014h], si ; 89 76 14 ; 0xf44be
+ mov cx, dx ; 89 d1 ; 0xf44c1 eltorito.c:636
+ shr cx, 002h ; c1 e9 02 ; 0xf44c3
+ and cl, 0c0h ; 80 e1 c0 ; 0xf44c6
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf44c9
+ and dl, 03fh ; 80 e2 3f ; 0xf44cc
+ or cl, dl ; 08 d1 ; 0xf44cf
+ mov dx, si ; 89 f2 ; 0xf44d1
+ mov dl, cl ; 88 ca ; 0xf44d3
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf44d5
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf44d8 eltorito.c:637
+ xor ch, ch ; 30 ed ; 0xf44db
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf44dd
+ sal dx, 008h ; c1 e2 08 ; 0xf44e0
+ or cx, dx ; 09 d1 ; 0xf44e3
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf44e5
+ mov dx, cx ; 89 ca ; 0xf44e8 eltorito.c:638
+ xor dl, cl ; 30 ca ; 0xf44ea
+ or dl, 002h ; 80 ca 02 ; 0xf44ec
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf44ef
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf44f2 eltorito.c:641
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf44f6
+ cmp dl, 003h ; 80 fa 03 ; 0xf44f9
+ je short 04518h ; 74 1a ; 0xf44fc
+ cmp dl, 002h ; 80 fa 02 ; 0xf44fe
+ je short 04514h ; 74 11 ; 0xf4501
+ cmp dl, 001h ; 80 fa 01 ; 0xf4503
+ jne short 0451ch ; 75 14 ; 0xf4506
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4508 eltorito.c:642
+ xor al, al ; 30 c0 ; 0xf450b
+ or AL, strict byte 002h ; 0c 02 ; 0xf450d
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf450f
+ jmp short 0451ch ; eb 08 ; 0xf4512
+ or AL, strict byte 004h ; 0c 04 ; 0xf4514 eltorito.c:643
+ jmp short 0450fh ; eb f7 ; 0xf4516
+ or AL, strict byte 005h ; 0c 05 ; 0xf4518 eltorito.c:644
+ jmp short 0450fh ; eb f3 ; 0xf451a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf451c eltorito.c:648
+ cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf451f
+ jc short 04529h ; 72 03 ; 0xf4524
+ jmp near 04473h ; e9 4a ff ; 0xf4526
+ mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf4529 eltorito.c:649
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf452e eltorito.c:650
+ jmp short 04526h ; eb f1 ; 0xf4533 eltorito.c:652
+ or dh, 003h ; 80 ce 03 ; 0xf4535 eltorito.c:657
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf4538
+ jmp near 04477h ; e9 39 ff ; 0xf453b eltorito.c:658
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf453e eltorito.c:662
+ or dh, 030h ; 80 ce 30 ; 0xf4543 eltorito.c:663
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf4546
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf4549 eltorito.c:664
+ jmp near 04477h ; e9 26 ff ; 0xf454e eltorito.c:665
+ mov di, word [bp+00ah] ; 8b 7e 0a ; 0xf4551 eltorito.c:673
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf4554
+ mov word [bp-01ah], di ; 89 7e e6 ; 0xf4557
+ mov [bp-018h], es ; 8c 46 e8 ; 0xf455a
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf455d eltorito.c:675
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf4561
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf4564 eltorito.c:676
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf4568
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf456b eltorito.c:677
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf456f
+ mov ax, word [es:di+00ch] ; 26 8b 45 0c ; 0xf4572 eltorito.c:680
+ mov dx, word [es:di+00eh] ; 26 8b 55 0e ; 0xf4576
+ or ax, dx ; 09 d0 ; 0xf457a eltorito.c:681
+ je short 04596h ; 74 18 ; 0xf457c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf457e eltorito.c:682
+ shr ax, 008h ; c1 e8 08 ; 0xf4581
+ push ax ; 50 ; 0xf4584
+ push 0035ch ; 68 5c 03 ; 0xf4585
+ push 003bfh ; 68 bf 03 ; 0xf4588
+ push strict byte 00007h ; 6a 07 ; 0xf458b
+ call 0190eh ; e8 7e d3 ; 0xf458d
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4590
+ jmp near 04716h ; e9 80 01 ; 0xf4593 eltorito.c:683
+ les di, [bp-01ah] ; c4 7e e6 ; 0xf4596 eltorito.c:687
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf4599
+ mov dx, word [es:di+00ah] ; 26 8b 55 0a ; 0xf459d
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf45a1 eltorito.c:690
+ shr cx, 008h ; c1 e9 08 ; 0xf45a4
+ mov word [bp-01eh], cx ; 89 4e e2 ; 0xf45a7
+ cmp cx, strict byte 00044h ; 83 f9 44 ; 0xf45aa
+ jne short 045b2h ; 75 03 ; 0xf45ad
+ jmp near 04473h ; e9 c1 fe ; 0xf45af
+ cmp cx, strict byte 00047h ; 83 f9 47 ; 0xf45b2
+ jne short 045b9h ; 75 02 ; 0xf45b5
+ jmp short 045afh ; eb f6 ; 0xf45b7 eltorito.c:691
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf45b9 eltorito.c:698
+ mov cx, word [es:bx+008h] ; 26 8b 4f 08 ; 0xf45bc
+ mov word [bp-01ch], cx ; 89 4e e4 ; 0xf45c0
+ mov bx, word [es:bx+00ah] ; 26 8b 5f 0a ; 0xf45c3
+ mov word [bp-020h], bx ; 89 5e e0 ; 0xf45c7
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf45ca eltorito.c:701
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf45cd
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf45d0
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf45d3
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf45d6
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf45d9
+ mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xf45dc
+ mov word [bp-026h], bx ; 89 5e da ; 0xf45df
+ mov di, ax ; 89 c7 ; 0xf45e2 eltorito.c:702
+ and di, strict byte 00003h ; 83 e7 03 ; 0xf45e4
+ xor bx, bx ; 31 db ; 0xf45e7 eltorito.c:705
+ add ax, word [bp-010h] ; 03 46 f0 ; 0xf45e9
+ adc dx, bx ; 11 da ; 0xf45ec
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf45ee
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf45f1
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf45f4
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf45f7
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf45fa
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf45fd
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf4600
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf4603
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf4606 eltorito.c:707
+ mov dx, ss ; 8c d2 ; 0xf4609
+ lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf460b
+ call 0afb0h ; e8 9f 69 ; 0xf460e
+ mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf4611 eltorito.c:708
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf4616 eltorito.c:709
+ add ax, word [bp-02ch] ; 03 46 d4 ; 0xf4619
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf461c
+ adc dx, word [bp-026h] ; 13 56 da ; 0xf461f
+ xchg ah, al ; 86 c4 ; 0xf4622
+ xchg dh, dl ; 86 d6 ; 0xf4624
+ xchg dx, ax ; 92 ; 0xf4626
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf4627
+ mov word [bp-038h], dx ; 89 56 c8 ; 0xf462a
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf462d eltorito.c:710
+ sub ax, word [bp-02ch] ; 2b 46 d4 ; 0xf4630
+ inc ax ; 40 ; 0xf4633
+ xchg ah, al ; 86 c4 ; 0xf4634
+ mov word [bp-035h], ax ; 89 46 cb ; 0xf4636
+ mov dx, di ; 89 fa ; 0xf4639 eltorito.c:712
+ sal dx, 009h ; c1 e2 09 ; 0xf463b
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf463e
+ mov word [es:si+01eh], dx ; 26 89 54 1e ; 0xf4641
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf4645 eltorito.c:713
+ xor ah, ah ; 30 e4 ; 0xf4648
+ and AL, strict byte 003h ; 24 03 ; 0xf464a
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf464c
+ sub bx, ax ; 29 c3 ; 0xf464f
+ mov ax, bx ; 89 d8 ; 0xf4651
+ sub ax, di ; 29 f8 ; 0xf4653
+ sal ax, 009h ; c1 e0 09 ; 0xf4655
+ and ah, 007h ; 80 e4 07 ; 0xf4658
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf465b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf465f eltorito.c:715
+ xor ah, ah ; 30 e4 ; 0xf4662
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4664
+ mov bx, si ; 89 f3 ; 0xf4667
+ add bx, ax ; 01 c3 ; 0xf4669
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf466b
+ xor ah, ah ; 30 e4 ; 0xf466f
+ add ax, ax ; 01 c0 ; 0xf4671
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf4673
+ push word [bp-014h] ; ff 76 ec ; 0xf4676
+ push word [bp-016h] ; ff 76 ea ; 0xf4679
+ push strict byte 00001h ; 6a 01 ; 0xf467c
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf467e
+ xor di, di ; 31 ff ; 0xf4681
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4683
+ sal bx, 1 ; d1 e3 ; 0xf4686
+ rcl di, 1 ; d1 d7 ; 0xf4688
+ loop 04686h ; e2 fa ; 0xf468a
+ push di ; 57 ; 0xf468c
+ push bx ; 53 ; 0xf468d
+ push dx ; 52 ; 0xf468e
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf468f
+ xor ah, ah ; 30 e4 ; 0xf4692
+ mov cx, ss ; 8c d1 ; 0xf4694
+ lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf4696
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4699
+ mov di, word [bp-024h] ; 8b 7e dc ; 0xf469c
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf469f
+ mov dx, ax ; 89 c2 ; 0xf46a3
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf46a5 eltorito.c:717
+ mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf46a8
+ mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf46ae eltorito.c:718
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf46b4 eltorito.c:720
+ mov di, word [es:si+01ch] ; 26 8b 7c 1c ; 0xf46b8
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf46bc
+ shr di, 1 ; d1 ef ; 0xf46bf
+ rcr bx, 1 ; d1 db ; 0xf46c1
+ loop 046bfh ; e2 fa ; 0xf46c3
+ les si, [bp-01ah] ; c4 76 e6 ; 0xf46c5 eltorito.c:721
+ mov word [es:si+002h], bx ; 26 89 5c 02 ; 0xf46c8
+ test al, al ; 84 c0 ; 0xf46cc eltorito.c:723
+ jne short 046d3h ; 75 03 ; 0xf46ce
+ jmp near 04473h ; e9 a0 fd ; 0xf46d0
+ mov bx, 00eeah ; bb ea 0e ; 0xf46d3 eltorito.c:724
+ mov cx, ds ; 8c d9 ; 0xf46d6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf46d8
+ call 018cbh ; e8 ed d1 ; 0xf46db
+ mov al, dl ; 88 d0 ; 0xf46de
+ xor ah, ah ; 30 e4 ; 0xf46e0
+ push ax ; 50 ; 0xf46e2
+ push word [bp-01eh] ; ff 76 e2 ; 0xf46e3
+ push 0035ch ; 68 5c 03 ; 0xf46e6
+ push 003e8h ; 68 e8 03 ; 0xf46e9
+ push strict byte 00004h ; 6a 04 ; 0xf46ec
+ call 0190eh ; e8 1d d2 ; 0xf46ee
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf46f1
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf46f4 eltorito.c:725
+ xor ah, ah ; 30 e4 ; 0xf46f7
+ or ah, 00ch ; 80 cc 0c ; 0xf46f9
+ jmp short 0471eh ; eb 20 ; 0xf46fc
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf46fe eltorito.c:733
+ xor ah, ah ; 30 e4 ; 0xf4701
+ push ax ; 50 ; 0xf4703
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf4704
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf4707
+ mov bx, si ; 89 f3 ; 0xf470a
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf470c
+ call 05986h ; e8 74 12 ; 0xf470f
+ test ax, ax ; 85 c0 ; 0xf4712
+ je short 046d0h ; 74 ba ; 0xf4714
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4716 eltorito.c:734
+ xor ah, ah ; 30 e4 ; 0xf4719
+ or ah, 001h ; 80 cc 01 ; 0xf471b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf471e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4721
+ shr ax, 008h ; c1 e8 08 ; 0xf4724
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4727
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf472a
+ mov es, dx ; 8e c2 ; 0xf472d
+ mov byte [es:bx], al ; 26 88 07 ; 0xf472f
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf4732
+ jmp near 04487h ; e9 4e fd ; 0xf4736
+ mov bx, 00eeah ; bb ea 0e ; 0xf4739 eltorito.c:750
+ mov cx, ds ; 8c d9 ; 0xf473c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf473e
+ call 018cbh ; e8 87 d1 ; 0xf4741
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4744
+ shr ax, 008h ; c1 e8 08 ; 0xf4747
+ push ax ; 50 ; 0xf474a
+ push 0035ch ; 68 5c 03 ; 0xf474b
+ push 0040ah ; 68 0a 04 ; 0xf474e
+ push strict byte 00004h ; 6a 04 ; 0xf4751
+ jmp near 0458dh ; e9 37 fe ; 0xf4753
+ ; disGetNextSymbol 0xf4756 LB 0x6b82 -> off=0x59 cb=0000000000000379 uValue=00000000000f31af '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, 090h, 048h, 00dh
+ db 04bh, 055h, 048h, 090h, 048h, 04ah, 048h, 090h, 048h, 04ah, 048h, 090h, 048h, 00dh, 04bh, 090h
+ db 048h, 090h, 048h, 00dh, 04bh, 00dh, 04bh, 00dh, 04bh, 00dh, 04bh, 00dh, 04bh, 077h, 048h, 00dh
+ db 04bh, 090h, 048h, 07dh, 048h, 0ach, 048h, 04ah, 048h, 0ach, 048h, 0eah, 049h, 090h, 04ah, 0ach
+ db 048h, 0b5h, 04ah, 0cdh, 04ah, 0d5h, 04ah, 090h, 048h
+int13_cdrom: ; 0xf47af LB 0x379
+ push bp ; 55 ; 0xf47af eltorito.c:775
+ mov bp, sp ; 89 e5 ; 0xf47b0
+ push si ; 56 ; 0xf47b2
+ push di ; 57 ; 0xf47b3
+ sub sp, strict byte 00020h ; 83 ec 20 ; 0xf47b4
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf47b7 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf47ba
+ mov es, ax ; 8e c0 ; 0xf47bd
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf47bf
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf47c2 eltorito.c:785
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf47c5
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf47c8 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf47cb
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47cf eltorito.c:792
+ xor ah, ah ; 30 e4 ; 0xf47d2
+ cmp ax, 000e0h ; 3d e0 00 ; 0xf47d4
+ jc short 047deh ; 72 05 ; 0xf47d7
+ cmp ax, 000f4h ; 3d f4 00 ; 0xf47d9
+ jc short 047fch ; 72 1e ; 0xf47dc
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47de eltorito.c:793
+ xor ah, ah ; 30 e4 ; 0xf47e1
+ push ax ; 50 ; 0xf47e3
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47e4
+ shr ax, 008h ; c1 e8 08 ; 0xf47e7
+ push ax ; 50 ; 0xf47ea
+ push 0043ah ; 68 3a 04 ; 0xf47eb
+ push 00446h ; 68 46 04 ; 0xf47ee
+ push strict byte 00004h ; 6a 04 ; 0xf47f1
+ call 0190eh ; e8 18 d1 ; 0xf47f3
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf47f6
+ jmp near 04aebh ; e9 ef 02 ; 0xf47f9 eltorito.c:794
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47fc eltorito.c:798
+ xor ah, ah ; 30 e4 ; 0xf47ff
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4801
+ mov bx, si ; 89 f3 ; 0xf4804
+ add bx, ax ; 01 c3 ; 0xf4806
+ mov dl, byte [es:bx+00188h] ; 26 8a 97 88 01 ; 0xf4808
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf480d
+ cmp dl, 014h ; 80 fa 14 ; 0xf4810 eltorito.c:801
+ jc short 04825h ; 72 10 ; 0xf4813
+ push ax ; 50 ; 0xf4815 eltorito.c:802
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4816
+ shr ax, 008h ; c1 e8 08 ; 0xf4819
+ push ax ; 50 ; 0xf481c
+ push 0043ah ; 68 3a 04 ; 0xf481d
+ push 00471h ; 68 71 04 ; 0xf4820
+ jmp short 047f1h ; eb cc ; 0xf4823
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4825 eltorito.c:806
+ shr ax, 008h ; c1 e8 08 ; 0xf4828
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf482b
+ jnbe short 04890h ; 77 60 ; 0xf482e
+ push CS ; 0e ; 0xf4830
+ pop ES ; 07 ; 0xf4831
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4832
+ mov di, 04756h ; bf 56 47 ; 0xf4835
+ repne scasb ; f2 ae ; 0xf4838
+ sal cx, 1 ; d1 e1 ; 0xf483a
+ mov di, cx ; 89 cf ; 0xf483c
+ mov dx, word [cs:di+04773h] ; 2e 8b 95 73 47 ; 0xf483e
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4843
+ xor ah, ah ; 30 e4 ; 0xf4846
+ jmp dx ; ff e2 ; 0xf4848
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf484a eltorito.c:824
+ xor ah, ah ; 30 e4 ; 0xf484d
+ or ah, 003h ; 80 cc 03 ; 0xf484f
+ jmp near 04af3h ; e9 9e 02 ; 0xf4852
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4855 eltorito.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4858
+ mov es, dx ; 8e c2 ; 0xf485b
+ mov cl, byte [es:bx] ; 26 8a 0f ; 0xf485d
+ mov dl, cl ; 88 ca ; 0xf4860 eltorito.c:830
+ xor dh, dh ; 30 f6 ; 0xf4862
+ sal dx, 008h ; c1 e2 08 ; 0xf4864
+ or ax, dx ; 09 d0 ; 0xf4867
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4869
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf486c eltorito.c:43
+ test cl, cl ; 84 c9 ; 0xf4870 eltorito.c:834
+ je short 0488dh ; 74 19 ; 0xf4872
+ jmp near 04b07h ; e9 90 02 ; 0xf4874 eltorito.c:835
+ or ah, 002h ; 80 cc 02 ; 0xf4877 eltorito.c:841
+ jmp near 04af3h ; e9 76 02 ; 0xf487a
+ mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf487d eltorito.c:846
+ or ah, 030h ; 80 cc 30 ; 0xf4882 eltorito.c:847
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4885
+ mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf4888 eltorito.c:848
+ jmp near 04b11h ; e9 81 02 ; 0xf488d eltorito.c:849
+ mov bx, 00eeah ; bb ea 0e ; 0xf4890
+ mov cx, ds ; 8c d9 ; 0xf4893
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4895
+ call 018cbh ; e8 30 d0 ; 0xf4898
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf489b
+ shr ax, 008h ; c1 e8 08 ; 0xf489e
+ push ax ; 50 ; 0xf48a1
+ push 0043ah ; 68 3a 04 ; 0xf48a2
+ push 00343h ; 68 43 03 ; 0xf48a5
+ push strict byte 00004h ; 6a 04 ; 0xf48a8
+ jmp short 048ech ; eb 40 ; 0xf48aa
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf48ac eltorito.c:857
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf48af
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf48b2
+ mov [bp-00ch], es ; 8c 46 f4 ; 0xf48b5
+ mov di, word [es:bx+002h] ; 26 8b 7f 02 ; 0xf48b8 eltorito.c:859
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf48bc eltorito.c:860
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf48c0
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf48c3 eltorito.c:861
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf48c7
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf48ca eltorito.c:864
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf48ce
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf48d1
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf48d5
+ or ax, word [bp-012h] ; 0b 46 ee ; 0xf48d8 eltorito.c:865
+ je short 048f5h ; 74 18 ; 0xf48db
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48dd eltorito.c:866
+ shr ax, 008h ; c1 e8 08 ; 0xf48e0
+ push ax ; 50 ; 0xf48e3
+ push 0043ah ; 68 3a 04 ; 0xf48e4
+ push 003bfh ; 68 bf 03 ; 0xf48e7
+ push strict byte 00007h ; 6a 07 ; 0xf48ea
+ call 0190eh ; e8 1f d0 ; 0xf48ec
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf48ef
+ jmp near 04aebh ; e9 f6 01 ; 0xf48f2 eltorito.c:867
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf48f5 eltorito.c:871
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf48f8
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf48fb
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf48ff
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf4902
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4906
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4909 eltorito.c:874
+ shr ax, 008h ; c1 e8 08 ; 0xf490c
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf490f
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf4912
+ je short 0491ch ; 74 05 ; 0xf4915
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf4917
+ jne short 0491fh ; 75 03 ; 0xf491a
+ jmp near 04b0dh ; e9 ee 01 ; 0xf491c eltorito.c:875
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf491f eltorito.c:880
+ xor bx, bx ; 31 db ; 0xf4922
+ mov dx, ss ; 8c d2 ; 0xf4924
+ lea ax, [bp-024h] ; 8d 46 dc ; 0xf4926
+ call 0afb0h ; e8 84 66 ; 0xf4929
+ mov word [bp-024h], strict word 00028h ; c7 46 dc 28 00 ; 0xf492c eltorito.c:881
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf4931 eltorito.c:882
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf4934
+ xchg ah, al ; 86 c4 ; 0xf4937
+ xchg dh, dl ; 86 d6 ; 0xf4939
+ xchg dx, ax ; 92 ; 0xf493b
+ mov word [bp-022h], ax ; 89 46 de ; 0xf493c
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf493f
+ mov ax, di ; 89 f8 ; 0xf4942 eltorito.c:883
+ xchg ah, al ; 86 c4 ; 0xf4944
+ mov word [bp-01dh], ax ; 89 46 e3 ; 0xf4946
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4949 eltorito.c:885
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf494c
+ mov word [es:si+010h], 00800h ; 26 c7 44 10 00 08 ; 0xf4950 eltorito.c:886
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4956 eltorito.c:888
+ xor ah, ah ; 30 e4 ; 0xf4959
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf495b
+ mov bx, si ; 89 f3 ; 0xf495e
+ add bx, ax ; 01 c3 ; 0xf4960
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4962
+ xor ah, ah ; 30 e4 ; 0xf4966
+ add ax, ax ; 01 c0 ; 0xf4968
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf496a
+ push word [bp-016h] ; ff 76 ea ; 0xf496d
+ push word [bp-014h] ; ff 76 ec ; 0xf4970
+ push strict byte 00001h ; 6a 01 ; 0xf4973
+ mov ax, di ; 89 f8 ; 0xf4975
+ xor bx, bx ; 31 db ; 0xf4977
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4979
+ sal ax, 1 ; d1 e0 ; 0xf497c
+ rcl bx, 1 ; d1 d3 ; 0xf497e
+ loop 0497ch ; e2 fa ; 0xf4980
+ push bx ; 53 ; 0xf4982
+ push ax ; 50 ; 0xf4983
+ push strict byte 00000h ; 6a 00 ; 0xf4984
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4986
+ xor ah, ah ; 30 e4 ; 0xf4989
+ mov cx, ss ; 8c d1 ; 0xf498b
+ lea bx, [bp-024h] ; 8d 5e dc ; 0xf498d
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4990
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf4993
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4996
+ mov dx, ax ; 89 c2 ; 0xf499a
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf499c eltorito.c:890
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf499f
+ mov bx, word [es:si+01ch] ; 26 8b 5c 1c ; 0xf49a3
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf49a7
+ shr bx, 1 ; d1 eb ; 0xf49aa
+ rcr ax, 1 ; d1 d8 ; 0xf49ac
+ loop 049aah ; e2 fa ; 0xf49ae
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf49b0 eltorito.c:891
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf49b3
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf49b6
+ test dl, dl ; 84 d2 ; 0xf49ba eltorito.c:893
+ je short 04a27h ; 74 69 ; 0xf49bc
+ mov bx, 00eeah ; bb ea 0e ; 0xf49be eltorito.c:894
+ mov cx, ds ; 8c d9 ; 0xf49c1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf49c3
+ call 018cbh ; e8 02 cf ; 0xf49c6
+ mov al, dl ; 88 d0 ; 0xf49c9
+ xor ah, ah ; 30 e4 ; 0xf49cb
+ push ax ; 50 ; 0xf49cd
+ push word [bp-00eh] ; ff 76 f2 ; 0xf49ce
+ push 0043ah ; 68 3a 04 ; 0xf49d1
+ push 003e8h ; 68 e8 03 ; 0xf49d4
+ push strict byte 00004h ; 6a 04 ; 0xf49d7
+ call 0190eh ; e8 32 cf ; 0xf49d9
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf49dc
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49df eltorito.c:895
+ xor ah, ah ; 30 e4 ; 0xf49e2
+ or ah, 00ch ; 80 cc 0c ; 0xf49e4
+ jmp near 04af3h ; e9 09 01 ; 0xf49e7
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf49ea eltorito.c:903
+ jnbe short 04a59h ; 77 6a ; 0xf49ed
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf49ef eltorito.c:906
+ xor dh, dh ; 30 f6 ; 0xf49f2
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf49f4
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf49f7
+ mov bx, si ; 89 f3 ; 0xf49fa
+ add bx, dx ; 01 d3 ; 0xf49fc
+ mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf49fe
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4a02 eltorito.c:908
+ je short 04a5ch ; 74 55 ; 0xf4a05
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4a07
+ je short 04a49h ; 74 3d ; 0xf4a0a
+ test ax, ax ; 85 c0 ; 0xf4a0c
+ jne short 04a46h ; 75 36 ; 0xf4a0e
+ cmp bl, 0ffh ; 80 fb ff ; 0xf4a10 eltorito.c:910
+ jne short 04a29h ; 75 14 ; 0xf4a13
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a15 eltorito.c:911
+ xor ah, ah ; 30 e4 ; 0xf4a18
+ or ah, 0b4h ; 80 cc b4 ; 0xf4a1a
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4a1d
+ xor al, al ; 30 c0 ; 0xf4a20 eltorito.c:912
+ or AL, strict byte 001h ; 0c 01 ; 0xf4a22
+ jmp near 04af3h ; e9 cc 00 ; 0xf4a24
+ jmp short 04a46h ; eb 1d ; 0xf4a27
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a29 eltorito.c:914
+ xor ah, ah ; 30 e4 ; 0xf4a2c
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4a2e
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf4a31 eltorito.c:915
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a33
+ add si, ax ; 01 c6 ; 0xf4a36
+ mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4a38
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a3c eltorito.c:916
+ xor al, al ; 30 c0 ; 0xf4a3f
+ or AL, strict byte 001h ; 0c 01 ; 0xf4a41
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4a43
+ jmp near 04b0dh ; e9 c4 00 ; 0xf4a46 eltorito.c:917
+ test bl, bl ; 84 db ; 0xf4a49 eltorito.c:919
+ jne short 04a5eh ; 75 11 ; 0xf4a4b
+ or ah, 0b0h ; 80 cc b0 ; 0xf4a4d eltorito.c:920
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4a50
+ mov byte [bp+018h], bl ; 88 5e 18 ; 0xf4a53 eltorito.c:921
+ jmp near 04af6h ; e9 9d 00 ; 0xf4a56 eltorito.c:922
+ jmp near 04aebh ; e9 8f 00 ; 0xf4a59
+ jmp short 04a88h ; eb 2a ; 0xf4a5c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a5e eltorito.c:923
+ xor ah, ah ; 30 e4 ; 0xf4a61
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4a63
+ db 0feh, 0cbh
+ ; dec bl ; fe cb ; 0xf4a66 eltorito.c:924
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a68
+ add si, ax ; 01 c6 ; 0xf4a6b
+ mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4a6d
+ test bl, bl ; 84 db ; 0xf4a71 eltorito.c:925
+ jne short 04a79h ; 75 04 ; 0xf4a73
+ xor ax, ax ; 31 c0 ; 0xf4a75
+ jmp short 04a7ch ; eb 03 ; 0xf4a77
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4a79
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf4a7c
+ xor dl, dl ; 30 d2 ; 0xf4a7f
+ or dx, ax ; 09 c2 ; 0xf4a81
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf4a83
+ jmp short 04a46h ; eb be ; 0xf4a86 eltorito.c:926
+ test bl, bl ; 84 db ; 0xf4a88 eltorito.c:928
+ jne short 04a79h ; 75 ed ; 0xf4a8a
+ xor al, al ; 30 c0 ; 0xf4a8c
+ jmp short 04a7ch ; eb ec ; 0xf4a8e
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4a90 eltorito.c:935
+ xor dh, dh ; 30 f6 ; 0xf4a93
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4a95
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a98
+ mov bx, si ; 89 f3 ; 0xf4a9b
+ add bx, dx ; 01 d3 ; 0xf4a9d
+ mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf4a9f
+ test bl, bl ; 84 db ; 0xf4aa3 eltorito.c:937
+ je short 04aach ; 74 05 ; 0xf4aa5
+ or ah, 0b1h ; 80 cc b1 ; 0xf4aa7 eltorito.c:938
+ jmp short 04af3h ; eb 47 ; 0xf4aaa
+ je short 04b0dh ; 74 5f ; 0xf4aac eltorito.c:960
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4aae eltorito.c:961
+ xor ah, ah ; 30 e4 ; 0xf4ab1
+ jmp short 04aa7h ; eb f2 ; 0xf4ab3
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4ab5 eltorito.c:969
+ push ax ; 50 ; 0xf4ab8
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4ab9
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4abc
+ mov bx, si ; 89 f3 ; 0xf4abf
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf4ac1
+ call 05986h ; e8 bf 0e ; 0xf4ac4
+ test ax, ax ; 85 c0 ; 0xf4ac7
+ je short 04b0dh ; 74 42 ; 0xf4ac9
+ jmp short 04aebh ; eb 1e ; 0xf4acb eltorito.c:970
+ or ah, 006h ; 80 cc 06 ; 0xf4acd eltorito.c:977
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4ad0
+ jmp short 04b07h ; eb 32 ; 0xf4ad3 eltorito.c:978
+ cmp ax, strict word 00006h ; 3d 06 00 ; 0xf4ad5 eltorito.c:983
+ je short 04b0dh ; 74 33 ; 0xf4ad8
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4ada
+ jc short 04aebh ; 72 0c ; 0xf4add
+ jbe short 04b0dh ; 76 2c ; 0xf4adf
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf4ae1
+ jc short 04aebh ; 72 05 ; 0xf4ae4
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf4ae6
+ jbe short 04b0dh ; 76 22 ; 0xf4ae9
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4aeb eltorito.c:1010
+ xor ah, ah ; 30 e4 ; 0xf4aee
+ or ah, 001h ; 80 cc 01 ; 0xf4af0
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4af3
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4af6 eltorito.c:1012
+ shr ax, 008h ; c1 e8 08 ; 0xf4af9
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4afc eltorito.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4aff
+ mov es, dx ; 8e c2 ; 0xf4b02
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4b04
+ or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4b07 eltorito.c:1014
+ jmp short 04b21h ; eb 14 ; 0xf4b0b eltorito.c:1015
+ mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4b0d eltorito.c:1018
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4b11 eltorito.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4b14
+ mov es, ax ; 8e c0 ; 0xf4b17
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4b19
+ and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4b1d eltorito.c:1021
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4b21 eltorito.c:1023
+ pop di ; 5f ; 0xf4b24
+ pop si ; 5e ; 0xf4b25
+ pop bp ; 5d ; 0xf4b26
+ retn ; c3 ; 0xf4b27
+ ; disGetNextSymbol 0xf4b28 LB 0x67b0 -> off=0x0 cb=000000000000004b uValue=00000000000f3528 'print_boot_device'
+print_boot_device: ; 0xf4b28 LB 0x4b
+ push bp ; 55 ; 0xf4b28 boot.c:109
+ mov bp, sp ; 89 e5 ; 0xf4b29
+ push cx ; 51 ; 0xf4b2b
+ test al, al ; 84 c0 ; 0xf4b2c boot.c:117
+ je short 04b35h ; 74 05 ; 0xf4b2e
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf4b30
+ jmp short 04b4fh ; eb 1a ; 0xf4b33 boot.c:118
+ test dl, dl ; 84 d2 ; 0xf4b35
+ je short 04b3eh ; 74 05 ; 0xf4b37
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf4b39
+ jmp short 04b4fh ; eb 11 ; 0xf4b3c boot.c:119
+ test bl, 080h ; f6 c3 80 ; 0xf4b3e
+ jne short 04b47h ; 75 04 ; 0xf4b41
+ xor dh, dh ; 30 f6 ; 0xf4b43
+ jmp short 04b4fh ; eb 08 ; 0xf4b45 boot.c:120
+ test bl, 080h ; f6 c3 80 ; 0xf4b47
+ je short 04b6dh ; 74 21 ; 0xf4b4a
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4b4c
+ mov bx, 00eeah ; bb ea 0e ; 0xf4b4f boot.c:123
+ mov cx, ds ; 8c d9 ; 0xf4b52
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b54
+ call 018cbh ; e8 71 cd ; 0xf4b57
+ imul dx, dx, strict byte 0000ah ; 6b d2 0a ; 0xf4b5a
+ add dx, 00f10h ; 81 c2 10 0f ; 0xf4b5d
+ push dx ; 52 ; 0xf4b61
+ push 004a4h ; 68 a4 04 ; 0xf4b62
+ push strict byte 00004h ; 6a 04 ; 0xf4b65
+ call 0190eh ; e8 a4 cd ; 0xf4b67
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4b6a
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4b6d boot.c:124
+ pop cx ; 59 ; 0xf4b70
+ pop bp ; 5d ; 0xf4b71
+ retn ; c3 ; 0xf4b72
+ ; disGetNextSymbol 0xf4b73 LB 0x6765 -> off=0x0 cb=0000000000000096 uValue=00000000000f3573 'print_boot_failure'
+print_boot_failure: ; 0xf4b73 LB 0x96
+ push bp ; 55 ; 0xf4b73 boot.c:131
+ mov bp, sp ; 89 e5 ; 0xf4b74
+ push si ; 56 ; 0xf4b76
+ mov ah, dl ; 88 d4 ; 0xf4b77
+ mov dl, cl ; 88 ca ; 0xf4b79
+ mov cl, bl ; 88 d9 ; 0xf4b7b boot.c:134
+ and cl, 07fh ; 80 e1 7f ; 0xf4b7d
+ xor ch, ch ; 30 ed ; 0xf4b80
+ mov si, cx ; 89 ce ; 0xf4b82
+ test al, al ; 84 c0 ; 0xf4b84 boot.c:142
+ je short 04ba3h ; 74 1b ; 0xf4b86
+ mov bx, 00eeah ; bb ea 0e ; 0xf4b88 boot.c:143
+ mov cx, ds ; 8c d9 ; 0xf4b8b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b8d
+ call 018cbh ; e8 38 cd ; 0xf4b90
+ push 00f24h ; 68 24 0f ; 0xf4b93
+ push 004b8h ; 68 b8 04 ; 0xf4b96
+ push strict byte 00004h ; 6a 04 ; 0xf4b99
+ call 0190eh ; e8 70 cd ; 0xf4b9b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4b9e
+ jmp short 04be7h ; eb 44 ; 0xf4ba1 boot.c:144
+ test ah, ah ; 84 e4 ; 0xf4ba3
+ je short 04bb7h ; 74 10 ; 0xf4ba5
+ mov bx, 00eeah ; bb ea 0e ; 0xf4ba7 boot.c:145
+ mov cx, ds ; 8c d9 ; 0xf4baa
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4bac
+ call 018cbh ; e8 19 cd ; 0xf4baf
+ push 00f2eh ; 68 2e 0f ; 0xf4bb2
+ jmp short 04b96h ; eb df ; 0xf4bb5
+ test bl, 080h ; f6 c3 80 ; 0xf4bb7 boot.c:146
+ je short 04bcdh ; 74 11 ; 0xf4bba
+ mov bx, 00eeah ; bb ea 0e ; 0xf4bbc boot.c:147
+ mov cx, ds ; 8c d9 ; 0xf4bbf
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4bc1
+ call 018cbh ; e8 04 cd ; 0xf4bc4
+ push si ; 56 ; 0xf4bc7
+ push 00f1ah ; 68 1a 0f ; 0xf4bc8
+ jmp short 04bdch ; eb 0f ; 0xf4bcb boot.c:148
+ mov bx, 00eeah ; bb ea 0e ; 0xf4bcd boot.c:149
+ mov cx, ds ; 8c d9 ; 0xf4bd0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4bd2
+ call 018cbh ; e8 f3 cc ; 0xf4bd5
+ push si ; 56 ; 0xf4bd8
+ push 00f10h ; 68 10 0f ; 0xf4bd9
+ push 004cdh ; 68 cd 04 ; 0xf4bdc
+ push strict byte 00004h ; 6a 04 ; 0xf4bdf
+ call 0190eh ; e8 2a cd ; 0xf4be1
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4be4
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4be7 boot.c:151
+ jne short 04c01h ; 75 14 ; 0xf4beb
+ test dl, dl ; 84 d2 ; 0xf4bed boot.c:152
+ jne short 04bf6h ; 75 05 ; 0xf4bef
+ push 004e5h ; 68 e5 04 ; 0xf4bf1 boot.c:153
+ jmp short 04bf9h ; eb 03 ; 0xf4bf4 boot.c:154
+ push 0050fh ; 68 0f 05 ; 0xf4bf6 boot.c:155
+ push strict byte 00007h ; 6a 07 ; 0xf4bf9
+ call 0190eh ; e8 10 cd ; 0xf4bfb
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4bfe
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4c01 boot.c:157
+ pop si ; 5e ; 0xf4c04
+ pop bp ; 5d ; 0xf4c05
+ retn 00002h ; c2 02 00 ; 0xf4c06
+ ; disGetNextSymbol 0xf4c09 LB 0x66cf -> off=0x0 cb=0000000000000027 uValue=00000000000f3609 'print_cdromboot_failure'
+print_cdromboot_failure: ; 0xf4c09 LB 0x27
+ push bp ; 55 ; 0xf4c09 boot.c:163
+ mov bp, sp ; 89 e5 ; 0xf4c0a
+ push bx ; 53 ; 0xf4c0c
+ push cx ; 51 ; 0xf4c0d
+ push dx ; 52 ; 0xf4c0e
+ mov dx, ax ; 89 c2 ; 0xf4c0f
+ mov bx, 00eeah ; bb ea 0e ; 0xf4c11 boot.c:165
+ mov cx, ds ; 8c d9 ; 0xf4c14
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c16
+ call 018cbh ; e8 af cc ; 0xf4c19
+ push dx ; 52 ; 0xf4c1c
+ push 00544h ; 68 44 05 ; 0xf4c1d
+ push strict byte 00004h ; 6a 04 ; 0xf4c20
+ call 0190eh ; e8 e9 cc ; 0xf4c22
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c25
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf4c28 boot.c:167
+ pop dx ; 5a ; 0xf4c2b
+ pop cx ; 59 ; 0xf4c2c
+ pop bx ; 5b ; 0xf4c2d
+ pop bp ; 5d ; 0xf4c2e
+ retn ; c3 ; 0xf4c2f
+ ; disGetNextSymbol 0xf4c30 LB 0x66a8 -> off=0x0 cb=000000000000025b uValue=00000000000f3630 'int19_function'
+int19_function: ; 0xf4c30 LB 0x25b
+ push bp ; 55 ; 0xf4c30 boot.c:170
+ mov bp, sp ; 89 e5 ; 0xf4c31
+ push si ; 56 ; 0xf4c33
+ push di ; 57 ; 0xf4c34
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf4c35
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4c38 boot.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4c3b
+ mov es, ax ; 8e c0 ; 0xf4c3e
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf4c40
+ mov di, cx ; 89 cf ; 0xf4c43 boot.c:49
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4c45 boot.c:181
+ mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4c49 boot.c:204
+ call 0165fh ; e8 10 ca ; 0xf4c4c
+ mov dl, al ; 88 c2 ; 0xf4c4f
+ xor dh, dh ; 30 f6 ; 0xf4c51
+ mov ax, strict word 00038h ; b8 38 00 ; 0xf4c53 boot.c:205
+ call 0165fh ; e8 06 ca ; 0xf4c56
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4c59
+ xor ah, ah ; 30 e4 ; 0xf4c5b
+ sal ax, 004h ; c1 e0 04 ; 0xf4c5d
+ or dx, ax ; 09 c2 ; 0xf4c60
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c62 boot.c:206
+ call 0165fh ; e8 f7 c9 ; 0xf4c65
+ and AL, strict byte 00fh ; 24 0f ; 0xf4c68
+ xor ah, ah ; 30 e4 ; 0xf4c6a
+ sal ax, 00ch ; c1 e0 0c ; 0xf4c6c
+ or dx, ax ; 09 c2 ; 0xf4c6f
+ mov bx, 00335h ; bb 35 03 ; 0xf4c71 boot.c:38
+ mov es, cx ; 8e c1 ; 0xf4c74
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4c76
+ test al, al ; 84 c0 ; 0xf4c79 boot.c:39
+ je short 04c81h ; 74 04 ; 0xf4c7b
+ mov dl, al ; 88 c2 ; 0xf4c7d boot.c:38
+ xor dh, dh ; 30 f6 ; 0xf4c7f boot.c:39
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4c81 boot.c:210
+ jne short 04c97h ; 75 10 ; 0xf4c85
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c87 boot.c:211
+ call 0165fh ; e8 d2 c9 ; 0xf4c8a
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4c8d
+ xor ah, ah ; 30 e4 ; 0xf4c8f
+ sar ax, 004h ; c1 f8 04 ; 0xf4c91
+ call 078a7h ; e8 10 2c ; 0xf4c94
+ cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4c97 boot.c:213
+ jne short 04ca0h ; 75 03 ; 0xf4c9b
+ shr dx, 004h ; c1 ea 04 ; 0xf4c9d
+ cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4ca0 boot.c:214
+ jne short 04ca9h ; 75 03 ; 0xf4ca4
+ shr dx, 008h ; c1 ea 08 ; 0xf4ca6
+ cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4ca9 boot.c:215
+ jne short 04cb2h ; 75 03 ; 0xf4cad
+ shr dx, 00ch ; c1 ea 0c ; 0xf4caf
+ cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4cb2 boot.c:216
+ jnc short 04cbbh ; 73 04 ; 0xf4cb5
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4cb7
+ xor al, al ; 30 c0 ; 0xf4cbb boot.c:217
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4cbd
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4cc0
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4cc3 boot.c:218
+ mov bx, 00eeah ; bb ea 0e ; 0xf4cc6 boot.c:219
+ mov cx, ds ; 8c d9 ; 0xf4cc9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4ccb
+ call 018cbh ; e8 fa cb ; 0xf4cce
+ push dx ; 52 ; 0xf4cd1
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf4cd2
+ xor ah, ah ; 30 e4 ; 0xf4cd5
+ push ax ; 50 ; 0xf4cd7
+ push 00564h ; 68 64 05 ; 0xf4cd8
+ push strict byte 00004h ; 6a 04 ; 0xf4cdb
+ call 0190eh ; e8 2e cc ; 0xf4cdd
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4ce0
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4ce3 boot.c:221
+ cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4ce6
+ jc short 04cf9h ; 72 0e ; 0xf4ce9
+ jbe short 04d08h ; 76 1b ; 0xf4ceb
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4ced
+ je short 04d24h ; 74 32 ; 0xf4cf0
+ cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4cf2
+ je short 04d1ah ; 74 23 ; 0xf4cf5
+ jmp short 04d53h ; eb 5a ; 0xf4cf7
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4cf9
+ jne short 04d53h ; 75 55 ; 0xf4cfc
+ xor al, al ; 30 c0 ; 0xf4cfe boot.c:223
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4d00
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4d03 boot.c:224
+ jmp short 04d68h ; eb 60 ; 0xf4d06 boot.c:225
+ mov bx, 00334h ; bb 34 03 ; 0xf4d08 boot.c:38
+ mov es, di ; 8e c7 ; 0xf4d0b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4d0d
+ add AL, strict byte 080h ; 04 80 ; 0xf4d10 boot.c:231
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4d12
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf4d15 boot.c:232
+ jmp short 04d68h ; eb 4e ; 0xf4d18 boot.c:233
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4d1a boot.c:236
+ mov byte [bp-008h], 001h ; c6 46 f8 01 ; 0xf4d1e boot.c:237
+ jmp short 04d2eh ; eb 0a ; 0xf4d22 boot.c:238
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4d24 boot.c:239
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4d28 boot.c:255
+ je short 04d68h ; 74 3a ; 0xf4d2c
+ call 03d54h ; e8 23 f0 ; 0xf4d2e boot.c:256
+ mov dx, ax ; 89 c2 ; 0xf4d31
+ test AL, strict byte 0ffh ; a8 ff ; 0xf4d33 boot.c:259
+ je short 04d5ah ; 74 23 ; 0xf4d35
+ call 04c09h ; e8 cf fe ; 0xf4d37 boot.c:260
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4d3a boot.c:261
+ xor ah, ah ; 30 e4 ; 0xf4d3d
+ push ax ; 50 ; 0xf4d3f
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4d40
+ xor bh, bh ; 30 ff ; 0xf4d43
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4d45
+ xor dh, dh ; 30 f6 ; 0xf4d48
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4d4a
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4d4d
+ call 04b73h ; e8 20 fe ; 0xf4d50
+ xor ax, ax ; 31 c0 ; 0xf4d53
+ xor dx, dx ; 31 d2 ; 0xf4d55
+ jmp near 04e84h ; e9 2a 01 ; 0xf4d57
+ mov bx, 0032ah ; bb 2a 03 ; 0xf4d5a boot.c:48
+ mov es, di ; 8e c7 ; 0xf4d5d
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf4d5f
+ shr dx, 008h ; c1 ea 08 ; 0xf4d62 boot.c:266
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf4d65
+ cmp byte [bp-00ah], 001h ; 80 7e f6 01 ; 0xf4d68 boot.c:272
+ jne short 04dc3h ; 75 55 ; 0xf4d6c
+ xor si, si ; 31 f6 ; 0xf4d6e boot.c:275
+ mov ax, 0e200h ; b8 00 e2 ; 0xf4d70
+ mov es, ax ; 8e c0 ; 0xf4d73
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4d75 boot.c:276
+ jne short 04d3ah ; 75 be ; 0xf4d7a
+ mov cx, ax ; 89 c1 ; 0xf4d7c boot.c:282
+ mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4d7e
+ cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4d82 boot.c:283
+ jne short 04d3ah ; 75 b0 ; 0xf4d88
+ cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4d8a
+ jne short 04d3ah ; 75 a9 ; 0xf4d8f
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4d91 boot.c:285
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4d95
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf4d98
+ cmp ax, 06568h ; 3d 68 65 ; 0xf4d9c boot.c:286
+ jne short 04dc5h ; 75 24 ; 0xf4d9f
+ cmp dx, 07445h ; 81 fa 45 74 ; 0xf4da1
+ jne short 04dc5h ; 75 1e ; 0xf4da5
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4da7 boot.c:288
+ xor bh, bh ; 30 ff ; 0xf4daa
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4dac
+ xor dh, dh ; 30 f6 ; 0xf4daf
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4db1
+ xor ah, ah ; 30 e4 ; 0xf4db4
+ call 04b28h ; e8 6f fd ; 0xf4db6
+ mov word [bp-010h], strict word 00006h ; c7 46 f0 06 00 ; 0xf4db9 boot.c:289
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xf4dbe
+ jmp short 04de4h ; eb 21 ; 0xf4dc1 boot.c:292
+ jmp short 04deah ; eb 25 ; 0xf4dc3
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4dc5 boot.c:295
+ xor bh, bh ; 30 ff ; 0xf4dc8
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4dca
+ xor dh, dh ; 30 f6 ; 0xf4dcd
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4dcf
+ xor ah, ah ; 30 e4 ; 0xf4dd2
+ call 04b28h ; e8 51 fd ; 0xf4dd4
+ sti ; fb ; 0xf4dd7 boot.c:296
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xf4dd8 boot.c:297
+ mov es, cx ; 8e c1 ; 0xf4ddb
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4ddd
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf4de1
+ call far [bp-010h] ; ff 5e f0 ; 0xf4de4 boot.c:298
+ jmp near 04d3ah ; e9 50 ff ; 0xf4de7 boot.c:301
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4dea boot.c:309
+ jne short 04e17h ; 75 27 ; 0xf4dee
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4df0
+ jne short 04e17h ; 75 21 ; 0xf4df4
+ mov si, 007c0h ; be c0 07 ; 0xf4df6 boot.c:310
+ mov es, si ; 8e c6 ; 0xf4df9 boot.c:312
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4dfb
+ mov ax, 00201h ; b8 01 02 ; 0xf4dfe
+ mov DH, strict byte 000h ; b6 00 ; 0xf4e01
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4e03
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf4e06
+ int 013h ; cd 13 ; 0xf4e08
+ mov ax, strict word 00000h ; b8 00 00 ; 0xf4e0a
+ sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4e0d
+ test ax, ax ; 85 c0 ; 0xf4e10 boot.c:313
+ je short 04e17h ; 74 03 ; 0xf4e12
+ jmp near 04d3ah ; e9 23 ff ; 0xf4e14
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf4e17 boot.c:328
+ je short 04e21h ; 74 04 ; 0xf4e1b
+ xor al, al ; 30 c0 ; 0xf4e1d
+ jmp short 04e23h ; eb 02 ; 0xf4e1f boot.c:329
+ mov AL, strict byte 001h ; b0 01 ; 0xf4e21
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4e23 boot.c:333
+ je short 04e2bh ; 74 02 ; 0xf4e27
+ mov AL, strict byte 001h ; b0 01 ; 0xf4e29 boot.c:334
+ xor bx, bx ; 31 db ; 0xf4e2b boot.c:48
+ mov es, si ; 8e c6 ; 0xf4e2d
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf4e2f
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4e32 boot.c:48
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4e35
+ cmp cx, dx ; 39 d1 ; 0xf4e38 boot.c:49
+ je short 04e4bh ; 74 0f ; 0xf4e3a
+ test al, al ; 84 c0 ; 0xf4e3c
+ jne short 04e63h ; 75 23 ; 0xf4e3e
+ mov bx, 001feh ; bb fe 01 ; 0xf4e40 boot.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4e43
+ cmp ax, 0aa55h ; 3d 55 aa ; 0xf4e46 boot.c:49
+ je short 04e63h ; 74 18 ; 0xf4e49
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4e4b boot.c:340
+ xor ah, ah ; 30 e4 ; 0xf4e4e
+ push ax ; 50 ; 0xf4e50
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e51
+ xor bh, bh ; 30 ff ; 0xf4e54
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e56
+ xor dh, dh ; 30 f6 ; 0xf4e59
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e5b
+ xor cx, cx ; 31 c9 ; 0xf4e5e
+ jmp near 04d50h ; e9 ed fe ; 0xf4e60
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e63 boot.c:346
+ xor bh, bh ; 30 ff ; 0xf4e66
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e68
+ xor dh, dh ; 30 f6 ; 0xf4e6b
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e6d
+ xor ah, ah ; 30 e4 ; 0xf4e70
+ call 04b28h ; e8 b3 fc ; 0xf4e72
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4e75 boot.c:352
+ xor ah, ah ; 30 e4 ; 0xf4e78
+ mov bx, ax ; 89 c3 ; 0xf4e7a
+ xor dx, dx ; 31 d2 ; 0xf4e7c
+ xor al, al ; 30 c0 ; 0xf4e7e
+ add ax, si ; 01 f0 ; 0xf4e80
+ adc dx, bx ; 11 da ; 0xf4e82
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4e84 boot.c:353
+ pop di ; 5f ; 0xf4e87
+ pop si ; 5e ; 0xf4e88
+ pop bp ; 5d ; 0xf4e89
+ retn ; c3 ; 0xf4e8a
+ ; disGetNextSymbol 0xf4e8b LB 0x644d -> off=0x0 cb=0000000000000013 uValue=00000000000f388b 'keyboard_panic'
+keyboard_panic: ; 0xf4e8b LB 0x13
+ push bp ; 55 ; 0xf4e8b keyboard.c:194
+ mov bp, sp ; 89 e5 ; 0xf4e8c
+ push ax ; 50 ; 0xf4e8e keyboard.c:199
+ push 00584h ; 68 84 05 ; 0xf4e8f
+ push strict byte 00007h ; 6a 07 ; 0xf4e92
+ call 0190eh ; e8 77 ca ; 0xf4e94
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4e97
+ mov sp, bp ; 89 ec ; 0xf4e9a keyboard.c:200
+ pop bp ; 5d ; 0xf4e9c
+ retn ; c3 ; 0xf4e9d
+ ; disGetNextSymbol 0xf4e9e LB 0x643a -> off=0x0 cb=000000000000026a uValue=00000000000f389e 'keyboard_init'
+keyboard_init: ; 0xf4e9e LB 0x26a
+ push bp ; 55 ; 0xf4e9e keyboard.c:208
+ mov bp, sp ; 89 e5 ; 0xf4e9f
+ mov AL, strict byte 0aah ; b0 aa ; 0xf4ea1 keyboard.c:214
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ea3
+ out DX, AL ; ee ; 0xf4ea6
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ea7 keyboard.c:217
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4eaa keyboard.c:218
+ in AL, DX ; ec ; 0xf4ead
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4eae
+ test AL, strict byte 002h ; a8 02 ; 0xf4eb0
+ je short 04ec1h ; 74 0d ; 0xf4eb2
+ dec bx ; 4b ; 0xf4eb4
+ test bx, bx ; 85 db ; 0xf4eb5
+ jbe short 04ec1h ; 76 08 ; 0xf4eb7
+ xor al, al ; 30 c0 ; 0xf4eb9
+ mov dx, 00080h ; ba 80 00 ; 0xf4ebb
+ out DX, AL ; ee ; 0xf4ebe
+ jmp short 04eaah ; eb e9 ; 0xf4ebf
+ test bx, bx ; 85 db ; 0xf4ec1 keyboard.c:219
+ jne short 04ecah ; 75 05 ; 0xf4ec3
+ xor ax, ax ; 31 c0 ; 0xf4ec5
+ call 04e8bh ; e8 c1 ff ; 0xf4ec7
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4eca keyboard.c:222
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ecd keyboard.c:223
+ in AL, DX ; ec ; 0xf4ed0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ed1
+ test AL, strict byte 001h ; a8 01 ; 0xf4ed3
+ jne short 04ee4h ; 75 0d ; 0xf4ed5
+ dec bx ; 4b ; 0xf4ed7
+ test bx, bx ; 85 db ; 0xf4ed8
+ jbe short 04ee4h ; 76 08 ; 0xf4eda
+ mov AL, strict byte 001h ; b0 01 ; 0xf4edc
+ mov dx, 00080h ; ba 80 00 ; 0xf4ede
+ out DX, AL ; ee ; 0xf4ee1
+ jmp short 04ecdh ; eb e9 ; 0xf4ee2
+ test bx, bx ; 85 db ; 0xf4ee4 keyboard.c:224
+ jne short 04eeeh ; 75 06 ; 0xf4ee6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4ee8
+ call 04e8bh ; e8 9d ff ; 0xf4eeb
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4eee keyboard.c:227
+ in AL, DX ; ec ; 0xf4ef1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ef2
+ cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4ef4
+ je short 04effh ; 74 06 ; 0xf4ef7
+ mov ax, 003dfh ; b8 df 03 ; 0xf4ef9 keyboard.c:228
+ call 04e8bh ; e8 8c ff ; 0xf4efc
+ mov AL, strict byte 0abh ; b0 ab ; 0xf4eff keyboard.c:232
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f01
+ out DX, AL ; ee ; 0xf4f04
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f05 keyboard.c:235
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f08 keyboard.c:236
+ in AL, DX ; ec ; 0xf4f0b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f0c
+ test AL, strict byte 002h ; a8 02 ; 0xf4f0e
+ je short 04f1fh ; 74 0d ; 0xf4f10
+ dec bx ; 4b ; 0xf4f12
+ test bx, bx ; 85 db ; 0xf4f13
+ jbe short 04f1fh ; 76 08 ; 0xf4f15
+ mov AL, strict byte 010h ; b0 10 ; 0xf4f17
+ mov dx, 00080h ; ba 80 00 ; 0xf4f19
+ out DX, AL ; ee ; 0xf4f1c
+ jmp short 04f08h ; eb e9 ; 0xf4f1d
+ test bx, bx ; 85 db ; 0xf4f1f keyboard.c:237
+ jne short 04f29h ; 75 06 ; 0xf4f21
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4f23
+ call 04e8bh ; e8 62 ff ; 0xf4f26
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f29 keyboard.c:240
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f2c keyboard.c:241
+ in AL, DX ; ec ; 0xf4f2f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f30
+ test AL, strict byte 001h ; a8 01 ; 0xf4f32
+ jne short 04f43h ; 75 0d ; 0xf4f34
+ dec bx ; 4b ; 0xf4f36
+ test bx, bx ; 85 db ; 0xf4f37
+ jbe short 04f43h ; 76 08 ; 0xf4f39
+ mov AL, strict byte 011h ; b0 11 ; 0xf4f3b
+ mov dx, 00080h ; ba 80 00 ; 0xf4f3d
+ out DX, AL ; ee ; 0xf4f40
+ jmp short 04f2ch ; eb e9 ; 0xf4f41
+ test bx, bx ; 85 db ; 0xf4f43 keyboard.c:242
+ jne short 04f4dh ; 75 06 ; 0xf4f45
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4f47
+ call 04e8bh ; e8 3e ff ; 0xf4f4a
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f4d keyboard.c:246
+ in AL, DX ; ec ; 0xf4f50
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f51
+ test ax, ax ; 85 c0 ; 0xf4f53
+ je short 04f5dh ; 74 06 ; 0xf4f55
+ mov ax, 003e0h ; b8 e0 03 ; 0xf4f57 keyboard.c:247
+ call 04e8bh ; e8 2e ff ; 0xf4f5a
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf4f5d keyboard.c:253
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f5f
+ out DX, AL ; ee ; 0xf4f62
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f63 keyboard.c:256
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f66 keyboard.c:257
+ in AL, DX ; ec ; 0xf4f69
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f6a
+ test AL, strict byte 002h ; a8 02 ; 0xf4f6c
+ je short 04f7dh ; 74 0d ; 0xf4f6e
+ dec bx ; 4b ; 0xf4f70
+ test bx, bx ; 85 db ; 0xf4f71
+ jbe short 04f7dh ; 76 08 ; 0xf4f73
+ mov AL, strict byte 020h ; b0 20 ; 0xf4f75
+ mov dx, 00080h ; ba 80 00 ; 0xf4f77
+ out DX, AL ; ee ; 0xf4f7a
+ jmp short 04f66h ; eb e9 ; 0xf4f7b
+ test bx, bx ; 85 db ; 0xf4f7d keyboard.c:258
+ jne short 04f87h ; 75 06 ; 0xf4f7f
+ mov ax, strict word 00014h ; b8 14 00 ; 0xf4f81
+ call 04e8bh ; e8 04 ff ; 0xf4f84
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f87 keyboard.c:261
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f8a keyboard.c:262
+ in AL, DX ; ec ; 0xf4f8d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f8e
+ test AL, strict byte 001h ; a8 01 ; 0xf4f90
+ jne short 04fa1h ; 75 0d ; 0xf4f92
+ dec bx ; 4b ; 0xf4f94
+ test bx, bx ; 85 db ; 0xf4f95
+ jbe short 04fa1h ; 76 08 ; 0xf4f97
+ mov AL, strict byte 021h ; b0 21 ; 0xf4f99
+ mov dx, 00080h ; ba 80 00 ; 0xf4f9b
+ out DX, AL ; ee ; 0xf4f9e
+ jmp short 04f8ah ; eb e9 ; 0xf4f9f
+ test bx, bx ; 85 db ; 0xf4fa1 keyboard.c:263
+ jne short 04fabh ; 75 06 ; 0xf4fa3
+ mov ax, strict word 00015h ; b8 15 00 ; 0xf4fa5
+ call 04e8bh ; e8 e0 fe ; 0xf4fa8
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4fab keyboard.c:266
+ in AL, DX ; ec ; 0xf4fae
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4faf
+ cmp ax, 000fah ; 3d fa 00 ; 0xf4fb1
+ je short 04fbch ; 74 06 ; 0xf4fb4
+ mov ax, 003e1h ; b8 e1 03 ; 0xf4fb6 keyboard.c:267
+ call 04e8bh ; e8 cf fe ; 0xf4fb9
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fbc keyboard.c:271
+ in AL, DX ; ec ; 0xf4fbf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fc0
+ test AL, strict byte 001h ; a8 01 ; 0xf4fc2
+ jne short 04fceh ; 75 08 ; 0xf4fc4
+ mov AL, strict byte 031h ; b0 31 ; 0xf4fc6
+ mov dx, 00080h ; ba 80 00 ; 0xf4fc8
+ out DX, AL ; ee ; 0xf4fcb
+ jmp short 04fbch ; eb ee ; 0xf4fcc
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4fce keyboard.c:273
+ in AL, DX ; ec ; 0xf4fd1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fd2
+ cmp ax, 000aah ; 3d aa 00 ; 0xf4fd4
+ je short 04fe7h ; 74 0e ; 0xf4fd7
+ in AL, DX ; ec ; 0xf4fd9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fda
+ cmp ax, 000aah ; 3d aa 00 ; 0xf4fdc
+ je short 04fe7h ; 74 06 ; 0xf4fdf
+ mov ax, 003e2h ; b8 e2 03 ; 0xf4fe1 keyboard.c:274
+ call 04e8bh ; e8 a4 fe ; 0xf4fe4
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf4fe7 keyboard.c:278
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4fe9
+ out DX, AL ; ee ; 0xf4fec
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fed keyboard.c:281
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ff0 keyboard.c:282
+ in AL, DX ; ec ; 0xf4ff3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ff4
+ test AL, strict byte 002h ; a8 02 ; 0xf4ff6
+ je short 05007h ; 74 0d ; 0xf4ff8
+ dec bx ; 4b ; 0xf4ffa
+ test bx, bx ; 85 db ; 0xf4ffb
+ jbe short 05007h ; 76 08 ; 0xf4ffd
+ mov AL, strict byte 040h ; b0 40 ; 0xf4fff
+ mov dx, 00080h ; ba 80 00 ; 0xf5001
+ out DX, AL ; ee ; 0xf5004
+ jmp short 04ff0h ; eb e9 ; 0xf5005
+ test bx, bx ; 85 db ; 0xf5007 keyboard.c:283
+ jne short 05011h ; 75 06 ; 0xf5009
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf500b
+ call 04e8bh ; e8 7a fe ; 0xf500e
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5011 keyboard.c:286
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5014 keyboard.c:287
+ in AL, DX ; ec ; 0xf5017
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5018
+ test AL, strict byte 001h ; a8 01 ; 0xf501a
+ jne short 0502bh ; 75 0d ; 0xf501c
+ dec bx ; 4b ; 0xf501e
+ test bx, bx ; 85 db ; 0xf501f
+ jbe short 0502bh ; 76 08 ; 0xf5021
+ mov AL, strict byte 041h ; b0 41 ; 0xf5023
+ mov dx, 00080h ; ba 80 00 ; 0xf5025
+ out DX, AL ; ee ; 0xf5028
+ jmp short 05014h ; eb e9 ; 0xf5029
+ test bx, bx ; 85 db ; 0xf502b keyboard.c:288
+ jne short 05035h ; 75 06 ; 0xf502d
+ mov ax, strict word 00029h ; b8 29 00 ; 0xf502f
+ call 04e8bh ; e8 56 fe ; 0xf5032
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5035 keyboard.c:291
+ in AL, DX ; ec ; 0xf5038
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5039
+ cmp ax, 000fah ; 3d fa 00 ; 0xf503b
+ je short 05046h ; 74 06 ; 0xf503e
+ mov ax, 003e3h ; b8 e3 03 ; 0xf5040 keyboard.c:292
+ call 04e8bh ; e8 45 fe ; 0xf5043
+ mov AL, strict byte 060h ; b0 60 ; 0xf5046 keyboard.c:296
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5048
+ out DX, AL ; ee ; 0xf504b
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf504c keyboard.c:299
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf504f keyboard.c:300
+ in AL, DX ; ec ; 0xf5052
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5053
+ test AL, strict byte 002h ; a8 02 ; 0xf5055
+ je short 05066h ; 74 0d ; 0xf5057
+ dec bx ; 4b ; 0xf5059
+ test bx, bx ; 85 db ; 0xf505a
+ jbe short 05066h ; 76 08 ; 0xf505c
+ mov AL, strict byte 050h ; b0 50 ; 0xf505e
+ mov dx, 00080h ; ba 80 00 ; 0xf5060
+ out DX, AL ; ee ; 0xf5063
+ jmp short 0504fh ; eb e9 ; 0xf5064
+ test bx, bx ; 85 db ; 0xf5066 keyboard.c:301
+ jne short 05070h ; 75 06 ; 0xf5068
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf506a
+ call 04e8bh ; e8 1b fe ; 0xf506d
+ mov AL, strict byte 065h ; b0 65 ; 0xf5070 keyboard.c:304
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5072
+ out DX, AL ; ee ; 0xf5075
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5076 keyboard.c:307
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5079 keyboard.c:308
+ in AL, DX ; ec ; 0xf507c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf507d
+ test AL, strict byte 002h ; a8 02 ; 0xf507f
+ je short 05090h ; 74 0d ; 0xf5081
+ dec bx ; 4b ; 0xf5083
+ test bx, bx ; 85 db ; 0xf5084
+ jbe short 05090h ; 76 08 ; 0xf5086
+ mov AL, strict byte 060h ; b0 60 ; 0xf5088
+ mov dx, 00080h ; ba 80 00 ; 0xf508a
+ out DX, AL ; ee ; 0xf508d
+ jmp short 05079h ; eb e9 ; 0xf508e
+ test bx, bx ; 85 db ; 0xf5090 keyboard.c:309
+ jne short 0509ah ; 75 06 ; 0xf5092
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf5094
+ call 04e8bh ; e8 f1 fd ; 0xf5097
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf509a keyboard.c:312
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf509c
+ out DX, AL ; ee ; 0xf509f
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf50a0 keyboard.c:315
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50a3 keyboard.c:316
+ in AL, DX ; ec ; 0xf50a6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50a7
+ test AL, strict byte 002h ; a8 02 ; 0xf50a9
+ je short 050bah ; 74 0d ; 0xf50ab
+ dec bx ; 4b ; 0xf50ad
+ test bx, bx ; 85 db ; 0xf50ae
+ jbe short 050bah ; 76 08 ; 0xf50b0
+ mov AL, strict byte 070h ; b0 70 ; 0xf50b2
+ mov dx, 00080h ; ba 80 00 ; 0xf50b4
+ out DX, AL ; ee ; 0xf50b7
+ jmp short 050a3h ; eb e9 ; 0xf50b8
+ test bx, bx ; 85 db ; 0xf50ba keyboard.c:317
+ jne short 050c4h ; 75 06 ; 0xf50bc
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf50be
+ call 04e8bh ; e8 c7 fd ; 0xf50c1
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf50c4 keyboard.c:320
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50c7 keyboard.c:321
+ in AL, DX ; ec ; 0xf50ca
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50cb
+ test AL, strict byte 001h ; a8 01 ; 0xf50cd
+ jne short 050deh ; 75 0d ; 0xf50cf
+ dec bx ; 4b ; 0xf50d1
+ test bx, bx ; 85 db ; 0xf50d2
+ jbe short 050deh ; 76 08 ; 0xf50d4
+ mov AL, strict byte 071h ; b0 71 ; 0xf50d6
+ mov dx, 00080h ; ba 80 00 ; 0xf50d8
+ out DX, AL ; ee ; 0xf50db
+ jmp short 050c7h ; eb e9 ; 0xf50dc
+ test bx, bx ; 85 db ; 0xf50de keyboard.c:322
+ jne short 050e8h ; 75 06 ; 0xf50e0
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf50e2
+ call 04e8bh ; e8 a3 fd ; 0xf50e5
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50e8 keyboard.c:325
+ in AL, DX ; ec ; 0xf50eb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50ec
+ cmp ax, 000fah ; 3d fa 00 ; 0xf50ee
+ je short 050f9h ; 74 06 ; 0xf50f1
+ mov ax, 003e4h ; b8 e4 03 ; 0xf50f3 keyboard.c:326
+ call 04e8bh ; e8 92 fd ; 0xf50f6
+ mov AL, strict byte 0a8h ; b0 a8 ; 0xf50f9 keyboard.c:330
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50fb
+ out DX, AL ; ee ; 0xf50fe
+ xor ax, ax ; 31 c0 ; 0xf50ff keyboard.c:335
+ call 0653ah ; e8 36 14 ; 0xf5101
+ mov sp, bp ; 89 ec ; 0xf5104 keyboard.c:336
+ pop bp ; 5d ; 0xf5106
+ retn ; c3 ; 0xf5107
+ ; disGetNextSymbol 0xf5108 LB 0x61d0 -> off=0x0 cb=0000000000000053 uValue=00000000000f3b08 'enqueue_key'
+enqueue_key: ; 0xf5108 LB 0x53
+ push bx ; 53 ; 0xf5108 keyboard.c:339
+ push cx ; 51 ; 0xf5109
+ push si ; 56 ; 0xf510a
+ push di ; 57 ; 0xf510b
+ push bp ; 55 ; 0xf510c
+ mov bp, sp ; 89 e5 ; 0xf510d
+ mov dh, al ; 88 c6 ; 0xf510f
+ mov bx, 00080h ; bb 80 00 ; 0xf5111 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5114
+ mov es, ax ; 8e c0 ; 0xf5117
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf5119
+ mov bx, 00082h ; bb 82 00 ; 0xf511c keyboard.c:48
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf511f
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5122 keyboard.c:48
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf5125
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5128 keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf512b
+ mov bx, ax ; 89 c3 ; 0xf512e keyboard.c:354
+ inc ax ; 40 ; 0xf5130 keyboard.c:355
+ inc ax ; 40 ; 0xf5131
+ cmp ax, si ; 39 f0 ; 0xf5132 keyboard.c:356
+ jc short 05138h ; 72 02 ; 0xf5134
+ mov ax, di ; 89 f8 ; 0xf5136 keyboard.c:357
+ cmp ax, cx ; 39 c8 ; 0xf5138 keyboard.c:359
+ jne short 05140h ; 75 04 ; 0xf513a
+ xor ax, cx ; 31 c8 ; 0xf513c keyboard.c:360
+ jmp short 05155h ; eb 15 ; 0xf513e
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf5140 keyboard.c:43
+ mov es, cx ; 8e c1 ; 0xf5143
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5145
+ inc bx ; 43 ; 0xf5148 keyboard.c:363
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5149 keyboard.c:43
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf514c keyboard.c:53
+ mov word [es:bx], ax ; 26 89 07 ; 0xf514f
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5152 keyboard.c:365
+ pop bp ; 5d ; 0xf5155 keyboard.c:366
+ pop di ; 5f ; 0xf5156
+ pop si ; 5e ; 0xf5157
+ pop cx ; 59 ; 0xf5158
+ pop bx ; 5b ; 0xf5159
+ retn ; c3 ; 0xf515a
+ ; disGetNextSymbol 0xf515b LB 0x617d -> off=0x35 cb=00000000000003c4 uValue=00000000000f3b90 'int09_function'
+ db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
+ db 01dh, 008h, 054h, 047h, 052h, 015h, 052h, 015h, 052h, 0a7h, 052h, 0f0h, 051h, 018h, 053h, 073h
+ db 053h, 0edh, 053h, 0d2h, 053h, 076h, 052h, 015h, 052h, 015h, 052h, 0f5h, 052h, 007h, 052h, 05bh
+ db 053h, 0bdh, 053h, 0e8h, 053h
+int09_function: ; 0xf5190 LB 0x3c4
+ push bp ; 55 ; 0xf5190 keyboard.c:371
+ mov bp, sp ; 89 e5 ; 0xf5191
+ push si ; 56 ; 0xf5193
+ push di ; 57 ; 0xf5194
+ push ax ; 50 ; 0xf5195
+ push ax ; 50 ; 0xf5196
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5197 keyboard.c:382
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf519a
+ test al, al ; 84 c0 ; 0xf519d keyboard.c:384
+ jne short 051bah ; 75 19 ; 0xf519f
+ mov bx, 00eeah ; bb ea 0e ; 0xf51a1 keyboard.c:385
+ mov cx, ds ; 8c d9 ; 0xf51a4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf51a6
+ call 018cbh ; e8 1f c7 ; 0xf51a9
+ push 00597h ; 68 97 05 ; 0xf51ac
+ push strict byte 00004h ; 6a 04 ; 0xf51af
+ call 0190eh ; e8 5a c7 ; 0xf51b1
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf51b4
+ jmp near 052eeh ; e9 34 01 ; 0xf51b7 keyboard.c:386
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf51ba keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51bd
+ mov es, ax ; 8e c0 ; 0xf51c0
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf51c2
+ mov dl, bl ; 88 da ; 0xf51c5 keyboard.c:39
+ mov si, 00096h ; be 96 00 ; 0xf51c7 keyboard.c:38
+ mov bh, byte [es:si] ; 26 8a 3c ; 0xf51ca
+ mov byte [bp-006h], bh ; 88 7e fa ; 0xf51cd keyboard.c:39
+ mov si, strict word 00017h ; be 17 00 ; 0xf51d0 keyboard.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf51d3
+ mov dh, ah ; 88 e6 ; 0xf51d6 keyboard.c:39
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf51d8 keyboard.c:394
+ push CS ; 0e ; 0xf51db
+ pop ES ; 07 ; 0xf51dc
+ mov cx, strict word 00012h ; b9 12 00 ; 0xf51dd
+ mov di, 0515bh ; bf 5b 51 ; 0xf51e0
+ repne scasb ; f2 ae ; 0xf51e3
+ sal cx, 1 ; d1 e1 ; 0xf51e5
+ mov di, cx ; 89 cf ; 0xf51e7
+ mov cx, word [cs:di+0516ch] ; 2e 8b 8d 6c 51 ; 0xf51e9
+ jmp cx ; ff e1 ; 0xf51ee
+ xor dh, 040h ; 80 f6 40 ; 0xf51f0 keyboard.c:396
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf51f3 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51f6
+ mov es, ax ; 8e c0 ; 0xf51f9
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf51fb
+ or dl, 040h ; 80 ca 40 ; 0xf51fe keyboard.c:398
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5201 keyboard.c:43
+ jmp near 053e2h ; e9 db 01 ; 0xf5204
+ and dl, 0bfh ; 80 e2 bf ; 0xf5207 keyboard.c:402
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf520a keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf520d
+ mov es, ax ; 8e c0 ; 0xf5210
+ jmp near 053e2h ; e9 cd 01 ; 0xf5212
+ test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf5215 keyboard.c:411
+ jne short 05274h ; 75 59 ; 0xf5219
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf521b keyboard.c:412
+ and AL, strict byte 07fh ; 24 7f ; 0xf521e
+ cmp AL, strict byte 02ah ; 3c 2a ; 0xf5220
+ jne short 05229h ; 75 05 ; 0xf5222
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf5224
+ jmp short 0522ch ; eb 03 ; 0xf5227
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5229
+ test byte [bp-008h], 080h ; f6 46 f8 80 ; 0xf522c keyboard.c:413
+ je short 05238h ; 74 06 ; 0xf5230
+ not al ; f6 d0 ; 0xf5232 keyboard.c:414
+ and dh, al ; 20 c6 ; 0xf5234
+ jmp short 0523ah ; eb 02 ; 0xf5236 keyboard.c:415
+ or dh, al ; 08 c6 ; 0xf5238 keyboard.c:416
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf523a keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf523d
+ mov es, ax ; 8e c0 ; 0xf5240
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5242
+ jmp short 05274h ; eb 2d ; 0xf5245 keyboard.c:419
+ test bh, 001h ; f6 c7 01 ; 0xf5247 keyboard.c:422
+ jne short 052a5h ; 75 59 ; 0xf524a
+ or dh, 004h ; 80 ce 04 ; 0xf524c keyboard.c:423
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf524f keyboard.c:41
+ mov bx, si ; 89 f3 ; 0xf5252
+ mov es, ax ; 8e c0 ; 0xf5254 keyboard.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5256
+ test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf5259 keyboard.c:425
+ je short 0526bh ; 74 0c ; 0xf525d
+ or byte [bp-006h], 004h ; 80 4e fa 04 ; 0xf525f keyboard.c:426
+ mov bx, 00096h ; bb 96 00 ; 0xf5263 keyboard.c:41
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf5266
+ jmp short 05271h ; eb 06 ; 0xf5269 keyboard.c:428
+ or dl, 001h ; 80 ca 01 ; 0xf526b keyboard.c:429
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf526e keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5271 keyboard.c:43
+ jmp short 052a5h ; eb 2f ; 0xf5274 keyboard.c:433
+ test bh, 001h ; f6 c7 01 ; 0xf5276 keyboard.c:435
+ jne short 052cfh ; 75 54 ; 0xf5279
+ and dh, 0fbh ; 80 e6 fb ; 0xf527b keyboard.c:436
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf527e keyboard.c:43
+ mov es, ax ; 8e c0 ; 0xf5281
+ mov byte [es:si], dh ; 26 88 34 ; 0xf5283
+ test bh, 002h ; f6 c7 02 ; 0xf5286 keyboard.c:438
+ je short 0529ch ; 74 11 ; 0xf5289
+ and bh, 0fbh ; 80 e7 fb ; 0xf528b keyboard.c:439
+ mov byte [bp-006h], bh ; 88 7e fa ; 0xf528e
+ mov bx, 00096h ; bb 96 00 ; 0xf5291 keyboard.c:43
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5294
+ mov byte [es:bx], al ; 26 88 07 ; 0xf5297
+ jmp short 052cfh ; eb 33 ; 0xf529a keyboard.c:441
+ and dl, 0feh ; 80 e2 fe ; 0xf529c keyboard.c:442
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf529f keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52a2
+ jmp short 052cfh ; eb 28 ; 0xf52a5 keyboard.c:446
+ or dh, 008h ; 80 ce 08 ; 0xf52a7 keyboard.c:449
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52aa keyboard.c:41
+ mov bx, si ; 89 f3 ; 0xf52ad
+ mov es, ax ; 8e c0 ; 0xf52af keyboard.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf52b1
+ test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf52b4 keyboard.c:451
+ je short 052c6h ; 74 0c ; 0xf52b8
+ or byte [bp-006h], 008h ; 80 4e fa 08 ; 0xf52ba keyboard.c:452
+ mov bx, 00096h ; bb 96 00 ; 0xf52be keyboard.c:41
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf52c1
+ jmp short 052cch ; eb 06 ; 0xf52c4 keyboard.c:454
+ or dl, 002h ; 80 ca 02 ; 0xf52c6 keyboard.c:455
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52c9 keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52cc keyboard.c:43
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf52cf keyboard.c:458
+ and AL, strict byte 07fh ; 24 7f ; 0xf52d2
+ cmp AL, strict byte 01dh ; 3c 1d ; 0xf52d4
+ je short 052dch ; 74 04 ; 0xf52d6
+ and byte [bp-006h], 0feh ; 80 66 fa fe ; 0xf52d8
+ and byte [bp-006h], 0fdh ; 80 66 fa fd ; 0xf52dc
+ mov bx, 00096h ; bb 96 00 ; 0xf52e0
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52e3
+ mov es, ax ; 8e c0 ; 0xf52e6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52e8
+ mov byte [es:bx], al ; 26 88 07 ; 0xf52eb
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf52ee
+ pop di ; 5f ; 0xf52f1
+ pop si ; 5e ; 0xf52f2
+ pop bp ; 5d ; 0xf52f3
+ retn ; c3 ; 0xf52f4
+ and dh, 0f7h ; 80 e6 f7 ; 0xf52f5 keyboard.c:460
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52f8 keyboard.c:43
+ mov es, ax ; 8e c0 ; 0xf52fb
+ mov byte [es:si], dh ; 26 88 34 ; 0xf52fd
+ test bh, 002h ; f6 c7 02 ; 0xf5300 keyboard.c:462
+ je short 0530dh ; 74 08 ; 0xf5303
+ and bh, 0f7h ; 80 e7 f7 ; 0xf5305 keyboard.c:463
+ mov byte [bp-006h], bh ; 88 7e fa ; 0xf5308
+ jmp short 05291h ; eb 84 ; 0xf530b keyboard.c:464
+ and dl, 0fdh ; 80 e2 fd ; 0xf530d keyboard.c:466
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5310 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5313
+ jmp short 052cfh ; eb b7 ; 0xf5316 keyboard.c:469
+ test bh, 003h ; f6 c7 03 ; 0xf5318 keyboard.c:472
+ jne short 05331h ; 75 14 ; 0xf531b
+ or dl, 020h ; 80 ca 20 ; 0xf531d keyboard.c:474
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5320 keyboard.c:41
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5323
+ mov es, ax ; 8e c0 ; 0xf5326 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5328
+ xor dh, 020h ; 80 f6 20 ; 0xf532b keyboard.c:476
+ jmp near 053b6h ; e9 85 00 ; 0xf532e keyboard.c:477
+ or dl, 008h ; 80 ca 08 ; 0xf5331 keyboard.c:480
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5334 keyboard.c:41
+ mov es, ax ; 8e c0 ; 0xf5337
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5339
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf533c keyboard.c:43
+ mov ax, 000aeh ; b8 ae 00 ; 0xf533f keyboard.c:484
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5342
+ out DX, AL ; ee ; 0xf5345
+ call 0e034h ; e8 eb 8c ; 0xf5346 keyboard.c:485
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5349 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf534c
+ mov es, ax ; 8e c0 ; 0xf534f
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5351
+ test AL, strict byte 008h ; a8 08 ; 0xf5354 keyboard.c:39
+ jne short 05349h ; 75 f1 ; 0xf5356
+ jmp near 052cfh ; e9 74 ff ; 0xf5358 keyboard.c:492
+ test bh, 003h ; f6 c7 03 ; 0xf535b keyboard.c:494
+ je short 05363h ; 74 03 ; 0xf535e
+ jmp near 052cfh ; e9 6c ff ; 0xf5360
+ and dl, 0dfh ; 80 e2 df ; 0xf5363 keyboard.c:495
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5366 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5369
+ mov es, ax ; 8e c0 ; 0xf536c
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf536e
+ jmp short 05360h ; eb ed ; 0xf5371 keyboard.c:498
+ test bh, 002h ; f6 c7 02 ; 0xf5373 keyboard.c:501
+ je short 053a5h ; 74 2d ; 0xf5376
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5378 keyboard.c:46
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf537b
+ mov es, ax ; 8e c0 ; 0xf537e keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5380
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5383 keyboard.c:51
+ mov word [es:bx], ax ; 26 89 07 ; 0xf5386 keyboard.c:53
+ mov bx, strict word 00071h ; bb 71 00 ; 0xf5389 keyboard.c:41
+ mov AL, strict byte 080h ; b0 80 ; 0xf538c
+ mov byte [es:bx], al ; 26 88 07 ; 0xf538e keyboard.c:43
+ mov ax, 000aeh ; b8 ae 00 ; 0xf5391 keyboard.c:506
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5394
+ out DX, AL ; ee ; 0xf5397
+ push bp ; 55 ; 0xf5398 keyboard.c:507
+ int 01bh ; cd 1b ; 0xf5399
+ pop bp ; 5d ; 0xf539b
+ xor dx, dx ; 31 d2 ; 0xf539c keyboard.c:508
+ xor ax, ax ; 31 c0 ; 0xf539e
+ call 05108h ; e8 65 fd ; 0xf53a0
+ jmp short 05360h ; eb bb ; 0xf53a3 keyboard.c:509
+ or dl, 010h ; 80 ca 10 ; 0xf53a5 keyboard.c:510
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53a8 keyboard.c:41
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53ab
+ mov es, ax ; 8e c0 ; 0xf53ae keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53b0
+ xor dh, 010h ; 80 f6 10 ; 0xf53b3 keyboard.c:512
+ mov bx, si ; 89 f3 ; 0xf53b6 keyboard.c:41
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf53b8 keyboard.c:43
+ jmp short 05360h ; eb a3 ; 0xf53bb keyboard.c:515
+ test bh, 002h ; f6 c7 02 ; 0xf53bd keyboard.c:518
+ jne short 05360h ; 75 9e ; 0xf53c0
+ and dl, 0efh ; 80 e2 ef ; 0xf53c2 keyboard.c:519
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53c5 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53c8
+ mov es, ax ; 8e c0 ; 0xf53cb
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53cd
+ jmp short 05360h ; eb 8e ; 0xf53d0 keyboard.c:522
+ test bl, 004h ; f6 c3 04 ; 0xf53d2 keyboard.c:525
+ jne short 05360h ; 75 89 ; 0xf53d5
+ or dl, 004h ; 80 ca 04 ; 0xf53d7 keyboard.c:526
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53da keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53dd
+ mov es, ax ; 8e c0 ; 0xf53e0
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53e2
+ jmp near 052cfh ; e9 e7 fe ; 0xf53e5 keyboard.c:530
+ and dl, 0fbh ; 80 e2 fb ; 0xf53e8 keyboard.c:533
+ jmp short 053dah ; eb ed ; 0xf53eb keyboard.c:534
+ mov al, ah ; 88 e0 ; 0xf53ed keyboard.c:539
+ and AL, strict byte 00ch ; 24 0c ; 0xf53ef
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf53f1
+ jne short 05408h ; 75 13 ; 0xf53f3
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53f5 keyboard.c:51
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf53f8
+ mov cx, 01234h ; b9 34 12 ; 0xf53fb
+ mov es, ax ; 8e c0 ; 0xf53fe keyboard.c:53
+ mov word [es:bx], cx ; 26 89 0f ; 0xf5400
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf5403 keyboard.c:542
+ test dl, 008h ; f6 c2 08 ; 0xf5408 keyboard.c:548
+ je short 0541eh ; 74 11 ; 0xf540b
+ and dl, 0f7h ; 80 e2 f7 ; 0xf540d keyboard.c:550
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5410 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5413
+ mov es, ax ; 8e c0 ; 0xf5416
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5418
+ jmp near 052eeh ; e9 d0 fe ; 0xf541b keyboard.c:552
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf541e keyboard.c:555
+ test AL, strict byte 080h ; a8 80 ; 0xf5421
+ je short 05453h ; 74 2e ; 0xf5423
+ cmp AL, strict byte 0fah ; 3c fa ; 0xf5425 keyboard.c:557
+ jne short 05439h ; 75 10 ; 0xf5427
+ mov bx, 00097h ; bb 97 00 ; 0xf5429 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf542c
+ mov es, ax ; 8e c0 ; 0xf542f
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5431
+ or ah, 010h ; 80 cc 10 ; 0xf5434 keyboard.c:39
+ jmp short 0544eh ; eb 15 ; 0xf5437 keyboard.c:560
+ cmp AL, strict byte 0feh ; 3c fe ; 0xf5439
+ je short 05440h ; 74 03 ; 0xf543b
+ jmp near 052cfh ; e9 8f fe ; 0xf543d
+ mov bx, 00097h ; bb 97 00 ; 0xf5440 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5443
+ mov es, ax ; 8e c0 ; 0xf5446
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5448
+ or ah, 020h ; 80 cc 20 ; 0xf544b keyboard.c:39
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf544e keyboard.c:43
+ jmp short 0543dh ; eb ea ; 0xf5451 keyboard.c:564
+ cmp byte [bp-008h], 058h ; 80 7e f8 58 ; 0xf5453 keyboard.c:566
+ jbe short 05478h ; 76 1f ; 0xf5457
+ mov bx, 00eeah ; bb ea 0e ; 0xf5459 keyboard.c:567
+ mov cx, ds ; 8c d9 ; 0xf545c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf545e
+ call 018cbh ; e8 67 c4 ; 0xf5461
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5464
+ xor ah, ah ; 30 e4 ; 0xf5467
+ push ax ; 50 ; 0xf5469
+ push 005b1h ; 68 b1 05 ; 0xf546a
+ push strict byte 00004h ; 6a 04 ; 0xf546d
+ call 0190eh ; e8 9c c4 ; 0xf546f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf5472
+ jmp near 052eeh ; e9 76 fe ; 0xf5475 keyboard.c:568
+ test dh, 008h ; f6 c6 08 ; 0xf5478 keyboard.c:570
+ je short 05490h ; 74 13 ; 0xf547b
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf547d keyboard.c:571
+ xor bh, bh ; 30 ff ; 0xf5480
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5482
+ mov dl, byte [bx+00f3eh] ; 8a 97 3e 0f ; 0xf5485
+ mov ax, word [bx+00f3eh] ; 8b 87 3e 0f ; 0xf5489 keyboard.c:572
+ jmp near 05524h ; e9 94 00 ; 0xf548d keyboard.c:573
+ test dh, 004h ; f6 c6 04 ; 0xf5490
+ je short 054a8h ; 74 13 ; 0xf5493
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf5495 keyboard.c:574
+ xor bh, bh ; 30 ff ; 0xf5498
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf549a
+ mov dl, byte [bx+00f3ch] ; 8a 97 3c 0f ; 0xf549d
+ mov ax, word [bx+00f3ch] ; 8b 87 3c 0f ; 0xf54a1 keyboard.c:575
+ jmp near 05524h ; e9 7c 00 ; 0xf54a5 keyboard.c:576
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf54a8
+ and AL, strict byte 002h ; 24 02 ; 0xf54ab
+ test al, al ; 84 c0 ; 0xf54ad
+ jbe short 054c7h ; 76 16 ; 0xf54af
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf54b1
+ cmp AL, strict byte 047h ; 3c 47 ; 0xf54b4
+ jc short 054c7h ; 72 0f ; 0xf54b6
+ cmp AL, strict byte 053h ; 3c 53 ; 0xf54b8
+ jnbe short 054c7h ; 77 0b ; 0xf54ba
+ mov DL, strict byte 0e0h ; b2 e0 ; 0xf54bc keyboard.c:578
+ mov bl, al ; 88 c3 ; 0xf54be keyboard.c:579
+ xor bh, bh ; 30 ff ; 0xf54c0
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf54c2
+ jmp short 05520h ; eb 59 ; 0xf54c5 keyboard.c:580
+ test dh, 003h ; f6 c6 03 ; 0xf54c7
+ je short 054fch ; 74 30 ; 0xf54ca
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf54cc keyboard.c:584
+ xor bh, bh ; 30 ff ; 0xf54cf
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf54d1
+ mov cl, byte [bx+00f40h] ; 8a 8f 40 0f ; 0xf54d4
+ xor ch, ch ; 30 ed ; 0xf54d8
+ mov al, dh ; 88 f0 ; 0xf54da
+ xor ah, ah ; 30 e4 ; 0xf54dc
+ test ax, cx ; 85 c8 ; 0xf54de
+ je short 054ech ; 74 0a ; 0xf54e0
+ mov dl, byte [bx+00f38h] ; 8a 97 38 0f ; 0xf54e2 keyboard.c:585
+ mov ax, word [bx+00f38h] ; 8b 87 38 0f ; 0xf54e6 keyboard.c:586
+ jmp short 054f4h ; eb 08 ; 0xf54ea keyboard.c:587
+ mov dl, byte [bx+00f3ah] ; 8a 97 3a 0f ; 0xf54ec keyboard.c:588
+ mov ax, word [bx+00f3ah] ; 8b 87 3a 0f ; 0xf54f0 keyboard.c:589
+ shr ax, 008h ; c1 e8 08 ; 0xf54f4
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf54f7
+ jmp short 0552ah ; eb 2e ; 0xf54fa keyboard.c:591
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf54fc keyboard.c:593
+ xor bh, bh ; 30 ff ; 0xf54ff
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5501
+ mov al, byte [bx+00f40h] ; 8a 87 40 0f ; 0xf5504
+ xor ah, ah ; 30 e4 ; 0xf5508
+ mov dl, dh ; 88 f2 ; 0xf550a
+ xor dh, dh ; 30 f6 ; 0xf550c
+ test dx, ax ; 85 c2 ; 0xf550e
+ je short 0551ch ; 74 0a ; 0xf5510
+ mov dl, byte [bx+00f3ah] ; 8a 97 3a 0f ; 0xf5512 keyboard.c:594
+ mov ax, word [bx+00f3ah] ; 8b 87 3a 0f ; 0xf5516 keyboard.c:595
+ jmp short 05524h ; eb 08 ; 0xf551a keyboard.c:596
+ mov dl, byte [bx+00f38h] ; 8a 97 38 0f ; 0xf551c keyboard.c:597
+ mov ax, word [bx+00f38h] ; 8b 87 38 0f ; 0xf5520 keyboard.c:598
+ shr ax, 008h ; c1 e8 08 ; 0xf5524
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf5527
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf552a keyboard.c:601
+ jne short 0554ah ; 75 1a ; 0xf552e
+ test dl, dl ; 84 d2 ; 0xf5530
+ jne short 0554ah ; 75 16 ; 0xf5532
+ mov bx, 00eeah ; bb ea 0e ; 0xf5534 keyboard.c:602
+ mov cx, ds ; 8c d9 ; 0xf5537
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5539
+ call 018cbh ; e8 8c c3 ; 0xf553c
+ push 005e8h ; 68 e8 05 ; 0xf553f
+ push strict byte 00004h ; 6a 04 ; 0xf5542
+ call 0190eh ; e8 c7 c3 ; 0xf5544
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5547
+ xor dh, dh ; 30 f6 ; 0xf554a keyboard.c:604
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf554c
+ xor ah, ah ; 30 e4 ; 0xf554f
+ jmp near 053a0h ; e9 4c fe ; 0xf5551
+ ; disGetNextSymbol 0xf5554 LB 0x5d84 -> off=0x0 cb=000000000000006c uValue=00000000000f3f54 'dequeue_key'
+dequeue_key: ; 0xf5554 LB 0x6c
+ push si ; 56 ; 0xf5554 keyboard.c:614
+ push di ; 57 ; 0xf5555
+ enter 00002h, 000h ; c8 02 00 00 ; 0xf5556
+ push ax ; 50 ; 0xf555a
+ push dx ; 52 ; 0xf555b
+ mov si, bx ; 89 de ; 0xf555c
+ mov bx, 00080h ; bb 80 00 ; 0xf555e keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5561
+ mov es, ax ; 8e c0 ; 0xf5564
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5566
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf5569
+ mov bx, 00082h ; bb 82 00 ; 0xf556c keyboard.c:48
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf556f
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5572 keyboard.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf5575
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf5578 keyboard.c:48
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf557b
+ cmp bx, ax ; 39 c3 ; 0xf557e keyboard.c:630
+ je short 055b8h ; 74 36 ; 0xf5580
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5582 keyboard.c:38
+ lea di, [bx+001h] ; 8d 7f 01 ; 0xf5585 keyboard.c:632
+ mov ah, byte [es:di] ; 26 8a 25 ; 0xf5588 keyboard.c:38
+ mov es, cx ; 8e c1 ; 0xf558b keyboard.c:633
+ mov byte [es:si], al ; 26 88 04 ; 0xf558d
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5590 keyboard.c:634
+ mov si, word [bp-004h] ; 8b 76 fc ; 0xf5593
+ mov byte [es:si], ah ; 26 88 24 ; 0xf5596
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf5599 keyboard.c:637
+ je short 055b3h ; 74 14 ; 0xf559d
+ inc bx ; 43 ; 0xf559f keyboard.c:638
+ inc bx ; 43 ; 0xf55a0
+ cmp bx, dx ; 39 d3 ; 0xf55a1 keyboard.c:639
+ jc short 055a8h ; 72 03 ; 0xf55a3
+ mov bx, word [bp-002h] ; 8b 5e fe ; 0xf55a5 keyboard.c:640
+ mov si, strict word 0001ah ; be 1a 00 ; 0xf55a8 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf55ab
+ mov es, ax ; 8e c0 ; 0xf55ae
+ mov word [es:si], bx ; 26 89 1c ; 0xf55b0
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf55b3 keyboard.c:643
+ jmp short 055bah ; eb 02 ; 0xf55b6
+ xor ax, ax ; 31 c0 ; 0xf55b8 keyboard.c:646
+ leave ; c9 ; 0xf55ba keyboard.c:648
+ pop di ; 5f ; 0xf55bb
+ pop si ; 5e ; 0xf55bc
+ retn 00002h ; c2 02 00 ; 0xf55bd
+ ; disGetNextSymbol 0xf55c0 LB 0x5d18 -> off=0x23 cb=00000000000002ee uValue=00000000000f3fe3 'int16_function'
+ db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 0e4h, 056h, 09bh, 056h, 02eh
+ db 057h, 07bh, 057h, 08eh, 057h, 0b7h, 057h, 0c0h, 057h, 031h, 058h, 063h, 058h, 093h, 058h, 0c6h
+ db 058h, 027h, 057h
+int16_function: ; 0xf55e3 LB 0x2ee
+ push bp ; 55 ; 0xf55e3 keyboard.c:665
+ mov bp, sp ; 89 e5 ; 0xf55e4
+ push si ; 56 ; 0xf55e6
+ push di ; 57 ; 0xf55e7
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf55e8
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf55eb keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf55ee
+ mov es, ax ; 8e c0 ; 0xf55f1
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf55f3
+ mov bl, al ; 88 c3 ; 0xf55f6 keyboard.c:39
+ mov si, 00097h ; be 97 00 ; 0xf55f8 keyboard.c:38
+ mov dl, byte [es:si] ; 26 8a 14 ; 0xf55fb
+ mov bh, dl ; 88 d7 ; 0xf55fe keyboard.c:39
+ xor ah, ah ; 30 e4 ; 0xf5600 keyboard.c:674
+ mov cx, ax ; 89 c1 ; 0xf5602
+ sar cx, 004h ; c1 f9 04 ; 0xf5604
+ and cl, 007h ; 80 e1 07 ; 0xf5607
+ mov al, dl ; 88 d0 ; 0xf560a
+ and AL, strict byte 007h ; 24 07 ; 0xf560c
+ xor al, cl ; 30 c8 ; 0xf560e
+ test ax, ax ; 85 c0 ; 0xf5610
+ je short 0567bh ; 74 67 ; 0xf5612
+ cli ; fa ; 0xf5614 keyboard.c:675
+ mov AL, strict byte 0edh ; b0 ed ; 0xf5615 keyboard.c:676
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5617
+ out DX, AL ; ee ; 0xf561a
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf561b keyboard.c:677
+ in AL, DX ; ec ; 0xf561e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf561f
+ test AL, strict byte 001h ; a8 01 ; 0xf5621
+ jne short 0562dh ; 75 08 ; 0xf5623
+ mov AL, strict byte 021h ; b0 21 ; 0xf5625
+ mov dx, 00080h ; ba 80 00 ; 0xf5627
+ out DX, AL ; ee ; 0xf562a
+ jmp short 0561bh ; eb ee ; 0xf562b
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf562d keyboard.c:678
+ in AL, DX ; ec ; 0xf5630
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5631
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5633
+ jne short 0567ah ; 75 42 ; 0xf5636
+ mov dl, bh ; 88 fa ; 0xf5638 keyboard.c:679
+ and dl, 0c8h ; 80 e2 c8 ; 0xf563a
+ mov al, bl ; 88 d8 ; 0xf563d keyboard.c:680
+ xor ah, ah ; 30 e4 ; 0xf563f
+ mov cx, ax ; 89 c1 ; 0xf5641
+ sar cx, 004h ; c1 f9 04 ; 0xf5643
+ and cl, 007h ; 80 e1 07 ; 0xf5646
+ xor dh, dh ; 30 f6 ; 0xf5649
+ mov ax, dx ; 89 d0 ; 0xf564b
+ or al, cl ; 08 c8 ; 0xf564d
+ mov bh, al ; 88 c7 ; 0xf564f
+ and AL, strict byte 007h ; 24 07 ; 0xf5651 keyboard.c:681
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5653
+ out DX, AL ; ee ; 0xf5656
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5657 keyboard.c:682
+ in AL, DX ; ec ; 0xf565a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf565b
+ test AL, strict byte 001h ; a8 01 ; 0xf565d
+ jne short 05669h ; 75 08 ; 0xf565f
+ mov AL, strict byte 021h ; b0 21 ; 0xf5661 keyboard.c:683
+ mov dx, 00080h ; ba 80 00 ; 0xf5663
+ out DX, AL ; ee ; 0xf5666
+ jmp short 05657h ; eb ee ; 0xf5667
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5669 keyboard.c:684
+ in AL, DX ; ec ; 0xf566c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf566d
+ mov si, 00097h ; be 97 00 ; 0xf566f keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5672
+ mov es, ax ; 8e c0 ; 0xf5675
+ mov byte [es:si], bh ; 26 88 3c ; 0xf5677
+ sti ; fb ; 0xf567a keyboard.c:687
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf567b keyboard.c:690
+ shr ax, 008h ; c1 e8 08 ; 0xf567e
+ cmp ax, 000a2h ; 3d a2 00 ; 0xf5681
+ jnbe short 056e4h ; 77 5e ; 0xf5684
+ push CS ; 0e ; 0xf5686
+ pop ES ; 07 ; 0xf5687
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf5688
+ mov di, 055c0h ; bf c0 55 ; 0xf568b
+ repne scasb ; f2 ae ; 0xf568e
+ sal cx, 1 ; d1 e1 ; 0xf5690
+ mov di, cx ; 89 cf ; 0xf5692
+ mov ax, word [cs:di+055cbh] ; 2e 8b 85 cb 55 ; 0xf5694
+ jmp ax ; ff e0 ; 0xf5699
+ push strict byte 00001h ; 6a 01 ; 0xf569b keyboard.c:692
+ mov cx, ss ; 8c d1 ; 0xf569d
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf569f
+ mov dx, ss ; 8c d2 ; 0xf56a2
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf56a4
+ call 05554h ; e8 aa fe ; 0xf56a7
+ test ax, ax ; 85 c0 ; 0xf56aa
+ jne short 056b9h ; 75 0b ; 0xf56ac
+ push 0061fh ; 68 1f 06 ; 0xf56ae keyboard.c:693
+ push strict byte 00007h ; 6a 07 ; 0xf56b1
+ call 0190eh ; e8 58 c2 ; 0xf56b3
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf56b6
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf56b9 keyboard.c:695
+ je short 056c5h ; 74 06 ; 0xf56bd
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf56bf
+ je short 056cbh ; 74 06 ; 0xf56c3
+ cmp byte [bp-006h], 0e0h ; 80 7e fa e0 ; 0xf56c5 keyboard.c:697
+ jne short 056cfh ; 75 04 ; 0xf56c9
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf56cb keyboard.c:698
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf56cf keyboard.c:699
+ xor ah, ah ; 30 e4 ; 0xf56d2
+ mov dx, ax ; 89 c2 ; 0xf56d4
+ sal dx, 008h ; c1 e2 08 ; 0xf56d6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf56d9
+ or dx, ax ; 09 c2 ; 0xf56dc
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf56de
+ jmp near 05727h ; e9 43 00 ; 0xf56e1 keyboard.c:700
+ mov bx, 00eeah ; bb ea 0e ; 0xf56e4
+ mov cx, ds ; 8c d9 ; 0xf56e7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf56e9
+ call 018cbh ; e8 dc c1 ; 0xf56ec
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf56ef
+ shr ax, 008h ; c1 e8 08 ; 0xf56f2
+ push ax ; 50 ; 0xf56f5
+ push 00643h ; 68 43 06 ; 0xf56f6
+ push strict byte 00004h ; 6a 04 ; 0xf56f9
+ call 0190eh ; e8 10 c2 ; 0xf56fb
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf56fe
+ mov bx, 00eeah ; bb ea 0e ; 0xf5701
+ mov cx, ds ; 8c d9 ; 0xf5704
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5706
+ call 018cbh ; e8 bf c1 ; 0xf5709
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf570c
+ push ax ; 50 ; 0xf570f
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5710
+ push ax ; 50 ; 0xf5713
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf5714
+ push ax ; 50 ; 0xf5717
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5718
+ push ax ; 50 ; 0xf571b
+ push 0066bh ; 68 6b 06 ; 0xf571c
+ push strict byte 00004h ; 6a 04 ; 0xf571f
+ call 0190eh ; e8 ea c1 ; 0xf5721
+ add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5724
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf5727
+ pop di ; 5f ; 0xf572a
+ pop si ; 5e ; 0xf572b
+ pop bp ; 5d ; 0xf572c
+ retn ; c3 ; 0xf572d
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf572e keyboard.c:704
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf5731
+ push strict byte 00000h ; 6a 00 ; 0xf5734 keyboard.c:705
+ mov cx, ss ; 8c d1 ; 0xf5736
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf5738
+ mov dx, ss ; 8c d2 ; 0xf573b
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf573d
+ call 05554h ; e8 11 fe ; 0xf5740
+ test ax, ax ; 85 c0 ; 0xf5743
+ jne short 0574dh ; 75 06 ; 0xf5745
+ or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf5747 keyboard.c:706
+ jmp short 05727h ; eb da ; 0xf574b keyboard.c:707
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf574d keyboard.c:709
+ je short 05759h ; 74 06 ; 0xf5751
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5753
+ je short 0575fh ; 74 06 ; 0xf5757
+ cmp byte [bp-006h], 0e0h ; 80 7e fa e0 ; 0xf5759 keyboard.c:711
+ jne short 05763h ; 75 04 ; 0xf575d
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf575f keyboard.c:712
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf5763 keyboard.c:713
+ xor ah, ah ; 30 e4 ; 0xf5766
+ mov dx, ax ; 89 c2 ; 0xf5768
+ sal dx, 008h ; c1 e2 08 ; 0xf576a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf576d
+ or dx, ax ; 09 c2 ; 0xf5770
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5772
+ and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf5775 keyboard.c:714
+ jmp short 05727h ; eb ac ; 0xf5779 keyboard.c:715
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf577b keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf577e
+ mov es, ax ; 8e c0 ; 0xf5781
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5783
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5786 keyboard.c:719
+ mov dl, al ; 88 c2 ; 0xf5789
+ jmp near 056deh ; e9 50 ff ; 0xf578b
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf578e keyboard.c:723
+ xor dh, dh ; 30 f6 ; 0xf5791
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5793
+ shr ax, 008h ; c1 e8 08 ; 0xf5796
+ xor ah, ah ; 30 e4 ; 0xf5799
+ call 05108h ; e8 6a f9 ; 0xf579b
+ test ax, ax ; 85 c0 ; 0xf579e
+ jne short 057afh ; 75 0d ; 0xf57a0
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf57a2 keyboard.c:724
+ xor al, al ; 30 c0 ; 0xf57a5
+ or AL, strict byte 001h ; 0c 01 ; 0xf57a7
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf57a9
+ jmp near 05727h ; e9 78 ff ; 0xf57ac keyboard.c:726
+ and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf57af keyboard.c:727
+ jmp near 05727h ; e9 70 ff ; 0xf57b4 keyboard.c:729
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf57b7 keyboard.c:742
+ xor al, al ; 30 c0 ; 0xf57ba
+ or AL, strict byte 030h ; 0c 30 ; 0xf57bc
+ jmp short 057a9h ; eb e9 ; 0xf57be
+ mov byte [bp-008h], 002h ; c6 46 f8 02 ; 0xf57c0 keyboard.c:746
+ xor cx, cx ; 31 c9 ; 0xf57c4 keyboard.c:747
+ cli ; fa ; 0xf57c6 keyboard.c:749
+ mov AL, strict byte 0f2h ; b0 f2 ; 0xf57c7 keyboard.c:750
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf57c9
+ out DX, AL ; ee ; 0xf57cc
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf57cd keyboard.c:752
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf57d0 keyboard.c:753
+ in AL, DX ; ec ; 0xf57d3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57d4
+ test AL, strict byte 001h ; a8 01 ; 0xf57d6
+ jne short 057e7h ; 75 0d ; 0xf57d8
+ dec bx ; 4b ; 0xf57da
+ test bx, bx ; 85 db ; 0xf57db
+ jbe short 057e7h ; 76 08 ; 0xf57dd
+ mov dx, 00080h ; ba 80 00 ; 0xf57df keyboard.c:754
+ in AL, DX ; ec ; 0xf57e2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57e3
+ jmp short 057d0h ; eb e9 ; 0xf57e5
+ test bx, bx ; 85 db ; 0xf57e7 keyboard.c:755
+ jbe short 0582bh ; 76 40 ; 0xf57e9
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf57eb keyboard.c:756
+ in AL, DX ; ec ; 0xf57ee
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57ef
+ cmp ax, 000fah ; 3d fa 00 ; 0xf57f1
+ jne short 0582bh ; 75 35 ; 0xf57f4
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf57f6 keyboard.c:758
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf57f9 keyboard.c:759
+ in AL, DX ; ec ; 0xf57fc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57fd
+ test AL, strict byte 001h ; a8 01 ; 0xf57ff
+ jne short 05810h ; 75 0d ; 0xf5801
+ dec bx ; 4b ; 0xf5803
+ test bx, bx ; 85 db ; 0xf5804
+ jbe short 05810h ; 76 08 ; 0xf5806
+ mov dx, 00080h ; ba 80 00 ; 0xf5808 keyboard.c:760
+ in AL, DX ; ec ; 0xf580b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf580c
+ jmp short 057f9h ; eb e9 ; 0xf580e
+ test bx, bx ; 85 db ; 0xf5810 keyboard.c:761
+ jbe short 05822h ; 76 0e ; 0xf5812
+ shr cx, 008h ; c1 e9 08 ; 0xf5814 keyboard.c:762
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5817 keyboard.c:763
+ in AL, DX ; ec ; 0xf581a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf581b
+ sal ax, 008h ; c1 e0 08 ; 0xf581d
+ or cx, ax ; 09 c1 ; 0xf5820
+ dec byte [bp-008h] ; fe 4e f8 ; 0xf5822 keyboard.c:765
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf5825
+ jnbe short 057f6h ; 77 cb ; 0xf5829
+ mov word [bp+00ch], cx ; 89 4e 0c ; 0xf582b keyboard.c:768
+ jmp near 05727h ; e9 f6 fe ; 0xf582e keyboard.c:769
+ push strict byte 00001h ; 6a 01 ; 0xf5831 keyboard.c:772
+ mov cx, ss ; 8c d1 ; 0xf5833
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf5835
+ mov dx, ss ; 8c d2 ; 0xf5838
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf583a
+ call 05554h ; e8 14 fd ; 0xf583d
+ test ax, ax ; 85 c0 ; 0xf5840
+ jne short 0584fh ; 75 0b ; 0xf5842
+ push 0061fh ; 68 1f 06 ; 0xf5844 keyboard.c:773
+ push strict byte 00007h ; 6a 07 ; 0xf5847
+ call 0190eh ; e8 c2 c0 ; 0xf5849
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf584c
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf584f keyboard.c:775
+ jne short 05858h ; 75 03 ; 0xf5853
+ jmp near 056cfh ; e9 77 fe ; 0xf5855
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5858
+ jne short 05861h ; 75 03 ; 0xf585c
+ jmp near 056cbh ; e9 6a fe ; 0xf585e
+ jmp short 05855h ; eb f2 ; 0xf5861
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf5863 keyboard.c:782
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf5866
+ push strict byte 00000h ; 6a 00 ; 0xf5869 keyboard.c:783
+ mov cx, ss ; 8c d1 ; 0xf586b
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf586d
+ mov dx, ss ; 8c d2 ; 0xf5870
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5872
+ call 05554h ; e8 dc fc ; 0xf5875
+ test ax, ax ; 85 c0 ; 0xf5878
+ jne short 0587fh ; 75 03 ; 0xf587a
+ jmp near 05747h ; e9 c8 fe ; 0xf587c
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf587f keyboard.c:787
+ jne short 05888h ; 75 03 ; 0xf5883
+ jmp near 05763h ; e9 db fe ; 0xf5885
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5888
+ jne short 05891h ; 75 03 ; 0xf588c
+ jmp near 0575fh ; e9 ce fe ; 0xf588e
+ jmp short 05885h ; eb f2 ; 0xf5891
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5893 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5896
+ mov es, ax ; 8e c0 ; 0xf5899
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf589b
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf589e keyboard.c:795
+ mov dl, al ; 88 c2 ; 0xf58a1
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf58a3
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf58a6 keyboard.c:38
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf58a9
+ and bl, 073h ; 80 e3 73 ; 0xf58ac keyboard.c:39
+ mov si, 00096h ; be 96 00 ; 0xf58af keyboard.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf58b2
+ and AL, strict byte 00ch ; 24 0c ; 0xf58b5 keyboard.c:39
+ or al, bl ; 08 d8 ; 0xf58b7
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf58b9 keyboard.c:798
+ xor dh, dh ; 30 f6 ; 0xf58bc
+ xor ah, ah ; 30 e4 ; 0xf58be
+ sal ax, 008h ; c1 e0 08 ; 0xf58c0
+ jmp near 056dch ; e9 16 fe ; 0xf58c3
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58c6 keyboard.c:803
+ xor ah, ah ; 30 e4 ; 0xf58c9
+ or ah, 080h ; 80 cc 80 ; 0xf58cb
+ jmp near 057a9h ; e9 d8 fe ; 0xf58ce
+ ; disGetNextSymbol 0xf58d1 LB 0x5a07 -> off=0x0 cb=00000000000000b5 uValue=00000000000f42d1 'set_geom_lba'
+set_geom_lba: ; 0xf58d1 LB 0xb5
+ push bx ; 53 ; 0xf58d1 disk.c:118
+ push cx ; 51 ; 0xf58d2
+ push si ; 56 ; 0xf58d3
+ push di ; 57 ; 0xf58d4
+ enter 00008h, 000h ; c8 08 00 00 ; 0xf58d5
+ mov di, ax ; 89 c7 ; 0xf58d9
+ mov es, dx ; 8e c2 ; 0xf58db
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf58dd disk.c:120
+ mov word [bp-006h], strict word 0007eh ; c7 46 fa 7e 00 ; 0xf58e2
+ mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf58e7 disk.c:122
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58ec disk.c:125
+ mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf58ef
+ mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf58f2
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf58f5
+ mov si, strict word 00020h ; be 20 00 ; 0xf58f8
+ call 0af90h ; e8 92 56 ; 0xf58fb
+ test ax, ax ; 85 c0 ; 0xf58fe
+ jne short 0590eh ; 75 0c ; 0xf5900
+ test bx, bx ; 85 db ; 0xf5902
+ jne short 0590eh ; 75 08 ; 0xf5904
+ test cx, cx ; 85 c9 ; 0xf5906
+ jne short 0590eh ; 75 04 ; 0xf5908
+ test dx, dx ; 85 d2 ; 0xf590a
+ je short 05915h ; 74 07 ; 0xf590c
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf590e
+ mov si, bx ; 89 de ; 0xf5911
+ jmp short 0591bh ; eb 06 ; 0xf5913
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf5915
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf5918
+ mov word [bp-004h], bx ; 89 5e fc ; 0xf591b
+ xor bx, bx ; 31 db ; 0xf591e disk.c:127
+ jmp short 05927h ; eb 05 ; 0xf5920
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf5922
+ jnl short 0594ah ; 7d 23 ; 0xf5925
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5927 disk.c:128
+ cmp si, ax ; 39 c6 ; 0xf592a
+ jc short 05938h ; 72 0a ; 0xf592c
+ jne short 05941h ; 75 11 ; 0xf592e
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5930
+ cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf5933
+ jnbe short 05941h ; 77 09 ; 0xf5936
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5938 disk.c:129
+ inc ax ; 40 ; 0xf593b
+ shr ax, 1 ; d1 e8 ; 0xf593c
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf593e
+ shr word [bp-006h], 1 ; d1 6e fa ; 0xf5941 disk.c:130
+ rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5944
+ inc bx ; 43 ; 0xf5947 disk.c:131
+ jmp short 05922h ; eb d8 ; 0xf5948
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf594a disk.c:133
+ xor dx, dx ; 31 d2 ; 0xf594d
+ mov bx, strict word 0003fh ; bb 3f 00 ; 0xf594f
+ xor cx, cx ; 31 c9 ; 0xf5952
+ call 0af40h ; e8 e9 55 ; 0xf5954
+ mov bx, ax ; 89 c3 ; 0xf5957
+ mov cx, dx ; 89 d1 ; 0xf5959
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf595b
+ mov dx, si ; 89 f2 ; 0xf595e
+ call 0af60h ; e8 fd 55 ; 0xf5960
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5963
+ cmp ax, 00400h ; 3d 00 04 ; 0xf5967 disk.c:134
+ jbe short 05972h ; 76 06 ; 0xf596a
+ mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf596c disk.c:135
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5972 disk.c:136
+ mov word [es:di], ax ; 26 89 05 ; 0xf5975
+ mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5978 disk.c:137
+ leave ; c9 ; 0xf597e disk.c:138
+ pop di ; 5f ; 0xf597f
+ pop si ; 5e ; 0xf5980
+ pop cx ; 59 ; 0xf5981
+ pop bx ; 5b ; 0xf5982
+ retn 00008h ; c2 08 00 ; 0xf5983
+ ; disGetNextSymbol 0xf5986 LB 0x5952 -> off=0x0 cb=00000000000002fc uValue=00000000000f4386 'edd_fill_dpt'
+edd_fill_dpt: ; 0xf5986 LB 0x2fc
+ push si ; 56 ; 0xf5986 disk.c:140
+ push di ; 57 ; 0xf5987
+ enter 0000ch, 000h ; c8 0c 00 00 ; 0xf5988
+ mov di, ax ; 89 c7 ; 0xf598c
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf598e
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf5991
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf5994
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5997 disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf599a
+ mov es, ax ; 8e c0 ; 0xf599d
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf599f
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf59a2 disk.c:49
+ mov es, dx ; 8e c2 ; 0xf59a5 disk.c:145
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf59a7
+ cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf59aa
+ jnc short 059b5h ; 73 06 ; 0xf59ad
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf59af disk.c:146
+ jmp near 05c7ch ; e9 c7 02 ; 0xf59b2
+ jc short 05a26h ; 72 6f ; 0xf59b5 disk.c:149
+ mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf59b7 disk.c:152
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf59bc disk.c:153
+ xor ah, ah ; 30 e4 ; 0xf59bf
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf59c1
+ mov dx, cx ; 89 ca ; 0xf59c4
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf59c6
+ add bx, ax ; 01 c3 ; 0xf59c9
+ mov es, cx ; 8e c1 ; 0xf59cb
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf59cd
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59d1
+ mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf59d4
+ mov es, cx ; 8e c1 ; 0xf59d8 disk.c:155
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf59da
+ jne short 05a28h ; 75 47 ; 0xf59df
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59e1 disk.c:156
+ mov word [es:di+002h], strict word 00074h ; 26 c7 45 02 74 00 ; 0xf59e4
+ mov word [es:di+004h], strict word 0ffffh ; 26 c7 45 04 ff ff ; 0xf59ea disk.c:157
+ mov word [es:di+006h], strict word 0ffffh ; 26 c7 45 06 ff ff ; 0xf59f0
+ mov word [es:di+008h], strict word 0ffffh ; 26 c7 45 08 ff ff ; 0xf59f6 disk.c:158
+ mov word [es:di+00ah], strict word 0ffffh ; 26 c7 45 0a ff ff ; 0xf59fc
+ mov word [es:di+00ch], strict word 0ffffh ; 26 c7 45 0c ff ff ; 0xf5a02 disk.c:159
+ mov word [es:di+00eh], strict word 0ffffh ; 26 c7 45 0e ff ff ; 0xf5a08
+ mov word [es:di+010h], strict word 0ffffh ; 26 c7 45 10 ff ff ; 0xf5a0e disk.c:160
+ mov word [es:di+012h], strict word 0ffffh ; 26 c7 45 12 ff ff ; 0xf5a14
+ mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff ; 0xf5a1a disk.c:161
+ mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf5a20
+ jmp short 05a97h ; eb 6f ; 0xf5a26 disk.c:162
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a28 disk.c:163
+ mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf5a2b
+ mov es, cx ; 8e c1 ; 0xf5a31 disk.c:164
+ mov ax, word [es:bx+032h] ; 26 8b 47 32 ; 0xf5a33
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a37
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5a3a
+ mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5a3e
+ mov es, cx ; 8e c1 ; 0xf5a44 disk.c:165
+ mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5a46
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a4a
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5a4d
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5a51
+ mov es, cx ; 8e c1 ; 0xf5a57 disk.c:166
+ mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5a59
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a5d
+ mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5a60
+ mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5a64
+ mov es, cx ; 8e c1 ; 0xf5a6a disk.c:167
+ mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf5a6c
+ mov si, word [es:bx+03ah] ; 26 8b 77 3a ; 0xf5a70
+ mov cx, word [es:bx+038h] ; 26 8b 4f 38 ; 0xf5a74
+ mov dx, word [es:bx+036h] ; 26 8b 57 36 ; 0xf5a78
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a7c disk.c:168
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5a7f
+ mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5a83
+ mov bx, si ; 89 f3 ; 0xf5a87 disk.c:169
+ mov si, strict word 00020h ; be 20 00 ; 0xf5a89
+ call 0af90h ; e8 01 55 ; 0xf5a8c
+ mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5a8f
+ mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5a93
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a97 disk.c:174
+ cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5a9a
+ jc short 05aefh ; 72 4f ; 0xf5a9e
+ mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5aa0 disk.c:178
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5aa5 disk.c:179
+ mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5aa8
+ mov word [es:di+01ah], 0030eh ; 26 c7 45 1a 0e 03 ; 0xf5aac disk.c:180
+ mov cl, byte [bp+008h] ; 8a 4e 08 ; 0xf5ab2 disk.c:183
+ xor ch, ch ; 30 ed ; 0xf5ab5
+ mov ax, cx ; 89 c8 ; 0xf5ab7
+ cwd ; 99 ; 0xf5ab9
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5aba
+ sar ax, 1 ; d1 f8 ; 0xf5abc
+ xor ah, ah ; 30 e4 ; 0xf5abe disk.c:184
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5ac0
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5ac3
+ add bx, ax ; 01 c3 ; 0xf5ac6
+ mov dx, word [es:bx+0027eh] ; 26 8b 97 7e 02 ; 0xf5ac8
+ mov ax, word [es:bx+00280h] ; 26 8b 87 80 02 ; 0xf5acd disk.c:185
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5ad2
+ mov al, byte [es:bx+0027dh] ; 26 8a 87 7d 02 ; 0xf5ad5 disk.c:186
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf5ada
+ imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf5add disk.c:188
+ add bx, word [bp-008h] ; 03 5e f8 ; 0xf5ae0
+ mov cl, byte [es:bx+027h] ; 26 8a 4f 27 ; 0xf5ae3
+ test cl, cl ; 84 c9 ; 0xf5ae7 disk.c:190
+ jne short 05af2h ; 75 07 ; 0xf5ae9
+ xor bx, bx ; 31 db ; 0xf5aeb
+ jmp short 05af5h ; eb 06 ; 0xf5aed
+ jmp near 05babh ; e9 b9 00 ; 0xf5aef
+ mov bx, strict word 00008h ; bb 08 00 ; 0xf5af2
+ or bl, 010h ; 80 cb 10 ; 0xf5af5 disk.c:191
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5af8 disk.c:192
+ xor ah, ah ; 30 e4 ; 0xf5afb
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5afd
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5b00
+ add si, ax ; 01 c6 ; 0xf5b03
+ cmp byte [es:si+023h], 005h ; 26 80 7c 23 05 ; 0xf5b05
+ jne short 05b0fh ; 75 03 ; 0xf5b0a
+ or bl, 060h ; 80 cb 60 ; 0xf5b0c disk.c:193
+ cmp cl, 001h ; 80 f9 01 ; 0xf5b0f disk.c:199
+ jne short 05b19h ; 75 05 ; 0xf5b12
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5b14
+ jmp short 05b1bh ; eb 02 ; 0xf5b17
+ xor ax, ax ; 31 c0 ; 0xf5b19
+ or bx, ax ; 09 c3 ; 0xf5b1b
+ cmp cl, 003h ; 80 f9 03 ; 0xf5b1d disk.c:200
+ jne short 05b27h ; 75 05 ; 0xf5b20
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf5b22
+ jmp short 05b29h ; eb 02 ; 0xf5b25
+ xor ax, ax ; 31 c0 ; 0xf5b27
+ or bx, ax ; 09 c3 ; 0xf5b29
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5b2b disk.c:202
+ mov word [es:si+002b0h], dx ; 26 89 94 b0 02 ; 0xf5b2e
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5b33 disk.c:203
+ mov word [es:si+002b2h], ax ; 26 89 84 b2 02 ; 0xf5b36
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5b3b disk.c:204
+ xor ah, ah ; 30 e4 ; 0xf5b3e
+ cwd ; 99 ; 0xf5b40
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf5b41
+ idiv cx ; f7 f9 ; 0xf5b44
+ or dl, 00eh ; 80 ca 0e ; 0xf5b46
+ sal dx, 004h ; c1 e2 04 ; 0xf5b49
+ mov byte [es:si+002b4h], dl ; 26 88 94 b4 02 ; 0xf5b4c
+ mov byte [es:si+002b5h], 0cbh ; 26 c6 84 b5 02 cb ; 0xf5b51 disk.c:205
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5b57 disk.c:206
+ mov byte [es:si+002b6h], al ; 26 88 84 b6 02 ; 0xf5b5a
+ mov word [es:si+002b7h], strict word 00001h ; 26 c7 84 b7 02 01 00 ; 0xf5b5f disk.c:207
+ mov byte [es:si+002b9h], 000h ; 26 c6 84 b9 02 00 ; 0xf5b66 disk.c:209
+ mov word [es:si+002bah], bx ; 26 89 9c ba 02 ; 0xf5b6c disk.c:210
+ mov bx, si ; 89 f3 ; 0xf5b71 disk.c:211
+ mov word [es:bx+002bch], strict word 00000h ; 26 c7 87 bc 02 00 00 ; 0xf5b73
+ mov byte [es:bx+002beh], 011h ; 26 c6 87 be 02 11 ; 0xf5b7a disk.c:212
+ xor bl, bl ; 30 db ; 0xf5b80 disk.c:214
+ xor bh, bh ; 30 ff ; 0xf5b82 disk.c:215
+ jmp short 05b8bh ; eb 05 ; 0xf5b84
+ cmp bh, 00fh ; 80 ff 0f ; 0xf5b86
+ jnc short 05ba1h ; 73 16 ; 0xf5b89
+ mov al, bh ; 88 f8 ; 0xf5b8b disk.c:216
+ xor ah, ah ; 30 e4 ; 0xf5b8d
+ mov si, ax ; 89 c6 ; 0xf5b8f
+ add si, 0030eh ; 81 c6 0e 03 ; 0xf5b91
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf5b95 disk.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5b98
+ add bl, al ; 00 c3 ; 0xf5b9b disk.c:39
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5b9d disk.c:216
+ jmp short 05b86h ; eb e5 ; 0xf5b9f
+ neg bl ; f6 db ; 0xf5ba1 disk.c:217
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5ba3 disk.c:218
+ mov byte [es:si+002bfh], bl ; 26 88 9c bf 02 ; 0xf5ba6
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5bab disk.c:222
+ cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5bae
+ jnc short 05bb7h ; 73 03 ; 0xf5bb2
+ jmp near 05c7ah ; e9 c3 00 ; 0xf5bb4
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5bb7 disk.c:226
+ xor ah, ah ; 30 e4 ; 0xf5bba
+ cwd ; 99 ; 0xf5bbc
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5bbd
+ sar ax, 1 ; d1 f8 ; 0xf5bbf
+ xor ah, ah ; 30 e4 ; 0xf5bc1 disk.c:227
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5bc3
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5bc6
+ add bx, ax ; 01 c3 ; 0xf5bc9
+ mov al, byte [es:bx+0027ch] ; 26 8a 87 7c 02 ; 0xf5bcb
+ mov dx, word [es:bx+0027eh] ; 26 8b 97 7e 02 ; 0xf5bd0 disk.c:228
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5bd5 disk.c:230
+ mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5bd8
+ mov word [es:di+01eh], 0beddh ; 26 c7 45 1e dd be ; 0xf5bdd disk.c:231
+ mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00 ; 0xf5be3 disk.c:232
+ mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5be9 disk.c:234
+ test al, al ; 84 c0 ; 0xf5bef disk.c:236
+ jne short 05bffh ; 75 0c ; 0xf5bf1
+ mov word [es:di+024h], 05349h ; 26 c7 45 24 49 53 ; 0xf5bf3 disk.c:237
+ mov word [es:di+026h], 02041h ; 26 c7 45 26 41 20 ; 0xf5bf9 disk.c:239
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5bff disk.c:245
+ mov word [es:di+028h], 05441h ; 26 c7 45 28 41 54 ; 0xf5c02
+ mov word [es:di+02ah], 02041h ; 26 c7 45 2a 41 20 ; 0xf5c08 disk.c:247
+ mov word [es:di+02ch], 02020h ; 26 c7 45 2c 20 20 ; 0xf5c0e disk.c:249
+ mov word [es:di+02eh], 02020h ; 26 c7 45 2e 20 20 ; 0xf5c14 disk.c:251
+ test al, al ; 84 c0 ; 0xf5c1a disk.c:254
+ jne short 05c34h ; 75 16 ; 0xf5c1c
+ mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5c1e disk.c:255
+ mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00 ; 0xf5c22 disk.c:256
+ mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00 ; 0xf5c28 disk.c:257
+ mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5c2e
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c34 disk.c:262
+ and AL, strict byte 001h ; 24 01 ; 0xf5c37
+ xor ah, ah ; 30 e4 ; 0xf5c39
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c3b
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5c3e
+ mov word [es:di+03ah], strict word 00000h ; 26 c7 45 3a 00 00 ; 0xf5c42 disk.c:263
+ mov word [es:di+03ch], strict word 00000h ; 26 c7 45 3c 00 00 ; 0xf5c48 disk.c:264
+ mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5c4e
+ xor bl, bl ; 30 db ; 0xf5c54 disk.c:266
+ mov BH, strict byte 01eh ; b7 1e ; 0xf5c56 disk.c:267
+ jmp short 05c5fh ; eb 05 ; 0xf5c58
+ cmp bh, 040h ; 80 ff 40 ; 0xf5c5a
+ jnc short 05c71h ; 73 12 ; 0xf5c5d
+ mov al, bh ; 88 f8 ; 0xf5c5f disk.c:268
+ xor ah, ah ; 30 e4 ; 0xf5c61
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c63
+ mov si, di ; 89 fe ; 0xf5c66
+ add si, ax ; 01 c6 ; 0xf5c68
+ add bl, byte [es:si] ; 26 02 1c ; 0xf5c6a
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5c6d
+ jmp short 05c5ah ; eb e9 ; 0xf5c6f
+ neg bl ; f6 db ; 0xf5c71 disk.c:269
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c73 disk.c:270
+ mov byte [es:di+041h], bl ; 26 88 5d 41 ; 0xf5c76
+ xor ax, ax ; 31 c0 ; 0xf5c7a disk.c:272
+ leave ; c9 ; 0xf5c7c disk.c:273
+ pop di ; 5f ; 0xf5c7d
+ pop si ; 5e ; 0xf5c7e
+ retn 00002h ; c2 02 00 ; 0xf5c7f
+ ; disGetNextSymbol 0xf5c82 LB 0x5656 -> off=0x32 cb=0000000000000439 uValue=00000000000f46b4 'int13_harddisk'
+ db 048h, 05dh, 059h, 05dh, 083h, 05dh, 083h, 05dh, 083h, 05dh, 073h, 05fh, 0afh, 060h, 0afh, 060h
+ db 0a1h, 05fh, 08ch, 060h, 0afh, 060h, 0afh, 060h, 08ch, 060h, 08ch, 060h, 0afh, 060h, 0afh, 060h
+ db 00bh, 060h, 08ch, 060h, 0afh, 060h, 0afh, 060h, 08ch, 060h, 044h, 060h, 0afh, 060h, 0afh, 060h
+ db 0afh, 060h
+int13_harddisk: ; 0xf5cb4 LB 0x439
+ push bp ; 55 ; 0xf5cb4 disk.c:275
+ mov bp, sp ; 89 e5 ; 0xf5cb5
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf5cb7
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5cba disk.c:286
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5cbe disk.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf5cc1
+ mov es, dx ; 8e c2 ; 0xf5cc4
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf5cc6
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf5cc9 disk.c:49
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5ccc
+ mov bx, 0008eh ; bb 8e 00 ; 0xf5ccf disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5cd2
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5cd6 disk.c:292
+ xor dh, dh ; 30 f6 ; 0xf5cd9
+ cmp dx, 00080h ; 81 fa 80 00 ; 0xf5cdb
+ jc short 05ce7h ; 72 06 ; 0xf5cdf
+ cmp dx, 00094h ; 81 fa 94 00 ; 0xf5ce1
+ jc short 05d05h ; 72 1e ; 0xf5ce5
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5ce7 disk.c:293
+ xor ah, ah ; 30 e4 ; 0xf5cea
+ push ax ; 50 ; 0xf5cec
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ced
+ shr ax, 008h ; c1 e8 08 ; 0xf5cf0
+ push ax ; 50 ; 0xf5cf3
+ push 0068eh ; 68 8e 06 ; 0xf5cf4
+ push 0069dh ; 68 9d 06 ; 0xf5cf7
+ push strict byte 00004h ; 6a 04 ; 0xf5cfa
+ call 0190eh ; e8 0f bc ; 0xf5cfc
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5cff
+ jmp near 060cah ; e9 c5 03 ; 0xf5d02 disk.c:294
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5d05 disk.c:298
+ xor dh, dh ; 30 f6 ; 0xf5d08
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d0a
+ mov bx, si ; 89 f3 ; 0xf5d0d
+ add bx, dx ; 01 d3 ; 0xf5d0f
+ mov bl, byte [es:bx+001d3h] ; 26 8a 9f d3 01 ; 0xf5d11
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf5d16
+ cmp bl, 014h ; 80 fb 14 ; 0xf5d19 disk.c:301
+ jc short 05d2eh ; 72 10 ; 0xf5d1c
+ push dx ; 52 ; 0xf5d1e disk.c:302
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5d1f
+ shr ax, 008h ; c1 e8 08 ; 0xf5d22
+ push ax ; 50 ; 0xf5d25
+ push 0068eh ; 68 8e 06 ; 0xf5d26
+ push 006c8h ; 68 c8 06 ; 0xf5d29
+ jmp short 05cfah ; eb cc ; 0xf5d2c
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5d2e disk.c:306
+ shr bx, 008h ; c1 eb 08 ; 0xf5d31
+ cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5d34
+ jnbe short 05d80h ; 77 47 ; 0xf5d37
+ add bx, bx ; 01 db ; 0xf5d39
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5d3b
+ xor dh, dh ; 30 f6 ; 0xf5d3e
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf5d40
+ jmp word [cs:bx+05c82h] ; 2e ff a7 82 5c ; 0xf5d43
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5d48 disk.c:311
+ jnc short 05d56h ; 73 08 ; 0xf5d4c
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5d4e disk.c:313
+ xor ah, ah ; 30 e4 ; 0xf5d51
+ call 01d2ch ; e8 d6 bf ; 0xf5d53
+ jmp near 05f89h ; e9 30 02 ; 0xf5d56 disk.c:314
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5d59 disk.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5d5c
+ mov es, ax ; 8e c0 ; 0xf5d5f
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5d61
+ mov al, dl ; 88 d0 ; 0xf5d64 disk.c:319
+ xor ah, ah ; 30 e4 ; 0xf5d66
+ sal ax, 008h ; c1 e0 08 ; 0xf5d68
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf5d6b
+ or bx, ax ; 09 c3 ; 0xf5d6e
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5d70
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5d73 disk.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5d76
+ test dl, dl ; 84 d2 ; 0xf5d79 disk.c:322
+ je short 05de2h ; 74 65 ; 0xf5d7b
+ jmp near 060e6h ; e9 66 03 ; 0xf5d7d
+ jmp near 060afh ; e9 2c 03 ; 0xf5d80
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5d83 disk.c:330
+ xor dh, dh ; 30 f6 ; 0xf5d86
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf5d88
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5d8b disk.c:331
+ shr di, 008h ; c1 ef 08 ; 0xf5d8e
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d91 disk.c:332
+ xor dh, dh ; 30 f6 ; 0xf5d94
+ sal dx, 002h ; c1 e2 02 ; 0xf5d96
+ xor dl, dl ; 30 d2 ; 0xf5d99
+ and dh, 003h ; 80 e6 03 ; 0xf5d9b
+ or di, dx ; 09 d7 ; 0xf5d9e
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5da0 disk.c:333
+ and dx, strict byte 0003fh ; 83 e2 3f ; 0xf5da3
+ mov word [bp-006h], dx ; 89 56 fa ; 0xf5da6
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5da9 disk.c:334
+ shr dx, 008h ; c1 ea 08 ; 0xf5dac
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf5daf
+ cmp word [bp-00eh], 00080h ; 81 7e f2 80 00 ; 0xf5db2 disk.c:337
+ jnbe short 05dbfh ; 77 06 ; 0xf5db7
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xf5db9
+ jne short 05de5h ; 75 26 ; 0xf5dbd
+ mov bx, 00eeah ; bb ea 0e ; 0xf5dbf disk.c:338
+ mov cx, ds ; 8c d9 ; 0xf5dc2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5dc4
+ call 018cbh ; e8 01 bb ; 0xf5dc7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5dca
+ shr ax, 008h ; c1 e8 08 ; 0xf5dcd
+ push ax ; 50 ; 0xf5dd0
+ push 0068eh ; 68 8e 06 ; 0xf5dd1
+ push 006fah ; 68 fa 06 ; 0xf5dd4
+ push strict byte 00004h ; 6a 04 ; 0xf5dd7
+ call 0190eh ; e8 32 bb ; 0xf5dd9
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf5ddc
+ jmp near 060cah ; e9 e8 02 ; 0xf5ddf disk.c:339
+ jmp near 05f8dh ; e9 a8 01 ; 0xf5de2
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf5de5 disk.c:343
+ xor dh, dh ; 30 f6 ; 0xf5de8
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5dea
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ded
+ mov bx, si ; 89 f3 ; 0xf5df0
+ add bx, dx ; 01 d3 ; 0xf5df2
+ mov dx, word [es:bx+02ch] ; 26 8b 57 2c ; 0xf5df4
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf5df8
+ mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf5dfb disk.c:344
+ mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf5dff disk.c:345
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5e03
+ cmp di, word [bp-012h] ; 3b 7e ee ; 0xf5e06 disk.c:348
+ jnc short 05e18h ; 73 0d ; 0xf5e09
+ cmp cx, word [bp-008h] ; 3b 4e f8 ; 0xf5e0b
+ jbe short 05e18h ; 76 08 ; 0xf5e0e
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf5e10
+ cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5e13
+ jbe short 05e48h ; 76 30 ; 0xf5e16
+ mov bx, 00eeah ; bb ea 0e ; 0xf5e18 disk.c:349
+ mov cx, ds ; 8c d9 ; 0xf5e1b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5e1d
+ call 018cbh ; e8 a8 ba ; 0xf5e20
+ push word [bp-006h] ; ff 76 fa ; 0xf5e23
+ push word [bp-008h] ; ff 76 f8 ; 0xf5e26
+ push di ; 57 ; 0xf5e29
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5e2a
+ xor ah, ah ; 30 e4 ; 0xf5e2d
+ push ax ; 50 ; 0xf5e2f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5e30
+ shr ax, 008h ; c1 e8 08 ; 0xf5e33
+ push ax ; 50 ; 0xf5e36
+ push 0068eh ; 68 8e 06 ; 0xf5e37
+ push 00722h ; 68 22 07 ; 0xf5e3a
+ push strict byte 00004h ; 6a 04 ; 0xf5e3d
+ call 0190eh ; e8 cc ba ; 0xf5e3f
+ add sp, strict byte 00010h ; 83 c4 10 ; 0xf5e42
+ jmp near 060cah ; e9 82 02 ; 0xf5e45 disk.c:350
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5e48 disk.c:354
+ shr dx, 008h ; c1 ea 08 ; 0xf5e4b
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf5e4e
+ je short 05e73h ; 74 20 ; 0xf5e51
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf5e53 disk.c:359
+ xor dh, dh ; 30 f6 ; 0xf5e56
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5e58
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5e5b
+ mov bx, si ; 89 f3 ; 0xf5e5e
+ add bx, dx ; 01 d3 ; 0xf5e60
+ cmp cx, word [es:bx+030h] ; 26 3b 4f 30 ; 0xf5e62
+ jne short 05e7ch ; 75 14 ; 0xf5e66
+ mov dx, word [es:bx+034h] ; 26 8b 57 34 ; 0xf5e68
+ cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5e6c
+ je short 05e76h ; 74 05 ; 0xf5e6f
+ jmp short 05e7ch ; eb 09 ; 0xf5e71
+ jmp near 05f89h ; e9 13 01 ; 0xf5e73
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e76
+ jc short 05ea9h ; 72 2d ; 0xf5e7a
+ mov ax, di ; 89 f8 ; 0xf5e7c disk.c:360
+ xor dx, dx ; 31 d2 ; 0xf5e7e
+ mov bx, cx ; 89 cb ; 0xf5e80
+ xor cx, cx ; 31 c9 ; 0xf5e82
+ call 0af40h ; e8 b9 50 ; 0xf5e84
+ xor bx, bx ; 31 db ; 0xf5e87
+ add ax, word [bp-008h] ; 03 46 f8 ; 0xf5e89
+ adc dx, bx ; 11 da ; 0xf5e8c
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5e8e
+ xor cx, cx ; 31 c9 ; 0xf5e91
+ call 0af40h ; e8 aa 50 ; 0xf5e93
+ xor bx, bx ; 31 db ; 0xf5e96
+ add ax, word [bp-006h] ; 03 46 fa ; 0xf5e98
+ adc dx, bx ; 11 da ; 0xf5e9b
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf5e9d
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf5ea0
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5ea3
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf5ea6 disk.c:361
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ea9 disk.c:371
+ mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf5eac
+ mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf5eb2 disk.c:372
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5eb8
+ mov word [es:si], ax ; 26 89 04 ; 0xf5ebe disk.c:375
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5ec1
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5ec4
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf5ec8
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf5ece
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5ed4 disk.c:376
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5ed7
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5eda
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5ede
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf5ee2 disk.c:377
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf5ee5
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf5ee9 disk.c:378
+ mov word [es:si+012h], di ; 26 89 7c 12 ; 0xf5eef disk.c:379
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5ef3 disk.c:380
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5ef6
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5efa disk.c:381
+ mov word [es:si+016h], ax ; 26 89 44 16 ; 0xf5efd
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5f01 disk.c:382
+ mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5f04
+ xor ah, ah ; 30 e4 ; 0xf5f08 disk.c:384
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5f0a
+ mov bx, si ; 89 f3 ; 0xf5f0d
+ add bx, ax ; 01 c3 ; 0xf5f0f
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf5f11
+ xor ah, ah ; 30 e4 ; 0xf5f15
+ mov bx, ax ; 89 c3 ; 0xf5f17
+ sal bx, 002h ; c1 e3 02 ; 0xf5f19
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f1c
+ shr ax, 008h ; c1 e8 08 ; 0xf5f1f
+ add ax, ax ; 01 c0 ; 0xf5f22
+ add bx, ax ; 01 c3 ; 0xf5f24
+ push ES ; 06 ; 0xf5f26
+ push si ; 56 ; 0xf5f27
+ call word [bx+00082h] ; ff 97 82 00 ; 0xf5f28
+ mov dx, ax ; 89 c2 ; 0xf5f2c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f2e disk.c:387
+ xor al, al ; 30 c0 ; 0xf5f31
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5f33
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf5f36
+ or bx, ax ; 09 c3 ; 0xf5f3a
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5f3c
+ test dl, dl ; 84 d2 ; 0xf5f3f disk.c:389
+ je short 05f89h ; 74 46 ; 0xf5f41
+ mov bx, 00eeah ; bb ea 0e ; 0xf5f43 disk.c:390
+ mov cx, ds ; 8c d9 ; 0xf5f46
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f48
+ call 018cbh ; e8 7d b9 ; 0xf5f4b
+ mov al, dl ; 88 d0 ; 0xf5f4e
+ xor ah, ah ; 30 e4 ; 0xf5f50
+ push ax ; 50 ; 0xf5f52
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f53
+ shr ax, 008h ; c1 e8 08 ; 0xf5f56
+ push ax ; 50 ; 0xf5f59
+ push 0068eh ; 68 8e 06 ; 0xf5f5a
+ push 00769h ; 68 69 07 ; 0xf5f5d
+ push strict byte 00004h ; 6a 04 ; 0xf5f60
+ call 0190eh ; e8 a9 b9 ; 0xf5f62
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5f65
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f68 disk.c:391
+ xor ah, ah ; 30 e4 ; 0xf5f6b
+ or ah, 00ch ; 80 cc 0c ; 0xf5f6d
+ jmp near 060d2h ; e9 5f 01 ; 0xf5f70 disk.c:392
+ mov bx, 00eeah ; bb ea 0e ; 0xf5f73 disk.c:399
+ mov cx, ds ; 8c d9 ; 0xf5f76
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f78
+ call 018cbh ; e8 4d b9 ; 0xf5f7b
+ push 0078ah ; 68 8a 07 ; 0xf5f7e
+ push strict byte 00004h ; 6a 04 ; 0xf5f81
+ call 0190eh ; e8 88 b9 ; 0xf5f83
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5f86
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5f89 disk.c:400
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5f8d
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5f90
+ mov es, ax ; 8e c0 ; 0xf5f93
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5f95
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5f99
+ mov sp, bp ; 89 ec ; 0xf5f9d
+ pop bp ; 5d ; 0xf5f9f
+ retn ; c3 ; 0xf5fa0
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5fa1 disk.c:406
+ xor ah, ah ; 30 e4 ; 0xf5fa4
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5fa6
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5fa9
+ mov di, si ; 89 f7 ; 0xf5fac
+ add di, ax ; 01 c7 ; 0xf5fae
+ mov ax, word [es:di+02ch] ; 26 8b 45 2c ; 0xf5fb0
+ mov cx, word [es:di+02ah] ; 26 8b 4d 2a ; 0xf5fb4 disk.c:407
+ mov dx, word [es:di+02eh] ; 26 8b 55 2e ; 0xf5fb8 disk.c:408
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5fbc
+ mov dl, byte [es:si+00252h] ; 26 8a 94 52 02 ; 0xf5fbf disk.c:410
+ xor dh, dh ; 30 f6 ; 0xf5fc4
+ mov byte [bp+016h], dh ; 88 76 16 ; 0xf5fc6 disk.c:413
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf5fc9 disk.c:414
+ xor bh, bh ; 30 ff ; 0xf5fcc
+ dec ax ; 48 ; 0xf5fce disk.c:412
+ mov si, ax ; 89 c6 ; 0xf5fcf
+ and si, 000ffh ; 81 e6 ff 00 ; 0xf5fd1
+ sal si, 008h ; c1 e6 08 ; 0xf5fd5
+ or bx, si ; 09 f3 ; 0xf5fd8
+ mov word [bp+014h], bx ; 89 5e 14 ; 0xf5fda
+ shr ax, 002h ; c1 e8 02 ; 0xf5fdd disk.c:415
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf5fe0
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5fe2
+ and bl, 03fh ; 80 e3 3f ; 0xf5fe5
+ or al, bl ; 08 d8 ; 0xf5fe8
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf5fea
+ mov bl, al ; 88 c3 ; 0xf5fed
+ mov word [bp+014h], bx ; 89 5e 14 ; 0xf5fef
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5ff2 disk.c:416
+ xor ah, ah ; 30 e4 ; 0xf5ff5
+ sal cx, 008h ; c1 e1 08 ; 0xf5ff7
+ sub cx, 00100h ; 81 e9 00 01 ; 0xf5ffa
+ or ax, cx ; 09 c8 ; 0xf5ffe
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6000
+ mov al, dl ; 88 d0 ; 0xf6003 disk.c:417
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6005
+ jmp near 05f89h ; e9 7e ff ; 0xf6008 disk.c:422
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf600b disk.c:430
+ jc short 06014h ; 72 03 ; 0xf600f
+ jmp near 05f89h ; e9 75 ff ; 0xf6011
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6014 disk.c:433
+ xor ah, ah ; 30 e4 ; 0xf6017
+ cwd ; 99 ; 0xf6019
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf601a
+ sar ax, 1 ; d1 f8 ; 0xf601c
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf601e
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf6021
+ add si, ax ; 01 c6 ; 0xf6024
+ mov dx, word [es:si+0027eh] ; 26 8b 94 7e 02 ; 0xf6026
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf602b
+ in AL, DX ; ec ; 0xf602e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf602f
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf6031 disk.c:434
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf6033
+ jne short 06039h ; 75 02 ; 0xf6035
+ jmp short 06011h ; eb d8 ; 0xf6037 disk.c:435
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6039 disk.c:437
+ xor ah, ah ; 30 e4 ; 0xf603c
+ or ah, 0aah ; 80 cc aa ; 0xf603e
+ jmp near 060d2h ; e9 8e 00 ; 0xf6041
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6044 disk.c:449
+ xor ah, ah ; 30 e4 ; 0xf6047
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf6049
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf604c
+ add si, ax ; 01 c6 ; 0xf604f
+ mov di, word [es:si+032h] ; 26 8b 7c 32 ; 0xf6051
+ mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf6055 disk.c:450
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6059
+ mov ax, word [es:si+034h] ; 26 8b 44 34 ; 0xf605c disk.c:451
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6060
+ mov ax, di ; 89 f8 ; 0xf6063 disk.c:454
+ xor dl, dl ; 30 d2 ; 0xf6065
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6067
+ xor cx, cx ; 31 c9 ; 0xf606a
+ call 0af40h ; e8 d1 4e ; 0xf606c
+ mov bx, word [bp-006h] ; 8b 5e fa ; 0xf606f
+ xor cx, cx ; 31 c9 ; 0xf6072
+ call 0af40h ; e8 c9 4e ; 0xf6074
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf6077
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf607a disk.c:455
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf607d disk.c:456
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf6080 disk.c:458
+ or ah, 003h ; 80 cc 03 ; 0xf6083
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6086
+ jmp near 05f8dh ; e9 01 ff ; 0xf6089 disk.c:459
+ mov bx, 00eeah ; bb ea 0e ; 0xf608c disk.c:467
+ mov cx, ds ; 8c d9 ; 0xf608f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6091
+ call 018cbh ; e8 34 b8 ; 0xf6094
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6097
+ shr ax, 008h ; c1 e8 08 ; 0xf609a
+ push ax ; 50 ; 0xf609d
+ push 0068eh ; 68 8e 06 ; 0xf609e
+ push 007a4h ; 68 a4 07 ; 0xf60a1
+ push strict byte 00004h ; 6a 04 ; 0xf60a4
+ call 0190eh ; e8 65 b8 ; 0xf60a6
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf60a9
+ jmp near 05f89h ; e9 da fe ; 0xf60ac disk.c:468
+ mov bx, 00eeah ; bb ea 0e ; 0xf60af disk.c:475
+ mov cx, ds ; 8c d9 ; 0xf60b2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf60b4
+ call 018cbh ; e8 11 b8 ; 0xf60b7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60ba
+ shr ax, 008h ; c1 e8 08 ; 0xf60bd
+ push ax ; 50 ; 0xf60c0
+ push 0068eh ; 68 8e 06 ; 0xf60c1
+ push 007d7h ; 68 d7 07 ; 0xf60c4
+ jmp near 05dd7h ; e9 0d fd ; 0xf60c7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60ca disk.c:481
+ xor ah, ah ; 30 e4 ; 0xf60cd
+ or ah, 001h ; 80 cc 01 ; 0xf60cf
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf60d2
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60d5 disk.c:483
+ shr ax, 008h ; c1 e8 08 ; 0xf60d8
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf60db disk.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf60de
+ mov es, dx ; 8e c2 ; 0xf60e1
+ mov byte [es:bx], al ; 26 88 07 ; 0xf60e3
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf60e6 disk.c:485
+ jmp near 05f9dh ; e9 b0 fe ; 0xf60ea disk.c:486
+ ; disGetNextSymbol 0xf60ed LB 0x51eb -> off=0x20 cb=0000000000000297 uValue=00000000000f4b0d 'int13_harddisk_ext'
+ db 09bh, 061h, 0ceh, 061h, 0ceh, 061h, 0ceh, 061h, 08ch, 063h, 032h, 063h, 0ceh, 061h, 03ah, 063h
+ db 08ch, 063h, 0b3h, 061h, 0b3h, 061h, 0b3h, 061h, 0b3h, 061h, 054h, 063h, 0b3h, 061h, 0b3h, 061h
+int13_harddisk_ext: ; 0xf610d LB 0x297
+ push bp ; 55 ; 0xf610d disk.c:496
+ mov bp, sp ; 89 e5 ; 0xf610e
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf6110
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6113 disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6116
+ mov es, ax ; 8e c0 ; 0xf6119
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf611b
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf611e disk.c:49
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6121
+ mov bx, 0008eh ; bb 8e 00 ; 0xf6124 disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6127
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf612b disk.c:520
+ xor ah, ah ; 30 e4 ; 0xf612e
+ cmp ax, 00080h ; 3d 80 00 ; 0xf6130
+ jc short 0613ah ; 72 05 ; 0xf6133
+ cmp ax, 00094h ; 3d 94 00 ; 0xf6135
+ jc short 06158h ; 72 1e ; 0xf6138
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf613a disk.c:521
+ xor ah, ah ; 30 e4 ; 0xf613d
+ push ax ; 50 ; 0xf613f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6140
+ shr ax, 008h ; c1 e8 08 ; 0xf6143
+ push ax ; 50 ; 0xf6146
+ push 00805h ; 68 05 08 ; 0xf6147
+ push 0069dh ; 68 9d 06 ; 0xf614a
+ push strict byte 00004h ; 6a 04 ; 0xf614d
+ call 0190eh ; e8 bc b7 ; 0xf614f
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6152
+ jmp near 0636ah ; e9 12 02 ; 0xf6155 disk.c:522
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6158 disk.c:526
+ xor ah, ah ; 30 e4 ; 0xf615b
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf615d
+ mov bx, di ; 89 fb ; 0xf6160
+ add bx, ax ; 01 c3 ; 0xf6162
+ mov dl, byte [es:bx+001d3h] ; 26 8a 97 d3 01 ; 0xf6164
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf6169
+ cmp dl, 014h ; 80 fa 14 ; 0xf616c disk.c:529
+ jc short 06181h ; 72 10 ; 0xf616f
+ push ax ; 50 ; 0xf6171 disk.c:530
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6172
+ shr ax, 008h ; c1 e8 08 ; 0xf6175
+ push ax ; 50 ; 0xf6178
+ push 00805h ; 68 05 08 ; 0xf6179
+ push 006c8h ; 68 c8 06 ; 0xf617c
+ jmp short 0614dh ; eb cc ; 0xf617f
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf6181 disk.c:534
+ shr bx, 008h ; c1 eb 08 ; 0xf6184
+ sub bx, strict byte 00041h ; 83 eb 41 ; 0xf6187
+ cmp bx, strict byte 0000fh ; 83 fb 0f ; 0xf618a
+ jnbe short 061b3h ; 77 24 ; 0xf618d
+ add bx, bx ; 01 db ; 0xf618f
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf6191
+ xor ch, ch ; 30 ed ; 0xf6194
+ jmp word [cs:bx+060edh] ; 2e ff a7 ed 60 ; 0xf6196
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf619b disk.c:536
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61a0 disk.c:537
+ xor ah, ah ; 30 e4 ; 0xf61a3
+ or ah, 030h ; 80 cc 30 ; 0xf61a5
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf61a8
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf61ab disk.c:538
+ jmp near 06390h ; e9 dd 01 ; 0xf61b0 disk.c:539
+ mov bx, 00eeah ; bb ea 0e ; 0xf61b3
+ mov cx, ds ; 8c d9 ; 0xf61b6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf61b8
+ call 018cbh ; e8 0d b7 ; 0xf61bb
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61be
+ shr ax, 008h ; c1 e8 08 ; 0xf61c1
+ push ax ; 50 ; 0xf61c4
+ push 00805h ; 68 05 08 ; 0xf61c5
+ push 007d7h ; 68 d7 07 ; 0xf61c8
+ jmp near 0626bh ; e9 9d 00 ; 0xf61cb
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf61ce disk.c:548
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf61d1
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf61d4
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf61d7
+ mov [bp-012h], es ; 8c 46 ee ; 0xf61da
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf61dd disk.c:550
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf61e1
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf61e4 disk.c:551
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf61e8
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf61eb disk.c:552
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf61ef
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf61f2 disk.c:555
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf61f6
+ xor ax, ax ; 31 c0 ; 0xf61fa disk.c:556
+ xor bx, bx ; 31 db ; 0xf61fc
+ mov si, strict word 00020h ; be 20 00 ; 0xf61fe
+ call 0afa0h ; e8 9c 4d ; 0xf6201
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6204
+ mov si, bx ; 89 de ; 0xf6207
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf6209 disk.c:557
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf620c
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf6210
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf6213
+ or dx, word [bp-016h] ; 0b 56 ea ; 0xf6217
+ or cx, ax ; 09 c1 ; 0xf621a
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf621c disk.c:562
+ xor ah, ah ; 30 e4 ; 0xf621f
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf6221
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6224
+ mov bx, di ; 89 fb ; 0xf6227
+ add bx, ax ; 01 c3 ; 0xf6229
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf622b
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf622f
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6232 disk.c:563
+ cmp ax, word [es:bx+03ch] ; 26 3b 47 3c ; 0xf6235
+ jnbe short 06253h ; 77 18 ; 0xf6239
+ jne short 06276h ; 75 39 ; 0xf623b
+ cmp si, word [es:bx+03ah] ; 26 3b 77 3a ; 0xf623d
+ jnbe short 06253h ; 77 10 ; 0xf6241
+ jne short 06276h ; 75 31 ; 0xf6243
+ cmp cx, word [es:bx+038h] ; 26 3b 4f 38 ; 0xf6245
+ jnbe short 06253h ; 77 08 ; 0xf6249
+ jne short 06276h ; 75 29 ; 0xf624b
+ cmp dx, word [es:bx+036h] ; 26 3b 57 36 ; 0xf624d
+ jc short 06276h ; 72 23 ; 0xf6251
+ mov bx, 00eeah ; bb ea 0e ; 0xf6253 disk.c:564
+ mov cx, ds ; 8c d9 ; 0xf6256
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6258
+ call 018cbh ; e8 6d b6 ; 0xf625b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf625e
+ shr ax, 008h ; c1 e8 08 ; 0xf6261
+ push ax ; 50 ; 0xf6264
+ push 00805h ; 68 05 08 ; 0xf6265
+ push 00818h ; 68 18 08 ; 0xf6268
+ push strict byte 00004h ; 6a 04 ; 0xf626b
+ call 0190eh ; e8 9e b6 ; 0xf626d
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6270
+ jmp near 0636ah ; e9 f4 00 ; 0xf6273 disk.c:565
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6276 disk.c:569
+ shr ax, 008h ; c1 e8 08 ; 0xf6279
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf627c
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf627f
+ je short 06289h ; 74 05 ; 0xf6282
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf6284
+ jne short 0628ch ; 75 03 ; 0xf6287
+ jmp near 0638ch ; e9 00 01 ; 0xf6289 disk.c:570
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf628c disk.c:573
+ mov word [es:di+018h], strict word 00000h ; 26 c7 45 18 00 00 ; 0xf628f
+ mov word [es:di+01ah], strict word 00000h ; 26 c7 45 1a 00 00 ; 0xf6295 disk.c:574
+ mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf629b
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf62a1 disk.c:577
+ mov word [es:di+006h], ax ; 26 89 45 06 ; 0xf62a4
+ mov word [es:di+004h], si ; 26 89 75 04 ; 0xf62a8
+ mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf62ac
+ mov word [es:di], dx ; 26 89 15 ; 0xf62b0
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf62b3 disk.c:578
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf62b6
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf62ba
+ mov word [es:di+00ah], ax ; 26 89 45 0a ; 0xf62bd
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf62c1 disk.c:579
+ mov word [es:di+00eh], ax ; 26 89 45 0e ; 0xf62c4
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf62c8 disk.c:580
+ mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf62ce disk.c:581
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf62d4 disk.c:582
+ mov byte [es:di+00ch], al ; 26 88 45 0c ; 0xf62d7
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf62db disk.c:585
+ add bx, bx ; 01 db ; 0xf62de
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf62e0
+ xor ah, ah ; 30 e4 ; 0xf62e3
+ sal ax, 002h ; c1 e0 02 ; 0xf62e5
+ add bx, ax ; 01 c3 ; 0xf62e8
+ push ES ; 06 ; 0xf62ea
+ push di ; 57 ; 0xf62eb
+ call word [word bx+00002h] ; ff 97 02 00 ; 0xf62ec
+ mov dx, ax ; 89 c2 ; 0xf62f0
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf62f2 disk.c:586
+ mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf62f5
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf62f9
+ les bx, [bp-014h] ; c4 5e ec ; 0xf62fc disk.c:587
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf62ff
+ test dl, dl ; 84 d2 ; 0xf6303 disk.c:589
+ je short 06289h ; 74 82 ; 0xf6305
+ mov bx, 00eeah ; bb ea 0e ; 0xf6307 disk.c:590
+ mov cx, ds ; 8c d9 ; 0xf630a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf630c
+ call 018cbh ; e8 b9 b5 ; 0xf630f
+ mov al, dl ; 88 d0 ; 0xf6312
+ xor ah, ah ; 30 e4 ; 0xf6314
+ push ax ; 50 ; 0xf6316
+ push word [bp-00ah] ; ff 76 f6 ; 0xf6317
+ push 00805h ; 68 05 08 ; 0xf631a
+ push 00769h ; 68 69 07 ; 0xf631d
+ push strict byte 00004h ; 6a 04 ; 0xf6320
+ call 0190eh ; e8 e9 b5 ; 0xf6322
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6325
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6328 disk.c:591
+ xor ah, ah ; 30 e4 ; 0xf632b
+ or ah, 00ch ; 80 cc 0c ; 0xf632d
+ jmp short 06372h ; eb 40 ; 0xf6330 disk.c:592
+ or ch, 0b2h ; 80 cd b2 ; 0xf6332 disk.c:604
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf6335
+ jmp short 06375h ; eb 3b ; 0xf6338 disk.c:605
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf633a disk.c:609
+ xor ah, ah ; 30 e4 ; 0xf633d
+ push ax ; 50 ; 0xf633f
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6340
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6343
+ mov bx, di ; 89 fb ; 0xf6346
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf6348
+ call 05986h ; e8 38 f6 ; 0xf634b
+ test ax, ax ; 85 c0 ; 0xf634e
+ je short 0638ch ; 74 3a ; 0xf6350
+ jmp short 0636ah ; eb 16 ; 0xf6352 disk.c:610
+ cmp cx, strict byte 00006h ; 83 f9 06 ; 0xf6354 disk.c:617
+ je short 0638ch ; 74 33 ; 0xf6357
+ cmp cx, strict byte 00001h ; 83 f9 01 ; 0xf6359
+ jc short 0636ah ; 72 0c ; 0xf635c
+ jbe short 0638ch ; 76 2c ; 0xf635e
+ cmp cx, strict byte 00003h ; 83 f9 03 ; 0xf6360
+ jc short 0636ah ; 72 05 ; 0xf6363
+ cmp cx, strict byte 00004h ; 83 f9 04 ; 0xf6365
+ jbe short 0638ch ; 76 22 ; 0xf6368
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf636a disk.c:637
+ xor ah, ah ; 30 e4 ; 0xf636d
+ or ah, 001h ; 80 cc 01 ; 0xf636f
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6372
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6375 disk.c:639
+ shr ax, 008h ; c1 e8 08 ; 0xf6378
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf637b disk.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf637e
+ mov es, dx ; 8e c2 ; 0xf6381
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6383
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6386 disk.c:640
+ jmp short 063a0h ; eb 14 ; 0xf638a disk.c:641
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf638c disk.c:644
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf6390 disk.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6393
+ mov es, ax ; 8e c0 ; 0xf6396
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6398
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf639c disk.c:647
+ mov sp, bp ; 89 ec ; 0xf63a0 disk.c:649
+ pop bp ; 5d ; 0xf63a2
+ retn ; c3 ; 0xf63a3
+ ; disGetNextSymbol 0xf63a4 LB 0x4f34 -> off=0x0 cb=0000000000000153 uValue=00000000000f4da4 'int14_function'
+int14_function: ; 0xf63a4 LB 0x153
+ push bp ; 55 ; 0xf63a4 serial.c:60
+ mov bp, sp ; 89 e5 ; 0xf63a5
+ push si ; 56 ; 0xf63a7
+ push di ; 57 ; 0xf63a8
+ sti ; fb ; 0xf63a9 serial.c:65
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf63aa serial.c:67
+ add si, si ; 01 f6 ; 0xf63ad
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf63af serial.c:48
+ mov es, ax ; 8e c0 ; 0xf63b2
+ mov si, word [es:si] ; 26 8b 34 ; 0xf63b4
+ mov bx, si ; 89 f3 ; 0xf63b7 serial.c:49
+ mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf63b9 serial.c:68
+ add di, strict byte 0007ch ; 83 c7 7c ; 0xf63bc
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf63bf serial.c:38
+ cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf63c2 serial.c:69
+ jnc short 063cch ; 73 04 ; 0xf63c6
+ test si, si ; 85 f6 ; 0xf63c8
+ jnbe short 063cfh ; 77 03 ; 0xf63ca
+ jmp near 064ech ; e9 1d 01 ; 0xf63cc
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf63cf serial.c:70
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf63d2
+ jc short 063e3h ; 72 0d ; 0xf63d4
+ jbe short 06443h ; 76 6b ; 0xf63d6
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf63d8
+ je short 0643bh ; 74 5f ; 0xf63da
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf63dc
+ je short 0643eh ; 74 5e ; 0xf63de
+ jmp near 064e6h ; e9 03 01 ; 0xf63e0
+ test al, al ; 84 c0 ; 0xf63e3
+ jne short 06440h ; 75 59 ; 0xf63e5
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf63e7 serial.c:72
+ in AL, DX ; ec ; 0xf63ea
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf63eb
+ or AL, strict byte 080h ; 0c 80 ; 0xf63ed
+ out DX, AL ; ee ; 0xf63ef
+ lea si, [bx+001h] ; 8d 77 01 ; 0xf63f0
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf63f3 serial.c:73
+ test AL, strict byte 0e0h ; a8 e0 ; 0xf63f6
+ jne short 06406h ; 75 0c ; 0xf63f8
+ mov AL, strict byte 017h ; b0 17 ; 0xf63fa serial.c:74
+ mov dx, bx ; 89 da ; 0xf63fc
+ out DX, AL ; ee ; 0xf63fe
+ mov AL, strict byte 004h ; b0 04 ; 0xf63ff serial.c:75
+ mov dx, si ; 89 f2 ; 0xf6401
+ out DX, AL ; ee ; 0xf6403
+ jmp short 0641dh ; eb 17 ; 0xf6404 serial.c:76
+ and AL, strict byte 0e0h ; 24 e0 ; 0xf6406 serial.c:77
+ xor ah, ah ; 30 e4 ; 0xf6408
+ sar ax, 005h ; c1 f8 05 ; 0xf640a
+ mov cl, al ; 88 c1 ; 0xf640d
+ mov ax, 00600h ; b8 00 06 ; 0xf640f
+ sar ax, CL ; d3 f8 ; 0xf6412
+ mov dx, bx ; 89 da ; 0xf6414
+ out DX, AL ; ee ; 0xf6416
+ shr ax, 008h ; c1 e8 08 ; 0xf6417 serial.c:79
+ mov dx, si ; 89 f2 ; 0xf641a
+ out DX, AL ; ee ; 0xf641c
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf641d serial.c:81
+ and AL, strict byte 01fh ; 24 1f ; 0xf6420
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf6422
+ out DX, AL ; ee ; 0xf6425
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6426 serial.c:82
+ in AL, DX ; ec ; 0xf6429
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf642a
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf642c
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf642f serial.c:83
+ in AL, DX ; ec ; 0xf6432
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6433
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6435
+ jmp near 064c7h ; e9 8c 00 ; 0xf6438
+ jmp near 064d5h ; e9 97 00 ; 0xf643b
+ jmp short 0648eh ; eb 4e ; 0xf643e
+ jmp near 064e6h ; e9 a3 00 ; 0xf6440
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf6443 serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6446
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6449 serial.c:88
+ in AL, DX ; ec ; 0xf644c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf644d
+ and ax, strict word 00060h ; 25 60 00 ; 0xf644f
+ cmp ax, strict word 00060h ; 3d 60 00 ; 0xf6452
+ je short 06470h ; 74 19 ; 0xf6455
+ test cl, cl ; 84 c9 ; 0xf6457
+ je short 06470h ; 74 15 ; 0xf6459
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf645b serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf645e
+ mov es, ax ; 8e c0 ; 0xf6461
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf6463
+ cmp ax, si ; 39 f0 ; 0xf6466 serial.c:90
+ je short 06449h ; 74 df ; 0xf6468
+ mov si, ax ; 89 c6 ; 0xf646a serial.c:91
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf646c serial.c:92
+ jmp short 06449h ; eb d9 ; 0xf646e serial.c:94
+ test cl, cl ; 84 c9 ; 0xf6470 serial.c:95
+ je short 0647ah ; 74 06 ; 0xf6472
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6474
+ mov dx, bx ; 89 da ; 0xf6477
+ out DX, AL ; ee ; 0xf6479
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf647a serial.c:96
+ in AL, DX ; ec ; 0xf647d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf647e
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6480
+ test cl, cl ; 84 c9 ; 0xf6483 serial.c:97
+ jne short 064c7h ; 75 40 ; 0xf6485
+ or AL, strict byte 080h ; 0c 80 ; 0xf6487
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6489
+ jmp short 064c7h ; eb 39 ; 0xf648c
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf648e serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6491
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6494 serial.c:102
+ in AL, DX ; ec ; 0xf6497
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6498
+ test AL, strict byte 001h ; a8 01 ; 0xf649a
+ jne short 064b7h ; 75 19 ; 0xf649c
+ test cl, cl ; 84 c9 ; 0xf649e
+ je short 064b7h ; 74 15 ; 0xf64a0
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf64a2 serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf64a5
+ mov es, ax ; 8e c0 ; 0xf64a8
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf64aa
+ cmp ax, si ; 39 f0 ; 0xf64ad serial.c:104
+ je short 06494h ; 74 e3 ; 0xf64af
+ mov si, ax ; 89 c6 ; 0xf64b1 serial.c:105
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf64b3 serial.c:106
+ jmp short 06494h ; eb dd ; 0xf64b5 serial.c:108
+ test cl, cl ; 84 c9 ; 0xf64b7 serial.c:109
+ je short 064cdh ; 74 12 ; 0xf64b9
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf64bb serial.c:110
+ mov dx, bx ; 89 da ; 0xf64bf serial.c:111
+ in AL, DX ; ec ; 0xf64c1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64c2
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf64c4
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf64c7 serial.c:112
+ jmp short 064f0h ; eb 23 ; 0xf64cb
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf64cd serial.c:113
+ in AL, DX ; ec ; 0xf64d0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64d1
+ jmp short 06489h ; eb b4 ; 0xf64d3
+ lea dx, [si+005h] ; 8d 54 05 ; 0xf64d5 serial.c:118
+ in AL, DX ; ec ; 0xf64d8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64d9
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf64db
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf64de serial.c:119
+ in AL, DX ; ec ; 0xf64e1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64e2
+ jmp short 064c4h ; eb de ; 0xf64e4
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64e6 serial.c:123
+ jmp short 064f0h ; eb 04 ; 0xf64ea serial.c:125
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64ec serial.c:126
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf64f0 serial.c:128
+ pop di ; 5f ; 0xf64f3
+ pop si ; 5e ; 0xf64f4
+ pop bp ; 5d ; 0xf64f5
+ retn ; c3 ; 0xf64f6
+ ; disGetNextSymbol 0xf64f7 LB 0x4de1 -> off=0x0 cb=0000000000000043 uValue=00000000000f4ef7 'timer_wait'
+timer_wait: ; 0xf64f7 LB 0x43
+ push bp ; 55 ; 0xf64f7 system.c:289
+ mov bp, sp ; 89 e5 ; 0xf64f8
+ push bx ; 53 ; 0xf64fa
+ push cx ; 51 ; 0xf64fb
+ push ax ; 50 ; 0xf64fc
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf64fd system.c:296
+ xor cx, cx ; 31 c9 ; 0xf6500
+ call 0af60h ; e8 5b 4a ; 0xf6502
+ mov cx, ax ; 89 c1 ; 0xf6505
+ mov bx, dx ; 89 d3 ; 0xf6507
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6509 system.c:298
+ in AL, DX ; ec ; 0xf650c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf650d
+ and AL, strict byte 010h ; 24 10 ; 0xf650f
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6511
+ add cx, strict byte 0ffffh ; 83 c1 ff ; 0xf6514 system.c:299
+ adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf6517
+ cmp bx, strict byte 0ffffh ; 83 fb ff ; 0xf651a
+ jne short 06524h ; 75 05 ; 0xf651d
+ cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf651f
+ je short 06533h ; 74 0f ; 0xf6522
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6524 system.c:302
+ in AL, DX ; ec ; 0xf6527
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6528
+ and AL, strict byte 010h ; 24 10 ; 0xf652a
+ cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf652c system.c:303
+ jne short 06524h ; 75 f3 ; 0xf652f
+ jmp short 06514h ; eb e1 ; 0xf6531 system.c:305
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6533 system.c:306
+ pop cx ; 59 ; 0xf6536
+ pop bx ; 5b ; 0xf6537
+ pop bp ; 5d ; 0xf6538
+ retn ; c3 ; 0xf6539
+ ; disGetNextSymbol 0xf653a LB 0x4d9e -> off=0x0 cb=0000000000000030 uValue=00000000000f4f3a 'set_enable_a20'
+set_enable_a20: ; 0xf653a LB 0x30
+ push bp ; 55 ; 0xf653a system.c:308
+ mov bp, sp ; 89 e5 ; 0xf653b
+ push bx ; 53 ; 0xf653d
+ push cx ; 51 ; 0xf653e
+ push dx ; 52 ; 0xf653f
+ mov bx, ax ; 89 c3 ; 0xf6540
+ mov dx, 00092h ; ba 92 00 ; 0xf6542 system.c:315
+ in AL, DX ; ec ; 0xf6545
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6546
+ mov cl, al ; 88 c1 ; 0xf6548
+ test bx, bx ; 85 db ; 0xf654a system.c:318
+ je short 06553h ; 74 05 ; 0xf654c
+ or AL, strict byte 002h ; 0c 02 ; 0xf654e system.c:319
+ out DX, AL ; ee ; 0xf6550
+ jmp short 06556h ; eb 03 ; 0xf6551 system.c:320
+ and AL, strict byte 0fdh ; 24 fd ; 0xf6553 system.c:321
+ out DX, AL ; ee ; 0xf6555
+ test cl, 002h ; f6 c1 02 ; 0xf6556 system.c:323
+ je short 06560h ; 74 05 ; 0xf6559
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf655b
+ jmp short 06562h ; eb 02 ; 0xf655e
+ xor ax, ax ; 31 c0 ; 0xf6560
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf6562 system.c:324
+ pop dx ; 5a ; 0xf6565
+ pop cx ; 59 ; 0xf6566
+ pop bx ; 5b ; 0xf6567
+ pop bp ; 5d ; 0xf6568
+ retn ; c3 ; 0xf6569
+ ; disGetNextSymbol 0xf656a LB 0x4d6e -> off=0x3b cb=0000000000000318 uValue=00000000000f4fa5 'int15_function'
+ db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h
+ db 024h, 022h, 000h, 09fh, 068h, 0e0h, 065h, 040h, 068h, 0f4h, 065h, 040h, 068h, 098h, 068h, 079h
+ db 066h, 089h, 066h, 029h, 067h, 036h, 067h, 062h, 067h, 082h, 066h, 082h, 066h, 02ah, 068h, 052h
+ db 068h, 065h, 068h, 040h, 068h, 079h, 068h, 0eah, 066h, 080h, 068h
+int15_function: ; 0xf65a5 LB 0x318
+ push bp ; 55 ; 0xf65a5 system.c:345
+ mov bp, sp ; 89 e5 ; 0xf65a6
+ push si ; 56 ; 0xf65a8
+ push di ; 57 ; 0xf65a9
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65aa system.c:352
+ shr ax, 008h ; c1 e8 08 ; 0xf65ad
+ cmp ax, 000ech ; 3d ec 00 ; 0xf65b0
+ jnbe short 065eah ; 77 35 ; 0xf65b3
+ push CS ; 0e ; 0xf65b5
+ pop ES ; 07 ; 0xf65b6
+ mov cx, strict word 00014h ; b9 14 00 ; 0xf65b7
+ mov di, 0656ah ; bf 6a 65 ; 0xf65ba
+ repne scasb ; f2 ae ; 0xf65bd
+ sal cx, 1 ; d1 e1 ; 0xf65bf
+ mov di, cx ; 89 cf ; 0xf65c1
+ mov bx, word [cs:di+0657dh] ; 2e 8b 9d 7d 65 ; 0xf65c3
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf65c8
+ xor dh, dh ; 30 f6 ; 0xf65cb
+ mov si, word [bp+018h] ; 8b 76 18 ; 0xf65cd
+ and si, strict byte 0fffeh ; 83 e6 fe ; 0xf65d0
+ mov cx, word [bp+018h] ; 8b 4e 18 ; 0xf65d3
+ or cl, 001h ; 80 c9 01 ; 0xf65d6
+ mov ax, dx ; 89 d0 ; 0xf65d9
+ or ah, 086h ; 80 cc 86 ; 0xf65db
+ jmp bx ; ff e3 ; 0xf65de
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65e0 system.c:354
+ xor ah, ah ; 30 e4 ; 0xf65e3
+ cmp ax, 000c0h ; 3d c0 00 ; 0xf65e5
+ je short 065edh ; 74 03 ; 0xf65e8
+ jmp near 0689fh ; e9 b2 02 ; 0xf65ea system.c:355
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf65ed system.c:361
+ jmp near 06849h ; e9 55 02 ; 0xf65f1
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65f4 system.c:365
+ xor ah, ah ; 30 e4 ; 0xf65f7
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf65f9
+ jc short 0660ch ; 72 0e ; 0xf65fc
+ jbe short 06620h ; 76 20 ; 0xf65fe
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6600
+ je short 0664dh ; 74 48 ; 0xf6603
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf6605
+ je short 06630h ; 74 26 ; 0xf6608
+ jmp short 0665ah ; eb 4e ; 0xf660a
+ test ax, ax ; 85 c0 ; 0xf660c
+ jne short 0665ah ; 75 4a ; 0xf660e
+ xor ax, ax ; 31 c0 ; 0xf6610 system.c:367
+ call 0653ah ; e8 25 ff ; 0xf6612
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6615 system.c:368
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6619 system.c:369
+ jmp near 06682h ; e9 62 00 ; 0xf661d system.c:370
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6620 system.c:372
+ call 0653ah ; e8 14 ff ; 0xf6623
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6626 system.c:373
+ mov byte [bp+013h], dh ; 88 76 13 ; 0xf662a system.c:374
+ jmp near 06682h ; e9 52 00 ; 0xf662d system.c:375
+ mov dx, 00092h ; ba 92 00 ; 0xf6630 system.c:377
+ in AL, DX ; ec ; 0xf6633
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6634
+ shr ax, 1 ; d1 e8 ; 0xf6636
+ and ax, strict word 00001h ; 25 01 00 ; 0xf6638
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf663b
+ mov dl, al ; 88 c2 ; 0xf663e
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6640
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6643 system.c:378
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf6647 system.c:379
+ jmp near 06682h ; e9 35 00 ; 0xf664a system.c:380
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf664d system.c:382
+ mov byte [bp+013h], dh ; 88 76 13 ; 0xf6651 system.c:383
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf6654 system.c:384
+ jmp near 06682h ; e9 28 00 ; 0xf6657 system.c:385
+ mov bx, 00eeah ; bb ea 0e ; 0xf665a system.c:387
+ mov cx, ds ; 8c d9 ; 0xf665d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf665f
+ call 018cbh ; e8 66 b2 ; 0xf6662
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6665
+ xor ah, ah ; 30 e4 ; 0xf6668
+ push ax ; 50 ; 0xf666a
+ push 0083eh ; 68 3e 08 ; 0xf666b
+ push strict byte 00004h ; 6a 04 ; 0xf666e
+ call 0190eh ; e8 9b b2 ; 0xf6670
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6673
+ jmp near 06840h ; e9 c7 01 ; 0xf6676
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6679 system.c:414
+ xor al, dl ; 30 d0 ; 0xf667d system.c:415
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf667f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6682 system.c:416
+ pop di ; 5f ; 0xf6685
+ pop si ; 5e ; 0xf6686
+ pop bp ; 5d ; 0xf6687
+ retn ; c3 ; 0xf6688
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6689 system.c:419
+ jne short 066f2h ; 75 63 ; 0xf668d
+ mov bx, 000a0h ; bb a0 00 ; 0xf668f system.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6692
+ mov es, dx ; 8e c2 ; 0xf6695
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf6697
+ test dl, 001h ; f6 c2 01 ; 0xf669a system.c:39
+ jne short 066eah ; 75 4b ; 0xf669d
+ mov DL, strict byte 001h ; b2 01 ; 0xf669f system.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf66a1 system.c:43
+ mov bx, 00098h ; bb 98 00 ; 0xf66a4 system.c:51
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf66a7
+ mov word [es:bx], ax ; 26 89 07 ; 0xf66aa system.c:53
+ mov bx, 0009ah ; bb 9a 00 ; 0xf66ad system.c:51
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf66b0
+ mov word [es:bx], dx ; 26 89 17 ; 0xf66b3 system.c:53
+ mov bx, 0009ch ; bb 9c 00 ; 0xf66b6 system.c:51
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf66b9
+ mov word [es:bx], ax ; 26 89 07 ; 0xf66bc system.c:53
+ mov bx, 0009eh ; bb 9e 00 ; 0xf66bf system.c:51
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf66c2
+ mov word [es:bx], dx ; 26 89 17 ; 0xf66c5 system.c:53
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66c8 system.c:428
+ mov dx, 000a1h ; ba a1 00 ; 0xf66cc system.c:429
+ in AL, DX ; ec ; 0xf66cf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf66d0
+ and AL, strict byte 0feh ; 24 fe ; 0xf66d2 system.c:430
+ out DX, AL ; ee ; 0xf66d4
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66d5 system.c:431
+ call 0165fh ; e8 84 af ; 0xf66d8
+ mov dl, al ; 88 c2 ; 0xf66db system.c:432
+ or dl, 040h ; 80 ca 40 ; 0xf66dd
+ xor dh, dh ; 30 f6 ; 0xf66e0
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66e2
+ call 0167ah ; e8 92 af ; 0xf66e5
+ jmp short 06682h ; eb 98 ; 0xf66e8 system.c:433
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf66ea system.c:436
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf66ed system.c:437
+ jmp short 06682h ; eb 90 ; 0xf66f0 system.c:439
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf66f2
+ jne short 06713h ; 75 1c ; 0xf66f5
+ mov bx, 000a0h ; bb a0 00 ; 0xf66f7 system.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf66fa
+ mov es, ax ; 8e c0 ; 0xf66fd
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf66ff
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6702 system.c:442
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6706 system.c:443
+ call 0165fh ; e8 53 af ; 0xf6709
+ mov dl, al ; 88 c2 ; 0xf670c system.c:444
+ and dl, 0bfh ; 80 e2 bf ; 0xf670e
+ jmp short 066e2h ; eb cf ; 0xf6711
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf6713 system.c:447
+ mov bx, ax ; 89 c3 ; 0xf6716 system.c:449
+ xor bh, ah ; 30 e7 ; 0xf6718
+ xor al, dl ; 30 d0 ; 0xf671a
+ mov dx, ax ; 89 c2 ; 0xf671c
+ lea ax, [bx-001h] ; 8d 47 ff ; 0xf671e
+ or dx, ax ; 09 c2 ; 0xf6721
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6723
+ jmp near 06682h ; e9 59 ff ; 0xf6726 system.c:452
+ sti ; fb ; 0xf6729 system.c:458
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf672a system.c:459
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf672d
+ call 064f7h ; e8 c4 fd ; 0xf6730
+ jmp near 06682h ; e9 4c ff ; 0xf6733 system.c:460
+ mov ax, strict word 00031h ; b8 31 00 ; 0xf6736 system.c:465
+ call 0165fh ; e8 23 af ; 0xf6739
+ xor ah, ah ; 30 e4 ; 0xf673c
+ mov dx, ax ; 89 c2 ; 0xf673e
+ sal dx, 008h ; c1 e2 08 ; 0xf6740
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf6743
+ call 0165fh ; e8 16 af ; 0xf6746
+ xor ah, ah ; 30 e4 ; 0xf6749
+ or dx, ax ; 09 c2 ; 0xf674b
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf674d
+ cmp dx, 03c00h ; 81 fa 00 3c ; 0xf6750 system.c:476
+ jbe short 0675bh ; 76 05 ; 0xf6754
+ mov word [bp+012h], 03c00h ; c7 46 12 00 3c ; 0xf6756 system.c:477
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf675b system.c:480
+ jmp near 06682h ; e9 20 ff ; 0xf675f system.c:485
+ cli ; fa ; 0xf6762 system.c:494
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6763 system.c:496
+ call 0653ah ; e8 d1 fd ; 0xf6766
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6769 system.c:499
+ add bx, strict byte 00038h ; 83 c3 38 ; 0xf676c
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf676f system.c:51
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6772 system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6777 system.c:500
+ add bx, strict byte 0003ah ; 83 c3 3a ; 0xf677a
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf677d system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6780 system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6785 system.c:501
+ add bx, strict byte 0003ch ; 83 c3 3c ; 0xf6788
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf678b system.c:41
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf678e
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6792 system.c:502
+ add bx, strict byte 0003dh ; 83 c3 3d ; 0xf6795
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6798 system.c:41
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf679b
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf679f system.c:503
+ add bx, strict byte 0003eh ; 83 c3 3e ; 0xf67a2
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf67a5 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf67a8 system.c:53
+ mov AL, strict byte 011h ; b0 11 ; 0xf67ad system.c:506
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf67af
+ out DX, AL ; ee ; 0xf67b2
+ mov dx, 000a0h ; ba a0 00 ; 0xf67b3 system.c:507
+ out DX, AL ; ee ; 0xf67b6
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf67b7 system.c:508
+ shr ax, 008h ; c1 e8 08 ; 0xf67ba
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67bd
+ out DX, AL ; ee ; 0xf67c0
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf67c1 system.c:509
+ mov dx, 000a1h ; ba a1 00 ; 0xf67c4
+ out DX, AL ; ee ; 0xf67c7
+ mov AL, strict byte 004h ; b0 04 ; 0xf67c8 system.c:510
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67ca
+ out DX, AL ; ee ; 0xf67cd
+ mov AL, strict byte 002h ; b0 02 ; 0xf67ce system.c:511
+ mov dx, 000a1h ; ba a1 00 ; 0xf67d0
+ out DX, AL ; ee ; 0xf67d3
+ mov AL, strict byte 001h ; b0 01 ; 0xf67d4 system.c:512
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67d6
+ out DX, AL ; ee ; 0xf67d9
+ mov dx, 000a1h ; ba a1 00 ; 0xf67da system.c:513
+ out DX, AL ; ee ; 0xf67dd
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf67de system.c:515
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67e0
+ out DX, AL ; ee ; 0xf67e3
+ mov dx, 000a1h ; ba a1 00 ; 0xf67e4 system.c:516
+ out DX, AL ; ee ; 0xf67e7
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf67e8 system.c:518
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf67eb
+ lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf67f0
+ push strict byte 00038h ; 6a 38 ; 0xf67f5
+ call 067fah ; e8 00 00 ; 0xf67f7
+ pop ax ; 58 ; 0xf67fa
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf67fb
+ push ax ; 50 ; 0xf67fe
+ smsw ax ; 0f 01 e0 ; 0xf67ff
+ or AL, strict byte 001h ; 0c 01 ; 0xf6802
+ lmsw ax ; 0f 01 f0 ; 0xf6804
+ retf ; cb ; 0xf6807
+ mov ax, strict word 00018h ; b8 18 00 ; 0xf6808
+ mov ds, ax ; 8e d8 ; 0xf680b
+ add AL, strict byte 008h ; 04 08 ; 0xf680d
+ mov es, ax ; 8e c0 ; 0xf680f
+ add AL, strict byte 008h ; 04 08 ; 0xf6811
+ mov ss, ax ; 8e d0 ; 0xf6813
+ lea ax, [bp+004h] ; 8d 46 04 ; 0xf6815 system.c:519
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xf6818
+ popaw ; 61 ; 0xf681a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf681b
+ pop cx ; 59 ; 0xf681e
+ pop ax ; 58 ; 0xf681f
+ pop ax ; 58 ; 0xf6820
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf6821
+ push ax ; 50 ; 0xf6824
+ push cx ; 51 ; 0xf6825
+ retf ; cb ; 0xf6826
+ jmp near 06682h ; e9 58 fe ; 0xf6827 system.c:525
+ mov bx, 00eeah ; bb ea 0e ; 0xf682a system.c:532
+ mov cx, ds ; 8c d9 ; 0xf682d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf682f
+ call 018cbh ; e8 96 b0 ; 0xf6832
+ push 0087eh ; 68 7e 08 ; 0xf6835
+ push strict byte 00004h ; 6a 04 ; 0xf6838
+ call 0190eh ; e8 d1 b0 ; 0xf683a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf683d
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6840
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6844
+ xor ah, ah ; 30 e4 ; 0xf6847
+ or ah, 086h ; 80 cc 86 ; 0xf6849
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf684c
+ jmp near 06682h ; e9 30 fe ; 0xf684f
+ mov word [bp+018h], si ; 89 76 18 ; 0xf6852 system.c:538
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6855 system.c:539
+ mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf6858 system.c:540
+ mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf685d system.c:541
+ jmp near 06682h ; e9 1d fe ; 0xf6862 system.c:542
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6865 system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6868
+ mov es, ax ; 8e c0 ; 0xf686b
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf686d
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf6870 system.c:49
+ mov word [bp+018h], si ; 89 76 18 ; 0xf6873 system.c:546
+ jmp near 06682h ; e9 09 fe ; 0xf6876 system.c:547
+ push 008adh ; 68 ad 08 ; 0xf6879 system.c:550
+ push strict byte 00008h ; 6a 08 ; 0xf687c
+ jmp short 0683ah ; eb ba ; 0xf687e
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6880 system.c:562
+ jne short 0689fh ; 75 19 ; 0xf6884
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6886 system.c:564
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6889 system.c:565
+ xor ah, ah ; 30 e4 ; 0xf688c
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf688e
+ jc short 06898h ; 72 05 ; 0xf6891
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6893
+ jbe short 06873h ; 76 db ; 0xf6896
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6898 system.c:568
+ jmp near 06682h ; e9 e3 fd ; 0xf689c system.c:569
+ mov bx, 00eeah ; bb ea 0e ; 0xf689f system.c:573
+ mov cx, ds ; 8c d9 ; 0xf68a2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf68a4
+ call 018cbh ; e8 21 b0 ; 0xf68a7
+ push word [bp+00ch] ; ff 76 0c ; 0xf68aa
+ push word [bp+012h] ; ff 76 12 ; 0xf68ad
+ push 008c4h ; 68 c4 08 ; 0xf68b0
+ push strict byte 00004h ; 6a 04 ; 0xf68b3
+ call 0190eh ; e8 56 b0 ; 0xf68b5
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf68b8
+ jmp short 06840h ; eb 83 ; 0xf68bb
+ ; disGetNextSymbol 0xf68bd LB 0x4a1b -> off=0x0 cb=0000000000000167 uValue=00000000000f52bd 'int15_blkmove'
+int15_blkmove: ; 0xf68bd LB 0x167
+ push bp ; 55 ; 0xf68bd system.c:818
+ mov bp, sp ; 89 e5 ; 0xf68be
+ push si ; 56 ; 0xf68c0
+ push di ; 57 ; 0xf68c1
+ cli ; fa ; 0xf68c2 system.c:828
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf68c3 system.c:830
+ call 0653ah ; e8 71 fc ; 0xf68c6
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf68c9 system.c:853
+ sal cx, 004h ; c1 e1 04 ; 0xf68cc
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf68cf
+ add ax, cx ; 01 c8 ; 0xf68d2
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68d4 system.c:854
+ shr bx, 00ch ; c1 eb 0c ; 0xf68d7
+ mov dl, bl ; 88 da ; 0xf68da
+ cmp ax, cx ; 39 c8 ; 0xf68dc system.c:855
+ jnc short 068e2h ; 73 02 ; 0xf68de
+ db 0feh, 0c2h
+ ; inc dl ; fe c2 ; 0xf68e0 system.c:856
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68e2 system.c:857
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf68e5
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf68e8 system.c:51
+ mov word [es:bx], strict word 0002fh ; 26 c7 07 2f 00 ; 0xf68eb
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68f0 system.c:858
+ add bx, strict byte 0000ah ; 83 c3 0a ; 0xf68f3
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf68f6 system.c:51
+ mov word [es:bx], ax ; 26 89 07 ; 0xf68f9
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68fc system.c:859
+ add bx, strict byte 0000ch ; 83 c3 0c ; 0xf68ff
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6902 system.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf6905 system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6908 system.c:860
+ add bx, strict byte 0000dh ; 83 c3 0d ; 0xf690b
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf690e system.c:41
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6911 system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6915 system.c:861
+ add bx, strict byte 0000eh ; 83 c3 0e ; 0xf6918
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf691b system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf691e
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6923 system.c:864
+ add bx, strict byte 00020h ; 83 c3 20 ; 0xf6926
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6929 system.c:51
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf692c
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6931 system.c:865
+ add bx, strict byte 00022h ; 83 c3 22 ; 0xf6934
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6937 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf693a
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf693f system.c:866
+ add bx, strict byte 00024h ; 83 c3 24 ; 0xf6942
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6945 system.c:41
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf6948
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf694c system.c:867
+ add bx, strict byte 00025h ; 83 c3 25 ; 0xf694f
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6952 system.c:41
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6955
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6959 system.c:868
+ add bx, strict byte 00026h ; 83 c3 26 ; 0xf695c
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf695f system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6962
+ mov ax, ss ; 8c d0 ; 0xf6967 system.c:871
+ mov dx, ax ; 89 c2 ; 0xf6969
+ sal ax, 004h ; c1 e0 04 ; 0xf696b system.c:872
+ shr dx, 00ch ; c1 ea 0c ; 0xf696e
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6971 system.c:874
+ add bx, strict byte 00028h ; 83 c3 28 ; 0xf6974
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6977 system.c:51
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf697a
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf697f system.c:875
+ add bx, strict byte 0002ah ; 83 c3 2a ; 0xf6982
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6985 system.c:51
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6988
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf698b system.c:876
+ add bx, strict byte 0002ch ; 83 c3 2c ; 0xf698e
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6991 system.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf6994
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6997 system.c:877
+ add bx, strict byte 0002dh ; 83 c3 2d ; 0xf699a
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf699d system.c:41
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf69a0 system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf69a4 system.c:878
+ add bx, strict byte 0002eh ; 83 c3 2e ; 0xf69a7
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf69aa system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf69ad
+ lea bx, [bp+004h] ; 8d 5e 04 ; 0xf69b2 system.c:886
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf69b5
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf69b8
+ mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf69bb
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf69be
+ mov ds, ax ; 8e d8 ; 0xf69c0
+ mov word [00467h], bx ; 89 1e 67 04 ; 0xf69c2
+ mov [00469h], ss ; 8c 16 69 04 ; 0xf69c6
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf69ca system.c:888
+ lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf69cf
+ push strict byte 00020h ; 6a 20 ; 0xf69d5
+ call 069dah ; e8 00 00 ; 0xf69d7
+ pop ax ; 58 ; 0xf69da
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf69db
+ push ax ; 50 ; 0xf69de
+ smsw ax ; 0f 01 e0 ; 0xf69df
+ or AL, strict byte 001h ; 0c 01 ; 0xf69e2
+ lmsw ax ; 0f 01 f0 ; 0xf69e4
+ retf ; cb ; 0xf69e7
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf69e8
+ mov ds, ax ; 8e d8 ; 0xf69eb
+ add AL, strict byte 008h ; 04 08 ; 0xf69ed
+ mov es, ax ; 8e c0 ; 0xf69ef
+ add AL, strict byte 010h ; 04 10 ; 0xf69f1
+ mov ss, ax ; 8e d0 ; 0xf69f3
+ db 033h, 0f6h
+ ; xor si, si ; 33 f6 ; 0xf69f5 system.c:889
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xf69f7
+ cld ; fc ; 0xf69f9
+ rep movsw ; f3 a5 ; 0xf69fa
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf69fc system.c:890
+ out strict byte 080h, AL ; e6 80 ; 0xf69fe
+ mov AL, strict byte 00fh ; b0 0f ; 0xf6a00
+ out strict byte 070h, AL ; e6 70 ; 0xf6a02
+ mov AL, strict byte 009h ; b0 09 ; 0xf6a04
+ out strict byte 071h, AL ; e6 71 ; 0xf6a06
+ lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf6a08
+ int3 ; cc ; 0xf6a0e
+ xor ax, ax ; 31 c0 ; 0xf6a0f system.c:891
+ call 0653ah ; e8 26 fb ; 0xf6a11
+ sti ; fb ; 0xf6a14 system.c:896
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6a15 system.c:898
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6a19 system.c:899
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6a1d system.c:900
+ pop di ; 5f ; 0xf6a20
+ pop si ; 5e ; 0xf6a21
+ pop bp ; 5d ; 0xf6a22
+ retn ; c3 ; 0xf6a23
+ ; disGetNextSymbol 0xf6a24 LB 0x48b4 -> off=0x0 cb=000000000000019b uValue=00000000000f5424 'inv_op_handler'
+inv_op_handler: ; 0xf6a24 LB 0x19b
+ push bp ; 55 ; 0xf6a24 invop.c:237
+ mov bp, sp ; 89 e5 ; 0xf6a25
+ push si ; 56 ; 0xf6a27
+ push di ; 57 ; 0xf6a28
+ push ax ; 50 ; 0xf6a29
+ push ax ; 50 ; 0xf6a2a
+ les bx, [bp+018h] ; c4 5e 18 ; 0xf6a2b invop.c:239
+ cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6a2e invop.c:241
+ jne short 06a3ah ; 75 06 ; 0xf6a32
+ inc word [bp+018h] ; ff 46 18 ; 0xf6a34 invop.c:243
+ jmp near 06bb8h ; e9 7e 01 ; 0xf6a37 invop.c:244
+ cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf6a3a
+ je short 06a44h ; 74 03 ; 0xf6a3f
+ jmp near 06bb4h ; e9 70 01 ; 0xf6a41
+ mov si, 00800h ; be 00 08 ; 0xf6a44 invop.c:246
+ xor ax, ax ; 31 c0 ; 0xf6a47
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6a49
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6a4c invop.c:249
+ mov es, ax ; 8e c0 ; 0xf6a4f invop.c:257
+ mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6a51
+ sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6a55
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6a58
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6a5c invop.c:258
+ mov es, dx ; 8e c2 ; 0xf6a60
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6a62
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6a65 invop.c:259
+ mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6a68
+ mov es, dx ; 8e c2 ; 0xf6a6c
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6a6e
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6a72 invop.c:260
+ mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6a75
+ mov es, dx ; 8e c2 ; 0xf6a79
+ mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6a7b
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6a7f invop.c:263
+ mov bl, byte [es:si+038h] ; 26 8a 5c 38 ; 0xf6a82
+ xor bh, bh ; 30 ff ; 0xf6a86
+ mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6a88
+ mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6a8c invop.c:264
+ xor dx, dx ; 31 d2 ; 0xf6a90
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6a92
+ sal ax, 1 ; d1 e0 ; 0xf6a95
+ rcl dx, 1 ; d1 d2 ; 0xf6a97
+ loop 06a95h ; e2 fa ; 0xf6a99
+ cmp bx, dx ; 39 d3 ; 0xf6a9b
+ jne short 06aa3h ; 75 04 ; 0xf6a9d
+ cmp di, ax ; 39 c7 ; 0xf6a9f
+ je short 06aa8h ; 74 05 ; 0xf6aa1
+ mov word [bp-008h], strict word 00001h ; c7 46 f8 01 00 ; 0xf6aa3 invop.c:265
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6aa8 invop.c:266
+ mov bl, byte [es:si+04ah] ; 26 8a 5c 4a ; 0xf6aab
+ xor bh, bh ; 30 ff ; 0xf6aaf
+ mov di, word [es:si+048h] ; 26 8b 7c 48 ; 0xf6ab1
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6ab5 invop.c:267
+ xor dx, dx ; 31 d2 ; 0xf6ab9
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6abb
+ sal ax, 1 ; d1 e0 ; 0xf6abe
+ rcl dx, 1 ; d1 d2 ; 0xf6ac0
+ loop 06abeh ; e2 fa ; 0xf6ac2
+ cmp bx, dx ; 39 d3 ; 0xf6ac4
+ jne short 06acch ; 75 04 ; 0xf6ac6
+ cmp di, ax ; 39 c7 ; 0xf6ac8
+ je short 06ad0h ; 74 04 ; 0xf6aca
+ or byte [bp-008h], 002h ; 80 4e f8 02 ; 0xf6acc invop.c:268
+ push strict byte 00000h ; 6a 00 ; 0xf6ad0 invop.c:271
+ push 00800h ; 68 00 08 ; 0xf6ad2
+ push strict byte 0001fh ; 6a 1f ; 0xf6ad5
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6ad7
+ lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6ad9
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6add
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6ae0 invop.c:274
+ mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6ae3
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6ae7
+ mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6aeb invop.c:275
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6aef
+ mov al, byte [es:si+039h] ; 26 8a 44 39 ; 0xf6af3 invop.c:276
+ xor ah, ah ; 30 e4 ; 0xf6af7
+ mov dx, ax ; 89 c2 ; 0xf6af9
+ sal dx, 008h ; c1 e2 08 ; 0xf6afb
+ mov al, byte [es:si+038h] ; 26 8a 44 38 ; 0xf6afe
+ or dx, ax ; 09 c2 ; 0xf6b02
+ mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6b04
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6b08 invop.c:277
+ mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6b0e invop.c:280
+ mov word [es:si], ax ; 26 89 04 ; 0xf6b12
+ mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6b15 invop.c:281
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6b19
+ mov al, byte [es:si+04bh] ; 26 8a 44 4b ; 0xf6b1d invop.c:282
+ xor ah, ah ; 30 e4 ; 0xf6b21
+ mov dx, ax ; 89 c2 ; 0xf6b23
+ sal dx, 008h ; c1 e2 08 ; 0xf6b25
+ mov al, byte [es:si+04ah] ; 26 8a 44 4a ; 0xf6b28
+ or dx, ax ; 09 c2 ; 0xf6b2c
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6b2e
+ mov al, byte [es:si+05ch] ; 26 8a 44 5c ; 0xf6b32 invop.c:285
+ mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6b36
+ push ax ; 50 ; 0xf6b3a invop.c:286
+ push dx ; 52 ; 0xf6b3b
+ push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6b3c
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6b40
+ lidt [ss:bx] ; 36 0f 01 1f ; 0xf6b42
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6b46
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf6b49 invop.c:289
+ mov ax, 00080h ; b8 80 00 ; 0xf6b4c
+ mov ss, ax ; 8e d0 ; 0xf6b4f
+ mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6b51
+ mov ds, ax ; 8e d8 ; 0xf6b55
+ mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf6b57
+ mov es, ax ; 8e c0 ; 0xf6b5b
+ smsw ax ; 0f 01 e0 ; 0xf6b5d invop.c:290
+ inc ax ; 40 ; 0xf6b60
+ lmsw ax ; 0f 01 f0 ; 0xf6b61
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6b64
+ test cx, strict word 00001h ; f7 c1 01 00 ; 0xf6b67
+ je near 06b71h ; 0f 84 02 00 ; 0xf6b6b
+ mov es, ax ; 8e c0 ; 0xf6b6f
+ test cx, strict word 00002h ; f7 c1 02 00 ; 0xf6b71
+ je near 06b99h ; 0f 84 20 00 ; 0xf6b75
+ mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6b79
+ mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6b7e
+ mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6b83
+ mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6b88
+ mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6b8d
+ mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6b92
+ mov ds, ax ; 8e d8 ; 0xf6b97
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6b99
+ dec ax ; 48 ; 0xf6b9c
+ mov cr0, eax ; 0f 22 c0 ; 0xf6b9d
+ mov sp, strict word 00026h ; bc 26 00 ; 0xf6ba0 invop.c:291
+ popaw ; 61 ; 0xf6ba3
+ mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6ba4
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6ba9
+ mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6bac
+ iret ; cf ; 0xf6bb1
+ jmp short 06bb8h ; eb 04 ; 0xf6bb2 invop.c:343
+ sti ; fb ; 0xf6bb4 invop.c:347
+ hlt ; f4 ; 0xf6bb5 invop.c:348
+ jmp short 06bb5h ; eb fd ; 0xf6bb6
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6bb8 invop.c:350
+ pop di ; 5f ; 0xf6bbb
+ pop si ; 5e ; 0xf6bbc
+ pop bp ; 5d ; 0xf6bbd
+ retn ; c3 ; 0xf6bbe
+ ; disGetNextSymbol 0xf6bbf LB 0x4719 -> off=0x0 cb=0000000000000028 uValue=00000000000f55bf 'init_rtc'
+init_rtc: ; 0xf6bbf LB 0x28
+ push bp ; 55 ; 0xf6bbf timepci.c:74
+ mov bp, sp ; 89 e5 ; 0xf6bc0
+ push dx ; 52 ; 0xf6bc2
+ mov dx, strict word 00026h ; ba 26 00 ; 0xf6bc3 timepci.c:76
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6bc6
+ call 0167ah ; e8 ae aa ; 0xf6bc9
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf6bcc timepci.c:77
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6bcf
+ call 0167ah ; e8 a5 aa ; 0xf6bd2
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6bd5 timepci.c:78
+ call 0165fh ; e8 84 aa ; 0xf6bd8
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6bdb timepci.c:79
+ call 0165fh ; e8 7e aa ; 0xf6bde
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6be1 timepci.c:80
+ pop dx ; 5a ; 0xf6be4
+ pop bp ; 5d ; 0xf6be5
+ retn ; c3 ; 0xf6be6
+ ; disGetNextSymbol 0xf6be7 LB 0x46f1 -> off=0x0 cb=0000000000000021 uValue=00000000000f55e7 'rtc_updating'
+rtc_updating: ; 0xf6be7 LB 0x21
+ push bp ; 55 ; 0xf6be7 timepci.c:82
+ mov bp, sp ; 89 e5 ; 0xf6be8
+ push dx ; 52 ; 0xf6bea
+ mov dx, 061a8h ; ba a8 61 ; 0xf6beb timepci.c:95
+ dec dx ; 4a ; 0xf6bee timepci.c:96
+ je short 06bffh ; 74 0e ; 0xf6bef
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6bf1 timepci.c:97
+ call 0165fh ; e8 68 aa ; 0xf6bf4
+ test AL, strict byte 080h ; a8 80 ; 0xf6bf7
+ jne short 06beeh ; 75 f3 ; 0xf6bf9
+ xor ax, ax ; 31 c0 ; 0xf6bfb timepci.c:98
+ jmp short 06c02h ; eb 03 ; 0xf6bfd
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6bff timepci.c:100
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6c02 timepci.c:101
+ pop dx ; 5a ; 0xf6c05
+ pop bp ; 5d ; 0xf6c06
+ retn ; c3 ; 0xf6c07
+ ; disGetNextSymbol 0xf6c08 LB 0x46d0 -> off=0x0 cb=0000000000000098 uValue=00000000000f5608 'int70_function'
+int70_function: ; 0xf6c08 LB 0x98
+ push bp ; 55 ; 0xf6c08 timepci.c:110
+ mov bp, sp ; 89 e5 ; 0xf6c09
+ push si ; 56 ; 0xf6c0b
+ push ax ; 50 ; 0xf6c0c
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c0d timepci.c:116
+ call 0165fh ; e8 4c aa ; 0xf6c10
+ mov bl, al ; 88 c3 ; 0xf6c13
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6c15
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6c18 timepci.c:117
+ call 0165fh ; e8 41 aa ; 0xf6c1b
+ mov dl, al ; 88 c2 ; 0xf6c1e
+ test bl, 060h ; f6 c3 60 ; 0xf6c20 timepci.c:119
+ je short 06c80h ; 74 5b ; 0xf6c23
+ test AL, strict byte 020h ; a8 20 ; 0xf6c25 timepci.c:120
+ je short 06c2dh ; 74 04 ; 0xf6c27
+ sti ; fb ; 0xf6c29 timepci.c:122
+ int 04ah ; cd 4a ; 0xf6c2a timepci.c:123
+ cli ; fa ; 0xf6c2c timepci.c:124
+ test dl, 040h ; f6 c2 40 ; 0xf6c2d timepci.c:126
+ je short 06c97h ; 74 65 ; 0xf6c30
+ mov bx, 000a0h ; bb a0 00 ; 0xf6c32 timepci.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6c35
+ mov es, dx ; 8e c2 ; 0xf6c38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c3a
+ test al, al ; 84 c0 ; 0xf6c3d timepci.c:39
+ je short 06c97h ; 74 56 ; 0xf6c3f
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6c41 timepci.c:58
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf6c44
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6c47
+ test bx, bx ; 85 db ; 0xf6c4b timepci.c:134
+ jne short 06c82h ; 75 33 ; 0xf6c4d
+ cmp dx, 003d1h ; 81 fa d1 03 ; 0xf6c4f
+ jnc short 06c82h ; 73 2d ; 0xf6c53
+ mov bx, 00098h ; bb 98 00 ; 0xf6c55 timepci.c:48
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf6c58
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6c5b timepci.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6c5e
+ mov si, 000a0h ; be a0 00 ; 0xf6c61 timepci.c:43
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6c64
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6c68 timepci.c:141
+ and dl, 037h ; 80 e2 37 ; 0xf6c6b
+ xor dh, dh ; 30 f6 ; 0xf6c6e
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c70
+ call 0167ah ; e8 04 aa ; 0xf6c73
+ mov es, cx ; 8e c1 ; 0xf6c76 timepci.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c78
+ or AL, strict byte 080h ; 0c 80 ; 0xf6c7b timepci.c:39
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6c7d timepci.c:43
+ jmp short 06c97h ; eb 15 ; 0xf6c80 timepci.c:143
+ mov cx, dx ; 89 d1 ; 0xf6c82 timepci.c:145
+ add cx, 0fc2fh ; 81 c1 2f fc ; 0xf6c84
+ mov dx, bx ; 89 da ; 0xf6c88
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6c8a
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6c8d timepci.c:63
+ mov word [es:bx], cx ; 26 89 0f ; 0xf6c90
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6c93
+ call 0e030h ; e8 96 73 ; 0xf6c97 timepci.c:151
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6c9a timepci.c:152
+ pop si ; 5e ; 0xf6c9d
+ pop bp ; 5d ; 0xf6c9e
+ retn ; c3 ; 0xf6c9f
+ ; disGetNextSymbol 0xf6ca0 LB 0x4638 -> off=0x10 cb=00000000000001d9 uValue=00000000000f56b0 'int1a_function'
+ db 0c6h, 06ch, 0edh, 06ch, 012h, 06dh, 04eh, 06dh, 0a0h, 06dh, 0d7h, 06dh, 01eh, 06eh, 079h, 06eh
+int1a_function: ; 0xf6cb0 LB 0x1d9
+ push bp ; 55 ; 0xf6cb0 timepci.c:157
+ mov bp, sp ; 89 e5 ; 0xf6cb1
+ sti ; fb ; 0xf6cb3 timepci.c:163
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6cb4 timepci.c:165
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf6cb7
+ jnbe short 06d19h ; 77 5e ; 0xf6cb9
+ mov bl, al ; 88 c3 ; 0xf6cbb
+ xor bh, bh ; 30 ff ; 0xf6cbd
+ add bx, bx ; 01 db ; 0xf6cbf
+ jmp word [cs:bx+06ca0h] ; 2e ff a7 a0 6c ; 0xf6cc1
+ cli ; fa ; 0xf6cc6 timepci.c:167
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6cc7 timepci.c:168
+ xor ax, ax ; 31 c0 ; 0xf6cca
+ mov es, ax ; 8e c0 ; 0xf6ccc
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6cce
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf6cd1
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6cd4 timepci.c:169
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6cd7
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf6cda
+ mov bx, 00470h ; bb 70 04 ; 0xf6cdd timepci.c:170
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6ce0
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6ce3
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6ce6 timepci.c:171
+ sti ; fb ; 0xf6cea timepci.c:172
+ jmp short 06d19h ; eb 2c ; 0xf6ceb timepci.c:175
+ cli ; fa ; 0xf6ced timepci.c:178
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6cee timepci.c:179
+ xor ax, ax ; 31 c0 ; 0xf6cf1
+ mov es, ax ; 8e c0 ; 0xf6cf3
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6cf5
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6cf8
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6cfb timepci.c:180
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6cfe
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6d01
+ mov bx, 00470h ; bb 70 04 ; 0xf6d04 timepci.c:181
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6d07
+ sti ; fb ; 0xf6d0b timepci.c:182
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d0c timepci.c:183
+ jmp short 06d19h ; eb 07 ; 0xf6d10 timepci.c:185
+ call 06be7h ; e8 d2 fe ; 0xf6d12 timepci.c:188
+ test ax, ax ; 85 c0 ; 0xf6d15
+ je short 06d1ch ; 74 03 ; 0xf6d17
+ jmp near 06d4ah ; e9 2e 00 ; 0xf6d19 timepci.c:190
+ xor ax, ax ; 31 c0 ; 0xf6d1c timepci.c:193
+ call 0165fh ; e8 3e a9 ; 0xf6d1e
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6d21
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6d24 timepci.c:194
+ call 0165fh ; e8 35 a9 ; 0xf6d27
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6d2a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6d2d timepci.c:195
+ call 0165fh ; e8 2c a9 ; 0xf6d30
+ mov dl, al ; 88 c2 ; 0xf6d33
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6d35
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d38 timepci.c:196
+ call 0165fh ; e8 21 a9 ; 0xf6d3b
+ and AL, strict byte 001h ; 24 01 ; 0xf6d3e
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6d40
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d43 timepci.c:197
+ mov byte [bp+012h], dl ; 88 56 12 ; 0xf6d47 timepci.c:198
+ mov sp, bp ; 89 ec ; 0xf6d4a timepci.c:200
+ pop bp ; 5d ; 0xf6d4c
+ retn ; c3 ; 0xf6d4d
+ call 06be7h ; e8 96 fe ; 0xf6d4e timepci.c:213
+ test ax, ax ; 85 c0 ; 0xf6d51
+ je short 06d58h ; 74 03 ; 0xf6d53
+ call 06bbfh ; e8 67 fe ; 0xf6d55 timepci.c:214
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6d58 timepci.c:217
+ xor dh, dh ; 30 f6 ; 0xf6d5b
+ xor ax, ax ; 31 c0 ; 0xf6d5d
+ call 0167ah ; e8 18 a9 ; 0xf6d5f
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6d62 timepci.c:218
+ xor dh, dh ; 30 f6 ; 0xf6d65
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6d67
+ call 0167ah ; e8 0d a9 ; 0xf6d6a
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6d6d timepci.c:219
+ xor dh, dh ; 30 f6 ; 0xf6d70
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6d72
+ call 0167ah ; e8 02 a9 ; 0xf6d75
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d78 timepci.c:221
+ call 0165fh ; e8 e1 a8 ; 0xf6d7b
+ mov bl, al ; 88 c3 ; 0xf6d7e
+ and bl, 060h ; 80 e3 60 ; 0xf6d80
+ or bl, 002h ; 80 cb 02 ; 0xf6d83
+ mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf6d86
+ and AL, strict byte 001h ; 24 01 ; 0xf6d89
+ or bl, al ; 08 c3 ; 0xf6d8b
+ mov dl, bl ; 88 da ; 0xf6d8d timepci.c:223
+ xor dh, dh ; 30 f6 ; 0xf6d8f
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d91
+ call 0167ah ; e8 e3 a8 ; 0xf6d94
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d97 timepci.c:224
+ mov byte [bp+012h], bl ; 88 5e 12 ; 0xf6d9b timepci.c:225
+ jmp short 06d4ah ; eb aa ; 0xf6d9e timepci.c:227
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6da0 timepci.c:230
+ call 06be7h ; e8 40 fe ; 0xf6da4 timepci.c:231
+ test ax, ax ; 85 c0 ; 0xf6da7
+ je short 06dadh ; 74 02 ; 0xf6da9
+ jmp short 06d4ah ; eb 9d ; 0xf6dab timepci.c:233
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6dad timepci.c:235
+ call 0165fh ; e8 ac a8 ; 0xf6db0
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6db3
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6db6 timepci.c:236
+ call 0165fh ; e8 a3 a8 ; 0xf6db9
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6dbc
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6dbf timepci.c:237
+ call 0165fh ; e8 9a a8 ; 0xf6dc2
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6dc5
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6dc8 timepci.c:238
+ call 0165fh ; e8 91 a8 ; 0xf6dcb
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6dce
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6dd1 timepci.c:239
+ jmp near 06d4ah ; e9 73 ff ; 0xf6dd4 timepci.c:241
+ call 06be7h ; e8 0d fe ; 0xf6dd7 timepci.c:254
+ test ax, ax ; 85 c0 ; 0xf6dda
+ je short 06de4h ; 74 06 ; 0xf6ddc
+ call 06bbfh ; e8 de fd ; 0xf6dde timepci.c:255
+ jmp near 06d4ah ; e9 66 ff ; 0xf6de1 timepci.c:257
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6de4 timepci.c:259
+ xor dh, dh ; 30 f6 ; 0xf6de7
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6de9
+ call 0167ah ; e8 8b a8 ; 0xf6dec
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6def timepci.c:260
+ xor dh, dh ; 30 f6 ; 0xf6df2
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6df4
+ call 0167ah ; e8 80 a8 ; 0xf6df7
+ mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf6dfa timepci.c:261
+ xor dh, dh ; 30 f6 ; 0xf6dfd
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6dff
+ call 0167ah ; e8 75 a8 ; 0xf6e02
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6e05 timepci.c:262
+ xor dh, dh ; 30 f6 ; 0xf6e08
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6e0a
+ call 0167ah ; e8 6a a8 ; 0xf6e0d
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e10 timepci.c:263
+ call 0165fh ; e8 49 a8 ; 0xf6e13
+ mov bl, al ; 88 c3 ; 0xf6e16
+ and bl, 07fh ; 80 e3 7f ; 0xf6e18
+ jmp near 06d8dh ; e9 6f ff ; 0xf6e1b
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e1e timepci.c:281
+ call 0165fh ; e8 3b a8 ; 0xf6e21
+ mov bl, al ; 88 c3 ; 0xf6e24
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf6e26 timepci.c:282
+ test AL, strict byte 020h ; a8 20 ; 0xf6e2b timepci.c:283
+ je short 06e32h ; 74 03 ; 0xf6e2d
+ jmp near 06d4ah ; e9 18 ff ; 0xf6e2f timepci.c:286
+ call 06be7h ; e8 b2 fd ; 0xf6e32 timepci.c:288
+ test ax, ax ; 85 c0 ; 0xf6e35
+ je short 06e3ch ; 74 03 ; 0xf6e37
+ call 06bbfh ; e8 83 fd ; 0xf6e39 timepci.c:289
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6e3c timepci.c:292
+ xor dh, dh ; 30 f6 ; 0xf6e3f
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6e41
+ call 0167ah ; e8 33 a8 ; 0xf6e44
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6e47 timepci.c:293
+ xor dh, dh ; 30 f6 ; 0xf6e4a
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf6e4c
+ call 0167ah ; e8 28 a8 ; 0xf6e4f
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6e52 timepci.c:294
+ xor dh, dh ; 30 f6 ; 0xf6e55
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf6e57
+ call 0167ah ; e8 1d a8 ; 0xf6e5a
+ mov dx, 000a1h ; ba a1 00 ; 0xf6e5d timepci.c:295
+ in AL, DX ; ec ; 0xf6e60
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e61
+ and AL, strict byte 0feh ; 24 fe ; 0xf6e63
+ out DX, AL ; ee ; 0xf6e65
+ mov dl, bl ; 88 da ; 0xf6e66 timepci.c:297
+ and dl, 05fh ; 80 e2 5f ; 0xf6e68
+ or dl, 020h ; 80 ca 20 ; 0xf6e6b
+ xor dh, dh ; 30 f6 ; 0xf6e6e
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e70
+ call 0167ah ; e8 04 a8 ; 0xf6e73
+ jmp near 06d4ah ; e9 d1 fe ; 0xf6e76 timepci.c:299
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e79 timepci.c:312
+ call 0165fh ; e8 e0 a7 ; 0xf6e7c
+ mov bl, al ; 88 c3 ; 0xf6e7f
+ mov dl, al ; 88 c2 ; 0xf6e81 timepci.c:314
+ and dl, 057h ; 80 e2 57 ; 0xf6e83
+ jmp near 06d8fh ; e9 06 ff ; 0xf6e86
+ ; disGetNextSymbol 0xf6e89 LB 0x444f -> off=0x0 cb=0000000000000034 uValue=00000000000f5889 'send_to_mouse_ctrl'
+send_to_mouse_ctrl: ; 0xf6e89 LB 0x34
+ push bp ; 55 ; 0xf6e89 ps2mouse.c:77
+ mov bp, sp ; 89 e5 ; 0xf6e8a
+ push bx ; 53 ; 0xf6e8c
+ push dx ; 52 ; 0xf6e8d
+ mov bl, al ; 88 c3 ; 0xf6e8e
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6e90 ps2mouse.c:81
+ in AL, DX ; ec ; 0xf6e93
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e94
+ test AL, strict byte 002h ; a8 02 ; 0xf6e96
+ je short 06ea8h ; 74 0e ; 0xf6e98
+ push 008feh ; 68 fe 08 ; 0xf6e9a ps2mouse.c:82
+ push 012b2h ; 68 b2 12 ; 0xf6e9d
+ push strict byte 00007h ; 6a 07 ; 0xf6ea0
+ call 0190eh ; e8 69 aa ; 0xf6ea2
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6ea5
+ mov AL, strict byte 0d4h ; b0 d4 ; 0xf6ea8 ps2mouse.c:83
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6eaa
+ out DX, AL ; ee ; 0xf6ead
+ mov al, bl ; 88 d8 ; 0xf6eae ps2mouse.c:84
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6eb0
+ out DX, AL ; ee ; 0xf6eb3
+ xor al, bl ; 30 d8 ; 0xf6eb4 ps2mouse.c:86
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6eb6
+ pop dx ; 5a ; 0xf6eb9
+ pop bx ; 5b ; 0xf6eba
+ pop bp ; 5d ; 0xf6ebb
+ retn ; c3 ; 0xf6ebc
+ ; disGetNextSymbol 0xf6ebd LB 0x441b -> off=0x0 cb=000000000000005d uValue=00000000000f58bd 'get_mouse_data'
+get_mouse_data: ; 0xf6ebd LB 0x5d
+ push bp ; 55 ; 0xf6ebd ps2mouse.c:89
+ mov bp, sp ; 89 e5 ; 0xf6ebe
+ push bx ; 53 ; 0xf6ec0
+ push cx ; 51 ; 0xf6ec1
+ push ax ; 50 ; 0xf6ec2
+ mov bx, ax ; 89 c3 ; 0xf6ec3
+ mov es, dx ; 8e c2 ; 0xf6ec5
+ mov cx, 02710h ; b9 10 27 ; 0xf6ec7 ps2mouse.c:91
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6eca ps2mouse.c:94
+ in AL, DX ; ec ; 0xf6ecd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ece
+ and ax, strict word 00021h ; 25 21 00 ; 0xf6ed0
+ cmp ax, strict word 00021h ; 3d 21 00 ; 0xf6ed3
+ je short 06f00h ; 74 28 ; 0xf6ed6
+ test cx, cx ; 85 c9 ; 0xf6ed8
+ je short 06f00h ; 74 24 ; 0xf6eda
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6edc ps2mouse.c:97
+ in AL, DX ; ec ; 0xf6edf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ee0
+ and AL, strict byte 010h ; 24 10 ; 0xf6ee2
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6ee4
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6ee7 ps2mouse.c:98
+ in AL, DX ; ec ; 0xf6eea
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6eeb
+ mov dx, ax ; 89 c2 ; 0xf6eed
+ xor dh, ah ; 30 e6 ; 0xf6eef
+ and dl, 010h ; 80 e2 10 ; 0xf6ef1
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6ef4
+ xor ah, ah ; 30 e4 ; 0xf6ef7
+ cmp dx, ax ; 39 c2 ; 0xf6ef9
+ je short 06ee7h ; 74 ea ; 0xf6efb
+ dec cx ; 49 ; 0xf6efd ps2mouse.c:100
+ jmp short 06ecah ; eb ca ; 0xf6efe ps2mouse.c:101
+ test cx, cx ; 85 c9 ; 0xf6f00 ps2mouse.c:103
+ jne short 06f08h ; 75 04 ; 0xf6f02
+ mov AL, strict byte 001h ; b0 01 ; 0xf6f04 ps2mouse.c:104
+ jmp short 06f13h ; eb 0b ; 0xf6f06
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6f08 ps2mouse.c:106
+ in AL, DX ; ec ; 0xf6f0b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f0c
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6f0e ps2mouse.c:107
+ xor al, al ; 30 c0 ; 0xf6f11 ps2mouse.c:108
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6f13 ps2mouse.c:109
+ pop cx ; 59 ; 0xf6f16
+ pop bx ; 5b ; 0xf6f17
+ pop bp ; 5d ; 0xf6f18
+ retn ; c3 ; 0xf6f19
+ ; disGetNextSymbol 0xf6f1a LB 0x43be -> off=0x0 cb=0000000000000032 uValue=00000000000f591a 'set_kbd_command_byte'
+set_kbd_command_byte: ; 0xf6f1a LB 0x32
+ push bp ; 55 ; 0xf6f1a ps2mouse.c:111
+ mov bp, sp ; 89 e5 ; 0xf6f1b
+ push bx ; 53 ; 0xf6f1d
+ push dx ; 52 ; 0xf6f1e
+ mov bl, al ; 88 c3 ; 0xf6f1f
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6f21 ps2mouse.c:113
+ in AL, DX ; ec ; 0xf6f24
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f25
+ test AL, strict byte 002h ; a8 02 ; 0xf6f27
+ je short 06f39h ; 74 0e ; 0xf6f29
+ push 00908h ; 68 08 09 ; 0xf6f2b ps2mouse.c:114
+ push 012b2h ; 68 b2 12 ; 0xf6f2e
+ push strict byte 00007h ; 6a 07 ; 0xf6f31
+ call 0190eh ; e8 d8 a9 ; 0xf6f33
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f36
+ mov AL, strict byte 060h ; b0 60 ; 0xf6f39 ps2mouse.c:116
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6f3b
+ out DX, AL ; ee ; 0xf6f3e
+ mov al, bl ; 88 d8 ; 0xf6f3f ps2mouse.c:117
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6f41
+ out DX, AL ; ee ; 0xf6f44
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6f45 ps2mouse.c:118
+ pop dx ; 5a ; 0xf6f48
+ pop bx ; 5b ; 0xf6f49
+ pop bp ; 5d ; 0xf6f4a
+ retn ; c3 ; 0xf6f4b
+ ; disGetNextSymbol 0xf6f4c LB 0x438c -> off=0x0 cb=000000000000009e uValue=00000000000f594c 'int74_function'
+int74_function: ; 0xf6f4c LB 0x9e
+ push bp ; 55 ; 0xf6f4c ps2mouse.c:121
+ mov bp, sp ; 89 e5 ; 0xf6f4d
+ push si ; 56 ; 0xf6f4f
+ push ax ; 50 ; 0xf6f50
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6f51 ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6f54
+ mov es, ax ; 8e c0 ; 0xf6f57
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6f59
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf6f5c ps2mouse.c:129
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6f61 ps2mouse.c:131
+ in AL, DX ; ec ; 0xf6f64
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f65
+ and AL, strict byte 021h ; 24 21 ; 0xf6f67 ps2mouse.c:132
+ cmp AL, strict byte 021h ; 3c 21 ; 0xf6f69
+ jne short 06f8bh ; 75 1e ; 0xf6f6b
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6f6d ps2mouse.c:135
+ in AL, DX ; ec ; 0xf6f70
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f71
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6f73
+ mov si, strict word 00026h ; be 26 00 ; 0xf6f76 ps2mouse.c:38
+ mov es, bx ; 8e c3 ; 0xf6f79
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6f7b
+ mov si, strict word 00027h ; be 27 00 ; 0xf6f7e ps2mouse.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf6f81
+ mov cl, ah ; 88 e1 ; 0xf6f84 ps2mouse.c:39
+ test ah, 080h ; f6 c4 80 ; 0xf6f86 ps2mouse.c:141
+ jne short 06f8dh ; 75 02 ; 0xf6f89
+ jmp short 06fe4h ; eb 57 ; 0xf6f8b ps2mouse.c:142
+ mov ch, cl ; 88 cd ; 0xf6f8d ps2mouse.c:145
+ and ch, 007h ; 80 e5 07 ; 0xf6f8f
+ mov ah, al ; 88 c4 ; 0xf6f92 ps2mouse.c:146
+ and ah, 007h ; 80 e4 07 ; 0xf6f94
+ mov dl, ah ; 88 e2 ; 0xf6f97 ps2mouse.c:147
+ xor dh, dh ; 30 f6 ; 0xf6f99
+ mov si, dx ; 89 d6 ; 0xf6f9b
+ add si, strict byte 00028h ; 83 c6 28 ; 0xf6f9d
+ mov es, bx ; 8e c3 ; 0xf6fa0 ps2mouse.c:43
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6fa2
+ mov byte [es:si], dl ; 26 88 14 ; 0xf6fa5
+ cmp ah, ch ; 38 ec ; 0xf6fa8 ps2mouse.c:149
+ jc short 06fdah ; 72 2e ; 0xf6faa
+ mov si, strict word 00028h ; be 28 00 ; 0xf6fac ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6faf
+ xor ah, ah ; 30 e4 ; 0xf6fb2 ps2mouse.c:39
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf6fb4
+ mov si, strict word 00029h ; be 29 00 ; 0xf6fb7 ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6fba
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf6fbd ps2mouse.c:39
+ mov si, strict word 0002ah ; be 2a 00 ; 0xf6fc0 ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6fc3
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf6fc6 ps2mouse.c:39
+ xor al, al ; 30 c0 ; 0xf6fc9 ps2mouse.c:154
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf6fcb
+ test cl, 080h ; f6 c1 80 ; 0xf6fce ps2mouse.c:157
+ je short 06fdch ; 74 09 ; 0xf6fd1
+ mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf6fd3 ps2mouse.c:158
+ jmp short 06fdch ; eb 02 ; 0xf6fd8 ps2mouse.c:160
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf6fda ps2mouse.c:161
+ mov si, strict word 00026h ; be 26 00 ; 0xf6fdc ps2mouse.c:43
+ mov es, bx ; 8e c3 ; 0xf6fdf
+ mov byte [es:si], al ; 26 88 04 ; 0xf6fe1
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6fe4 ps2mouse.c:164
+ pop si ; 5e ; 0xf6fe7
+ pop bp ; 5d ; 0xf6fe8
+ retn ; c3 ; 0xf6fe9
+ ; disGetNextSymbol 0xf6fea LB 0x42ee -> off=0x10 cb=000000000000036c uValue=00000000000f59fa 'int15_function_mouse'
+ db 03bh, 070h, 0ach, 070h, 01fh, 071h, 0b1h, 071h, 01dh, 072h, 081h, 070h, 045h, 072h, 00eh, 073h
+int15_function_mouse: ; 0xf6ffa LB 0x36c
+ push bp ; 55 ; 0xf6ffa ps2mouse.c:166
+ mov bp, sp ; 89 e5 ; 0xf6ffb
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6ffd
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7000 ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7003
+ mov es, ax ; 8e c0 ; 0xf7006
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7008
+ cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf700b ps2mouse.c:188
+ jbe short 0701ch ; 76 0b ; 0xf700f
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7011 ps2mouse.c:191
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7015 ps2mouse.c:192
+ jmp near 07362h ; e9 46 03 ; 0xf7019 ps2mouse.c:193
+ mov ax, strict word 00065h ; b8 65 00 ; 0xf701c ps2mouse.c:197
+ call 06f1ah ; e8 f8 fe ; 0xf701f
+ and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf7022 ps2mouse.c:198
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf7026 ps2mouse.c:199
+ mov bl, byte [bp+012h] ; 8a 5e 12 ; 0xf702a ps2mouse.c:201
+ cmp bl, 007h ; 80 fb 07 ; 0xf702d
+ jnbe short 0708fh ; 77 5d ; 0xf7030
+ xor bh, bh ; 30 ff ; 0xf7032
+ add bx, bx ; 01 db ; 0xf7034
+ jmp word [cs:bx+06feah] ; 2e ff a7 ea 6f ; 0xf7036
+ cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf703b ps2mouse.c:204
+ jnbe short 07092h ; 77 51 ; 0xf703f
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7041 ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf7044
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7046
+ test AL, strict byte 080h ; a8 80 ; 0xf7049 ps2mouse.c:212
+ jne short 07058h ; 75 0b ; 0xf704b
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf704d ps2mouse.c:214
+ mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf7051 ps2mouse.c:215
+ jmp near 0735ch ; e9 04 03 ; 0xf7055 ps2mouse.c:216
+ cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf7058 ps2mouse.c:218
+ jne short 07062h ; 75 04 ; 0xf705c
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf705e ps2mouse.c:220
+ jmp short 07064h ; eb 02 ; 0xf7060 ps2mouse.c:221
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf7062 ps2mouse.c:223
+ xor ah, ah ; 30 e4 ; 0xf7064 ps2mouse.c:226
+ call 06e89h ; e8 20 fe ; 0xf7066
+ test al, al ; 84 c0 ; 0xf7069 ps2mouse.c:227
+ jne short 07095h ; 75 28 ; 0xf706b
+ mov dx, ss ; 8c d2 ; 0xf706d ps2mouse.c:228
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf706f
+ call 06ebdh ; e8 48 fe ; 0xf7072
+ test al, al ; 84 c0 ; 0xf7075 ps2mouse.c:229
+ je short 070dbh ; 74 62 ; 0xf7077
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7079
+ jne short 07095h ; 75 16 ; 0xf707d
+ jmp short 070dbh ; eb 5a ; 0xf707f ps2mouse.c:231
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7081 ps2mouse.c:242
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7084
+ jc short 0708ch ; 72 04 ; 0xf7086
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf7088
+ jbe short 07098h ; 76 0c ; 0xf708a
+ jmp near 07213h ; e9 84 01 ; 0xf708c
+ jmp near 07349h ; e9 b7 02 ; 0xf708f
+ jmp near 07354h ; e9 bf 02 ; 0xf7092
+ jmp near 072e9h ; e9 51 02 ; 0xf7095
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7098 ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf709b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf709d
+ mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf70a0 ps2mouse.c:248
+ db 0feh, 0cch
+ ; dec ah ; fe cc ; 0xf70a3
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf70a5
+ or al, ah ; 08 e0 ; 0xf70a7
+ mov byte [es:bx], al ; 26 88 07 ; 0xf70a9 ps2mouse.c:43
+ mov bx, strict word 00026h ; bb 26 00 ; 0xf70ac ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf70af
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf70b1
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf70b4 ps2mouse.c:256
+ mov byte [es:bx], al ; 26 88 07 ; 0xf70b6 ps2mouse.c:43
+ mov ax, 000ffh ; b8 ff 00 ; 0xf70b9 ps2mouse.c:258
+ call 06e89h ; e8 ca fd ; 0xf70bc
+ test al, al ; 84 c0 ; 0xf70bf ps2mouse.c:259
+ jne short 07095h ; 75 d2 ; 0xf70c1
+ mov dx, ss ; 8c d2 ; 0xf70c3 ps2mouse.c:260
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf70c5
+ call 06ebdh ; e8 f2 fd ; 0xf70c8
+ mov dl, al ; 88 c2 ; 0xf70cb
+ cmp byte [bp-004h], 0feh ; 80 7e fc fe ; 0xf70cd ps2mouse.c:262
+ jne short 070deh ; 75 0b ; 0xf70d1
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70d3 ps2mouse.c:263
+ mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf70d7 ps2mouse.c:264
+ jmp near 0735ch ; e9 7e 02 ; 0xf70db ps2mouse.c:265
+ cmp byte [bp-004h], 0fah ; 80 7e fc fa ; 0xf70de ps2mouse.c:267
+ je short 070f5h ; 74 11 ; 0xf70e2
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf70e4 ps2mouse.c:268
+ xor ah, ah ; 30 e4 ; 0xf70e7
+ push ax ; 50 ; 0xf70e9
+ push 00913h ; 68 13 09 ; 0xf70ea
+ push strict byte 00007h ; 6a 07 ; 0xf70ed
+ call 0190eh ; e8 1c a8 ; 0xf70ef
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf70f2
+ test dl, dl ; 84 d2 ; 0xf70f5 ps2mouse.c:269
+ jne short 07095h ; 75 9c ; 0xf70f7
+ mov dx, ss ; 8c d2 ; 0xf70f9 ps2mouse.c:270
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf70fb
+ call 06ebdh ; e8 bc fd ; 0xf70fe
+ test al, al ; 84 c0 ; 0xf7101 ps2mouse.c:271
+ jne short 07095h ; 75 90 ; 0xf7103
+ mov dx, ss ; 8c d2 ; 0xf7105 ps2mouse.c:272
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7107
+ call 06ebdh ; e8 b0 fd ; 0xf710a
+ test al, al ; 84 c0 ; 0xf710d ps2mouse.c:273
+ jne short 07095h ; 75 84 ; 0xf710f
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7111 ps2mouse.c:275
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf7114
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7117 ps2mouse.c:276
+ mov byte [bp+00dh], al ; 88 46 0d ; 0xf711a
+ jmp short 070dbh ; eb bc ; 0xf711d ps2mouse.c:277
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf711f ps2mouse.c:290
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf7122
+ jc short 07136h ; 72 10 ; 0xf7124
+ jbe short 07154h ; 76 2c ; 0xf7126
+ cmp AL, strict byte 006h ; 3c 06 ; 0xf7128
+ je short 07166h ; 74 3a ; 0xf712a
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf712c
+ je short 07160h ; 74 30 ; 0xf712e
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7130
+ je short 0715ah ; 74 26 ; 0xf7132
+ jmp short 0716ch ; eb 36 ; 0xf7134
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7136
+ je short 0714eh ; 74 14 ; 0xf7138
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf713a
+ je short 07148h ; 74 0a ; 0xf713c
+ test al, al ; 84 c0 ; 0xf713e
+ jne short 0716ch ; 75 2a ; 0xf7140
+ mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf7142 ps2mouse.c:291
+ jmp short 07170h ; eb 28 ; 0xf7146
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf7148 ps2mouse.c:292
+ jmp short 07170h ; eb 22 ; 0xf714c
+ mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf714e ps2mouse.c:293
+ jmp short 07170h ; eb 1c ; 0xf7152
+ mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf7154 ps2mouse.c:294
+ jmp short 07170h ; eb 16 ; 0xf7158
+ mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf715a ps2mouse.c:295
+ jmp short 07170h ; eb 10 ; 0xf715e
+ mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf7160 ps2mouse.c:296
+ jmp short 07170h ; eb 0a ; 0xf7164
+ mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf7166 ps2mouse.c:297
+ jmp short 07170h ; eb 04 ; 0xf716a
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf716c ps2mouse.c:298
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf7170 ps2mouse.c:300
+ jbe short 071a6h ; 76 30 ; 0xf7174
+ mov ax, 000f3h ; b8 f3 00 ; 0xf7176 ps2mouse.c:301
+ call 06e89h ; e8 0d fd ; 0xf7179
+ test al, al ; 84 c0 ; 0xf717c ps2mouse.c:302
+ jne short 0719bh ; 75 1b ; 0xf717e
+ mov dx, ss ; 8c d2 ; 0xf7180 ps2mouse.c:303
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7182
+ call 06ebdh ; e8 35 fd ; 0xf7185
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7188 ps2mouse.c:304
+ xor ah, ah ; 30 e4 ; 0xf718b
+ call 06e89h ; e8 f9 fc ; 0xf718d
+ mov dx, ss ; 8c d2 ; 0xf7190 ps2mouse.c:305
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7192
+ call 06ebdh ; e8 25 fd ; 0xf7195
+ jmp near 0735ch ; e9 c1 01 ; 0xf7198 ps2mouse.c:307
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf719b ps2mouse.c:309
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf719f ps2mouse.c:310
+ jmp near 0735ch ; e9 b6 01 ; 0xf71a3 ps2mouse.c:312
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71a6 ps2mouse.c:314
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf71aa ps2mouse.c:315
+ jmp near 0735ch ; e9 ab 01 ; 0xf71ae ps2mouse.c:317
+ cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf71b1 ps2mouse.c:326
+ jnc short 07213h ; 73 5c ; 0xf71b5
+ mov ax, 000e8h ; b8 e8 00 ; 0xf71b7 ps2mouse.c:327
+ call 06e89h ; e8 cc fc ; 0xf71ba
+ test al, al ; 84 c0 ; 0xf71bd ps2mouse.c:328
+ jne short 07209h ; 75 48 ; 0xf71bf
+ mov dx, ss ; 8c d2 ; 0xf71c1 ps2mouse.c:329
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf71c3
+ call 06ebdh ; e8 f4 fc ; 0xf71c6
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf71c9 ps2mouse.c:330
+ je short 071e0h ; 74 11 ; 0xf71cd
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf71cf ps2mouse.c:331
+ xor ah, ah ; 30 e4 ; 0xf71d2
+ push ax ; 50 ; 0xf71d4
+ push 0093eh ; 68 3e 09 ; 0xf71d5
+ push strict byte 00007h ; 6a 07 ; 0xf71d8
+ call 0190eh ; e8 31 a7 ; 0xf71da
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf71dd
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf71e0 ps2mouse.c:332
+ xor ah, ah ; 30 e4 ; 0xf71e3
+ call 06e89h ; e8 a1 fc ; 0xf71e5
+ mov dx, ss ; 8c d2 ; 0xf71e8 ps2mouse.c:333
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf71ea
+ call 06ebdh ; e8 cd fc ; 0xf71ed
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf71f0 ps2mouse.c:334
+ je short 07242h ; 74 4c ; 0xf71f4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf71f6 ps2mouse.c:335
+ xor ah, ah ; 30 e4 ; 0xf71f9
+ push ax ; 50 ; 0xf71fb
+ push 0093eh ; 68 3e 09 ; 0xf71fc
+ push strict byte 00007h ; 6a 07 ; 0xf71ff
+ call 0190eh ; e8 0a a7 ; 0xf7201
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7204
+ jmp short 07242h ; eb 39 ; 0xf7207 ps2mouse.c:337
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7209 ps2mouse.c:339
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf720d ps2mouse.c:340
+ jmp short 07242h ; eb 2f ; 0xf7211 ps2mouse.c:342
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7213 ps2mouse.c:344
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf7217 ps2mouse.c:345
+ jmp short 07242h ; eb 25 ; 0xf721b ps2mouse.c:347
+ mov ax, 000f2h ; b8 f2 00 ; 0xf721d ps2mouse.c:351
+ call 06e89h ; e8 66 fc ; 0xf7220
+ test al, al ; 84 c0 ; 0xf7223 ps2mouse.c:352
+ jne short 0723ah ; 75 13 ; 0xf7225
+ mov dx, ss ; 8c d2 ; 0xf7227 ps2mouse.c:353
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7229
+ call 06ebdh ; e8 8e fc ; 0xf722c
+ mov dx, ss ; 8c d2 ; 0xf722f ps2mouse.c:354
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7231
+ call 06ebdh ; e8 86 fc ; 0xf7234
+ jmp near 07117h ; e9 dd fe ; 0xf7237
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf723a ps2mouse.c:355
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf723e ps2mouse.c:360
+ jmp near 0735ch ; e9 17 01 ; 0xf7242 ps2mouse.c:362
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7245 ps2mouse.c:366
+ test al, al ; 84 c0 ; 0xf7248
+ jbe short 07253h ; 76 07 ; 0xf724a
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf724c
+ jbe short 072bah ; 76 6a ; 0xf724e
+ jmp near 072f3h ; e9 a0 00 ; 0xf7250
+ mov ax, 000e9h ; b8 e9 00 ; 0xf7253 ps2mouse.c:368
+ call 06e89h ; e8 30 fc ; 0xf7256
+ test al, al ; 84 c0 ; 0xf7259 ps2mouse.c:369
+ jne short 072c3h ; 75 66 ; 0xf725b
+ mov dx, ss ; 8c d2 ; 0xf725d ps2mouse.c:370
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf725f
+ call 06ebdh ; e8 58 fc ; 0xf7262
+ mov dl, al ; 88 c2 ; 0xf7265
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7267 ps2mouse.c:371
+ je short 0727eh ; 74 11 ; 0xf726b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf726d ps2mouse.c:372
+ xor ah, ah ; 30 e4 ; 0xf7270
+ push ax ; 50 ; 0xf7272
+ push 0093eh ; 68 3e 09 ; 0xf7273
+ push strict byte 00007h ; 6a 07 ; 0xf7276
+ call 0190eh ; e8 93 a6 ; 0xf7278
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf727b
+ test dl, dl ; 84 d2 ; 0xf727e ps2mouse.c:373
+ jne short 072c3h ; 75 41 ; 0xf7280
+ mov dx, ss ; 8c d2 ; 0xf7282 ps2mouse.c:374
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7284
+ call 06ebdh ; e8 33 fc ; 0xf7287
+ test al, al ; 84 c0 ; 0xf728a ps2mouse.c:375
+ jne short 072e9h ; 75 5b ; 0xf728c
+ mov dx, ss ; 8c d2 ; 0xf728e ps2mouse.c:376
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7290
+ call 06ebdh ; e8 27 fc ; 0xf7293
+ test al, al ; 84 c0 ; 0xf7296 ps2mouse.c:377
+ jne short 072e9h ; 75 4f ; 0xf7298
+ mov dx, ss ; 8c d2 ; 0xf729a ps2mouse.c:378
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf729c
+ call 06ebdh ; e8 1b fc ; 0xf729f
+ test al, al ; 84 c0 ; 0xf72a2 ps2mouse.c:379
+ jne short 072e9h ; 75 43 ; 0xf72a4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf72a6 ps2mouse.c:380
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf72a9
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf72ac ps2mouse.c:381
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf72af
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf72b2 ps2mouse.c:382
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf72b5
+ jmp short 07242h ; eb 88 ; 0xf72b8 ps2mouse.c:384
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf72ba ps2mouse.c:398
+ jne short 072c5h ; 75 07 ; 0xf72bc
+ mov ax, 000e6h ; b8 e6 00 ; 0xf72be ps2mouse.c:399
+ jmp short 072c8h ; eb 05 ; 0xf72c1 ps2mouse.c:400
+ jmp short 072e9h ; eb 24 ; 0xf72c3
+ mov ax, 000e7h ; b8 e7 00 ; 0xf72c5 ps2mouse.c:401
+ call 06e89h ; e8 be fb ; 0xf72c8
+ mov dl, al ; 88 c2 ; 0xf72cb
+ test dl, dl ; 84 d2 ; 0xf72cd ps2mouse.c:403
+ jne short 072e5h ; 75 14 ; 0xf72cf
+ mov dx, ss ; 8c d2 ; 0xf72d1 ps2mouse.c:404
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf72d3
+ call 06ebdh ; e8 e4 fb ; 0xf72d6
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf72d9 ps2mouse.c:405
+ je short 072e3h ; 74 04 ; 0xf72dd
+ mov DL, strict byte 001h ; b2 01 ; 0xf72df
+ jmp short 072e5h ; eb 02 ; 0xf72e1
+ xor dl, dl ; 30 d2 ; 0xf72e3
+ test dl, dl ; 84 d2 ; 0xf72e5 ps2mouse.c:407
+ je short 07347h ; 74 5e ; 0xf72e7
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72e9 ps2mouse.c:409
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf72ed ps2mouse.c:410
+ jmp short 0735ch ; eb 69 ; 0xf72f1 ps2mouse.c:412
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf72f3 ps2mouse.c:415
+ xor ah, ah ; 30 e4 ; 0xf72f6
+ push ax ; 50 ; 0xf72f8
+ push 0096ah ; 68 6a 09 ; 0xf72f9
+ push strict byte 00007h ; 6a 07 ; 0xf72fc
+ call 0190eh ; e8 0d a6 ; 0xf72fe
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7301
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7304 ps2mouse.c:417
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7308 ps2mouse.c:418
+ jmp short 0735ch ; eb 4e ; 0xf730c ps2mouse.c:420
+ mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf730e ps2mouse.c:425
+ mov bx, strict word 00022h ; bb 22 00 ; 0xf7311 ps2mouse.c:53
+ mov es, dx ; 8e c2 ; 0xf7314
+ mov word [es:bx], cx ; 26 89 0f ; 0xf7316
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf7319 ps2mouse.c:53
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf731c
+ mov word [es:bx], ax ; 26 89 07 ; 0xf731f
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7322 ps2mouse.c:38
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf7325
+ mov al, ah ; 88 e0 ; 0xf7328 ps2mouse.c:39
+ test cx, cx ; 85 c9 ; 0xf732a ps2mouse.c:429
+ jne short 0733dh ; 75 0f ; 0xf732c
+ cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf732e
+ jne short 0733dh ; 75 09 ; 0xf7332
+ test ah, 080h ; f6 c4 80 ; 0xf7334 ps2mouse.c:431
+ je short 0733fh ; 74 06 ; 0xf7337
+ and AL, strict byte 07fh ; 24 7f ; 0xf7339 ps2mouse.c:432
+ jmp short 0733fh ; eb 02 ; 0xf733b ps2mouse.c:435
+ or AL, strict byte 080h ; 0c 80 ; 0xf733d ps2mouse.c:437
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf733f ps2mouse.c:43
+ mov es, dx ; 8e c2 ; 0xf7342
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7344
+ jmp short 0735ch ; eb 13 ; 0xf7347 ps2mouse.c:440
+ push 00984h ; 68 84 09 ; 0xf7349 ps2mouse.c:443
+ push strict byte 00007h ; 6a 07 ; 0xf734c
+ call 0190eh ; e8 bd a5 ; 0xf734e
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7351
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7354 ps2mouse.c:445
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7358 ps2mouse.c:446
+ mov ax, strict word 00047h ; b8 47 00 ; 0xf735c ps2mouse.c:450
+ call 06f1ah ; e8 b8 fb ; 0xf735f
+ mov sp, bp ; 89 ec ; 0xf7362 ps2mouse.c:451
+ pop bp ; 5d ; 0xf7364
+ retn ; c3 ; 0xf7365
+ ; disGetNextSymbol 0xf7366 LB 0x3f72 -> off=0x0 cb=00000000000000ac uValue=00000000000f5d66 'int17_function'
+int17_function: ; 0xf7366 LB 0xac
+ push bp ; 55 ; 0xf7366 parallel.c:60
+ mov bp, sp ; 89 e5 ; 0xf7367
+ push si ; 56 ; 0xf7369
+ push di ; 57 ; 0xf736a
+ push ax ; 50 ; 0xf736b
+ sti ; fb ; 0xf736c parallel.c:65
+ mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf736d parallel.c:67
+ add bx, bx ; 01 db ; 0xf7370
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf7372
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7375 parallel.c:48
+ mov es, ax ; 8e c0 ; 0xf7378
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf737a
+ mov si, bx ; 89 de ; 0xf737d parallel.c:49
+ cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf737f parallel.c:68
+ jnc short 07391h ; 73 0c ; 0xf7383
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7385
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf7388
+ jnc short 07391h ; 73 04 ; 0xf738b
+ test bx, bx ; 85 db ; 0xf738d
+ jnbe short 07394h ; 77 03 ; 0xf738f
+ jmp near 07407h ; e9 73 00 ; 0xf7391
+ mov di, ax ; 89 c7 ; 0xf7394 parallel.c:69
+ add di, strict byte 00078h ; 83 c7 78 ; 0xf7396
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf7399 parallel.c:38
+ xor ch, ch ; 30 ed ; 0xf739c parallel.c:39
+ sal cx, 008h ; c1 e1 08 ; 0xf739e
+ cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf73a1 parallel.c:70
+ jne short 073d3h ; 75 2c ; 0xf73a5
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf73a7 parallel.c:71
+ mov dx, bx ; 89 da ; 0xf73aa
+ out DX, AL ; ee ; 0xf73ac
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf73ad parallel.c:72
+ in AL, DX ; ec ; 0xf73b0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73b1
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf73b3
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73b6 parallel.c:73
+ or AL, strict byte 001h ; 0c 01 ; 0xf73b9
+ out DX, AL ; ee ; 0xf73bb
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73bc parallel.c:74
+ and AL, strict byte 0feh ; 24 fe ; 0xf73bf
+ out DX, AL ; ee ; 0xf73c1
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf73c2 parallel.c:75
+ in AL, DX ; ec ; 0xf73c5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73c6
+ test AL, strict byte 040h ; a8 40 ; 0xf73c8
+ je short 073d3h ; 74 07 ; 0xf73ca
+ test cx, cx ; 85 c9 ; 0xf73cc
+ je short 073d3h ; 74 03 ; 0xf73ce
+ dec cx ; 49 ; 0xf73d0 parallel.c:76
+ jmp short 073c2h ; eb ef ; 0xf73d1 parallel.c:77
+ cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf73d3 parallel.c:79
+ jne short 073eeh ; 75 15 ; 0xf73d7
+ lea dx, [si+002h] ; 8d 54 02 ; 0xf73d9 parallel.c:80
+ in AL, DX ; ec ; 0xf73dc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73dd
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf73df
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73e2 parallel.c:81
+ and AL, strict byte 0fbh ; 24 fb ; 0xf73e5
+ out DX, AL ; ee ; 0xf73e7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73e8 parallel.c:82
+ or AL, strict byte 004h ; 0c 04 ; 0xf73eb
+ out DX, AL ; ee ; 0xf73ed
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf73ee parallel.c:84
+ in AL, DX ; ec ; 0xf73f1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73f2
+ xor AL, strict byte 048h ; 34 48 ; 0xf73f4 parallel.c:85
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf73f6
+ test cx, cx ; 85 c9 ; 0xf73f9 parallel.c:86
+ jne short 07401h ; 75 04 ; 0xf73fb
+ or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf73fd
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf7401 parallel.c:87
+ jmp short 0740bh ; eb 04 ; 0xf7405 parallel.c:88
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf7407 parallel.c:89
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf740b parallel.c:91
+ pop di ; 5f ; 0xf740e
+ pop si ; 5e ; 0xf740f
+ pop bp ; 5d ; 0xf7410
+ retn ; c3 ; 0xf7411
+ ; disGetNextSymbol 0xf7412 LB 0x3ec6 -> off=0x0 cb=00000000000000b7 uValue=00000000000f5e12 '_wait_'
+_wait_: ; 0xf7412 LB 0xb7
+ push bp ; 55 ; 0xf7412 logo.c:171
+ mov bp, sp ; 89 e5 ; 0xf7413
+ push bx ; 53 ; 0xf7415
+ push cx ; 51 ; 0xf7416
+ push si ; 56 ; 0xf7417
+ push di ; 57 ; 0xf7418
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf7419
+ mov si, ax ; 89 c6 ; 0xf741c
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf741e
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7421 logo.c:176
+ pushfw ; 9c ; 0xf7425 logo.c:182
+ pop ax ; 58 ; 0xf7426
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7427
+ sti ; fb ; 0xf742a logo.c:183
+ xor dx, dx ; 31 d2 ; 0xf742b logo.c:189
+ mov bx, 0046ch ; bb 6c 04 ; 0xf742d logo.c:58
+ mov es, dx ; 8e c2 ; 0xf7430
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7432
+ mov cx, word [es:bx+002h] ; 26 8b 4f 02 ; 0xf7435
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7439 logo.c:59
+ hlt ; f4 ; 0xf743c logo.c:193
+ mov bx, 0046ch ; bb 6c 04 ; 0xf743d logo.c:58
+ xor ax, ax ; 31 c0 ; 0xf7440
+ mov es, ax ; 8e c0 ; 0xf7442
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf7444
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf7447
+ mov word [bp-012h], di ; 89 7e ee ; 0xf744b logo.c:59
+ mov bx, ax ; 89 c3 ; 0xf744e
+ cmp ax, cx ; 39 c8 ; 0xf7450 logo.c:195
+ jnbe short 0745bh ; 77 07 ; 0xf7452
+ jne short 07462h ; 75 0c ; 0xf7454
+ cmp di, word [bp-00eh] ; 3b 7e f2 ; 0xf7456
+ jbe short 07462h ; 76 07 ; 0xf7459
+ sub di, word [bp-00eh] ; 2b 7e f2 ; 0xf745b logo.c:197
+ sbb ax, cx ; 19 c8 ; 0xf745e
+ jmp short 0746dh ; eb 0b ; 0xf7460 logo.c:200
+ cmp ax, cx ; 39 c8 ; 0xf7462
+ jc short 0746dh ; 72 07 ; 0xf7464
+ jne short 07471h ; 75 09 ; 0xf7466
+ cmp di, word [bp-00eh] ; 3b 7e f2 ; 0xf7468
+ jnc short 07471h ; 73 04 ; 0xf746b
+ sub si, di ; 29 fe ; 0xf746d logo.c:201
+ sbb dx, ax ; 19 c2 ; 0xf746f
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf7471 logo.c:202
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7474
+ mov cx, bx ; 89 d9 ; 0xf7477
+ mov ax, 00100h ; b8 00 01 ; 0xf7479 logo.c:204
+ int 016h ; cd 16 ; 0xf747c
+ je short 07485h ; 74 05 ; 0xf747e
+ mov AL, strict byte 001h ; b0 01 ; 0xf7480
+ jmp near 07487h ; e9 02 00 ; 0xf7482
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf7485
+ test al, al ; 84 c0 ; 0xf7487
+ je short 074aeh ; 74 23 ; 0xf7489
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf748b logo.c:206
+ int 016h ; cd 16 ; 0xf748d
+ xchg ah, al ; 86 c4 ; 0xf748f
+ mov bl, al ; 88 c3 ; 0xf7491
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7493
+ xor ah, ah ; 30 e4 ; 0xf7496 logo.c:207
+ push ax ; 50 ; 0xf7498
+ push 009a6h ; 68 a6 09 ; 0xf7499
+ push strict byte 00004h ; 6a 04 ; 0xf749c
+ call 0190eh ; e8 6d a4 ; 0xf749e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf74a1
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf74a4 logo.c:208
+ je short 074aeh ; 74 04 ; 0xf74a8
+ mov al, bl ; 88 d8 ; 0xf74aa logo.c:209
+ jmp short 074c0h ; eb 12 ; 0xf74ac
+ test dx, dx ; 85 d2 ; 0xf74ae logo.c:211
+ jnle short 0743ch ; 7f 8a ; 0xf74b0
+ jne short 074b8h ; 75 04 ; 0xf74b2
+ test si, si ; 85 f6 ; 0xf74b4
+ jnbe short 0743ch ; 77 84 ; 0xf74b6
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf74b8 logo.c:212
+ push ax ; 50 ; 0xf74bb
+ popfw ; 9d ; 0xf74bc
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf74bd logo.c:213
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf74c0 logo.c:214
+ pop di ; 5f ; 0xf74c3
+ pop si ; 5e ; 0xf74c4
+ pop cx ; 59 ; 0xf74c5
+ pop bx ; 5b ; 0xf74c6
+ pop bp ; 5d ; 0xf74c7
+ retn ; c3 ; 0xf74c8
+ ; disGetNextSymbol 0xf74c9 LB 0x3e0f -> off=0x0 cb=0000000000000016 uValue=00000000000f5ec9 'read_logo_byte'
+read_logo_byte: ; 0xf74c9 LB 0x16
+ push bp ; 55 ; 0xf74c9 logo.c:216
+ mov bp, sp ; 89 e5 ; 0xf74ca
+ push dx ; 52 ; 0xf74cc
+ xor ah, ah ; 30 e4 ; 0xf74cd logo.c:218
+ or ah, 001h ; 80 cc 01 ; 0xf74cf
+ mov dx, 003b8h ; ba b8 03 ; 0xf74d2
+ out DX, ax ; ef ; 0xf74d5
+ in AL, DX ; ec ; 0xf74d6 logo.c:219
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf74d7
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf74d9 logo.c:220
+ pop dx ; 5a ; 0xf74dc
+ pop bp ; 5d ; 0xf74dd
+ retn ; c3 ; 0xf74de
+ ; disGetNextSymbol 0xf74df LB 0x3df9 -> off=0x0 cb=0000000000000014 uValue=00000000000f5edf 'read_logo_word'
+read_logo_word: ; 0xf74df LB 0x14
+ push bp ; 55 ; 0xf74df logo.c:222
+ mov bp, sp ; 89 e5 ; 0xf74e0
+ push dx ; 52 ; 0xf74e2
+ xor ah, ah ; 30 e4 ; 0xf74e3 logo.c:224
+ or ah, 001h ; 80 cc 01 ; 0xf74e5
+ mov dx, 003b8h ; ba b8 03 ; 0xf74e8
+ out DX, ax ; ef ; 0xf74eb
+ in ax, DX ; ed ; 0xf74ec logo.c:225
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf74ed logo.c:226
+ pop dx ; 5a ; 0xf74f0
+ pop bp ; 5d ; 0xf74f1
+ retn ; c3 ; 0xf74f2
+ ; disGetNextSymbol 0xf74f3 LB 0x3de5 -> off=0x0 cb=000000000000013e uValue=00000000000f5ef3 'print_detected_harddisks'
+print_detected_harddisks: ; 0xf74f3 LB 0x13e
+ push bp ; 55 ; 0xf74f3 logo.c:245
+ mov bp, sp ; 89 e5 ; 0xf74f4
+ push bx ; 53 ; 0xf74f6
+ push cx ; 51 ; 0xf74f7
+ push dx ; 52 ; 0xf74f8
+ push si ; 56 ; 0xf74f9
+ push di ; 57 ; 0xf74fa
+ push ax ; 50 ; 0xf74fb
+ push ax ; 50 ; 0xf74fc
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf74fd logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7500
+ mov es, ax ; 8e c0 ; 0xf7503
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7505
+ mov di, ax ; 89 c7 ; 0xf7508 logo.c:49
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf750a logo.c:250
+ xor cl, cl ; 30 c9 ; 0xf750e logo.c:251
+ xor ch, ch ; 30 ed ; 0xf7510 logo.c:252
+ mov bx, 002b0h ; bb b0 02 ; 0xf7512 logo.c:38
+ mov es, ax ; 8e c0 ; 0xf7515
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7517
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf751a logo.c:39
+ xor bl, bl ; 30 db ; 0xf751d logo.c:257
+ cmp bl, byte [bp-00eh] ; 3a 5e f2 ; 0xf751f
+ jnc short 07581h ; 73 5d ; 0xf7522
+ mov al, bl ; 88 d8 ; 0xf7524 logo.c:259
+ xor ah, ah ; 30 e4 ; 0xf7526
+ mov si, ax ; 89 c6 ; 0xf7528
+ add si, 002b1h ; 81 c6 b1 02 ; 0xf752a
+ mov es, di ; 8e c7 ; 0xf752e logo.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7530
+ mov bh, al ; 88 c7 ; 0xf7533 logo.c:39
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf7535 logo.c:262
+ jc short 0755eh ; 72 25 ; 0xf7537
+ test cl, cl ; 84 c9 ; 0xf7539 logo.c:264
+ jne short 0754ah ; 75 0d ; 0xf753b
+ push 009b7h ; 68 b7 09 ; 0xf753d logo.c:266
+ push strict byte 00002h ; 6a 02 ; 0xf7540
+ call 0190eh ; e8 c9 a3 ; 0xf7542
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7545
+ mov CL, strict byte 001h ; b1 01 ; 0xf7548 logo.c:267
+ mov al, bl ; 88 d8 ; 0xf754a logo.c:270
+ xor ah, ah ; 30 e4 ; 0xf754c
+ inc ax ; 40 ; 0xf754e
+ push ax ; 50 ; 0xf754f
+ push 009cch ; 68 cc 09 ; 0xf7550
+ push strict byte 00002h ; 6a 02 ; 0xf7553
+ call 0190eh ; e8 b6 a3 ; 0xf7555
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7558
+ jmp near 075feh ; e9 a0 00 ; 0xf755b logo.c:273
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf755e logo.c:276
+ jc short 07575h ; 72 13 ; 0xf7560
+ test ch, ch ; 84 ed ; 0xf7562 logo.c:278
+ jne short 07573h ; 75 0d ; 0xf7564
+ push 009dfh ; 68 df 09 ; 0xf7566 logo.c:280
+ push strict byte 00002h ; 6a 02 ; 0xf7569
+ call 0190eh ; e8 a0 a3 ; 0xf756b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf756e
+ mov CH, strict byte 001h ; b5 01 ; 0xf7571 logo.c:281
+ jmp short 0754ah ; eb d5 ; 0xf7573 logo.c:282
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7575 logo.c:291
+ jnc short 07595h ; 73 1c ; 0xf7577
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7579
+ je short 07584h ; 74 05 ; 0xf757d
+ jmp short 07595h ; eb 14 ; 0xf757f
+ jmp near 07603h ; e9 7f 00 ; 0xf7581
+ push 009f4h ; 68 f4 09 ; 0xf7584 logo.c:293
+ push strict byte 00002h ; 6a 02 ; 0xf7587
+ call 0190eh ; e8 82 a3 ; 0xf7589
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf758c
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf758f logo.c:294
+ jmp short 075abh ; eb 16 ; 0xf7593 logo.c:296
+ cmp bh, 004h ; 80 ff 04 ; 0xf7595
+ jc short 075abh ; 72 11 ; 0xf7598
+ test cl, cl ; 84 c9 ; 0xf759a
+ jne short 075abh ; 75 0d ; 0xf759c
+ push 00a06h ; 68 06 0a ; 0xf759e logo.c:298
+ push strict byte 00002h ; 6a 02 ; 0xf75a1
+ call 0190eh ; e8 68 a3 ; 0xf75a3
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75a6
+ mov CL, strict byte 001h ; b1 01 ; 0xf75a9 logo.c:299
+ mov al, bl ; 88 d8 ; 0xf75ab logo.c:302
+ xor ah, ah ; 30 e4 ; 0xf75ad
+ inc ax ; 40 ; 0xf75af
+ push ax ; 50 ; 0xf75b0
+ push 00a1ah ; 68 1a 0a ; 0xf75b1
+ push strict byte 00002h ; 6a 02 ; 0xf75b4
+ call 0190eh ; e8 55 a3 ; 0xf75b6
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf75b9
+ cmp bh, 004h ; 80 ff 04 ; 0xf75bc logo.c:309
+ jc short 075c4h ; 72 03 ; 0xf75bf
+ sub bh, 004h ; 80 ef 04 ; 0xf75c1 logo.c:310
+ mov al, bh ; 88 f8 ; 0xf75c4 logo.c:312
+ xor ah, ah ; 30 e4 ; 0xf75c6
+ cwd ; 99 ; 0xf75c8
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf75c9
+ sar ax, 1 ; d1 f8 ; 0xf75cb
+ test ax, ax ; 85 c0 ; 0xf75cd
+ je short 075d6h ; 74 05 ; 0xf75cf
+ push 00a24h ; 68 24 0a ; 0xf75d1 logo.c:313
+ jmp short 075d9h ; eb 03 ; 0xf75d4 logo.c:314
+ push 00a2fh ; 68 2f 0a ; 0xf75d6 logo.c:315
+ push strict byte 00002h ; 6a 02 ; 0xf75d9
+ call 0190eh ; e8 30 a3 ; 0xf75db
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75de
+ mov al, bh ; 88 f8 ; 0xf75e1 logo.c:317
+ xor ah, ah ; 30 e4 ; 0xf75e3
+ cwd ; 99 ; 0xf75e5
+ mov si, strict word 00002h ; be 02 00 ; 0xf75e6
+ idiv si ; f7 fe ; 0xf75e9
+ test dx, dx ; 85 d2 ; 0xf75eb
+ je short 075f4h ; 74 05 ; 0xf75ed
+ push 00a38h ; 68 38 0a ; 0xf75ef logo.c:318
+ jmp short 075f7h ; eb 03 ; 0xf75f2 logo.c:319
+ push 00a3eh ; 68 3e 0a ; 0xf75f4 logo.c:320
+ push si ; 56 ; 0xf75f7
+ call 0190eh ; e8 13 a3 ; 0xf75f8
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75fb
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf75fe logo.c:322
+ jmp near 0751fh ; e9 1c ff ; 0xf7600
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7603 logo.c:324
+ jne short 0761ch ; 75 13 ; 0xf7607
+ test cl, cl ; 84 c9 ; 0xf7609
+ jne short 0761ch ; 75 0f ; 0xf760b
+ test ch, ch ; 84 ed ; 0xf760d
+ jne short 0761ch ; 75 0b ; 0xf760f
+ push 00a45h ; 68 45 0a ; 0xf7611 logo.c:327
+ push strict byte 00002h ; 6a 02 ; 0xf7614
+ call 0190eh ; e8 f5 a2 ; 0xf7616
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7619
+ push 00a59h ; 68 59 0a ; 0xf761c logo.c:329
+ push strict byte 00002h ; 6a 02 ; 0xf761f
+ call 0190eh ; e8 ea a2 ; 0xf7621
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7624
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7627 logo.c:330
+ pop di ; 5f ; 0xf762a
+ pop si ; 5e ; 0xf762b
+ pop dx ; 5a ; 0xf762c
+ pop cx ; 59 ; 0xf762d
+ pop bx ; 5b ; 0xf762e
+ pop bp ; 5d ; 0xf762f
+ retn ; c3 ; 0xf7630
+ ; disGetNextSymbol 0xf7631 LB 0x3ca7 -> off=0x0 cb=0000000000000024 uValue=00000000000f6031 'get_boot_drive'
+get_boot_drive: ; 0xf7631 LB 0x24
+ push bx ; 53 ; 0xf7631 logo.c:332
+ push dx ; 52 ; 0xf7632
+ push bp ; 55 ; 0xf7633
+ mov bp, sp ; 89 e5 ; 0xf7634
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7636 logo.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf7639
+ mov es, dx ; 8e c2 ; 0xf763c
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf763e
+ mov bx, 002b0h ; bb b0 02 ; 0xf7641 logo.c:38
+ mov es, dx ; 8e c2 ; 0xf7644
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf7646
+ sub AL, strict byte 002h ; 2c 02 ; 0xf7649 logo.c:340
+ cmp al, dl ; 38 d0 ; 0xf764b logo.c:342
+ jc short 07651h ; 72 02 ; 0xf764d
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf764f logo.c:343
+ pop bp ; 5d ; 0xf7651 logo.c:347
+ pop dx ; 5a ; 0xf7652
+ pop bx ; 5b ; 0xf7653
+ retn ; c3 ; 0xf7654
+ ; disGetNextSymbol 0xf7655 LB 0x3c83 -> off=0x0 cb=0000000000000252 uValue=00000000000f6055 'show_logo'
+show_logo: ; 0xf7655 LB 0x252
+ push bp ; 55 ; 0xf7655 logo.c:349
+ mov bp, sp ; 89 e5 ; 0xf7656
+ push bx ; 53 ; 0xf7658
+ push cx ; 51 ; 0xf7659
+ push dx ; 52 ; 0xf765a
+ push si ; 56 ; 0xf765b
+ push di ; 57 ; 0xf765c
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf765d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7660 logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7663
+ mov es, ax ; 8e c0 ; 0xf7666
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf7668
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf766b logo.c:352
+ xor dx, dx ; 31 d2 ; 0xf766f logo.c:356
+ mov AL, strict byte 034h ; b0 34 ; 0xf7671 logo.c:363
+ out strict byte 043h, AL ; e6 43 ; 0xf7673
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7675
+ out strict byte 040h, AL ; e6 40 ; 0xf7677
+ mov AL, strict byte 048h ; b0 48 ; 0xf7679
+ out strict byte 040h, AL ; e6 40 ; 0xf767b
+ mov al, dl ; 88 d0 ; 0xf767d logo.c:366
+ xor ah, ah ; 30 e4 ; 0xf767f
+ call 074dfh ; e8 5b fe ; 0xf7681
+ cmp ax, 066bbh ; 3d bb 66 ; 0xf7684 logo.c:367
+ jne short 0769bh ; 75 12 ; 0xf7687
+ push SS ; 16 ; 0xf7689 logo.c:371
+ pop ES ; 07 ; 0xf768a
+ lea di, [bp-018h] ; 8d 7e e8 ; 0xf768b
+ mov ax, 04f03h ; b8 03 4f ; 0xf768e
+ int 010h ; cd 10 ; 0xf7691
+ mov word [es:di], bx ; 26 89 1d ; 0xf7693
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7696
+ je short 0769eh ; 74 03 ; 0xf7699
+ jmp near 07786h ; e9 e8 00 ; 0xf769b logo.c:372
+ mov al, dl ; 88 d0 ; 0xf769e logo.c:375
+ add AL, strict byte 004h ; 04 04 ; 0xf76a0
+ xor ah, ah ; 30 e4 ; 0xf76a2
+ call 074c9h ; e8 22 fe ; 0xf76a4
+ mov cl, al ; 88 c1 ; 0xf76a7
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf76a9
+ mov al, dl ; 88 d0 ; 0xf76ac logo.c:376
+ add AL, strict byte 005h ; 04 05 ; 0xf76ae
+ xor ah, ah ; 30 e4 ; 0xf76b0
+ call 074c9h ; e8 14 fe ; 0xf76b2
+ mov dh, al ; 88 c6 ; 0xf76b5
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf76b7
+ mov al, dl ; 88 d0 ; 0xf76ba logo.c:377
+ add AL, strict byte 002h ; 04 02 ; 0xf76bc
+ xor ah, ah ; 30 e4 ; 0xf76be
+ call 074dfh ; e8 1c fe ; 0xf76c0
+ mov bx, ax ; 89 c3 ; 0xf76c3
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf76c5
+ mov al, dl ; 88 d0 ; 0xf76c8 logo.c:378
+ add AL, strict byte 006h ; 04 06 ; 0xf76ca
+ xor ah, ah ; 30 e4 ; 0xf76cc
+ call 074c9h ; e8 f8 fd ; 0xf76ce
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf76d1
+ test cl, cl ; 84 c9 ; 0xf76d4 logo.c:381
+ jne short 076e0h ; 75 08 ; 0xf76d6
+ test dh, dh ; 84 f6 ; 0xf76d8
+ jne short 076e0h ; 75 04 ; 0xf76da
+ test bx, bx ; 85 db ; 0xf76dc
+ je short 0769bh ; 74 bb ; 0xf76de
+ mov BH, strict byte 020h ; b7 20 ; 0xf76e0 logo.c:385
+ mov dx, 001e0h ; ba e0 01 ; 0xf76e2
+ mov cx, 00280h ; b9 80 02 ; 0xf76e5
+ mov ax, 05642h ; b8 42 56 ; 0xf76e8
+ mov BL, strict byte 000h ; b3 00 ; 0xf76eb
+ int 010h ; cd 10 ; 0xf76ed
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf76ef logo.c:387
+ je short 076fch ; 74 08 ; 0xf76f2
+ mov bx, 00142h ; bb 42 01 ; 0xf76f4 logo.c:388
+ mov ax, 04f02h ; b8 02 4f ; 0xf76f7
+ int 010h ; cd 10 ; 0xf76fa
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf76fc logo.c:390
+ je short 07727h ; 74 25 ; 0xf7700
+ xor bx, bx ; 31 db ; 0xf7702 logo.c:392
+ jmp short 0770ch ; eb 06 ; 0xf7704
+ inc bx ; 43 ; 0xf7706 logo.c:394
+ cmp bx, strict byte 00010h ; 83 fb 10 ; 0xf7707
+ jnbe short 0772eh ; 77 22 ; 0xf770a
+ mov ax, bx ; 89 d8 ; 0xf770c
+ or ah, 002h ; 80 cc 02 ; 0xf770e
+ mov dx, 003b8h ; ba b8 03 ; 0xf7711
+ out DX, ax ; ef ; 0xf7714
+ xor dx, dx ; 31 d2 ; 0xf7715
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7717
+ call 07412h ; e8 f5 fc ; 0xf771a
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf771d
+ jne short 07706h ; 75 e5 ; 0xf771f
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7721
+ jmp short 0772eh ; eb 07 ; 0xf7725
+ mov ax, 00210h ; b8 10 02 ; 0xf7727 logo.c:404
+ mov dx, 003b8h ; ba b8 03 ; 0xf772a
+ out DX, ax ; ef ; 0xf772d
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf772e logo.c:407
+ jne short 07748h ; 75 14 ; 0xf7732
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7734 logo.c:409
+ shr ax, 004h ; c1 e8 04 ; 0xf7737
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf773a
+ call 07412h ; e8 d2 fc ; 0xf773d
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7740 logo.c:410
+ jne short 07748h ; 75 04 ; 0xf7742
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7744 logo.c:411
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7748 logo.c:415
+ je short 07779h ; 74 2b ; 0xf774c
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf774e
+ jne short 07779h ; 75 25 ; 0xf7752
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf7754 logo.c:417
+ jmp short 0775eh ; eb 05 ; 0xf7757
+ dec bx ; 4b ; 0xf7759 logo.c:419
+ test bx, bx ; 85 db ; 0xf775a
+ jbe short 07786h ; 76 28 ; 0xf775c
+ mov ax, bx ; 89 d8 ; 0xf775e
+ or ah, 002h ; 80 cc 02 ; 0xf7760
+ mov dx, 003b8h ; ba b8 03 ; 0xf7763
+ out DX, ax ; ef ; 0xf7766
+ xor dx, dx ; 31 d2 ; 0xf7767
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7769
+ call 07412h ; e8 a3 fc ; 0xf776c
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf776f
+ jne short 07759h ; 75 e6 ; 0xf7771
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7773
+ jmp short 07786h ; eb 0d ; 0xf7777
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7779 logo.c:428
+ jne short 07786h ; 75 07 ; 0xf777d
+ mov ax, 00200h ; b8 00 02 ; 0xf777f logo.c:429
+ mov dx, 003b8h ; ba b8 03 ; 0xf7782
+ out DX, ax ; ef ; 0xf7785
+ mov bx, 00335h ; bb 35 03 ; 0xf7786 logo.c:43
+ mov es, si ; 8e c6 ; 0xf7789
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf778b
+ mov AL, strict byte 003h ; b0 03 ; 0xf778f logo.c:437
+ mov AH, strict byte 000h ; b4 00 ; 0xf7791
+ int 010h ; cd 10 ; 0xf7793
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7795 logo.c:440
+ je short 077afh ; 74 14 ; 0xf7799
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf779b logo.c:443
+ jne short 077dah ; 75 39 ; 0xf779f
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf77a1
+ jne short 077dah ; 75 33 ; 0xf77a5
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf77a7
+ je short 077b2h ; 74 05 ; 0xf77ab
+ jmp short 077dah ; eb 2b ; 0xf77ad
+ jmp near 0788ah ; e9 d8 00 ; 0xf77af
+ cmp byte [bp-00ch], 002h ; 80 7e f4 02 ; 0xf77b2 logo.c:445
+ jne short 077c3h ; 75 0b ; 0xf77b6
+ push 00a5bh ; 68 5b 0a ; 0xf77b8 logo.c:446
+ push strict byte 00002h ; 6a 02 ; 0xf77bb
+ call 0190eh ; e8 4e a1 ; 0xf77bd
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf77c0
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf77c3 logo.c:449
+ jne short 077dah ; 75 11 ; 0xf77c7
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf77c9 logo.c:452
+ mov ax, 000c0h ; b8 c0 00 ; 0xf77cc
+ call 07412h ; e8 40 fc ; 0xf77cf
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf77d2 logo.c:453
+ jne short 077dah ; 75 04 ; 0xf77d4
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf77d6 logo.c:454
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf77da logo.c:459
+ je short 077afh ; 74 cf ; 0xf77de
+ mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf77e0 logo.c:461
+ mov ax, 00100h ; b8 00 01 ; 0xf77e4 logo.c:464
+ mov cx, 01000h ; b9 00 10 ; 0xf77e7
+ int 010h ; cd 10 ; 0xf77ea
+ mov ax, 00700h ; b8 00 07 ; 0xf77ec
+ mov BH, strict byte 007h ; b7 07 ; 0xf77ef
+ db 033h, 0c9h
+ ; xor cx, cx ; 33 c9 ; 0xf77f1
+ mov dx, 0184fh ; ba 4f 18 ; 0xf77f3
+ int 010h ; cd 10 ; 0xf77f6
+ mov ax, 00200h ; b8 00 02 ; 0xf77f8
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf77fb
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf77fd
+ int 010h ; cd 10 ; 0xf77ff
+ push 00a7dh ; 68 7d 0a ; 0xf7801 logo.c:467
+ push strict byte 00002h ; 6a 02 ; 0xf7804
+ call 0190eh ; e8 05 a1 ; 0xf7806
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7809
+ call 074f3h ; e8 e4 fc ; 0xf780c logo.c:468
+ push 00ac1h ; 68 c1 0a ; 0xf780f logo.c:469
+ push strict byte 00002h ; 6a 02 ; 0xf7812
+ call 0190eh ; e8 f7 a0 ; 0xf7814
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7817
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf781a logo.c:478
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf781d
+ call 07412h ; e8 ef fb ; 0xf7820
+ mov bl, al ; 88 c3 ; 0xf7823
+ test al, al ; 84 c0 ; 0xf7825 logo.c:479
+ je short 0781ah ; 74 f1 ; 0xf7827
+ cmp AL, strict byte 030h ; 3c 30 ; 0xf7829 logo.c:481
+ je short 07879h ; 74 4c ; 0xf782b
+ cmp bl, 002h ; 80 fb 02 ; 0xf782d logo.c:488
+ jc short 07852h ; 72 20 ; 0xf7830
+ cmp bl, 009h ; 80 fb 09 ; 0xf7832
+ jnbe short 07852h ; 77 1b ; 0xf7835
+ mov al, bl ; 88 d8 ; 0xf7837 logo.c:490
+ xor ah, ah ; 30 e4 ; 0xf7839
+ call 07631h ; e8 f3 fd ; 0xf783b
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf783e logo.c:497
+ jne short 07844h ; 75 02 ; 0xf7840
+ jmp short 0781ah ; eb d6 ; 0xf7842 logo.c:498
+ mov bx, 00334h ; bb 34 03 ; 0xf7844 logo.c:43
+ mov es, si ; 8e c6 ; 0xf7847
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7849
+ mov byte [bp-010h], 002h ; c6 46 f0 02 ; 0xf784c logo.c:501
+ jmp short 07879h ; eb 27 ; 0xf7850 logo.c:502
+ cmp bl, 02eh ; 80 fb 2e ; 0xf7852 logo.c:505
+ je short 07867h ; 74 10 ; 0xf7855
+ cmp bl, 026h ; 80 fb 26 ; 0xf7857
+ je short 0786dh ; 74 11 ; 0xf785a
+ cmp bl, 021h ; 80 fb 21 ; 0xf785c
+ jne short 07873h ; 75 12 ; 0xf785f
+ mov byte [bp-010h], 001h ; c6 46 f0 01 ; 0xf7861 logo.c:509
+ jmp short 07879h ; eb 12 ; 0xf7865 logo.c:510
+ mov byte [bp-010h], 003h ; c6 46 f0 03 ; 0xf7867 logo.c:513
+ jmp short 07879h ; eb 0c ; 0xf786b logo.c:514
+ mov byte [bp-010h], 004h ; c6 46 f0 04 ; 0xf786d logo.c:517
+ jmp short 07879h ; eb 06 ; 0xf7871 logo.c:518
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf7873 logo.c:521
+ je short 0781ah ; 74 a1 ; 0xf7877
+ mov bx, 00335h ; bb 35 03 ; 0xf7879 logo.c:43
+ mov es, si ; 8e c6 ; 0xf787c
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf787e
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7881
+ mov AL, strict byte 003h ; b0 03 ; 0xf7884 logo.c:528
+ mov AH, strict byte 000h ; b4 00 ; 0xf7886
+ int 010h ; cd 10 ; 0xf7888
+ mov AL, strict byte 034h ; b0 34 ; 0xf788a logo.c:533
+ out strict byte 043h, AL ; e6 43 ; 0xf788c
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf788e
+ out strict byte 040h, AL ; e6 40 ; 0xf7890
+ out strict byte 040h, AL ; e6 40 ; 0xf7892
+ push bp ; 55 ; 0xf7894
+ push DS ; 1e ; 0xf7895
+ mov ds, ax ; 8e d8 ; 0xf7896
+ call 0edbfh ; e8 24 75 ; 0xf7898
+ pop DS ; 1f ; 0xf789b
+ pop bp ; 5d ; 0xf789c
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf789d logo.c:536
+ pop di ; 5f ; 0xf78a0
+ pop si ; 5e ; 0xf78a1
+ pop dx ; 5a ; 0xf78a2
+ pop cx ; 59 ; 0xf78a3
+ pop bx ; 5b ; 0xf78a4
+ pop bp ; 5d ; 0xf78a5
+ retn ; c3 ; 0xf78a6
+ ; disGetNextSymbol 0xf78a7 LB 0x3a31 -> off=0x0 cb=000000000000006b uValue=00000000000f62a7 'delay_boot'
+delay_boot: ; 0xf78a7 LB 0x6b
+ push bp ; 55 ; 0xf78a7 logo.c:539
+ mov bp, sp ; 89 e5 ; 0xf78a8
+ push bx ; 53 ; 0xf78aa
+ push cx ; 51 ; 0xf78ab
+ push dx ; 52 ; 0xf78ac
+ push si ; 56 ; 0xf78ad
+ push di ; 57 ; 0xf78ae
+ mov dx, ax ; 89 c2 ; 0xf78af
+ test ax, ax ; 85 c0 ; 0xf78b1 logo.c:543
+ je short 07908h ; 74 53 ; 0xf78b3
+ mov AL, strict byte 034h ; b0 34 ; 0xf78b5 logo.c:547
+ out strict byte 043h, AL ; e6 43 ; 0xf78b7
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf78b9
+ out strict byte 040h, AL ; e6 40 ; 0xf78bb
+ mov AL, strict byte 048h ; b0 48 ; 0xf78bd
+ out strict byte 040h, AL ; e6 40 ; 0xf78bf
+ push dx ; 52 ; 0xf78c1 logo.c:549
+ push 00b0bh ; 68 0b 0b ; 0xf78c2
+ push strict byte 00002h ; 6a 02 ; 0xf78c5
+ call 0190eh ; e8 44 a0 ; 0xf78c7
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf78ca
+ mov bx, dx ; 89 d3 ; 0xf78cd logo.c:550
+ test bx, bx ; 85 db ; 0xf78cf
+ jbe short 078eah ; 76 17 ; 0xf78d1
+ push bx ; 53 ; 0xf78d3 logo.c:552
+ push 00b29h ; 68 29 0b ; 0xf78d4
+ push strict byte 00002h ; 6a 02 ; 0xf78d7
+ call 0190eh ; e8 32 a0 ; 0xf78d9
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf78dc
+ xor dx, dx ; 31 d2 ; 0xf78df logo.c:553
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf78e1
+ call 07412h ; e8 2b fb ; 0xf78e4
+ dec bx ; 4b ; 0xf78e7 logo.c:554
+ jmp short 078cfh ; eb e5 ; 0xf78e8
+ push 00a59h ; 68 59 0a ; 0xf78ea logo.c:555
+ push strict byte 00002h ; 6a 02 ; 0xf78ed
+ call 0190eh ; e8 1c a0 ; 0xf78ef
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf78f2
+ mov AL, strict byte 034h ; b0 34 ; 0xf78f5 logo.c:557
+ out strict byte 043h, AL ; e6 43 ; 0xf78f7
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf78f9
+ out strict byte 040h, AL ; e6 40 ; 0xf78fb
+ out strict byte 040h, AL ; e6 40 ; 0xf78fd
+ push bp ; 55 ; 0xf78ff
+ push DS ; 1e ; 0xf7900
+ mov ds, ax ; 8e d8 ; 0xf7901
+ call 0edbfh ; e8 b9 74 ; 0xf7903
+ pop DS ; 1f ; 0xf7906
+ pop bp ; 5d ; 0xf7907
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7908 logo.c:558
+ pop di ; 5f ; 0xf790b
+ pop si ; 5e ; 0xf790c
+ pop dx ; 5a ; 0xf790d
+ pop cx ; 59 ; 0xf790e
+ pop bx ; 5b ; 0xf790f
+ pop bp ; 5d ; 0xf7910
+ retn ; c3 ; 0xf7911
+ ; disGetNextSymbol 0xf7912 LB 0x39c6 -> off=0x0 cb=00000000000000d5 uValue=00000000000f6312 'scsi_cmd_data_in'
+scsi_cmd_data_in: ; 0xf7912 LB 0xd5
+ push bp ; 55 ; 0xf7912 scsi.c:65
+ mov bp, sp ; 89 e5 ; 0xf7913
+ push si ; 56 ; 0xf7915
+ push di ; 57 ; 0xf7916
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7917
+ mov si, ax ; 89 c6 ; 0xf791a
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf791c
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf791f
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf7922
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7925
+ mov dx, si ; 89 f2 ; 0xf7928 scsi.c:73
+ in AL, DX ; ec ; 0xf792a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf792b
+ test AL, strict byte 001h ; a8 01 ; 0xf792d scsi.c:74
+ jne short 07928h ; 75 f7 ; 0xf792f
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7931 scsi.c:76
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf7934
+ jne short 0793ch ; 75 04 ; 0xf7936
+ xor ax, ax ; 31 c0 ; 0xf7938
+ jmp short 0793eh ; eb 02 ; 0xf793a
+ xor ah, ah ; 30 e4 ; 0xf793c
+ mov di, ax ; 89 c7 ; 0xf793e
+ mov ax, bx ; 89 d8 ; 0xf7940
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7942
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7945
+ shr dx, 1 ; d1 ea ; 0xf7948
+ rcr ax, 1 ; d1 d8 ; 0xf794a
+ loop 07948h ; e2 fa ; 0xf794c
+ mov cx, ax ; 89 c1 ; 0xf794e
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7950
+ or cx, di ; 09 f9 ; 0xf7954
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7956 scsi.c:77
+ mov dx, si ; 89 f2 ; 0xf7959
+ out DX, AL ; ee ; 0xf795b
+ xor al, al ; 30 c0 ; 0xf795c scsi.c:78
+ out DX, AL ; ee ; 0xf795e
+ mov al, cl ; 88 c8 ; 0xf795f scsi.c:79
+ out DX, AL ; ee ; 0xf7961
+ mov al, bl ; 88 d8 ; 0xf7962 scsi.c:80
+ out DX, AL ; ee ; 0xf7964
+ mov ax, bx ; 89 d8 ; 0xf7965 scsi.c:81
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7967
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf796a
+ shr dx, 1 ; d1 ea ; 0xf796d
+ rcr ax, 1 ; d1 d8 ; 0xf796f
+ loop 0796dh ; e2 fa ; 0xf7971
+ mov dx, si ; 89 f2 ; 0xf7973
+ out DX, AL ; ee ; 0xf7975
+ xor cx, cx ; 31 c9 ; 0xf7976 scsi.c:82
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7978
+ xor ah, ah ; 30 e4 ; 0xf797b
+ cmp cx, ax ; 39 c1 ; 0xf797d
+ jnc short 0798fh ; 73 0e ; 0xf797f
+ les di, [bp-00ah] ; c4 7e f6 ; 0xf7981 scsi.c:83
+ add di, cx ; 01 cf ; 0xf7984
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf7986
+ mov dx, si ; 89 f2 ; 0xf7989
+ out DX, AL ; ee ; 0xf798b
+ inc cx ; 41 ; 0xf798c
+ jmp short 07978h ; eb e9 ; 0xf798d
+ mov dx, si ; 89 f2 ; 0xf798f scsi.c:87
+ in AL, DX ; ec ; 0xf7991
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7992
+ test AL, strict byte 001h ; a8 01 ; 0xf7994 scsi.c:88
+ jne short 0798fh ; 75 f7 ; 0xf7996
+ test AL, strict byte 002h ; a8 02 ; 0xf7998 scsi.c:91
+ je short 079aah ; 74 0e ; 0xf799a
+ lea dx, [si+003h] ; 8d 54 03 ; 0xf799c scsi.c:92
+ xor al, al ; 30 c0 ; 0xf799f
+ out DX, AL ; ee ; 0xf79a1
+ in AL, DX ; ec ; 0xf79a2 scsi.c:94
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf79a3
+ mov di, strict word 00004h ; bf 04 00 ; 0xf79a5 scsi.c:96
+ jmp short 079dch ; eb 32 ; 0xf79a8
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf79aa scsi.c:102
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf79ad
+ jne short 079b9h ; 75 06 ; 0xf79b1
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf79b3
+ jbe short 079d3h ; 76 1a ; 0xf79b7
+ mov cx, 08000h ; b9 00 80 ; 0xf79b9 scsi.c:104
+ les di, [bp+006h] ; c4 7e 06 ; 0xf79bc
+ rep insb ; f3 6c ; 0xf79bf
+ add bx, 08000h ; 81 c3 00 80 ; 0xf79c1 scsi.c:105
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf79c5
+ mov ax, es ; 8c c0 ; 0xf79c9
+ add ax, 00800h ; 05 00 08 ; 0xf79cb
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf79ce
+ jmp short 079aah ; eb d7 ; 0xf79d1 scsi.c:107
+ mov cx, bx ; 89 d9 ; 0xf79d3 scsi.c:110
+ les di, [bp+006h] ; c4 7e 06 ; 0xf79d5
+ rep insb ; f3 6c ; 0xf79d8
+ xor di, di ; 31 ff ; 0xf79da scsi.c:112
+ mov ax, di ; 89 f8 ; 0xf79dc scsi.c:113
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf79de
+ pop di ; 5f ; 0xf79e1
+ pop si ; 5e ; 0xf79e2
+ pop bp ; 5d ; 0xf79e3
+ retn 0000ah ; c2 0a 00 ; 0xf79e4
+ ; disGetNextSymbol 0xf79e7 LB 0x38f1 -> off=0x0 cb=00000000000000d5 uValue=00000000000f63e7 'scsi_cmd_data_out'
+scsi_cmd_data_out: ; 0xf79e7 LB 0xd5
+ push bp ; 55 ; 0xf79e7 scsi.c:115
+ mov bp, sp ; 89 e5 ; 0xf79e8
+ push si ; 56 ; 0xf79ea
+ push di ; 57 ; 0xf79eb
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf79ec
+ mov di, ax ; 89 c7 ; 0xf79ef
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf79f1
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf79f4
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf79f7
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf79fa
+ mov dx, di ; 89 fa ; 0xf79fd scsi.c:123
+ in AL, DX ; ec ; 0xf79ff
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7a00
+ test AL, strict byte 001h ; a8 01 ; 0xf7a02 scsi.c:124
+ jne short 079fdh ; 75 f7 ; 0xf7a04
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7a06 scsi.c:127
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf7a09
+ jne short 07a11h ; 75 04 ; 0xf7a0b
+ xor ax, ax ; 31 c0 ; 0xf7a0d
+ jmp short 07a13h ; eb 02 ; 0xf7a0f
+ xor ah, ah ; 30 e4 ; 0xf7a11
+ mov si, ax ; 89 c6 ; 0xf7a13
+ mov ax, bx ; 89 d8 ; 0xf7a15
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7a17
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7a1a
+ shr dx, 1 ; d1 ea ; 0xf7a1d
+ rcr ax, 1 ; d1 d8 ; 0xf7a1f
+ loop 07a1dh ; e2 fa ; 0xf7a21
+ mov cx, ax ; 89 c1 ; 0xf7a23
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7a25
+ or cx, si ; 09 f1 ; 0xf7a29
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7a2b scsi.c:128
+ mov dx, di ; 89 fa ; 0xf7a2e
+ out DX, AL ; ee ; 0xf7a30
+ mov AL, strict byte 001h ; b0 01 ; 0xf7a31 scsi.c:129
+ out DX, AL ; ee ; 0xf7a33
+ mov al, cl ; 88 c8 ; 0xf7a34 scsi.c:130
+ out DX, AL ; ee ; 0xf7a36
+ mov al, bl ; 88 d8 ; 0xf7a37 scsi.c:131
+ out DX, AL ; ee ; 0xf7a39
+ mov ax, bx ; 89 d8 ; 0xf7a3a scsi.c:132
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7a3c
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7a3f
+ shr dx, 1 ; d1 ea ; 0xf7a42
+ rcr ax, 1 ; d1 d8 ; 0xf7a44
+ loop 07a42h ; e2 fa ; 0xf7a46
+ mov dx, di ; 89 fa ; 0xf7a48
+ out DX, AL ; ee ; 0xf7a4a
+ xor cx, cx ; 31 c9 ; 0xf7a4b scsi.c:133
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7a4d
+ xor ah, ah ; 30 e4 ; 0xf7a50
+ cmp cx, ax ; 39 c1 ; 0xf7a52
+ jnc short 07a64h ; 73 0e ; 0xf7a54
+ les si, [bp-00ah] ; c4 76 f6 ; 0xf7a56 scsi.c:134
+ add si, cx ; 01 ce ; 0xf7a59
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7a5b
+ mov dx, di ; 89 fa ; 0xf7a5e
+ out DX, AL ; ee ; 0xf7a60
+ inc cx ; 41 ; 0xf7a61
+ jmp short 07a4dh ; eb e9 ; 0xf7a62
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf7a64 scsi.c:139
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7a67
+ jne short 07a73h ; 75 06 ; 0xf7a6b
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf7a6d
+ jbe short 07a8eh ; 76 1b ; 0xf7a71
+ mov cx, 08000h ; b9 00 80 ; 0xf7a73 scsi.c:141
+ les si, [bp+006h] ; c4 76 06 ; 0xf7a76
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7a79
+ add bx, 08000h ; 81 c3 00 80 ; 0xf7a7c scsi.c:142
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7a80
+ mov ax, es ; 8c c0 ; 0xf7a84
+ add ax, 00800h ; 05 00 08 ; 0xf7a86
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7a89
+ jmp short 07a64h ; eb d6 ; 0xf7a8c scsi.c:144
+ mov cx, bx ; 89 d9 ; 0xf7a8e scsi.c:147
+ les si, [bp+006h] ; c4 76 06 ; 0xf7a90
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7a93
+ mov dx, di ; 89 fa ; 0xf7a96 scsi.c:151
+ in AL, DX ; ec ; 0xf7a98
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7a99
+ test AL, strict byte 001h ; a8 01 ; 0xf7a9b scsi.c:152
+ jne short 07a96h ; 75 f7 ; 0xf7a9d
+ test AL, strict byte 002h ; a8 02 ; 0xf7a9f scsi.c:155
+ je short 07ab1h ; 74 0e ; 0xf7aa1
+ lea dx, [di+003h] ; 8d 55 03 ; 0xf7aa3 scsi.c:156
+ xor al, al ; 30 c0 ; 0xf7aa6
+ out DX, AL ; ee ; 0xf7aa8
+ in AL, DX ; ec ; 0xf7aa9 scsi.c:158
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7aaa
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7aac scsi.c:160
+ jmp short 07ab3h ; eb 02 ; 0xf7aaf
+ xor ax, ax ; 31 c0 ; 0xf7ab1 scsi.c:163
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7ab3 scsi.c:164
+ pop di ; 5f ; 0xf7ab6
+ pop si ; 5e ; 0xf7ab7
+ pop bp ; 5d ; 0xf7ab8
+ retn 0000ah ; c2 0a 00 ; 0xf7ab9
+ ; disGetNextSymbol 0xf7abc LB 0x381c -> off=0x0 cb=00000000000000e0 uValue=00000000000f64bc 'scsi_read_sectors'
+scsi_read_sectors: ; 0xf7abc LB 0xe0
+ push bp ; 55 ; 0xf7abc scsi.c:173
+ mov bp, sp ; 89 e5 ; 0xf7abd
+ push si ; 56 ; 0xf7abf
+ push di ; 57 ; 0xf7ac0
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7ac1
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7ac4
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7ac7 scsi.c:182
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7aca
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7ace
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7ad0
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7ad3 scsi.c:183
+ jbe short 07ae8h ; 76 11 ; 0xf7ad5
+ xor ah, ah ; 30 e4 ; 0xf7ad7 scsi.c:184
+ push ax ; 50 ; 0xf7ad9
+ push 00b2eh ; 68 2e 0b ; 0xf7ada
+ push 00b40h ; 68 40 0b ; 0xf7add
+ push strict byte 00007h ; 6a 07 ; 0xf7ae0
+ call 0190eh ; e8 29 9e ; 0xf7ae2
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7ae5
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7ae8 scsi.c:186
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7aeb
+ mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf7aef scsi.c:189
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7af4 scsi.c:190
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7af8
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7afc
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7b00
+ xchg ah, al ; 86 c4 ; 0xf7b03
+ xchg bh, bl ; 86 df ; 0xf7b05
+ xchg ch, cl ; 86 cd ; 0xf7b07
+ xchg dh, dl ; 86 d6 ; 0xf7b09
+ xchg dx, ax ; 92 ; 0xf7b0b
+ xchg bx, cx ; 87 cb ; 0xf7b0c
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7b0e
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7b11
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7b14
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7b17
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7b1a scsi.c:191
+ mov ax, di ; 89 f8 ; 0xf7b1e scsi.c:192
+ xor dx, dx ; 31 d2 ; 0xf7b20
+ xchg ah, al ; 86 c4 ; 0xf7b22
+ xchg dh, dl ; 86 d6 ; 0xf7b24
+ xchg dx, ax ; 92 ; 0xf7b26
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7b27
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7b2a
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7b2d scsi.c:193
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7b31 scsi.c:196
+ xor ah, ah ; 30 e4 ; 0xf7b34
+ sal ax, 002h ; c1 e0 02 ; 0xf7b36
+ mov bx, si ; 89 f3 ; 0xf7b39
+ add bx, ax ; 01 c3 ; 0xf7b3b
+ mov ax, word [es:bx+00294h] ; 26 8b 87 94 02 ; 0xf7b3d
+ mov dl, byte [es:bx+00296h] ; 26 8a 97 96 02 ; 0xf7b42 scsi.c:197
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf7b47 scsi.c:202
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7b4a
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7b4f
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7b52
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7b55
+ loop 07b52h ; e2 f8 ; 0xf7b58
+ push word [bp-008h] ; ff 76 f8 ; 0xf7b5a
+ push word [bp-00ah] ; ff 76 f6 ; 0xf7b5d
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7b60
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7b64
+ push strict byte 00010h ; 6a 10 ; 0xf7b68
+ xor dh, dh ; 30 f6 ; 0xf7b6a
+ mov cx, ss ; 8c d1 ; 0xf7b6c
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7b6e
+ call 07912h ; e8 9e fd ; 0xf7b71
+ mov ah, al ; 88 c4 ; 0xf7b74
+ test al, al ; 84 c0 ; 0xf7b76 scsi.c:205
+ jne short 07b8fh ; 75 15 ; 0xf7b78
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7b7a scsi.c:207
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7b7d
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7b81 scsi.c:208
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7b84
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7b88
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7b8b
+ mov al, ah ; 88 e0 ; 0xf7b8f scsi.c:212
+ xor ah, ah ; 30 e4 ; 0xf7b91
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7b93 scsi.c:213
+ pop di ; 5f ; 0xf7b96
+ pop si ; 5e ; 0xf7b97
+ pop bp ; 5d ; 0xf7b98
+ retn 00004h ; c2 04 00 ; 0xf7b99
+ ; disGetNextSymbol 0xf7b9c LB 0x373c -> off=0x0 cb=00000000000000e0 uValue=00000000000f659c 'scsi_write_sectors'
+scsi_write_sectors: ; 0xf7b9c LB 0xe0
+ push bp ; 55 ; 0xf7b9c scsi.c:222
+ mov bp, sp ; 89 e5 ; 0xf7b9d
+ push si ; 56 ; 0xf7b9f
+ push di ; 57 ; 0xf7ba0
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7ba1
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7ba4
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7ba7 scsi.c:231
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7baa
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7bae
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7bb0
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7bb3 scsi.c:232
+ jbe short 07bc8h ; 76 11 ; 0xf7bb5
+ xor ah, ah ; 30 e4 ; 0xf7bb7 scsi.c:233
+ push ax ; 50 ; 0xf7bb9
+ push 00b5fh ; 68 5f 0b ; 0xf7bba
+ push 00b40h ; 68 40 0b ; 0xf7bbd
+ push strict byte 00007h ; 6a 07 ; 0xf7bc0
+ call 0190eh ; e8 49 9d ; 0xf7bc2
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7bc5
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7bc8 scsi.c:235
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7bcb
+ mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf7bcf scsi.c:238
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7bd4 scsi.c:239
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7bd8
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7bdc
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7be0
+ xchg ah, al ; 86 c4 ; 0xf7be3
+ xchg bh, bl ; 86 df ; 0xf7be5
+ xchg ch, cl ; 86 cd ; 0xf7be7
+ xchg dh, dl ; 86 d6 ; 0xf7be9
+ xchg dx, ax ; 92 ; 0xf7beb
+ xchg bx, cx ; 87 cb ; 0xf7bec
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7bee
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7bf1
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7bf4
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7bf7
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7bfa scsi.c:240
+ mov ax, di ; 89 f8 ; 0xf7bfe scsi.c:241
+ xor dx, dx ; 31 d2 ; 0xf7c00
+ xchg ah, al ; 86 c4 ; 0xf7c02
+ xchg dh, dl ; 86 d6 ; 0xf7c04
+ xchg dx, ax ; 92 ; 0xf7c06
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7c07
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7c0a
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7c0d scsi.c:242
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7c11 scsi.c:244
+ xor ah, ah ; 30 e4 ; 0xf7c14
+ sal ax, 002h ; c1 e0 02 ; 0xf7c16
+ mov bx, si ; 89 f3 ; 0xf7c19
+ add bx, ax ; 01 c3 ; 0xf7c1b
+ mov ax, word [es:bx+00294h] ; 26 8b 87 94 02 ; 0xf7c1d
+ mov dl, byte [es:bx+00296h] ; 26 8a 97 96 02 ; 0xf7c22 scsi.c:245
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf7c27 scsi.c:250
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7c2a
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7c2f
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7c32
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7c35
+ loop 07c32h ; e2 f8 ; 0xf7c38
+ push word [bp-008h] ; ff 76 f8 ; 0xf7c3a
+ push word [bp-00ah] ; ff 76 f6 ; 0xf7c3d
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7c40
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7c44
+ push strict byte 00010h ; 6a 10 ; 0xf7c48
+ xor dh, dh ; 30 f6 ; 0xf7c4a
+ mov cx, ss ; 8c d1 ; 0xf7c4c
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7c4e
+ call 079e7h ; e8 93 fd ; 0xf7c51
+ mov ah, al ; 88 c4 ; 0xf7c54
+ test al, al ; 84 c0 ; 0xf7c56 scsi.c:253
+ jne short 07c6fh ; 75 15 ; 0xf7c58
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7c5a scsi.c:255
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7c5d
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7c61 scsi.c:256
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7c64
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7c68
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7c6b
+ mov al, ah ; 88 e0 ; 0xf7c6f scsi.c:260
+ xor ah, ah ; 30 e4 ; 0xf7c71
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7c73 scsi.c:261
+ pop di ; 5f ; 0xf7c76
+ pop si ; 5e ; 0xf7c77
+ pop bp ; 5d ; 0xf7c78
+ retn 00004h ; c2 04 00 ; 0xf7c79
+ ; disGetNextSymbol 0xf7c7c LB 0x365c -> off=0x0 cb=0000000000000176 uValue=00000000000f667c 'scsi_cmd_packet'
+scsi_cmd_packet: ; 0xf7c7c LB 0x176
+ push bp ; 55 ; 0xf7c7c scsi.c:281
+ mov bp, sp ; 89 e5 ; 0xf7c7d
+ push si ; 56 ; 0xf7c7f
+ push di ; 57 ; 0xf7c80
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf7c81
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf7c84
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf7c87
+ mov word [bp-00ah], cx ; 89 4e f6 ; 0xf7c8a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7c8d scsi.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf7c90
+ mov es, dx ; 8e c2 ; 0xf7c93
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7c95
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf7c98 scsi.c:49
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf7c9b
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf7c9e scsi.c:292
+ jne short 07cc3h ; 75 1f ; 0xf7ca2
+ mov bx, 00eeah ; bb ea 0e ; 0xf7ca4 scsi.c:293
+ mov cx, ds ; 8c d9 ; 0xf7ca7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7ca9
+ call 018cbh ; e8 1c 9c ; 0xf7cac
+ push 00b72h ; 68 72 0b ; 0xf7caf
+ push 00b82h ; 68 82 0b ; 0xf7cb2
+ push strict byte 00004h ; 6a 04 ; 0xf7cb5
+ call 0190eh ; e8 54 9c ; 0xf7cb7
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7cba
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7cbd scsi.c:294
+ jmp near 07de7h ; e9 24 01 ; 0xf7cc0
+ sub ax, strict word 00008h ; 2d 08 00 ; 0xf7cc3 scsi.c:298
+ sal ax, 002h ; c1 e0 02 ; 0xf7cc6 scsi.c:308
+ sub byte [bp-006h], 002h ; 80 6e fa 02 ; 0xf7cc9 scsi.c:306
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf7ccd
+ mov di, si ; 89 f7 ; 0xf7cd0
+ add di, ax ; 01 c7 ; 0xf7cd2
+ mov bx, word [es:di+00294h] ; 26 8b 9d 94 02 ; 0xf7cd4
+ mov al, byte [es:di+00296h] ; 26 8a 85 96 02 ; 0xf7cd9 scsi.c:309
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf7cde
+ mov dx, bx ; 89 da ; 0xf7ce1 scsi.c:313
+ in AL, DX ; ec ; 0xf7ce3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7ce4
+ test AL, strict byte 001h ; a8 01 ; 0xf7ce6 scsi.c:314
+ jne short 07ce1h ; 75 f7 ; 0xf7ce8
+ xor di, di ; 31 ff ; 0xf7cea scsi.c:320
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7cec
+ add ax, word [bp+004h] ; 03 46 04 ; 0xf7cef
+ adc di, word [bp+008h] ; 13 7e 08 ; 0xf7cf2
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf7cf5
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf7cf8
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7cfc
+ xor dx, dx ; 31 d2 ; 0xf7cff
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf7d01
+ add cx, ax ; 01 c1 ; 0xf7d04
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf7d06
+ adc di, dx ; 11 d7 ; 0xf7d09
+ mov ax, cx ; 89 c8 ; 0xf7d0b scsi.c:322
+ mov dx, di ; 89 fa ; 0xf7d0d
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7d0f
+ shr dx, 1 ; d1 ea ; 0xf7d12
+ rcr ax, 1 ; d1 d8 ; 0xf7d14
+ loop 07d12h ; e2 fa ; 0xf7d16
+ mov cx, ax ; 89 c1 ; 0xf7d18
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7d1a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7d1e
+ xor ah, ah ; 30 e4 ; 0xf7d21
+ or cx, ax ; 09 c1 ; 0xf7d23
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7d25 scsi.c:323
+ mov dx, bx ; 89 da ; 0xf7d28
+ out DX, AL ; ee ; 0xf7d2a
+ xor al, al ; 30 c0 ; 0xf7d2b scsi.c:324
+ out DX, AL ; ee ; 0xf7d2d
+ mov al, cl ; 88 c8 ; 0xf7d2e scsi.c:325
+ out DX, AL ; ee ; 0xf7d30
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7d31 scsi.c:326
+ out DX, AL ; ee ; 0xf7d34
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf7d35 scsi.c:327
+ mov dx, di ; 89 fa ; 0xf7d38
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7d3a
+ shr dx, 1 ; d1 ea ; 0xf7d3d
+ rcr ax, 1 ; d1 d8 ; 0xf7d3f
+ loop 07d3dh ; e2 fa ; 0xf7d41
+ mov dx, bx ; 89 da ; 0xf7d43
+ out DX, AL ; ee ; 0xf7d45
+ xor cx, cx ; 31 c9 ; 0xf7d46 scsi.c:328
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7d48
+ xor ah, ah ; 30 e4 ; 0xf7d4b
+ cmp cx, ax ; 39 c1 ; 0xf7d4d
+ jnc short 07d62h ; 73 11 ; 0xf7d4f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf7d51 scsi.c:329
+ mov di, word [bp-010h] ; 8b 7e f0 ; 0xf7d54
+ add di, cx ; 01 cf ; 0xf7d57
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf7d59
+ mov dx, bx ; 89 da ; 0xf7d5c
+ out DX, AL ; ee ; 0xf7d5e
+ inc cx ; 41 ; 0xf7d5f
+ jmp short 07d48h ; eb e6 ; 0xf7d60
+ mov dx, bx ; 89 da ; 0xf7d62 scsi.c:333
+ in AL, DX ; ec ; 0xf7d64
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7d65
+ test AL, strict byte 001h ; a8 01 ; 0xf7d67 scsi.c:334
+ jne short 07d62h ; 75 f7 ; 0xf7d69
+ test AL, strict byte 002h ; a8 02 ; 0xf7d6b scsi.c:337
+ je short 07d7dh ; 74 0e ; 0xf7d6d
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf7d6f scsi.c:338
+ xor al, al ; 30 c0 ; 0xf7d72
+ out DX, AL ; ee ; 0xf7d74
+ in AL, DX ; ec ; 0xf7d75 scsi.c:340
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7d76
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf7d78 scsi.c:342
+ jmp short 07de7h ; eb 6a ; 0xf7d7b
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7d7d scsi.c:347
+ test ax, ax ; 85 c0 ; 0xf7d80
+ je short 07d8ch ; 74 08 ; 0xf7d82
+ lea dx, [bx+001h] ; 8d 57 01 ; 0xf7d84 scsi.c:348
+ mov cx, ax ; 89 c1 ; 0xf7d87
+ in AL, DX ; ec ; 0xf7d89
+ loop 07d89h ; e2 fd ; 0xf7d8a
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7d8c scsi.c:350
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf7d8f
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7d92
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xf7d96
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7d99
+ lea ax, [bx+001h] ; 8d 47 01 ; 0xf7d9d scsi.c:355
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf7da0
+ jne short 07dadh ; 75 07 ; 0xf7da4
+ cmp word [bp+006h], 08000h ; 81 7e 06 00 80 ; 0xf7da6
+ jbe short 07dcah ; 76 1d ; 0xf7dab
+ mov dx, ax ; 89 c2 ; 0xf7dad scsi.c:357
+ mov cx, 08000h ; b9 00 80 ; 0xf7daf
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf7db2
+ rep insb ; f3 6c ; 0xf7db5
+ add word [bp+006h], 08000h ; 81 46 06 00 80 ; 0xf7db7 scsi.c:358
+ adc word [bp+008h], strict byte 0ffffh ; 83 56 08 ff ; 0xf7dbc
+ mov ax, es ; 8c c0 ; 0xf7dc0
+ add ax, 00800h ; 05 00 08 ; 0xf7dc2
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf7dc5
+ jmp short 07d9dh ; eb d3 ; 0xf7dc8 scsi.c:360
+ mov dx, ax ; 89 c2 ; 0xf7dca scsi.c:363
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf7dcc
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf7dcf
+ rep insb ; f3 6c ; 0xf7dd2
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf7dd4 scsi.c:365
+ cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00 ; 0xf7dd7
+ je short 07de5h ; 74 07 ; 0xf7ddc
+ mov cx, word [es:si+020h] ; 26 8b 4c 20 ; 0xf7dde scsi.c:366
+ in AL, DX ; ec ; 0xf7de2
+ loop 07de2h ; e2 fd ; 0xf7de3
+ xor dx, dx ; 31 d2 ; 0xf7de5 scsi.c:368
+ mov ax, dx ; 89 d0 ; 0xf7de7 scsi.c:369
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7de9
+ pop di ; 5f ; 0xf7dec
+ pop si ; 5e ; 0xf7ded
+ pop bp ; 5d ; 0xf7dee
+ retn 0000ch ; c2 0c 00 ; 0xf7def
+ ; disGetNextSymbol 0xf7df2 LB 0x34e6 -> off=0x0 cb=00000000000004a7 uValue=00000000000f67f2 'scsi_enumerate_attached_devices'
+scsi_enumerate_attached_devices: ; 0xf7df2 LB 0x4a7
+ push bp ; 55 ; 0xf7df2 scsi.c:377
+ mov bp, sp ; 89 e5 ; 0xf7df3
+ push bx ; 53 ; 0xf7df5
+ push cx ; 51 ; 0xf7df6
+ push dx ; 52 ; 0xf7df7
+ push si ; 56 ; 0xf7df8
+ push di ; 57 ; 0xf7df9
+ sub sp, 0023ch ; 81 ec 3c 02 ; 0xf7dfa
+ push ax ; 50 ; 0xf7dfe
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7dff scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7e02
+ mov es, ax ; 8e c0 ; 0xf7e05
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7e07
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf7e0a scsi.c:49
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf7e0d
+ mov word [bp-012h], strict word 00000h ; c7 46 ee 00 00 ; 0xf7e10 scsi.c:386
+ jmp near 08217h ; e9 ff 03 ; 0xf7e15
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7e18 scsi.c:406
+ jc short 07e1fh ; 72 03 ; 0xf7e1a
+ jmp near 0828fh ; e9 70 04 ; 0xf7e1c
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf7e1f scsi.c:421
+ xor bx, bx ; 31 db ; 0xf7e22
+ mov dx, ss ; 8c d2 ; 0xf7e24
+ lea ax, [bp-046h] ; 8d 46 ba ; 0xf7e26
+ call 0afb0h ; e8 84 31 ; 0xf7e29
+ mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xf7e2c scsi.c:422
+ mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xf7e30 scsi.c:423
+ mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xf7e34 scsi.c:424
+ push strict byte 00000h ; 6a 00 ; 0xf7e38 scsi.c:426
+ push strict byte 00020h ; 6a 20 ; 0xf7e3a
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf7e3c
+ push SS ; 16 ; 0xf7e40
+ push dx ; 52 ; 0xf7e41
+ push strict byte 00010h ; 6a 10 ; 0xf7e42
+ mov dl, byte [bp-012h] ; 8a 56 ee ; 0xf7e44
+ xor dh, dh ; 30 f6 ; 0xf7e47
+ mov cx, ss ; 8c d1 ; 0xf7e49
+ lea bx, [bp-046h] ; 8d 5e ba ; 0xf7e4b
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf7e4e
+ call 07912h ; e8 bd fa ; 0xf7e52
+ test al, al ; 84 c0 ; 0xf7e55 scsi.c:427
+ je short 07e67h ; 74 0e ; 0xf7e57
+ push 00ba2h ; 68 a2 0b ; 0xf7e59 scsi.c:428
+ push 00bdbh ; 68 db 0b ; 0xf7e5c
+ push strict byte 00007h ; 6a 07 ; 0xf7e5f
+ call 0190eh ; e8 aa 9a ; 0xf7e61
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7e64
+ mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xf7e67 scsi.c:433
+ mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xf7e6b
+ mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xf7e6f
+ mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xf7e73
+ xchg ah, al ; 86 c4 ; 0xf7e77
+ xchg bh, bl ; 86 df ; 0xf7e79
+ xchg ch, cl ; 86 cd ; 0xf7e7b
+ xchg dh, dl ; 86 d6 ; 0xf7e7d
+ xchg dx, ax ; 92 ; 0xf7e7f
+ xchg bx, cx ; 87 cb ; 0xf7e80
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xf7e82
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf7e85
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7e88
+ mov word [bp-018h], cx ; 89 4e e8 ; 0xf7e8b
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7e8e
+ mov word [bp-020h], bx ; 89 5e e0 ; 0xf7e91
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf7e94
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf7e97
+ mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xf7e9a scsi.c:435
+ xor ah, ah ; 30 e4 ; 0xf7e9e
+ mov bx, ax ; 89 c3 ; 0xf7ea0
+ sal bx, 008h ; c1 e3 08 ; 0xf7ea2
+ mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xf7ea5
+ xor si, si ; 31 f6 ; 0xf7ea9
+ or bx, ax ; 09 c3 ; 0xf7eab
+ mov al, byte [bp-0023ch] ; 8a 86 c4 fd ; 0xf7ead
+ xor dx, dx ; 31 d2 ; 0xf7eb1
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7eb3
+ sal ax, 1 ; d1 e0 ; 0xf7eb6
+ rcl dx, 1 ; d1 d2 ; 0xf7eb8
+ loop 07eb6h ; e2 fa ; 0xf7eba
+ mov cx, si ; 89 f1 ; 0xf7ebc
+ or cx, ax ; 09 c1 ; 0xf7ebe
+ or dx, bx ; 09 da ; 0xf7ec0
+ mov al, byte [bp-0023bh] ; 8a 86 c5 fd ; 0xf7ec2
+ xor ah, ah ; 30 e4 ; 0xf7ec6
+ or cx, ax ; 09 c1 ; 0xf7ec8
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7eca
+ test dx, dx ; 85 d2 ; 0xf7ecd scsi.c:441
+ jne short 07ed7h ; 75 06 ; 0xf7ecf
+ cmp cx, 00200h ; 81 f9 00 02 ; 0xf7ed1
+ je short 07ef7h ; 74 20 ; 0xf7ed5
+ mov bx, 00eeah ; bb ea 0e ; 0xf7ed7 scsi.c:444
+ mov cx, ds ; 8c d9 ; 0xf7eda
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7edc
+ call 018cbh ; e8 e9 99 ; 0xf7edf
+ push dx ; 52 ; 0xf7ee2
+ push word [bp-016h] ; ff 76 ea ; 0xf7ee3
+ push word [bp-012h] ; ff 76 ee ; 0xf7ee6
+ push 00bfah ; 68 fa 0b ; 0xf7ee9
+ push strict byte 00004h ; 6a 04 ; 0xf7eec
+ call 0190eh ; e8 1d 9a ; 0xf7eee
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7ef1
+ jmp near 0820bh ; e9 14 03 ; 0xf7ef4 scsi.c:445
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7ef7 scsi.c:449
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7efa
+ jc short 07f0ah ; 72 0c ; 0xf7efc
+ jbe short 07f12h ; 76 12 ; 0xf7efe
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf7f00
+ je short 07f1ah ; 74 16 ; 0xf7f02
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7f04
+ je short 07f16h ; 74 0e ; 0xf7f06
+ jmp short 07f63h ; eb 59 ; 0xf7f08
+ test al, al ; 84 c0 ; 0xf7f0a
+ jne short 07f63h ; 75 55 ; 0xf7f0c
+ mov BL, strict byte 090h ; b3 90 ; 0xf7f0e scsi.c:452
+ jmp short 07f1ch ; eb 0a ; 0xf7f10 scsi.c:453
+ mov BL, strict byte 098h ; b3 98 ; 0xf7f12 scsi.c:455
+ jmp short 07f1ch ; eb 06 ; 0xf7f14 scsi.c:456
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xf7f16 scsi.c:458
+ jmp short 07f1ch ; eb 02 ; 0xf7f18 scsi.c:459
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xf7f1a scsi.c:461
+ mov cl, bl ; 88 d9 ; 0xf7f1c scsi.c:465
+ add cl, 007h ; 80 c1 07 ; 0xf7f1e
+ xor ch, ch ; 30 ed ; 0xf7f21
+ mov ax, cx ; 89 c8 ; 0xf7f23
+ call 0165fh ; e8 37 97 ; 0xf7f25
+ test al, al ; 84 c0 ; 0xf7f28
+ je short 07f63h ; 74 37 ; 0xf7f2a
+ mov al, bl ; 88 d8 ; 0xf7f2c scsi.c:470
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7f2e
+ xor ah, ah ; 30 e4 ; 0xf7f30
+ call 0165fh ; e8 2a 97 ; 0xf7f32
+ xor ah, ah ; 30 e4 ; 0xf7f35
+ mov dx, ax ; 89 c2 ; 0xf7f37
+ sal dx, 008h ; c1 e2 08 ; 0xf7f39
+ mov al, bl ; 88 d8 ; 0xf7f3c
+ call 0165fh ; e8 1e 97 ; 0xf7f3e
+ xor ah, ah ; 30 e4 ; 0xf7f41
+ add ax, dx ; 01 d0 ; 0xf7f43
+ cwd ; 99 ; 0xf7f45
+ mov si, ax ; 89 c6 ; 0xf7f46
+ mov al, bl ; 88 d8 ; 0xf7f48 scsi.c:471
+ add AL, strict byte 002h ; 04 02 ; 0xf7f4a
+ xor ah, ah ; 30 e4 ; 0xf7f4c
+ call 0165fh ; e8 0e 97 ; 0xf7f4e
+ xor ah, ah ; 30 e4 ; 0xf7f51
+ mov word [bp-022h], ax ; 89 46 de ; 0xf7f53
+ mov ax, cx ; 89 c8 ; 0xf7f56 scsi.c:472
+ call 0165fh ; e8 04 97 ; 0xf7f58
+ xor ah, ah ; 30 e4 ; 0xf7f5b
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf7f5d
+ jmp near 08051h ; e9 ee 00 ; 0xf7f60 scsi.c:474
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf7f63 scsi.c:475
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf7f66
+ mov cx, word [bp-018h] ; 8b 4e e8 ; 0xf7f69
+ mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf7f6c
+ mov si, strict word 0000ch ; be 0c 00 ; 0xf7f6f
+ call 0af90h ; e8 1b 30 ; 0xf7f72
+ mov word [bp-026h], ax ; 89 46 da ; 0xf7f75
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf7f78
+ mov word [bp-014h], cx ; 89 4e ec ; 0xf7f7b
+ mov word [bp-028h], dx ; 89 56 d8 ; 0xf7f7e
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf7f81 scsi.c:479
+ test ax, ax ; 85 c0 ; 0xf7f84
+ jnbe short 07f9dh ; 77 15 ; 0xf7f86
+ je short 07f8dh ; 74 03 ; 0xf7f88
+ jmp near 08012h ; e9 85 00 ; 0xf7f8a
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf7f8d
+ jnbe short 07f9dh ; 77 0a ; 0xf7f91
+ jne short 07f8ah ; 75 f5 ; 0xf7f93
+ cmp word [bp-018h], strict byte 00040h ; 83 7e e8 40 ; 0xf7f95
+ jnbe short 07f9dh ; 77 02 ; 0xf7f99
+ jne short 08012h ; 75 75 ; 0xf7f9b
+ mov word [bp-022h], 000ffh ; c7 46 de ff 00 ; 0xf7f9d scsi.c:481
+ mov word [bp-024h], strict word 0003fh ; c7 46 dc 3f 00 ; 0xf7fa2 scsi.c:482
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf7fa7 scsi.c:484
+ mov cx, word [bp-018h] ; 8b 4e e8 ; 0xf7faa
+ mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf7fad
+ mov si, strict word 00006h ; be 06 00 ; 0xf7fb0
+ call 0af90h ; e8 da 2f ; 0xf7fb3
+ mov si, word [bp-028h] ; 8b 76 d8 ; 0xf7fb6
+ add si, dx ; 01 d6 ; 0xf7fb9
+ mov word [bp-036h], si ; 89 76 ca ; 0xf7fbb
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf7fbe
+ adc dx, cx ; 11 ca ; 0xf7fc1
+ mov word [bp-034h], dx ; 89 56 cc ; 0xf7fc3
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf7fc6
+ adc dx, bx ; 11 da ; 0xf7fc9
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf7fcb
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf7fce
+ adc dx, ax ; 11 c2 ; 0xf7fd1
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf7fd3
+ mov ax, dx ; 89 d0 ; 0xf7fd6 scsi.c:485
+ mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7fd8
+ mov cx, word [bp-034h] ; 8b 4e cc ; 0xf7fdb
+ mov dx, si ; 89 f2 ; 0xf7fde
+ mov si, strict word 00008h ; be 08 00 ; 0xf7fe0
+ call 0af90h ; e8 aa 2f ; 0xf7fe3
+ mov word [bp-030h], bx ; 89 5e d0 ; 0xf7fe6
+ mov word [bp-02ch], cx ; 89 4e d4 ; 0xf7fe9
+ mov word [bp-032h], dx ; 89 56 ce ; 0xf7fec
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf7fef
+ mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7ff2
+ mov cx, word [bp-034h] ; 8b 4e cc ; 0xf7ff5
+ mov dx, word [bp-036h] ; 8b 56 ca ; 0xf7ff8
+ mov si, strict word 00010h ; be 10 00 ; 0xf7ffb
+ call 0af90h ; e8 8f 2f ; 0xf7ffe
+ mov si, word [bp-032h] ; 8b 76 ce ; 0xf8001
+ add si, dx ; 01 d6 ; 0xf8004
+ mov dx, word [bp-02ch] ; 8b 56 d4 ; 0xf8006
+ adc dx, cx ; 11 ca ; 0xf8009
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf800b
+ adc ax, bx ; 11 d8 ; 0xf800e
+ jmp short 08051h ; eb 3f ; 0xf8010 scsi.c:487
+ test ax, ax ; 85 c0 ; 0xf8012
+ jnbe short 08028h ; 77 12 ; 0xf8014
+ jne short 08034h ; 75 1c ; 0xf8016
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf8018
+ jnbe short 08028h ; 77 0a ; 0xf801c
+ jne short 08034h ; 75 14 ; 0xf801e
+ cmp word [bp-018h], strict byte 00020h ; 83 7e e8 20 ; 0xf8020
+ jnbe short 08028h ; 77 02 ; 0xf8024
+ jne short 08034h ; 75 0c ; 0xf8026
+ mov word [bp-022h], 00080h ; c7 46 de 80 00 ; 0xf8028 scsi.c:489
+ mov word [bp-024h], strict word 00020h ; c7 46 dc 20 00 ; 0xf802d scsi.c:490
+ jmp short 0804dh ; eb 19 ; 0xf8032 scsi.c:493
+ mov word [bp-022h], strict word 00040h ; c7 46 de 40 00 ; 0xf8034 scsi.c:495
+ mov word [bp-024h], strict word 00020h ; c7 46 dc 20 00 ; 0xf8039 scsi.c:496
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf803e scsi.c:497
+ mov cx, word [bp-018h] ; 8b 4e e8 ; 0xf8041
+ mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf8044
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf8047
+ call 0af90h ; e8 43 2f ; 0xf804a
+ mov si, dx ; 89 d6 ; 0xf804d
+ mov dx, cx ; 89 ca ; 0xf804f
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8051 scsi.c:502
+ add AL, strict byte 008h ; 04 08 ; 0xf8054
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8056
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8059 scsi.c:504
+ xor ah, ah ; 30 e4 ; 0xf805c
+ sal ax, 002h ; c1 e0 02 ; 0xf805e
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf8061
+ mov bx, di ; 89 fb ; 0xf8064
+ add bx, ax ; 01 c3 ; 0xf8066
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8068
+ mov word [es:bx+00294h], ax ; 26 89 87 94 02 ; 0xf806c
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf8071 scsi.c:505
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xf8074
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf8079 scsi.c:506
+ xor ah, ah ; 30 e4 ; 0xf807c
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf807e
+ mov bx, di ; 89 fb ; 0xf8081
+ add bx, ax ; 01 c3 ; 0xf8083
+ mov word [es:bx+022h], 0ff04h ; 26 c7 47 22 04 ff ; 0xf8085
+ mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf808b scsi.c:508
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf8091 scsi.c:510
+ mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xf8094
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf8098 scsi.c:511
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf809d scsi.c:514
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf80a0
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf80a4 scsi.c:515
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf80a7
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf80ab scsi.c:516
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf80ae
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf80b2 scsi.c:517
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf80b5
+ test dx, dx ; 85 d2 ; 0xf80b9 scsi.c:519
+ jne short 080c3h ; 75 06 ; 0xf80bb
+ cmp si, 00400h ; 81 fe 00 04 ; 0xf80bd
+ jbe short 080d1h ; 76 0e ; 0xf80c1
+ mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xf80c3 scsi.c:520
+ mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xf80c9 scsi.c:521
+ jmp short 080d9h ; eb 08 ; 0xf80cf scsi.c:522
+ mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xf80d1 scsi.c:523
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf80d5 scsi.c:524
+ mov bx, 00eeah ; bb ea 0e ; 0xf80d9 scsi.c:528
+ mov cx, ds ; 8c d9 ; 0xf80dc
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf80de
+ call 018cbh ; e8 e7 97 ; 0xf80e1
+ push word [bp-01eh] ; ff 76 e2 ; 0xf80e4
+ push word [bp-020h] ; ff 76 e0 ; 0xf80e7
+ push word [bp-018h] ; ff 76 e8 ; 0xf80ea
+ push word [bp-02ah] ; ff 76 d6 ; 0xf80ed
+ push word [bp-024h] ; ff 76 dc ; 0xf80f0
+ push word [bp-022h] ; ff 76 de ; 0xf80f3
+ push dx ; 52 ; 0xf80f6
+ push si ; 56 ; 0xf80f7
+ push word [bp-012h] ; ff 76 ee ; 0xf80f8
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf80fb
+ xor ah, ah ; 30 e4 ; 0xf80fe
+ push ax ; 50 ; 0xf8100
+ push 00c28h ; 68 28 0c ; 0xf8101
+ push strict byte 00004h ; 6a 04 ; 0xf8104
+ call 0190eh ; e8 05 98 ; 0xf8106
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xf8109
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf810c scsi.c:530
+ xor ah, ah ; 30 e4 ; 0xf810f
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8111
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf8114
+ mov bx, di ; 89 fb ; 0xf8117
+ add bx, ax ; 01 c3 ; 0xf8119
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf811b
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf811e
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf8122
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf8125
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf8129
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf812c
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8130
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf8133
+ mov al, byte [es:di+00252h] ; 26 8a 85 52 02 ; 0xf8137 scsi.c:533
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf813c scsi.c:534
+ add ah, 008h ; 80 c4 08 ; 0xf813f
+ mov bl, al ; 88 c3 ; 0xf8142
+ xor bh, bh ; 30 ff ; 0xf8144
+ add bx, di ; 01 fb ; 0xf8146
+ mov byte [es:bx+00253h], ah ; 26 88 a7 53 02 ; 0xf8148
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf814d scsi.c:535
+ mov byte [es:di+00252h], al ; 26 88 85 52 02 ; 0xf814f scsi.c:536
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf8154 scsi.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8157
+ mov es, ax ; 8e c0 ; 0xf815a
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf815c
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf815f scsi.c:540
+ mov byte [es:bx], al ; 26 88 07 ; 0xf8161 scsi.c:43
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf8164 scsi.c:543
+ jmp near 08200h ; e9 96 00 ; 0xf8167 scsi.c:545
+ mov bx, 00eeah ; bb ea 0e ; 0xf816a scsi.c:557
+ mov cx, ds ; 8c d9 ; 0xf816d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf816f
+ call 018cbh ; e8 56 97 ; 0xf8172
+ push word [bp-012h] ; ff 76 ee ; 0xf8175
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8178
+ xor ah, ah ; 30 e4 ; 0xf817b
+ push ax ; 50 ; 0xf817d
+ push 00c56h ; 68 56 0c ; 0xf817e
+ push strict byte 00004h ; 6a 04 ; 0xf8181
+ call 0190eh ; e8 88 97 ; 0xf8183
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8186
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8189 scsi.c:560
+ add AL, strict byte 008h ; 04 08 ; 0xf818c
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf818e
+ test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xf8191 scsi.c:562
+ je short 0819dh ; 74 05 ; 0xf8196
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf8198
+ jmp short 0819fh ; eb 02 ; 0xf819b
+ xor dx, dx ; 31 d2 ; 0xf819d
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf819f scsi.c:564
+ xor ah, ah ; 30 e4 ; 0xf81a2
+ sal ax, 002h ; c1 e0 02 ; 0xf81a4
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf81a7
+ mov bx, di ; 89 fb ; 0xf81aa
+ add bx, ax ; 01 c3 ; 0xf81ac
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf81ae
+ mov word [es:bx+00294h], ax ; 26 89 87 94 02 ; 0xf81b2
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf81b7 scsi.c:565
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xf81ba
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf81bf scsi.c:566
+ xor ah, ah ; 30 e4 ; 0xf81c2
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf81c4
+ mov bx, di ; 89 fb ; 0xf81c7
+ add bx, ax ; 01 c3 ; 0xf81c9
+ mov word [es:bx+022h], 00504h ; 26 c7 47 22 04 05 ; 0xf81cb
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf81d1 scsi.c:568
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf81d5 scsi.c:569
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf81db scsi.c:570
+ mov al, byte [es:di+00267h] ; 26 8a 85 67 02 ; 0xf81e0 scsi.c:573
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf81e5 scsi.c:574
+ add ah, 008h ; 80 c4 08 ; 0xf81e8
+ mov bl, al ; 88 c3 ; 0xf81eb
+ xor bh, bh ; 30 ff ; 0xf81ed
+ add bx, di ; 01 fb ; 0xf81ef
+ mov byte [es:bx+00268h], ah ; 26 88 a7 68 02 ; 0xf81f1
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf81f6 scsi.c:575
+ mov byte [es:di+00267h], al ; 26 88 85 67 02 ; 0xf81f8 scsi.c:576
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf81fd scsi.c:578
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8200 scsi.c:583
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf8203
+ mov byte [es:di+002a4h], al ; 26 88 85 a4 02 ; 0xf8206
+ inc word [bp-012h] ; ff 46 ee ; 0xf820b scsi.c:584
+ cmp word [bp-012h], strict byte 00010h ; 83 7e ee 10 ; 0xf820e
+ jl short 08217h ; 7c 03 ; 0xf8212
+ jmp near 0828fh ; e9 78 00 ; 0xf8214
+ mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xf8217
+ xor al, al ; 30 c0 ; 0xf821b
+ mov byte [bp-045h], al ; 88 46 bb ; 0xf821d
+ mov byte [bp-044h], al ; 88 46 bc ; 0xf8220
+ mov byte [bp-043h], al ; 88 46 bd ; 0xf8223
+ mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xf8226
+ mov byte [bp-041h], al ; 88 46 bf ; 0xf822a
+ push strict byte 00000h ; 6a 00 ; 0xf822d
+ push strict byte 00005h ; 6a 05 ; 0xf822f
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf8231
+ push SS ; 16 ; 0xf8235
+ push dx ; 52 ; 0xf8236
+ push strict byte 00006h ; 6a 06 ; 0xf8237
+ mov dl, byte [bp-012h] ; 8a 56 ee ; 0xf8239
+ xor dh, dh ; 30 f6 ; 0xf823c
+ mov cx, ss ; 8c d1 ; 0xf823e
+ lea bx, [bp-046h] ; 8d 5e ba ; 0xf8240
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8243
+ call 07912h ; e8 c8 f6 ; 0xf8247
+ test al, al ; 84 c0 ; 0xf824a
+ je short 0825ch ; 74 0e ; 0xf824c
+ push 00ba2h ; 68 a2 0b ; 0xf824e
+ push 00bc2h ; 68 c2 0b ; 0xf8251
+ push strict byte 00007h ; 6a 07 ; 0xf8254
+ call 0190eh ; e8 b5 96 ; 0xf8256
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf8259
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf825c
+ mov al, byte [es:di+002a4h] ; 26 8a 85 a4 02 ; 0xf825f
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf8264
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf8267
+ jne short 08278h ; 75 0a ; 0xf826c
+ test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xf826e
+ jne short 08278h ; 75 03 ; 0xf8273
+ jmp near 07e18h ; e9 a0 fb ; 0xf8275
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf8278
+ jne short 08200h ; 75 81 ; 0xf827d
+ mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xf827f
+ and AL, strict byte 01fh ; 24 1f ; 0xf8283
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf8285
+ jne short 0828ch ; 75 03 ; 0xf8287
+ jmp near 0816ah ; e9 de fe ; 0xf8289
+ jmp near 08200h ; e9 71 ff ; 0xf828c
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf828f scsi.c:585
+ pop di ; 5f ; 0xf8292
+ pop si ; 5e ; 0xf8293
+ pop dx ; 5a ; 0xf8294
+ pop cx ; 59 ; 0xf8295
+ pop bx ; 5b ; 0xf8296
+ pop bp ; 5d ; 0xf8297
+ retn ; c3 ; 0xf8298
+ ; disGetNextSymbol 0xf8299 LB 0x303f -> off=0x0 cb=000000000000002a uValue=00000000000f6c99 'scsi_pci_init'
+scsi_pci_init: ; 0xf8299 LB 0x2a
+ push bp ; 55 ; 0xf8299 scsi.c:587
+ mov bp, sp ; 89 e5 ; 0xf829a
+ push bx ; 53 ; 0xf829c
+ push cx ; 51 ; 0xf829d
+ call 0acf9h ; e8 58 2a ; 0xf829e scsi.c:591
+ mov bx, ax ; 89 c3 ; 0xf82a1
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf82a3 scsi.c:592
+ je short 082bch ; 74 14 ; 0xf82a6
+ mov dl, bl ; 88 da ; 0xf82a8 scsi.c:599
+ xor dh, dh ; 30 f6 ; 0xf82aa
+ shr bx, 008h ; c1 eb 08 ; 0xf82ac
+ mov al, bl ; 88 d8 ; 0xf82af
+ xor ah, ah ; 30 e4 ; 0xf82b1
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf82b3
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf82b6
+ call 0adc2h ; e8 06 2b ; 0xf82b9
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf82bc scsi.c:600
+ pop cx ; 59 ; 0xf82bf
+ pop bx ; 5b ; 0xf82c0
+ pop bp ; 5d ; 0xf82c1
+ retn ; c3 ; 0xf82c2
+ ; disGetNextSymbol 0xf82c3 LB 0x3015 -> off=0x0 cb=0000000000000081 uValue=00000000000f6cc3 'scsi_init'
+scsi_init: ; 0xf82c3 LB 0x81
+ push bp ; 55 ; 0xf82c3 scsi.c:605
+ mov bp, sp ; 89 e5 ; 0xf82c4
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf82c6 scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf82c9
+ mov es, ax ; 8e c0 ; 0xf82cc
+ mov es, [es:bx] ; 26 8e 07 ; 0xf82ce
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf82d1 scsi.c:49
+ mov byte [es:bx+002a4h], 000h ; 26 c6 87 a4 02 00 ; 0xf82d4 scsi.c:612
+ mov AL, strict byte 055h ; b0 55 ; 0xf82da scsi.c:617
+ mov dx, 00432h ; ba 32 04 ; 0xf82dc
+ out DX, AL ; ee ; 0xf82df
+ in AL, DX ; ec ; 0xf82e0 scsi.c:618
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf82e1
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf82e3 scsi.c:620
+ jne short 082fch ; 75 15 ; 0xf82e5
+ xor al, al ; 30 c0 ; 0xf82e7 scsi.c:624
+ mov dx, 00433h ; ba 33 04 ; 0xf82e9
+ out DX, AL ; ee ; 0xf82ec
+ mov ax, 00430h ; b8 30 04 ; 0xf82ed scsi.c:625
+ call 07df2h ; e8 ff fa ; 0xf82f0
+ mov dx, 01040h ; ba 40 10 ; 0xf82f3 scsi.c:626
+ mov ax, 0104bh ; b8 4b 10 ; 0xf82f6
+ call 08299h ; e8 9d ff ; 0xf82f9
+ mov AL, strict byte 055h ; b0 55 ; 0xf82fc scsi.c:634
+ mov dx, 00436h ; ba 36 04 ; 0xf82fe
+ out DX, AL ; ee ; 0xf8301
+ in AL, DX ; ec ; 0xf8302 scsi.c:635
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf8303
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf8305 scsi.c:637
+ jne short 0831eh ; 75 15 ; 0xf8307
+ xor al, al ; 30 c0 ; 0xf8309 scsi.c:641
+ mov dx, 00437h ; ba 37 04 ; 0xf830b
+ out DX, AL ; ee ; 0xf830e
+ mov ax, 00434h ; b8 34 04 ; 0xf830f scsi.c:642
+ call 07df2h ; e8 dd fa ; 0xf8312
+ mov dx, strict word 00030h ; ba 30 00 ; 0xf8315 scsi.c:643
+ mov ax, 01000h ; b8 00 10 ; 0xf8318
+ call 08299h ; e8 7b ff ; 0xf831b
+ mov AL, strict byte 055h ; b0 55 ; 0xf831e scsi.c:651
+ mov dx, 0043ah ; ba 3a 04 ; 0xf8320
+ out DX, AL ; ee ; 0xf8323
+ in AL, DX ; ec ; 0xf8324 scsi.c:652
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf8325
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf8327 scsi.c:654
+ jne short 08340h ; 75 15 ; 0xf8329
+ xor al, al ; 30 c0 ; 0xf832b scsi.c:658
+ mov dx, 0043bh ; ba 3b 04 ; 0xf832d
+ out DX, AL ; ee ; 0xf8330
+ mov ax, 00438h ; b8 38 04 ; 0xf8331 scsi.c:659
+ call 07df2h ; e8 bb fa ; 0xf8334
+ mov dx, strict word 00054h ; ba 54 00 ; 0xf8337 scsi.c:660
+ mov ax, 01000h ; b8 00 10 ; 0xf833a
+ call 08299h ; e8 59 ff ; 0xf833d
+ mov sp, bp ; 89 ec ; 0xf8340 scsi.c:666
+ pop bp ; 5d ; 0xf8342
+ retn ; c3 ; 0xf8343
+ ; disGetNextSymbol 0xf8344 LB 0x2f94 -> off=0x0 cb=000000000000001c uValue=00000000000f6d44 'ahci_ctrl_extract_bits'
+ahci_ctrl_extract_bits: ; 0xf8344 LB 0x1c
+ push si ; 56 ; 0xf8344 ahci.c:279
+ push bp ; 55 ; 0xf8345
+ mov bp, sp ; 89 e5 ; 0xf8346
+ mov si, ax ; 89 c6 ; 0xf8348
+ and ax, bx ; 21 d8 ; 0xf834a ahci.c:281
+ and dx, cx ; 21 ca ; 0xf834c
+ mov cl, byte [bp+006h] ; 8a 4e 06 ; 0xf834e
+ xor ch, ch ; 30 ed ; 0xf8351
+ jcxz 0835bh ; e3 06 ; 0xf8353
+ shr dx, 1 ; d1 ea ; 0xf8355
+ rcr ax, 1 ; d1 d8 ; 0xf8357
+ loop 08355h ; e2 fa ; 0xf8359
+ pop bp ; 5d ; 0xf835b ahci.c:282
+ pop si ; 5e ; 0xf835c
+ retn 00002h ; c2 02 00 ; 0xf835d
+ ; disGetNextSymbol 0xf8360 LB 0x2f78 -> off=0x0 cb=000000000000001e uValue=00000000000f6d60 'ahci_addr_to_phys'
+ahci_addr_to_phys: ; 0xf8360 LB 0x1e
+ push bx ; 53 ; 0xf8360 ahci.c:287
+ push cx ; 51 ; 0xf8361
+ push bp ; 55 ; 0xf8362
+ mov bp, sp ; 89 e5 ; 0xf8363
+ mov bx, ax ; 89 c3 ; 0xf8365
+ mov ax, dx ; 89 d0 ; 0xf8367
+ xor dx, dx ; 31 d2 ; 0xf8369 ahci.c:289
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf836b
+ sal ax, 1 ; d1 e0 ; 0xf836e
+ rcl dx, 1 ; d1 d2 ; 0xf8370
+ loop 0836eh ; e2 fa ; 0xf8372
+ xor cx, cx ; 31 c9 ; 0xf8374
+ add ax, bx ; 01 d8 ; 0xf8376
+ adc dx, cx ; 11 ca ; 0xf8378
+ pop bp ; 5d ; 0xf837a ahci.c:290
+ pop cx ; 59 ; 0xf837b
+ pop bx ; 5b ; 0xf837c
+ retn ; c3 ; 0xf837d
+ ; disGetNextSymbol 0xf837e LB 0x2f5a -> off=0x0 cb=0000000000000156 uValue=00000000000f6d7e 'ahci_port_cmd_sync'
+ahci_port_cmd_sync: ; 0xf837e LB 0x156
+ push bp ; 55 ; 0xf837e ahci.c:295
+ mov bp, sp ; 89 e5 ; 0xf837f
+ push cx ; 51 ; 0xf8381
+ push si ; 56 ; 0xf8382
+ push di ; 57 ; 0xf8383
+ push ax ; 50 ; 0xf8384
+ mov si, ax ; 89 c6 ; 0xf8385
+ mov cx, dx ; 89 d1 ; 0xf8387
+ mov dl, bl ; 88 da ; 0xf8389
+ mov es, cx ; 8e c1 ; 0xf838b ahci.c:300
+ mov al, byte [es:si+00262h] ; 26 8a 84 62 02 ; 0xf838d
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf8392
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8395 ahci.c:301
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf839a ahci.c:303
+ jne short 083a1h ; 75 03 ; 0xf839c
+ jmp near 084cch ; e9 2b 01 ; 0xf839e
+ mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf83a1 ahci.c:306
+ xor ah, ah ; 30 e4 ; 0xf83a6
+ xor di, di ; 31 ff ; 0xf83a8
+ or di, 00080h ; 81 cf 80 00 ; 0xf83aa
+ xor dh, dh ; 30 f6 ; 0xf83ae
+ or di, dx ; 09 d7 ; 0xf83b0
+ mov word [es:si], di ; 26 89 3c ; 0xf83b2
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf83b5
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf83b9 ahci.c:307
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf83bf
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf83c5 ahci.c:308
+ mov dx, cx ; 89 ca ; 0xf83c9
+ call 08360h ; e8 92 ff ; 0xf83cb
+ mov es, cx ; 8e c1 ; 0xf83ce
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf83d0
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf83d4
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf83d8 ahci.c:311
+ xor ah, ah ; 30 e4 ; 0xf83db
+ mov di, ax ; 89 c7 ; 0xf83dd
+ sal di, 007h ; c1 e7 07 ; 0xf83df
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf83e2
+ xor cx, cx ; 31 c9 ; 0xf83e6 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf83e8
+ xchg cx, ax ; 91 ; 0xf83ea
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf83eb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf83ef
+ out DX, eax ; 66 ef ; 0xf83f1
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf83f3 ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf83f6
+ in eax, DX ; 66 ed ; 0xf83f8
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf83fa
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf83fc
+ xchg dx, ax ; 92 ; 0xf8400
+ or AL, strict byte 011h ; 0c 11 ; 0xf8401
+ mov cx, dx ; 89 d1 ; 0xf8403
+ mov dx, si ; 89 f2 ; 0xf8405
+ xchg cx, ax ; 91 ; 0xf8407
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8408
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf840c
+ out DX, eax ; 66 ef ; 0xf840e
+ lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf8410 ahci.c:315
+ cwd ; 99 ; 0xf8414
+ mov cx, dx ; 89 d1 ; 0xf8415
+ mov dx, bx ; 89 da ; 0xf8417
+ xchg cx, ax ; 91 ; 0xf8419
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf841a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf841e
+ out DX, eax ; 66 ef ; 0xf8420
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8422
+ xor cx, cx ; 31 c9 ; 0xf8425
+ mov dx, si ; 89 f2 ; 0xf8427
+ xchg cx, ax ; 91 ; 0xf8429
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf842a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf842e
+ out DX, eax ; 66 ef ; 0xf8430
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8432 ahci.c:319
+ xor ah, ah ; 30 e4 ; 0xf8435
+ sal ax, 007h ; c1 e0 07 ; 0xf8437
+ add ax, 00110h ; 05 10 01 ; 0xf843a
+ xor cx, cx ; 31 c9 ; 0xf843d ahci.c:271
+ mov dx, bx ; 89 da ; 0xf843f
+ xchg cx, ax ; 91 ; 0xf8441
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8442
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8446
+ out DX, eax ; 66 ef ; 0xf8448
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf844a ahci.c:272
+ in eax, DX ; 66 ed ; 0xf844d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf844f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8451
+ xchg dx, ax ; 92 ; 0xf8455
+ test dh, 040h ; f6 c6 40 ; 0xf8456
+ jne short 0845fh ; 75 04 ; 0xf8459
+ test AL, strict byte 001h ; a8 01 ; 0xf845b
+ je short 08463h ; 74 04 ; 0xf845d
+ mov AL, strict byte 001h ; b0 01 ; 0xf845f
+ jmp short 08465h ; eb 02 ; 0xf8461
+ xor al, al ; 30 c0 ; 0xf8463
+ test al, al ; 84 c0 ; 0xf8465 ahci.c:273
+ je short 08432h ; 74 c9 ; 0xf8467
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8469 ahci.c:325
+ xor ah, ah ; 30 e4 ; 0xf846c
+ mov di, ax ; 89 c7 ; 0xf846e
+ sal di, 007h ; c1 e7 07 ; 0xf8470
+ lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf8473
+ xor cx, cx ; 31 c9 ; 0xf8477 ahci.c:252
+ 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:253
+ 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 001h ; 0c 01 ; 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+00118h] ; 8d 85 18 01 ; 0xf84a1 ahci.c:329
+ xor cx, cx ; 31 c9 ; 0xf84a5 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf84a7
+ xchg cx, ax ; 91 ; 0xf84a9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84aa
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84ae
+ out DX, eax ; 66 ef ; 0xf84b0
+ mov dx, si ; 89 f2 ; 0xf84b2 ahci.c:262
+ in eax, DX ; 66 ed ; 0xf84b4
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf84b6
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf84b8
+ xchg dx, ax ; 92 ; 0xf84bc
+ and AL, strict byte 0feh ; 24 fe ; 0xf84bd
+ mov cx, dx ; 89 d1 ; 0xf84bf
+ mov dx, si ; 89 f2 ; 0xf84c1
+ xchg cx, ax ; 91 ; 0xf84c3
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84c4
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84c8
+ out DX, eax ; 66 ef ; 0xf84ca
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf84cc ahci.c:335
+ pop di ; 5f ; 0xf84cf
+ pop si ; 5e ; 0xf84d0
+ pop cx ; 59 ; 0xf84d1
+ pop bp ; 5d ; 0xf84d2
+ retn ; c3 ; 0xf84d3
+ ; disGetNextSymbol 0xf84d4 LB 0x2e04 -> off=0x0 cb=0000000000000267 uValue=00000000000f6ed4 'ahci_cmd_data'
+ahci_cmd_data: ; 0xf84d4 LB 0x267
+ push bp ; 55 ; 0xf84d4 ahci.c:340
+ mov bp, sp ; 89 e5 ; 0xf84d5
+ push cx ; 51 ; 0xf84d7
+ push si ; 56 ; 0xf84d8
+ push di ; 57 ; 0xf84d9
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf84da
+ push ax ; 50 ; 0xf84dd
+ push dx ; 52 ; 0xf84de
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf84df
+ xor di, di ; 31 ff ; 0xf84e2 ahci.c:342
+ mov es, dx ; 8e c2 ; 0xf84e4
+ mov bx, ax ; 89 c3 ; 0xf84e6
+ mov ax, word [es:bx+002aeh] ; 26 8b 87 ae 02 ; 0xf84e8
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf84ed
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf84f0
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf84f3
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf84f6 ahci.c:343
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf84fa
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf84fd ahci.c:344
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf8501
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8504 ahci.c:347
+ xor bx, bx ; 31 db ; 0xf8507
+ mov ax, 00080h ; b8 80 00 ; 0xf8509
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf850c
+ call 0afb0h ; e8 9e 2a ; 0xf850f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8512 ahci.c:350
+ mov word [es:di+00080h], 08027h ; 26 c7 85 80 00 27 80 ; 0xf8515
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf851c ahci.c:352
+ mov byte [es:di+00082h], al ; 26 88 85 82 00 ; 0xf851f
+ mov byte [es:di+00083h], 000h ; 26 c6 85 83 00 00 ; 0xf8524 ahci.c:353
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf852a ahci.c:355
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf852d
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8530
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8533
+ mov byte [es:di+00084h], al ; 26 88 85 84 00 ; 0xf8536
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf853b ahci.c:356
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf853e
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8542
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8546
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8549
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf854d
+ mov si, strict word 00008h ; be 08 00 ; 0xf8550
+ call 0af90h ; e8 3a 2a ; 0xf8553
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8556
+ mov byte [es:di+00085h], dl ; 26 88 95 85 00 ; 0xf8559
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf855e ahci.c:357
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8561
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8564
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8568
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf856c
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf856f
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8573
+ mov si, strict word 00010h ; be 10 00 ; 0xf8576
+ call 0af90h ; e8 14 2a ; 0xf8579
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf857c
+ mov byte [es:di+00086h], dl ; 26 88 95 86 00 ; 0xf857f
+ mov byte [es:di+00087h], 040h ; 26 c6 85 87 00 40 ; 0xf8584 ahci.c:358
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf858a ahci.c:360
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf858d
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8590
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8594
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8598
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf859b
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf859f
+ mov si, strict word 00018h ; be 18 00 ; 0xf85a2
+ call 0af90h ; e8 e8 29 ; 0xf85a5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85a8
+ mov byte [es:di+00088h], dl ; 26 88 95 88 00 ; 0xf85ab
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf85b0 ahci.c:361
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85b3
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf85b6
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf85ba
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf85be
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf85c1
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf85c5
+ mov si, strict word 00020h ; be 20 00 ; 0xf85c8
+ call 0af90h ; e8 c2 29 ; 0xf85cb
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85ce
+ mov byte [es:di+00089h], dl ; 26 88 95 89 00 ; 0xf85d1
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf85d6 ahci.c:362
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85d9
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf85dc
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf85e0
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf85e4
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf85e7
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf85eb
+ mov si, strict word 00028h ; be 28 00 ; 0xf85ee
+ call 0af90h ; e8 9c 29 ; 0xf85f1
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85f4
+ mov byte [es:di+0008ah], dl ; 26 88 95 8a 00 ; 0xf85f7
+ mov byte [es:di+0008bh], 000h ; 26 c6 85 8b 00 00 ; 0xf85fc ahci.c:363
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf8602 ahci.c:365
+ mov byte [es:di+0008ch], al ; 26 88 85 8c 00 ; 0xf8605
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf860a ahci.c:366
+ shr ax, 008h ; c1 e8 08 ; 0xf860d
+ mov byte [es:di+0008dh], al ; 26 88 85 8d 00 ; 0xf8610
+ mov word [es:di+00276h], strict word 00010h ; 26 c7 85 76 02 10 00 ; 0xf8615 ahci.c:369
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf861c ahci.c:372
+ xor dx, dx ; 31 d2 ; 0xf861f
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8621
+ xor cx, cx ; 31 c9 ; 0xf8624
+ call 0af40h ; e8 17 29 ; 0xf8626
+ push dx ; 52 ; 0xf8629
+ push ax ; 50 ; 0xf862a
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf862b
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf862e
+ mov bx, word [es:bx+008h] ; 26 8b 5f 08 ; 0xf8631
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8635
+ mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf8638
+ mov ax, 0026ah ; b8 6a 02 ; 0xf863c
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf863f
+ call 0ae8dh ; e8 48 28 ; 0xf8642
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8645 ahci.c:375
+ mov dx, word [es:di+0027eh] ; 26 8b 95 7e 02 ; 0xf8648
+ add dx, strict byte 0ffffh ; 83 c2 ff ; 0xf864d
+ mov ax, word [es:di+00280h] ; 26 8b 85 80 02 ; 0xf8650
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf8655
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf8658
+ xor bh, bh ; 30 ff ; 0xf865d
+ sal bx, 004h ; c1 e3 04 ; 0xf865f
+ mov word [es:bx+0010ch], dx ; 26 89 97 0c 01 ; 0xf8662
+ mov word [es:bx+0010eh], ax ; 26 89 87 0e 01 ; 0xf8667
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf866c ahci.c:376
+ xor bh, bh ; 30 ff ; 0xf8671
+ sal bx, 004h ; c1 e3 04 ; 0xf8673
+ mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf8676
+ mov dx, word [es:di+0027ch] ; 26 8b 95 7c 02 ; 0xf867b
+ mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf8680
+ mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf8685
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf868a ahci.c:377
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf868f ahci.c:379
+ mov bx, si ; 89 f3 ; 0xf8692
+ mov ax, word [es:bx+020h] ; 26 8b 47 20 ; 0xf8694
+ test ax, ax ; 85 c0 ; 0xf8698
+ je short 086d7h ; 74 3b ; 0xf869a
+ dec ax ; 48 ; 0xf869c ahci.c:380
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf869d
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86a0
+ xor bh, bh ; 30 ff ; 0xf86a5
+ sal bx, 004h ; c1 e3 04 ; 0xf86a7
+ mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf86aa
+ mov word [es:bx+0010eh], di ; 26 89 bf 0e 01 ; 0xf86af
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86b4 ahci.c:381
+ xor bh, bh ; 30 ff ; 0xf86b9
+ sal bx, 004h ; c1 e3 04 ; 0xf86bb
+ mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf86be
+ mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf86c3
+ mov word [es:bx+00100h], dx ; 26 89 97 00 01 ; 0xf86c8
+ mov word [es:bx+00102h], ax ; 26 89 87 02 01 ; 0xf86cd
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf86d2 ahci.c:382
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf86d7 ahci.c:397
+ cmp AL, strict byte 035h ; 3c 35 ; 0xf86da
+ jne short 086e4h ; 75 06 ; 0xf86dc
+ mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf86de ahci.c:398
+ jmp short 086fbh ; eb 17 ; 0xf86e2 ahci.c:399
+ cmp AL, strict byte 0a0h ; 3c a0 ; 0xf86e4
+ jne short 086f7h ; 75 0f ; 0xf86e6
+ or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf86e8 ahci.c:400
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf86ec ahci.c:401
+ or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf86ef
+ jmp short 086fbh ; eb 04 ; 0xf86f5 ahci.c:402
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf86f7 ahci.c:403
+ or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf86fb ahci.c:405
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf86ff ahci.c:407
+ xor bh, bh ; 30 ff ; 0xf8702
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8704
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8707
+ call 0837eh ; e8 71 fc ; 0xf870a
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf870d ahci.c:410
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8710
+ add bx, 00240h ; 81 c3 40 02 ; 0xf8713
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8717 ahci.c:414
+ add ax, 0026ah ; 05 6a 02 ; 0xf871a
+ mov dx, cx ; 89 ca ; 0xf871d
+ call 0af04h ; e8 e2 27 ; 0xf871f
+ mov es, cx ; 8e c1 ; 0xf8722 ahci.c:415
+ mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf8724
+ test al, al ; 84 c0 ; 0xf8728
+ je short 08731h ; 74 05 ; 0xf872a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf872c
+ jmp short 08733h ; eb 02 ; 0xf872f
+ xor ah, ah ; 30 e4 ; 0xf8731
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8733 ahci.c:416
+ pop di ; 5f ; 0xf8736
+ pop si ; 5e ; 0xf8737
+ pop cx ; 59 ; 0xf8738
+ pop bp ; 5d ; 0xf8739
+ retn ; c3 ; 0xf873a
+ ; disGetNextSymbol 0xf873b LB 0x2b9d -> off=0x0 cb=0000000000000180 uValue=00000000000f713b 'ahci_port_deinit_current'
+ahci_port_deinit_current: ; 0xf873b LB 0x180
+ push bp ; 55 ; 0xf873b ahci.c:421
+ mov bp, sp ; 89 e5 ; 0xf873c
+ push bx ; 53 ; 0xf873e
+ push cx ; 51 ; 0xf873f
+ push si ; 56 ; 0xf8740
+ push di ; 57 ; 0xf8741
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8742
+ mov di, ax ; 89 c7 ; 0xf8745
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf8747
+ mov es, dx ; 8e c2 ; 0xf874a ahci.c:426
+ mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf874c
+ mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf8751 ahci.c:427
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf8756
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf8759 ahci.c:429
+ je short 087bch ; 74 5f ; 0xf875b
+ xor ah, ah ; 30 e4 ; 0xf875d ahci.c:432
+ sal ax, 007h ; c1 e0 07 ; 0xf875f
+ add ax, 00118h ; 05 18 01 ; 0xf8762
+ xor cx, cx ; 31 c9 ; 0xf8765 ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf8767
+ xchg cx, ax ; 91 ; 0xf8769
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf876a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf876e
+ out DX, eax ; 66 ef ; 0xf8770
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8772 ahci.c:262
+ mov dx, bx ; 89 da ; 0xf8775
+ in eax, DX ; 66 ed ; 0xf8777
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8779
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf877b
+ xchg dx, ax ; 92 ; 0xf877f
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8780
+ mov cx, dx ; 89 d1 ; 0xf8782
+ mov dx, bx ; 89 da ; 0xf8784
+ xchg cx, ax ; 91 ; 0xf8786
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8787
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf878b
+ out DX, eax ; 66 ef ; 0xf878d
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf878f ahci.c:435
+ xor ah, ah ; 30 e4 ; 0xf8792
+ sal ax, 007h ; c1 e0 07 ; 0xf8794
+ add ax, 00118h ; 05 18 01 ; 0xf8797
+ xor cx, cx ; 31 c9 ; 0xf879a ahci.c:271
+ mov dx, si ; 89 f2 ; 0xf879c
+ xchg cx, ax ; 91 ; 0xf879e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf879f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87a3
+ out DX, eax ; 66 ef ; 0xf87a5
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf87a7 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf87aa
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf87ac
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf87ae
+ xchg dx, ax ; 92 ; 0xf87b2
+ test ax, 0c011h ; a9 11 c0 ; 0xf87b3
+ je short 087bfh ; 74 07 ; 0xf87b6
+ mov AL, strict byte 001h ; b0 01 ; 0xf87b8
+ jmp short 087c1h ; eb 05 ; 0xf87ba
+ jmp near 088b2h ; e9 f3 00 ; 0xf87bc
+ xor al, al ; 30 c0 ; 0xf87bf
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf87c1 ahci.c:273
+ je short 0878fh ; 74 ca ; 0xf87c3
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf87c5 ahci.c:446
+ xor bx, bx ; 31 db ; 0xf87c8
+ mov ax, di ; 89 f8 ; 0xf87ca
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf87cc
+ call 0afb0h ; e8 de 27 ; 0xf87cf
+ lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf87d2 ahci.c:447
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf87d6
+ xor bx, bx ; 31 db ; 0xf87d9
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf87db
+ call 0afb0h ; e8 cf 27 ; 0xf87de
+ lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf87e1 ahci.c:448
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf87e5
+ xor bx, bx ; 31 db ; 0xf87e8
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf87ea
+ call 0afb0h ; e8 c0 27 ; 0xf87ed
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf87f0 ahci.c:450
+ xor ah, ah ; 30 e4 ; 0xf87f3
+ sal ax, 007h ; c1 e0 07 ; 0xf87f5
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf87f8
+ add ax, 00108h ; 05 08 01 ; 0xf87fb
+ cwd ; 99 ; 0xf87fe
+ mov cx, dx ; 89 d1 ; 0xf87ff
+ mov dx, si ; 89 f2 ; 0xf8801
+ xchg cx, ax ; 91 ; 0xf8803
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8804
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8808
+ out DX, eax ; 66 ef ; 0xf880a
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf880c
+ xor ax, ax ; 31 c0 ; 0xf880f
+ xor cx, cx ; 31 c9 ; 0xf8811
+ mov dx, bx ; 89 da ; 0xf8813
+ xchg cx, ax ; 91 ; 0xf8815
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8816
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf881a
+ out DX, eax ; 66 ef ; 0xf881c
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf881e ahci.c:451
+ add ax, 0010ch ; 05 0c 01 ; 0xf8821
+ cwd ; 99 ; 0xf8824
+ mov cx, dx ; 89 d1 ; 0xf8825
+ mov dx, si ; 89 f2 ; 0xf8827
+ xchg cx, ax ; 91 ; 0xf8829
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf882a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf882e
+ out DX, eax ; 66 ef ; 0xf8830
+ xor ax, ax ; 31 c0 ; 0xf8832
+ xor cx, cx ; 31 c9 ; 0xf8834
+ mov dx, bx ; 89 da ; 0xf8836
+ xchg cx, ax ; 91 ; 0xf8838
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8839
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf883d
+ out DX, eax ; 66 ef ; 0xf883f
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf8841 ahci.c:453
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf8844
+ cwd ; 99 ; 0xf8846
+ mov cx, dx ; 89 d1 ; 0xf8847
+ mov dx, si ; 89 f2 ; 0xf8849
+ xchg cx, ax ; 91 ; 0xf884b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf884c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8850
+ out DX, eax ; 66 ef ; 0xf8852
+ xor ax, ax ; 31 c0 ; 0xf8854
+ xor cx, cx ; 31 c9 ; 0xf8856
+ mov dx, bx ; 89 da ; 0xf8858
+ xchg cx, ax ; 91 ; 0xf885a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf885b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf885f
+ out DX, eax ; 66 ef ; 0xf8861
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf8863 ahci.c:454
+ add ax, 00104h ; 05 04 01 ; 0xf8866
+ cwd ; 99 ; 0xf8869
+ mov cx, dx ; 89 d1 ; 0xf886a
+ mov dx, si ; 89 f2 ; 0xf886c
+ xchg cx, ax ; 91 ; 0xf886e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf886f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8873
+ out DX, eax ; 66 ef ; 0xf8875
+ xor ax, ax ; 31 c0 ; 0xf8877
+ xor cx, cx ; 31 c9 ; 0xf8879
+ mov dx, bx ; 89 da ; 0xf887b
+ xchg cx, ax ; 91 ; 0xf887d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf887e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8882
+ out DX, eax ; 66 ef ; 0xf8884
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf8886 ahci.c:457
+ add ax, 00114h ; 05 14 01 ; 0xf8889
+ cwd ; 99 ; 0xf888c
+ mov cx, dx ; 89 d1 ; 0xf888d
+ mov dx, si ; 89 f2 ; 0xf888f
+ xchg cx, ax ; 91 ; 0xf8891
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8892
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8896
+ out DX, eax ; 66 ef ; 0xf8898
+ xor ax, ax ; 31 c0 ; 0xf889a
+ xor cx, cx ; 31 c9 ; 0xf889c
+ mov dx, bx ; 89 da ; 0xf889e
+ xchg cx, ax ; 91 ; 0xf88a0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88a1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88a5
+ out DX, eax ; 66 ef ; 0xf88a7
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf88a9 ahci.c:459
+ mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf88ac
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf88b2 ahci.c:461
+ pop di ; 5f ; 0xf88b5
+ pop si ; 5e ; 0xf88b6
+ pop cx ; 59 ; 0xf88b7
+ pop bx ; 5b ; 0xf88b8
+ pop bp ; 5d ; 0xf88b9
+ retn ; c3 ; 0xf88ba
+ ; disGetNextSymbol 0xf88bb LB 0x2a1d -> off=0x0 cb=000000000000024d uValue=00000000000f72bb 'ahci_port_init'
+ahci_port_init: ; 0xf88bb LB 0x24d
+ push bp ; 55 ; 0xf88bb ahci.c:467
+ mov bp, sp ; 89 e5 ; 0xf88bc
+ push cx ; 51 ; 0xf88be
+ push si ; 56 ; 0xf88bf
+ push di ; 57 ; 0xf88c0
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf88c1
+ mov si, ax ; 89 c6 ; 0xf88c4
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf88c6
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf88c9
+ call 0873bh ; e8 6c fe ; 0xf88cc ahci.c:470
+ mov al, bl ; 88 d8 ; 0xf88cf ahci.c:473
+ xor ah, ah ; 30 e4 ; 0xf88d1
+ sal ax, 007h ; c1 e0 07 ; 0xf88d3
+ add ax, 00118h ; 05 18 01 ; 0xf88d6
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf88d9 ahci.c:259
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf88dc
+ xor cx, cx ; 31 c9 ; 0xf88e1 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf88e3
+ xchg cx, ax ; 91 ; 0xf88e5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88e6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88ea
+ out DX, eax ; 66 ef ; 0xf88ec
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf88ee ahci.c:262
+ mov dx, bx ; 89 da ; 0xf88f1
+ in eax, DX ; 66 ed ; 0xf88f3
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf88f5
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf88f7
+ xchg dx, ax ; 92 ; 0xf88fb
+ and AL, strict byte 0eeh ; 24 ee ; 0xf88fc
+ mov cx, dx ; 89 d1 ; 0xf88fe
+ mov dx, bx ; 89 da ; 0xf8900
+ xchg cx, ax ; 91 ; 0xf8902
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8903
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8907
+ out DX, eax ; 66 ef ; 0xf8909
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf890b ahci.c:476
+ xor ah, ah ; 30 e4 ; 0xf890e
+ sal ax, 007h ; c1 e0 07 ; 0xf8910
+ add ax, 00118h ; 05 18 01 ; 0xf8913
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8916 ahci.c:269
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8919
+ xor cx, cx ; 31 c9 ; 0xf891e ahci.c:271
+ mov dx, bx ; 89 da ; 0xf8920
+ xchg cx, ax ; 91 ; 0xf8922
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8923
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8927
+ out DX, eax ; 66 ef ; 0xf8929
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf892b ahci.c:272
+ in eax, DX ; 66 ed ; 0xf892e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8930
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8932
+ xchg dx, ax ; 92 ; 0xf8936
+ test ax, 0c011h ; a9 11 c0 ; 0xf8937
+ je short 08940h ; 74 04 ; 0xf893a
+ mov AL, strict byte 001h ; b0 01 ; 0xf893c
+ jmp short 08942h ; eb 02 ; 0xf893e
+ xor al, al ; 30 c0 ; 0xf8940
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8942 ahci.c:273
+ je short 0890bh ; 74 c5 ; 0xf8944
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf8946 ahci.c:487
+ xor bx, bx ; 31 db ; 0xf8949
+ mov ax, si ; 89 f0 ; 0xf894b
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf894d
+ call 0afb0h ; e8 5d 26 ; 0xf8950
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf8953 ahci.c:488
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8957
+ xor bx, bx ; 31 db ; 0xf895a
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf895c
+ call 0afb0h ; e8 4e 26 ; 0xf895f
+ lea di, [si+00200h] ; 8d bc 00 02 ; 0xf8962 ahci.c:489
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf8966
+ xor bx, bx ; 31 db ; 0xf8969
+ mov ax, di ; 89 f8 ; 0xf896b
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf896d
+ call 0afb0h ; e8 3d 26 ; 0xf8970
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf8973 ahci.c:493
+ xor bh, bh ; 30 ff ; 0xf8976
+ sal bx, 007h ; c1 e3 07 ; 0xf8978
+ lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf897b
+ cwd ; 99 ; 0xf897f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8980
+ mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf8983
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf8988
+ mov cx, dx ; 89 d1 ; 0xf898b
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf898d
+ xchg cx, ax ; 91 ; 0xf8990
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8991
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8995
+ out DX, eax ; 66 ef ; 0xf8997
+ mov ax, di ; 89 f8 ; 0xf8999
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf899b
+ call 08360h ; e8 bf f9 ; 0xf899e
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89a1
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89a4
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf89a9
+ mov cx, dx ; 89 d1 ; 0xf89ac
+ mov dx, di ; 89 fa ; 0xf89ae
+ xchg cx, ax ; 91 ; 0xf89b0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89b1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89b5
+ out DX, eax ; 66 ef ; 0xf89b7
+ lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf89b9 ahci.c:494
+ cwd ; 99 ; 0xf89bd
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89be
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89c1
+ mov cx, dx ; 89 d1 ; 0xf89c6
+ mov dx, di ; 89 fa ; 0xf89c8
+ xchg cx, ax ; 91 ; 0xf89ca
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89cb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89cf
+ out DX, eax ; 66 ef ; 0xf89d1
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89d3
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf89d6
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf89db
+ xor ax, ax ; 31 c0 ; 0xf89de
+ xor cx, cx ; 31 c9 ; 0xf89e0
+ xchg cx, ax ; 91 ; 0xf89e2
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89e3
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89e7
+ out DX, eax ; 66 ef ; 0xf89e9
+ lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf89eb ahci.c:497
+ cwd ; 99 ; 0xf89ef
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89f0
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89f3
+ mov cx, dx ; 89 d1 ; 0xf89f8
+ mov dx, di ; 89 fa ; 0xf89fa
+ xchg cx, ax ; 91 ; 0xf89fc
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89fd
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a01
+ out DX, eax ; 66 ef ; 0xf8a03
+ mov ax, si ; 89 f0 ; 0xf8a05
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a07
+ call 08360h ; e8 53 f9 ; 0xf8a0a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a0d
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a10
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8a15
+ mov cx, dx ; 89 d1 ; 0xf8a18
+ mov dx, di ; 89 fa ; 0xf8a1a
+ xchg cx, ax ; 91 ; 0xf8a1c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a1d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a21
+ out DX, eax ; 66 ef ; 0xf8a23
+ lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8a25 ahci.c:498
+ cwd ; 99 ; 0xf8a29
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a2a
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a2d
+ mov cx, dx ; 89 d1 ; 0xf8a32
+ mov dx, di ; 89 fa ; 0xf8a34
+ xchg cx, ax ; 91 ; 0xf8a36
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a37
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a3b
+ out DX, eax ; 66 ef ; 0xf8a3d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a3f
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a42
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a47
+ xor ax, ax ; 31 c0 ; 0xf8a4a
+ xor cx, cx ; 31 c9 ; 0xf8a4c
+ xchg cx, ax ; 91 ; 0xf8a4e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a4f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a53
+ out DX, eax ; 66 ef ; 0xf8a55
+ lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8a57 ahci.c:501
+ cwd ; 99 ; 0xf8a5b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a5c
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a5f
+ mov cx, dx ; 89 d1 ; 0xf8a64
+ mov dx, di ; 89 fa ; 0xf8a66
+ xchg cx, ax ; 91 ; 0xf8a68
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a69
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a6d
+ out DX, eax ; 66 ef ; 0xf8a6f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a71
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a74
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a79
+ xor ax, ax ; 31 c0 ; 0xf8a7c
+ xor cx, cx ; 31 c9 ; 0xf8a7e
+ xchg cx, ax ; 91 ; 0xf8a80
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a81
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a85
+ out DX, eax ; 66 ef ; 0xf8a87
+ lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8a89 ahci.c:502
+ cwd ; 99 ; 0xf8a8d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a8e
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a91
+ mov cx, dx ; 89 d1 ; 0xf8a96
+ mov dx, di ; 89 fa ; 0xf8a98
+ xchg cx, ax ; 91 ; 0xf8a9a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a9b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a9f
+ out DX, eax ; 66 ef ; 0xf8aa1
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8aa3
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8aa6
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8aab
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8aae
+ mov cx, ax ; 89 c1 ; 0xf8ab1
+ xchg cx, ax ; 91 ; 0xf8ab3
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ab4
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ab8
+ out DX, eax ; 66 ef ; 0xf8aba
+ lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8abc ahci.c:504
+ cwd ; 99 ; 0xf8ac0
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ac1
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8ac4
+ mov cx, dx ; 89 d1 ; 0xf8ac9
+ mov dx, bx ; 89 da ; 0xf8acb
+ xchg cx, ax ; 91 ; 0xf8acd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ace
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ad2
+ out DX, eax ; 66 ef ; 0xf8ad4
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ad6
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ad9
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ade
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8ae1
+ mov cx, ax ; 89 c1 ; 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 al, byte [bp-008h] ; 8a 46 f8 ; 0xf8aef ahci.c:506
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8af2
+ mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8af5
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8afa ahci.c:507
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8b00 ahci.c:508
+ pop di ; 5f ; 0xf8b03
+ pop si ; 5e ; 0xf8b04
+ pop cx ; 59 ; 0xf8b05
+ pop bp ; 5d ; 0xf8b06
+ retn ; c3 ; 0xf8b07
+ ; disGetNextSymbol 0xf8b08 LB 0x27d0 -> off=0x0 cb=00000000000000a8 uValue=00000000000f7508 'ahci_read_sectors'
+ahci_read_sectors: ; 0xf8b08 LB 0xa8
+ push bp ; 55 ; 0xf8b08 ahci.c:517
+ mov bp, sp ; 89 e5 ; 0xf8b09
+ push si ; 56 ; 0xf8b0b
+ push di ; 57 ; 0xf8b0c
+ push ax ; 50 ; 0xf8b0d
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf8b0e ahci.c:522
+ mov bl, byte [es:bx+00ch] ; 26 8a 5f 0c ; 0xf8b11
+ xor bh, bh ; 30 ff ; 0xf8b15
+ sub bx, strict byte 0000ch ; 83 eb 0c ; 0xf8b17
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf8b1a ahci.c:523
+ jbe short 08b2eh ; 76 0f ; 0xf8b1d
+ push bx ; 53 ; 0xf8b1f ahci.c:524
+ push 00c72h ; 68 72 0c ; 0xf8b20
+ push 00c84h ; 68 84 0c ; 0xf8b23
+ push strict byte 00007h ; 6a 07 ; 0xf8b26
+ call 0190eh ; e8 e3 8d ; 0xf8b28
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8b2b
+ xor di, di ; 31 ff ; 0xf8b2e ahci.c:530
+ les si, [bp+004h] ; c4 76 04 ; 0xf8b30
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf8b33
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8b38 ahci.c:239
+ mov es, dx ; 8e c2 ; 0xf8b3c
+ mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8b3e
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8b43 ahci.c:531
+ add bx, si ; 01 f3 ; 0xf8b46
+ mov bl, byte [es:bx+002a8h] ; 26 8a 9f a8 02 ; 0xf8b48
+ xor bh, bh ; 30 ff ; 0xf8b4d
+ mov di, si ; 89 f7 ; 0xf8b4f
+ mov dx, word [es:di+002aeh] ; 26 8b 95 ae 02 ; 0xf8b51
+ xor ax, ax ; 31 c0 ; 0xf8b56
+ call 088bbh ; e8 60 fd ; 0xf8b58
+ mov bx, strict word 00025h ; bb 25 00 ; 0xf8b5b ahci.c:532
+ mov ax, si ; 89 f0 ; 0xf8b5e
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8b60
+ call 084d4h ; e8 6e f9 ; 0xf8b63
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf8b66
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8b69 ahci.c:534
+ mov bx, si ; 89 f3 ; 0xf8b6c
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8b6e
+ mov word [es:bx+018h], ax ; 26 89 47 18 ; 0xf8b72
+ mov cx, ax ; 89 c1 ; 0xf8b76 ahci.c:536
+ sal cx, 009h ; c1 e1 09 ; 0xf8b78
+ shr cx, 1 ; d1 e9 ; 0xf8b7b
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8b7d
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf8b81
+ mov si, di ; 89 fe ; 0xf8b85
+ mov dx, ax ; 89 c2 ; 0xf8b87
+ mov es, ax ; 8e c0 ; 0xf8b89
+ push DS ; 1e ; 0xf8b8b
+ mov ds, dx ; 8e da ; 0xf8b8c
+ rep movsw ; f3 a5 ; 0xf8b8e
+ pop DS ; 1f ; 0xf8b90
+ xor bx, bx ; 31 db ; 0xf8b91 ahci.c:538
+ les di, [bp+004h] ; c4 7e 04 ; 0xf8b93
+ mov es, [es:di+002aeh] ; 26 8e 85 ae 02 ; 0xf8b96
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8b9b ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ba0
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf8ba4 ahci.c:540
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8ba7
+ pop di ; 5f ; 0xf8baa
+ pop si ; 5e ; 0xf8bab
+ pop bp ; 5d ; 0xf8bac
+ retn 00004h ; c2 04 00 ; 0xf8bad
+ ; disGetNextSymbol 0xf8bb0 LB 0x2728 -> off=0x0 cb=0000000000000086 uValue=00000000000f75b0 'ahci_write_sectors'
+ahci_write_sectors: ; 0xf8bb0 LB 0x86
+ push bp ; 55 ; 0xf8bb0 ahci.c:549
+ mov bp, sp ; 89 e5 ; 0xf8bb1
+ push si ; 56 ; 0xf8bb3
+ push di ; 57 ; 0xf8bb4
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf8bb5
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8bb8
+ mov es, cx ; 8e c1 ; 0xf8bbb ahci.c:554
+ mov dl, byte [es:si+00ch] ; 26 8a 54 0c ; 0xf8bbd
+ xor dh, dh ; 30 f6 ; 0xf8bc1
+ sub dx, strict byte 0000ch ; 83 ea 0c ; 0xf8bc3
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf8bc6 ahci.c:555
+ jbe short 08bdah ; 76 0f ; 0xf8bc9
+ push dx ; 52 ; 0xf8bcb ahci.c:556
+ push 00ca3h ; 68 a3 0c ; 0xf8bcc
+ push 00c84h ; 68 84 0c ; 0xf8bcf
+ push strict byte 00007h ; 6a 07 ; 0xf8bd2
+ call 0190eh ; e8 37 8d ; 0xf8bd4
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8bd7
+ xor bx, bx ; 31 db ; 0xf8bda ahci.c:562
+ mov es, cx ; 8e c1 ; 0xf8bdc
+ mov di, word [es:si+002aeh] ; 26 8b bc ae 02 ; 0xf8bde
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8be3 ahci.c:239
+ mov es, di ; 8e c7 ; 0xf8be7
+ mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8be9
+ mov es, cx ; 8e c1 ; 0xf8bee ahci.c:563
+ mov bx, si ; 89 f3 ; 0xf8bf0
+ add bx, dx ; 01 d3 ; 0xf8bf2
+ mov bl, byte [es:bx+002a8h] ; 26 8a 9f a8 02 ; 0xf8bf4
+ xor bh, bh ; 30 ff ; 0xf8bf9
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf8bfb
+ xor ax, ax ; 31 c0 ; 0xf8c00
+ call 088bbh ; e8 b6 fc ; 0xf8c02
+ mov bx, strict word 00035h ; bb 35 00 ; 0xf8c05 ahci.c:564
+ mov ax, si ; 89 f0 ; 0xf8c08
+ mov dx, cx ; 89 ca ; 0xf8c0a
+ call 084d4h ; e8 c5 f8 ; 0xf8c0c
+ mov dx, ax ; 89 c2 ; 0xf8c0f
+ mov es, cx ; 8e c1 ; 0xf8c11 ahci.c:566
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8c13
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8c17
+ xor bx, bx ; 31 db ; 0xf8c1b ahci.c:567
+ mov es, [es:si+002aeh] ; 26 8e 84 ae 02 ; 0xf8c1d
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8c22 ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c27
+ mov ax, dx ; 89 d0 ; 0xf8c2b ahci.c:569
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8c2d
+ pop di ; 5f ; 0xf8c30
+ pop si ; 5e ; 0xf8c31
+ pop bp ; 5d ; 0xf8c32
+ retn 00004h ; c2 04 00 ; 0xf8c33
+ ; disGetNextSymbol 0xf8c36 LB 0x26a2 -> off=0x0 cb=000000000000018a uValue=00000000000f7636 'ahci_cmd_packet'
+ahci_cmd_packet: ; 0xf8c36 LB 0x18a
+ push bp ; 55 ; 0xf8c36 ahci.c:576
+ mov bp, sp ; 89 e5 ; 0xf8c37
+ push si ; 56 ; 0xf8c39
+ push di ; 57 ; 0xf8c3a
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf8c3b
+ push ax ; 50 ; 0xf8c3e
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf8c3f
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf8c42
+ mov word [bp-012h], cx ; 89 4e ee ; 0xf8c45
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8c48 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8c4b
+ mov es, ax ; 8e c0 ; 0xf8c4e
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8c50
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf8c53 ahci.c:49
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf8c56
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf8c59 ahci.c:583
+ jne short 08c7eh ; 75 1f ; 0xf8c5d
+ mov bx, 00eeah ; bb ea 0e ; 0xf8c5f ahci.c:584
+ mov cx, ds ; 8c d9 ; 0xf8c62
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8c64
+ call 018cbh ; e8 61 8c ; 0xf8c67
+ push 00cb6h ; 68 b6 0c ; 0xf8c6a
+ push 00cc6h ; 68 c6 0c ; 0xf8c6d
+ push strict byte 00004h ; 6a 04 ; 0xf8c70
+ call 0190eh ; e8 99 8c ; 0xf8c72
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf8c75
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8c78 ahci.c:585
+ jmp near 08db7h ; e9 39 01 ; 0xf8c7b
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf8c7e ahci.c:589
+ jne short 08c78h ; 75 f4 ; 0xf8c82
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf8c84 ahci.c:603
+ mov di, word [bp+008h] ; 8b 7e 08 ; 0xf8c87
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf8c8a
+ sal bx, 1 ; d1 e3 ; 0xf8c8d
+ rcl di, 1 ; d1 d7 ; 0xf8c8f
+ loop 08c8dh ; e2 fa ; 0xf8c91
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8c93
+ mov word [es:si], bx ; 26 89 1c ; 0xf8c96
+ mov word [es:si+002h], di ; 26 89 7c 02 ; 0xf8c99
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8c9d
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8ca3
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf8ca9 ahci.c:604
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8cac
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf8cb0
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf8cb3
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf8cb7 ahci.c:605
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8cbb
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xf8cbe
+ xor cx, cx ; 31 c9 ; 0xf8cc1
+ call 0af60h ; e8 9a 22 ; 0xf8cc3
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8cc6
+ xor di, di ; 31 ff ; 0xf8cca ahci.c:608
+ mov ax, word [es:si+002aeh] ; 26 8b 84 ae 02 ; 0xf8ccc
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8cd1
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf8cd4
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8cd7
+ sub word [bp-014h], strict byte 0000ch ; 83 6e ec 0c ; 0xf8cda ahci.c:595
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8cde ahci.c:239
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ce2
+ mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8ce5
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8cea ahci.c:611
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8ced
+ add bx, si ; 01 f3 ; 0xf8cf0
+ mov bl, byte [es:bx+002a8h] ; 26 8a 9f a8 02 ; 0xf8cf2
+ xor bh, bh ; 30 ff ; 0xf8cf7
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf8cf9
+ xor ax, ax ; 31 c0 ; 0xf8cfe
+ call 088bbh ; e8 b8 fb ; 0xf8d00
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf8d03 ahci.c:614
+ xor ah, ah ; 30 e4 ; 0xf8d06
+ push ax ; 50 ; 0xf8d08
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8d09
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf8d0c
+ mov ax, 000c0h ; b8 c0 00 ; 0xf8d0f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d12
+ call 0afc0h ; e8 a8 22 ; 0xf8d15
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d18 ahci.c:618
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf8d1b
+ mov word [es:si+01ah], di ; 26 89 7c 1a ; 0xf8d1f ahci.c:619
+ mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf8d23
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf8d27 ahci.c:622
+ test ax, ax ; 85 c0 ; 0xf8d2b
+ je short 08d56h ; 74 27 ; 0xf8d2d
+ dec ax ; 48 ; 0xf8d2f ahci.c:623
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d30
+ mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf8d33
+ mov word [es:di+0010eh], di ; 26 89 bd 0e 01 ; 0xf8d38
+ mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf8d3d ahci.c:624
+ mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf8d42
+ mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf8d47
+ mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf8d4c
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8d51 ahci.c:625
+ mov bx, 000a0h ; bb a0 00 ; 0xf8d56 ahci.c:628
+ mov ax, si ; 89 f0 ; 0xf8d59
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf8d5b
+ call 084d4h ; e8 73 f7 ; 0xf8d5e
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8d61 ahci.c:630
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf8d64
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8d68
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d6c
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf8d6f
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf8d73
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf8d77 ahci.c:632
+ mov cx, ax ; 89 c1 ; 0xf8d7b
+ shr cx, 1 ; d1 e9 ; 0xf8d7d
+ rcr bx, 1 ; d1 db ; 0xf8d7f
+ mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf8d81
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8d85
+ mov cx, bx ; 89 d9 ; 0xf8d89
+ mov si, di ; 89 fe ; 0xf8d8b
+ mov dx, ax ; 89 c2 ; 0xf8d8d
+ mov es, ax ; 8e c0 ; 0xf8d8f
+ push DS ; 1e ; 0xf8d91
+ mov ds, dx ; 8e da ; 0xf8d92
+ rep movsw ; f3 a5 ; 0xf8d94
+ pop DS ; 1f ; 0xf8d96
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8d97 ahci.c:244
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8d9a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8d9f
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8da3 ahci.c:636
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8da6
+ or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf8daa
+ jne short 08db5h ; 75 05 ; 0xf8dae
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8db0
+ jmp short 08db7h ; eb 02 ; 0xf8db3
+ xor ax, ax ; 31 c0 ; 0xf8db5
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8db7 ahci.c:637
+ pop di ; 5f ; 0xf8dba
+ pop si ; 5e ; 0xf8dbb
+ pop bp ; 5d ; 0xf8dbc
+ retn 0000ch ; c2 0c 00 ; 0xf8dbd
+ ; disGetNextSymbol 0xf8dc0 LB 0x2518 -> off=0x0 cb=0000000000000005 uValue=00000000000f77c0 'wait_ticks_device_init'
+wait_ticks_device_init: ; 0xf8dc0 LB 0x5
+ push bp ; 55 ; 0xf8dc0 ahci.c:640
+ mov bp, sp ; 89 e5 ; 0xf8dc1
+ pop bp ; 5d ; 0xf8dc3 ahci.c:642
+ retn ; c3 ; 0xf8dc4
+ ; disGetNextSymbol 0xf8dc5 LB 0x2513 -> off=0x0 cb=00000000000004e3 uValue=00000000000f77c5 'ahci_port_detect_device'
+ahci_port_detect_device: ; 0xf8dc5 LB 0x4e3
+ push bp ; 55 ; 0xf8dc5 ahci.c:644
+ mov bp, sp ; 89 e5 ; 0xf8dc6
+ push cx ; 51 ; 0xf8dc8
+ push si ; 56 ; 0xf8dc9
+ push di ; 57 ; 0xf8dca
+ sub sp, 0022ch ; 81 ec 2c 02 ; 0xf8dcb
+ mov si, ax ; 89 c6 ; 0xf8dcf
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf8dd1
+ mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf8dd4
+ mov word [bp-020h], strict word 00000h ; c7 46 e0 00 00 ; 0xf8dd7 ahci.c:650
+ mov cl, bl ; 88 d9 ; 0xf8ddc ahci.c:652
+ xor ch, ch ; 30 ed ; 0xf8dde
+ mov bx, cx ; 89 cb ; 0xf8de0
+ call 088bbh ; e8 d6 fa ; 0xf8de2
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8de5 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8de8
+ mov es, ax ; 8e c0 ; 0xf8deb
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8ded
+ mov word [bp-028h], strict word 0005eh ; c7 46 d8 5e 00 ; 0xf8df0 ahci.c:49
+ mov word [bp-026h], ax ; 89 46 da ; 0xf8df5
+ mov ax, cx ; 89 c8 ; 0xf8df8 ahci.c:657
+ sal ax, 007h ; c1 e0 07 ; 0xf8dfa
+ add ax, 0012ch ; 05 2c 01 ; 0xf8dfd
+ cwd ; 99 ; 0xf8e00
+ mov bx, ax ; 89 c3 ; 0xf8e01
+ mov di, dx ; 89 d7 ; 0xf8e03
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e05
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e08
+ mov cx, di ; 89 f9 ; 0xf8e0d
+ xchg cx, ax ; 91 ; 0xf8e0f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e10
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e14
+ out DX, eax ; 66 ef ; 0xf8e16
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e18
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e1b
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e20
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8e23
+ xor cx, cx ; 31 c9 ; 0xf8e26
+ xchg cx, ax ; 91 ; 0xf8e28
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e29
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e2d
+ out DX, eax ; 66 ef ; 0xf8e2f
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e31 ahci.c:662
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e34
+ mov ax, bx ; 89 d8 ; 0xf8e39
+ mov cx, di ; 89 f9 ; 0xf8e3b
+ xchg cx, ax ; 91 ; 0xf8e3d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e3e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e42
+ out DX, eax ; 66 ef ; 0xf8e44
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e46
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e49
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e4e
+ xor ax, ax ; 31 c0 ; 0xf8e51
+ xor cx, cx ; 31 c9 ; 0xf8e53
+ xchg cx, ax ; 91 ; 0xf8e55
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e56
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e5a
+ out DX, eax ; 66 ef ; 0xf8e5c
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf8e5e ahci.c:671
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8e61
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf8e64
+ mov es, ax ; 8e c0 ; 0xf8e67 ahci.c:672
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8e69
+ add ax, strict word 00003h ; 05 03 00 ; 0xf8e6c
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf8e6f
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e72
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf8e76
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf8e79
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8e7c ahci.c:674
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e7f
+ cmp ax, word [bp-02ah] ; 3b 46 d6 ; 0xf8e83
+ jc short 08e99h ; 72 11 ; 0xf8e86
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e88
+ cmp ax, word [bp-02ah] ; 3b 46 d6 ; 0xf8e8c
+ jne short 08ee5h ; 75 54 ; 0xf8e8f
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8e91
+ cmp ax, word [bp-024h] ; 3b 46 dc ; 0xf8e94
+ jnc short 08ee5h ; 73 4c ; 0xf8e97
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8e99 ahci.c:677
+ xor ah, ah ; 30 e4 ; 0xf8e9c
+ sal ax, 007h ; c1 e0 07 ; 0xf8e9e
+ add ax, 00128h ; 05 28 01 ; 0xf8ea1
+ cwd ; 99 ; 0xf8ea4
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8ea5
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8ea8
+ mov cx, dx ; 89 d1 ; 0xf8ead
+ mov dx, bx ; 89 da ; 0xf8eaf
+ xchg cx, ax ; 91 ; 0xf8eb1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8eb2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8eb6
+ out DX, eax ; 66 ef ; 0xf8eb8
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8eba
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ebd
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ec2
+ in eax, DX ; 66 ed ; 0xf8ec5
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8ec7
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8ec9
+ xchg dx, ax ; 92 ; 0xf8ecd
+ mov word [bp-022h], ax ; 89 46 de ; 0xf8ece
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf8ed1
+ push strict byte 00000h ; 6a 00 ; 0xf8ed4 ahci.c:678
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8ed6
+ xor cx, cx ; 31 c9 ; 0xf8ed9
+ call 08344h ; e8 66 f4 ; 0xf8edb
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8ede
+ jne short 08e7ch ; 75 99 ; 0xf8ee1
+ jmp short 08eeeh ; eb 09 ; 0xf8ee3 ahci.c:680
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf8ee5 ahci.c:685
+ jne short 08eeeh ; 75 03 ; 0xf8ee9
+ jmp near 092a0h ; e9 b2 03 ; 0xf8eeb
+ push strict byte 00000h ; 6a 00 ; 0xf8eee ahci.c:690
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8ef0
+ xor cx, cx ; 31 c9 ; 0xf8ef3
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf8ef5
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf8ef8
+ call 08344h ; e8 46 f4 ; 0xf8efb
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8efe
+ jne short 08eebh ; 75 e8 ; 0xf8f01
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8f03 ahci.c:698
+ xor ah, ah ; 30 e4 ; 0xf8f06
+ mov di, ax ; 89 c7 ; 0xf8f08
+ sal di, 007h ; c1 e7 07 ; 0xf8f0a
+ lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8f0d
+ cwd ; 99 ; 0xf8f11
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f12
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f15
+ mov cx, dx ; 89 d1 ; 0xf8f1a
+ mov dx, bx ; 89 da ; 0xf8f1c
+ xchg cx, ax ; 91 ; 0xf8f1e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f1f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f23
+ out DX, eax ; 66 ef ; 0xf8f25
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f27
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f2a
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f2f
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8f32
+ mov cx, ax ; 89 c1 ; 0xf8f35
+ xchg cx, ax ; 91 ; 0xf8f37
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f38
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f3c
+ out DX, eax ; 66 ef ; 0xf8f3e
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf8f40 ahci.c:700
+ mov al, byte [es:bx+002ach] ; 26 8a 87 ac 02 ; 0xf8f43
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8f48
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf8f4b ahci.c:705
+ jnc short 08eebh ; 73 9c ; 0xf8f4d
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8f4f ahci.c:708
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f53 ahci.c:250
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f56
+ xor cx, cx ; 31 c9 ; 0xf8f5b ahci.c:252
+ mov dx, bx ; 89 da ; 0xf8f5d
+ xchg cx, ax ; 91 ; 0xf8f5f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f60
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f64
+ out DX, eax ; 66 ef ; 0xf8f66
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8f68 ahci.c:253
+ mov dx, bx ; 89 da ; 0xf8f6b
+ in eax, DX ; 66 ed ; 0xf8f6d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8f6f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8f71
+ xchg dx, ax ; 92 ; 0xf8f75
+ or AL, strict byte 010h ; 0c 10 ; 0xf8f76
+ mov cx, dx ; 89 d1 ; 0xf8f78
+ mov dx, bx ; 89 da ; 0xf8f7a
+ xchg cx, ax ; 91 ; 0xf8f7c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f7d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f81
+ out DX, eax ; 66 ef ; 0xf8f83
+ lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8f85 ahci.c:712
+ cwd ; 99 ; 0xf8f89
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f8a
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f8d
+ mov cx, dx ; 89 d1 ; 0xf8f92
+ mov dx, bx ; 89 da ; 0xf8f94
+ xchg cx, ax ; 91 ; 0xf8f96
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f97
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f9b
+ out DX, eax ; 66 ef ; 0xf8f9d
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f9f
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8fa2
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8fa7
+ in eax, DX ; 66 ed ; 0xf8faa
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8fac
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8fae
+ xchg dx, ax ; 92 ; 0xf8fb2
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf8fb3
+ add bl, 00ch ; 80 c3 0c ; 0xf8fb6
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8fb9
+ test dx, dx ; 85 d2 ; 0xf8fbc ahci.c:713
+ jne short 09014h ; 75 54 ; 0xf8fbe
+ cmp ax, 00101h ; 3d 01 01 ; 0xf8fc0
+ jne short 09014h ; 75 4f ; 0xf8fc3
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf8fc5 ahci.c:723
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8fc8
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8fce
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8fd4
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8fda
+ lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf8fdf ahci.c:724
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8fe3
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8fe7
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8feb ahci.c:725
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8ff1 ahci.c:726
+ mov bx, 000ech ; bb ec 00 ; 0xf8ff7 ahci.c:727
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf8ffa
+ mov dx, es ; 8c c2 ; 0xf8ffd
+ call 084d4h ; e8 d2 f4 ; 0xf8fff
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9002 ahci.c:730
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf9005
+ test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf9008 ahci.c:732
+ je short 09017h ; 74 08 ; 0xf900d
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf900f
+ jmp short 09019h ; eb 05 ; 0xf9012
+ jmp near 091dbh ; e9 c4 01 ; 0xf9014
+ xor ax, ax ; 31 c0 ; 0xf9017
+ mov dl, al ; 88 c2 ; 0xf9019
+ mov ax, word [bp-00230h] ; 8b 86 d0 fd ; 0xf901b ahci.c:733
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf901f
+ mov ax, word [bp-0022ch] ; 8b 86 d4 fd ; 0xf9022 ahci.c:734
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf9026
+ mov ax, word [bp-00226h] ; 8b 86 da fd ; 0xf9029 ahci.c:735
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf902d
+ mov di, word [bp-001bah] ; 8b be 46 fe ; 0xf9030 ahci.c:736
+ mov si, word [bp-001b8h] ; 8b b6 48 fe ; 0xf9034
+ xor ax, ax ; 31 c0 ; 0xf9038
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf903a
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf903d
+ cmp si, 00fffh ; 81 fe ff 0f ; 0xf9040 ahci.c:738
+ jne short 09061h ; 75 1b ; 0xf9044
+ cmp di, strict byte 0ffffh ; 83 ff ff ; 0xf9046
+ jne short 09061h ; 75 16 ; 0xf9049
+ mov ax, word [bp-00164h] ; 8b 86 9c fe ; 0xf904b ahci.c:739
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf904f
+ mov ax, word [bp-00166h] ; 8b 86 9a fe ; 0xf9052
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf9056
+ mov si, word [bp-00168h] ; 8b b6 98 fe ; 0xf9059
+ mov di, word [bp-0016ah] ; 8b be 96 fe ; 0xf905d
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf9061 ahci.c:743
+ xor bh, bh ; 30 ff ; 0xf9064
+ mov es, [bp-026h] ; 8e 46 da ; 0xf9066
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf9069
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf906c
+ mov byte [es:bx+002a8h], al ; 26 88 87 a8 02 ; 0xf906f
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9074 ahci.c:744
+ xor ah, ah ; 30 e4 ; 0xf9077
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9079
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf907c
+ add bx, ax ; 01 c3 ; 0xf907f
+ mov word [es:bx+022h], 0ff05h ; 26 c7 47 22 05 ff ; 0xf9081
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf9087 ahci.c:746
+ mov byte [es:bx+025h], 000h ; 26 c6 47 25 00 ; 0xf908b ahci.c:747
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf9090 ahci.c:748
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf9096 ahci.c:749
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf909b ahci.c:750
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf909e
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf90a2
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf90a5
+ mov word [es:bx+038h], si ; 26 89 77 38 ; 0xf90a9
+ mov word [es:bx+036h], di ; 26 89 7f 36 ; 0xf90ad
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf90b1 ahci.c:752
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf90b4
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf90b8 ahci.c:753
+ mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf90bb
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf90bf ahci.c:754
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf90c2
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf90c6 ahci.c:757
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf90c9
+ jc short 090d9h ; 72 0c ; 0xf90cb
+ jbe short 090e1h ; 76 12 ; 0xf90cd
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf90cf
+ je short 090e9h ; 74 16 ; 0xf90d1
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf90d3
+ je short 090e5h ; 74 0e ; 0xf90d5
+ jmp short 09135h ; eb 5c ; 0xf90d7
+ test al, al ; 84 c0 ; 0xf90d9
+ jne short 09135h ; 75 58 ; 0xf90db
+ mov BL, strict byte 040h ; b3 40 ; 0xf90dd ahci.c:760
+ jmp short 090ebh ; eb 0a ; 0xf90df ahci.c:761
+ mov BL, strict byte 048h ; b3 48 ; 0xf90e1 ahci.c:763
+ jmp short 090ebh ; eb 06 ; 0xf90e3 ahci.c:764
+ mov BL, strict byte 050h ; b3 50 ; 0xf90e5 ahci.c:766
+ jmp short 090ebh ; eb 02 ; 0xf90e7 ahci.c:767
+ mov BL, strict byte 058h ; b3 58 ; 0xf90e9 ahci.c:769
+ mov dl, bl ; 88 da ; 0xf90eb ahci.c:773
+ add dl, 007h ; 80 c2 07 ; 0xf90ed
+ xor dh, dh ; 30 f6 ; 0xf90f0
+ mov ax, dx ; 89 d0 ; 0xf90f2
+ call 0165fh ; e8 68 85 ; 0xf90f4
+ test al, al ; 84 c0 ; 0xf90f7
+ je short 09135h ; 74 3a ; 0xf90f9
+ mov al, bl ; 88 d8 ; 0xf90fb ahci.c:776
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf90fd
+ xor ah, ah ; 30 e4 ; 0xf90ff
+ call 0165fh ; e8 5b 85 ; 0xf9101
+ xor ah, ah ; 30 e4 ; 0xf9104
+ sal ax, 008h ; c1 e0 08 ; 0xf9106
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf9109
+ mov al, bl ; 88 d8 ; 0xf910c
+ xor ah, ah ; 30 e4 ; 0xf910e
+ call 0165fh ; e8 4c 85 ; 0xf9110
+ xor ah, ah ; 30 e4 ; 0xf9113
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf9115
+ add cx, ax ; 01 c1 ; 0xf9118
+ mov word [bp-030h], cx ; 89 4e d0 ; 0xf911a
+ mov al, bl ; 88 d8 ; 0xf911d ahci.c:777
+ add AL, strict byte 002h ; 04 02 ; 0xf911f
+ call 0165fh ; e8 3b 85 ; 0xf9121
+ xor ah, ah ; 30 e4 ; 0xf9124
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf9126
+ mov ax, dx ; 89 d0 ; 0xf9129 ahci.c:778
+ call 0165fh ; e8 31 85 ; 0xf912b
+ xor ah, ah ; 30 e4 ; 0xf912e
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf9130
+ jmp short 09145h ; eb 10 ; 0xf9133 ahci.c:780
+ push word [bp-014h] ; ff 76 ec ; 0xf9135 ahci.c:781
+ push word [bp-016h] ; ff 76 ea ; 0xf9138
+ push si ; 56 ; 0xf913b
+ push di ; 57 ; 0xf913c
+ mov dx, ss ; 8c d2 ; 0xf913d
+ lea ax, [bp-032h] ; 8d 46 ce ; 0xf913f
+ call 058d1h ; e8 8c c7 ; 0xf9142
+ mov bx, 00eeah ; bb ea 0e ; 0xf9145 ahci.c:785
+ mov cx, ds ; 8c d9 ; 0xf9148
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf914a
+ call 018cbh ; e8 7b 87 ; 0xf914d
+ push word [bp-014h] ; ff 76 ec ; 0xf9150
+ push word [bp-016h] ; ff 76 ea ; 0xf9153
+ push si ; 56 ; 0xf9156
+ push di ; 57 ; 0xf9157
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf9158
+ push ax ; 50 ; 0xf915b
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf915c
+ push ax ; 50 ; 0xf915f
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf9160
+ push ax ; 50 ; 0xf9163
+ push word [bp-01ch] ; ff 76 e4 ; 0xf9164
+ push word [bp-018h] ; ff 76 e8 ; 0xf9167
+ push word [bp-01ah] ; ff 76 e6 ; 0xf916a
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf916d
+ xor ah, ah ; 30 e4 ; 0xf9170
+ push ax ; 50 ; 0xf9172
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf9173
+ push ax ; 50 ; 0xf9176
+ push 00ce6h ; 68 e6 0c ; 0xf9177
+ push strict byte 00004h ; 6a 04 ; 0xf917a
+ call 0190eh ; e8 8f 87 ; 0xf917c
+ add sp, strict byte 0001ch ; 83 c4 1c ; 0xf917f
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9182 ahci.c:787
+ xor ah, ah ; 30 e4 ; 0xf9185
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9187
+ mov di, word [bp-028h] ; 8b 7e d8 ; 0xf918a
+ add di, ax ; 01 c7 ; 0xf918d
+ mov es, [bp-026h] ; 8e 46 da ; 0xf918f
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf9192
+ push DS ; 1e ; 0xf9195
+ push SS ; 16 ; 0xf9196
+ pop DS ; 1f ; 0xf9197
+ lea si, [bp-032h] ; 8d 76 ce ; 0xf9198
+ movsw ; a5 ; 0xf919b
+ movsw ; a5 ; 0xf919c
+ movsw ; a5 ; 0xf919d
+ pop DS ; 1f ; 0xf919e
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf919f ahci.c:790
+ mov bl, byte [es:bx+00252h] ; 26 8a 9f 52 02 ; 0xf91a2
+ mov dl, byte [bp-00eh] ; 8a 56 f2 ; 0xf91a7 ahci.c:791
+ add dl, 00ch ; 80 c2 0c ; 0xf91aa
+ mov al, bl ; 88 d8 ; 0xf91ad
+ xor ah, ah ; 30 e4 ; 0xf91af
+ mov si, word [bp-028h] ; 8b 76 d8 ; 0xf91b1
+ add si, ax ; 01 c6 ; 0xf91b4
+ mov byte [es:si+00253h], dl ; 26 88 94 53 02 ; 0xf91b6
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf91bb ahci.c:792
+ mov si, word [bp-028h] ; 8b 76 d8 ; 0xf91bd ahci.c:793
+ mov byte [es:si+00252h], bl ; 26 88 9c 52 02 ; 0xf91c0
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf91c5 ahci.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf91c8
+ mov es, ax ; 8e c0 ; 0xf91cb
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf91cd
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf91d0 ahci.c:797
+ mov si, strict word 00075h ; be 75 00 ; 0xf91d2 ahci.c:43
+ mov byte [es:si], bl ; 26 88 1c ; 0xf91d5
+ jmp near 09292h ; e9 b7 00 ; 0xf91d8 ahci.c:800
+ cmp dx, 0eb14h ; 81 fa 14 eb ; 0xf91db
+ jne short 09235h ; 75 54 ; 0xf91df
+ cmp ax, 00101h ; 3d 01 01 ; 0xf91e1
+ jne short 09235h ; 75 4f ; 0xf91e4
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf91e6 ahci.c:805
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf91e9
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf91ef
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf91f5
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf91fb
+ lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf9200 ahci.c:806
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf9204
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf9208
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf920c ahci.c:807
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf9212 ahci.c:808
+ mov bx, 000a1h ; bb a1 00 ; 0xf9218 ahci.c:809
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf921b
+ mov dx, es ; 8c c2 ; 0xf921e
+ call 084d4h ; e8 b1 f2 ; 0xf9220
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9223 ahci.c:812
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf9226
+ test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf9229 ahci.c:814
+ je short 09237h ; 74 07 ; 0xf922e
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf9230
+ jmp short 09239h ; eb 04 ; 0xf9233
+ jmp short 09292h ; eb 5b ; 0xf9235
+ xor dx, dx ; 31 d2 ; 0xf9237
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf9239 ahci.c:816
+ xor bh, bh ; 30 ff ; 0xf923c
+ mov es, [bp-026h] ; 8e 46 da ; 0xf923e
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf9241
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9244
+ mov byte [es:bx+002a8h], al ; 26 88 87 a8 02 ; 0xf9247
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf924c ahci.c:817
+ xor ah, ah ; 30 e4 ; 0xf924f
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9251
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf9254
+ add bx, ax ; 01 c3 ; 0xf9257
+ mov word [es:bx+022h], 00505h ; 26 c7 47 22 05 05 ; 0xf9259
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf925f ahci.c:819
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf9263 ahci.c:820
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf9269 ahci.c:821
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf926e ahci.c:824
+ mov al, byte [es:bx+00267h] ; 26 8a 87 67 02 ; 0xf9271
+ mov ah, byte [bp-00eh] ; 8a 66 f2 ; 0xf9276 ahci.c:825
+ add ah, 00ch ; 80 c4 0c ; 0xf9279
+ mov bl, al ; 88 c3 ; 0xf927c
+ xor bh, bh ; 30 ff ; 0xf927e
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf9280
+ mov byte [es:bx+00268h], ah ; 26 88 a7 68 02 ; 0xf9283
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9288 ahci.c:826
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf928a ahci.c:827
+ mov byte [es:bx+00267h], al ; 26 88 87 67 02 ; 0xf928d
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf9292 ahci.c:832
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf9295 ahci.c:833
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf9298
+ mov byte [es:bx+002ach], al ; 26 88 87 ac 02 ; 0xf929b
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf92a0 ahci.c:838
+ pop di ; 5f ; 0xf92a3
+ pop si ; 5e ; 0xf92a4
+ pop cx ; 59 ; 0xf92a5
+ pop bp ; 5d ; 0xf92a6
+ retn ; c3 ; 0xf92a7
+ ; disGetNextSymbol 0xf92a8 LB 0x2030 -> off=0x0 cb=000000000000003a uValue=00000000000f7ca8 'ahci_mem_alloc'
+ahci_mem_alloc: ; 0xf92a8 LB 0x3a
+ push bx ; 53 ; 0xf92a8 ahci.c:843
+ push cx ; 51 ; 0xf92a9
+ push dx ; 52 ; 0xf92aa
+ push di ; 57 ; 0xf92ab
+ push bp ; 55 ; 0xf92ac
+ mov bp, sp ; 89 e5 ; 0xf92ad
+ mov di, 00413h ; bf 13 04 ; 0xf92af ahci.c:48
+ xor ax, ax ; 31 c0 ; 0xf92b2
+ mov es, ax ; 8e c0 ; 0xf92b4
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf92b6
+ test ax, ax ; 85 c0 ; 0xf92b9 ahci.c:852
+ je short 092dch ; 74 1f ; 0xf92bb
+ dec ax ; 48 ; 0xf92bd ahci.c:853
+ mov bx, ax ; 89 c3 ; 0xf92be
+ xor dx, dx ; 31 d2 ; 0xf92c0 ahci.c:856
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf92c2
+ sal ax, 1 ; d1 e0 ; 0xf92c5
+ rcl dx, 1 ; d1 d2 ; 0xf92c7
+ loop 092c5h ; e2 fa ; 0xf92c9
+ mov di, dx ; 89 d7 ; 0xf92cb
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf92cd
+ shr di, 1 ; d1 ef ; 0xf92d0
+ rcr ax, 1 ; d1 d8 ; 0xf92d2
+ loop 092d0h ; e2 fa ; 0xf92d4
+ mov di, 00413h ; bf 13 04 ; 0xf92d6 ahci.c:53
+ mov word [es:di], bx ; 26 89 1d ; 0xf92d9
+ pop bp ; 5d ; 0xf92dc ahci.c:861
+ pop di ; 5f ; 0xf92dd
+ pop dx ; 5a ; 0xf92de
+ pop cx ; 59 ; 0xf92df
+ pop bx ; 5b ; 0xf92e0
+ retn ; c3 ; 0xf92e1
+ ; disGetNextSymbol 0xf92e2 LB 0x1ff6 -> off=0x0 cb=0000000000000156 uValue=00000000000f7ce2 'ahci_hba_init'
+ahci_hba_init: ; 0xf92e2 LB 0x156
+ push bp ; 55 ; 0xf92e2 ahci.c:866
+ mov bp, sp ; 89 e5 ; 0xf92e3
+ push bx ; 53 ; 0xf92e5
+ push cx ; 51 ; 0xf92e6
+ push dx ; 52 ; 0xf92e7
+ push si ; 56 ; 0xf92e8
+ push di ; 57 ; 0xf92e9
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf92ea
+ mov si, ax ; 89 c6 ; 0xf92ed
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf92ef ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf92f2
+ mov es, ax ; 8e c0 ; 0xf92f5
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf92f7
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf92fa ahci.c:877
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf92fd ahci.c:879
+ xor cx, cx ; 31 c9 ; 0xf9300
+ mov dx, si ; 89 f2 ; 0xf9302
+ xchg cx, ax ; 91 ; 0xf9304
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9305
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9309
+ out DX, eax ; 66 ef ; 0xf930b
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf930d
+ in eax, DX ; 66 ed ; 0xf9310
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9312
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9314
+ xchg dx, ax ; 92 ; 0xf9318
+ call 092a8h ; e8 8c ff ; 0xf9319 ahci.c:885
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf931c
+ test ax, ax ; 85 c0 ; 0xf931f ahci.c:886
+ jne short 09326h ; 75 03 ; 0xf9321
+ jmp near 0942eh ; e9 08 01 ; 0xf9323
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9326 ahci.c:889
+ mov es, di ; 8e c7 ; 0xf9329
+ mov word [es:bx+002aeh], ax ; 26 89 87 ae 02 ; 0xf932b
+ mov byte [es:bx+002ach], 000h ; 26 c6 87 ac 02 00 ; 0xf9330 ahci.c:895
+ xor bx, bx ; 31 db ; 0xf9336 ahci.c:897
+ mov es, ax ; 8e c0 ; 0xf9338
+ mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf933a ahci.c:898
+ mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf9340 ahci.c:899
+ mov word [es:bx+00264h], 0c000h ; 26 c7 87 64 02 00 c0 ; 0xf9345 ahci.c:904
+ mov word [es:bx+00266h], strict word 0000ch ; 26 c7 87 66 02 0c 00 ; 0xf934c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9353 ahci.c:252
+ xor cx, cx ; 31 c9 ; 0xf9356
+ mov dx, si ; 89 f2 ; 0xf9358
+ xchg cx, ax ; 91 ; 0xf935a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf935b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf935f
+ out DX, eax ; 66 ef ; 0xf9361
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf9363 ahci.c:253
+ mov dx, bx ; 89 da ; 0xf9366
+ in eax, DX ; 66 ed ; 0xf9368
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf936a
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf936c
+ xchg dx, ax ; 92 ; 0xf9370
+ mov cx, dx ; 89 d1 ; 0xf9371
+ or AL, strict byte 001h ; 0c 01 ; 0xf9373
+ mov dx, bx ; 89 da ; 0xf9375
+ xchg cx, ax ; 91 ; 0xf9377
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9378
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf937c
+ out DX, eax ; 66 ef ; 0xf937e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9380 ahci.c:910
+ xor cx, cx ; 31 c9 ; 0xf9383
+ mov dx, si ; 89 f2 ; 0xf9385
+ xchg cx, ax ; 91 ; 0xf9387
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9388
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf938c
+ out DX, eax ; 66 ef ; 0xf938e
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf9390
+ mov dx, bx ; 89 da ; 0xf9393
+ in eax, DX ; 66 ed ; 0xf9395
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9397
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9399
+ xchg dx, ax ; 92 ; 0xf939d
+ test AL, strict byte 001h ; a8 01 ; 0xf939e ahci.c:911
+ jne short 09380h ; 75 de ; 0xf93a0
+ xor ax, ax ; 31 c0 ; 0xf93a2 ahci.c:913
+ xor cx, cx ; 31 c9 ; 0xf93a4
+ mov dx, si ; 89 f2 ; 0xf93a6
+ xchg cx, ax ; 91 ; 0xf93a8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf93a9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf93ad
+ out DX, eax ; 66 ef ; 0xf93af
+ mov dx, bx ; 89 da ; 0xf93b1
+ in eax, DX ; 66 ed ; 0xf93b3
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf93b5
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf93b7
+ xchg dx, ax ; 92 ; 0xf93bb
+ push strict byte 00000h ; 6a 00 ; 0xf93bc ahci.c:914
+ mov bx, strict word 0001fh ; bb 1f 00 ; 0xf93be
+ xor cx, cx ; 31 c9 ; 0xf93c1
+ call 08344h ; e8 7e ef ; 0xf93c3
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf93c6
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf93c8
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf93cb ahci.c:919
+ jmp short 093f2h ; eb 21 ; 0xf93cf ahci.c:920
+ xor al, al ; 30 c0 ; 0xf93d1 ahci.c:272
+ test al, al ; 84 c0 ; 0xf93d3 ahci.c:273
+ je short 093e9h ; 74 12 ; 0xf93d5
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf93d7 ahci.c:925
+ xor bh, bh ; 30 ff ; 0xf93da
+ xor ax, ax ; 31 c0 ; 0xf93dc
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf93de
+ call 08dc5h ; e8 e1 f9 ; 0xf93e1
+ dec byte [bp-00ch] ; fe 4e f4 ; 0xf93e4 ahci.c:926
+ je short 0942ch ; 74 43 ; 0xf93e7 ahci.c:927
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf93e9 ahci.c:930
+ cmp byte [bp-00eh], 020h ; 80 7e f2 20 ; 0xf93ec ahci.c:931
+ jnc short 0942ch ; 73 3a ; 0xf93f0
+ mov cl, byte [bp-00eh] ; 8a 4e f2 ; 0xf93f2
+ xor ch, ch ; 30 ed ; 0xf93f5
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf93f7
+ xor di, di ; 31 ff ; 0xf93fa
+ jcxz 09404h ; e3 06 ; 0xf93fc
+ sal bx, 1 ; d1 e3 ; 0xf93fe
+ rcl di, 1 ; d1 d7 ; 0xf9400
+ loop 093feh ; e2 fa ; 0xf9402
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf9404
+ xor cx, cx ; 31 c9 ; 0xf9407
+ mov dx, si ; 89 f2 ; 0xf9409
+ xchg cx, ax ; 91 ; 0xf940b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf940c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9410
+ out DX, eax ; 66 ef ; 0xf9412
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf9414
+ in eax, DX ; 66 ed ; 0xf9417
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9419
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf941b
+ xchg dx, ax ; 92 ; 0xf941f
+ test dx, di ; 85 fa ; 0xf9420
+ jne short 09428h ; 75 04 ; 0xf9422
+ test ax, bx ; 85 d8 ; 0xf9424
+ je short 093d1h ; 74 a9 ; 0xf9426
+ mov AL, strict byte 001h ; b0 01 ; 0xf9428
+ jmp short 093d3h ; eb a7 ; 0xf942a
+ xor ax, ax ; 31 c0 ; 0xf942c ahci.c:933
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf942e ahci.c:934
+ pop di ; 5f ; 0xf9431
+ pop si ; 5e ; 0xf9432
+ pop dx ; 5a ; 0xf9433
+ pop cx ; 59 ; 0xf9434
+ pop bx ; 5b ; 0xf9435
+ pop bp ; 5d ; 0xf9436
+ retn ; c3 ; 0xf9437
+ ; disGetNextSymbol 0xf9438 LB 0x1ea0 -> off=0x17 cb=000000000000013a uValue=00000000000f7e4f 'ahci_init'
+ db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 038h, 095h, 016h, 095h, 01ch, 095h, 022h, 095h, 028h
+ db 095h, 02eh, 095h, 034h, 095h, 038h, 095h
+ahci_init: ; 0xf944f LB 0x13a
+ push bp ; 55 ; 0xf944f ahci.c:939
+ mov bp, sp ; 89 e5 ; 0xf9450
+ push si ; 56 ; 0xf9452
+ push di ; 57 ; 0xf9453
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf9454
+ mov ax, 00601h ; b8 01 06 ; 0xf9457 ahci.c:943
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf945a
+ call 0ace9h ; e8 89 18 ; 0xf945d
+ mov dx, ax ; 89 c2 ; 0xf9460
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9462 ahci.c:944
+ je short 094b3h ; 74 4c ; 0xf9465
+ xor al, al ; 30 c0 ; 0xf9467 ahci.c:949
+ shr ax, 008h ; c1 e8 08 ; 0xf9469
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf946c
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf946f ahci.c:950
+ xor dh, dh ; 30 f6 ; 0xf9472 ahci.c:955
+ xor ah, ah ; 30 e4 ; 0xf9474
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf9476
+ call 0ad1ch ; e8 a0 18 ; 0xf9479
+ mov cl, al ; 88 c1 ; 0xf947c
+ test cl, cl ; 84 c9 ; 0xf947e ahci.c:957
+ je short 094b6h ; 74 34 ; 0xf9480
+ mov bl, cl ; 88 cb ; 0xf9482 ahci.c:959
+ xor bh, bh ; 30 ff ; 0xf9484
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9486
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9489
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf948c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf948f
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf9492
+ mov byte [bp-013h], bh ; 88 7e ed ; 0xf9495
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9498
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf949b
+ call 0ad1ch ; e8 7b 18 ; 0xf949e
+ cmp AL, strict byte 012h ; 3c 12 ; 0xf94a1 ahci.c:963
+ je short 094b6h ; 74 11 ; 0xf94a3
+ mov bl, cl ; 88 cb ; 0xf94a5 ahci.c:967
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf94a7
+ xor bh, bh ; 30 ff ; 0xf94a9
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf94ab
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf94ae
+ jmp short 09479h ; eb c6 ; 0xf94b1 ahci.c:968
+ jmp near 09582h ; e9 cc 00 ; 0xf94b3
+ test cl, cl ; 84 c9 ; 0xf94b6 ahci.c:970
+ je short 094b3h ; 74 f9 ; 0xf94b8
+ add cl, 002h ; 80 c1 02 ; 0xf94ba ahci.c:977
+ mov bl, cl ; 88 cb ; 0xf94bd ahci.c:979
+ xor bh, bh ; 30 ff ; 0xf94bf
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf94c1
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf94c4
+ mov byte [bp-011h], bh ; 88 7e ef ; 0xf94c7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf94ca
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf94cd
+ mov byte [bp-00bh], bh ; 88 7e f5 ; 0xf94d0
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf94d3
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf94d6
+ call 0ad1ch ; e8 40 18 ; 0xf94d9
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf94dc ahci.c:980
+ jne short 094b3h ; 75 d3 ; 0xf94de
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf94e0 ahci.c:983
+ mov bl, cl ; 88 cb ; 0xf94e4 ahci.c:985
+ add bl, 002h ; 80 c3 02 ; 0xf94e6
+ xor bh, bh ; 30 ff ; 0xf94e9
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf94eb
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf94ee
+ call 0ad4ah ; e8 56 18 ; 0xf94f1
+ mov dx, ax ; 89 c2 ; 0xf94f4
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf94f6 ahci.c:989
+ sub ax, strict word 00004h ; 2d 04 00 ; 0xf94f9
+ cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf94fc
+ jnbe short 09538h ; 77 37 ; 0xf94ff
+ push CS ; 0e ; 0xf9501
+ pop ES ; 07 ; 0xf9502
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf9503
+ mov di, 09438h ; bf 38 94 ; 0xf9506
+ repne scasb ; f2 ae ; 0xf9509
+ sal cx, 1 ; d1 e1 ; 0xf950b
+ mov di, cx ; 89 cf ; 0xf950d
+ mov ax, word [cs:di-06bc1h] ; 2e 8b 85 3f 94 ; 0xf950f
+ jmp ax ; ff e0 ; 0xf9514
+ mov byte [bp-008h], 010h ; c6 46 f8 10 ; 0xf9516 ahci.c:992
+ jmp short 09538h ; eb 1c ; 0xf951a ahci.c:993
+ mov byte [bp-008h], 014h ; c6 46 f8 14 ; 0xf951c ahci.c:995
+ jmp short 09538h ; eb 16 ; 0xf9520 ahci.c:996
+ mov byte [bp-008h], 018h ; c6 46 f8 18 ; 0xf9522 ahci.c:998
+ jmp short 09538h ; eb 10 ; 0xf9526 ahci.c:999
+ mov byte [bp-008h], 01ch ; c6 46 f8 1c ; 0xf9528 ahci.c:1001
+ jmp short 09538h ; eb 0a ; 0xf952c ahci.c:1002
+ mov byte [bp-008h], 020h ; c6 46 f8 20 ; 0xf952e ahci.c:1004
+ jmp short 09538h ; eb 04 ; 0xf9532 ahci.c:1005
+ mov byte [bp-008h], 024h ; c6 46 f8 24 ; 0xf9534 ahci.c:1007
+ mov si, dx ; 89 d6 ; 0xf9538 ahci.c:1016
+ shr si, 004h ; c1 ee 04 ; 0xf953a
+ sal si, 002h ; c1 e6 02 ; 0xf953d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9540 ahci.c:1018
+ test al, al ; 84 c0 ; 0xf9543
+ je short 09582h ; 74 3b ; 0xf9545
+ mov bl, al ; 88 c3 ; 0xf9547 ahci.c:1020
+ xor bh, bh ; 30 ff ; 0xf9549
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf954b
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf954e
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf9551
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9554
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf9557
+ mov byte [bp-015h], bh ; 88 7e eb ; 0xf955a
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf955d
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9560
+ call 0ad74h ; e8 0e 18 ; 0xf9563
+ test AL, strict byte 001h ; a8 01 ; 0xf9566 ahci.c:1024
+ je short 09582h ; 74 18 ; 0xf9568
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf956a ahci.c:1027
+ add si, ax ; 01 c6 ; 0xf956c
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf956e ahci.c:1030
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf9571
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9574
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9577
+ call 0adc2h ; e8 45 18 ; 0xf957a
+ mov ax, si ; 89 f0 ; 0xf957d ahci.c:1033
+ call 092e2h ; e8 60 fd ; 0xf957f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9582 ahci.c:1047
+ pop di ; 5f ; 0xf9585
+ pop si ; 5e ; 0xf9586
+ pop bp ; 5d ; 0xf9587
+ retn ; c3 ; 0xf9588
+ ; disGetNextSymbol 0xf9589 LB 0x1d4f -> off=0x0 cb=000000000000007b uValue=00000000000f7f89 'virtio_reg_set_bar_offset_length'
+virtio_reg_set_bar_offset_length: ; 0xf9589 LB 0x7b
+ push bp ; 55 ; 0xf9589 virtio.c:311
+ mov bp, sp ; 89 e5 ; 0xf958a
+ push cx ; 51 ; 0xf958c
+ push si ; 56 ; 0xf958d
+ push di ; 57 ; 0xf958e
+ mov si, ax ; 89 c6 ; 0xf958f
+ mov di, dx ; 89 d7 ; 0xf9591
+ mov cl, bl ; 88 d9 ; 0xf9593 virtio.c:313
+ xor ch, ch ; 30 ed ; 0xf9595
+ mov es, dx ; 8e c2 ; 0xf9597
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9599
+ add bl, 004h ; 80 c3 04 ; 0xf959e
+ xor bh, bh ; 30 ff ; 0xf95a1
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf95a3
+ xor dh, dh ; 30 f6 ; 0xf95a8
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf95aa
+ xor ah, ah ; 30 e4 ; 0xf95af
+ call 0ade7h ; e8 33 18 ; 0xf95b1
+ push word [bp+006h] ; ff 76 06 ; 0xf95b4 virtio.c:314
+ push word [bp+004h] ; ff 76 04 ; 0xf95b7
+ mov es, di ; 8e c7 ; 0xf95ba
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf95bc
+ add bl, 008h ; 80 c3 08 ; 0xf95c1
+ xor bh, bh ; 30 ff ; 0xf95c4
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf95c6
+ xor dh, dh ; 30 f6 ; 0xf95cb
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf95cd
+ xor ah, ah ; 30 e4 ; 0xf95d2
+ call 0ae0ch ; e8 35 18 ; 0xf95d4
+ push word [bp+00ah] ; ff 76 0a ; 0xf95d7 virtio.c:315
+ push word [bp+008h] ; ff 76 08 ; 0xf95da
+ mov es, di ; 8e c7 ; 0xf95dd
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf95df
+ add bl, 00ch ; 80 c3 0c ; 0xf95e4
+ xor bh, bh ; 30 ff ; 0xf95e7
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf95e9
+ xor dh, dh ; 30 f6 ; 0xf95ee
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf95f0
+ xor ah, ah ; 30 e4 ; 0xf95f5
+ call 0ae0ch ; e8 12 18 ; 0xf95f7
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf95fa virtio.c:316
+ pop di ; 5f ; 0xf95fd
+ pop si ; 5e ; 0xf95fe
+ pop cx ; 59 ; 0xf95ff
+ pop bp ; 5d ; 0xf9600
+ retn 00008h ; c2 08 00 ; 0xf9601
+ ; disGetNextSymbol 0xf9604 LB 0x1cd4 -> off=0x0 cb=0000000000000035 uValue=00000000000f8004 'virtio_reg_common_access_prepare'
+virtio_reg_common_access_prepare: ; 0xf9604 LB 0x35
+ push bp ; 55 ; 0xf9604 virtio.c:318
+ mov bp, sp ; 89 e5 ; 0xf9605
+ push si ; 56 ; 0xf9607
+ mov si, ax ; 89 c6 ; 0xf9608
+ mov es, dx ; 8e c2 ; 0xf960a
+ push word [bp+006h] ; ff 76 06 ; 0xf960c virtio.c:320
+ push word [bp+004h] ; ff 76 04 ; 0xf960f
+ xor dx, dx ; 31 d2 ; 0xf9612
+ mov ax, word [es:si+00080h] ; 26 8b 84 80 00 ; 0xf9614
+ add ax, bx ; 01 d8 ; 0xf9619
+ mov bx, word [es:si+00082h] ; 26 8b 9c 82 00 ; 0xf961b
+ adc bx, dx ; 11 d3 ; 0xf9620
+ push bx ; 53 ; 0xf9622
+ push ax ; 50 ; 0xf9623
+ mov bl, byte [es:si+07ch] ; 26 8a 5c 7c ; 0xf9624
+ xor bh, bh ; 30 ff ; 0xf9628
+ mov ax, si ; 89 f0 ; 0xf962a
+ mov dx, es ; 8c c2 ; 0xf962c
+ call 09589h ; e8 58 ff ; 0xf962e
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9631 virtio.c:324
+ pop si ; 5e ; 0xf9634
+ pop bp ; 5d ; 0xf9635
+ retn 00004h ; c2 04 00 ; 0xf9636
+ ; disGetNextSymbol 0xf9639 LB 0x1c9f -> off=0x0 cb=0000000000000036 uValue=00000000000f8039 'virtio_reg_dev_access_prepare'
+virtio_reg_dev_access_prepare: ; 0xf9639 LB 0x36
+ push bp ; 55 ; 0xf9639 virtio.c:326
+ mov bp, sp ; 89 e5 ; 0xf963a
+ push si ; 56 ; 0xf963c
+ mov si, ax ; 89 c6 ; 0xf963d
+ mov es, dx ; 8e c2 ; 0xf963f
+ push word [bp+006h] ; ff 76 06 ; 0xf9641 virtio.c:328
+ push word [bp+004h] ; ff 76 04 ; 0xf9644
+ xor dx, dx ; 31 d2 ; 0xf9647
+ mov ax, word [es:si+000a4h] ; 26 8b 84 a4 00 ; 0xf9649
+ add ax, bx ; 01 d8 ; 0xf964e
+ mov bx, word [es:si+000a6h] ; 26 8b 9c a6 00 ; 0xf9650
+ adc bx, dx ; 11 d3 ; 0xf9655
+ push bx ; 53 ; 0xf9657
+ push ax ; 50 ; 0xf9658
+ mov bl, byte [es:si+000a0h] ; 26 8a 9c a0 00 ; 0xf9659
+ xor bh, bh ; 30 ff ; 0xf965e
+ mov ax, si ; 89 f0 ; 0xf9660
+ mov dx, es ; 8c c2 ; 0xf9662
+ call 09589h ; e8 22 ff ; 0xf9664
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9667 virtio.c:332
+ pop si ; 5e ; 0xf966a
+ pop bp ; 5d ; 0xf966b
+ retn 00004h ; c2 04 00 ; 0xf966c
+ ; disGetNextSymbol 0xf966f LB 0x1c69 -> off=0x0 cb=0000000000000036 uValue=00000000000f806f 'virtio_reg_notify_access_prepare'
+virtio_reg_notify_access_prepare: ; 0xf966f LB 0x36
+ push bp ; 55 ; 0xf966f virtio.c:334
+ mov bp, sp ; 89 e5 ; 0xf9670
+ push si ; 56 ; 0xf9672
+ mov si, ax ; 89 c6 ; 0xf9673
+ mov es, dx ; 8e c2 ; 0xf9675
+ push word [bp+006h] ; ff 76 06 ; 0xf9677 virtio.c:336
+ push word [bp+004h] ; ff 76 04 ; 0xf967a
+ xor dx, dx ; 31 d2 ; 0xf967d
+ mov ax, word [es:si+0008ch] ; 26 8b 84 8c 00 ; 0xf967f
+ add ax, bx ; 01 d8 ; 0xf9684
+ mov bx, word [es:si+0008eh] ; 26 8b 9c 8e 00 ; 0xf9686
+ adc bx, dx ; 11 d3 ; 0xf968b
+ push bx ; 53 ; 0xf968d
+ push ax ; 50 ; 0xf968e
+ mov bl, byte [es:si+00088h] ; 26 8a 9c 88 00 ; 0xf968f
+ xor bh, bh ; 30 ff ; 0xf9694
+ mov ax, si ; 89 f0 ; 0xf9696
+ mov dx, es ; 8c c2 ; 0xf9698
+ call 09589h ; e8 ec fe ; 0xf969a
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf969d virtio.c:340
+ pop si ; 5e ; 0xf96a0
+ pop bp ; 5d ; 0xf96a1
+ retn 00004h ; c2 04 00 ; 0xf96a2
+ ; disGetNextSymbol 0xf96a5 LB 0x1c33 -> off=0x0 cb=0000000000000024 uValue=00000000000f80a5 'virtio_reg_isr_prepare'
+virtio_reg_isr_prepare: ; 0xf96a5 LB 0x24
+ push bp ; 55 ; 0xf96a5 virtio.c:342
+ mov bp, sp ; 89 e5 ; 0xf96a6
+ push si ; 56 ; 0xf96a8
+ mov si, ax ; 89 c6 ; 0xf96a9
+ mov es, dx ; 8e c2 ; 0xf96ab
+ push cx ; 51 ; 0xf96ad virtio.c:344
+ push bx ; 53 ; 0xf96ae
+ push word [es:si+0009ah] ; 26 ff b4 9a 00 ; 0xf96af
+ push word [es:si+00098h] ; 26 ff b4 98 00 ; 0xf96b4
+ mov bl, byte [es:si+00094h] ; 26 8a 9c 94 00 ; 0xf96b9
+ xor bh, bh ; 30 ff ; 0xf96be
+ call 09589h ; e8 c6 fe ; 0xf96c0
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf96c3 virtio.c:348
+ pop si ; 5e ; 0xf96c6
+ pop bp ; 5d ; 0xf96c7
+ retn ; c3 ; 0xf96c8
+ ; disGetNextSymbol 0xf96c9 LB 0x1c0f -> off=0x0 cb=0000000000000034 uValue=00000000000f80c9 'virtio_reg_common_read_u8'
+virtio_reg_common_read_u8: ; 0xf96c9 LB 0x34
+ push bp ; 55 ; 0xf96c9 virtio.c:350
+ mov bp, sp ; 89 e5 ; 0xf96ca
+ push cx ; 51 ; 0xf96cc
+ push si ; 56 ; 0xf96cd
+ mov si, ax ; 89 c6 ; 0xf96ce
+ mov cx, dx ; 89 d1 ; 0xf96d0
+ push strict byte 00000h ; 6a 00 ; 0xf96d2 virtio.c:352
+ push strict byte 00001h ; 6a 01 ; 0xf96d4
+ call 09604h ; e8 2b ff ; 0xf96d6
+ mov es, cx ; 8e c1 ; 0xf96d9 virtio.c:353
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf96db
+ add bl, 010h ; 80 c3 10 ; 0xf96e0
+ xor bh, bh ; 30 ff ; 0xf96e3
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf96e5
+ xor dh, dh ; 30 f6 ; 0xf96ea
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf96ec
+ xor ah, ah ; 30 e4 ; 0xf96f1
+ call 0ad1ch ; e8 26 16 ; 0xf96f3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf96f6 virtio.c:354
+ pop si ; 5e ; 0xf96f9
+ pop cx ; 59 ; 0xf96fa
+ pop bp ; 5d ; 0xf96fb
+ retn ; c3 ; 0xf96fc
+ ; disGetNextSymbol 0xf96fd LB 0x1bdb -> off=0x0 cb=0000000000000036 uValue=00000000000f80fd 'virtio_reg_common_write_u8'
+virtio_reg_common_write_u8: ; 0xf96fd LB 0x36
+ push bp ; 55 ; 0xf96fd virtio.c:356
+ mov bp, sp ; 89 e5 ; 0xf96fe
+ push si ; 56 ; 0xf9700
+ push di ; 57 ; 0xf9701
+ mov si, ax ; 89 c6 ; 0xf9702
+ mov di, dx ; 89 d7 ; 0xf9704
+ push strict byte 00000h ; 6a 00 ; 0xf9706 virtio.c:358
+ push strict byte 00001h ; 6a 01 ; 0xf9708
+ call 09604h ; e8 f7 fe ; 0xf970a
+ xor ch, ch ; 30 ed ; 0xf970d virtio.c:359
+ mov es, di ; 8e c7 ; 0xf970f
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9711
+ add bl, 010h ; 80 c3 10 ; 0xf9716
+ xor bh, bh ; 30 ff ; 0xf9719
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf971b
+ xor dh, dh ; 30 f6 ; 0xf9720
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf9722
+ xor ah, ah ; 30 e4 ; 0xf9727
+ call 0ade7h ; e8 bb 16 ; 0xf9729
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf972c virtio.c:360
+ pop di ; 5f ; 0xf972f
+ pop si ; 5e ; 0xf9730
+ pop bp ; 5d ; 0xf9731
+ retn ; c3 ; 0xf9732
+ ; disGetNextSymbol 0xf9733 LB 0x1ba5 -> off=0x0 cb=0000000000000034 uValue=00000000000f8133 'virtio_reg_common_read_u16'
+virtio_reg_common_read_u16: ; 0xf9733 LB 0x34
+ push bp ; 55 ; 0xf9733 virtio.c:362
+ mov bp, sp ; 89 e5 ; 0xf9734
+ push cx ; 51 ; 0xf9736
+ push si ; 56 ; 0xf9737
+ mov si, ax ; 89 c6 ; 0xf9738
+ mov cx, dx ; 89 d1 ; 0xf973a
+ push strict byte 00000h ; 6a 00 ; 0xf973c virtio.c:364
+ push strict byte 00002h ; 6a 02 ; 0xf973e
+ call 09604h ; e8 c1 fe ; 0xf9740
+ mov es, cx ; 8e c1 ; 0xf9743 virtio.c:365
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9745
+ add bl, 010h ; 80 c3 10 ; 0xf974a
+ xor bh, bh ; 30 ff ; 0xf974d
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf974f
+ xor dh, dh ; 30 f6 ; 0xf9754
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf9756
+ xor ah, ah ; 30 e4 ; 0xf975b
+ call 0ad4ah ; e8 ea 15 ; 0xf975d
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9760 virtio.c:366
+ pop si ; 5e ; 0xf9763
+ pop cx ; 59 ; 0xf9764
+ pop bp ; 5d ; 0xf9765
+ retn ; c3 ; 0xf9766
+ ; disGetNextSymbol 0xf9767 LB 0x1b71 -> off=0x0 cb=0000000000000034 uValue=00000000000f8167 'virtio_reg_common_write_u16'
+virtio_reg_common_write_u16: ; 0xf9767 LB 0x34
+ push bp ; 55 ; 0xf9767 virtio.c:368
+ mov bp, sp ; 89 e5 ; 0xf9768
+ push si ; 56 ; 0xf976a
+ push di ; 57 ; 0xf976b
+ mov si, ax ; 89 c6 ; 0xf976c
+ mov di, dx ; 89 d7 ; 0xf976e
+ push strict byte 00000h ; 6a 00 ; 0xf9770 virtio.c:370
+ push strict byte 00002h ; 6a 02 ; 0xf9772
+ call 09604h ; e8 8d fe ; 0xf9774
+ mov es, di ; 8e c7 ; 0xf9777 virtio.c:371
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9779
+ add bl, 010h ; 80 c3 10 ; 0xf977e
+ xor bh, bh ; 30 ff ; 0xf9781
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf9783
+ xor dh, dh ; 30 f6 ; 0xf9788
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf978a
+ xor ah, ah ; 30 e4 ; 0xf978f
+ call 0adc2h ; e8 2e 16 ; 0xf9791
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9794 virtio.c:372
+ pop di ; 5f ; 0xf9797
+ pop si ; 5e ; 0xf9798
+ pop bp ; 5d ; 0xf9799
+ retn ; c3 ; 0xf979a
+ ; disGetNextSymbol 0xf979b LB 0x1b3d -> off=0x0 cb=000000000000003c uValue=00000000000f819b 'virtio_reg_common_write_u32'
+virtio_reg_common_write_u32: ; 0xf979b LB 0x3c
+ push bp ; 55 ; 0xf979b virtio.c:374
+ mov bp, sp ; 89 e5 ; 0xf979c
+ push cx ; 51 ; 0xf979e
+ push si ; 56 ; 0xf979f
+ mov si, ax ; 89 c6 ; 0xf97a0
+ mov cx, dx ; 89 d1 ; 0xf97a2
+ push strict byte 00000h ; 6a 00 ; 0xf97a4 virtio.c:376
+ push strict byte 00004h ; 6a 04 ; 0xf97a6
+ call 09604h ; e8 59 fe ; 0xf97a8
+ push word [bp+006h] ; ff 76 06 ; 0xf97ab virtio.c:377
+ push word [bp+004h] ; ff 76 04 ; 0xf97ae
+ mov es, cx ; 8e c1 ; 0xf97b1
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf97b3
+ add bl, 010h ; 80 c3 10 ; 0xf97b8
+ xor bh, bh ; 30 ff ; 0xf97bb
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf97bd
+ xor dh, dh ; 30 f6 ; 0xf97c2
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf97c4
+ xor ah, ah ; 30 e4 ; 0xf97c9
+ call 0ae0ch ; e8 3e 16 ; 0xf97cb
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf97ce virtio.c:378
+ pop si ; 5e ; 0xf97d1
+ pop cx ; 59 ; 0xf97d2
+ pop bp ; 5d ; 0xf97d3
+ retn 00004h ; c2 04 00 ; 0xf97d4
+ ; disGetNextSymbol 0xf97d7 LB 0x1b01 -> off=0x0 cb=0000000000000034 uValue=00000000000f81d7 'virtio_reg_dev_cfg_read_u32'
+virtio_reg_dev_cfg_read_u32: ; 0xf97d7 LB 0x34
+ push bp ; 55 ; 0xf97d7 virtio.c:380
+ mov bp, sp ; 89 e5 ; 0xf97d8
+ push cx ; 51 ; 0xf97da
+ push si ; 56 ; 0xf97db
+ mov si, ax ; 89 c6 ; 0xf97dc
+ mov cx, dx ; 89 d1 ; 0xf97de
+ push strict byte 00000h ; 6a 00 ; 0xf97e0 virtio.c:382
+ push strict byte 00004h ; 6a 04 ; 0xf97e2
+ call 09639h ; e8 52 fe ; 0xf97e4
+ mov es, cx ; 8e c1 ; 0xf97e7 virtio.c:383
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf97e9
+ add bl, 010h ; 80 c3 10 ; 0xf97ee
+ xor bh, bh ; 30 ff ; 0xf97f1
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf97f3
+ xor dh, dh ; 30 f6 ; 0xf97f8
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf97fa
+ xor ah, ah ; 30 e4 ; 0xf97ff
+ call 0ad74h ; e8 70 15 ; 0xf9801
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9804 virtio.c:384
+ pop si ; 5e ; 0xf9807
+ pop cx ; 59 ; 0xf9808
+ pop bp ; 5d ; 0xf9809
+ retn ; c3 ; 0xf980a
+ ; disGetNextSymbol 0xf980b LB 0x1acd -> off=0x0 cb=000000000000003c uValue=00000000000f820b 'virtio_reg_dev_cfg_write_u32'
+virtio_reg_dev_cfg_write_u32: ; 0xf980b LB 0x3c
+ push bp ; 55 ; 0xf980b virtio.c:386
+ mov bp, sp ; 89 e5 ; 0xf980c
+ push cx ; 51 ; 0xf980e
+ push si ; 56 ; 0xf980f
+ mov si, ax ; 89 c6 ; 0xf9810
+ mov cx, dx ; 89 d1 ; 0xf9812
+ push strict byte 00000h ; 6a 00 ; 0xf9814 virtio.c:388
+ push strict byte 00004h ; 6a 04 ; 0xf9816
+ call 09639h ; e8 1e fe ; 0xf9818
+ push word [bp+006h] ; ff 76 06 ; 0xf981b virtio.c:389
+ push word [bp+004h] ; ff 76 04 ; 0xf981e
+ mov es, cx ; 8e c1 ; 0xf9821
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9823
+ add bl, 010h ; 80 c3 10 ; 0xf9828
+ xor bh, bh ; 30 ff ; 0xf982b
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf982d
+ xor dh, dh ; 30 f6 ; 0xf9832
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf9834
+ xor ah, ah ; 30 e4 ; 0xf9839
+ call 0ae0ch ; e8 ce 15 ; 0xf983b
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf983e virtio.c:390
+ pop si ; 5e ; 0xf9841
+ pop cx ; 59 ; 0xf9842
+ pop bp ; 5d ; 0xf9843
+ retn 00004h ; c2 04 00 ; 0xf9844
+ ; disGetNextSymbol 0xf9847 LB 0x1a91 -> off=0x0 cb=0000000000000034 uValue=00000000000f8247 'virtio_reg_notify_write_u16'
+virtio_reg_notify_write_u16: ; 0xf9847 LB 0x34
+ push bp ; 55 ; 0xf9847 virtio.c:392
+ mov bp, sp ; 89 e5 ; 0xf9848
+ push si ; 56 ; 0xf984a
+ push di ; 57 ; 0xf984b
+ mov si, ax ; 89 c6 ; 0xf984c
+ mov di, dx ; 89 d7 ; 0xf984e
+ push strict byte 00000h ; 6a 00 ; 0xf9850 virtio.c:394
+ push strict byte 00002h ; 6a 02 ; 0xf9852
+ call 0966fh ; e8 18 fe ; 0xf9854
+ mov es, di ; 8e c7 ; 0xf9857 virtio.c:395
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9859
+ add bl, 010h ; 80 c3 10 ; 0xf985e
+ xor bh, bh ; 30 ff ; 0xf9861
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf9863
+ xor dh, dh ; 30 f6 ; 0xf9868
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf986a
+ xor ah, ah ; 30 e4 ; 0xf986f
+ call 0adc2h ; e8 4e 15 ; 0xf9871
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9874 virtio.c:396
+ pop di ; 5f ; 0xf9877
+ pop si ; 5e ; 0xf9878
+ pop bp ; 5d ; 0xf9879
+ retn ; c3 ; 0xf987a
+ ; disGetNextSymbol 0xf987b LB 0x1a5d -> off=0x0 cb=0000000000000039 uValue=00000000000f827b 'virtio_reg_isr_read_u8'
+virtio_reg_isr_read_u8: ; 0xf987b LB 0x39
+ push bp ; 55 ; 0xf987b virtio.c:398
+ mov bp, sp ; 89 e5 ; 0xf987c
+ push bx ; 53 ; 0xf987e
+ push cx ; 51 ; 0xf987f
+ push si ; 56 ; 0xf9880
+ push di ; 57 ; 0xf9881
+ mov si, ax ; 89 c6 ; 0xf9882
+ mov di, dx ; 89 d7 ; 0xf9884
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf9886 virtio.c:400
+ xor cx, cx ; 31 c9 ; 0xf9889
+ call 096a5h ; e8 17 fe ; 0xf988b
+ mov es, di ; 8e c7 ; 0xf988e virtio.c:401
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9890
+ add bl, 010h ; 80 c3 10 ; 0xf9895
+ xor bh, bh ; 30 ff ; 0xf9898
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf989a
+ xor dh, dh ; 30 f6 ; 0xf989f
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf98a1
+ xor ah, ah ; 30 e4 ; 0xf98a6
+ call 0ad1ch ; e8 71 14 ; 0xf98a8
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf98ab virtio.c:402
+ pop di ; 5f ; 0xf98ae
+ pop si ; 5e ; 0xf98af
+ pop cx ; 59 ; 0xf98b0
+ pop bx ; 5b ; 0xf98b1
+ pop bp ; 5d ; 0xf98b2
+ retn ; c3 ; 0xf98b3
+ ; disGetNextSymbol 0xf98b4 LB 0x1a24 -> off=0x0 cb=000000000000003a uValue=00000000000f82b4 'virtio_mem_alloc'
+virtio_mem_alloc: ; 0xf98b4 LB 0x3a
+ push bx ; 53 ; 0xf98b4 virtio.c:407
+ push cx ; 51 ; 0xf98b5
+ push dx ; 52 ; 0xf98b6
+ push di ; 57 ; 0xf98b7
+ push bp ; 55 ; 0xf98b8
+ mov bp, sp ; 89 e5 ; 0xf98b9
+ mov di, 00413h ; bf 13 04 ; 0xf98bb virtio.c:48
+ xor ax, ax ; 31 c0 ; 0xf98be
+ mov es, ax ; 8e c0 ; 0xf98c0
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf98c2
+ test ax, ax ; 85 c0 ; 0xf98c5 virtio.c:416
+ je short 098e8h ; 74 1f ; 0xf98c7
+ dec ax ; 48 ; 0xf98c9 virtio.c:417
+ mov bx, ax ; 89 c3 ; 0xf98ca
+ xor dx, dx ; 31 d2 ; 0xf98cc virtio.c:420
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf98ce
+ sal ax, 1 ; d1 e0 ; 0xf98d1
+ rcl dx, 1 ; d1 d2 ; 0xf98d3
+ loop 098d1h ; e2 fa ; 0xf98d5
+ mov di, dx ; 89 d7 ; 0xf98d7
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf98d9
+ shr di, 1 ; d1 ef ; 0xf98dc
+ rcr ax, 1 ; d1 d8 ; 0xf98de
+ loop 098dch ; e2 fa ; 0xf98e0
+ mov di, 00413h ; bf 13 04 ; 0xf98e2 virtio.c:53
+ mov word [es:di], bx ; 26 89 1d ; 0xf98e5
+ pop bp ; 5d ; 0xf98e8 virtio.c:425
+ pop di ; 5f ; 0xf98e9
+ pop dx ; 5a ; 0xf98ea
+ pop cx ; 59 ; 0xf98eb
+ pop bx ; 5b ; 0xf98ec
+ retn ; c3 ; 0xf98ed
+ ; disGetNextSymbol 0xf98ee LB 0x19ea -> off=0x0 cb=000000000000001e uValue=00000000000f82ee 'virtio_addr_to_phys'
+virtio_addr_to_phys: ; 0xf98ee LB 0x1e
+ push bx ; 53 ; 0xf98ee virtio.c:430
+ push cx ; 51 ; 0xf98ef
+ push bp ; 55 ; 0xf98f0
+ mov bp, sp ; 89 e5 ; 0xf98f1
+ mov bx, ax ; 89 c3 ; 0xf98f3
+ mov ax, dx ; 89 d0 ; 0xf98f5
+ xor dx, dx ; 31 d2 ; 0xf98f7 virtio.c:432
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf98f9
+ sal ax, 1 ; d1 e0 ; 0xf98fc
+ rcl dx, 1 ; d1 d2 ; 0xf98fe
+ loop 098fch ; e2 fa ; 0xf9900
+ xor cx, cx ; 31 c9 ; 0xf9902
+ add ax, bx ; 01 d8 ; 0xf9904
+ adc dx, cx ; 11 ca ; 0xf9906
+ pop bp ; 5d ; 0xf9908 virtio.c:433
+ pop cx ; 59 ; 0xf9909
+ pop bx ; 5b ; 0xf990a
+ retn ; c3 ; 0xf990b
+ ; disGetNextSymbol 0xf990c LB 0x19cc -> off=0x0 cb=0000000000000169 uValue=00000000000f830c 'virtio_scsi_cmd_data_out'
+virtio_scsi_cmd_data_out: ; 0xf990c LB 0x169
+ push bp ; 55 ; 0xf990c virtio.c:435
+ mov bp, sp ; 89 e5 ; 0xf990d
+ push cx ; 51 ; 0xf990f
+ push si ; 56 ; 0xf9910
+ push di ; 57 ; 0xf9911
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9912
+ mov si, ax ; 89 c6 ; 0xf9915
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf9917
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf991a
+ mov es, dx ; 8e c2 ; 0xf991d virtio.c:438
+ mov ax, word [es:si+05eh] ; 26 8b 44 5e ; 0xf991f
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9923
+ mov ax, si ; 89 f0 ; 0xf9926 virtio.c:440
+ add ax, 000b6h ; 05 b6 00 ; 0xf9928
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf992b
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf992e
+ xor bx, bx ; 31 db ; 0xf9931
+ call 0afb0h ; e8 7a 16 ; 0xf9933
+ lea di, [si+000dah] ; 8d bc da 00 ; 0xf9936 virtio.c:441
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf993a
+ xor bx, bx ; 31 db ; 0xf993d
+ mov ax, di ; 89 f8 ; 0xf993f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9941
+ call 0afb0h ; e8 69 16 ; 0xf9944
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9947 virtio.c:443
+ mov byte [es:si+000b6h], 001h ; 26 c6 84 b6 00 01 ; 0xf994a
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9950 virtio.c:444
+ mov byte [es:si+000b7h], al ; 26 88 84 b7 00 ; 0xf9953
+ mov word [es:si+000b8h], strict word 00000h ; 26 c7 84 b8 00 00 00 ; 0xf9958 virtio.c:445
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf995f virtio.c:447
+ xor ah, ah ; 30 e4 ; 0xf9962
+ push ax ; 50 ; 0xf9964
+ lea ax, [si+000c9h] ; 8d 84 c9 00 ; 0xf9965
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9969
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf996c
+ mov dx, es ; 8c c2 ; 0xf996f
+ call 0afc0h ; e8 4c 16 ; 0xf9971
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9974 virtio.c:450
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9977
+ call 098eeh ; e8 71 ff ; 0xf997a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf997d
+ mov word [es:si], ax ; 26 89 04 ; 0xf9980
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf9983
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf9987 virtio.c:451
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf998d
+ mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf9993 virtio.c:452
+ mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf9999
+ mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf999f virtio.c:453
+ mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf99a5 virtio.c:454
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf99ab virtio.c:456
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf99ae
+ call 098eeh ; e8 3a ff ; 0xf99b1
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf99b4
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf99b7
+ mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf99bb
+ mov word [es:si+014h], strict word 00000h ; 26 c7 44 14 00 00 ; 0xf99bf virtio.c:457
+ mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf99c5
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf99cb virtio.c:458
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf99ce
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf99d2
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf99d5
+ mov word [es:si+01ch], strict word 00001h ; 26 c7 44 1c 01 00 ; 0xf99d9 virtio.c:459
+ mov word [es:si+01eh], strict word 00002h ; 26 c7 44 1e 02 00 ; 0xf99df virtio.c:460
+ mov ax, di ; 89 f8 ; 0xf99e5 virtio.c:462
+ mov dx, es ; 8c c2 ; 0xf99e7
+ call 098eeh ; e8 02 ff ; 0xf99e9
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf99ec
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf99ef
+ mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf99f3
+ mov word [es:si+024h], strict word 00000h ; 26 c7 44 24 00 00 ; 0xf99f7 virtio.c:463
+ mov word [es:si+026h], strict word 00000h ; 26 c7 44 26 00 00 ; 0xf99fd
+ mov word [es:si+028h], strict word 0002ch ; 26 c7 44 28 2c 00 ; 0xf9a03 virtio.c:464
+ mov word [es:si+02ah], strict word 00000h ; 26 c7 44 2a 00 00 ; 0xf9a09
+ mov word [es:si+02ch], strict word 00002h ; 26 c7 44 2c 02 00 ; 0xf9a0f virtio.c:465
+ mov word [es:si+02eh], strict word 00000h ; 26 c7 44 2e 00 00 ; 0xf9a15 virtio.c:466
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9a1b virtio.c:469
+ xor dx, dx ; 31 d2 ; 0xf9a1f
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf9a21
+ div bx ; f7 f3 ; 0xf9a24
+ add dx, dx ; 01 d2 ; 0xf9a26
+ mov di, si ; 89 f7 ; 0xf9a28
+ add di, dx ; 01 d7 ; 0xf9a2a
+ mov word [es:di+054h], strict word 00000h ; 26 c7 45 54 00 00 ; 0xf9a2c
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9a32 virtio.c:470
+ inc word [es:si+052h] ; 26 ff 44 52 ; 0xf9a36
+ mov bx, word [es:si+078h] ; 26 8b 5c 78 ; 0xf9a3a virtio.c:474
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9a3e
+ mov ax, si ; 89 f0 ; 0xf9a41
+ mov dx, es ; 8c c2 ; 0xf9a43
+ call 09847h ; e8 ff fd ; 0xf9a45
+ les ax, [bp-00ch] ; c4 46 f4 ; 0xf9a48 virtio.c:477
+ cmp ax, word [es:si+05eh] ; 26 3b 44 5e ; 0xf9a4b
+ je short 09a48h ; 74 f7 ; 0xf9a4f
+ mov ax, si ; 89 f0 ; 0xf9a51 virtio.c:482
+ mov dx, es ; 8c c2 ; 0xf9a53
+ call 0987bh ; e8 23 fe ; 0xf9a55
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9a58 virtio.c:484
+ mov al, byte [es:si+000e5h] ; 26 8a 84 e5 00 ; 0xf9a5b
+ test al, al ; 84 c0 ; 0xf9a60
+ je short 09a69h ; 74 05 ; 0xf9a62
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9a64 virtio.c:485
+ jmp short 09a6bh ; eb 02 ; 0xf9a67
+ xor ah, ah ; 30 e4 ; 0xf9a69 virtio.c:487
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9a6b virtio.c:488
+ pop di ; 5f ; 0xf9a6e
+ pop si ; 5e ; 0xf9a6f
+ pop cx ; 59 ; 0xf9a70
+ pop bp ; 5d ; 0xf9a71
+ retn 0000eh ; c2 0e 00 ; 0xf9a72
+ ; disGetNextSymbol 0xf9a75 LB 0x1863 -> off=0x0 cb=0000000000000221 uValue=00000000000f8475 'virtio_scsi_cmd_data_in'
+virtio_scsi_cmd_data_in: ; 0xf9a75 LB 0x221
+ push bp ; 55 ; 0xf9a75 virtio.c:490
+ mov bp, sp ; 89 e5 ; 0xf9a76
+ push cx ; 51 ; 0xf9a78
+ push si ; 56 ; 0xf9a79
+ push di ; 57 ; 0xf9a7a
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9a7b
+ mov si, ax ; 89 c6 ; 0xf9a7e
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf9a80
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9a83
+ mov es, dx ; 8e c2 ; 0xf9a86 virtio.c:494
+ mov ax, word [es:si+05eh] ; 26 8b 44 5e ; 0xf9a88
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9a8c
+ lea di, [si+000b6h] ; 8d bc b6 00 ; 0xf9a8f virtio.c:497
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf9a93
+ xor bx, bx ; 31 db ; 0xf9a96
+ mov ax, di ; 89 f8 ; 0xf9a98
+ call 0afb0h ; e8 13 15 ; 0xf9a9a
+ mov ax, si ; 89 f0 ; 0xf9a9d virtio.c:498
+ add ax, 000dah ; 05 da 00 ; 0xf9a9f
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9aa2
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf9aa5
+ xor bx, bx ; 31 db ; 0xf9aa8
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9aaa
+ call 0afb0h ; e8 00 15 ; 0xf9aad
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9ab0 virtio.c:500
+ mov byte [es:si+000b6h], 001h ; 26 c6 84 b6 00 01 ; 0xf9ab3
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9ab9 virtio.c:501
+ mov byte [es:si+000b7h], al ; 26 88 84 b7 00 ; 0xf9abc
+ mov word [es:si+000b8h], strict word 00000h ; 26 c7 84 b8 00 00 00 ; 0xf9ac1 virtio.c:502
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9ac8 virtio.c:504
+ xor ah, ah ; 30 e4 ; 0xf9acb
+ push ax ; 50 ; 0xf9acd
+ lea ax, [si+000c9h] ; 8d 84 c9 00 ; 0xf9ace
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9ad2
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf9ad5
+ mov dx, es ; 8c c2 ; 0xf9ad8
+ call 0afc0h ; e8 e3 14 ; 0xf9ada
+ mov ax, di ; 89 f8 ; 0xf9add virtio.c:507
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9adf
+ call 098eeh ; e8 09 fe ; 0xf9ae2
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9ae5
+ mov word [es:si], ax ; 26 89 04 ; 0xf9ae8
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf9aeb
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf9aef virtio.c:508
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf9af5
+ mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf9afb virtio.c:509
+ mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf9b01
+ mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf9b07 virtio.c:510
+ mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf9b0d virtio.c:511
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9b13 virtio.c:515
+ mov dx, es ; 8c c2 ; 0xf9b16
+ call 098eeh ; e8 d3 fd ; 0xf9b18
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9b1b
+ lea bx, [si+010h] ; 8d 5c 10 ; 0xf9b1e
+ mov word [es:bx], ax ; 26 89 07 ; 0xf9b21
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf9b24
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf9b28 virtio.c:516
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9b2e
+ mov word [es:bx+008h], strict word 0002ch ; 26 c7 47 08 2c 00 ; 0xf9b34 virtio.c:517
+ mov word [es:bx+00ah], strict word 00000h ; 26 c7 47 0a 00 00 ; 0xf9b3a
+ mov word [es:bx+00ch], strict word 00003h ; 26 c7 47 0c 03 00 ; 0xf9b40 virtio.c:518
+ mov word [es:bx+00eh], strict word 00002h ; 26 c7 47 0e 02 00 ; 0xf9b46 virtio.c:519
+ mov CL, strict byte 002h ; b1 02 ; 0xf9b4c virtio.c:520
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9b4e virtio.c:523
+ test ax, ax ; 85 c0 ; 0xf9b51
+ je short 09b87h ; 74 32 ; 0xf9b53
+ lea bx, [si+020h] ; 8d 5c 20 ; 0xf9b55 virtio.c:525
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf9b58
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf9b5d
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf9b63 virtio.c:526
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9b69
+ mov word [es:bx+008h], ax ; 26 89 47 08 ; 0xf9b6f virtio.c:527
+ mov word [es:bx+00ah], strict word 00000h ; 26 c7 47 0a 00 00 ; 0xf9b73
+ mov word [es:bx+00ch], strict word 00003h ; 26 c7 47 0c 03 00 ; 0xf9b79 virtio.c:528
+ mov word [es:bx+00eh], strict word 00003h ; 26 c7 47 0e 03 00 ; 0xf9b7f virtio.c:529
+ mov CL, strict byte 003h ; b1 03 ; 0xf9b85 virtio.c:530
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9b87 virtio.c:533
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9b8a
+ call 098eeh ; e8 5e fd ; 0xf9b8d
+ mov di, ax ; 89 c7 ; 0xf9b90
+ mov al, cl ; 88 c8 ; 0xf9b92
+ xor ah, ah ; 30 e4 ; 0xf9b94
+ mov bx, ax ; 89 c3 ; 0xf9b96
+ sal bx, 004h ; c1 e3 04 ; 0xf9b98
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9b9b
+ add bx, si ; 01 f3 ; 0xf9b9e
+ mov word [es:bx], di ; 26 89 3f ; 0xf9ba0
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf9ba3
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf9ba7 virtio.c:534
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9bad
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf9bb3 virtio.c:535
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf9bb6
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf9bba
+ mov word [es:bx+00ah], dx ; 26 89 57 0a ; 0xf9bbd
+ mov word [es:bx+00ch], strict word 00002h ; 26 c7 47 0c 02 00 ; 0xf9bc1 virtio.c:536
+ cmp word [bp+012h], strict byte 00000h ; 83 7e 12 00 ; 0xf9bc7 virtio.c:537
+ je short 09bd2h ; 74 05 ; 0xf9bcb
+ mov dx, ax ; 89 c2 ; 0xf9bcd
+ inc dx ; 42 ; 0xf9bcf
+ jmp short 09bd4h ; eb 02 ; 0xf9bd0
+ xor dx, dx ; 31 d2 ; 0xf9bd2
+ mov al, cl ; 88 c8 ; 0xf9bd4
+ xor ah, ah ; 30 e4 ; 0xf9bd6
+ sal ax, 004h ; c1 e0 04 ; 0xf9bd8
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9bdb
+ mov bx, si ; 89 f3 ; 0xf9bde
+ add bx, ax ; 01 c3 ; 0xf9be0
+ mov word [es:bx+00eh], dx ; 26 89 57 0e ; 0xf9be2
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf9be6 virtio.c:538
+ cmp word [bp+012h], strict byte 00000h ; 83 7e 12 00 ; 0xf9be8 virtio.c:541
+ je short 09c36h ; 74 48 ; 0xf9bec
+ mov al, cl ; 88 c8 ; 0xf9bee virtio.c:543
+ xor ah, ah ; 30 e4 ; 0xf9bf0
+ sal ax, 004h ; c1 e0 04 ; 0xf9bf2
+ mov bx, si ; 89 f3 ; 0xf9bf5
+ add bx, ax ; 01 c3 ; 0xf9bf7
+ or byte [es:bx-004h], 001h ; 26 80 4f fc 01 ; 0xf9bf9
+ mov al, cl ; 88 c8 ; 0xf9bfe virtio.c:544
+ xor ah, ah ; 30 e4 ; 0xf9c00
+ mov word [es:bx-002h], ax ; 26 89 47 fe ; 0xf9c02
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf9c06 virtio.c:546
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf9c0b
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf9c11 virtio.c:547
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9c17
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf9c1d virtio.c:548
+ mov word [es:bx+008h], ax ; 26 89 47 08 ; 0xf9c20
+ mov word [es:bx+00ah], strict word 00000h ; 26 c7 47 0a 00 00 ; 0xf9c24
+ mov word [es:bx+00ch], strict word 00002h ; 26 c7 47 0c 02 00 ; 0xf9c2a virtio.c:549
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xf9c30 virtio.c:550
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9c36 virtio.c:555
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9c39
+ xor dx, dx ; 31 d2 ; 0xf9c3d
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf9c3f
+ div bx ; f7 f3 ; 0xf9c42
+ add dx, dx ; 01 d2 ; 0xf9c44
+ mov bx, si ; 89 f3 ; 0xf9c46
+ add bx, dx ; 01 d3 ; 0xf9c48
+ mov word [es:bx+054h], strict word 00000h ; 26 c7 47 54 00 00 ; 0xf9c4a
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9c50 virtio.c:556
+ inc word [es:si+052h] ; 26 ff 44 52 ; 0xf9c54
+ mov bx, word [es:si+078h] ; 26 8b 5c 78 ; 0xf9c58 virtio.c:560
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9c5c
+ mov ax, si ; 89 f0 ; 0xf9c5f
+ mov dx, es ; 8c c2 ; 0xf9c61
+ call 09847h ; e8 e1 fb ; 0xf9c63
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9c66 virtio.c:563
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9c69
+ cmp ax, word [es:si+05eh] ; 26 3b 44 5e ; 0xf9c6c
+ je short 09c66h ; 74 f4 ; 0xf9c70
+ mov ax, si ; 89 f0 ; 0xf9c72 virtio.c:568
+ mov dx, es ; 8c c2 ; 0xf9c74
+ call 0987bh ; e8 02 fc ; 0xf9c76
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9c79 virtio.c:570
+ mov al, byte [es:si+000e5h] ; 26 8a 84 e5 00 ; 0xf9c7c
+ test al, al ; 84 c0 ; 0xf9c81
+ je short 09c8ah ; 74 05 ; 0xf9c83
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9c85 virtio.c:571
+ jmp short 09c8ch ; eb 02 ; 0xf9c88
+ xor ah, ah ; 30 e4 ; 0xf9c8a virtio.c:573
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9c8c virtio.c:574
+ pop di ; 5f ; 0xf9c8f
+ pop si ; 5e ; 0xf9c90
+ pop cx ; 59 ; 0xf9c91
+ pop bp ; 5d ; 0xf9c92
+ retn 00012h ; c2 12 00 ; 0xf9c93
+ ; disGetNextSymbol 0xf9c96 LB 0x1642 -> off=0x0 cb=000000000000010c uValue=00000000000f8696 'virtio_scsi_read_sectors'
+virtio_scsi_read_sectors: ; 0xf9c96 LB 0x10c
+ push bp ; 55 ; 0xf9c96 virtio.c:583
+ mov bp, sp ; 89 e5 ; 0xf9c97
+ push si ; 56 ; 0xf9c99
+ push di ; 57 ; 0xf9c9a
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf9c9b
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf9c9e
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9ca1 virtio.c:591
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf9ca4
+ sub AL, strict byte 008h ; 2c 08 ; 0xf9ca8
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf9caa
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf9cad virtio.c:592
+ jbe short 09cc2h ; 76 11 ; 0xf9caf
+ xor ah, ah ; 30 e4 ; 0xf9cb1 virtio.c:593
+ push ax ; 50 ; 0xf9cb3
+ push 00d20h ; 68 20 0d ; 0xf9cb4
+ push 00d39h ; 68 39 0d ; 0xf9cb7
+ push strict byte 00007h ; 6a 07 ; 0xf9cba
+ call 0190eh ; e8 4f 7c ; 0xf9cbc
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf9cbf
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9cc2 virtio.c:595
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf9cc5
+ xor bx, bx ; 31 db ; 0xf9cc9 virtio.c:597
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9ccb
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9cd0 virtio.c:303
+ mov es, dx ; 8e c2 ; 0xf9cd4
+ mov word [es:bx+000b4h], ax ; 26 89 87 b4 00 ; 0xf9cd6
+ mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf9cdb virtio.c:599
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9ce0 virtio.c:600
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf9ce3
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf9ce7
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf9ceb
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf9cef
+ xchg ah, al ; 86 c4 ; 0xf9cf2
+ xchg bh, bl ; 86 df ; 0xf9cf4
+ xchg ch, cl ; 86 cd ; 0xf9cf6
+ xchg dh, dl ; 86 d6 ; 0xf9cf8
+ xchg dx, ax ; 92 ; 0xf9cfa
+ xchg bx, cx ; 87 cb ; 0xf9cfb
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9cfd
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf9d00
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf9d03
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf9d06
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9d09 virtio.c:601
+ mov ax, di ; 89 f8 ; 0xf9d0d virtio.c:602
+ xor dx, dx ; 31 d2 ; 0xf9d0f
+ xchg ah, al ; 86 c4 ; 0xf9d11
+ xchg dh, dl ; 86 d6 ; 0xf9d13
+ xchg dx, ax ; 92 ; 0xf9d15
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9d16
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9d19
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf9d1c virtio.c:603
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9d20 virtio.c:606
+ xor ah, ah ; 30 e4 ; 0xf9d23
+ sal ax, 002h ; c1 e0 02 ; 0xf9d25
+ mov bx, si ; 89 f3 ; 0xf9d28
+ add bx, ax ; 01 c3 ; 0xf9d2a
+ mov bl, byte [es:bx+00296h] ; 26 8a 9f 96 02 ; 0xf9d2c
+ push strict byte 00000h ; 6a 00 ; 0xf9d31 virtio.c:611
+ push strict byte 00000h ; 6a 00 ; 0xf9d33
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf9d35
+ xor ax, ax ; 31 c0 ; 0xf9d38
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf9d3a
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf9d3d
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf9d40
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf9d43
+ loop 09d40h ; e2 f8 ; 0xf9d46
+ push word [bp-008h] ; ff 76 f8 ; 0xf9d48
+ push word [bp-00ah] ; ff 76 f6 ; 0xf9d4b
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf9d4e
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf9d52
+ push strict byte 00010h ; 6a 10 ; 0xf9d56
+ lea dx, [bp-01ah] ; 8d 56 e6 ; 0xf9d58
+ push SS ; 16 ; 0xf9d5b
+ push dx ; 52 ; 0xf9d5c
+ xor bh, bh ; 30 ff ; 0xf9d5d
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9d5f
+ call 09a75h ; e8 0e fd ; 0xf9d64
+ mov dl, al ; 88 c2 ; 0xf9d67
+ test al, al ; 84 c0 ; 0xf9d69 virtio.c:614
+ jne short 09d82h ; 75 15 ; 0xf9d6b
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9d6d virtio.c:616
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf9d70
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9d74 virtio.c:617
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf9d77
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf9d7b
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf9d7e
+ xor bx, bx ; 31 db ; 0xf9d82 virtio.c:620
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9d84
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf9d87
+ mov ax, word [es:bx+000b4h] ; 26 8b 87 b4 00 ; 0xf9d8c virtio.c:308
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9d91
+ mov al, dl ; 88 d0 ; 0xf9d95 virtio.c:622
+ xor ah, ah ; 30 e4 ; 0xf9d97
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9d99 virtio.c:623
+ pop di ; 5f ; 0xf9d9c
+ pop si ; 5e ; 0xf9d9d
+ pop bp ; 5d ; 0xf9d9e
+ retn 00004h ; c2 04 00 ; 0xf9d9f
+ ; disGetNextSymbol 0xf9da2 LB 0x1536 -> off=0x0 cb=0000000000000108 uValue=00000000000f87a2 'virtio_scsi_write_sectors'
+virtio_scsi_write_sectors: ; 0xf9da2 LB 0x108
+ push bp ; 55 ; 0xf9da2 virtio.c:632
+ mov bp, sp ; 89 e5 ; 0xf9da3
+ push si ; 56 ; 0xf9da5
+ push di ; 57 ; 0xf9da6
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf9da7
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf9daa
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9dad virtio.c:640
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf9db0
+ sub AL, strict byte 008h ; 2c 08 ; 0xf9db4
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf9db6
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf9db9 virtio.c:641
+ jbe short 09dceh ; 76 11 ; 0xf9dbb
+ xor ah, ah ; 30 e4 ; 0xf9dbd virtio.c:642
+ push ax ; 50 ; 0xf9dbf
+ push 00d58h ; 68 58 0d ; 0xf9dc0
+ push 00d39h ; 68 39 0d ; 0xf9dc3
+ push strict byte 00007h ; 6a 07 ; 0xf9dc6
+ call 0190eh ; e8 43 7b ; 0xf9dc8
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf9dcb
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9dce virtio.c:644
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf9dd1
+ xor bx, bx ; 31 db ; 0xf9dd5 virtio.c:646
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9dd7
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9ddc virtio.c:303
+ mov es, dx ; 8e c2 ; 0xf9de0
+ mov word [es:bx+000b4h], ax ; 26 89 87 b4 00 ; 0xf9de2
+ mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf9de7 virtio.c:649
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9dec virtio.c:650
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf9def
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf9df3
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf9df7
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf9dfb
+ xchg ah, al ; 86 c4 ; 0xf9dfe
+ xchg bh, bl ; 86 df ; 0xf9e00
+ xchg ch, cl ; 86 cd ; 0xf9e02
+ xchg dh, dl ; 86 d6 ; 0xf9e04
+ xchg dx, ax ; 92 ; 0xf9e06
+ xchg bx, cx ; 87 cb ; 0xf9e07
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9e09
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf9e0c
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf9e0f
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf9e12
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9e15 virtio.c:651
+ mov ax, di ; 89 f8 ; 0xf9e19 virtio.c:652
+ xor dx, dx ; 31 d2 ; 0xf9e1b
+ xchg ah, al ; 86 c4 ; 0xf9e1d
+ xchg dh, dl ; 86 d6 ; 0xf9e1f
+ xchg dx, ax ; 92 ; 0xf9e21
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9e22
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9e25
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf9e28 virtio.c:653
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9e2c virtio.c:655
+ xor ah, ah ; 30 e4 ; 0xf9e2f
+ sal ax, 002h ; c1 e0 02 ; 0xf9e31
+ mov bx, si ; 89 f3 ; 0xf9e34
+ add bx, ax ; 01 c3 ; 0xf9e36
+ mov bl, byte [es:bx+00296h] ; 26 8a 9f 96 02 ; 0xf9e38
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf9e3d virtio.c:660
+ xor ax, ax ; 31 c0 ; 0xf9e40
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf9e42
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf9e45
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf9e48
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf9e4b
+ loop 09e48h ; e2 f8 ; 0xf9e4e
+ push word [bp-008h] ; ff 76 f8 ; 0xf9e50
+ push word [bp-00ah] ; ff 76 f6 ; 0xf9e53
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf9e56
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf9e5a
+ push strict byte 00010h ; 6a 10 ; 0xf9e5e
+ lea dx, [bp-01ah] ; 8d 56 e6 ; 0xf9e60
+ push SS ; 16 ; 0xf9e63
+ push dx ; 52 ; 0xf9e64
+ xor bh, bh ; 30 ff ; 0xf9e65
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9e67
+ call 0990ch ; e8 9d fa ; 0xf9e6c
+ mov dl, al ; 88 c2 ; 0xf9e6f
+ test al, al ; 84 c0 ; 0xf9e71 virtio.c:663
+ jne short 09e8ah ; 75 15 ; 0xf9e73
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9e75 virtio.c:665
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf9e78
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9e7c virtio.c:666
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf9e7f
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf9e83
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf9e86
+ xor bx, bx ; 31 db ; 0xf9e8a virtio.c:669
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9e8c
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf9e8f
+ mov ax, word [es:bx+000b4h] ; 26 8b 87 b4 00 ; 0xf9e94 virtio.c:308
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9e99
+ mov al, dl ; 88 d0 ; 0xf9e9d virtio.c:671
+ xor ah, ah ; 30 e4 ; 0xf9e9f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9ea1 virtio.c:672
+ pop di ; 5f ; 0xf9ea4
+ pop si ; 5e ; 0xf9ea5
+ pop bp ; 5d ; 0xf9ea6
+ retn 00004h ; c2 04 00 ; 0xf9ea7
+ ; disGetNextSymbol 0xf9eaa LB 0x142e -> off=0x0 cb=0000000000000123 uValue=00000000000f88aa 'virtio_scsi_cmd_packet'
+virtio_scsi_cmd_packet: ; 0xf9eaa LB 0x123
+ push bp ; 55 ; 0xf9eaa virtio.c:688
+ mov bp, sp ; 89 e5 ; 0xf9eab
+ push si ; 56 ; 0xf9ead
+ push di ; 57 ; 0xf9eae
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf9eaf
+ mov di, ax ; 89 c7 ; 0xf9eb2
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf9eb4
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf9eb7
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf9eba
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf9ebd virtio.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9ec0
+ mov es, ax ; 8e c0 ; 0xf9ec3
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf9ec5
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf9ec8 virtio.c:49
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9ecb
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf9ece virtio.c:696
+ jne short 09ef3h ; 75 1f ; 0xf9ed2
+ mov bx, 00eeah ; bb ea 0e ; 0xf9ed4 virtio.c:697
+ mov cx, ds ; 8c d9 ; 0xf9ed7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9ed9
+ call 018cbh ; e8 ec 79 ; 0xf9edc
+ push 00d72h ; 68 72 0d ; 0xf9edf
+ push 00d89h ; 68 89 0d ; 0xf9ee2
+ push strict byte 00004h ; 6a 04 ; 0xf9ee5
+ call 0190eh ; e8 24 7a ; 0xf9ee7
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf9eea
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9eed virtio.c:698
+ jmp near 09fc4h ; e9 d1 00 ; 0xf9ef0
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf9ef3 virtio.c:702
+ jne short 09eedh ; 75 f4 ; 0xf9ef7
+ xor bx, bx ; 31 db ; 0xf9ef9 virtio.c:716
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9efb
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9efe
+ sub di, strict byte 00008h ; 83 ef 08 ; 0xf9f03 virtio.c:708
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9f06 virtio.c:303
+ mov es, dx ; 8e c2 ; 0xf9f0a
+ mov word [es:bx+000b4h], ax ; 26 89 87 b4 00 ; 0xf9f0c
+ mov bx, di ; 89 fb ; 0xf9f11 virtio.c:717
+ sal bx, 002h ; c1 e3 02 ; 0xf9f13
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9f16
+ add bx, si ; 01 f3 ; 0xf9f19
+ mov al, byte [es:bx+00296h] ; 26 8a 87 96 02 ; 0xf9f1b
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf9f20
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9f23 virtio.c:719
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xf9f26
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf9f29
+ sal ax, 1 ; d1 e0 ; 0xf9f2c
+ rcl dx, 1 ; d1 d2 ; 0xf9f2e
+ loop 09f2ch ; e2 fa ; 0xf9f30
+ mov word [es:si], ax ; 26 89 04 ; 0xf9f32
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf9f35
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf9f39
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf9f3f
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf9f45 virtio.c:720
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf9f48
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9f4c
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf9f4f
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf9f53 virtio.c:721
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9f57
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xf9f5a
+ xor cx, cx ; 31 c9 ; 0xf9f5d
+ call 0af60h ; e8 fe 0f ; 0xf9f5f
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf9f62
+ push word [es:si+020h] ; 26 ff 74 20 ; 0xf9f66 virtio.c:726
+ push word [bp+004h] ; ff 76 04 ; 0xf9f6a
+ push word [bp+008h] ; ff 76 08 ; 0xf9f6d
+ push word [bp+006h] ; ff 76 06 ; 0xf9f70
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf9f73
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf9f77
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9f7b
+ xor ah, ah ; 30 e4 ; 0xf9f7e
+ push ax ; 50 ; 0xf9f80
+ push word [bp-00ch] ; ff 76 f4 ; 0xf9f81
+ push word [bp-00eh] ; ff 76 f2 ; 0xf9f84
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf9f87
+ xor bh, bh ; 30 ff ; 0xf9f8a
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9f8c
+ xor al, al ; 30 c0 ; 0xf9f91
+ call 09a75h ; e8 df fa ; 0xf9f93
+ mov dl, al ; 88 c2 ; 0xf9f96
+ test al, al ; 84 c0 ; 0xf9f98 virtio.c:728
+ jne short 09fadh ; 75 11 ; 0xf9f9a
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9f9c virtio.c:729
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9f9f
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf9fa2
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xf9fa6
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf9fa9
+ xor bx, bx ; 31 db ; 0xf9fad virtio.c:732
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9faf
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf9fb2
+ mov ax, word [es:bx+000b4h] ; 26 8b 87 b4 00 ; 0xf9fb7 virtio.c:308
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9fbc
+ mov al, dl ; 88 d0 ; 0xf9fc0 virtio.c:734
+ xor ah, ah ; 30 e4 ; 0xf9fc2
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9fc4 virtio.c:735
+ pop di ; 5f ; 0xf9fc7
+ pop si ; 5e ; 0xf9fc8
+ pop bp ; 5d ; 0xf9fc9
+ retn 0000ch ; c2 0c 00 ; 0xf9fca
+ ; disGetNextSymbol 0xf9fcd LB 0x130b -> off=0x0 cb=00000000000004ae uValue=00000000000f89cd 'virtio_scsi_detect_devices'
+virtio_scsi_detect_devices: ; 0xf9fcd LB 0x4ae
+ push bp ; 55 ; 0xf9fcd virtio.c:737
+ mov bp, sp ; 89 e5 ; 0xf9fce
+ push bx ; 53 ; 0xf9fd0
+ push cx ; 51 ; 0xf9fd1
+ push si ; 56 ; 0xf9fd2
+ push di ; 57 ; 0xf9fd3
+ sub sp, 0023eh ; 81 ec 3e 02 ; 0xf9fd4
+ push ax ; 50 ; 0xf9fd8
+ push dx ; 52 ; 0xf9fd9
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf9fda virtio.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9fdd
+ mov es, ax ; 8e c0 ; 0xf9fe0
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf9fe2
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf9fe5 virtio.c:49
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9fe8
+ mov word [bp-014h], strict word 00000h ; c7 46 ec 00 00 ; 0xf9feb virtio.c:746
+ jmp near 0a3e6h ; e9 f3 03 ; 0xf9ff0
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf9ff3 virtio.c:767
+ jc short 09ffah ; 72 03 ; 0xf9ff5
+ jmp near 0a470h ; e9 76 04 ; 0xf9ff7
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf9ffa virtio.c:782
+ xor bx, bx ; 31 db ; 0xf9ffd
+ mov dx, ss ; 8c d2 ; 0xf9fff
+ lea ax, [bp-046h] ; 8d 46 ba ; 0xfa001
+ call 0afb0h ; e8 a9 0f ; 0xfa004
+ mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xfa007 virtio.c:783
+ mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xfa00b virtio.c:784
+ mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xfa00f virtio.c:785
+ push strict byte 00000h ; 6a 00 ; 0xfa013 virtio.c:787
+ push strict byte 00000h ; 6a 00 ; 0xfa015
+ push strict byte 00000h ; 6a 00 ; 0xfa017
+ push strict byte 00020h ; 6a 20 ; 0xfa019
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xfa01b
+ push SS ; 16 ; 0xfa01f
+ push dx ; 52 ; 0xfa020
+ push strict byte 00010h ; 6a 10 ; 0xfa021
+ lea dx, [bp-046h] ; 8d 56 ba ; 0xfa023
+ push SS ; 16 ; 0xfa026
+ push dx ; 52 ; 0xfa027
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xfa028
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xfa02b
+ mov dx, word [bp-0024ah] ; 8b 96 b6 fd ; 0xfa02f
+ call 09a75h ; e8 3f fa ; 0xfa033
+ test al, al ; 84 c0 ; 0xfa036 virtio.c:788
+ je short 0a048h ; 74 0e ; 0xfa038
+ push 00da9h ; 68 a9 0d ; 0xfa03a virtio.c:789
+ push 00dc4h ; 68 c4 0d ; 0xfa03d
+ push strict byte 00007h ; 6a 07 ; 0xfa040
+ call 0190eh ; e8 c9 78 ; 0xfa042
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xfa045
+ mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xfa048 virtio.c:794
+ mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xfa04c
+ mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xfa050
+ mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xfa054
+ xchg ah, al ; 86 c4 ; 0xfa058
+ xchg bh, bl ; 86 df ; 0xfa05a
+ xchg ch, cl ; 86 cd ; 0xfa05c
+ xchg dh, dl ; 86 d6 ; 0xfa05e
+ xchg dx, ax ; 92 ; 0xfa060
+ xchg bx, cx ; 87 cb ; 0xfa061
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xfa063
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xfa066
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xfa069
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xfa06c
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xfa06f
+ mov word [bp-026h], bx ; 89 5e da ; 0xfa072
+ adc ax, strict word 00000h ; 15 00 00 ; 0xfa075
+ mov word [bp-012h], ax ; 89 46 ee ; 0xfa078
+ mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xfa07b virtio.c:796
+ xor ah, ah ; 30 e4 ; 0xfa07f
+ mov bx, ax ; 89 c3 ; 0xfa081
+ sal bx, 008h ; c1 e3 08 ; 0xfa083
+ mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xfa086
+ xor si, si ; 31 f6 ; 0xfa08a
+ or bx, ax ; 09 c3 ; 0xfa08c
+ mov al, byte [bp-0023ch] ; 8a 86 c4 fd ; 0xfa08e
+ xor dx, dx ; 31 d2 ; 0xfa092
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfa094
+ sal ax, 1 ; d1 e0 ; 0xfa097
+ rcl dx, 1 ; d1 d2 ; 0xfa099
+ loop 0a097h ; e2 fa ; 0xfa09b
+ mov cx, si ; 89 f1 ; 0xfa09d
+ or cx, ax ; 09 c1 ; 0xfa09f
+ or dx, bx ; 09 da ; 0xfa0a1
+ mov al, byte [bp-0023bh] ; 8a 86 c5 fd ; 0xfa0a3
+ xor ah, ah ; 30 e4 ; 0xfa0a7
+ or cx, ax ; 09 c1 ; 0xfa0a9
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xfa0ab
+ test dx, dx ; 85 d2 ; 0xfa0ae virtio.c:802
+ jne short 0a0b8h ; 75 06 ; 0xfa0b0
+ cmp cx, 00200h ; 81 f9 00 02 ; 0xfa0b2
+ je short 0a0d8h ; 74 20 ; 0xfa0b6
+ mov bx, 00eeah ; bb ea 0e ; 0xfa0b8 virtio.c:805
+ mov cx, ds ; 8c d9 ; 0xfa0bb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa0bd
+ call 018cbh ; e8 08 78 ; 0xfa0c0
+ push dx ; 52 ; 0xfa0c3
+ push word [bp-01ah] ; ff 76 e6 ; 0xfa0c4
+ push word [bp-014h] ; ff 76 ec ; 0xfa0c7
+ push 00de3h ; 68 e3 0d ; 0xfa0ca
+ push strict byte 00004h ; 6a 04 ; 0xfa0cd
+ call 0190eh ; e8 3c 78 ; 0xfa0cf
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xfa0d2
+ jmp near 0a3dah ; e9 02 03 ; 0xfa0d5 virtio.c:806
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa0d8 virtio.c:810
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa0db
+ jc short 0a0ebh ; 72 0c ; 0xfa0dd
+ jbe short 0a0f3h ; 76 12 ; 0xfa0df
+ cmp AL, strict byte 003h ; 3c 03 ; 0xfa0e1
+ je short 0a0fbh ; 74 16 ; 0xfa0e3
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfa0e5
+ je short 0a0f7h ; 74 0e ; 0xfa0e7
+ jmp short 0a144h ; eb 59 ; 0xfa0e9
+ test al, al ; 84 c0 ; 0xfa0eb
+ jne short 0a144h ; 75 55 ; 0xfa0ed
+ mov BL, strict byte 090h ; b3 90 ; 0xfa0ef virtio.c:813
+ jmp short 0a0fdh ; eb 0a ; 0xfa0f1 virtio.c:814
+ mov BL, strict byte 098h ; b3 98 ; 0xfa0f3 virtio.c:816
+ jmp short 0a0fdh ; eb 06 ; 0xfa0f5 virtio.c:817
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xfa0f7 virtio.c:819
+ jmp short 0a0fdh ; eb 02 ; 0xfa0f9 virtio.c:820
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xfa0fb virtio.c:822
+ mov cl, bl ; 88 d9 ; 0xfa0fd virtio.c:826
+ add cl, 007h ; 80 c1 07 ; 0xfa0ff
+ xor ch, ch ; 30 ed ; 0xfa102
+ mov ax, cx ; 89 c8 ; 0xfa104
+ call 0165fh ; e8 56 75 ; 0xfa106
+ test al, al ; 84 c0 ; 0xfa109
+ je short 0a144h ; 74 37 ; 0xfa10b
+ mov al, bl ; 88 d8 ; 0xfa10d virtio.c:831
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa10f
+ xor ah, ah ; 30 e4 ; 0xfa111
+ call 0165fh ; e8 49 75 ; 0xfa113
+ xor ah, ah ; 30 e4 ; 0xfa116
+ mov dx, ax ; 89 c2 ; 0xfa118
+ sal dx, 008h ; c1 e2 08 ; 0xfa11a
+ mov al, bl ; 88 d8 ; 0xfa11d
+ call 0165fh ; e8 3d 75 ; 0xfa11f
+ xor ah, ah ; 30 e4 ; 0xfa122
+ add ax, dx ; 01 d0 ; 0xfa124
+ cwd ; 99 ; 0xfa126
+ mov si, ax ; 89 c6 ; 0xfa127
+ mov al, bl ; 88 d8 ; 0xfa129 virtio.c:832
+ add AL, strict byte 002h ; 04 02 ; 0xfa12b
+ xor ah, ah ; 30 e4 ; 0xfa12d
+ call 0165fh ; e8 2d 75 ; 0xfa12f
+ xor ah, ah ; 30 e4 ; 0xfa132
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xfa134
+ mov ax, cx ; 89 c8 ; 0xfa137 virtio.c:833
+ call 0165fh ; e8 23 75 ; 0xfa139
+ xor ah, ah ; 30 e4 ; 0xfa13c
+ mov word [bp-024h], ax ; 89 46 dc ; 0xfa13e
+ jmp near 0a232h ; e9 ee 00 ; 0xfa141 virtio.c:835
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa144 virtio.c:836
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xfa147
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xfa14a
+ mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xfa14d
+ mov si, strict word 0000ch ; be 0c 00 ; 0xfa150
+ call 0af90h ; e8 3a 0e ; 0xfa153
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfa156
+ mov word [bp-020h], bx ; 89 5e e0 ; 0xfa159
+ mov word [bp-022h], cx ; 89 4e de ; 0xfa15c
+ mov word [bp-016h], dx ; 89 56 ea ; 0xfa15f
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa162 virtio.c:840
+ test ax, ax ; 85 c0 ; 0xfa165
+ jnbe short 0a17eh ; 77 15 ; 0xfa167
+ je short 0a16eh ; 74 03 ; 0xfa169
+ jmp near 0a1f3h ; e9 85 00 ; 0xfa16b
+ cmp word [bp-026h], strict byte 00000h ; 83 7e da 00 ; 0xfa16e
+ jnbe short 0a17eh ; 77 0a ; 0xfa172
+ jne short 0a16bh ; 75 f5 ; 0xfa174
+ cmp word [bp-00eh], strict byte 00040h ; 83 7e f2 40 ; 0xfa176
+ jnbe short 0a17eh ; 77 02 ; 0xfa17a
+ jne short 0a1f3h ; 75 75 ; 0xfa17c
+ mov word [bp-02ah], 000ffh ; c7 46 d6 ff 00 ; 0xfa17e virtio.c:842
+ mov word [bp-024h], strict word 0003fh ; c7 46 dc 3f 00 ; 0xfa183 virtio.c:843
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xfa188 virtio.c:845
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xfa18b
+ mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xfa18e
+ mov si, strict word 00006h ; be 06 00 ; 0xfa191
+ call 0af90h ; e8 f9 0d ; 0xfa194
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xfa197
+ add si, dx ; 01 d6 ; 0xfa19a
+ mov word [bp-036h], si ; 89 76 ca ; 0xfa19c
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xfa19f
+ adc dx, cx ; 11 ca ; 0xfa1a2
+ mov word [bp-034h], dx ; 89 56 cc ; 0xfa1a4
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xfa1a7
+ adc dx, bx ; 11 da ; 0xfa1aa
+ mov word [bp-02ch], dx ; 89 56 d4 ; 0xfa1ac
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa1af
+ adc dx, ax ; 11 c2 ; 0xfa1b2
+ mov word [bp-032h], dx ; 89 56 ce ; 0xfa1b4
+ mov ax, dx ; 89 d0 ; 0xfa1b7 virtio.c:846
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xfa1b9
+ mov cx, word [bp-034h] ; 8b 4e cc ; 0xfa1bc
+ mov dx, si ; 89 f2 ; 0xfa1bf
+ mov si, strict word 00008h ; be 08 00 ; 0xfa1c1
+ call 0af90h ; e8 c9 0d ; 0xfa1c4
+ mov word [bp-02eh], bx ; 89 5e d2 ; 0xfa1c7
+ mov word [bp-030h], cx ; 89 4e d0 ; 0xfa1ca
+ mov word [bp-028h], dx ; 89 56 d8 ; 0xfa1cd
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xfa1d0
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xfa1d3
+ mov cx, word [bp-034h] ; 8b 4e cc ; 0xfa1d6
+ mov dx, word [bp-036h] ; 8b 56 ca ; 0xfa1d9
+ mov si, strict word 00010h ; be 10 00 ; 0xfa1dc
+ call 0af90h ; e8 ae 0d ; 0xfa1df
+ mov si, word [bp-028h] ; 8b 76 d8 ; 0xfa1e2
+ add si, dx ; 01 d6 ; 0xfa1e5
+ mov dx, word [bp-030h] ; 8b 56 d0 ; 0xfa1e7
+ adc dx, cx ; 11 ca ; 0xfa1ea
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xfa1ec
+ adc ax, bx ; 11 d8 ; 0xfa1ef
+ jmp short 0a232h ; eb 3f ; 0xfa1f1 virtio.c:848
+ test ax, ax ; 85 c0 ; 0xfa1f3
+ jnbe short 0a209h ; 77 12 ; 0xfa1f5
+ jne short 0a215h ; 75 1c ; 0xfa1f7
+ cmp word [bp-026h], strict byte 00000h ; 83 7e da 00 ; 0xfa1f9
+ jnbe short 0a209h ; 77 0a ; 0xfa1fd
+ jne short 0a215h ; 75 14 ; 0xfa1ff
+ cmp word [bp-00eh], strict byte 00020h ; 83 7e f2 20 ; 0xfa201
+ jnbe short 0a209h ; 77 02 ; 0xfa205
+ jne short 0a215h ; 75 0c ; 0xfa207
+ mov word [bp-02ah], 00080h ; c7 46 d6 80 00 ; 0xfa209 virtio.c:850
+ mov word [bp-024h], strict word 00020h ; c7 46 dc 20 00 ; 0xfa20e virtio.c:851
+ jmp short 0a22eh ; eb 19 ; 0xfa213 virtio.c:854
+ mov word [bp-02ah], strict word 00040h ; c7 46 d6 40 00 ; 0xfa215 virtio.c:856
+ mov word [bp-024h], strict word 00020h ; c7 46 dc 20 00 ; 0xfa21a virtio.c:857
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xfa21f virtio.c:858
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xfa222
+ mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xfa225
+ mov si, strict word 0000bh ; be 0b 00 ; 0xfa228
+ call 0af90h ; e8 62 0d ; 0xfa22b
+ mov si, dx ; 89 d6 ; 0xfa22e
+ mov dx, cx ; 89 ca ; 0xfa230
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa232 virtio.c:863
+ add AL, strict byte 008h ; 04 08 ; 0xfa235
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xfa237
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa23a virtio.c:865
+ xor ah, ah ; 30 e4 ; 0xfa23d
+ sal ax, 002h ; c1 e0 02 ; 0xfa23f
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xfa242
+ mov bx, di ; 89 fb ; 0xfa245
+ add bx, ax ; 01 c3 ; 0xfa247
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xfa249
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xfa24c
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa251 virtio.c:866
+ xor ah, ah ; 30 e4 ; 0xfa254
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xfa256
+ mov bx, di ; 89 fb ; 0xfa259
+ add bx, ax ; 01 c3 ; 0xfa25b
+ mov word [es:bx+022h], 0ff06h ; 26 c7 47 22 06 ff ; 0xfa25d
+ mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xfa263 virtio.c:868
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xfa269 virtio.c:870
+ mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xfa26c
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xfa270 virtio.c:871
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xfa275 virtio.c:874
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xfa278
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xfa27c virtio.c:875
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xfa27f
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xfa283 virtio.c:876
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xfa286
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xfa28a virtio.c:877
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xfa28d
+ test dx, dx ; 85 d2 ; 0xfa291 virtio.c:879
+ jne short 0a29bh ; 75 06 ; 0xfa293
+ cmp si, 00400h ; 81 fe 00 04 ; 0xfa295
+ jbe short 0a2a9h ; 76 0e ; 0xfa299
+ mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xfa29b virtio.c:880
+ mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xfa2a1 virtio.c:881
+ jmp short 0a2b1h ; eb 08 ; 0xfa2a7 virtio.c:882
+ mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xfa2a9 virtio.c:883
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xfa2ad virtio.c:884
+ mov bx, 00eeah ; bb ea 0e ; 0xfa2b1 virtio.c:888
+ mov cx, ds ; 8c d9 ; 0xfa2b4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa2b6
+ call 018cbh ; e8 0f 76 ; 0xfa2b9
+ push word [bp-012h] ; ff 76 ee ; 0xfa2bc
+ push word [bp-026h] ; ff 76 da ; 0xfa2bf
+ push word [bp-00eh] ; ff 76 f2 ; 0xfa2c2
+ push word [bp-01ch] ; ff 76 e4 ; 0xfa2c5
+ push word [bp-024h] ; ff 76 dc ; 0xfa2c8
+ push word [bp-02ah] ; ff 76 d6 ; 0xfa2cb
+ push dx ; 52 ; 0xfa2ce
+ push si ; 56 ; 0xfa2cf
+ push word [bp-014h] ; ff 76 ec ; 0xfa2d0
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa2d3
+ xor ah, ah ; 30 e4 ; 0xfa2d6
+ push ax ; 50 ; 0xfa2d8
+ push 00e11h ; 68 11 0e ; 0xfa2d9
+ push strict byte 00004h ; 6a 04 ; 0xfa2dc
+ call 0190eh ; e8 2d 76 ; 0xfa2de
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xfa2e1
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa2e4 virtio.c:890
+ xor ah, ah ; 30 e4 ; 0xfa2e7
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xfa2e9
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xfa2ec
+ mov bx, di ; 89 fb ; 0xfa2ef
+ add bx, ax ; 01 c3 ; 0xfa2f1
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa2f3
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xfa2f6
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xfa2fa
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xfa2fd
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xfa301
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xfa304
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfa308
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xfa30b
+ mov al, byte [es:di+00252h] ; 26 8a 85 52 02 ; 0xfa30f virtio.c:893
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xfa314 virtio.c:894
+ add ah, 008h ; 80 c4 08 ; 0xfa317
+ mov bl, al ; 88 c3 ; 0xfa31a
+ xor bh, bh ; 30 ff ; 0xfa31c
+ add bx, di ; 01 fb ; 0xfa31e
+ mov byte [es:bx+00253h], ah ; 26 88 a7 53 02 ; 0xfa320
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa325 virtio.c:895
+ mov byte [es:di+00252h], al ; 26 88 85 52 02 ; 0xfa327 virtio.c:896
+ mov bx, strict word 00075h ; bb 75 00 ; 0xfa32c virtio.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfa32f
+ mov es, ax ; 8e c0 ; 0xfa332
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xfa334
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa337 virtio.c:900
+ mov byte [es:bx], al ; 26 88 07 ; 0xfa339 virtio.c:43
+ inc byte [bp-00ah] ; fe 46 f6 ; 0xfa33c virtio.c:903
+ jmp near 0a3cfh ; e9 8d 00 ; 0xfa33f virtio.c:905
+ mov bx, 00eeah ; bb ea 0e ; 0xfa342 virtio.c:917
+ mov cx, ds ; 8c d9 ; 0xfa345
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa347
+ call 018cbh ; e8 7e 75 ; 0xfa34a
+ push word [bp-014h] ; ff 76 ec ; 0xfa34d
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa350
+ xor ah, ah ; 30 e4 ; 0xfa353
+ push ax ; 50 ; 0xfa355
+ push 00e3fh ; 68 3f 0e ; 0xfa356
+ push strict byte 00004h ; 6a 04 ; 0xfa359
+ call 0190eh ; e8 b0 75 ; 0xfa35b
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa35e
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa361 virtio.c:920
+ add AL, strict byte 008h ; 04 08 ; 0xfa364
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xfa366
+ test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xfa369 virtio.c:922
+ je short 0a375h ; 74 05 ; 0xfa36e
+ mov dx, strict word 00001h ; ba 01 00 ; 0xfa370
+ jmp short 0a377h ; eb 02 ; 0xfa373
+ xor dx, dx ; 31 d2 ; 0xfa375
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa377 virtio.c:924
+ xor ah, ah ; 30 e4 ; 0xfa37a
+ sal ax, 002h ; c1 e0 02 ; 0xfa37c
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xfa37f
+ mov bx, di ; 89 fb ; 0xfa382
+ add bx, ax ; 01 c3 ; 0xfa384
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xfa386
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xfa389
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa38e virtio.c:925
+ xor ah, ah ; 30 e4 ; 0xfa391
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xfa393
+ mov bx, di ; 89 fb ; 0xfa396
+ add bx, ax ; 01 c3 ; 0xfa398
+ mov word [es:bx+022h], 00506h ; 26 c7 47 22 06 05 ; 0xfa39a
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xfa3a0 virtio.c:927
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xfa3a4 virtio.c:928
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xfa3aa virtio.c:929
+ mov al, byte [es:di+00267h] ; 26 8a 85 67 02 ; 0xfa3af virtio.c:932
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xfa3b4 virtio.c:933
+ add ah, 008h ; 80 c4 08 ; 0xfa3b7
+ mov bl, al ; 88 c3 ; 0xfa3ba
+ xor bh, bh ; 30 ff ; 0xfa3bc
+ add bx, di ; 01 fb ; 0xfa3be
+ mov byte [es:bx+00268h], ah ; 26 88 a7 68 02 ; 0xfa3c0
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa3c5 virtio.c:934
+ mov byte [es:di+00267h], al ; 26 88 85 67 02 ; 0xfa3c7 virtio.c:935
+ inc byte [bp-00ah] ; fe 46 f6 ; 0xfa3cc virtio.c:937
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa3cf virtio.c:945
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xfa3d2
+ mov byte [es:di+002a4h], al ; 26 88 85 a4 02 ; 0xfa3d5
+ inc word [bp-014h] ; ff 46 ec ; 0xfa3da virtio.c:946
+ cmp word [bp-014h], strict byte 00010h ; 83 7e ec 10 ; 0xfa3dd
+ jl short 0a3e6h ; 7c 03 ; 0xfa3e1
+ jmp near 0a470h ; e9 8a 00 ; 0xfa3e3
+ mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xfa3e6
+ xor al, al ; 30 c0 ; 0xfa3ea
+ mov byte [bp-045h], al ; 88 46 bb ; 0xfa3ec
+ mov byte [bp-044h], al ; 88 46 bc ; 0xfa3ef
+ mov byte [bp-043h], al ; 88 46 bd ; 0xfa3f2
+ mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xfa3f5
+ mov byte [bp-041h], al ; 88 46 bf ; 0xfa3f9
+ mov cx, 00200h ; b9 00 02 ; 0xfa3fc
+ xor bx, bx ; 31 db ; 0xfa3ff
+ mov dx, ss ; 8c d2 ; 0xfa401
+ lea ax, [bp-00246h] ; 8d 86 ba fd ; 0xfa403
+ call 0afb0h ; e8 a6 0b ; 0xfa407
+ push strict byte 00000h ; 6a 00 ; 0xfa40a
+ push strict byte 00000h ; 6a 00 ; 0xfa40c
+ push strict byte 00000h ; 6a 00 ; 0xfa40e
+ push strict byte 00005h ; 6a 05 ; 0xfa410
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xfa412
+ push SS ; 16 ; 0xfa416
+ push dx ; 52 ; 0xfa417
+ push strict byte 00006h ; 6a 06 ; 0xfa418
+ lea dx, [bp-046h] ; 8d 56 ba ; 0xfa41a
+ push SS ; 16 ; 0xfa41d
+ push dx ; 52 ; 0xfa41e
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xfa41f
+ mov byte [bp-01eh], al ; 88 46 e2 ; 0xfa422
+ mov byte [bp-01dh], 000h ; c6 46 e3 00 ; 0xfa425
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xfa429
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xfa42c
+ mov dx, word [bp-0024ah] ; 8b 96 b6 fd ; 0xfa430
+ call 09a75h ; e8 3e f6 ; 0xfa434
+ test al, al ; 84 c0 ; 0xfa437
+ jne short 0a3cfh ; 75 94 ; 0xfa439
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xfa43b
+ mov al, byte [es:di+002a4h] ; 26 8a 85 a4 02 ; 0xfa43e
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xfa443
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xfa446
+ jne short 0a457h ; 75 0a ; 0xfa44b
+ test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xfa44d
+ jne short 0a457h ; 75 03 ; 0xfa452
+ jmp near 09ff3h ; e9 9c fb ; 0xfa454
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xfa457
+ je short 0a461h ; 74 03 ; 0xfa45c
+ jmp near 0a3cfh ; e9 6e ff ; 0xfa45e
+ mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xfa461
+ and AL, strict byte 01fh ; 24 1f ; 0xfa465
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfa467
+ jne short 0a46eh ; 75 03 ; 0xfa469
+ jmp near 0a342h ; e9 d4 fe ; 0xfa46b
+ jmp short 0a45eh ; eb ee ; 0xfa46e
+ xor ax, ax ; 31 c0 ; 0xfa470 virtio.c:949
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa472
+ pop di ; 5f ; 0xfa475
+ pop si ; 5e ; 0xfa476
+ pop cx ; 59 ; 0xfa477
+ pop bx ; 5b ; 0xfa478
+ pop bp ; 5d ; 0xfa479
+ retn ; c3 ; 0xfa47a
+ ; disGetNextSymbol 0xfa47b LB 0xe5d -> off=0x0 cb=0000000000000361 uValue=00000000000f8e7b 'virtio_scsi_hba_init'
+virtio_scsi_hba_init: ; 0xfa47b LB 0x361
+ push bp ; 55 ; 0xfa47b virtio.c:954
+ mov bp, sp ; 89 e5 ; 0xfa47c
+ push cx ; 51 ; 0xfa47e
+ push si ; 56 ; 0xfa47f
+ push di ; 57 ; 0xfa480
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xfa481
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xfa484
+ mov ch, dl ; 88 d5 ; 0xfa487
+ mov cl, bl ; 88 d9 ; 0xfa489
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xfa48b virtio.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfa48e
+ mov es, ax ; 8e c0 ; 0xfa491
+ mov si, word [es:bx] ; 26 8b 37 ; 0xfa493
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xfa496 virtio.c:964
+ call 098b4h ; e8 18 f4 ; 0xfa499 virtio.c:967
+ mov dx, ax ; 89 c2 ; 0xfa49c
+ test ax, ax ; 85 c0 ; 0xfa49e virtio.c:968
+ je short 0a4feh ; 74 5c ; 0xfa4a0
+ mov es, si ; 8e c6 ; 0xfa4a2 virtio.c:971
+ mov word [es:bx+002a6h], dx ; 26 89 97 a6 02 ; 0xfa4a4
+ xor di, di ; 31 ff ; 0xfa4a9 virtio.c:978
+ mov es, dx ; 8e c2 ; 0xfa4ab
+ xor si, si ; 31 f6 ; 0xfa4ad
+ mov word [bp-014h], dx ; 89 56 ec ; 0xfa4af
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa4b2 virtio.c:979
+ mov byte [es:di+000b2h], al ; 26 88 85 b2 00 ; 0xfa4b5
+ mov byte [es:di+000b3h], ch ; 26 88 ad b3 00 ; 0xfa4ba virtio.c:980
+ test cl, cl ; 84 c9 ; 0xfa4bf virtio.c:987
+ je short 0a523h ; 74 60 ; 0xfa4c1
+ mov bl, cl ; 88 cb ; 0xfa4c3 virtio.c:989
+ xor bh, bh ; 30 ff ; 0xfa4c5
+ mov byte [bp-00eh], ch ; 88 6e f2 ; 0xfa4c7
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xfa4ca
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa4cd
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xfa4d0
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xfa4d3
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa4d6
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xfa4d9
+ call 0ad1ch ; e8 3d 08 ; 0xfa4dc
+ mov word [bp-016h], ax ; 89 46 ea ; 0xfa4df
+ mov bl, cl ; 88 cb ; 0xfa4e2 virtio.c:990
+ add bl, 002h ; 80 c3 02 ; 0xfa4e4
+ xor bh, bh ; 30 ff ; 0xfa4e7
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa4e9
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xfa4ec
+ call 0ad1ch ; e8 2a 08 ; 0xfa4ef
+ cmp byte [bp-016h], 009h ; 80 7e ea 09 ; 0xfa4f2 virtio.c:994
+ jne short 0a520h ; 75 28 ; 0xfa4f6
+ cmp AL, strict byte 010h ; 3c 10 ; 0xfa4f8
+ jnc short 0a501h ; 73 05 ; 0xfa4fa
+ jmp short 0a520h ; eb 22 ; 0xfa4fc
+ jmp near 0a7d4h ; e9 d3 02 ; 0xfa4fe
+ mov bl, cl ; 88 cb ; 0xfa501 virtio.c:998
+ add bl, 003h ; 80 c3 03 ; 0xfa503
+ xor bh, bh ; 30 ff ; 0xfa506
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa508
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xfa50b
+ call 0ad1ch ; e8 0b 08 ; 0xfa50e
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xfa511
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfa514 virtio.c:1001
+ je short 0a526h ; 74 0e ; 0xfa516
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa518
+ jc short 0a520h ; 72 04 ; 0xfa51a
+ cmp AL, strict byte 004h ; 3c 04 ; 0xfa51c
+ jbe short 0a529h ; 76 09 ; 0xfa51e
+ jmp near 0a5c5h ; e9 a2 00 ; 0xfa520
+ jmp near 0a5dch ; e9 b6 00 ; 0xfa523
+ jmp near 0a5bdh ; e9 94 00 ; 0xfa526
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa529 virtio.c:1008
+ xor ah, ah ; 30 e4 ; 0xfa52c
+ dec ax ; 48 ; 0xfa52e
+ imul ax, ax, strict byte 0000ch ; 6b c0 0c ; 0xfa52f
+ lea di, [si+07ch] ; 8d 7c 7c ; 0xfa532
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa535
+ mov word [bp-01ah], dx ; 89 56 e6 ; 0xfa538
+ add di, ax ; 01 c7 ; 0xfa53b
+ mov bl, cl ; 88 cb ; 0xfa53d virtio.c:1010
+ add bl, 004h ; 80 c3 04 ; 0xfa53f
+ xor bh, bh ; 30 ff ; 0xfa542
+ mov byte [bp-018h], ch ; 88 6e e8 ; 0xfa544
+ mov byte [bp-017h], bh ; 88 7e e9 ; 0xfa547
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa54a
+ mov byte [bp-012h], al ; 88 46 ee ; 0xfa54d
+ mov byte [bp-011h], bh ; 88 7e ef ; 0xfa550
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa553
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa556
+ call 0ad1ch ; e8 c0 07 ; 0xfa559
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xfa55c
+ mov byte [es:di], al ; 26 88 05 ; 0xfa55f
+ mov bl, cl ; 88 cb ; 0xfa562 virtio.c:1011
+ add bl, 008h ; 80 c3 08 ; 0xfa564
+ xor bh, bh ; 30 ff ; 0xfa567
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa569
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa56c
+ call 0ad74h ; e8 02 08 ; 0xfa56f
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xfa572
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfa575
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfa579
+ mov bl, cl ; 88 cb ; 0xfa57d virtio.c:1012
+ add bl, 00ch ; 80 c3 0c ; 0xfa57f
+ xor bh, bh ; 30 ff ; 0xfa582
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa584
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa587
+ call 0ad74h ; e8 e7 07 ; 0xfa58a
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xfa58d
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xfa590
+ mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xfa594
+ cmp byte [bp-00ch], 002h ; 80 7e f4 02 ; 0xfa598 virtio.c:1013
+ jne short 0a5c5h ; 75 27 ; 0xfa59c
+ mov bl, cl ; 88 cb ; 0xfa59e virtio.c:1015
+ add bl, 010h ; 80 c3 10 ; 0xfa5a0
+ xor bh, bh ; 30 ff ; 0xfa5a3
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa5a5
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa5a8
+ call 0ad74h ; e8 c6 07 ; 0xfa5ab
+ mov es, [bp-014h] ; 8e 46 ec ; 0xfa5ae
+ mov word [es:si+000aeh], ax ; 26 89 84 ae 00 ; 0xfa5b1
+ mov word [es:si+000b0h], dx ; 26 89 94 b0 00 ; 0xfa5b6
+ jmp short 0a5c5h ; eb 08 ; 0xfa5bb virtio.c:1018
+ mov es, [bp-014h] ; 8e 46 ec ; 0xfa5bd virtio.c:1021
+ mov byte [es:si+000ach], cl ; 26 88 8c ac 00 ; 0xfa5c0
+ mov bl, cl ; 88 cb ; 0xfa5c5 virtio.c:1030
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xfa5c7
+ xor bh, bh ; 30 ff ; 0xfa5c9
+ mov dl, ch ; 88 ea ; 0xfa5cb
+ xor dh, dh ; 30 f6 ; 0xfa5cd
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa5cf
+ xor ah, ah ; 30 e4 ; 0xfa5d2
+ call 0ad1ch ; e8 45 07 ; 0xfa5d4
+ mov cl, al ; 88 c1 ; 0xfa5d7
+ jmp near 0a4bfh ; e9 e3 fe ; 0xfa5d9 virtio.c:1031
+ xor ch, ch ; 30 ed ; 0xfa5dc virtio.c:1035
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa5de
+ mov ax, si ; 89 f0 ; 0xfa5e1
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa5e3
+ call 096fdh ; e8 14 f1 ; 0xfa5e6
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa5e9 virtio.c:1038
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa5ec
+ mov ax, si ; 89 f0 ; 0xfa5ef
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa5f1
+ call 096fdh ; e8 06 f1 ; 0xfa5f4
+ mov byte [bp-008h], 003h ; c6 46 f8 03 ; 0xfa5f7 virtio.c:1040
+ mov cx, strict word 00003h ; b9 03 00 ; 0xfa5fb virtio.c:1041
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa5fe
+ mov ax, si ; 89 f0 ; 0xfa601
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa603
+ call 096fdh ; e8 f4 f0 ; 0xfa606
+ xor bx, bx ; 31 db ; 0xfa609 virtio.c:1050
+ mov ax, si ; 89 f0 ; 0xfa60b
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa60d
+ call 097d7h ; e8 c4 f1 ; 0xfa610
+ test dx, dx ; 85 d2 ; 0xfa613
+ jne short 0a61ch ; 75 05 ; 0xfa615
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xfa617
+ jc short 0a658h ; 72 3c ; 0xfa61a
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa61c
+ mov ax, si ; 89 f0 ; 0xfa61f
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa621
+ call 097d7h ; e8 b0 f1 ; 0xfa624
+ test dx, dx ; 85 d2 ; 0xfa627
+ jne short 0a630h ; 75 05 ; 0xfa629
+ cmp ax, strict word 00010h ; 3d 10 00 ; 0xfa62b
+ jc short 0a658h ; 72 28 ; 0xfa62e
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa630
+ mov ax, si ; 89 f0 ; 0xfa633
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa635
+ call 097d7h ; e8 9c f1 ; 0xfa638
+ test dx, dx ; 85 d2 ; 0xfa63b
+ jne short 0a644h ; 75 05 ; 0xfa63d
+ cmp ax, strict word 00020h ; 3d 20 00 ; 0xfa63f
+ jc short 0a658h ; 72 14 ; 0xfa642
+ mov bx, strict word 00008h ; bb 08 00 ; 0xfa644
+ mov ax, si ; 89 f0 ; 0xfa647
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa649
+ call 097d7h ; e8 88 f1 ; 0xfa64c
+ test dx, dx ; 85 d2 ; 0xfa64f
+ jne short 0a65dh ; 75 0a ; 0xfa651
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xfa653
+ jnc short 0a65dh ; 73 05 ; 0xfa656
+ xor ax, ax ; 31 c0 ; 0xfa658 virtio.c:1056
+ jmp near 0a7d4h ; e9 77 01 ; 0xfa65a
+ push strict byte 00000h ; 6a 00 ; 0xfa65d virtio.c:1059
+ push strict byte 00001h ; 6a 01 ; 0xfa65f
+ mov bx, strict word 0000ch ; bb 0c 00 ; 0xfa661
+ mov ax, si ; 89 f0 ; 0xfa664
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa666
+ call 0979bh ; e8 2f f1 ; 0xfa669
+ or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xfa66c virtio.c:1062
+ mov cl, byte [bp-008h] ; 8a 4e f8 ; 0xfa670 virtio.c:1063
+ xor ch, ch ; 30 ed ; 0xfa673
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa675
+ mov ax, si ; 89 f0 ; 0xfa678
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa67a
+ call 096fdh ; e8 7d f0 ; 0xfa67d
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa680 virtio.c:1066
+ mov ax, si ; 89 f0 ; 0xfa683
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa685
+ call 096c9h ; e8 3e f0 ; 0xfa688
+ test AL, strict byte 008h ; a8 08 ; 0xfa68b
+ je short 0a658h ; 74 c9 ; 0xfa68d
+ xor cx, cx ; 31 c9 ; 0xfa68f virtio.c:1073
+ mov bx, strict word 00016h ; bb 16 00 ; 0xfa691
+ mov ax, si ; 89 f0 ; 0xfa694
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa696
+ call 09767h ; e8 cb f0 ; 0xfa699
+ xor cx, cx ; 31 c9 ; 0xfa69c virtio.c:1074
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa69e
+ mov ax, si ; 89 f0 ; 0xfa6a1
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa6a3
+ call 09767h ; e8 be f0 ; 0xfa6a6
+ xor cx, cx ; 31 c9 ; 0xfa6a9 virtio.c:1075
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xfa6ab
+ mov ax, si ; 89 f0 ; 0xfa6ae
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa6b0
+ call 09767h ; e8 b1 f0 ; 0xfa6b3
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa6b6 virtio.c:1077
+ mov bx, strict word 00016h ; bb 16 00 ; 0xfa6b9
+ mov ax, si ; 89 f0 ; 0xfa6bc
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa6be
+ call 09767h ; e8 a3 f0 ; 0xfa6c1
+ xor cx, cx ; 31 c9 ; 0xfa6c4 virtio.c:1078
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa6c6
+ mov ax, si ; 89 f0 ; 0xfa6c9
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa6cb
+ call 09767h ; e8 96 f0 ; 0xfa6ce
+ xor cx, cx ; 31 c9 ; 0xfa6d1 virtio.c:1079
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xfa6d3
+ mov ax, si ; 89 f0 ; 0xfa6d6
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa6d8
+ call 09767h ; e8 89 f0 ; 0xfa6db
+ mov cx, strict word 00002h ; b9 02 00 ; 0xfa6de virtio.c:1082
+ mov bx, strict word 00016h ; bb 16 00 ; 0xfa6e1
+ mov ax, si ; 89 f0 ; 0xfa6e4
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa6e6
+ call 09767h ; e8 7b f0 ; 0xfa6e9
+ mov cx, strict word 00003h ; b9 03 00 ; 0xfa6ec virtio.c:1083
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa6ef
+ mov ax, si ; 89 f0 ; 0xfa6f2
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa6f4
+ call 09767h ; e8 6d f0 ; 0xfa6f7
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa6fa virtio.c:1084
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xfa6fd
+ mov ax, si ; 89 f0 ; 0xfa700
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa702
+ call 09767h ; e8 5f f0 ; 0xfa705
+ mov ax, si ; 89 f0 ; 0xfa708 virtio.c:1087
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa70a
+ call 098eeh ; e8 de f1 ; 0xfa70d
+ push dx ; 52 ; 0xfa710
+ push ax ; 50 ; 0xfa711
+ mov bx, strict word 00020h ; bb 20 00 ; 0xfa712
+ mov ax, si ; 89 f0 ; 0xfa715
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa717
+ call 0979bh ; e8 7e f0 ; 0xfa71a
+ push strict byte 00000h ; 6a 00 ; 0xfa71d virtio.c:1088
+ push strict byte 00000h ; 6a 00 ; 0xfa71f
+ mov bx, strict word 00024h ; bb 24 00 ; 0xfa721
+ mov ax, si ; 89 f0 ; 0xfa724
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa726
+ call 0979bh ; e8 6f f0 ; 0xfa729
+ lea ax, [si+050h] ; 8d 44 50 ; 0xfa72c virtio.c:1090
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa72f
+ call 098eeh ; e8 b9 f1 ; 0xfa732
+ push dx ; 52 ; 0xfa735
+ push ax ; 50 ; 0xfa736
+ mov bx, strict word 00028h ; bb 28 00 ; 0xfa737
+ mov ax, si ; 89 f0 ; 0xfa73a
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa73c
+ call 0979bh ; e8 59 f0 ; 0xfa73f
+ push strict byte 00000h ; 6a 00 ; 0xfa742 virtio.c:1091
+ push strict byte 00000h ; 6a 00 ; 0xfa744
+ mov bx, strict word 0002ch ; bb 2c 00 ; 0xfa746
+ mov ax, si ; 89 f0 ; 0xfa749
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa74b
+ call 0979bh ; e8 4a f0 ; 0xfa74e
+ lea ax, [si+05ch] ; 8d 44 5c ; 0xfa751 virtio.c:1093
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa754
+ call 098eeh ; e8 94 f1 ; 0xfa757
+ push dx ; 52 ; 0xfa75a
+ push ax ; 50 ; 0xfa75b
+ mov bx, strict word 00030h ; bb 30 00 ; 0xfa75c
+ mov ax, si ; 89 f0 ; 0xfa75f
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa761
+ call 0979bh ; e8 34 f0 ; 0xfa764
+ push strict byte 00000h ; 6a 00 ; 0xfa767 virtio.c:1094
+ push strict byte 00000h ; 6a 00 ; 0xfa769
+ mov bx, strict word 00034h ; bb 34 00 ; 0xfa76b
+ mov ax, si ; 89 f0 ; 0xfa76e
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa770
+ call 0979bh ; e8 25 f0 ; 0xfa773
+ push strict byte 00000h ; 6a 00 ; 0xfa776 virtio.c:1096
+ push strict byte 00010h ; 6a 10 ; 0xfa778
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa77a
+ mov ax, si ; 89 f0 ; 0xfa77d
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa77f
+ call 0980bh ; e8 86 f0 ; 0xfa782
+ push strict byte 00000h ; 6a 00 ; 0xfa785 virtio.c:1097
+ push strict byte 00020h ; 6a 20 ; 0xfa787
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa789
+ mov ax, si ; 89 f0 ; 0xfa78c
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa78e
+ call 0980bh ; e8 77 f0 ; 0xfa791
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfa794 virtio.c:1100
+ mov ax, si ; 89 f0 ; 0xfa797
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa799
+ call 09733h ; e8 94 ef ; 0xfa79c
+ mov es, [bp-014h] ; 8e 46 ec ; 0xfa79f
+ mov bx, word [es:si+000aeh] ; 26 8b 9c ae 00 ; 0xfa7a2
+ mov cx, word [es:si+000b0h] ; 26 8b 8c b0 00 ; 0xfa7a7
+ xor dx, dx ; 31 d2 ; 0xfa7ac
+ call 0af40h ; e8 8f 07 ; 0xfa7ae
+ mov word [es:si+078h], ax ; 26 89 44 78 ; 0xfa7b1
+ mov word [es:si+07ah], dx ; 26 89 54 7a ; 0xfa7b5
+ or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xfa7b9 virtio.c:1103
+ mov cl, byte [bp-008h] ; 8a 4e f8 ; 0xfa7bd virtio.c:1104
+ xor ch, ch ; 30 ed ; 0xfa7c0
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa7c2
+ mov ax, si ; 89 f0 ; 0xfa7c5
+ mov dx, es ; 8c c2 ; 0xfa7c7
+ call 096fdh ; e8 31 ef ; 0xfa7c9
+ mov ax, si ; 89 f0 ; 0xfa7cc virtio.c:1106
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfa7ce
+ call 09fcdh ; e8 f9 f7 ; 0xfa7d1
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa7d4 virtio.c:1107
+ pop di ; 5f ; 0xfa7d7
+ pop si ; 5e ; 0xfa7d8
+ pop cx ; 59 ; 0xfa7d9
+ pop bp ; 5d ; 0xfa7da
+ retn ; c3 ; 0xfa7db
+ ; disGetNextSymbol 0xfa7dc LB 0xafc -> off=0x0 cb=00000000000000fb uValue=00000000000f91dc 'virtio_scsi_init'
+virtio_scsi_init: ; 0xfa7dc LB 0xfb
+ push bp ; 55 ; 0xfa7dc virtio.c:1112
+ mov bp, sp ; 89 e5 ; 0xfa7dd
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xfa7df
+ mov dx, 01048h ; ba 48 10 ; 0xfa7e2 virtio.c:1116
+ mov ax, 01af4h ; b8 f4 1a ; 0xfa7e5
+ call 0acf9h ; e8 0e 05 ; 0xfa7e8
+ mov dx, ax ; 89 c2 ; 0xfa7eb
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa7ed virtio.c:1117
+ je short 0a852h ; 74 60 ; 0xfa7f0
+ mov byte [bp-002h], 0ffh ; c6 46 fe ff ; 0xfa7f2 virtio.c:1121
+ xor al, al ; 30 c0 ; 0xfa7f6 virtio.c:1122
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xfa7f8
+ shr ax, 008h ; c1 e8 08 ; 0xfa7fb virtio.c:1124
+ mov byte [bp-004h], al ; 88 46 fc ; 0xfa7fe
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xfa801 virtio.c:1125
+ xor dh, dh ; 30 f6 ; 0xfa804 virtio.c:1130
+ xor ah, ah ; 30 e4 ; 0xfa806
+ mov bx, strict word 00034h ; bb 34 00 ; 0xfa808
+ call 0ad1ch ; e8 0e 05 ; 0xfa80b
+ mov ch, al ; 88 c5 ; 0xfa80e
+ test ch, ch ; 84 ed ; 0xfa810 virtio.c:1132
+ je short 0a878h ; 74 64 ; 0xfa812
+ mov bl, ch ; 88 eb ; 0xfa814 virtio.c:1134
+ xor bh, bh ; 30 ff ; 0xfa816
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa818
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xfa81b
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xfa81e
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xfa821
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xfa824
+ mov byte [bp-009h], bh ; 88 7e f7 ; 0xfa827
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa82a
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa82d
+ call 0ad1ch ; e8 e9 04 ; 0xfa830
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xfa833
+ mov bl, ch ; 88 eb ; 0xfa836 virtio.c:1135
+ add bl, 002h ; 80 c3 02 ; 0xfa838
+ xor bh, bh ; 30 ff ; 0xfa83b
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa83d
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa840
+ call 0ad1ch ; e8 d6 04 ; 0xfa843
+ cmp byte [bp-010h], 009h ; 80 7e f0 09 ; 0xfa846 virtio.c:1139
+ jne short 0a885h ; 75 39 ; 0xfa84a
+ cmp AL, strict byte 010h ; 3c 10 ; 0xfa84c
+ jnc short 0a855h ; 73 05 ; 0xfa84e
+ jmp short 0a885h ; eb 33 ; 0xfa850
+ jmp near 0a8d3h ; e9 7e 00 ; 0xfa852
+ mov bl, ch ; 88 eb ; 0xfa855 virtio.c:1143
+ add bl, 003h ; 80 c3 03 ; 0xfa857
+ xor bh, bh ; 30 ff ; 0xfa85a
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa85c
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa85f
+ call 0ad1ch ; e8 b7 04 ; 0xfa862
+ cmp byte [bp-002h], 0ffh ; 80 7e fe ff ; 0xfa865 virtio.c:1145
+ jne short 0a86eh ; 75 03 ; 0xfa869
+ mov byte [bp-002h], ch ; 88 6e fe ; 0xfa86b virtio.c:1146
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa86e virtio.c:1149
+ jc short 0a885h ; 72 13 ; 0xfa870
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfa872
+ jbe short 0a87ah ; 76 04 ; 0xfa874
+ jmp short 0a885h ; eb 0d ; 0xfa876
+ jmp short 0a898h ; eb 1e ; 0xfa878
+ mov cl, al ; 88 c1 ; 0xfa87a virtio.c:1156
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xfa87c
+ mov AL, strict byte 001h ; b0 01 ; 0xfa87e
+ sal al, CL ; d2 e0 ; 0xfa880
+ or byte [bp-008h], al ; 08 46 f8 ; 0xfa882
+ mov bl, ch ; 88 eb ; 0xfa885 virtio.c:1163
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xfa887
+ xor bh, bh ; 30 ff ; 0xfa889
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xfa88b
+ xor dh, dh ; 30 f6 ; 0xfa88e
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xfa890
+ xor ah, ah ; 30 e4 ; 0xfa893
+ jmp near 0a80bh ; e9 73 ff ; 0xfa895 virtio.c:1164
+ cmp byte [bp-002h], 0ffh ; 80 7e fe ff ; 0xfa898 virtio.c:1167
+ je short 0a8d3h ; 74 35 ; 0xfa89c
+ cmp byte [bp-008h], 01fh ; 80 7e f8 1f ; 0xfa89e
+ jne short 0a8d3h ; 75 2f ; 0xfa8a2
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa8a4 virtio.c:1175
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xfa8a7
+ mov byte [bp-00fh], ch ; 88 6e f1 ; 0xfa8aa
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xfa8ad
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xfa8b0
+ mov byte [bp-00bh], ch ; 88 6e f5 ; 0xfa8b3
+ mov cx, strict word 00007h ; b9 07 00 ; 0xfa8b6
+ mov bx, strict word 00004h ; bb 04 00 ; 0xfa8b9
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa8bc
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xfa8bf
+ call 0adc2h ; e8 fd 04 ; 0xfa8c2
+ mov bl, byte [bp-002h] ; 8a 5e fe ; 0xfa8c5 virtio.c:1177
+ xor bh, bh ; 30 ff ; 0xfa8c8
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa8ca
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xfa8cd
+ call 0a47bh ; e8 a8 fb ; 0xfa8d0
+ mov sp, bp ; 89 ec ; 0xfa8d3 virtio.c:1184
+ pop bp ; 5d ; 0xfa8d5
+ retn ; c3 ; 0xfa8d6
+ ; disGetNextSymbol 0xfa8d7 LB 0xa01 -> off=0x0 cb=000000000000001b uValue=00000000000f92d7 'apm_out_str'
+apm_out_str: ; 0xfa8d7 LB 0x1b
+ push bp ; 55 ; 0xfa8d7 apm.c:146
+ mov bp, sp ; 89 e5 ; 0xfa8d8
+ push bx ; 53 ; 0xfa8da
+ mov bx, ax ; 89 c3 ; 0xfa8db
+ cmp byte [bx], 000h ; 80 3f 00 ; 0xfa8dd apm.c:148
+ je short 0a8ech ; 74 0a ; 0xfa8e0
+ mov al, byte [bx] ; 8a 07 ; 0xfa8e2 apm.c:149
+ out DX, AL ; ee ; 0xfa8e4
+ inc bx ; 43 ; 0xfa8e5
+ mov al, byte [bx] ; 8a 07 ; 0xfa8e6
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfa8e8
+ jne short 0a8e4h ; 75 f8 ; 0xfa8ea
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfa8ec apm.c:150
+ pop bx ; 5b ; 0xfa8ef
+ pop bp ; 5d ; 0xfa8f0
+ retn ; c3 ; 0xfa8f1
+ ; disGetNextSymbol 0xfa8f2 LB 0x9e6 -> off=0x1d cb=00000000000000d7 uValue=00000000000f930f 'apm_function'
+ db 00eh, 00bh, 007h, 006h, 005h, 004h, 002h, 001h, 000h, 0b5h, 0a9h, 03dh, 0a9h, 0e0h, 0a9h, 04fh
+ db 0a9h, 0e0h, 0a9h, 06ah, 0a9h, 0e0h, 0a9h, 06fh, 0a9h, 0b0h, 0a9h, 0a9h, 0a9h
+apm_function: ; 0xfa90f LB 0xd7
+ push bp ; 55 ; 0xfa90f apm.c:152
+ mov bp, sp ; 89 e5 ; 0xfa910
+ push di ; 57 ; 0xfa912
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xfa913 apm.c:156
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xfa917 apm.c:157
+ xor dh, dh ; 30 f6 ; 0xfa91a
+ cmp dx, strict byte 0000eh ; 83 fa 0e ; 0xfa91c
+ jnbe short 0a98ch ; 77 6b ; 0xfa91f
+ mov al, dl ; 88 d0 ; 0xfa921
+ push CS ; 0e ; 0xfa923
+ pop ES ; 07 ; 0xfa924
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xfa925
+ mov di, 0a8f2h ; bf f2 a8 ; 0xfa928
+ repne scasb ; f2 ae ; 0xfa92b
+ sal cx, 1 ; d1 e1 ; 0xfa92d
+ mov di, cx ; 89 cf ; 0xfa92f
+ mov bx, word [cs:di-05705h] ; 2e 8b 9d fb a8 ; 0xfa931
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xfa936
+ or AL, strict byte 001h ; 0c 01 ; 0xfa939
+ jmp bx ; ff e3 ; 0xfa93b
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa93d apm.c:159
+ mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xfa942 apm.c:160
+ mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xfa947 apm.c:161
+ jmp near 0a9e0h ; e9 91 00 ; 0xfa94c apm.c:162
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfa94f apm.c:172
+ mov word [bp+00ch], 0b03bh ; c7 46 0c 3b b0 ; 0xfa954 apm.c:173
+ mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xfa959 apm.c:174
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfa95e apm.c:175
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfa961
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfa964 apm.c:176
+ jmp near 0a9e0h ; e9 76 00 ; 0xfa967 apm.c:177
+ sti ; fb ; 0xfa96a apm.c:194
+ hlt ; f4 ; 0xfa96b apm.c:195
+ jmp near 0a9e0h ; e9 71 00 ; 0xfa96c apm.c:196
+ cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xfa96f apm.c:200
+ je short 0a996h ; 74 21 ; 0xfa973
+ cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xfa975
+ je short 0a98eh ; 74 13 ; 0xfa979
+ cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xfa97b
+ jne short 0a99eh ; 75 1d ; 0xfa97f
+ mov dx, 0040fh ; ba 0f 04 ; 0xfa981 apm.c:202
+ mov ax, 00e5ah ; b8 5a 0e ; 0xfa984
+ call 0a8d7h ; e8 4d ff ; 0xfa987
+ jmp short 0a9e0h ; eb 54 ; 0xfa98a apm.c:203
+ jmp short 0a9b5h ; eb 27 ; 0xfa98c
+ mov dx, 0040fh ; ba 0f 04 ; 0xfa98e apm.c:205
+ mov ax, 00e62h ; b8 62 0e ; 0xfa991
+ jmp short 0a987h ; eb f1 ; 0xfa994
+ mov dx, 0040fh ; ba 0f 04 ; 0xfa996 apm.c:208
+ mov ax, 00e6ah ; b8 6a 0e ; 0xfa999
+ jmp short 0a987h ; eb e9 ; 0xfa99c
+ or dh, 00ah ; 80 ce 0a ; 0xfa99e apm.c:211
+ mov word [bp+012h], dx ; 89 56 12 ; 0xfa9a1
+ mov word [bp+018h], ax ; 89 46 18 ; 0xfa9a4 apm.c:212
+ jmp short 0a9e0h ; eb 37 ; 0xfa9a7 apm.c:214
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa9a9 apm.c:216
+ jmp short 0a9e0h ; eb 30 ; 0xfa9ae apm.c:217
+ or dh, 080h ; 80 ce 80 ; 0xfa9b0 apm.c:224
+ jmp short 0a9a1h ; eb ec ; 0xfa9b3
+ mov bx, 00eeah ; bb ea 0e ; 0xfa9b5 apm.c:228
+ mov cx, ds ; 8c d9 ; 0xfa9b8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa9ba
+ call 018cbh ; e8 0b 6f ; 0xfa9bd
+ push word [bp+00ch] ; ff 76 0c ; 0xfa9c0
+ push word [bp+012h] ; ff 76 12 ; 0xfa9c3
+ push 00e73h ; 68 73 0e ; 0xfa9c6
+ push strict byte 00004h ; 6a 04 ; 0xfa9c9
+ call 0190eh ; e8 40 6f ; 0xfa9cb
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa9ce
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa9d1 apm.c:229
+ xor ah, ah ; 30 e4 ; 0xfa9d4
+ or ah, 00ch ; 80 cc 0c ; 0xfa9d6
+ mov word [bp+012h], ax ; 89 46 12 ; 0xfa9d9
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xfa9dc apm.c:230
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfa9e0 apm.c:232
+ pop di ; 5f ; 0xfa9e3
+ pop bp ; 5d ; 0xfa9e4
+ retn ; c3 ; 0xfa9e5
+ ; disGetNextSymbol 0xfa9e6 LB 0x8f2 -> off=0x0 cb=0000000000000024 uValue=00000000000f93e6 'pci16_select_reg'
+pci16_select_reg: ; 0xfa9e6 LB 0x24
+ push bp ; 55 ; 0xfa9e6 pcibios.c:188
+ mov bp, sp ; 89 e5 ; 0xfa9e7
+ push bx ; 53 ; 0xfa9e9
+ and dl, 0fch ; 80 e2 fc ; 0xfa9ea pcibios.c:190
+ mov bx, dx ; 89 d3 ; 0xfa9ed
+ mov dx, 00cf8h ; ba f8 0c ; 0xfa9ef
+ movzx eax, ax ; 66 0f b7 c0 ; 0xfa9f2
+ sal eax, 008h ; 66 c1 e0 08 ; 0xfa9f6
+ or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xfa9fa
+ db 08ah, 0c3h
+ ; mov al, bl ; 8a c3 ; 0xfaa00
+ out DX, eax ; 66 ef ; 0xfaa02
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfaa04 pcibios.c:191
+ pop bx ; 5b ; 0xfaa07
+ pop bp ; 5d ; 0xfaa08
+ retn ; c3 ; 0xfaa09
+ ; disGetNextSymbol 0xfaa0a LB 0x8ce -> off=0x0 cb=00000000000000fd uValue=00000000000f940a 'pci16_find_device'
+pci16_find_device: ; 0xfaa0a LB 0xfd
+ push bp ; 55 ; 0xfaa0a pcibios.c:223
+ mov bp, sp ; 89 e5 ; 0xfaa0b
+ push si ; 56 ; 0xfaa0d
+ push di ; 57 ; 0xfaa0e
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xfaa0f
+ push ax ; 50 ; 0xfaa12
+ push dx ; 52 ; 0xfaa13
+ mov si, bx ; 89 de ; 0xfaa14
+ mov di, cx ; 89 cf ; 0xfaa16
+ test cx, cx ; 85 c9 ; 0xfaa18 pcibios.c:233
+ xor bx, bx ; 31 db ; 0xfaa1a pcibios.c:240
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xfaa1c pcibios.c:241
+ test bl, 007h ; f6 c3 07 ; 0xfaa20 pcibios.c:251
+ jne short 0aa52h ; 75 2d ; 0xfaa23
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xfaa25 pcibios.c:252
+ mov ax, bx ; 89 d8 ; 0xfaa28
+ call 0a9e6h ; e8 b9 ff ; 0xfaa2a
+ mov dx, 00cfeh ; ba fe 0c ; 0xfaa2d pcibios.c:253
+ in AL, DX ; ec ; 0xfaa30
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfaa31
+ mov byte [bp-006h], al ; 88 46 fa ; 0xfaa33
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfaa36 pcibios.c:254
+ jne short 0aa40h ; 75 06 ; 0xfaa38
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfaa3a pcibios.c:255
+ jmp near 0aae1h ; e9 a1 00 ; 0xfaa3d pcibios.c:256
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xfaa40 pcibios.c:258
+ je short 0aa4dh ; 74 07 ; 0xfaa44
+ mov word [bp-010h], strict word 00001h ; c7 46 f0 01 00 ; 0xfaa46 pcibios.c:259
+ jmp short 0aa52h ; eb 05 ; 0xfaa4b pcibios.c:260
+ mov word [bp-010h], strict word 00008h ; c7 46 f0 08 00 ; 0xfaa4d pcibios.c:261
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfaa52 pcibios.c:272
+ and AL, strict byte 007h ; 24 07 ; 0xfaa55
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfaa57
+ jne short 0aa7ah ; 75 1f ; 0xfaa59
+ mov ax, bx ; 89 d8 ; 0xfaa5b
+ shr ax, 008h ; c1 e8 08 ; 0xfaa5d
+ test ax, ax ; 85 c0 ; 0xfaa60
+ jne short 0aa7ah ; 75 16 ; 0xfaa62
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfaa64 pcibios.c:274
+ mov ax, bx ; 89 d8 ; 0xfaa67
+ call 0a9e6h ; e8 7a ff ; 0xfaa69
+ mov dx, 00cfeh ; ba fe 0c ; 0xfaa6c pcibios.c:275
+ in AL, DX ; ec ; 0xfaa6f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfaa70
+ cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xfaa72 pcibios.c:276
+ jbe short 0aa7ah ; 76 03 ; 0xfaa75
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xfaa77 pcibios.c:277
+ test di, di ; 85 ff ; 0xfaa7a pcibios.c:281
+ je short 0aa83h ; 74 05 ; 0xfaa7c
+ mov dx, strict word 00008h ; ba 08 00 ; 0xfaa7e
+ jmp short 0aa85h ; eb 02 ; 0xfaa81
+ xor dx, dx ; 31 d2 ; 0xfaa83
+ mov ax, bx ; 89 d8 ; 0xfaa85
+ call 0a9e6h ; e8 5c ff ; 0xfaa87
+ mov dx, 00cfch ; ba fc 0c ; 0xfaa8a pcibios.c:282
+ in eax, DX ; 66 ed ; 0xfaa8d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfaa8f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfaa91
+ xchg dx, ax ; 92 ; 0xfaa95
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xfaa96
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xfaa99
+ mov ax, dx ; 89 d0 ; 0xfaa9c
+ mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xfaa9e pcibios.c:283
+ test di, di ; 85 ff ; 0xfaaa3 pcibios.c:286
+ je short 0aac5h ; 74 1e ; 0xfaaa5
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xfaaa7 pcibios.c:287
+ je short 0aab4h ; 74 07 ; 0xfaaab
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfaaad pcibios.c:288
+ xor ax, dx ; 31 d0 ; 0xfaab0
+ jmp short 0aac5h ; eb 11 ; 0xfaab2 pcibios.c:289
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xfaab4 pcibios.c:290
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfaab7
+ shr dx, 1 ; d1 ea ; 0xfaaba
+ rcr ax, 1 ; d1 d8 ; 0xfaabc
+ loop 0aabah ; e2 fa ; 0xfaabe
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xfaac0
+ mov ax, dx ; 89 d0 ; 0xfaac3
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xfaac5 pcibios.c:297
+ jne short 0aad2h ; 75 08 ; 0xfaac8
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfaaca
+ cmp ax, word [bp-012h] ; 3b 46 ee ; 0xfaacd
+ je short 0aad8h ; 74 06 ; 0xfaad0
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xfaad2 pcibios.c:298
+ je short 0aadeh ; 74 06 ; 0xfaad6
+ dec si ; 4e ; 0xfaad8
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfaad9
+ je short 0aaf2h ; 74 14 ; 0xfaadc
+ add bx, word [bp-010h] ; 03 5e f0 ; 0xfaade pcibios.c:306
+ mov dx, bx ; 89 da ; 0xfaae1 pcibios.c:307
+ shr dx, 008h ; c1 ea 08 ; 0xfaae3
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfaae6
+ xor ah, ah ; 30 e4 ; 0xfaae9
+ cmp dx, ax ; 39 c2 ; 0xfaaeb
+ jnbe short 0aaf2h ; 77 03 ; 0xfaaed
+ jmp near 0aa20h ; e9 2e ff ; 0xfaaef
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfaaf2 pcibios.c:309
+ jne short 0aafbh ; 75 04 ; 0xfaaf5 pcibios.c:313
+ mov ax, bx ; 89 d8 ; 0xfaaf7
+ jmp short 0aafeh ; eb 03 ; 0xfaaf9
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfaafb
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaafe pcibios.c:314
+ pop di ; 5f ; 0xfab01
+ pop si ; 5e ; 0xfab02
+ pop bp ; 5d ; 0xfab03
+ retn 00002h ; c2 02 00 ; 0xfab04
+ ; disGetNextSymbol 0xfab07 LB 0x7d1 -> off=0xc cb=00000000000001d6 uValue=00000000000f9513 'pci16_function'
+ db 0f8h, 0abh, 011h, 0ach, 023h, 0ach, 037h, 0ach, 049h, 0ach, 05ch, 0ach
+pci16_function: ; 0xfab13 LB 0x1d6
+ push bp ; 55 ; 0xfab13 pcibios.c:316
+ mov bp, sp ; 89 e5 ; 0xfab14
+ push si ; 56 ; 0xfab16
+ push di ; 57 ; 0xfab17
+ push ax ; 50 ; 0xfab18
+ push ax ; 50 ; 0xfab19
+ and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xfab1a pcibios.c:323
+ and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xfab1f pcibios.c:324
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfab23 pcibios.c:326
+ xor bh, bh ; 30 ff ; 0xfab26
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfab28
+ xor ah, ah ; 30 e4 ; 0xfab2b
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xfab2d
+ jc short 0ab45h ; 72 13 ; 0xfab30
+ jbe short 0ab9ah ; 76 66 ; 0xfab32
+ cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xfab34
+ je short 0aba2h ; 74 69 ; 0xfab37
+ cmp bx, strict byte 00008h ; 83 fb 08 ; 0xfab39
+ jc short 0ab4fh ; 72 11 ; 0xfab3c
+ cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xfab3e
+ jbe short 0aba5h ; 76 62 ; 0xfab41
+ jmp short 0ab4fh ; eb 0a ; 0xfab43
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xfab45
+ je short 0ab6eh ; 74 24 ; 0xfab48
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xfab4a
+ je short 0ab52h ; 74 03 ; 0xfab4d
+ jmp near 0acb5h ; e9 63 01 ; 0xfab4f
+ mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xfab52 pcibios.c:328
+ mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xfab57 pcibios.c:329
+ mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xfab5c pcibios.c:331
+ mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xfab61 pcibios.c:332
+ mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xfab66
+ jmp near 0ace2h ; e9 74 01 ; 0xfab6b pcibios.c:333
+ cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xfab6e pcibios.c:338
+ jne short 0ab7ah ; 75 06 ; 0xfab72
+ or ah, 083h ; 80 cc 83 ; 0xfab74 pcibios.c:339
+ jmp near 0acdbh ; e9 61 01 ; 0xfab77 pcibios.c:340
+ push strict byte 00000h ; 6a 00 ; 0xfab7a pcibios.c:342
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfab7c
+ mov dx, word [bp+01ch] ; 8b 56 1c ; 0xfab7f
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xfab82
+ xor cx, cx ; 31 c9 ; 0xfab85
+ call 0aa0ah ; e8 80 fe ; 0xfab87
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfab8a pcibios.c:343
+ jne short 0ab9ch ; 75 0d ; 0xfab8d
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfab8f pcibios.c:344
+ xor ah, ah ; 30 e4 ; 0xfab92
+ or ah, 086h ; 80 cc 86 ; 0xfab94
+ jmp near 0acdbh ; e9 41 01 ; 0xfab97
+ jmp short 0aba7h ; eb 0b ; 0xfab9a
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfab9c pcibios.c:345
+ jmp near 0ace2h ; e9 40 01 ; 0xfab9f pcibios.c:350
+ jmp near 0ac70h ; e9 cb 00 ; 0xfaba2
+ jmp short 0abceh ; eb 27 ; 0xfaba5
+ push strict byte 00000h ; 6a 00 ; 0xfaba7 pcibios.c:352
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfaba9
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfabac
+ mov dx, word [bp+01eh] ; 8b 56 1e ; 0xfabaf
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfabb2
+ call 0aa0ah ; e8 52 fe ; 0xfabb5
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfabb8 pcibios.c:353
+ jne short 0abc8h ; 75 0b ; 0xfabbb
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfabbd pcibios.c:354
+ xor ah, ah ; 30 e4 ; 0xfabc0
+ or ah, 086h ; 80 cc 86 ; 0xfabc2
+ jmp near 0acdbh ; e9 13 01 ; 0xfabc5 pcibios.c:355
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfabc8 pcibios.c:357
+ jmp near 0ace2h ; e9 14 01 ; 0xfabcb pcibios.c:359
+ cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xfabce pcibios.c:366
+ jc short 0abdbh ; 72 06 ; 0xfabd3
+ or ah, 087h ; 80 cc 87 ; 0xfabd5 pcibios.c:367
+ jmp near 0acdbh ; e9 00 01 ; 0xfabd8 pcibios.c:368
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfabdb pcibios.c:370
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfabde
+ call 0a9e6h ; e8 02 fe ; 0xfabe1
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfabe4 pcibios.c:371
+ xor bh, bh ; 30 ff ; 0xfabe7
+ sub bx, strict byte 00008h ; 83 eb 08 ; 0xfabe9
+ cmp bx, strict byte 00005h ; 83 fb 05 ; 0xfabec
+ jnbe short 0ac59h ; 77 68 ; 0xfabef
+ add bx, bx ; 01 db ; 0xfabf1
+ jmp word [cs:bx-054f9h] ; 2e ff a7 07 ab ; 0xfabf3
+ mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xfabf8 pcibios.c:373
+ xor bl, bl ; 30 db ; 0xfabfb
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfabfd
+ and dx, strict byte 00003h ; 83 e2 03 ; 0xfac00
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfac03
+ in AL, DX ; ec ; 0xfac07
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfac08
+ or bx, ax ; 09 c3 ; 0xfac0a
+ mov word [bp+01ch], bx ; 89 5e 1c ; 0xfac0c
+ jmp short 0ac59h ; eb 48 ; 0xfac0f pcibios.c:374
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfac11 pcibios.c:376
+ xor dh, dh ; 30 f6 ; 0xfac14
+ and dl, 002h ; 80 e2 02 ; 0xfac16
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfac19
+ in ax, DX ; ed ; 0xfac1d
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfac1e
+ jmp short 0ac59h ; eb 36 ; 0xfac21 pcibios.c:377
+ mov dx, 00cfch ; ba fc 0c ; 0xfac23 pcibios.c:379
+ in eax, DX ; 66 ed ; 0xfac26
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfac28
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfac2a
+ xchg dx, ax ; 92 ; 0xfac2e
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfac2f
+ mov word [bp+01eh], dx ; 89 56 1e ; 0xfac32
+ jmp short 0ac59h ; eb 22 ; 0xfac35 pcibios.c:380
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfac37 pcibios.c:382
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfac3a
+ xor dh, dh ; 30 f6 ; 0xfac3d
+ and dl, 003h ; 80 e2 03 ; 0xfac3f
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfac42
+ out DX, AL ; ee ; 0xfac46
+ jmp short 0ac59h ; eb 10 ; 0xfac47 pcibios.c:383
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfac49 pcibios.c:385
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfac4c
+ xor dh, dh ; 30 f6 ; 0xfac4f
+ and dl, 002h ; 80 e2 02 ; 0xfac51
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfac54
+ out DX, ax ; ef ; 0xfac58
+ jmp near 0ace2h ; e9 86 00 ; 0xfac59 pcibios.c:386
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfac5c pcibios.c:388
+ mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xfac5f
+ mov dx, 00cfch ; ba fc 0c ; 0xfac62
+ xchg cx, ax ; 91 ; 0xfac65
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfac66
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfac6a
+ out DX, eax ; 66 ef ; 0xfac6c
+ jmp short 0ace2h ; eb 72 ; 0xfac6e pcibios.c:392
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfac70 pcibios.c:394
+ mov es, [bp+026h] ; 8e 46 26 ; 0xfac73
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xfac76
+ mov [bp-006h], es ; 8c 46 fa ; 0xfac79
+ mov cx, word [0f380h] ; 8b 0e 80 f3 ; 0xfac7c pcibios.c:398
+ cmp cx, word [es:bx] ; 26 3b 0f ; 0xfac80
+ jbe short 0ac96h ; 76 11 ; 0xfac83
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfac85 pcibios.c:399
+ xor ah, ah ; 30 e4 ; 0xfac88
+ or ah, 089h ; 80 cc 89 ; 0xfac8a
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfac8d
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfac90 pcibios.c:400
+ jmp short 0acaah ; eb 14 ; 0xfac94 pcibios.c:401
+ les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xfac96 pcibios.c:402
+ mov si, 0f1a0h ; be a0 f1 ; 0xfac9a
+ mov dx, ds ; 8c da ; 0xfac9d
+ push DS ; 1e ; 0xfac9f
+ mov ds, dx ; 8e da ; 0xfaca0
+ rep movsb ; f3 a4 ; 0xfaca2
+ pop DS ; 1f ; 0xfaca4
+ mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xfaca5 pcibios.c:404
+ mov ax, word [0f380h] ; a1 80 f3 ; 0xfacaa pcibios.c:406
+ les bx, [bp-008h] ; c4 5e f8 ; 0xfacad
+ mov word [es:bx], ax ; 26 89 07 ; 0xfacb0
+ jmp short 0ace2h ; eb 2d ; 0xfacb3 pcibios.c:407
+ mov bx, 00eeah ; bb ea 0e ; 0xfacb5 pcibios.c:409
+ mov cx, ds ; 8c d9 ; 0xfacb8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfacba
+ call 018cbh ; e8 0b 6c ; 0xfacbd
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfacc0
+ push ax ; 50 ; 0xfacc3
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfacc4
+ push ax ; 50 ; 0xfacc7
+ push 00ea6h ; 68 a6 0e ; 0xfacc8
+ push strict byte 00004h ; 6a 04 ; 0xfaccb
+ call 0190eh ; e8 3e 6c ; 0xfaccd
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfacd0
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfacd3 pcibios.c:410
+ xor ah, ah ; 30 e4 ; 0xfacd6
+ or ah, 081h ; 80 cc 81 ; 0xfacd8
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfacdb
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfacde pcibios.c:411
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xface2 pcibios.c:413
+ pop di ; 5f ; 0xface5
+ pop si ; 5e ; 0xface6
+ pop bp ; 5d ; 0xface7
+ retn ; c3 ; 0xface8
+ ; disGetNextSymbol 0xface9 LB 0x5ef -> off=0x0 cb=0000000000000008 uValue=00000000000f96e9 'pci_find_classcode'
+pci_find_classcode: ; 0xface9 LB 0x8
+ push bp ; 55 ; 0xface9 pciutil.c:125
+ mov bp, sp ; 89 e5 ; 0xfacea
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfacec pciutil.c:132
+ pop bp ; 5d ; 0xfacef
+ retn ; c3 ; 0xfacf0
+ ; disGetNextSymbol 0xfacf1 LB 0x5e7 -> off=0x0 cb=0000000000000008 uValue=00000000000f96f1 'pci_find_class_noif'
+pci_find_class_noif: ; 0xfacf1 LB 0x8
+ push bp ; 55 ; 0xfacf1 pciutil.c:145
+ mov bp, sp ; 89 e5 ; 0xfacf2
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfacf4 pciutil.c:153
+ pop bp ; 5d ; 0xfacf7
+ retn ; c3 ; 0xfacf8
+ ; disGetNextSymbol 0xfacf9 LB 0x5df -> off=0x0 cb=0000000000000023 uValue=00000000000f96f9 'pci_find_device'
+pci_find_device: ; 0xfacf9 LB 0x23
+ push bp ; 55 ; 0xfacf9 pciutil.c:166
+ mov bp, sp ; 89 e5 ; 0xfacfa
+ push bx ; 53 ; 0xfacfc
+ push cx ; 51 ; 0xfacfd
+ push si ; 56 ; 0xfacfe
+ mov cx, dx ; 89 d1 ; 0xfacff
+ xor si, si ; 31 f6 ; 0xfad01 pciutil.c:168
+ mov dx, ax ; 89 c2 ; 0xfad03
+ mov ax, 0b102h ; b8 02 b1 ; 0xfad05
+ int 01ah ; cd 1a ; 0xfad08
+ cmp ah, 000h ; 80 fc 00 ; 0xfad0a
+ je short 0ad12h ; 74 03 ; 0xfad0d
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xfad0f
+ mov ax, bx ; 89 d8 ; 0xfad12
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfad14 pciutil.c:169
+ pop si ; 5e ; 0xfad17
+ pop cx ; 59 ; 0xfad18
+ pop bx ; 5b ; 0xfad19
+ pop bp ; 5d ; 0xfad1a
+ retn ; c3 ; 0xfad1b
+ ; disGetNextSymbol 0xfad1c LB 0x5bc -> off=0x0 cb=000000000000002e uValue=00000000000f971c 'pci_read_config_byte'
+pci_read_config_byte: ; 0xfad1c LB 0x2e
+ push bp ; 55 ; 0xfad1c pciutil.c:171
+ mov bp, sp ; 89 e5 ; 0xfad1d
+ push cx ; 51 ; 0xfad1f
+ push di ; 57 ; 0xfad20
+ mov dh, al ; 88 c6 ; 0xfad21
+ mov bh, dl ; 88 d7 ; 0xfad23
+ mov al, bl ; 88 d8 ; 0xfad25
+ xor ah, ah ; 30 e4 ; 0xfad27 pciutil.c:173
+ mov dl, dh ; 88 f2 ; 0xfad29
+ xor dh, dh ; 30 f6 ; 0xfad2b
+ sal dx, 008h ; c1 e2 08 ; 0xfad2d
+ mov bl, bh ; 88 fb ; 0xfad30
+ xor bh, bh ; 30 ff ; 0xfad32
+ or bx, dx ; 09 d3 ; 0xfad34
+ mov di, ax ; 89 c7 ; 0xfad36
+ mov ax, 0b108h ; b8 08 b1 ; 0xfad38
+ int 01ah ; cd 1a ; 0xfad3b
+ mov al, cl ; 88 c8 ; 0xfad3d
+ xor ah, ah ; 30 e4 ; 0xfad3f
+ xor dx, dx ; 31 d2 ; 0xfad41 pciutil.c:174
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfad43
+ pop di ; 5f ; 0xfad46
+ pop cx ; 59 ; 0xfad47
+ pop bp ; 5d ; 0xfad48
+ retn ; c3 ; 0xfad49
+ ; disGetNextSymbol 0xfad4a LB 0x58e -> off=0x0 cb=000000000000002a uValue=00000000000f974a 'pci_read_config_word'
+pci_read_config_word: ; 0xfad4a LB 0x2a
+ push bp ; 55 ; 0xfad4a pciutil.c:176
+ mov bp, sp ; 89 e5 ; 0xfad4b
+ push cx ; 51 ; 0xfad4d
+ push di ; 57 ; 0xfad4e
+ mov bh, al ; 88 c7 ; 0xfad4f
+ mov al, bl ; 88 d8 ; 0xfad51
+ xor ah, ah ; 30 e4 ; 0xfad53 pciutil.c:178
+ mov bl, bh ; 88 fb ; 0xfad55
+ xor bh, bh ; 30 ff ; 0xfad57
+ mov cx, bx ; 89 d9 ; 0xfad59
+ sal cx, 008h ; c1 e1 08 ; 0xfad5b
+ mov bl, dl ; 88 d3 ; 0xfad5e
+ or bx, cx ; 09 cb ; 0xfad60
+ mov di, ax ; 89 c7 ; 0xfad62
+ mov ax, 0b109h ; b8 09 b1 ; 0xfad64
+ int 01ah ; cd 1a ; 0xfad67
+ mov ax, cx ; 89 c8 ; 0xfad69
+ xor dx, dx ; 31 d2 ; 0xfad6b pciutil.c:179
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfad6d
+ pop di ; 5f ; 0xfad70
+ pop cx ; 59 ; 0xfad71
+ pop bp ; 5d ; 0xfad72
+ retn ; c3 ; 0xfad73
+ ; disGetNextSymbol 0xfad74 LB 0x564 -> off=0x0 cb=000000000000004e uValue=00000000000f9774 'pci_read_config_dword'
+pci_read_config_dword: ; 0xfad74 LB 0x4e
+ push bp ; 55 ; 0xfad74 pciutil.c:181
+ mov bp, sp ; 89 e5 ; 0xfad75
+ push cx ; 51 ; 0xfad77
+ push di ; 57 ; 0xfad78
+ push ax ; 50 ; 0xfad79
+ mov dh, al ; 88 c6 ; 0xfad7a
+ mov cl, dl ; 88 d1 ; 0xfad7c
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xfad7e
+ mov al, bl ; 88 d8 ; 0xfad81 pciutil.c:186
+ xor ah, ah ; 30 e4 ; 0xfad83
+ mov dl, dh ; 88 f2 ; 0xfad85
+ xor dh, dh ; 30 f6 ; 0xfad87
+ mov di, dx ; 89 d7 ; 0xfad89
+ sal di, 008h ; c1 e7 08 ; 0xfad8b
+ mov dl, cl ; 88 ca ; 0xfad8e
+ or dx, di ; 09 fa ; 0xfad90
+ mov di, ax ; 89 c7 ; 0xfad92
+ mov bx, dx ; 89 d3 ; 0xfad94
+ mov ax, 0b109h ; b8 09 b1 ; 0xfad96
+ int 01ah ; cd 1a ; 0xfad99
+ test cx, cx ; 85 c9 ; 0xfad9b
+ jne short 0adb3h ; 75 14 ; 0xfad9d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfad9f
+ xor ah, ah ; 30 e4 ; 0xfada2
+ mov di, ax ; 89 c7 ; 0xfada4
+ inc di ; 47 ; 0xfada6
+ inc di ; 47 ; 0xfada7
+ mov bx, dx ; 89 d3 ; 0xfada8
+ mov ax, 0b109h ; b8 09 b1 ; 0xfadaa
+ int 01ah ; cd 1a ; 0xfadad
+ test cx, cx ; 85 c9 ; 0xfadaf
+ je short 0adb8h ; 74 05 ; 0xfadb1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfadb3
+ jmp short 0adbah ; eb 02 ; 0xfadb6
+ xor ax, ax ; 31 c0 ; 0xfadb8
+ cwd ; 99 ; 0xfadba
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfadbb pciutil.c:189
+ pop di ; 5f ; 0xfadbe
+ pop cx ; 59 ; 0xfadbf
+ pop bp ; 5d ; 0xfadc0
+ retn ; c3 ; 0xfadc1
+ ; disGetNextSymbol 0xfadc2 LB 0x516 -> off=0x0 cb=0000000000000025 uValue=00000000000f97c2 'pci_write_config_word'
+pci_write_config_word: ; 0xfadc2 LB 0x25
+ push bp ; 55 ; 0xfadc2 pciutil.c:191
+ mov bp, sp ; 89 e5 ; 0xfadc3
+ push di ; 57 ; 0xfadc5
+ push ax ; 50 ; 0xfadc6
+ mov byte [bp-004h], al ; 88 46 fc ; 0xfadc7
+ mov al, bl ; 88 d8 ; 0xfadca
+ xor ah, ah ; 30 e4 ; 0xfadcc pciutil.c:193
+ mov di, ax ; 89 c7 ; 0xfadce
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xfadd0
+ mov bx, ax ; 89 c3 ; 0xfadd3
+ sal bx, 008h ; c1 e3 08 ; 0xfadd5
+ mov al, dl ; 88 d0 ; 0xfadd8
+ or bx, ax ; 09 c3 ; 0xfadda
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfaddc
+ int 01ah ; cd 1a ; 0xfaddf
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfade1 pciutil.c:194
+ pop di ; 5f ; 0xfade4
+ pop bp ; 5d ; 0xfade5
+ retn ; c3 ; 0xfade6
+ ; disGetNextSymbol 0xfade7 LB 0x4f1 -> off=0x0 cb=0000000000000025 uValue=00000000000f97e7 'pci_write_config_byte'
+pci_write_config_byte: ; 0xfade7 LB 0x25
+ push bp ; 55 ; 0xfade7 pciutil.c:196
+ mov bp, sp ; 89 e5 ; 0xfade8
+ push di ; 57 ; 0xfadea
+ push ax ; 50 ; 0xfadeb
+ mov byte [bp-004h], al ; 88 46 fc ; 0xfadec
+ mov al, bl ; 88 d8 ; 0xfadef
+ xor ah, ah ; 30 e4 ; 0xfadf1 pciutil.c:198
+ mov di, ax ; 89 c7 ; 0xfadf3
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xfadf5
+ mov bx, ax ; 89 c3 ; 0xfadf8
+ sal bx, 008h ; c1 e3 08 ; 0xfadfa
+ mov al, dl ; 88 d0 ; 0xfadfd
+ or bx, ax ; 09 c3 ; 0xfadff
+ mov ax, 0b10bh ; b8 0b b1 ; 0xfae01
+ int 01ah ; cd 1a ; 0xfae04
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfae06 pciutil.c:199
+ pop di ; 5f ; 0xfae09
+ pop bp ; 5d ; 0xfae0a
+ retn ; c3 ; 0xfae0b
+ ; disGetNextSymbol 0xfae0c LB 0x4cc -> off=0x0 cb=0000000000000046 uValue=00000000000f980c 'pci_write_config_dword'
+pci_write_config_dword: ; 0xfae0c LB 0x46
+ push bp ; 55 ; 0xfae0c pciutil.c:201
+ mov bp, sp ; 89 e5 ; 0xfae0d
+ push cx ; 51 ; 0xfae0f
+ push di ; 57 ; 0xfae10
+ push ax ; 50 ; 0xfae11
+ mov dh, al ; 88 c6 ; 0xfae12
+ mov bh, dl ; 88 d7 ; 0xfae14
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xfae16
+ mov al, bl ; 88 d8 ; 0xfae19 pciutil.c:206
+ xor ah, ah ; 30 e4 ; 0xfae1b
+ mov dl, dh ; 88 f2 ; 0xfae1d
+ xor dh, dh ; 30 f6 ; 0xfae1f
+ mov di, dx ; 89 d7 ; 0xfae21
+ sal di, 008h ; c1 e7 08 ; 0xfae23
+ mov dl, bh ; 88 fa ; 0xfae26
+ or dx, di ; 09 fa ; 0xfae28
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfae2a
+ mov di, ax ; 89 c7 ; 0xfae2d
+ mov bx, dx ; 89 d3 ; 0xfae2f
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfae31
+ int 01ah ; cd 1a ; 0xfae34
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfae36 pciutil.c:207
+ xor ah, ah ; 30 e4 ; 0xfae39
+ mov di, ax ; 89 c7 ; 0xfae3b
+ inc di ; 47 ; 0xfae3d
+ inc di ; 47 ; 0xfae3e
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xfae3f
+ mov bx, dx ; 89 d3 ; 0xfae42
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfae44
+ int 01ah ; cd 1a ; 0xfae47
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfae49 pciutil.c:209
+ pop di ; 5f ; 0xfae4c
+ pop cx ; 59 ; 0xfae4d
+ pop bp ; 5d ; 0xfae4e
+ retn 00004h ; c2 04 00 ; 0xfae4f
+ ; disGetNextSymbol 0xfae52 LB 0x486 -> off=0x0 cb=000000000000001d uValue=00000000000f9852 'vds_is_present'
+vds_is_present: ; 0xfae52 LB 0x1d
+ push bx ; 53 ; 0xfae52 vds.c:32
+ push bp ; 55 ; 0xfae53
+ mov bp, sp ; 89 e5 ; 0xfae54
+ mov bx, strict word 0007bh ; bb 7b 00 ; 0xfae56 vds.c:36
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfae59
+ mov es, ax ; 8e c0 ; 0xfae5c
+ test byte [es:bx], 020h ; 26 f6 07 20 ; 0xfae5e vds.c:37
+ je short 0ae6ah ; 74 06 ; 0xfae62
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfae64
+ pop bp ; 5d ; 0xfae67
+ pop bx ; 5b ; 0xfae68
+ retn ; c3 ; 0xfae69
+ xor ax, ax ; 31 c0 ; 0xfae6a
+ pop bp ; 5d ; 0xfae6c vds.c:38
+ pop bx ; 5b ; 0xfae6d
+ retn ; c3 ; 0xfae6e
+ ; disGetNextSymbol 0xfae6f LB 0x469 -> off=0x0 cb=000000000000001e uValue=00000000000f986f 'vds_real_to_lin'
+vds_real_to_lin: ; 0xfae6f LB 0x1e
+ push bx ; 53 ; 0xfae6f vds.c:67
+ push cx ; 51 ; 0xfae70
+ push bp ; 55 ; 0xfae71
+ mov bp, sp ; 89 e5 ; 0xfae72
+ mov bx, ax ; 89 c3 ; 0xfae74
+ mov ax, dx ; 89 d0 ; 0xfae76
+ xor dx, dx ; 31 d2 ; 0xfae78 vds.c:69
+ mov cx, strict word 00004h ; b9 04 00 ; 0xfae7a
+ sal ax, 1 ; d1 e0 ; 0xfae7d
+ rcl dx, 1 ; d1 d2 ; 0xfae7f
+ loop 0ae7dh ; e2 fa ; 0xfae81
+ xor cx, cx ; 31 c9 ; 0xfae83
+ add ax, bx ; 01 d8 ; 0xfae85
+ adc dx, cx ; 11 ca ; 0xfae87
+ pop bp ; 5d ; 0xfae89 vds.c:70
+ pop cx ; 59 ; 0xfae8a
+ pop bx ; 5b ; 0xfae8b
+ retn ; c3 ; 0xfae8c
+ ; disGetNextSymbol 0xfae8d LB 0x44b -> off=0x0 cb=0000000000000077 uValue=00000000000f988d 'vds_build_sg_list'
+vds_build_sg_list: ; 0xfae8d LB 0x77
+ push bp ; 55 ; 0xfae8d vds.c:77
+ mov bp, sp ; 89 e5 ; 0xfae8e
+ push si ; 56 ; 0xfae90
+ push di ; 57 ; 0xfae91
+ mov di, ax ; 89 c7 ; 0xfae92
+ mov si, dx ; 89 d6 ; 0xfae94
+ mov ax, bx ; 89 d8 ; 0xfae96
+ mov dx, cx ; 89 ca ; 0xfae98
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfae9a vds.c:82
+ mov es, si ; 8e c6 ; 0xfae9d
+ mov word [es:di], bx ; 26 89 1d ; 0xfae9f
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xfaea2
+ mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xfaea5
+ call 0ae6fh ; e8 c3 ff ; 0xfaea9 vds.c:83
+ mov es, si ; 8e c6 ; 0xfaeac
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfaeae
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfaeb2
+ mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xfaeb6 vds.c:84
+ call 0ae52h ; e8 93 ff ; 0xfaebc vds.c:85
+ test ax, ax ; 85 c0 ; 0xfaebf
+ je short 0aed4h ; 74 11 ; 0xfaec1
+ mov es, si ; 8e c6 ; 0xfaec3 vds.c:87
+ mov ax, 08105h ; b8 05 81 ; 0xfaec5
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfaec8
+ int 04bh ; cd 4b ; 0xfaecb
+ jc short 0aed1h ; 72 02 ; 0xfaecd
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfaecf
+ cbw ; 98 ; 0xfaed1
+ jmp short 0aefbh ; eb 27 ; 0xfaed2 vds.c:88
+ mov es, si ; 8e c6 ; 0xfaed4 vds.c:90
+ mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xfaed6
+ mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xfaedc vds.c:91
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xfaee0
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xfaee4
+ mov word [es:di+012h], ax ; 26 89 45 12 ; 0xfaee8
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xfaeec vds.c:92
+ mov word [es:di+014h], ax ; 26 89 45 14 ; 0xfaeef
+ mov ax, bx ; 89 d8 ; 0xfaef3
+ mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xfaef5
+ xor ax, bx ; 31 d8 ; 0xfaef9 vds.c:93
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaefb vds.c:96
+ pop di ; 5f ; 0xfaefe
+ pop si ; 5e ; 0xfaeff
+ pop bp ; 5d ; 0xfaf00
+ retn 00004h ; c2 04 00 ; 0xfaf01
+ ; disGetNextSymbol 0xfaf04 LB 0x3d4 -> off=0x0 cb=000000000000002e uValue=00000000000f9904 'vds_free_sg_list'
+vds_free_sg_list: ; 0xfaf04 LB 0x2e
+ push bp ; 55 ; 0xfaf04 vds.c:102
+ mov bp, sp ; 89 e5 ; 0xfaf05
+ push bx ; 53 ; 0xfaf07
+ push di ; 57 ; 0xfaf08
+ mov bx, ax ; 89 c3 ; 0xfaf09
+ call 0ae52h ; e8 44 ff ; 0xfaf0b vds.c:106
+ test ax, ax ; 85 c0 ; 0xfaf0e
+ je short 0af23h ; 74 11 ; 0xfaf10
+ mov di, bx ; 89 df ; 0xfaf12 vds.c:108
+ mov es, dx ; 8e c2 ; 0xfaf14
+ mov ax, 08106h ; b8 06 81 ; 0xfaf16
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfaf19
+ int 04bh ; cd 4b ; 0xfaf1c
+ jc short 0af22h ; 72 02 ; 0xfaf1e
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfaf20
+ cbw ; 98 ; 0xfaf22
+ mov es, dx ; 8e c2 ; 0xfaf23 vds.c:116
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xfaf25
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaf2b vds.c:118
+ pop di ; 5f ; 0xfaf2e
+ pop bx ; 5b ; 0xfaf2f
+ pop bp ; 5d ; 0xfaf30
+ retn ; c3 ; 0xfaf31
+ ; disGetNextSymbol 0xfaf32 LB 0x3a6 -> off=0xe cb=0000000000000020 uValue=00000000000f9940 '__U4M'
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+__U4M: ; 0xfaf40 LB 0x20
+ pushfw ; 9c ; 0xfaf40 __U4M.asm:37
+ push si ; 56 ; 0xfaf41 __U4M.asm:65
+ push di ; 57 ; 0xfaf42 __U4M.asm:66
+ push ax ; 50 ; 0xfaf43 __U4M.asm:79
+ db 08bh, 0fah
+ ; mov di, dx ; 8b fa ; 0xfaf44 __U4M.asm:80
+ mul bx ; f7 e3 ; 0xfaf46 __U4M.asm:83
+ db 08bh, 0f2h
+ ; mov si, dx ; 8b f2 ; 0xfaf48 __U4M.asm:84
+ xchg di, ax ; 97 ; 0xfaf4a __U4M.asm:85
+ mul bx ; f7 e3 ; 0xfaf4b __U4M.asm:88
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xfaf4d __U4M.asm:89
+ pop ax ; 58 ; 0xfaf4f __U4M.asm:92
+ mul cx ; f7 e1 ; 0xfaf50 __U4M.asm:93
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xfaf52 __U4M.asm:94
+ db 08bh, 0d6h
+ ; mov dx, si ; 8b d6 ; 0xfaf54 __U4M.asm:97
+ db 08bh, 0c7h
+ ; mov ax, di ; 8b c7 ; 0xfaf56 __U4M.asm:98
+ pop di ; 5f ; 0xfaf58 __U4M.asm:100
+ pop si ; 5e ; 0xfaf59 __U4M.asm:101
+ popfw ; 9d ; 0xfaf5a __U4M.asm:103
+ retn ; c3 ; 0xfaf5b __U4M.asm:104
+ times 0x4 db 0
+ ; disGetNextSymbol 0xfaf60 LB 0x378 -> off=0x0 cb=0000000000000030 uValue=00000000000f9960 '__U4D'
+__U4D: ; 0xfaf60 LB 0x30
+ pushfw ; 9c ; 0xfaf60 __U4D.asm:44
+ test cx, cx ; 85 c9 ; 0xfaf61 __U4D.asm:77
+ jne short 0af6dh ; 75 08 ; 0xfaf63 __U4D.asm:78
+ div bx ; f7 f3 ; 0xfaf65 __U4D.asm:80
+ db 08bh, 0dah
+ ; mov bx, dx ; 8b da ; 0xfaf67 __U4D.asm:82
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xfaf69 __U4D.asm:84
+ popfw ; 9d ; 0xfaf6b __U4D.asm:86
+ retn ; c3 ; 0xfaf6c __U4D.asm:87
+ push DS ; 1e ; 0xfaf6d __U4D.asm:91
+ push ES ; 06 ; 0xfaf6e __U4D.asm:92
+ push bp ; 55 ; 0xfaf6f __U4D.asm:99
+ sub sp, strict byte 00004h ; 83 ec 04 ; 0xfaf70 __U4D.asm:100
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfaf73 __U4D.asm:101
+ push SS ; 16 ; 0xfaf75 __U4D.asm:104
+ push bp ; 55 ; 0xfaf76 __U4D.asm:105
+ add bp, strict byte 00004h ; 83 c5 04 ; 0xfaf77 __U4D.asm:106
+ push cx ; 51 ; 0xfaf7a __U4D.asm:109
+ push bx ; 53 ; 0xfaf7b __U4D.asm:110
+ push dx ; 52 ; 0xfaf7c __U4D.asm:113
+ push ax ; 50 ; 0xfaf7d __U4D.asm:114
+ call 0b04ch ; e8 cb 00 ; 0xfaf7e __U4D.asm:116
+ mov cx, word [bp-002h] ; 8b 4e fe ; 0xfaf81 __U4D.asm:119
+ mov bx, word [bp-004h] ; 8b 5e fc ; 0xfaf84 __U4D.asm:120
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xfaf87 __U4D.asm:124
+ pop bp ; 5d ; 0xfaf89 __U4D.asm:125
+ pop ES ; 07 ; 0xfaf8a __U4D.asm:126
+ pop DS ; 1f ; 0xfaf8b __U4D.asm:127
+ popfw ; 9d ; 0xfaf8c __U4D.asm:129
+ retn ; c3 ; 0xfaf8d __U4D.asm:130
+ times 0x2 db 0
+ ; disGetNextSymbol 0xfaf90 LB 0x348 -> off=0x0 cb=0000000000000010 uValue=00000000000f9990 '__U8RS'
+__U8RS: ; 0xfaf90 LB 0x10
+ test si, si ; 85 f6 ; 0xfaf90 __U8RS.asm:40
+ je short 0af9fh ; 74 0b ; 0xfaf92 __U8RS.asm:41
+ shr ax, 1 ; d1 e8 ; 0xfaf94 __U8RS.asm:43
+ rcr bx, 1 ; d1 db ; 0xfaf96 __U8RS.asm:44
+ rcr cx, 1 ; d1 d9 ; 0xfaf98 __U8RS.asm:45
+ rcr dx, 1 ; d1 da ; 0xfaf9a __U8RS.asm:46
+ dec si ; 4e ; 0xfaf9c __U8RS.asm:47
+ jne short 0af94h ; 75 f5 ; 0xfaf9d __U8RS.asm:48
+ retn ; c3 ; 0xfaf9f __U8RS.asm:50
+ ; disGetNextSymbol 0xfafa0 LB 0x338 -> off=0x0 cb=0000000000000010 uValue=00000000000f99a0 '__U8LS'
+__U8LS: ; 0xfafa0 LB 0x10
+ test si, si ; 85 f6 ; 0xfafa0 __U8LS.asm:40
+ je short 0afafh ; 74 0b ; 0xfafa2 __U8LS.asm:41
+ sal dx, 1 ; d1 e2 ; 0xfafa4 __U8LS.asm:43
+ rcl cx, 1 ; d1 d1 ; 0xfafa6 __U8LS.asm:44
+ rcl bx, 1 ; d1 d3 ; 0xfafa8 __U8LS.asm:45
+ rcl ax, 1 ; d1 d0 ; 0xfafaa __U8LS.asm:46
+ dec si ; 4e ; 0xfafac __U8LS.asm:47
+ jne short 0afa4h ; 75 f5 ; 0xfafad __U8LS.asm:48
+ retn ; c3 ; 0xfafaf __U8LS.asm:50
+ ; disGetNextSymbol 0xfafb0 LB 0x328 -> off=0x0 cb=0000000000000010 uValue=00000000000f99b0 '_fmemset_'
+_fmemset_: ; 0xfafb0 LB 0x10
+ push di ; 57 ; 0xfafb0 fmemset.asm:42
+ mov es, dx ; 8e c2 ; 0xfafb1 fmemset.asm:44
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfafb3 fmemset.asm:45
+ xchg al, bl ; 86 d8 ; 0xfafb5 fmemset.asm:46
+ rep stosb ; f3 aa ; 0xfafb7 fmemset.asm:47
+ xchg al, bl ; 86 d8 ; 0xfafb9 fmemset.asm:48
+ pop di ; 5f ; 0xfafbb fmemset.asm:50
+ retn ; c3 ; 0xfafbc fmemset.asm:51
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfafc0 LB 0x318 -> off=0x0 cb=000000000000003a uValue=00000000000f99c0 '_fmemcpy_'
+_fmemcpy_: ; 0xfafc0 LB 0x3a
+ push bp ; 55 ; 0xfafc0 fmemcpy.asm:42
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfafc1 fmemcpy.asm:43
+ push di ; 57 ; 0xfafc3 fmemcpy.asm:44
+ push DS ; 1e ; 0xfafc4 fmemcpy.asm:45
+ push si ; 56 ; 0xfafc5 fmemcpy.asm:46
+ mov es, dx ; 8e c2 ; 0xfafc6 fmemcpy.asm:48
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfafc8 fmemcpy.asm:49
+ mov ds, cx ; 8e d9 ; 0xfafca fmemcpy.asm:50
+ db 08bh, 0f3h
+ ; mov si, bx ; 8b f3 ; 0xfafcc fmemcpy.asm:51
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfafce fmemcpy.asm:52
+ rep movsb ; f3 a4 ; 0xfafd1 fmemcpy.asm:53
+ pop si ; 5e ; 0xfafd3 fmemcpy.asm:55
+ pop DS ; 1f ; 0xfafd4 fmemcpy.asm:56
+ pop di ; 5f ; 0xfafd5 fmemcpy.asm:57
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xfafd6 fmemcpy.asm:58
+ pop bp ; 5d ; 0xfafd8 fmemcpy.asm:59
+ retn ; c3 ; 0xfafd9 fmemcpy.asm:60
+ add byte [bx+si], al ; 00 00 ; 0xfafda
+ add byte [bx+si], al ; 00 00 ; 0xfafdc
+ add byte [bx+si], al ; 00 00 ; 0xfafde
+ adc byte [bx+si-04feeh], dh ; 10 b0 12 b0 ; 0xfafe0
+ sbb ax, 01db0h ; 1d b0 1d ; 0xfafe4
+ mov AL, strict byte 01dh ; b0 1d ; 0xfafe7
+ mov AL, strict byte 01fh ; b0 1f ; 0xfafe9
+ mov AL, strict byte 01fh ; b0 1f ; 0xfafeb
+ mov AL, strict byte 021h ; b0 21 ; 0xfafed
+ mov AL, strict byte 025h ; b0 25 ; 0xfafef
+ mov AL, strict byte 025h ; b0 25 ; 0xfaff1
+ mov AL, strict byte 027h ; b0 27 ; 0xfaff3
+ mov AL, strict byte 02ch ; b0 2c ; 0xfaff5
+ mov AL, strict byte 02eh ; b0 2e ; 0xfaff7
+ db 0b0h
+ ; disGetNextSymbol 0xfaffa LB 0x2de -> off=0x0 cb=0000000000000041 uValue=00000000000099fa 'apm_worker'
+apm_worker: ; 0xfaffa LB 0x41
+ sti ; fb ; 0xfaffa apm_pm.asm:56
+ push ax ; 50 ; 0xfaffb apm_pm.asm:58
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfaffc apm_pm.asm:59
+ sub AL, strict byte 004h ; 2c 04 ; 0xfaffe apm_pm.asm:60
+ db 08bh, 0e8h
+ ; mov bp, ax ; 8b e8 ; 0xfb000 apm_pm.asm:61
+ sal bp, 1 ; d1 e5 ; 0xfb002 apm_pm.asm:62
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfb004 apm_pm.asm:63
+ pop ax ; 58 ; 0xfb006 apm_pm.asm:64
+ mov AH, strict byte 053h ; b4 53 ; 0xfb007 apm_pm.asm:65
+ jnc short 0b037h ; 73 2c ; 0xfb009 apm_pm.asm:66
+ jmp word [cs:bp-05020h] ; 2e ff a6 e0 af ; 0xfb00b apm_pm.asm:68
+ jmp short 0b035h ; eb 23 ; 0xfb010 apm_pm.asm:71
+ push CS ; 0e ; 0xfb012 apm_pm.asm:80
+ pop ax ; 58 ; 0xfb013 apm_pm.asm:81
+ test ax, strict word 00003h ; a9 03 00 ; 0xfb014 apm_pm.asm:82
+ jne short 0b035h ; 75 1c ; 0xfb017 apm_pm.asm:83
+ sti ; fb ; 0xfb019 apm_pm.asm:84
+ hlt ; f4 ; 0xfb01a apm_pm.asm:85
+ jmp short 0b035h ; eb 18 ; 0xfb01b apm_pm.asm:86
+ jmp short 0b035h ; eb 16 ; 0xfb01d apm_pm.asm:95
+ jmp short 0b037h ; eb 16 ; 0xfb01f apm_pm.asm:101
+ mov AH, strict byte 080h ; b4 80 ; 0xfb021 apm_pm.asm:104
+ jmp short 0b039h ; eb 14 ; 0xfb023 apm_pm.asm:105
+ jmp short 0b037h ; eb 10 ; 0xfb025 apm_pm.asm:110
+ mov ax, 00102h ; b8 02 01 ; 0xfb027 apm_pm.asm:113
+ jmp short 0b035h ; eb 09 ; 0xfb02a apm_pm.asm:114
+ jmp short 0b035h ; eb 07 ; 0xfb02c apm_pm.asm:118
+ mov BL, strict byte 000h ; b3 00 ; 0xfb02e apm_pm.asm:121
+ mov cx, strict word 00000h ; b9 00 00 ; 0xfb030 apm_pm.asm:122
+ jmp short 0b035h ; eb 00 ; 0xfb033 apm_pm.asm:123
+ clc ; f8 ; 0xfb035 apm_pm.asm:126
+ retn ; c3 ; 0xfb036 apm_pm.asm:127
+ mov AH, strict byte 009h ; b4 09 ; 0xfb037 apm_pm.asm:130
+ stc ; f9 ; 0xfb039 apm_pm.asm:133
+ retn ; c3 ; 0xfb03a apm_pm.asm:134
+ ; disGetNextSymbol 0xfb03b LB 0x29d -> off=0x0 cb=0000000000000011 uValue=00000000000f9a3b 'apm_pm16_entry'
+apm_pm16_entry: ; 0xfb03b LB 0x11
+ mov AH, strict byte 002h ; b4 02 ; 0xfb03b apm_pm.asm:146
+ push DS ; 1e ; 0xfb03d apm_pm.asm:152
+ push bp ; 55 ; 0xfb03e apm_pm.asm:153
+ push CS ; 0e ; 0xfb03f apm_pm.asm:155
+ pop bp ; 5d ; 0xfb040 apm_pm.asm:156
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xfb041 apm_pm.asm:157
+ mov ds, bp ; 8e dd ; 0xfb044 apm_pm.asm:158
+ call 0affah ; e8 b1 ff ; 0xfb046 apm_pm.asm:160
+ pop bp ; 5d ; 0xfb049 apm_pm.asm:162
+ pop DS ; 1f ; 0xfb04a apm_pm.asm:163
+ retf ; cb ; 0xfb04b apm_pm.asm:165
+ ; disGetNextSymbol 0xfb04c LB 0x28c -> off=0x0 cb=0000000000000265 uValue=00000000000f9a4c 'DoUInt32Div'
+DoUInt32Div: ; 0xfb04c LB 0x265
+ push bp ; 55 ; 0xfb04c DoUInt32Div.c:28
+ mov bp, sp ; 89 e5 ; 0xfb04d
+ push si ; 56 ; 0xfb04f
+ push di ; 57 ; 0xfb050
+ sub sp, strict byte 00018h ; 83 ec 18 ; 0xfb051
+ lds bx, [bp+00ch] ; c5 5e 0c ; 0xfb054
+ lea si, [bp+004h] ; 8d 76 04 ; 0xfb057 DoUInt32Div.c:972
+ mov word [bp-010h], si ; 89 76 f0 ; 0xfb05a
+ mov [bp-00eh], ss ; 8c 56 f2 ; 0xfb05d
+ lea di, [bp+008h] ; 8d 7e 08 ; 0xfb060
+ mov [bp-008h], ss ; 8c 56 f8 ; 0xfb063
+ lea si, [bp-01ch] ; 8d 76 e4 ; 0xfb066
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xfb069
+ mov [bp-00ah], ss ; 8c 56 f6 ; 0xfb06c
+ mov si, bx ; 89 de ; 0xfb06f
+ mov [bp-006h], ds ; 8c 5e fa ; 0xfb071
+ cmp word [bx+002h], strict byte 00000h ; 83 7f 02 00 ; 0xfb074 DoUInt32Div.c:980
+ jne short 0b09ch ; 75 22 ; 0xfb078
+ mov ax, word [bx] ; 8b 07 ; 0xfb07a DoUInt32Div.c:982
+ test ax, ax ; 85 c0 ; 0xfb07c
+ je short 0b099h ; 74 19 ; 0xfb07e
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xfb080 DoUInt32Div.c:985
+ jne short 0b09ch ; 75 17 ; 0xfb083
+ xor ax, ax ; 31 c0 ; 0xfb085 DoUInt32Div.c:67
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xfb087
+ mov word [bp+008h], ax ; 89 46 08 ; 0xfb08a DoUInt32Div.c:68
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfb08d DoUInt32Div.c:988
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfb090
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xfb093
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfb096
+ jmp near 0b2a4h ; e9 08 02 ; 0xfb099
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfb09c DoUInt32Div.c:726
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfb09f
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb0a2
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfb0a5
+ je short 0b0c2h ; 74 18 ; 0xfb0a8
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfb0aa DoUInt32Div.c:727
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfb0ad
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb0b0
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfb0b3
+ jbe short 0b0bdh ; 76 05 ; 0xfb0b6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfb0b8
+ jmp short 0b0e3h ; eb 26 ; 0xfb0bb
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfb0bd
+ jmp short 0b0e3h ; eb 21 ; 0xfb0c0
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfb0c2 DoUInt32Div.c:728
+ mov ax, word [bx] ; 8b 07 ; 0xfb0c5
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb0c7
+ cmp ax, word [si] ; 3b 04 ; 0xfb0ca
+ je short 0b0e1h ; 74 13 ; 0xfb0cc
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfb0ce DoUInt32Div.c:729
+ mov ax, word [bx] ; 8b 07 ; 0xfb0d1
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb0d3
+ cmp ax, word [si] ; 3b 04 ; 0xfb0d6
+ jbe short 0b0dch ; 76 02 ; 0xfb0d8
+ jmp short 0b0b8h ; eb dc ; 0xfb0da
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfb0dc
+ jmp short 0b0e3h ; eb 02 ; 0xfb0df
+ xor ax, ax ; 31 c0 ; 0xfb0e1 DoUInt32Div.c:730
+ test ax, ax ; 85 c0 ; 0xfb0e3 DoUInt32Div.c:996
+ jnl short 0b105h ; 7d 1e ; 0xfb0e5
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfb0e7 DoUInt32Div.c:998
+ mov ax, word [bx] ; 8b 07 ; 0xfb0ea
+ mov dx, word [bx+002h] ; 8b 57 02 ; 0xfb0ec
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb0ef
+ mov word [di], ax ; 89 05 ; 0xfb0f2
+ mov word [di+002h], dx ; 89 55 02 ; 0xfb0f4
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfb0f7 DoUInt32Div.c:67
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfb0fa
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfb0ff DoUInt32Div.c:68
+ jmp short 0b099h ; eb 94 ; 0xfb103 DoUInt32Div.c:1003
+ jne short 0b11ch ; 75 15 ; 0xfb105
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb107 DoUInt32Div.c:67
+ mov word [di+002h], ax ; 89 45 02 ; 0xfb10a
+ mov word [di], ax ; 89 05 ; 0xfb10d DoUInt32Div.c:68
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfb10f DoUInt32Div.c:397
+ mov word [bx], strict word 00001h ; c7 07 01 00 ; 0xfb112
+ mov word [bx+002h], ax ; 89 47 02 ; 0xfb116 DoUInt32Div.c:398
+ jmp near 0b2a4h ; e9 88 01 ; 0xfb119 DoUInt32Div.c:1008
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfb11c DoUInt32Div.c:954
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfb11f
+ test ax, ax ; 85 c0 ; 0xfb122
+ je short 0b137h ; 74 11 ; 0xfb124
+ push ax ; 50 ; 0xfb126 DoUInt32Div.c:955
+ mov ax, 0f000h ; b8 00 f0 ; 0xfb127
+ mov ds, ax ; 8e d8 ; 0xfb12a
+ call 0b2c0h ; e8 91 01 ; 0xfb12c
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfb12f
+ add ax, strict word 00010h ; 05 10 00 ; 0xfb132
+ jmp short 0b144h ; eb 0d ; 0xfb135 DoUInt32Div.c:956
+ push word [bx] ; ff 37 ; 0xfb137 DoUInt32Div.c:957
+ mov ax, 0f000h ; b8 00 f0 ; 0xfb139
+ mov ds, ax ; 8e d8 ; 0xfb13c
+ call 0b2c0h ; e8 7f 01 ; 0xfb13e
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfb141
+ mov word [bp-014h], ax ; 89 46 ec ; 0xfb144 DoUInt32Div.c:959
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb147 DoUInt32Div.c:954
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfb14a
+ test ax, ax ; 85 c0 ; 0xfb14d
+ je short 0b162h ; 74 11 ; 0xfb14f
+ push ax ; 50 ; 0xfb151 DoUInt32Div.c:955
+ mov ax, 0f000h ; b8 00 f0 ; 0xfb152
+ mov ds, ax ; 8e d8 ; 0xfb155
+ call 0b2c0h ; e8 66 01 ; 0xfb157
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfb15a
+ add ax, strict word 00010h ; 05 10 00 ; 0xfb15d
+ jmp short 0b16fh ; eb 0d ; 0xfb160 DoUInt32Div.c:956
+ push word [si] ; ff 34 ; 0xfb162 DoUInt32Div.c:957
+ mov ax, 0f000h ; b8 00 f0 ; 0xfb164
+ mov ds, ax ; 8e d8 ; 0xfb167
+ call 0b2c0h ; e8 54 01 ; 0xfb169
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfb16c
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfb16f DoUInt32Div.c:959
+ sub dx, ax ; 29 c2 ; 0xfb172
+ mov word [bp-012h], dx ; 89 56 ee ; 0xfb174
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb177 DoUInt32Div.c:1014
+ mov ax, word [si] ; 8b 04 ; 0xfb17a
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfb17c
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfb17f
+ mov word [bp-016h], ax ; 89 46 ea ; 0xfb182
+ test dx, dx ; 85 d2 ; 0xfb185 DoUInt32Div.c:1015
+ je short 0b1dfh ; 74 56 ; 0xfb187
+ mov cx, dx ; 89 d1 ; 0xfb189 DoUInt32Div.c:280
+ xor ch, dh ; 30 f5 ; 0xfb18b
+ and cl, 01fh ; 80 e1 1f ; 0xfb18d
+ mov ax, word [si] ; 8b 04 ; 0xfb190 DoUInt32Div.c:282
+ mov dx, word [si+002h] ; 8b 54 02 ; 0xfb192
+ jcxz 0b19dh ; e3 06 ; 0xfb195
+ sal ax, 1 ; d1 e0 ; 0xfb197
+ rcl dx, 1 ; d1 d2 ; 0xfb199
+ loop 0b197h ; e2 fa ; 0xfb19b
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfb19d
+ mov word [bp-016h], dx ; 89 56 ea ; 0xfb1a0
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfb1a3 DoUInt32Div.c:763
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfb1a6
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfb1a9
+ jnbe short 0b1bdh ; 77 0f ; 0xfb1ac
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfb1ae
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfb1b1
+ jne short 0b1c1h ; 75 0b ; 0xfb1b4
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfb1b6
+ cmp ax, word [bx] ; 3b 07 ; 0xfb1b9
+ jbe short 0b1c1h ; 76 04 ; 0xfb1bb
+ mov AL, strict byte 001h ; b0 01 ; 0xfb1bd
+ jmp short 0b1c3h ; eb 02 ; 0xfb1bf
+ xor al, al ; 30 c0 ; 0xfb1c1
+ test al, al ; 84 c0 ; 0xfb1c3 DoUInt32Div.c:769
+ je short 0b1eah ; 74 23 ; 0xfb1c5
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xfb1c7 DoUInt32Div.c:680
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfb1ca
+ dec word [bp-012h] ; ff 4e ee ; 0xfb1cd
+ jmp short 0b1eah ; eb 18 ; 0xfb1d0
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xfb1d2 DoUInt32Div.c:632
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xfb1d5
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xfb1d8
+ loop 0b1d5h ; e2 f8 ; 0xfb1db
+ jmp short 0b1cdh ; eb ee ; 0xfb1dd DoUInt32Div.c:647
+ mov ax, word [si] ; 8b 04 ; 0xfb1df DoUInt32Div.c:1025
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfb1e1
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfb1e4
+ mov word [bp-016h], ax ; 89 46 ea ; 0xfb1e7
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfb1ea DoUInt32Div.c:67
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfb1ed
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfb1f2 DoUInt32Div.c:68
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfb1f6 DoUInt32Div.c:1028
+ mov dx, word [bx] ; 8b 17 ; 0xfb1f9
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfb1fb
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb1fe
+ mov word [di], dx ; 89 15 ; 0xfb201
+ mov word [di+002h], ax ; 89 45 02 ; 0xfb203
+ mov dx, word [di] ; 8b 15 ; 0xfb206 DoUInt32Div.c:782
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb208
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfb20b
+ jnbe short 0b216h ; 77 06 ; 0xfb20e
+ jne short 0b21ah ; 75 08 ; 0xfb210
+ cmp dx, word [si] ; 3b 14 ; 0xfb212
+ jc short 0b21ah ; 72 04 ; 0xfb214
+ mov AL, strict byte 001h ; b0 01 ; 0xfb216
+ jmp short 0b21ch ; eb 02 ; 0xfb218
+ xor al, al ; 30 c0 ; 0xfb21a
+ test al, al ; 84 c0 ; 0xfb21c DoUInt32Div.c:788
+ je short 0b281h ; 74 61 ; 0xfb21e
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb220 DoUInt32Div.c:782
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xfb223
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfb226
+ jnbe short 0b237h ; 77 0c ; 0xfb229
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfb22b
+ jne short 0b23bh ; 75 0b ; 0xfb22e
+ mov ax, word [di] ; 8b 05 ; 0xfb230
+ cmp ax, word [bp-018h] ; 3b 46 e8 ; 0xfb232
+ jc short 0b23bh ; 72 04 ; 0xfb235
+ mov AL, strict byte 001h ; b0 01 ; 0xfb237
+ jmp short 0b23dh ; eb 02 ; 0xfb239
+ xor al, al ; 30 c0 ; 0xfb23b
+ test al, al ; 84 c0 ; 0xfb23d DoUInt32Div.c:788
+ je short 0b267h ; 74 26 ; 0xfb23f
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfb241 DoUInt32Div.c:451
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb244
+ sub word [di], ax ; 29 05 ; 0xfb247
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfb249
+ sbb word [di+002h], ax ; 19 45 02 ; 0xfb24c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfb24f DoUInt32Div.c:586
+ xor dx, dx ; 31 d2 ; 0xfb252
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xfb254
+ jcxz 0b25fh ; e3 06 ; 0xfb257
+ sal ax, 1 ; d1 e0 ; 0xfb259
+ rcl dx, 1 ; d1 d2 ; 0xfb25b
+ loop 0b259h ; e2 fa ; 0xfb25d
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfb25f
+ or word [bx], ax ; 09 07 ; 0xfb262
+ or word [bx+002h], dx ; 09 57 02 ; 0xfb264
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb267 DoUInt32Div.c:744
+ mov dx, word [di] ; 8b 15 ; 0xfb26a
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xfb26c
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb26f
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfb272
+ jc short 0b27dh ; 72 06 ; 0xfb275
+ jne short 0b283h ; 75 0a ; 0xfb277
+ cmp dx, word [si] ; 3b 14 ; 0xfb279
+ jnc short 0b283h ; 73 06 ; 0xfb27b
+ mov AL, strict byte 001h ; b0 01 ; 0xfb27d
+ jmp short 0b285h ; eb 04 ; 0xfb27f
+ jmp short 0b2a4h ; eb 21 ; 0xfb281
+ xor al, al ; 30 c0 ; 0xfb283
+ test al, al ; 84 c0 ; 0xfb285 DoUInt32Div.c:750
+ je short 0b298h ; 74 0f ; 0xfb287
+ jmp short 0b2a4h ; eb 19 ; 0xfb289 DoUInt32Div.c:1043
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xfb28b DoUInt32Div.c:680
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xfb28e
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xfb291
+ loop 0b28eh ; e2 f8 ; 0xfb294
+ jmp short 0b29eh ; eb 06 ; 0xfb296 DoUInt32Div.c:647
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xfb298 DoUInt32Div.c:653
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfb29b
+ dec word [bp-012h] ; ff 4e ee ; 0xfb29e DoUInt32Div.c:1045
+ jmp near 0b220h ; e9 7c ff ; 0xfb2a1 DoUInt32Div.c:1046
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfb2a4 DoUInt32Div.c:32
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xfb2a7
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfb2aa DoUInt32Div.c:33
+ pop di ; 5f ; 0xfb2ad
+ pop si ; 5e ; 0xfb2ae
+ pop bp ; 5d ; 0xfb2af
+ retn ; c3 ; 0xfb2b0
+ ; disGetNextSymbol 0xfb2b1 LB 0x27 -> off=0xf cb=0000000000000018 uValue=00000000000f9cc0 '_ASMBitLastSetU16'
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+_ASMBitLastSetU16: ; 0xfb2c0 LB 0x18
+ push bp ; 55 ; 0xfb2c0 ASMBitLastSetU16.asm:43
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfb2c1 ASMBitLastSetU16.asm:44
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfb2c3 ASMBitLastSetU16.asm:46
+ test cx, cx ; 85 c9 ; 0xfb2c6 ASMBitLastSetU16.asm:47
+ je short 0b2d4h ; 74 0a ; 0xfb2c8 ASMBitLastSetU16.asm:48
+ mov ax, strict word 00010h ; b8 10 00 ; 0xfb2ca ASMBitLastSetU16.asm:50
+ sal cx, 1 ; d1 e1 ; 0xfb2cd ASMBitLastSetU16.asm:52
+ jc short 0b2d6h ; 72 05 ; 0xfb2cf ASMBitLastSetU16.asm:53
+ dec ax ; 48 ; 0xfb2d1 ASMBitLastSetU16.asm:54
+ jmp short 0b2cdh ; eb f9 ; 0xfb2d2 ASMBitLastSetU16.asm:55
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfb2d4 ASMBitLastSetU16.asm:58
+ pop bp ; 5d ; 0xfb2d6 ASMBitLastSetU16.asm:60
+ retn ; c3 ; 0xfb2d7 ASMBitLastSetU16.asm:61
+
+ ; Padding 0x2728 bytes at 0xfb2d8
+ times 10024 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:52
+ cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:54
+ jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:55
+ cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:57
+ inc bx ; 43 ; 0xfda09
+ dec cx ; 49 ; 0xfda0a
+ mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:58
+ jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:59
+ mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:61
+ db 00fh
+ add byte [bx+di-01000h], bh ; 00 b9 00 f0 ; 0xfda13
+ add byte [bx+si], al ; 00 00 ; 0xfda17
+ mov dx, 0da26h ; ba 26 da ; 0xfda19 pcibio32.asm:63
+ add byte [bx+si], al ; 00 00 ; 0xfda1c
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:64
+ popfw ; 9d ; 0xfda20 pcibio32.asm:66
+ retf ; cb ; 0xfda21 pcibio32.asm:67
+ mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:70
+ jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:71
+ ; disGetNextSymbol 0xfda26 LB 0x380 -> off=0x0 cb=000000000000000d uValue=00000000000f0026 'pcibios32_entry'
+pcibios32_entry: ; 0xfda26 LB 0xd
+ pushfw ; 9c ; 0xfda26 pcibio32.asm:80
+ cld ; fc ; 0xfda27 pcibio32.asm:81
+ push ES ; 06 ; 0xfda28 pcibio32.asm:83
+ pushaw ; 60 ; 0xfda29 pcibio32.asm:84
+ call 0db52h ; e8 25 01 ; 0xfda2a pcibio32.asm:85
+ add byte [bx+si], al ; 00 00 ; 0xfda2d
+ popaw ; 61 ; 0xfda2f pcibio32.asm:86
+ pop ES ; 07 ; 0xfda30 pcibio32.asm:87
+ popfw ; 9d ; 0xfda31 pcibio32.asm:89
+ retf ; cb ; 0xfda32 pcibio32.asm:90
+ ; disGetNextSymbol 0xfda33 LB 0x373 -> off=0x0 cb=0000000000000022 uValue=00000000000f0033 'pci32_select_reg_'
+pci32_select_reg_: ; 0xfda33 LB 0x22
+ push bp ; 55 ; 0xfda33 pci32.c:188
+ mov bp, sp ; 89 e5 ; 0xfda34
+ push bx ; 53 ; 0xfda36
+ and dl, 0fch ; 80 e2 fc ; 0xfda37 pci32.c:190
+ mov bx, dx ; 89 d3 ; 0xfda3a
+ mov dx, 00cf8h ; ba f8 0c ; 0xfda3c
+ add byte [bx+si], al ; 00 00 ; 0xfda3f
+ db 00fh, 0b7h, 0c0h
+ ; movzx ax, ax ; 0f b7 c0 ; 0xfda41
+ sal ax, 008h ; c1 e0 08 ; 0xfda44
+ or ax, strict word 00000h ; 0d 00 00 ; 0xfda47
+ add byte [bx+si-03c76h], al ; 00 80 8a c3 ; 0xfda4a
+ out DX, ax ; ef ; 0xfda4e
+ lea sp, [di-004h] ; 8d 65 fc ; 0xfda4f pci32.c:191
+ pop bx ; 5b ; 0xfda52
+ pop bp ; 5d ; 0xfda53
+ retn ; c3 ; 0xfda54
+ ; disGetNextSymbol 0xfda55 LB 0x351 -> off=0x0 cb=00000000000000ff uValue=00000000000f0055 'pci32_find_device_'
+pci32_find_device_: ; 0xfda55 LB 0xff
+ push bp ; 55 ; 0xfda55 pci32.c:223
+ 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:233
+ xor bx, bx ; 31 db ; 0xfda67 pci32.c:240
+ xor cl, cl ; 30 c9 ; 0xfda69 pci32.c:241
+ test bl, 007h ; f6 c3 07 ; 0xfda6b pci32.c:251
+ jne short 0daaah ; 75 3a ; 0xfda6e
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfda70 pci32.c:252
+ 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:253
+ 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:254
+ jne short 0da94h ; 75 08 ; 0xfda8a
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfda8c pci32.c:255
+ jmp near 0db2ah ; e9 98 00 ; 0xfda8f pci32.c:256
+ add byte [bx+si], al ; 00 00 ; 0xfda92
+ test byte [di-00ch], 080h ; f6 45 f4 80 ; 0xfda94 pci32.c:258
+ je short 0daa3h ; 74 09 ; 0xfda98
+ mov word [di-010h], strict word 00001h ; c7 45 f0 01 00 ; 0xfda9a pci32.c:259
+ add byte [bx+si], al ; 00 00 ; 0xfda9f
+ jmp short 0daaah ; eb 07 ; 0xfdaa1 pci32.c:260
+ mov word [di-010h], strict word 00008h ; c7 45 f0 08 00 ; 0xfdaa3 pci32.c:261
+ add byte [bx+si], al ; 00 00 ; 0xfdaa8
+ mov al, byte [di-00ch] ; 8a 45 f4 ; 0xfdaaa pci32.c:272
+ 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:274
+ 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:275
+ 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:276
+ jbe short 0dad7h ; 76 02 ; 0xfdad3
+ mov cl, al ; 88 c1 ; 0xfdad5 pci32.c:277
+ test di, di ; 85 ff ; 0xfdad7 pci32.c:281
+ 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:282
+ 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:283
+ add byte [bx+si], al ; 00 00 ; 0xfdafd
+ test di, di ; 85 ff ; 0xfdaff pci32.c:286
+ je short 0db14h ; 74 11 ; 0xfdb01
+ cmp word [di-01ch], strict byte 00000h ; 83 7d e4 00 ; 0xfdb03 pci32.c:287
+ je short 0db0eh ; 74 05 ; 0xfdb07
+ shr ax, 010h ; c1 e8 10 ; 0xfdb09 pci32.c:288
+ jmp short 0db11h ; eb 03 ; 0xfdb0c pci32.c:289
+ shr ax, 008h ; c1 e8 08 ; 0xfdb0e pci32.c:290
+ mov word [di-014h], ax ; 89 45 ec ; 0xfdb11
+ mov ax, word [di-014h] ; 8b 45 ec ; 0xfdb14 pci32.c:297
+ 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:298
+ 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:306
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb2c pci32.c:307
+ 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:314
+ 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:316
+ 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:323
+ 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:328
+ 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:338
+ jne short 0dbdeh ; 75 0d ; 0xfdbcf
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbd1 pci32.c:339
+ xor ah, ah ; 30 e4 ; 0xfdbd4
+ or ah, 083h ; 80 cc 83 ; 0xfdbd6
+ jmp near 0dd94h ; e9 b8 01 ; 0xfdbd9 pci32.c:340
+ add byte [bx+si], al ; 00 00 ; 0xfdbdc
+ xor cx, cx ; 31 c9 ; 0xfdbde pci32.c:342
+ 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:344
+ 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:345
+ jmp near 0dd9ch ; e9 8a 01 ; 0xfdc0f pci32.c:350
+ add byte [bx+si], al ; 00 00 ; 0xfdc12
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc14 pci32.c:352
+ 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:354
+ xor ah, ah ; 30 e4 ; 0xfdc30
+ or ah, 086h ; 80 cc 86 ; 0xfdc32
+ jmp near 0dd94h ; e9 5c 01 ; 0xfdc35 pci32.c:355
+ add byte [bx+si], al ; 00 00 ; 0xfdc38
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc3a pci32.c:357
+ jmp near 0dd9ch ; e9 5b 01 ; 0xfdc3e pci32.c:359
+ 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:366
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc4b pci32.c:367
+ xor ah, ah ; 30 e4 ; 0xfdc4e
+ or ah, 087h ; 80 cc 87 ; 0xfdc50
+ jmp near 0dd94h ; e9 3e 01 ; 0xfdc53 pci32.c:368
+ add byte [bx+si], al ; 00 00 ; 0xfdc56
+ db 00fh, 0b7h, 055h, 008h
+ ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc58 pci32.c:370
+ 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:374
+ add byte [bx+si], al ; 00 00 ; 0xfdcc2
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcc4 pci32.c:376
+ 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:377
+ add byte [bx+si], al ; 00 00 ; 0xfdcdf
+ mov dx, 00cfch ; ba fc 0c ; 0xfdce1 pci32.c:379
+ 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:380
+ add byte [bx+si], al ; 00 00 ; 0xfdced
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdcef pci32.c:382
+ 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:383
+ add byte [bx+si], al ; 00 00 ; 0xfdd07
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd09 pci32.c:385
+ 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:386
+ add byte [bx+si], al ; 00 00 ; 0xfdd23
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd25 pci32.c:388
+ 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:392
+ db 00fh, 0b7h, 045h, 008h
+ ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd30 pci32.c:394
+ 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:398
+ xor bl, 000h ; 80 f3 00 ; 0xfdd3f
+ add byte [bp+026h], ah ; 00 66 26 ; 0xfdd42
+ cmp dx, word [bx+si] ; 3b 10 ; 0xfdd45
+ jbe short 0dd5bh ; 76 12 ; 0xfdd47
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd49 pci32.c:399
+ 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:400
+ jmp short 0dd7fh ; eb 24 ; 0xfdd59 pci32.c:401
+ db 00fh, 0b7h, 0cah
+ ; movzx cx, dx ; 0f b7 ca ; 0xfdd5b pci32.c:402
+ 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, 0f1a0h ; be a0 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:404
+ xor bl, 000h ; 80 f3 00 ; 0xfdd81
+ add byte [bp-00fbbh], cl ; 00 8e 45 f0 ; 0xfdd84
+ db 066h, 026h, 089h, 003h
+ ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfdd88
+ jmp short 0dd9eh ; eb 10 ; 0xfdd8c pci32.c:407
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd8e pci32.c:410
+ 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:411
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdd9e pci32.c:413
+ 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:241
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:242
+ ; 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:244
+ out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:245
+ retn ; c3 ; 0xfe038 orgs.asm:246
+ ; 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:253
+ mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:254
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:255
+ loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:256
+ retn ; c3 ; 0xfe043 orgs.asm:257
+ ; 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:265
+ mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:266
+ out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:267
+ ; 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:270
+ mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:271
+ jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:272
+ ; 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:281
+ smsw ax ; 0f 01 e0 ; 0xfe05c orgs.asm:287
+ test ax, strict word 00001h ; a9 01 00 ; 0xfe05f orgs.asm:288
+ je short 0e06ah ; 74 06 ; 0xfe062 orgs.asm:289
+ mov AL, strict byte 001h ; b0 01 ; 0xfe064 orgs.asm:298
+ out strict byte 092h, AL ; e6 92 ; 0xfe066 orgs.asm:299
+ jmp short 0e068h ; eb fe ; 0xfe068 orgs.asm:300
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe06a orgs.asm:305
+ out strict byte 070h, AL ; e6 70 ; 0xfe06c orgs.asm:306
+ in AL, strict byte 071h ; e4 71 ; 0xfe06e orgs.asm:307
+ xchg ah, al ; 86 c4 ; 0xfe070 orgs.asm:310
+ in AL, strict byte 064h ; e4 64 ; 0xfe072 orgs.asm:314
+ test AL, strict byte 004h ; a8 04 ; 0xfe074 orgs.asm:315
+ je short 0e08bh ; 74 13 ; 0xfe076 orgs.asm:316
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe078 orgs.asm:319
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfe07a orgs.asm:320
+ jne short 0e08bh ; 75 0d ; 0xfe07c orgs.asm:321
+ mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe07e orgs.asm:327
+ cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe083 orgs.asm:328
+ jne short 0e064h ; 75 d9 ; 0xfe089 orgs.asm:329
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe08b orgs.asm:333
+ out strict byte 070h, AL ; e6 70 ; 0xfe08d orgs.asm:334
+ mov AL, strict byte 000h ; b0 00 ; 0xfe08f orgs.asm:335
+ out strict byte 071h, AL ; e6 71 ; 0xfe091 orgs.asm:336
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe093 orgs.asm:340
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe095 orgs.asm:341
+ je short 0e0abh ; 74 12 ; 0xfe097 orgs.asm:342
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe099 orgs.asm:343
+ je short 0e0abh ; 74 0e ; 0xfe09b orgs.asm:344
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfe09d orgs.asm:346
+ out strict byte 00dh, AL ; e6 0d ; 0xfe09f orgs.asm:349
+ out strict byte 0dah, AL ; e6 da ; 0xfe0a1 orgs.asm:350
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe0a3 orgs.asm:353
+ out strict byte 0d6h, AL ; e6 d6 ; 0xfe0a5 orgs.asm:354
+ mov AL, strict byte 000h ; b0 00 ; 0xfe0a7 orgs.asm:355
+ out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a9 orgs.asm:356
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe0ab orgs.asm:360
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfe0ad orgs.asm:361
+ je short 0e0c9h ; 74 18 ; 0xfe0af orgs.asm:362
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0b1 orgs.asm:364
+ jnc short 0e0c9h ; 73 14 ; 0xfe0b3 orgs.asm:365
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe0b5 orgs.asm:366
+ jne short 0e0bch ; 75 03 ; 0xfe0b7 orgs.asm:367
+ jmp near 0e353h ; e9 97 02 ; 0xfe0b9 orgs.asm:368
+ mov sp, 00400h ; bc 00 04 ; 0xfe0bc orgs.asm:371
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfe0bf orgs.asm:373
+ je short 0e044h ; 74 81 ; 0xfe0c1 orgs.asm:374
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0c3 orgs.asm:376
+ je short 0e04ah ; 74 83 ; 0xfe0c5 orgs.asm:377
+ jmp short 0e0c9h ; eb 00 ; 0xfe0c7 orgs.asm:381
+ ; disGetNextSymbol 0xfe0c9 LB 0x1f37 -> off=0x0 cb=00000000000001ed uValue=00000000000f00c9 'normal_post'
+normal_post: ; 0xfe0c9 LB 0x1ed
+ mov ax, 07800h ; b8 00 78 ; 0xfe0c9 orgs.asm:390
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xfe0cc orgs.asm:391
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe0ce orgs.asm:392
+ mov ds, ax ; 8e d8 ; 0xfe0d0 orgs.asm:393
+ mov ss, ax ; 8e d0 ; 0xfe0d2 orgs.asm:394
+ mov es, ax ; 8e c0 ; 0xfe0d4 orgs.asm:398
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0d6 orgs.asm:399
+ cld ; fc ; 0xfe0d8 orgs.asm:400
+ mov cx, 00239h ; b9 39 02 ; 0xfe0d9 orgs.asm:401
+ rep stosw ; f3 ab ; 0xfe0dc orgs.asm:402
+ inc di ; 47 ; 0xfe0de orgs.asm:403
+ inc di ; 47 ; 0xfe0df orgs.asm:404
+ mov cx, 005c6h ; b9 c6 05 ; 0xfe0e0 orgs.asm:405
+ rep stosw ; f3 ab ; 0xfe0e3 orgs.asm:406
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0e5 orgs.asm:410
+ add bx, 01000h ; 81 c3 00 10 ; 0xfe0e7 orgs.asm:412
+ cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0eb orgs.asm:413
+ jnc short 0e0fch ; 73 0b ; 0xfe0ef orgs.asm:414
+ mov es, bx ; 8e c3 ; 0xfe0f1 orgs.asm:415
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0f3 orgs.asm:416
+ mov cx, 08000h ; b9 00 80 ; 0xfe0f5 orgs.asm:417
+ rep stosw ; f3 ab ; 0xfe0f8 orgs.asm:418
+ jmp short 0e0e7h ; eb eb ; 0xfe0fa orgs.asm:419
+ mov es, bx ; 8e c3 ; 0xfe0fc orgs.asm:421
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0fe orgs.asm:422
+ mov cx, 07ff8h ; b9 f8 7f ; 0xfe100 orgs.asm:423
+ rep stosw ; f3 ab ; 0xfe103 orgs.asm:424
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe105 orgs.asm:425
+ push CS ; 0e ; 0xfe107 orgs.asm:104
+ pop DS ; 1f ; 0xfe108 orgs.asm:105
+ cld ; fc ; 0xfe109 orgs.asm:106
+ call 0171ch ; e8 0f 36 ; 0xfe10a orgs.asm:429
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe10d orgs.asm:436
+ mov ds, bx ; 8e db ; 0xfe10f orgs.asm:437
+ mov cx, strict word 00060h ; b9 60 00 ; 0xfe111 orgs.asm:438
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe114 orgs.asm:439
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe117 orgs.asm:440
+ call 0e039h ; e8 1c ff ; 0xfe11a orgs.asm:441
+ mov bx, 001a0h ; bb a0 01 ; 0xfe11d orgs.asm:446
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfe120 orgs.asm:447
+ call 0e039h ; e8 13 ff ; 0xfe123 orgs.asm:448
+ mov ax, 0027fh ; b8 7f 02 ; 0xfe126 orgs.asm:451
+ mov word [00413h], ax ; a3 13 04 ; 0xfe129 orgs.asm:452
+ mov ax, 0e9cch ; b8 cc e9 ; 0xfe12c orgs.asm:95
+ mov word [00018h], ax ; a3 18 00 ; 0xfe12f orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe132 orgs.asm:97
+ mov word [0001ah], ax ; a3 1a 00 ; 0xfe135 orgs.asm:98
+ mov ax, 0f84dh ; b8 4d f8 ; 0xfe138 orgs.asm:95
+ mov word [00044h], ax ; a3 44 00 ; 0xfe13b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe13e orgs.asm:97
+ mov word [00046h], ax ; a3 46 00 ; 0xfe141 orgs.asm:98
+ mov ax, 0f841h ; b8 41 f8 ; 0xfe144 orgs.asm:95
+ mov word [00048h], ax ; a3 48 00 ; 0xfe147 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe14a orgs.asm:97
+ mov word [0004ah], ax ; a3 4a 00 ; 0xfe14d orgs.asm:98
+ mov ax, 0f859h ; b8 59 f8 ; 0xfe150 orgs.asm:95
+ mov word [00054h], ax ; a3 54 00 ; 0xfe153 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe156 orgs.asm:97
+ mov word [00056h], ax ; a3 56 00 ; 0xfe159 orgs.asm:98
+ mov ax, 0efd4h ; b8 d4 ef ; 0xfe15c orgs.asm:95
+ mov word [0005ch], ax ; a3 5c 00 ; 0xfe15f orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe162 orgs.asm:97
+ mov word [0005eh], ax ; a3 5e 00 ; 0xfe165 orgs.asm:98
+ mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe168 orgs.asm:95
+ mov word [00060h], ax ; a3 60 00 ; 0xfe16b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe16e orgs.asm:97
+ mov word [00062h], ax ; a3 62 00 ; 0xfe171 orgs.asm:98
+ mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe174 orgs.asm:95
+ mov word [00064h], ax ; a3 64 00 ; 0xfe177 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe17a orgs.asm:97
+ mov word [00066h], ax ; a3 66 00 ; 0xfe17d orgs.asm:98
+ mov ax, 0efedh ; b8 ed ef ; 0xfe180 orgs.asm:95
+ mov word [00070h], ax ; a3 70 00 ; 0xfe183 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe186 orgs.asm:97
+ mov word [00072h], ax ; a3 72 00 ; 0xfe189 orgs.asm:98
+ call 0e778h ; e8 e9 05 ; 0xfe18c orgs.asm:468
+ mov ax, 0fe6eh ; b8 6e fe ; 0xfe18f orgs.asm:95
+ mov word [00068h], ax ; a3 68 00 ; 0xfe192 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe195 orgs.asm:97
+ mov word [0006ah], ax ; a3 6a 00 ; 0xfe198 orgs.asm:98
+ mov ax, 0fea5h ; b8 a5 fe ; 0xfe19b orgs.asm:95
+ mov word [00020h], ax ; a3 20 00 ; 0xfe19e orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1a1 orgs.asm:97
+ mov word [00022h], ax ; a3 22 00 ; 0xfe1a4 orgs.asm:98
+ mov AL, strict byte 034h ; b0 34 ; 0xfe1a7 orgs.asm:479
+ out strict byte 043h, AL ; e6 43 ; 0xfe1a9 orgs.asm:480
+ mov AL, strict byte 000h ; b0 00 ; 0xfe1ab orgs.asm:481
+ out strict byte 040h, AL ; e6 40 ; 0xfe1ad orgs.asm:482
+ out strict byte 040h, AL ; e6 40 ; 0xfe1af orgs.asm:483
+ mov ax, 0f065h ; b8 65 f0 ; 0xfe1b1 orgs.asm:95
+ mov word [00040h], ax ; a3 40 00 ; 0xfe1b4 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1b7 orgs.asm:97
+ mov word [00042h], ax ; a3 42 00 ; 0xfe1ba orgs.asm:98
+ mov ax, 0e987h ; b8 87 e9 ; 0xfe1bd orgs.asm:95
+ mov word [00024h], ax ; a3 24 00 ; 0xfe1c0 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1c3 orgs.asm:97
+ mov word [00026h], ax ; a3 26 00 ; 0xfe1c6 orgs.asm:98
+ mov ax, 0e82eh ; b8 2e e8 ; 0xfe1c9 orgs.asm:95
+ mov word [00058h], ax ; a3 58 00 ; 0xfe1cc orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1cf orgs.asm:97
+ mov word [0005ah], ax ; a3 5a 00 ; 0xfe1d2 orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe1d5 orgs.asm:492
+ mov ds, ax ; 8e d8 ; 0xfe1d7 orgs.asm:493
+ mov byte [00417h], AL ; a2 17 04 ; 0xfe1d9 orgs.asm:495
+ mov byte [00418h], AL ; a2 18 04 ; 0xfe1dc orgs.asm:496
+ mov byte [00419h], AL ; a2 19 04 ; 0xfe1df orgs.asm:497
+ mov byte [00471h], AL ; a2 71 04 ; 0xfe1e2 orgs.asm:498
+ mov byte [00497h], AL ; a2 97 04 ; 0xfe1e5 orgs.asm:499
+ mov AL, strict byte 010h ; b0 10 ; 0xfe1e8 orgs.asm:500
+ mov byte [00496h], AL ; a2 96 04 ; 0xfe1ea orgs.asm:501
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1ed orgs.asm:503
+ mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1f0 orgs.asm:504
+ mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1f4 orgs.asm:505
+ mov word [00480h], bx ; 89 1e 80 04 ; 0xfe1f8 orgs.asm:506
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe1fc orgs.asm:507
+ mov word [00482h], bx ; 89 1e 82 04 ; 0xfe1ff orgs.asm:508
+ mov AL, strict byte 014h ; b0 14 ; 0xfe203 orgs.asm:511
+ out strict byte 070h, AL ; e6 70 ; 0xfe205 orgs.asm:512
+ in AL, strict byte 071h ; e4 71 ; 0xfe207 orgs.asm:513
+ mov byte [00410h], AL ; a2 10 04 ; 0xfe209 orgs.asm:514
+ push DS ; 1e ; 0xfe20c orgs.asm:516
+ push CS ; 0e ; 0xfe20d orgs.asm:104
+ pop DS ; 1f ; 0xfe20e orgs.asm:105
+ cld ; fc ; 0xfe20f orgs.asm:106
+ mov ax, 0c000h ; b8 00 c0 ; 0xfe210 orgs.asm:521
+ mov dx, 0c800h ; ba 00 c8 ; 0xfe213 orgs.asm:522
+ call 01600h ; e8 e7 33 ; 0xfe216 orgs.asm:523
+ call 04e9eh ; e8 82 6c ; 0xfe219 orgs.asm:526
+ pop DS ; 1f ; 0xfe21c orgs.asm:527
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe21d orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe220 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe223 orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe226 orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe229 orgs.asm:531
+ mov ds, ax ; 8e d8 ; 0xfe22b orgs.asm:532
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe22d orgs.asm:533
+ mov CL, strict byte 014h ; b1 14 ; 0xfe22f orgs.asm:534
+ mov dx, 00378h ; ba 78 03 ; 0xfe231 orgs.asm:535
+ call 0ecedh ; e8 b6 0a ; 0xfe234 orgs.asm:536
+ mov dx, 00278h ; ba 78 02 ; 0xfe237 orgs.asm:537
+ call 0ecedh ; e8 b0 0a ; 0xfe23a orgs.asm:538
+ sal bx, 00eh ; c1 e3 0e ; 0xfe23d orgs.asm:200
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe240 orgs.asm:540
+ and ax, 03fffh ; 25 ff 3f ; 0xfe243 orgs.asm:541
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe246 orgs.asm:542
+ mov word [00410h], ax ; a3 10 04 ; 0xfe248 orgs.asm:543
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe24b orgs.asm:95
+ mov word [0002ch], ax ; a3 2c 00 ; 0xfe24e orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe251 orgs.asm:97
+ mov word [0002eh], ax ; a3 2e 00 ; 0xfe254 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe257 orgs.asm:95
+ mov word [00030h], ax ; a3 30 00 ; 0xfe25a orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe25d orgs.asm:97
+ mov word [00032h], ax ; a3 32 00 ; 0xfe260 orgs.asm:98
+ mov ax, 0e739h ; b8 39 e7 ; 0xfe263 orgs.asm:95
+ mov word [00050h], ax ; a3 50 00 ; 0xfe266 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe269 orgs.asm:97
+ mov word [00052h], ax ; a3 52 00 ; 0xfe26c orgs.asm:98
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe26f orgs.asm:549
+ mov CL, strict byte 00ah ; b1 0a ; 0xfe271 orgs.asm:550
+ mov dx, 003f8h ; ba f8 03 ; 0xfe273 orgs.asm:551
+ call 0ed0bh ; e8 92 0a ; 0xfe276 orgs.asm:552
+ mov dx, 002f8h ; ba f8 02 ; 0xfe279 orgs.asm:553
+ call 0ed0bh ; e8 8c 0a ; 0xfe27c orgs.asm:554
+ mov dx, 003e8h ; ba e8 03 ; 0xfe27f orgs.asm:555
+ call 0ed0bh ; e8 86 0a ; 0xfe282 orgs.asm:556
+ mov dx, 002e8h ; ba e8 02 ; 0xfe285 orgs.asm:557
+ call 0ed0bh ; e8 80 0a ; 0xfe288 orgs.asm:558
+ sal bx, 009h ; c1 e3 09 ; 0xfe28b orgs.asm:200
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe28e orgs.asm:560
+ and ax, 0f1ffh ; 25 ff f1 ; 0xfe291 orgs.asm:561
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe294 orgs.asm:562
+ mov word [00410h], ax ; a3 10 04 ; 0xfe296 orgs.asm:563
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe299 orgs.asm:95
+ mov word [00128h], ax ; a3 28 01 ; 0xfe29c orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe29f orgs.asm:97
+ mov word [0012ah], ax ; a3 2a 01 ; 0xfe2a2 orgs.asm:98
+ mov ax, 0f8e6h ; b8 e6 f8 ; 0xfe2a5 orgs.asm:95
+ mov word [001c0h], ax ; a3 c0 01 ; 0xfe2a8 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2ab orgs.asm:97
+ mov word [001c2h], ax ; a3 c2 01 ; 0xfe2ae orgs.asm:98
+ call 0edbfh ; e8 0b 0b ; 0xfe2b1 orgs.asm:569
+ jmp short 0e303h ; eb 4d ; 0xfe2b4 orgs.asm:571
+ ; disGetNextSymbol 0xfe2b6 LB 0x1d4a -> off=0x0 cb=000000000000000d uValue=00000000000f02b6 'biosorg_check_before_or_at_0E2C1h'
+biosorg_check_before_or_at_0E2C1h: ; 0xfe2b6 LB 0xd
+ times 0xb db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi'
+nmi: ; 0xfe2c3 LB 0x7
+ push CS ; 0e ; 0xfe2c3 orgs.asm:104
+ pop DS ; 1f ; 0xfe2c4 orgs.asm:105
+ cld ; fc ; 0xfe2c5 orgs.asm:106
+ call 016f8h ; e8 2f 34 ; 0xfe2c6 orgs.asm:580
+ iret ; cf ; 0xfe2c9 orgs.asm:581
+ ; 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:584
+ call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:585
+ int 002h ; cd 02 ; 0xfe2cf orgs.asm:586
+ iret ; cf ; 0xfe2d1 orgs.asm:587
+ ; disGetNextSymbol 0xfe2d2 LB 0x1d2e -> off=0x0 cb=00000000000000aa uValue=00000000000f02d2 'hard_drive_post'
+hard_drive_post: ; 0xfe2d2 LB 0xaa
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe2d2 orgs.asm:592
+ mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:593
+ mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:595
+ mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:596
+ mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:597
+ mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:598
+ mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:599
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:600
+ mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:601
+ mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:95
+ mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:97
+ mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:98
+ mov ax, 0f8d4h ; b8 d4 f8 ; 0xfe2f6 orgs.asm:95
+ mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:97
+ mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:98
+ retn ; c3 ; 0xfe302 orgs.asm:606
+ mov ax, 0f8a9h ; b8 a9 f8 ; 0xfe303 orgs.asm:95
+ mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:97
+ mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:98
+ mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:95
+ mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:97
+ mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:98
+ call 0e753h ; e8 35 04 ; 0xfe31b orgs.asm:618
+ push CS ; 0e ; 0xfe31e orgs.asm:104
+ pop DS ; 1f ; 0xfe31f orgs.asm:105
+ cld ; fc ; 0xfe320 orgs.asm:106
+ call 01c47h ; e8 23 39 ; 0xfe321 orgs.asm:632
+ call 02152h ; e8 2b 3e ; 0xfe324 orgs.asm:633
+ sti ; fb ; 0xfe327 orgs.asm:640
+ call 0944fh ; e8 24 b1 ; 0xfe328 orgs.asm:641
+ cli ; fa ; 0xfe32b orgs.asm:642
+ call 082c3h ; e8 94 9f ; 0xfe32c orgs.asm:647
+ call 0a7dch ; e8 aa c4 ; 0xfe32f orgs.asm:652
+ call 0ed2fh ; e8 fa 09 ; 0xfe332 orgs.asm:656
+ call 0e2d2h ; e8 9a ff ; 0xfe335 orgs.asm:659
+ push CS ; 0e ; 0xfe338 orgs.asm:104
+ pop DS ; 1f ; 0xfe339 orgs.asm:105
+ cld ; fc ; 0xfe33a orgs.asm:106
+ mov ax, 0c800h ; b8 00 c8 ; 0xfe33b orgs.asm:663
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe33e orgs.asm:664
+ call 01600h ; e8 bc 32 ; 0xfe341 orgs.asm:665
+ call 0173ch ; e8 f5 33 ; 0xfe344 orgs.asm:679
+ call 03b64h ; e8 1a 58 ; 0xfe347 orgs.asm:682
+ sti ; fb ; 0xfe34a orgs.asm:685
+ int 019h ; cd 19 ; 0xfe34b orgs.asm:686
+ sti ; fb ; 0xfe34d orgs.asm:688
+ hlt ; f4 ; 0xfe34e orgs.asm:690
+ jmp short 0e34eh ; eb fd ; 0xfe34f orgs.asm:691
+ cli ; fa ; 0xfe351 orgs.asm:692
+ hlt ; f4 ; 0xfe352 orgs.asm:693
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe353 orgs.asm:702
+ mov ds, ax ; 8e d8 ; 0xfe356 orgs.asm:703
+ mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe358 orgs.asm:705
+ mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe35c orgs.asm:706
+ in AL, strict byte 092h ; e4 92 ; 0xfe360 orgs.asm:708
+ and AL, strict byte 0fdh ; 24 fd ; 0xfe362 orgs.asm:709
+ out strict byte 092h, AL ; e6 92 ; 0xfe364 orgs.asm:710
+ lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xfe366 orgs.asm:712
+ pop DS ; 1f ; 0xfe36c orgs.asm:714
+ pop ES ; 07 ; 0xfe36d orgs.asm:715
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfe36e orgs.asm:717
+ in AL, strict byte 080h ; e4 80 ; 0xfe370 orgs.asm:719
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xfe372 orgs.asm:720
+ db 03ah, 0e0h
+ ; cmp ah, al ; 3a e0 ; 0xfe375 orgs.asm:722
+ popaw ; 61 ; 0xfe377 orgs.asm:724
+ sti ; fb ; 0xfe378 orgs.asm:725
+ retf 00002h ; ca 02 00 ; 0xfe379 orgs.asm:726
+ ; disGetNextSymbol 0xfe37c LB 0x1c84 -> off=0x0 cb=0000000000000082 uValue=00000000000f037c 'biosorg_check_before_or_at_0E3FCh'
+biosorg_check_before_or_at_0E3FCh: ; 0xfe37c LB 0x82
+ times 0x80 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:736
+ ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=00000000000002f1 uValue=00000000000f0401 'rom_fdpt'
+rom_fdpt: ; 0xfe401 LB 0x2f1
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h
+ db 04dh
+ ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler'
+int19_handler: ; 0xfe6f2 LB 0x3
+ jmp near 0f0ach ; e9 b7 09 ; 0xfe6f2 orgs.asm:752
+ ; disGetNextSymbol 0xfe6f5 LB 0x190b -> off=0x0 cb=000000000000000a uValue=00000000000f06f5 'biosorg_check_at_0E6F5h'
+biosorg_check_at_0E6F5h: ; 0xfe6f5 LB 0xa
+ or word [bx+si], ax ; 09 00 ; 0xfe6f5
+ cld ; fc ; 0xfe6f7
+ add byte [bx+di], al ; 00 01 ; 0xfe6f8
+ je short 0e73ch ; 74 40 ; 0xfe6fa
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfe6ff LB 0x1901 -> off=0x0 cb=000000000000002a uValue=00000000000f06ff 'biosorg_check_before_or_at_0E727h'
+biosorg_check_before_or_at_0E727h: ; 0xfe6ff LB 0x2a
+ times 0x28 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe729 LB 0x18d7 -> off=0x0 cb=0000000000000010 uValue=00000000000f0729 'biosorg_check_at_0E729h'
+biosorg_check_at_0E729h: ; 0xfe729 LB 0x10
+ times 0xe db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe739 LB 0x18c7 -> off=0x0 cb=000000000000001a uValue=00000000000f0739 'biosorg_check_at_0E739h'
+biosorg_check_at_0E739h: ; 0xfe739 LB 0x1a
+ push DS ; 1e ; 0xfe739 orgs.asm:825
+ push ES ; 06 ; 0xfe73a orgs.asm:826
+ pushaw ; 60 ; 0xfe73b orgs.asm:97
+ push CS ; 0e ; 0xfe73c orgs.asm:104
+ pop DS ; 1f ; 0xfe73d orgs.asm:105
+ cld ; fc ; 0xfe73e orgs.asm:106
+ call 063a4h ; e8 62 7c ; 0xfe73f orgs.asm:829
+ popaw ; 61 ; 0xfe742 orgs.asm:114
+ pop ES ; 07 ; 0xfe743 orgs.asm:831
+ pop DS ; 1f ; 0xfe744 orgs.asm:832
+ iret ; cf ; 0xfe745 orgs.asm:833
+ push DS ; 1e ; 0xfe746 orgs.asm:841
+ push ES ; 06 ; 0xfe747 orgs.asm:842
+ pushaw ; 60 ; 0xfe748 orgs.asm:97
+ push CS ; 0e ; 0xfe749 orgs.asm:104
+ pop DS ; 1f ; 0xfe74a orgs.asm:105
+ cld ; fc ; 0xfe74b orgs.asm:106
+ call 01697h ; e8 48 2f ; 0xfe74c orgs.asm:845
+ popaw ; 61 ; 0xfe74f orgs.asm:114
+ pop ES ; 07 ; 0xfe750 orgs.asm:847
+ pop DS ; 1f ; 0xfe751 orgs.asm:848
+ iret ; cf ; 0xfe752 orgs.asm:849
+ ; 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:854
+ out strict byte 020h, AL ; e6 20 ; 0xfe755 orgs.asm:855
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe757 orgs.asm:856
+ mov AL, strict byte 008h ; b0 08 ; 0xfe759 orgs.asm:857
+ out strict byte 021h, AL ; e6 21 ; 0xfe75b orgs.asm:858
+ mov AL, strict byte 070h ; b0 70 ; 0xfe75d orgs.asm:859
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe75f orgs.asm:860
+ mov AL, strict byte 004h ; b0 04 ; 0xfe761 orgs.asm:861
+ out strict byte 021h, AL ; e6 21 ; 0xfe763 orgs.asm:862
+ mov AL, strict byte 002h ; b0 02 ; 0xfe765 orgs.asm:863
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe767 orgs.asm:864
+ mov AL, strict byte 001h ; b0 01 ; 0xfe769 orgs.asm:865
+ out strict byte 021h, AL ; e6 21 ; 0xfe76b orgs.asm:866
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe76d orgs.asm:867
+ mov AL, strict byte 0b8h ; b0 b8 ; 0xfe76f orgs.asm:868
+ out strict byte 021h, AL ; e6 21 ; 0xfe771 orgs.asm:869
+ mov AL, strict byte 08fh ; b0 8f ; 0xfe773 orgs.asm:870
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe775 orgs.asm:871
+ retn ; c3 ; 0xfe777 orgs.asm:872
+ ; disGetNextSymbol 0xfe778 LB 0x1888 -> off=0x0 cb=0000000000000051 uValue=00000000000f0778 'ebda_post'
+ebda_post: ; 0xfe778 LB 0x51
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe778 orgs.asm:95
+ mov word [00034h], ax ; a3 34 00 ; 0xfe77b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe77e orgs.asm:97
+ mov word [00036h], ax ; a3 36 00 ; 0xfe781 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe784 orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe787 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe78a orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe78d orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe790 orgs.asm:95
+ mov word [001c8h], ax ; a3 c8 01 ; 0xfe793 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe796 orgs.asm:97
+ mov word [001cah], ax ; a3 ca 01 ; 0xfe799 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe79c orgs.asm:95
+ mov word [001cch], ax ; a3 cc 01 ; 0xfe79f orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7a2 orgs.asm:97
+ mov word [001ceh], ax ; a3 ce 01 ; 0xfe7a5 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe7a8 orgs.asm:95
+ mov word [001dch], ax ; a3 dc 01 ; 0xfe7ab orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7ae orgs.asm:97
+ mov word [001deh], ax ; a3 de 01 ; 0xfe7b1 orgs.asm:98
+ mov ax, 09fc0h ; b8 c0 9f ; 0xfe7b4 orgs.asm:884
+ mov ds, ax ; 8e d8 ; 0xfe7b7 orgs.asm:885
+ mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7b9 orgs.asm:886
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7be orgs.asm:888
+ mov ds, ax ; 8e d8 ; 0xfe7c0 orgs.asm:889
+ mov word [0040eh], 09fc0h ; c7 06 0e 04 c0 9f ; 0xfe7c2 orgs.asm:890
+ retn ; c3 ; 0xfe7c8 orgs.asm:891
+ ; disGetNextSymbol 0xfe7c9 LB 0x1837 -> off=0x0 cb=0000000000000065 uValue=00000000000f07c9 'biosorg_check_before_or_at_0E82Ch'
+biosorg_check_before_or_at_0E82Ch: ; 0xfe7c9 LB 0x65
+ times 0x63 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe82e LB 0x17d2 -> off=0x0 cb=000000000000003d uValue=00000000000f082e 'biosorg_check_at_0E82Eh'
+biosorg_check_at_0E82Eh: ; 0xfe82e LB 0x3d
+ sti ; fb ; 0xfe82e orgs.asm:902
+ pushfw ; 9c ; 0xfe82f orgs.asm:905
+ push ES ; 06 ; 0xfe830 orgs.asm:906
+ push DS ; 1e ; 0xfe831 orgs.asm:907
+ pushaw ; 60 ; 0xfe832 orgs.asm:97
+ cmp ah, 000h ; 80 fc 00 ; 0xfe833 orgs.asm:910
+ je short 0e84ah ; 74 12 ; 0xfe836 orgs.asm:911
+ cmp ah, 010h ; 80 fc 10 ; 0xfe838 orgs.asm:913
+ je short 0e84ah ; 74 0d ; 0xfe83b orgs.asm:914
+ push CS ; 0e ; 0xfe83d orgs.asm:104
+ pop DS ; 1f ; 0xfe83e orgs.asm:105
+ cld ; fc ; 0xfe83f orgs.asm:106
+ call 055e3h ; e8 a0 6d ; 0xfe840 orgs.asm:917
+ popaw ; 61 ; 0xfe843 orgs.asm:114
+ pop DS ; 1f ; 0xfe844 orgs.asm:919
+ pop ES ; 07 ; 0xfe845 orgs.asm:920
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe846 orgs.asm:921
+ iret ; cf ; 0xfe849 orgs.asm:922
+ mov bx, strict word 00040h ; bb 40 00 ; 0xfe84a orgs.asm:925
+ mov ds, bx ; 8e db ; 0xfe84d orgs.asm:926
+ cli ; fa ; 0xfe84f orgs.asm:928
+ mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe850 orgs.asm:929
+ cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe854 orgs.asm:930
+ jne short 0e85eh ; 75 04 ; 0xfe858 orgs.asm:931
+ sti ; fb ; 0xfe85a orgs.asm:932
+ nop ; 90 ; 0xfe85b orgs.asm:933
+ jmp short 0e84fh ; eb f1 ; 0xfe85c orgs.asm:941
+ push CS ; 0e ; 0xfe85e orgs.asm:104
+ pop DS ; 1f ; 0xfe85f orgs.asm:105
+ cld ; fc ; 0xfe860 orgs.asm:106
+ call 055e3h ; e8 7f 6d ; 0xfe861 orgs.asm:945
+ popaw ; 61 ; 0xfe864 orgs.asm:114
+ pop DS ; 1f ; 0xfe865 orgs.asm:947
+ pop ES ; 07 ; 0xfe866 orgs.asm:948
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe867 orgs.asm:949
+ iret ; cf ; 0xfe86a orgs.asm:957
+ ; 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:974
+ push ax ; 50 ; 0xfe988 orgs.asm:975
+ mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:976
+ out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:977
+ in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:979
+ push DS ; 1e ; 0xfe98f orgs.asm:980
+ pushaw ; 60 ; 0xfe990 orgs.asm:97
+ cld ; fc ; 0xfe991 orgs.asm:982
+ mov AH, strict byte 04fh ; b4 4f ; 0xfe992 orgs.asm:984
+ stc ; f9 ; 0xfe994 orgs.asm:985
+ int 015h ; cd 15 ; 0xfe995 orgs.asm:986
+ jnc short 0e9c0h ; 73 27 ; 0xfe997 orgs.asm:987
+ sti ; fb ; 0xfe999 orgs.asm:989
+ cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe99a orgs.asm:992
+ jne short 0e9a9h ; 75 0b ; 0xfe99c orgs.asm:993
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe99e orgs.asm:994
+ mov ds, ax ; 8e d8 ; 0xfe9a0 orgs.asm:995
+ or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a2 orgs.asm:996
+ jmp short 0e9c0h ; eb 17 ; 0xfe9a7 orgs.asm:997
+ cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9a9 orgs.asm:1000
+ jne short 0e9b8h ; 75 0b ; 0xfe9ab orgs.asm:1001
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9ad orgs.asm:1002
+ mov ds, ax ; 8e d8 ; 0xfe9af orgs.asm:1003
+ or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b1 orgs.asm:1004
+ jmp short 0e9c0h ; eb 08 ; 0xfe9b6 orgs.asm:1005
+ push ES ; 06 ; 0xfe9b8 orgs.asm:1008
+ push CS ; 0e ; 0xfe9b9 orgs.asm:104
+ pop DS ; 1f ; 0xfe9ba orgs.asm:105
+ cld ; fc ; 0xfe9bb orgs.asm:106
+ call 05190h ; e8 d1 67 ; 0xfe9bc orgs.asm:1010
+ pop ES ; 07 ; 0xfe9bf orgs.asm:1011
+ popaw ; 61 ; 0xfe9c0 orgs.asm:114
+ pop DS ; 1f ; 0xfe9c1 orgs.asm:1015
+ cli ; fa ; 0xfe9c2 orgs.asm:1016
+ call 0e034h ; e8 6e f6 ; 0xfe9c3 orgs.asm:1017
+ mov AL, strict byte 0aeh ; b0 ae ; 0xfe9c6 orgs.asm:1019
+ out strict byte 064h, AL ; e6 64 ; 0xfe9c8 orgs.asm:1020
+ pop ax ; 58 ; 0xfe9ca orgs.asm:1021
+ iret ; cf ; 0xfe9cb orgs.asm:1022
+ pushaw ; 60 ; 0xfe9cc orgs.asm:97
+ push ES ; 06 ; 0xfe9cd orgs.asm:1031
+ push DS ; 1e ; 0xfe9ce orgs.asm:1032
+ push CS ; 0e ; 0xfe9cf orgs.asm:104
+ pop DS ; 1f ; 0xfe9d0 orgs.asm:105
+ cld ; fc ; 0xfe9d1 orgs.asm:106
+ call 06a24h ; e8 4f 80 ; 0xfe9d2 orgs.asm:1034
+ pop DS ; 1f ; 0xfe9d5 orgs.asm:1035
+ pop ES ; 07 ; 0xfe9d6 orgs.asm:1036
+ popaw ; 61 ; 0xfe9d7 orgs.asm:114
+ iret ; cf ; 0xfe9d8 orgs.asm:1038
+ ; 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:1045
+ ; 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:1054
+ jc short 0ec71h ; 72 11 ; 0xfec5e orgs.asm:1055
+ cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1057
+ jnbe short 0ec71h ; 77 0c ; 0xfec63 orgs.asm:1058
+ pushaw ; 60 ; 0xfec65 orgs.asm:97
+ push ES ; 06 ; 0xfec66 orgs.asm:1061
+ push DS ; 1e ; 0xfec67 orgs.asm:1062
+ push CS ; 0e ; 0xfec68 orgs.asm:104
+ pop DS ; 1f ; 0xfec69 orgs.asm:105
+ cld ; fc ; 0xfec6a orgs.asm:106
+ push 0ece9h ; 68 e9 ec ; 0xfec6b orgs.asm:83
+ jmp near 03ba7h ; e9 36 4f ; 0xfec6e orgs.asm:84
+ push ES ; 06 ; 0xfec71 orgs.asm:1070
+ push ax ; 50 ; 0xfec72 orgs.asm:1071
+ push bx ; 53 ; 0xfec73 orgs.asm:1072
+ push cx ; 51 ; 0xfec74 orgs.asm:1073
+ push dx ; 52 ; 0xfec75 orgs.asm:1074
+ call 03b7bh ; e8 02 4f ; 0xfec76 orgs.asm:1077
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfec79 orgs.asm:1078
+ je short 0ecabh ; 74 2e ; 0xfec7b orgs.asm:1079
+ call 03b91h ; e8 11 4f ; 0xfec7d orgs.asm:1082
+ pop dx ; 5a ; 0xfec80 orgs.asm:1083
+ push dx ; 52 ; 0xfec81 orgs.asm:1084
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec82 orgs.asm:1085
+ jne short 0ec97h ; 75 11 ; 0xfec84 orgs.asm:1086
+ pop dx ; 5a ; 0xfec86 orgs.asm:1088
+ pop cx ; 59 ; 0xfec87 orgs.asm:1089
+ pop bx ; 5b ; 0xfec88 orgs.asm:1090
+ pop ax ; 58 ; 0xfec89 orgs.asm:1091
+ pop ES ; 07 ; 0xfec8a orgs.asm:1092
+ pushaw ; 60 ; 0xfec8b orgs.asm:97
+ push ES ; 06 ; 0xfec8c orgs.asm:1095
+ push DS ; 1e ; 0xfec8d orgs.asm:1096
+ push CS ; 0e ; 0xfec8e orgs.asm:104
+ pop DS ; 1f ; 0xfec8f orgs.asm:105
+ cld ; fc ; 0xfec90 orgs.asm:106
+ push 0ece9h ; 68 e9 ec ; 0xfec91 orgs.asm:83
+ jmp near 0416eh ; e9 d7 54 ; 0xfec94 orgs.asm:84
+ and dl, 0e0h ; 80 e2 e0 ; 0xfec97 orgs.asm:1102
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec9a orgs.asm:1103
+ jne short 0ecabh ; 75 0d ; 0xfec9c orgs.asm:1104
+ pop dx ; 5a ; 0xfec9e orgs.asm:1106
+ pop cx ; 59 ; 0xfec9f orgs.asm:1107
+ pop bx ; 5b ; 0xfeca0 orgs.asm:1108
+ pop ax ; 58 ; 0xfeca1 orgs.asm:1109
+ pop ES ; 07 ; 0xfeca2 orgs.asm:1110
+ push ax ; 50 ; 0xfeca3 orgs.asm:1112
+ push cx ; 51 ; 0xfeca4 orgs.asm:1113
+ push dx ; 52 ; 0xfeca5 orgs.asm:1114
+ push bx ; 53 ; 0xfeca6 orgs.asm:1115
+ db 0feh, 0cah
+ ; dec dl ; fe ca ; 0xfeca7 orgs.asm:1117
+ jmp short 0ecb4h ; eb 09 ; 0xfeca9 orgs.asm:1118
+ pop dx ; 5a ; 0xfecab orgs.asm:1121
+ pop cx ; 59 ; 0xfecac orgs.asm:1122
+ pop bx ; 5b ; 0xfecad orgs.asm:1123
+ pop ax ; 58 ; 0xfecae orgs.asm:1124
+ pop ES ; 07 ; 0xfecaf orgs.asm:1125
+ ; disGetNextSymbol 0xfecb0 LB 0x1350 -> off=0x0 cb=0000000000000004 uValue=00000000000f0cb0 'int13_noeltorito'
+int13_noeltorito: ; 0xfecb0 LB 0x4
+ push ax ; 50 ; 0xfecb0 orgs.asm:1128
+ push cx ; 51 ; 0xfecb1 orgs.asm:1129
+ push dx ; 52 ; 0xfecb2 orgs.asm:1130
+ push bx ; 53 ; 0xfecb3 orgs.asm:1131
+ ; disGetNextSymbol 0xfecb4 LB 0x134c -> off=0x0 cb=0000000000000014 uValue=00000000000f0cb4 'int13_legacy'
+int13_legacy: ; 0xfecb4 LB 0x14
+ push dx ; 52 ; 0xfecb4 orgs.asm:1133
+ push bp ; 55 ; 0xfecb5 orgs.asm:1134
+ push si ; 56 ; 0xfecb6 orgs.asm:1135
+ push di ; 57 ; 0xfecb7 orgs.asm:1136
+ push ES ; 06 ; 0xfecb8 orgs.asm:1137
+ push DS ; 1e ; 0xfecb9 orgs.asm:1138
+ push CS ; 0e ; 0xfecba orgs.asm:104
+ pop DS ; 1f ; 0xfecbb orgs.asm:105
+ cld ; fc ; 0xfecbc orgs.asm:106
+ test dl, 080h ; f6 c2 80 ; 0xfecbd orgs.asm:1143
+ jne short 0ecc8h ; 75 06 ; 0xfecc0 orgs.asm:1144
+ push 0ece9h ; 68 e9 ec ; 0xfecc2 orgs.asm:83
+ jmp near 0315fh ; e9 97 44 ; 0xfecc5 orgs.asm:84
+ ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000014 uValue=00000000000f0cc8 'int13_notfloppy'
+int13_notfloppy: ; 0xfecc8 LB 0x14
+ cmp dl, 0e0h ; 80 fa e0 ; 0xfecc8 orgs.asm:1149
+ jc short 0ecdch ; 72 0f ; 0xfeccb orgs.asm:1150
+ shr ebx, 010h ; 66 c1 eb 10 ; 0xfeccd orgs.asm:1156
+ push bx ; 53 ; 0xfecd1 orgs.asm:1157
+ call 047afh ; e8 da 5a ; 0xfecd2 orgs.asm:1158
+ pop bx ; 5b ; 0xfecd5 orgs.asm:1159
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfecd6 orgs.asm:1160
+ jmp short 0ece9h ; eb 0d ; 0xfecda orgs.asm:1162
+ ; 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:1166
+ jnbe short 0ece6h ; 77 05 ; 0xfecdf orgs.asm:1167
+ call 05cb4h ; e8 d0 6f ; 0xfece1 orgs.asm:1168
+ jmp short 0ece9h ; eb 03 ; 0xfece4 orgs.asm:1169
+ call 0610dh ; e8 24 74 ; 0xfece6 orgs.asm:1172
+ ; disGetNextSymbol 0xfece9 LB 0x1317 -> off=0x0 cb=0000000000000004 uValue=00000000000f0ce9 'int13_out'
+int13_out: ; 0xfece9 LB 0x4
+ pop DS ; 1f ; 0xfece9 orgs.asm:1175
+ pop ES ; 07 ; 0xfecea orgs.asm:1176
+ popaw ; 61 ; 0xfeceb orgs.asm:114
+ iret ; cf ; 0xfecec orgs.asm:1178
+ ; disGetNextSymbol 0xfeced LB 0x1313 -> off=0x0 cb=000000000000001e uValue=00000000000f0ced 'detect_parport'
+detect_parport: ; 0xfeced LB 0x1e
+ push dx ; 52 ; 0xfeced orgs.asm:1185
+ inc dx ; 42 ; 0xfecee orgs.asm:1186
+ inc dx ; 42 ; 0xfecef orgs.asm:1187
+ in AL, DX ; ec ; 0xfecf0 orgs.asm:1188
+ and AL, strict byte 0dfh ; 24 df ; 0xfecf1 orgs.asm:1189
+ out DX, AL ; ee ; 0xfecf3 orgs.asm:1190
+ pop dx ; 5a ; 0xfecf4 orgs.asm:1191
+ mov AL, strict byte 0aah ; b0 aa ; 0xfecf5 orgs.asm:1192
+ out DX, AL ; ee ; 0xfecf7 orgs.asm:1193
+ in AL, DX ; ec ; 0xfecf8 orgs.asm:1194
+ cmp AL, strict byte 0aah ; 3c aa ; 0xfecf9 orgs.asm:1195
+ jne short 0ed0ah ; 75 0d ; 0xfecfb orgs.asm:1196
+ push bx ; 53 ; 0xfecfd orgs.asm:1198
+ sal bx, 1 ; d1 e3 ; 0xfecfe orgs.asm:1199
+ mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed00 orgs.asm:1200
+ pop bx ; 5b ; 0xfed04 orgs.asm:1201
+ mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed05 orgs.asm:1202
+ inc bx ; 43 ; 0xfed09 orgs.asm:1203
+ retn ; c3 ; 0xfed0a orgs.asm:1205
+ ; disGetNextSymbol 0xfed0b LB 0x12f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d0b 'detect_serial'
+detect_serial: ; 0xfed0b LB 0x24
+ push dx ; 52 ; 0xfed0b orgs.asm:1212
+ inc dx ; 42 ; 0xfed0c orgs.asm:1213
+ mov AL, strict byte 002h ; b0 02 ; 0xfed0d orgs.asm:1214
+ out DX, AL ; ee ; 0xfed0f orgs.asm:1215
+ in AL, DX ; ec ; 0xfed10 orgs.asm:1216
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed11 orgs.asm:1217
+ jne short 0ed2dh ; 75 18 ; 0xfed13 orgs.asm:1218
+ inc dx ; 42 ; 0xfed15 orgs.asm:1220
+ in AL, DX ; ec ; 0xfed16 orgs.asm:1221
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed17 orgs.asm:1222
+ jne short 0ed2dh ; 75 12 ; 0xfed19 orgs.asm:1223
+ dec dx ; 4a ; 0xfed1b orgs.asm:1225
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfed1c orgs.asm:1226
+ pop dx ; 5a ; 0xfed1e orgs.asm:1227
+ push bx ; 53 ; 0xfed1f orgs.asm:1228
+ sal bx, 1 ; d1 e3 ; 0xfed20 orgs.asm:1229
+ mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed22 orgs.asm:1230
+ pop bx ; 5b ; 0xfed26 orgs.asm:1231
+ mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed27 orgs.asm:1232
+ inc bx ; 43 ; 0xfed2b orgs.asm:1233
+ retn ; c3 ; 0xfed2c orgs.asm:1234
+ pop dx ; 5a ; 0xfed2d orgs.asm:1237
+ retn ; c3 ; 0xfed2e orgs.asm:1238
+ ; 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:1248
+ mov ds, ax ; 8e d8 ; 0xfed31 orgs.asm:1249
+ mov AL, strict byte 000h ; b0 00 ; 0xfed33 orgs.asm:1253
+ mov byte [0043eh], AL ; a2 3e 04 ; 0xfed35 orgs.asm:1254
+ mov byte [0043fh], AL ; a2 3f 04 ; 0xfed38 orgs.asm:1255
+ mov byte [00440h], AL ; a2 40 04 ; 0xfed3b orgs.asm:1256
+ mov byte [00441h], AL ; a2 41 04 ; 0xfed3e orgs.asm:1257
+ mov byte [00442h], AL ; a2 42 04 ; 0xfed41 orgs.asm:1258
+ mov byte [00443h], AL ; a2 43 04 ; 0xfed44 orgs.asm:1259
+ mov byte [00444h], AL ; a2 44 04 ; 0xfed47 orgs.asm:1260
+ mov byte [00445h], AL ; a2 45 04 ; 0xfed4a orgs.asm:1261
+ mov byte [00446h], AL ; a2 46 04 ; 0xfed4d orgs.asm:1262
+ mov byte [00447h], AL ; a2 47 04 ; 0xfed50 orgs.asm:1263
+ mov byte [00448h], AL ; a2 48 04 ; 0xfed53 orgs.asm:1264
+ mov byte [0048bh], AL ; a2 8b 04 ; 0xfed56 orgs.asm:1266
+ mov AL, strict byte 010h ; b0 10 ; 0xfed59 orgs.asm:1268
+ out strict byte 070h, AL ; e6 70 ; 0xfed5b orgs.asm:1269
+ in AL, strict byte 071h ; e4 71 ; 0xfed5d orgs.asm:1270
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfed5f orgs.asm:1271
+ shr al, 004h ; c0 e8 04 ; 0xfed61 orgs.asm:169
+ je short 0ed6ah ; 74 04 ; 0xfed64 orgs.asm:1276
+ mov BL, strict byte 007h ; b3 07 ; 0xfed66 orgs.asm:1277
+ jmp short 0ed6ch ; eb 02 ; 0xfed68 orgs.asm:1278
+ mov BL, strict byte 000h ; b3 00 ; 0xfed6a orgs.asm:1281
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfed6c orgs.asm:1284
+ and AL, strict byte 00fh ; 24 0f ; 0xfed6e orgs.asm:1285
+ je short 0ed75h ; 74 03 ; 0xfed70 orgs.asm:1286
+ or bl, 070h ; 80 cb 70 ; 0xfed72 orgs.asm:1287
+ mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed75 orgs.asm:1289
+ mov AL, strict byte 000h ; b0 00 ; 0xfed79 orgs.asm:1292
+ mov byte [00490h], AL ; a2 90 04 ; 0xfed7b orgs.asm:1293
+ mov byte [00491h], AL ; a2 91 04 ; 0xfed7e orgs.asm:1294
+ mov byte [00492h], AL ; a2 92 04 ; 0xfed81 orgs.asm:1295
+ mov byte [00493h], AL ; a2 93 04 ; 0xfed84 orgs.asm:1296
+ mov byte [00494h], AL ; a2 94 04 ; 0xfed87 orgs.asm:1297
+ mov byte [00495h], AL ; a2 95 04 ; 0xfed8a orgs.asm:1298
+ mov AL, strict byte 002h ; b0 02 ; 0xfed8d orgs.asm:1300
+ out strict byte 00ah, AL ; e6 0a ; 0xfed8f orgs.asm:1301
+ mov ax, 0efc7h ; b8 c7 ef ; 0xfed91 orgs.asm:95
+ mov word [00078h], ax ; a3 78 00 ; 0xfed94 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfed97 orgs.asm:97
+ mov word [0007ah], ax ; a3 7a 00 ; 0xfed9a orgs.asm:98
+ mov ax, 0ec59h ; b8 59 ec ; 0xfed9d orgs.asm:95
+ mov word [00100h], ax ; a3 00 01 ; 0xfeda0 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfeda3 orgs.asm:97
+ mov word [00102h], ax ; a3 02 01 ; 0xfeda6 orgs.asm:98
+ mov ax, 0ef57h ; b8 57 ef ; 0xfeda9 orgs.asm:95
+ mov word [00038h], ax ; a3 38 00 ; 0xfedac orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedaf orgs.asm:97
+ mov word [0003ah], ax ; a3 3a 00 ; 0xfedb2 orgs.asm:98
+ retn ; c3 ; 0xfedb5 orgs.asm:1307
+ ; 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:1317
+ shr al, 004h ; c0 e8 04 ; 0xfedb9 orgs.asm:1318
+ aad 00ah ; d5 0a ; 0xfedbc orgs.asm:1326
+ retn ; c3 ; 0xfedbe orgs.asm:1327
+ ; 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:1335
+ out strict byte 070h, AL ; e6 70 ; 0xfedc1 orgs.asm:1336
+ in AL, strict byte 071h ; e4 71 ; 0xfedc3 orgs.asm:1337
+ call 0edb6h ; e8 ee ff ; 0xfedc5 orgs.asm:1338
+ test al, al ; 84 c0 ; 0xfedc8 orgs.asm:1339
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfedca orgs.asm:1340
+ mov dx, 01234h ; ba 34 12 ; 0xfedcc orgs.asm:1341
+ mul dx ; f7 e2 ; 0xfedcf orgs.asm:1342
+ db 08bh, 0c8h
+ ; mov cx, ax ; 8b c8 ; 0xfedd1 orgs.asm:1343
+ mov AL, strict byte 002h ; b0 02 ; 0xfedd3 orgs.asm:1346
+ out strict byte 070h, AL ; e6 70 ; 0xfedd5 orgs.asm:1347
+ in AL, strict byte 071h ; e4 71 ; 0xfedd7 orgs.asm:1348
+ call 0edb6h ; e8 da ff ; 0xfedd9 orgs.asm:1349
+ test al, al ; 84 c0 ; 0xfeddc orgs.asm:1350
+ je short 0edebh ; 74 0b ; 0xfedde orgs.asm:1351
+ add cx, 04463h ; 81 c1 63 44 ; 0xfede0 orgs.asm:1353
+ adc dx, strict byte 00004h ; 83 d2 04 ; 0xfede4 orgs.asm:1354
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfede7 orgs.asm:1355
+ jne short 0ede0h ; 75 f5 ; 0xfede9 orgs.asm:1356
+ mov AL, strict byte 004h ; b0 04 ; 0xfedeb orgs.asm:1360
+ out strict byte 070h, AL ; e6 70 ; 0xfeded orgs.asm:1361
+ in AL, strict byte 071h ; e4 71 ; 0xfedef orgs.asm:1362
+ call 0edb6h ; e8 c2 ff ; 0xfedf1 orgs.asm:1363
+ test al, al ; 84 c0 ; 0xfedf4 orgs.asm:1364
+ je short 0ee04h ; 74 0c ; 0xfedf6 orgs.asm:1365
+ add cx, 0076ch ; 81 c1 6c 07 ; 0xfedf8 orgs.asm:1367
+ adc dx, 00100h ; 81 d2 00 01 ; 0xfedfc orgs.asm:1368
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfee00 orgs.asm:1369
+ jne short 0edf8h ; 75 f4 ; 0xfee02 orgs.asm:1370
+ db 08ah, 0cdh
+ ; mov cl, ch ; 8a cd ; 0xfee04 orgs.asm:1373
+ db 08ah, 0eah
+ ; mov ch, dl ; 8a ea ; 0xfee06 orgs.asm:1374
+ db 08ah, 0d6h
+ ; mov dl, dh ; 8a d6 ; 0xfee08 orgs.asm:1375
+ db 032h, 0f6h
+ ; xor dh, dh ; 32 f6 ; 0xfee0a orgs.asm:1376
+ mov word [0046ch], cx ; 89 0e 6c 04 ; 0xfee0c orgs.asm:1377
+ mov word [0046eh], dx ; 89 16 6e 04 ; 0xfee10 orgs.asm:1378
+ mov byte [00470h], dh ; 88 36 70 04 ; 0xfee14 orgs.asm:1379
+ retn ; c3 ; 0xfee18 orgs.asm:1427
+ ; 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:1438
+ push dx ; 52 ; 0xfef58 orgs.asm:1439
+ mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1440
+ in AL, DX ; ec ; 0xfef5c orgs.asm:1441
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1442
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1443
+ je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1444
+ mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1445
+ mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1446
+ out DX, AL ; ee ; 0xfef68 orgs.asm:1447
+ mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1449
+ in AL, DX ; ec ; 0xfef6c orgs.asm:1450
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1451
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1452
+ jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1453
+ mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1456
+ in AL, DX ; ec ; 0xfef76 orgs.asm:1457
+ mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1458
+ in AL, DX ; ec ; 0xfef7a orgs.asm:1459
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1460
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1461
+ je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1462
+ push DS ; 1e ; 0xfef81 orgs.asm:1465
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1466
+ mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1467
+ call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1468
+ or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1470
+ pop DS ; 1f ; 0xfef8e orgs.asm:1471
+ pop dx ; 5a ; 0xfef8f orgs.asm:1472
+ pop ax ; 58 ; 0xfef90 orgs.asm:1473
+ iret ; cf ; 0xfef91 orgs.asm:1474
+ ; 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:1501
+ ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000000d uValue=00000000000f0fd4 'int17_handler'
+int17_handler: ; 0xfefd4 LB 0xd
+ push DS ; 1e ; 0xfefd4 orgs.asm:1504
+ push ES ; 06 ; 0xfefd5 orgs.asm:1505
+ pushaw ; 60 ; 0xfefd6 orgs.asm:97
+ push CS ; 0e ; 0xfefd7 orgs.asm:104
+ pop DS ; 1f ; 0xfefd8 orgs.asm:105
+ cld ; fc ; 0xfefd9 orgs.asm:106
+ call 07366h ; e8 89 83 ; 0xfefda orgs.asm:1508
+ popaw ; 61 ; 0xfefdd orgs.asm:114
+ pop ES ; 07 ; 0xfefde orgs.asm:1510
+ pop DS ; 1f ; 0xfefdf orgs.asm:1511
+ iret ; cf ; 0xfefe0 orgs.asm:1512
+ ; 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:1547
+ ; 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:1556
+ ; 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:1565
+ ; disGetNextSymbol 0xff066 LB 0xf9a -> off=0x0 cb=000000000000003e uValue=00000000000f1066 'biosorg_check_before_or_at_0F0A2h'
+biosorg_check_before_or_at_0F0A2h: ; 0xff066 LB 0x3e
+ times 0x3c db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff0a4 LB 0xf5c -> off=0x0 cb=0000000000000008 uValue=00000000000f10a4 'biosorg_check_at_0F0A4h'
+biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0x8
+ push CS ; 0e ; 0xff0a4 orgs.asm:104
+ pop DS ; 1f ; 0xff0a5 orgs.asm:105
+ cld ; fc ; 0xff0a6 orgs.asm:106
+ call 0170ah ; e8 60 26 ; 0xff0a7 orgs.asm:1580
+ hlt ; f4 ; 0xff0aa orgs.asm:1582
+ iret ; cf ; 0xff0ab orgs.asm:1583
+ ; disGetNextSymbol 0xff0ac LB 0xf54 -> off=0x0 cb=0000000000000090 uValue=00000000000f10ac 'int19_relocated'
+int19_relocated: ; 0xff0ac LB 0x90
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0ac orgs.asm:1594
+ mov ax, word [bp+002h] ; 8b 46 02 ; 0xff0ae orgs.asm:1595
+ cmp ax, 0f000h ; 3d 00 f0 ; 0xff0b1 orgs.asm:1596
+ je short 0f0c3h ; 74 0d ; 0xff0b4 orgs.asm:1597
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff0b6 orgs.asm:1599
+ mov ds, ax ; 8e d8 ; 0xff0b8 orgs.asm:1600
+ mov ax, 01234h ; b8 34 12 ; 0xff0ba orgs.asm:1601
+ mov word [001d8h], ax ; a3 d8 01 ; 0xff0bd orgs.asm:1602
+ jmp near 0e05bh ; e9 98 ef ; 0xff0c0 orgs.asm:1603
+ push CS ; 0e ; 0xff0c3 orgs.asm:104
+ pop DS ; 1f ; 0xff0c4 orgs.asm:105
+ cld ; fc ; 0xff0c5 orgs.asm:106
+ push bp ; 55 ; 0xff0c6 orgs.asm:1610
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0c7 orgs.asm:1611
+ mov ax, strict word 00001h ; b8 01 00 ; 0xff0c9 orgs.asm:1614
+ push ax ; 50 ; 0xff0cc orgs.asm:1615
+ call 04c30h ; e8 60 5b ; 0xff0cd orgs.asm:1616
+ inc sp ; 44 ; 0xff0d0 orgs.asm:1617
+ inc sp ; 44 ; 0xff0d1 orgs.asm:1618
+ test ax, ax ; 85 c0 ; 0xff0d2 orgs.asm:1619
+ jne short 0f0fdh ; 75 27 ; 0xff0d4 orgs.asm:1620
+ mov ax, strict word 00002h ; b8 02 00 ; 0xff0d6 orgs.asm:1623
+ push ax ; 50 ; 0xff0d9 orgs.asm:1624
+ call 04c30h ; e8 53 5b ; 0xff0da orgs.asm:1625
+ inc sp ; 44 ; 0xff0dd orgs.asm:1626
+ inc sp ; 44 ; 0xff0de orgs.asm:1627
+ test ax, ax ; 85 c0 ; 0xff0df orgs.asm:1628
+ jne short 0f0fdh ; 75 1a ; 0xff0e1 orgs.asm:1629
+ mov ax, strict word 00003h ; b8 03 00 ; 0xff0e3 orgs.asm:1632
+ push ax ; 50 ; 0xff0e6 orgs.asm:1633
+ call 04c30h ; e8 46 5b ; 0xff0e7 orgs.asm:1634
+ inc sp ; 44 ; 0xff0ea orgs.asm:1635
+ inc sp ; 44 ; 0xff0eb orgs.asm:1636
+ test ax, ax ; 85 c0 ; 0xff0ec orgs.asm:1637
+ jne short 0f0fdh ; 75 0d ; 0xff0ee orgs.asm:1638
+ mov ax, strict word 00004h ; b8 04 00 ; 0xff0f0 orgs.asm:1641
+ push ax ; 50 ; 0xff0f3 orgs.asm:1642
+ call 04c30h ; e8 39 5b ; 0xff0f4 orgs.asm:1643
+ inc sp ; 44 ; 0xff0f7 orgs.asm:1644
+ inc sp ; 44 ; 0xff0f8 orgs.asm:1645
+ test ax, ax ; 85 c0 ; 0xff0f9 orgs.asm:1646
+ je short 0f0a4h ; 74 a7 ; 0xff0fb orgs.asm:1647
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0fd orgs.asm:1653
+ sal ax, 004h ; c1 e0 04 ; 0xff100 orgs.asm:200
+ mov word [bp+002h], ax ; 89 46 02 ; 0xff103 orgs.asm:1655
+ mov ax, word [byte bp+000h] ; 8b 46 00 ; 0xff106 orgs.asm:1656
+ and ax, 0f000h ; 25 00 f0 ; 0xff109 orgs.asm:1665
+ mov word [bp+004h], ax ; 89 46 04 ; 0xff10c orgs.asm:1666
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff10f orgs.asm:1667
+ mov ds, ax ; 8e d8 ; 0xff111 orgs.asm:1668
+ mov es, ax ; 8e c0 ; 0xff113 orgs.asm:1669
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff115 orgs.asm:1670
+ mov ax, 0aa55h ; b8 55 aa ; 0xff118 orgs.asm:1671
+ pop bp ; 5d ; 0xff11b orgs.asm:1673
+ iret ; cf ; 0xff11c orgs.asm:1674
+ or cx, word [bp+si] ; 0b 0a ; 0xff11d
+ or word [bp+di], cx ; 09 0b ; 0xff11f
+ push eax ; 66 50 ; 0xff121 orgs.asm:88
+ mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff123 orgs.asm:89
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xff129 orgs.asm:90
+ sal eax, 008h ; 66 c1 e0 08 ; 0xff12b orgs.asm:91
+ and dl, 0fch ; 80 e2 fc ; 0xff12f orgs.asm:92
+ db 00ah, 0c2h
+ ; or al, dl ; 0a c2 ; 0xff132 orgs.asm:93
+ mov dx, 00cf8h ; ba f8 0c ; 0xff134 orgs.asm:94
+ out DX, eax ; 66 ef ; 0xff137 orgs.asm:95
+ pop eax ; 66 58 ; 0xff139 orgs.asm:96
+ retn ; c3 ; 0xff13b orgs.asm:97
+ ; disGetNextSymbol 0xff13c LB 0xec4 -> off=0x0 cb=0000000000000012 uValue=00000000000f113c 'pcibios_init_iomem_bases'
+pcibios_init_iomem_bases: ; 0xff13c LB 0x12
+ push bp ; 55 ; 0xff13c orgs.asm:100
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff13d orgs.asm:101
+ mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff13f orgs.asm:103
+ mov dx, 00410h ; ba 10 04 ; 0xff145 orgs.asm:104
+ out DX, eax ; 66 ef ; 0xff148 orgs.asm:105
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xff14a orgs.asm:218
+ pop bp ; 5d ; 0xff14c orgs.asm:219
+ retn ; c3 ; 0xff14d orgs.asm:220
+ ; disGetNextSymbol 0xff14e LB 0xeb2 -> off=0x0 cb=000000000000000c uValue=00000000000f114e 'pcibios_init_set_elcr'
+pcibios_init_set_elcr: ; 0xff14e LB 0xc
+ push ax ; 50 ; 0xff14e orgs.asm:223
+ push cx ; 51 ; 0xff14f orgs.asm:224
+ mov dx, 004d0h ; ba d0 04 ; 0xff150 orgs.asm:225
+ test AL, strict byte 008h ; a8 08 ; 0xff153 orgs.asm:226
+ je short 0f15ah ; 74 03 ; 0xff155 orgs.asm:227
+ inc dx ; 42 ; 0xff157 orgs.asm:229
+ and AL, strict byte 007h ; 24 07 ; 0xff158 orgs.asm:230
+ ; disGetNextSymbol 0xff15a LB 0xea6 -> off=0x0 cb=000000000000000d uValue=00000000000f115a 'is_master_pic'
+is_master_pic: ; 0xff15a LB 0xd
+ db 08ah, 0c8h
+ ; mov cl, al ; 8a c8 ; 0xff15a orgs.asm:232
+ mov BL, strict byte 001h ; b3 01 ; 0xff15c orgs.asm:233
+ sal bl, CL ; d2 e3 ; 0xff15e orgs.asm:234
+ in AL, DX ; ec ; 0xff160 orgs.asm:235
+ db 00ah, 0c3h
+ ; or al, bl ; 0a c3 ; 0xff161 orgs.asm:236
+ out DX, AL ; ee ; 0xff163 orgs.asm:237
+ pop cx ; 59 ; 0xff164 orgs.asm:238
+ pop ax ; 58 ; 0xff165 orgs.asm:239
+ retn ; c3 ; 0xff166 orgs.asm:240
+ ; disGetNextSymbol 0xff167 LB 0xe99 -> off=0x0 cb=0000000000000039 uValue=00000000000f1167 'pcibios_init_irqs'
+pcibios_init_irqs: ; 0xff167 LB 0x39
+ push DS ; 1e ; 0xff167 orgs.asm:243
+ push bp ; 55 ; 0xff168 orgs.asm:244
+ mov ax, 0f000h ; b8 00 f0 ; 0xff169 orgs.asm:245
+ mov ds, ax ; 8e d8 ; 0xff16c orgs.asm:246
+ pop bp ; 5d ; 0xff16e orgs.asm:353
+ pop DS ; 1f ; 0xff16f orgs.asm:354
+ retn ; c3 ; 0xff170 orgs.asm:355
+ mov ax, ax ; 89 c0 ; 0xff171
+ mov ax, ax ; 89 c0 ; 0xff173
+ mov ax, ax ; 89 c0 ; 0xff175
+ mov ax, ax ; 89 c0 ; 0xff177
+ mov ax, ax ; 89 c0 ; 0xff179
+ mov ax, ax ; 89 c0 ; 0xff17b
+ mov ax, ax ; 89 c0 ; 0xff17d
+ cld ; fc ; 0xff17f
+ and AL, strict byte 050h ; 24 50 ; 0xff180
+ dec cx ; 49 ; 0xff182
+ push dx ; 52 ; 0xff183
+ add byte [bx+di], al ; 00 01 ; 0xff184
+ add byte [bp+si], al ; 00 02 ; 0xff186
+ add byte [bx+si], cl ; 00 08 ; 0xff188
+ add byte [bx+si], al ; 00 00 ; 0xff18a
+ xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff18c
+ times 0xf db 0
+ db 031h
+ ; disGetNextSymbol 0xff1a0 LB 0xe60 -> off=0x0 cb=00000000000001e0 uValue=00000000000f11a0 '_pci_routing_table'
+_pci_routing_table: ; 0xff1a0 LB 0x1e0
+ db 000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h
+ db 000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h
+ db 000h, 018h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 002h, 000h
+ db 000h, 020h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 003h, 000h
+ db 000h, 028h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 004h, 000h
+ db 000h, 030h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 005h, 000h
+ db 000h, 038h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 006h, 000h
+ db 000h, 040h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 007h, 000h
+ db 000h, 048h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 008h, 000h
+ db 000h, 050h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 009h, 000h
+ db 000h, 058h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00ah, 000h
+ db 000h, 060h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00bh, 000h
+ db 000h, 068h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 00ch, 000h
+ db 000h, 070h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 00dh, 000h
+ db 000h, 078h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00eh, 000h
+ db 000h, 080h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00fh, 000h
+ db 000h, 088h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 010h, 000h
+ db 000h, 090h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 011h, 000h
+ db 000h, 098h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 012h, 000h
+ db 000h, 0a0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 013h, 000h
+ db 000h, 0a8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 014h, 000h
+ db 000h, 0b0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 015h, 000h
+ db 000h, 0b8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 016h, 000h
+ db 000h, 0c0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 017h, 000h
+ db 000h, 0c8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 018h, 000h
+ db 000h, 0d0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 019h, 000h
+ db 000h, 0d8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 01ah, 000h
+ db 000h, 0e0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 01bh, 000h
+ db 000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h
+ db 000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h
+ ; disGetNextSymbol 0xff380 LB 0xc80 -> off=0x0 cb=0000000000000002 uValue=00000000000f1380 '_pci_routing_table_size'
+_pci_routing_table_size: ; 0xff380 LB 0x2
+ loopne 0f383h ; e0 01 ; 0xff380
+ ; disGetNextSymbol 0xff382 LB 0xc7e -> off=0x0 cb=00000000000004bf uValue=00000000000f1382 'biosorg_check_before_or_at_0F83Fh'
+biosorg_check_before_or_at_0F83Fh: ; 0xff382 LB 0x4bf
+ times 0x4bd db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff841 LB 0x7bf -> off=0x0 cb=000000000000000c uValue=00000000000f1841 'int12_handler'
+int12_handler: ; 0xff841 LB 0xc
+ sti ; fb ; 0xff841 orgs.asm:1688
+ push DS ; 1e ; 0xff842 orgs.asm:1689
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1690
+ mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1691
+ mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1692
+ pop DS ; 1f ; 0xff84b orgs.asm:1693
+ iret ; cf ; 0xff84c orgs.asm:1694
+ ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler'
+int11_handler: ; 0xff84d LB 0xc
+ sti ; fb ; 0xff84d orgs.asm:1703
+ push DS ; 1e ; 0xff84e orgs.asm:1704
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1705
+ mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1706
+ mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1707
+ pop DS ; 1f ; 0xff857 orgs.asm:1708
+ iret ; cf ; 0xff858 orgs.asm:1709
+ ; 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:1719
+ jne short 0f86bh ; 75 0d ; 0xff85c orgs.asm:1720
+ pushaw ; 60 ; 0xff85e orgs.asm:1725
+ push ES ; 06 ; 0xff85f orgs.asm:1726
+ push DS ; 1e ; 0xff860 orgs.asm:1727
+ push CS ; 0e ; 0xff861 orgs.asm:104
+ pop DS ; 1f ; 0xff862 orgs.asm:105
+ cld ; fc ; 0xff863 orgs.asm:106
+ call 068bdh ; e8 56 70 ; 0xff864 orgs.asm:1729
+ pop DS ; 1f ; 0xff867 orgs.asm:1730
+ pop ES ; 07 ; 0xff868 orgs.asm:1731
+ popaw ; 61 ; 0xff869 orgs.asm:1732
+ iret ; cf ; 0xff86a orgs.asm:1733
+ pushfw ; 9c ; 0xff86b orgs.asm:1738
+ push DS ; 1e ; 0xff86c orgs.asm:1739
+ push ES ; 06 ; 0xff86d orgs.asm:1740
+ push CS ; 0e ; 0xff86e orgs.asm:104
+ pop DS ; 1f ; 0xff86f orgs.asm:105
+ cld ; fc ; 0xff870 orgs.asm:106
+ pushaw ; 60 ; 0xff871 orgs.asm:97
+ cmp ah, 053h ; 80 fc 53 ; 0xff872 orgs.asm:1751
+ je short 0f885h ; 74 0e ; 0xff875 orgs.asm:1752
+ cmp ah, 0c2h ; 80 fc c2 ; 0xff877 orgs.asm:1753
+ je short 0f88ah ; 74 0e ; 0xff87a orgs.asm:1754
+ call 065a5h ; e8 26 6d ; 0xff87c orgs.asm:1756
+ popaw ; 61 ; 0xff87f orgs.asm:114
+ pop ES ; 07 ; 0xff880 orgs.asm:1762
+ pop DS ; 1f ; 0xff881 orgs.asm:1763
+ popfw ; 9d ; 0xff882 orgs.asm:1764
+ jmp short 0f88fh ; eb 0a ; 0xff883 orgs.asm:1765
+ call 0a90fh ; e8 87 b0 ; 0xff885 orgs.asm:1768
+ jmp short 0f87fh ; eb f5 ; 0xff888 orgs.asm:1769
+ ; disGetNextSymbol 0xff88a LB 0x776 -> off=0x0 cb=0000000000000005 uValue=00000000000f188a 'int15_handler_mouse'
+int15_handler_mouse: ; 0xff88a LB 0x5
+ call 06ffah ; e8 6d 77 ; 0xff88a orgs.asm:1772
+ jmp short 0f87fh ; eb f0 ; 0xff88d orgs.asm:1773
+ ; 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:1790
+ push bp ; 55 ; 0xff891 orgs.asm:1791
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff892 orgs.asm:1792
+ and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff894 orgs.asm:1793
+ or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff898 orgs.asm:1794
+ pop bp ; 5d ; 0xff89d orgs.asm:1795
+ iret ; cf ; 0xff89e orgs.asm:1796
+ push bp ; 55 ; 0xff89f orgs.asm:1798
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff8a0 orgs.asm:1799
+ or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff8a2 orgs.asm:1800
+ pop bp ; 5d ; 0xff8a7 orgs.asm:1801
+ iret ; cf ; 0xff8a8 orgs.asm:1802
+ ; disGetNextSymbol 0xff8a9 LB 0x757 -> off=0x0 cb=000000000000002b uValue=00000000000f18a9 'int74_handler'
+int74_handler: ; 0xff8a9 LB 0x2b
+ sti ; fb ; 0xff8a9 orgs.asm:1809
+ pushaw ; 60 ; 0xff8aa orgs.asm:97
+ push ES ; 06 ; 0xff8ab orgs.asm:1811
+ push DS ; 1e ; 0xff8ac orgs.asm:1812
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8ad orgs.asm:1813
+ push ax ; 50 ; 0xff8af orgs.asm:1814
+ push ax ; 50 ; 0xff8b0 orgs.asm:1815
+ push ax ; 50 ; 0xff8b1 orgs.asm:1816
+ push ax ; 50 ; 0xff8b2 orgs.asm:1817
+ push ax ; 50 ; 0xff8b3 orgs.asm:1818
+ push CS ; 0e ; 0xff8b4 orgs.asm:104
+ pop DS ; 1f ; 0xff8b5 orgs.asm:105
+ cld ; fc ; 0xff8b6 orgs.asm:106
+ call 06f4ch ; e8 92 76 ; 0xff8b7 orgs.asm:1820
+ pop cx ; 59 ; 0xff8ba orgs.asm:1821
+ jcxz 0f8c9h ; e3 0c ; 0xff8bb orgs.asm:1822
+ push strict byte 00000h ; 6a 00 ; 0xff8bd orgs.asm:1826
+ pop DS ; 1f ; 0xff8bf orgs.asm:1831
+ push word [0040eh] ; ff 36 0e 04 ; 0xff8c0 orgs.asm:1832
+ pop DS ; 1f ; 0xff8c4 orgs.asm:1833
+ call far [word 00022h] ; ff 1e 22 00 ; 0xff8c5 orgs.asm:1834
+ cli ; fa ; 0xff8c9 orgs.asm:1836
+ call 0e030h ; e8 63 e7 ; 0xff8ca orgs.asm:1837
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xff8cd orgs.asm:1838
+ pop DS ; 1f ; 0xff8d0 orgs.asm:1839
+ pop ES ; 07 ; 0xff8d1 orgs.asm:1840
+ popaw ; 61 ; 0xff8d2 orgs.asm:114
+ iret ; cf ; 0xff8d3 orgs.asm:1842
+ ; disGetNextSymbol 0xff8d4 LB 0x72c -> off=0x0 cb=0000000000000012 uValue=00000000000f18d4 'int76_handler'
+int76_handler: ; 0xff8d4 LB 0x12
+ push ax ; 50 ; 0xff8d4 orgs.asm:1849
+ push DS ; 1e ; 0xff8d5 orgs.asm:1850
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff8d6 orgs.asm:1851
+ mov ds, ax ; 8e d8 ; 0xff8d9 orgs.asm:1852
+ mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8db orgs.asm:1853
+ call 0e030h ; e8 4d e7 ; 0xff8e0 orgs.asm:1854
+ pop DS ; 1f ; 0xff8e3 orgs.asm:1855
+ pop ax ; 58 ; 0xff8e4 orgs.asm:1856
+ iret ; cf ; 0xff8e5 orgs.asm:1857
+ ; disGetNextSymbol 0xff8e6 LB 0x71a -> off=0x0 cb=000000000000001f uValue=00000000000f18e6 'int70_handler'
+int70_handler: ; 0xff8e6 LB 0x1f
+ push ES ; 06 ; 0xff8e6 orgs.asm:1866
+ push DS ; 1e ; 0xff8e7 orgs.asm:1867
+ pushaw ; 60 ; 0xff8e8 orgs.asm:97
+ push CS ; 0e ; 0xff8e9 orgs.asm:104
+ pop DS ; 1f ; 0xff8ea orgs.asm:105
+ cld ; fc ; 0xff8eb orgs.asm:106
+ call 06c08h ; e8 19 73 ; 0xff8ec orgs.asm:1870
+ popaw ; 61 ; 0xff8ef orgs.asm:114
+ pop DS ; 1f ; 0xff8f0 orgs.asm:1872
+ pop ES ; 07 ; 0xff8f1 orgs.asm:1873
+ iret ; cf ; 0xff8f2 orgs.asm:1874
+ jnbe short 0f8fah ; 77 05 ; 0xff8f3 orgs.asm:1884
+ cmp ax, 000b0h ; 3d b0 00 ; 0xff8f5 orgs.asm:1885
+ jc short 0f902h ; 72 08 ; 0xff8f8 orgs.asm:1886
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xff8fa orgs.asm:1889
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8fc orgs.asm:1890
+ inc byte [word 00070h] ; fe 06 70 00 ; 0xff8fe orgs.asm:1892
+ jmp near 0fec1h ; e9 bc 05 ; 0xff902 orgs.asm:1894
+ ; 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:1928
+ push DS ; 1e ; 0xffe6f orgs.asm:1929
+ pushaw ; 60 ; 0xffe70 orgs.asm:97
+ push CS ; 0e ; 0xffe71 orgs.asm:104
+ pop DS ; 1f ; 0xffe72 orgs.asm:105
+ cld ; fc ; 0xffe73 orgs.asm:106
+ call 06cb0h ; e8 39 6e ; 0xffe74 orgs.asm:1933
+ popaw ; 61 ; 0xffe77 orgs.asm:114
+ pop DS ; 1f ; 0xffe78 orgs.asm:1935
+ pop ES ; 07 ; 0xffe79 orgs.asm:1936
+ iret ; cf ; 0xffe7a orgs.asm:1937
+ ; 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:1950
+ push ax ; 50 ; 0xffea6 orgs.asm:1951
+ push DS ; 1e ; 0xffea7 orgs.asm:1953
+ push dx ; 52 ; 0xffea8 orgs.asm:1954
+ mov ax, strict word 00040h ; b8 40 00 ; 0xffea9 orgs.asm:1955
+ mov ds, ax ; 8e d8 ; 0xffeac orgs.asm:1956
+ mov ax, word [0006ch] ; a1 6c 00 ; 0xffeae orgs.asm:1962
+ mov dx, word [word 0006eh] ; 8b 16 6e 00 ; 0xffeb1 orgs.asm:1963
+ inc ax ; 40 ; 0xffeb5 orgs.asm:1964
+ jne short 0feb9h ; 75 01 ; 0xffeb6 orgs.asm:1965
+ inc dx ; 42 ; 0xffeb8 orgs.asm:1966
+ cmp dx, strict byte 00018h ; 83 fa 18 ; 0xffeb9 orgs.asm:1975
+ jc short 0fec1h ; 72 03 ; 0xffebc orgs.asm:1976
+ jmp near 0f8f3h ; e9 32 fa ; 0xffebe orgs.asm:1977
+ mov word [0006ch], ax ; a3 6c 00 ; 0xffec1 orgs.asm:1989
+ mov word [word 0006eh], dx ; 89 16 6e 00 ; 0xffec4 orgs.asm:1990
+ mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:1994
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xffecb orgs.asm:1995
+ je short 0feddh ; 74 0e ; 0xffecd orgs.asm:1996
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xffecf orgs.asm:1997
+ mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:1998
+ jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:1999
+ mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:2001
+ in AL, DX ; ec ; 0xffed9 orgs.asm:2002
+ and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:2003
+ out DX, AL ; ee ; 0xffedc orgs.asm:2004
+ int 01ch ; cd 1c ; 0xffedd orgs.asm:2007
+ cli ; fa ; 0xffedf orgs.asm:2009
+ call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2010
+ pop dx ; 5a ; 0xffee3 orgs.asm:2011
+ pop DS ; 1f ; 0xffee4 orgs.asm:2012
+ pop ax ; 58 ; 0xffee5 orgs.asm:2017
+ iret ; cf ; 0xffee6 orgs.asm:2019
+ ; 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:2044
+ ; 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:2053
+ 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:2063
+ ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
+ db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 09eh
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
new file mode 100644
index 00000000..0a6a61ae
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
@@ -0,0 +1 @@
+4bcdbf6af14947a003ea6d1c3c506c4e *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..72a04e6d
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
@@ -0,0 +1,19203 @@
+; $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-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: bios.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: print.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ata.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ATA disk support.
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppy.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppyt.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Floppy drive tables.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: eltorito.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: boot.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: keyboard.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: disk.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: serial.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: system.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: invop.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Real mode invalid opcode handler.
+;
+;
+;
+; Copyright (C) 2013-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: timepci.c
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ps2mouse.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: parallel.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: logo.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Stuff for drawing the BIOS logo.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: scsi.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; SCSI host adapter driver to boot from SCSI disks
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: ahci.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: virtio.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; VirtIO-SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2019-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: apm.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; APM BIOS support. Implements APM version 1.2.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pcibios.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PCI BIOS support.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pciutil.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Utility routines for calling the PCI BIOS.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: vds.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Utility routines for calling the Virtual DMA Services.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: __U4M.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U4D.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8RS.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8LS.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemset.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemcpy.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: pcibio32.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+
+;
+; Source file: apm_pm.asm
+;
+; $Id:
+; Protected-mode APM implementation.
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: orgs.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: pci32.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; 32-bit PCI BIOS wrapper.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+
+
+
+section _DATA progbits vstart=0x0 align=1 ; size=0xc0 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0000 LB 0xc0 -> 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 0x65 -> 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 0x56 -> off=0x0 cb=000000000000000e uValue=00000000000f006a '_pktacc'
+_pktacc: ; 0xf006a LB 0xe
+ db 000h, 000h, 000h, 000h, 000h, 000h, 079h, 02ch, 0f8h, 080h, 06bh, 090h, 00bh, 0a2h
+ ; disGetNextSymbol 0xf0078 LB 0x48 -> off=0x0 cb=000000000000000e uValue=00000000000f0078 '_softrst'
+_softrst: ; 0xf0078 LB 0xe
+ db 000h, 000h, 000h, 000h, 000h, 000h, 058h, 02fh, 0c3h, 03ch, 0c3h, 03ch, 000h, 000h
+ ; disGetNextSymbol 0xf0086 LB 0x3a -> off=0x0 cb=000000000000003a uValue=00000000000f0086 '_dskacc'
+_dskacc: ; 0xf0086 LB 0x3a
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 069h, 02bh, 01eh, 02ch, 000h, 000h, 000h, 000h
+ db 042h, 07fh, 01dh, 080h, 041h, 08fh, 0e7h, 08fh, 000h, 0a0h, 007h, 0a1h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h, 032h, 05fh, 000h, 0dah
+ db 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
+
+section CONST progbits vstart=0xc0 align=1 ; size=0xe52 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf00c0 LB 0xe52 -> off=0xe52 cb=0000000000000000 uValue=00000000000f0f12 'bios_cvs_version_string'
+ db 'CPUID EDX: 0x%lx', 00ah, 000h
+ db 'NMI Handler called', 00ah, 000h
+ db 'INT18: BOOT FAILURE', 00ah, 000h
+ db '%s', 00ah, 000h, 000h
+ db 'FATAL: ', 000h
+ db 'bios_printf: unknown %ll format', 00ah, 000h
+ db 'bios_printf: unknown format', 00ah, 000h
+ db '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! System halted.', 00ah, 000h
+ db 'Could not read from the boot medium! System halted.', 00ah, 000h
+ db 'CDROM boot failure code : %04x', 00ah, 000h
+ db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 000h, 000h
+ db 'Keyboard error:%u', 00ah, 000h
+ db 'KBD: int09 handler: AL=0', 00ah, 000h
+ db 'KBD: int09h_handler(): unknown scancode read: 0x%02x!', 00ah, 000h
+ db 'KBD: int09h_handler(): scancode & asciicode are zero?', 00ah, 000h
+ db 'KBD: int16h: out of keyboard input', 00ah, 000h
+ db 'KBD: unsupported int 16h function %02x', 00ah, 000h
+ db 'AX=%04x BX=%04x CX=%04x DX=%04x ', 00ah, 000h, 000h
+ db 'int13_harddisk', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h
+ db '%s: function %02x, count out of range!', 00ah, 000h
+ db '%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!', 00ah
+ db 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db 'format disk track called', 00ah, 000h
+ db '%s: function %02xh unimplemented, returns success', 00ah, 000h
+ db '%s: function %02xh unsupported, returns fail', 00ah, 000h
+ db 'int13_harddisk_ext', 000h
+ db '%s: function %02x. LBA out of range', 00ah, 000h, 000h
+ db 'int15: Func 24h, subfunc %02xh, A20 gate control not supported', 00ah, 000h
+ db '*** int 15h function AH=bf not yet supported!', 00ah, 000h
+ db 'EISA BIOS not present', 00ah, 000h
+ db '*** int 15h function AX=%04x, BX=%04x not yet supported!', 00ah, 000h
+ db 'sendmouse', 000h
+ db 'setkbdcomm', 000h
+ db 'Mouse reset returned %02x (should be ack)', 00ah, 000h
+ db 'Mouse status returned %02x (should be ack)', 00ah, 000h
+ db 'INT 15h C2 AL=6, BH=%02x', 00ah, 000h
+ db 'INT 15h C2 default case entered', 00ah, 000h, 000h
+ db 'Key pressed: %x', 00ah, 000h
+ db 00ah, 00ah, ' AHCI controller:', 000h
+ db 00ah, ' %d) Hard disk', 000h
+ db 00ah, 00ah, ' SCSI controller:', 000h
+ db ' IDE controller:', 000h
+ db 00ah, 00ah, 'AHCI controller:', 00ah, 000h
+ db 00ah, ' %d) ', 000h
+ db 'Secondary ', 000h
+ db 'Primary ', 000h
+ db 'Slave', 000h
+ db 'Master', 000h
+ db 'No hard disks found', 000h
+ db 00ah, 000h
+ db 'Press F12 to select boot device.', 00ah, 000h
+ db 00ah, 'VirtualBox temporary boot device selection', 00ah, 00ah, 'Detected H'
+ db 'ard disks:', 00ah, 00ah, 000h
+ db 00ah, 'Other boot devices:', 00ah, ' f) Floppy', 00ah, ' c) CD-ROM', 00ah
+ db ' l) LAN', 00ah, 00ah, ' b) Continue booting', 00ah, 000h
+ db 'Delaying boot for %d seconds:', 000h
+ db ' %d', 000h, 000h
+ db 'scsi_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'scsi_write_sectors', 000h
+ db 'scsi_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'scsi_enumerate_attached_devices', 000h
+ db '%s: SCSI_INQUIRY failed', 00ah, 000h
+ db '%s: SCSI_READ_CAPACITY failed', 00ah, 000h
+ db 'Disk %d has an unsupported sector size of %u', 00ah, 000h
+ db 'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
+ db 'ahci_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'ahci_write_sectors', 000h
+ db 'ahci_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'virtio_scsi_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'virtio_scsi_write_sectors', 000h
+ db 'virtio_scsi_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'virtio_scsi_detect_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 '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=0xf12 align=1 ; size=0x3fa class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0f12 LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0f12 'bios_cvs_version_string'
+bios_cvs_version_string: ; 0xf0f12 LB 0x12
+ db 'VirtualBox 6.1.19', 000h
+ ; disGetNextSymbol 0xf0f24 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0f24 '_bios_prefix_string'
+_bios_prefix_string: ; 0xf0f24 LB 0x8
+ db 'BIOS: ', 000h, 000h
+ ; disGetNextSymbol 0xf0f2c LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0f2c 'isotag'
+isotag: ; 0xf0f2c LB 0x6
+ db 'CD001', 000h
+ ; disGetNextSymbol 0xf0f32 LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0f32 'eltorito'
+eltorito: ; 0xf0f32 LB 0x18
+ db 'EL TORITO SPECIFICATION', 000h
+ ; disGetNextSymbol 0xf0f4a LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0f4a 'drivetypes'
+drivetypes: ; 0xf0f4a 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 0xf0f72 LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0f72 'scan_to_scanascii'
+scan_to_scanascii: ; 0xf0f72 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 0xf12ec LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f12ec 'panic_msg_keyb_buffer_full'
+panic_msg_keyb_buffer_full: ; 0xf12ec LB 0x20
+ db '%s: keyboard input buffer full', 00ah, 000h
+
+ ; Padding 0x2f4 bytes at 0xf130c
+ times 756 db 0
+
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x9d4c class=CODE group=AUTO
+ ; disGetNextSymbol 0xf1600 LB 0x9d4c -> off=0x0 cb=000000000000005f uValue=00000000000f0000 'rom_scan'
+rom_scan: ; 0xf1600 LB 0x5f
+ push bp ; 55 ; 0xf1600 post.c:77
+ 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:84
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf160f
+ jnc short 01656h ; 73 42 ; 0xf1612
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf1614 post.c:85
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1619
+ mov es, ax ; 8e c0 ; 0xf161c post.c:87
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf161e
+ cmp word [es:bx], 0aa55h ; 26 81 3f 55 aa ; 0xf1621
+ jne short 0164fh ; 75 27 ; 0xf1626
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1628 post.c:93
+ mov word [bp-010h], strict word 00003h ; c7 46 f0 03 00 ; 0xf162b
+ call far [bp-010h] ; ff 5e f0 ; 0xf1630 post.c:94
+ cli ; fa ; 0xf1633 post.c:95
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf1634 post.c:99
+ mov al, byte [es:bx+002h] ; 26 8a 47 02 ; 0xf1637
+ add AL, strict byte 003h ; 04 03 ; 0xf163b
+ and AL, strict byte 0fch ; 24 fc ; 0xf163d
+ xor ah, ah ; 30 e4 ; 0xf163f post.c:100
+ cwd ; 99 ; 0xf1641
+ sal dx, 002h ; c1 e2 02 ; 0xf1642
+ db 01bh, 0c2h
+ ; sbb ax, dx ; 1b c2 ; 0xf1645
+ sar ax, 002h ; c1 f8 02 ; 0xf1647
+ add word [bp-012h], ax ; 01 46 ee ; 0xf164a
+ jmp short 0160ch ; eb bd ; 0xf164d post.c:102
+ add word [bp-012h], 00080h ; 81 46 ee 80 00 ; 0xf164f post.c:104
+ jmp short 0160ch ; eb b6 ; 0xf1654 post.c:106
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf1656 post.c:107
+ pop di ; 5f ; 0xf1659
+ pop si ; 5e ; 0xf165a
+ pop cx ; 59 ; 0xf165b
+ pop bx ; 5b ; 0xf165c
+ pop bp ; 5d ; 0xf165d
+ retn ; c3 ; 0xf165e
+ ; disGetNextSymbol 0xf165f LB 0x9ced -> off=0x0 cb=0000000000000042 uValue=00000000000f005f 'is_cpuid_supported'
+is_cpuid_supported: ; 0xf165f LB 0x42
+ push bp ; 55 ; 0xf165f post.c:114
+ mov bp, sp ; 89 e5 ; 0xf1660
+ push bx ; 53 ; 0xf1662
+ push cx ; 51 ; 0xf1663
+ push dx ; 52 ; 0xf1664
+ pushfd ; 66 9c ; 0xf1665 post.c:118
+ pop edx ; 66 5a ; 0xf1667
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xf1669
+ shr edx, 010h ; 66 c1 ea 10 ; 0xf166b
+ mov bx, ax ; 89 c3 ; 0xf166f
+ mov cx, dx ; 89 d1 ; 0xf1671
+ xor dl, 020h ; 80 f2 20 ; 0xf1673 post.c:119
+ sal edx, 010h ; 66 c1 e2 10 ; 0xf1676 post.c:120
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf167a
+ push edx ; 66 52 ; 0xf167c
+ popfd ; 66 9d ; 0xf167e
+ pushfd ; 66 9c ; 0xf1680 post.c:121
+ pop edx ; 66 5a ; 0xf1682
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xf1684
+ shr edx, 010h ; 66 c1 ea 10 ; 0xf1686
+ cmp cx, dx ; 39 d1 ; 0xf168a post.c:122
+ jne short 01692h ; 75 04 ; 0xf168c
+ cmp bx, ax ; 39 c3 ; 0xf168e
+ je short 01697h ; 74 05 ; 0xf1690
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1692
+ jmp short 01699h ; eb 02 ; 0xf1695
+ xor ax, ax ; 31 c0 ; 0xf1697
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf1699 post.c:123
+ pop dx ; 5a ; 0xf169c
+ pop cx ; 59 ; 0xf169d
+ pop bx ; 5b ; 0xf169e
+ pop bp ; 5d ; 0xf169f
+ retn ; c3 ; 0xf16a0
+ ; disGetNextSymbol 0xf16a1 LB 0x9cab -> off=0x0 cb=00000000000000c4 uValue=00000000000f00a1 'apic_setup'
+apic_setup: ; 0xf16a1 LB 0xc4
+ push bp ; 55 ; 0xf16a1 post.c:148
+ mov bp, sp ; 89 e5 ; 0xf16a2
+ push si ; 56 ; 0xf16a4
+ push di ; 57 ; 0xf16a5
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf16a6
+ call 0165fh ; e8 b3 ff ; 0xf16a9 post.c:157
+ test ax, ax ; 85 c0 ; 0xf16ac
+ je near 0175eh ; 0f 84 ac 00 ; 0xf16ae
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf16b2 post.c:162
+ xor dx, dx ; 31 d2 ; 0xf16b5
+ push SS ; 16 ; 0xf16b7
+ pop ES ; 07 ; 0xf16b8
+ lea di, [bp-016h] ; 8d 7e ea ; 0xf16b9
+ sal edx, 010h ; 66 c1 e2 10 ; 0xf16bc
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf16c0
+ db 066h, 08bh, 0c2h
+ ; mov eax, edx ; 66 8b c2 ; 0xf16c2
+ cpuid ; 0f a2 ; 0xf16c5
+ db 066h, 026h, 089h, 005h
+ ; mov dword [es:di], eax ; 66 26 89 05 ; 0xf16c7
+ db 066h, 026h, 089h, 05dh, 004h
+ ; mov dword [es:di+004h], ebx ; 66 26 89 5d 04 ; 0xf16cb
+ db 066h, 026h, 089h, 04dh, 008h
+ ; mov dword [es:di+008h], ecx ; 66 26 89 4d 08 ; 0xf16d0
+ db 066h, 026h, 089h, 055h, 00ch
+ ; mov dword [es:di+00ch], edx ; 66 26 89 55 0c ; 0xf16d5
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf16da post.c:163
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf16dd
+ push dx ; 52 ; 0xf16e0
+ push ax ; 50 ; 0xf16e1
+ push 000c0h ; 68 c0 00 ; 0xf16e2
+ push strict byte 00004h ; 6a 04 ; 0xf16e5
+ call 01a23h ; e8 39 03 ; 0xf16e7
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf16ea
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf16ed post.c:164
+ test ah, 002h ; f6 c4 02 ; 0xf16f0
+ je short 0175eh ; 74 69 ; 0xf16f3
+ mov ax, strict word 00078h ; b8 78 00 ; 0xf16f5 post.c:169
+ call 01765h ; e8 6a 00 ; 0xf16f8
+ xor si, si ; 31 f6 ; 0xf16fb post.c:171
+ xor di, di ; 31 ff ; 0xf16fd
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf16ff post.c:172
+ jne short 01708h ; 75 05 ; 0xf1701
+ mov di, 00400h ; bf 00 04 ; 0xf1703 post.c:173
+ jmp short 01717h ; eb 0f ; 0xf1706 post.c:174
+ test al, al ; 84 c0 ; 0xf1708
+ jne short 0170fh ; 75 03 ; 0xf170a
+ mov si, 00800h ; be 00 08 ; 0xf170c post.c:175
+ test di, di ; 85 ff ; 0xf170f post.c:179
+ jne short 01717h ; 75 04 ; 0xf1711
+ test si, si ; 85 f6 ; 0xf1713
+ je short 0175eh ; 74 47 ; 0xf1715
+ mov ax, strict word 0001bh ; b8 1b 00 ; 0xf1717 post.c:180
+ xor cx, cx ; 31 c9 ; 0xf171a
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xf171c
+ db 08bh, 0c8h
+ ; mov cx, ax ; 8b c8 ; 0xf1720
+ rdmsr ; 0f 32 ; 0xf1722
+ xchg edx, eax ; 66 92 ; 0xf1724
+ db 08bh, 0d8h
+ ; mov bx, ax ; 8b d8 ; 0xf1726
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf1728
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xf172c
+ shr edx, 010h ; 66 c1 ea 10 ; 0xf172e
+ xchg dx, cx ; 87 ca ; 0xf1732
+ mov word [bp-006h], si ; 89 76 fa ; 0xf1734 post.c:181
+ not word [bp-006h] ; f7 56 fa ; 0xf1737
+ and dx, word [bp-006h] ; 23 56 fa ; 0xf173a
+ or dx, di ; 09 fa ; 0xf173d post.c:182
+ mov si, strict word 0001bh ; be 1b 00 ; 0xf173f post.c:183
+ xor di, di ; 31 ff ; 0xf1742
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf1744
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xf1748
+ xchg dx, cx ; 87 ca ; 0xf174a
+ sal edx, 010h ; 66 c1 e2 10 ; 0xf174c
+ db 08bh, 0d1h
+ ; mov dx, cx ; 8b d1 ; 0xf1750
+ xchg edx, eax ; 66 92 ; 0xf1752
+ db 08bh, 0cfh
+ ; mov cx, di ; 8b cf ; 0xf1754
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xf1756
+ db 08bh, 0ceh
+ ; mov cx, si ; 8b ce ; 0xf175a
+ wrmsr ; 0f 30 ; 0xf175c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf175e post.c:185
+ pop di ; 5f ; 0xf1761
+ pop si ; 5e ; 0xf1762
+ pop bp ; 5d ; 0xf1763
+ retn ; c3 ; 0xf1764
+ ; disGetNextSymbol 0xf1765 LB 0x9be7 -> off=0x0 cb=000000000000001d uValue=00000000000f0165 'inb_cmos'
+inb_cmos: ; 0xf1765 LB 0x1d
+ push bp ; 55 ; 0xf1765 bios.c:65
+ mov bp, sp ; 89 e5 ; 0xf1766
+ push dx ; 52 ; 0xf1768
+ mov AH, strict byte 070h ; b4 70 ; 0xf1769 bios.c:67
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf176b bios.c:69
+ jc short 01771h ; 72 02 ; 0xf176d
+ mov AH, strict byte 072h ; b4 72 ; 0xf176f bios.c:70
+ movzx dx, ah ; 0f b6 d4 ; 0xf1771 bios.c:71
+ out DX, AL ; ee ; 0xf1774
+ movzx dx, ah ; 0f b6 d4 ; 0xf1775 bios.c:72
+ inc dx ; 42 ; 0xf1778
+ in AL, DX ; ec ; 0xf1779
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf177a
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf177c bios.c:73
+ pop dx ; 5a ; 0xf177f
+ pop bp ; 5d ; 0xf1780
+ retn ; c3 ; 0xf1781
+ ; disGetNextSymbol 0xf1782 LB 0x9bca -> off=0x0 cb=000000000000001f uValue=00000000000f0182 'outb_cmos'
+outb_cmos: ; 0xf1782 LB 0x1f
+ push bp ; 55 ; 0xf1782 bios.c:75
+ mov bp, sp ; 89 e5 ; 0xf1783
+ push bx ; 53 ; 0xf1785
+ mov ah, dl ; 88 d4 ; 0xf1786
+ mov BL, strict byte 070h ; b3 70 ; 0xf1788 bios.c:77
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf178a bios.c:79
+ jc short 01790h ; 72 02 ; 0xf178c
+ mov BL, strict byte 072h ; b3 72 ; 0xf178e bios.c:80
+ movzx dx, bl ; 0f b6 d3 ; 0xf1790 bios.c:81
+ out DX, AL ; ee ; 0xf1793
+ movzx dx, bl ; 0f b6 d3 ; 0xf1794 bios.c:82
+ inc dx ; 42 ; 0xf1797
+ mov al, ah ; 88 e0 ; 0xf1798
+ out DX, AL ; ee ; 0xf179a
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf179b bios.c:83
+ pop bx ; 5b ; 0xf179e
+ pop bp ; 5d ; 0xf179f
+ retn ; c3 ; 0xf17a0
+ ; disGetNextSymbol 0xf17a1 LB 0x9bab -> off=0x0 cb=000000000000006a uValue=00000000000f01a1 'dummy_isr_function'
+dummy_isr_function: ; 0xf17a1 LB 0x6a
+ push bp ; 55 ; 0xf17a1 bios.c:85
+ mov bp, sp ; 89 e5 ; 0xf17a2
+ push ax ; 50 ; 0xf17a4
+ mov CH, strict byte 0ffh ; b5 ff ; 0xf17a5 bios.c:93
+ mov AL, strict byte 00bh ; b0 0b ; 0xf17a7 bios.c:95
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf17a9
+ out DX, AL ; ee ; 0xf17ac
+ in AL, DX ; ec ; 0xf17ad bios.c:96
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf17ae
+ mov bx, ax ; 89 c3 ; 0xf17b0
+ mov cl, al ; 88 c1 ; 0xf17b2
+ test al, al ; 84 c0 ; 0xf17b4 bios.c:97
+ je short 017fch ; 74 44 ; 0xf17b6
+ mov AL, strict byte 00bh ; b0 0b ; 0xf17b8 bios.c:98
+ mov dx, 000a0h ; ba a0 00 ; 0xf17ba
+ out DX, AL ; ee ; 0xf17bd
+ in AL, DX ; ec ; 0xf17be bios.c:99
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf17bf
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf17c1
+ cmp byte [bp-002h], 000h ; 80 7e fe 00 ; 0xf17c4 bios.c:100
+ je short 017e2h ; 74 18 ; 0xf17c8
+ mov dx, 000a1h ; ba a1 00 ; 0xf17ca bios.c:101
+ in AL, DX ; ec ; 0xf17cd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf17ce
+ movzx bx, al ; 0f b6 d8 ; 0xf17d0 bios.c:102
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf17d3
+ or ax, bx ; 09 d8 ; 0xf17d7
+ out DX, AL ; ee ; 0xf17d9
+ mov AL, strict byte 020h ; b0 20 ; 0xf17da bios.c:103
+ mov dx, 000a0h ; ba a0 00 ; 0xf17dc
+ out DX, AL ; ee ; 0xf17df
+ jmp short 017f4h ; eb 12 ; 0xf17e0 bios.c:104
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf17e2 bios.c:105
+ in AL, DX ; ec ; 0xf17e5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf17e6
+ and cl, 0fbh ; 80 e1 fb ; 0xf17e8 bios.c:106
+ movzx bx, al ; 0f b6 d8 ; 0xf17eb bios.c:107
+ movzx ax, cl ; 0f b6 c1 ; 0xf17ee
+ or ax, bx ; 09 d8 ; 0xf17f1
+ out DX, AL ; ee ; 0xf17f3
+ mov AL, strict byte 020h ; b0 20 ; 0xf17f4 bios.c:109
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf17f6
+ out DX, AL ; ee ; 0xf17f9
+ mov ch, cl ; 88 cd ; 0xf17fa bios.c:110
+ mov bx, strict word 0006bh ; bb 6b 00 ; 0xf17fc bios.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf17ff
+ mov es, ax ; 8e c0 ; 0xf1802
+ mov byte [es:bx], ch ; 26 88 2f ; 0xf1804
+ mov sp, bp ; 89 ec ; 0xf1807 bios.c:113
+ pop bp ; 5d ; 0xf1809
+ retn ; c3 ; 0xf180a
+ ; disGetNextSymbol 0xf180b LB 0x9b41 -> off=0x0 cb=0000000000000012 uValue=00000000000f020b 'nmi_handler_msg'
+nmi_handler_msg: ; 0xf180b LB 0x12
+ push bp ; 55 ; 0xf180b bios.c:116
+ mov bp, sp ; 89 e5 ; 0xf180c
+ push 000d2h ; 68 d2 00 ; 0xf180e bios.c:118
+ push strict byte 00007h ; 6a 07 ; 0xf1811
+ call 01a23h ; e8 0d 02 ; 0xf1813
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1816
+ mov sp, bp ; 89 ec ; 0xf1819 bios.c:119
+ pop bp ; 5d ; 0xf181b
+ retn ; c3 ; 0xf181c
+ ; disGetNextSymbol 0xf181d LB 0x9b2f -> off=0x0 cb=0000000000000012 uValue=00000000000f021d 'int18_panic_msg'
+int18_panic_msg: ; 0xf181d LB 0x12
+ push bp ; 55 ; 0xf181d bios.c:121
+ mov bp, sp ; 89 e5 ; 0xf181e
+ push 000e6h ; 68 e6 00 ; 0xf1820 bios.c:123
+ push strict byte 00007h ; 6a 07 ; 0xf1823
+ call 01a23h ; e8 fb 01 ; 0xf1825
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1828
+ mov sp, bp ; 89 ec ; 0xf182b bios.c:124
+ pop bp ; 5d ; 0xf182d
+ retn ; c3 ; 0xf182e
+ ; disGetNextSymbol 0xf182f LB 0x9b1d -> off=0x0 cb=0000000000000020 uValue=00000000000f022f 'log_bios_start'
+log_bios_start: ; 0xf182f LB 0x20
+ push bp ; 55 ; 0xf182f bios.c:126
+ mov bp, sp ; 89 e5 ; 0xf1830
+ mov bx, 00f24h ; bb 24 0f ; 0xf1832 bios.c:131
+ mov cx, ds ; 8c d9 ; 0xf1835
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf1837
+ call 019e2h ; e8 a5 01 ; 0xf183a
+ push 00f12h ; 68 12 0f ; 0xf183d
+ push 000fbh ; 68 fb 00 ; 0xf1840
+ push strict byte 00004h ; 6a 04 ; 0xf1843
+ call 01a23h ; e8 db 01 ; 0xf1845
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf1848
+ mov sp, bp ; 89 ec ; 0xf184b bios.c:132
+ pop bp ; 5d ; 0xf184d
+ retn ; c3 ; 0xf184e
+ ; disGetNextSymbol 0xf184f LB 0x9afd -> off=0x0 cb=0000000000000027 uValue=00000000000f024f 'print_bios_banner'
+print_bios_banner: ; 0xf184f LB 0x27
+ push bp ; 55 ; 0xf184f bios.c:151
+ mov bp, sp ; 89 e5 ; 0xf1850
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf1852 bios.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1855
+ mov es, ax ; 8e c0 ; 0xf1858
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf185a
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf185d bios.c:53
+ cmp ax, 01234h ; 3d 34 12 ; 0xf1862 bios.c:157
+ jne short 0186fh ; 75 08 ; 0xf1865
+ mov AL, strict byte 003h ; b0 03 ; 0xf1867 bios.c:160
+ mov AH, strict byte 000h ; b4 00 ; 0xf1869
+ int 010h ; cd 10 ; 0xf186b
+ jmp short 01872h ; eb 03 ; 0xf186d bios.c:161
+ call 07addh ; e8 6b 62 ; 0xf186f bios.c:164
+ mov sp, bp ; 89 ec ; 0xf1872 bios.c:191
+ pop bp ; 5d ; 0xf1874
+ retn ; c3 ; 0xf1875
+ ; disGetNextSymbol 0xf1876 LB 0x9ad6 -> off=0x0 cb=000000000000003b uValue=00000000000f0276 'send'
+send: ; 0xf1876 LB 0x3b
+ push bp ; 55 ; 0xf1876 print.c:72
+ mov bp, sp ; 89 e5 ; 0xf1877
+ push bx ; 53 ; 0xf1879
+ push cx ; 51 ; 0xf187a
+ mov bx, ax ; 89 c3 ; 0xf187b
+ mov cl, dl ; 88 d1 ; 0xf187d
+ test AL, strict byte 008h ; a8 08 ; 0xf187f print.c:80
+ je short 01889h ; 74 06 ; 0xf1881
+ mov al, dl ; 88 d0 ; 0xf1883 print.c:81
+ mov dx, 00403h ; ba 03 04 ; 0xf1885
+ out DX, AL ; ee ; 0xf1888
+ test bl, 004h ; f6 c3 04 ; 0xf1889 print.c:82
+ je short 01894h ; 74 06 ; 0xf188c
+ mov al, cl ; 88 c8 ; 0xf188e print.c:83
+ mov dx, 00504h ; ba 04 05 ; 0xf1890
+ out DX, AL ; ee ; 0xf1893
+ test bl, 002h ; f6 c3 02 ; 0xf1894 print.c:85
+ je short 018aah ; 74 11 ; 0xf1897
+ cmp cl, 00ah ; 80 f9 0a ; 0xf1899 print.c:86
+ jne short 018a4h ; 75 06 ; 0xf189c
+ mov AL, strict byte 00dh ; b0 0d ; 0xf189e print.c:87
+ mov AH, strict byte 00eh ; b4 0e ; 0xf18a0
+ int 010h ; cd 10 ; 0xf18a2
+ mov al, cl ; 88 c8 ; 0xf18a4 print.c:88
+ mov AH, strict byte 00eh ; b4 0e ; 0xf18a6
+ int 010h ; cd 10 ; 0xf18a8
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18aa print.c:90
+ pop cx ; 59 ; 0xf18ad
+ pop bx ; 5b ; 0xf18ae
+ pop bp ; 5d ; 0xf18af
+ retn ; c3 ; 0xf18b0
+ ; disGetNextSymbol 0xf18b1 LB 0x9a9b -> off=0x0 cb=000000000000005f uValue=00000000000f02b1 'put_int'
+put_int: ; 0xf18b1 LB 0x5f
+ push bp ; 55 ; 0xf18b1 print.c:92
+ mov bp, sp ; 89 e5 ; 0xf18b2
+ push si ; 56 ; 0xf18b4
+ push di ; 57 ; 0xf18b5
+ push ax ; 50 ; 0xf18b6
+ push ax ; 50 ; 0xf18b7
+ mov si, ax ; 89 c6 ; 0xf18b8
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf18ba
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf18bd print.c:94
+ mov ax, dx ; 89 d0 ; 0xf18c0
+ cwd ; 99 ; 0xf18c2
+ idiv di ; f7 ff ; 0xf18c3
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf18c5
+ test ax, ax ; 85 c0 ; 0xf18c8 print.c:95
+ je short 018d6h ; 74 0a ; 0xf18ca
+ dec bx ; 4b ; 0xf18cc print.c:96
+ mov dx, ax ; 89 c2 ; 0xf18cd
+ mov ax, si ; 89 f0 ; 0xf18cf
+ call 018b1h ; e8 dd ff ; 0xf18d1
+ jmp short 018f1h ; eb 1b ; 0xf18d4 print.c:97
+ dec bx ; 4b ; 0xf18d6 print.c:98
+ test bx, bx ; 85 db ; 0xf18d7
+ jle short 018e5h ; 7e 0a ; 0xf18d9
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf18db print.c:99
+ mov ax, si ; 89 f0 ; 0xf18de
+ call 01876h ; e8 93 ff ; 0xf18e0
+ jmp short 018d6h ; eb f1 ; 0xf18e3
+ test cx, cx ; 85 c9 ; 0xf18e5 print.c:100
+ je short 018f1h ; 74 08 ; 0xf18e7
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18e9 print.c:101
+ mov ax, si ; 89 f0 ; 0xf18ec
+ call 01876h ; e8 85 ff ; 0xf18ee
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf18f1 print.c:103
+ mov DL, strict byte 00ah ; b2 0a ; 0xf18f4
+ mul dl ; f6 e2 ; 0xf18f6
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf18f8
+ sub dl, al ; 28 c2 ; 0xf18fb
+ mov al, dl ; 88 d0 ; 0xf18fd
+ add AL, strict byte 030h ; 04 30 ; 0xf18ff
+ movzx dx, al ; 0f b6 d0 ; 0xf1901
+ mov ax, si ; 89 f0 ; 0xf1904
+ call 01876h ; e8 6d ff ; 0xf1906
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1909 print.c:104
+ pop di ; 5f ; 0xf190c
+ pop si ; 5e ; 0xf190d
+ pop bp ; 5d ; 0xf190e
+ retn ; c3 ; 0xf190f
+ ; disGetNextSymbol 0xf1910 LB 0x9a3c -> off=0x0 cb=0000000000000060 uValue=00000000000f0310 'put_uint'
+put_uint: ; 0xf1910 LB 0x60
+ push bp ; 55 ; 0xf1910 print.c:106
+ mov bp, sp ; 89 e5 ; 0xf1911
+ push si ; 56 ; 0xf1913
+ push di ; 57 ; 0xf1914
+ push ax ; 50 ; 0xf1915
+ push ax ; 50 ; 0xf1916
+ mov si, ax ; 89 c6 ; 0xf1917
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf1919
+ mov ax, dx ; 89 d0 ; 0xf191c print.c:108
+ xor dx, dx ; 31 d2 ; 0xf191e
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf1920
+ div di ; f7 f7 ; 0xf1923
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf1925
+ test ax, ax ; 85 c0 ; 0xf1928 print.c:109
+ je short 01936h ; 74 0a ; 0xf192a
+ dec bx ; 4b ; 0xf192c print.c:110
+ mov dx, ax ; 89 c2 ; 0xf192d
+ mov ax, si ; 89 f0 ; 0xf192f
+ call 01910h ; e8 dc ff ; 0xf1931
+ jmp short 01951h ; eb 1b ; 0xf1934 print.c:111
+ dec bx ; 4b ; 0xf1936 print.c:112
+ test bx, bx ; 85 db ; 0xf1937
+ jle short 01945h ; 7e 0a ; 0xf1939
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf193b print.c:113
+ mov ax, si ; 89 f0 ; 0xf193e
+ call 01876h ; e8 33 ff ; 0xf1940
+ jmp short 01936h ; eb f1 ; 0xf1943
+ test cx, cx ; 85 c9 ; 0xf1945 print.c:114
+ je short 01951h ; 74 08 ; 0xf1947
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1949 print.c:115
+ mov ax, si ; 89 f0 ; 0xf194c
+ call 01876h ; e8 25 ff ; 0xf194e
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1951 print.c:117
+ mov DL, strict byte 00ah ; b2 0a ; 0xf1954
+ mul dl ; f6 e2 ; 0xf1956
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1958
+ sub dl, al ; 28 c2 ; 0xf195b
+ mov al, dl ; 88 d0 ; 0xf195d
+ add AL, strict byte 030h ; 04 30 ; 0xf195f
+ movzx dx, al ; 0f b6 d0 ; 0xf1961
+ mov ax, si ; 89 f0 ; 0xf1964
+ call 01876h ; e8 0d ff ; 0xf1966
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1969 print.c:118
+ pop di ; 5f ; 0xf196c
+ pop si ; 5e ; 0xf196d
+ pop bp ; 5d ; 0xf196e
+ retn ; c3 ; 0xf196f
+ ; disGetNextSymbol 0xf1970 LB 0x99dc -> off=0x0 cb=0000000000000072 uValue=00000000000f0370 'put_luint'
+put_luint: ; 0xf1970 LB 0x72
+ push bp ; 55 ; 0xf1970 print.c:120
+ mov bp, sp ; 89 e5 ; 0xf1971
+ push si ; 56 ; 0xf1973
+ push di ; 57 ; 0xf1974
+ push ax ; 50 ; 0xf1975
+ push ax ; 50 ; 0xf1976
+ mov si, ax ; 89 c6 ; 0xf1977
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf1979
+ mov di, dx ; 89 d7 ; 0xf197c
+ mov ax, bx ; 89 d8 ; 0xf197e print.c:122
+ mov dx, cx ; 89 ca ; 0xf1980
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf1982
+ xor cx, cx ; 31 c9 ; 0xf1985
+ call 0b250h ; e8 c6 98 ; 0xf1987
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf198a
+ mov cx, dx ; 89 d1 ; 0xf198d
+ mov dx, ax ; 89 c2 ; 0xf198f print.c:123
+ or dx, cx ; 09 ca ; 0xf1991
+ je short 019a4h ; 74 0f ; 0xf1993
+ push word [bp+004h] ; ff 76 04 ; 0xf1995 print.c:124
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf1998
+ mov bx, ax ; 89 c3 ; 0xf199b
+ mov ax, si ; 89 f0 ; 0xf199d
+ call 01970h ; e8 ce ff ; 0xf199f
+ jmp short 019c1h ; eb 1d ; 0xf19a2 print.c:125
+ dec di ; 4f ; 0xf19a4 print.c:126
+ test di, di ; 85 ff ; 0xf19a5
+ jle short 019b3h ; 7e 0a ; 0xf19a7
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf19a9 print.c:127
+ mov ax, si ; 89 f0 ; 0xf19ac
+ call 01876h ; e8 c5 fe ; 0xf19ae
+ jmp short 019a4h ; eb f1 ; 0xf19b1
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf19b3 print.c:128
+ je short 019c1h ; 74 08 ; 0xf19b7
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf19b9 print.c:129
+ mov ax, si ; 89 f0 ; 0xf19bc
+ call 01876h ; e8 b5 fe ; 0xf19be
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf19c1 print.c:131
+ mov DL, strict byte 00ah ; b2 0a ; 0xf19c4
+ mul dl ; f6 e2 ; 0xf19c6
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf19c8
+ sub dl, al ; 28 c2 ; 0xf19cb
+ mov al, dl ; 88 d0 ; 0xf19cd
+ add AL, strict byte 030h ; 04 30 ; 0xf19cf
+ movzx dx, al ; 0f b6 d0 ; 0xf19d1
+ mov ax, si ; 89 f0 ; 0xf19d4
+ call 01876h ; e8 9d fe ; 0xf19d6
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf19d9 print.c:132
+ pop di ; 5f ; 0xf19dc
+ pop si ; 5e ; 0xf19dd
+ pop bp ; 5d ; 0xf19de
+ retn 00002h ; c2 02 00 ; 0xf19df
+ ; disGetNextSymbol 0xf19e2 LB 0x996a -> off=0x0 cb=0000000000000021 uValue=00000000000f03e2 'put_str'
+put_str: ; 0xf19e2 LB 0x21
+ push bp ; 55 ; 0xf19e2 print.c:134
+ mov bp, sp ; 89 e5 ; 0xf19e3
+ push dx ; 52 ; 0xf19e5
+ push si ; 56 ; 0xf19e6
+ mov si, ax ; 89 c6 ; 0xf19e7
+ mov es, cx ; 8e c1 ; 0xf19e9 print.c:138
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf19eb
+ test dl, dl ; 84 d2 ; 0xf19ee
+ je short 019fch ; 74 0a ; 0xf19f0
+ xor dh, dh ; 30 f6 ; 0xf19f2 print.c:139
+ mov ax, si ; 89 f0 ; 0xf19f4
+ call 01876h ; e8 7d fe ; 0xf19f6
+ inc bx ; 43 ; 0xf19f9 print.c:140
+ jmp short 019e9h ; eb ed ; 0xf19fa print.c:141
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf19fc print.c:142
+ pop si ; 5e ; 0xf19ff
+ pop dx ; 5a ; 0xf1a00
+ pop bp ; 5d ; 0xf1a01
+ retn ; c3 ; 0xf1a02
+ ; disGetNextSymbol 0xf1a03 LB 0x9949 -> off=0x0 cb=0000000000000020 uValue=00000000000f0403 'put_str_near'
+put_str_near: ; 0xf1a03 LB 0x20
+ push bp ; 55 ; 0xf1a03 print.c:144
+ mov bp, sp ; 89 e5 ; 0xf1a04
+ push bx ; 53 ; 0xf1a06
+ push cx ; 51 ; 0xf1a07
+ mov cx, ax ; 89 c1 ; 0xf1a08
+ mov bx, dx ; 89 d3 ; 0xf1a0a
+ mov dl, byte [bx] ; 8a 17 ; 0xf1a0c print.c:148
+ test dl, dl ; 84 d2 ; 0xf1a0e
+ je short 01a1ch ; 74 0a ; 0xf1a10
+ xor dh, dh ; 30 f6 ; 0xf1a12 print.c:149
+ mov ax, cx ; 89 c8 ; 0xf1a14
+ call 01876h ; e8 5d fe ; 0xf1a16
+ inc bx ; 43 ; 0xf1a19 print.c:150
+ jmp short 01a0ch ; eb f0 ; 0xf1a1a print.c:151
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1a1c print.c:152
+ pop cx ; 59 ; 0xf1a1f
+ pop bx ; 5b ; 0xf1a20
+ pop bp ; 5d ; 0xf1a21
+ retn ; c3 ; 0xf1a22
+ ; disGetNextSymbol 0xf1a23 LB 0x9929 -> off=0x0 cb=000000000000033d uValue=00000000000f0423 'bios_printf'
+bios_printf: ; 0xf1a23 LB 0x33d
+ push bp ; 55 ; 0xf1a23 print.c:165
+ mov bp, sp ; 89 e5 ; 0xf1a24
+ push bx ; 53 ; 0xf1a26
+ push cx ; 51 ; 0xf1a27
+ push dx ; 52 ; 0xf1a28
+ push si ; 56 ; 0xf1a29
+ push di ; 57 ; 0xf1a2a
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1a2b
+ lea bx, [bp+008h] ; 8d 5e 08 ; 0xf1a2e print.c:173
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf1a31
+ mov [bp-014h], ss ; 8c 56 ec ; 0xf1a34
+ xor bx, bx ; 31 db ; 0xf1a37 print.c:175
+ xor di, di ; 31 ff ; 0xf1a39 print.c:176
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a3b print.c:178
+ and ax, strict word 00007h ; 25 07 00 ; 0xf1a3e
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf1a41
+ jne short 01a51h ; 75 0b ; 0xf1a44
+ push 00100h ; 68 00 01 ; 0xf1a46 print.c:179
+ push strict byte 00002h ; 6a 02 ; 0xf1a49
+ call 01a23h ; e8 d5 ff ; 0xf1a4b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1a4e
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1a51 print.c:182
+ mov dl, byte [si] ; 8a 14 ; 0xf1a54
+ test dl, dl ; 84 d2 ; 0xf1a56
+ je near 01d44h ; 0f 84 e8 02 ; 0xf1a58
+ cmp dl, 025h ; 80 fa 25 ; 0xf1a5c print.c:183
+ jne short 01a69h ; 75 08 ; 0xf1a5f
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf1a61 print.c:184
+ xor di, di ; 31 ff ; 0xf1a64 print.c:185
+ jmp near 01d3eh ; e9 d5 02 ; 0xf1a66 print.c:187
+ test bx, bx ; 85 db ; 0xf1a69
+ je near 01d36h ; 0f 84 c7 02 ; 0xf1a6b
+ cmp dl, 030h ; 80 fa 30 ; 0xf1a6f print.c:188
+ jc short 01a87h ; 72 13 ; 0xf1a72
+ cmp dl, 039h ; 80 fa 39 ; 0xf1a74
+ jnbe short 01a87h ; 77 0e ; 0xf1a77
+ movzx ax, dl ; 0f b6 c2 ; 0xf1a79 print.c:189
+ imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf1a7c
+ sub ax, strict word 00030h ; 2d 30 00 ; 0xf1a7f
+ add di, ax ; 01 c7 ; 0xf1a82
+ jmp near 01d3eh ; e9 b7 02 ; 0xf1a84 print.c:191
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a87 print.c:192
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a8a
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a8d
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a91
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a94
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1a98
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a9b print.c:193
+ je short 01aa5h ; 74 05 ; 0xf1a9e
+ cmp dl, 058h ; 80 fa 58 ; 0xf1aa0
+ jne short 01afbh ; 75 56 ; 0xf1aa3
+ test di, di ; 85 ff ; 0xf1aa5 print.c:194
+ jne short 01aach ; 75 03 ; 0xf1aa7
+ mov di, strict word 00004h ; bf 04 00 ; 0xf1aa9 print.c:195
+ cmp dl, 078h ; 80 fa 78 ; 0xf1aac print.c:196
+ jne short 01ab8h ; 75 07 ; 0xf1aaf
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1ab1 print.c:197
+ jmp short 01abdh ; eb 05 ; 0xf1ab6 print.c:198
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1ab8 print.c:199
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1abd print.c:200
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1ac0
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1ac3
+ test ax, ax ; 85 c0 ; 0xf1ac6
+ jl near 01d32h ; 0f 8c 66 02 ; 0xf1ac8
+ mov cx, ax ; 89 c1 ; 0xf1acc print.c:201
+ sal cx, 002h ; c1 e1 02 ; 0xf1ace
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1ad1
+ shr ax, CL ; d3 e8 ; 0xf1ad4
+ xor ah, ah ; 30 e4 ; 0xf1ad6
+ and AL, strict byte 00fh ; 24 0f ; 0xf1ad8
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1ada print.c:202
+ jnbe short 01ae6h ; 77 07 ; 0xf1add
+ mov dx, ax ; 89 c2 ; 0xf1adf
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1ae1
+ jmp short 01aeeh ; eb 08 ; 0xf1ae4
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1ae6
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ae9
+ add dx, ax ; 01 c2 ; 0xf1aec
+ xor dh, dh ; 30 f6 ; 0xf1aee
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1af0
+ call 01876h ; e8 80 fd ; 0xf1af3
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1af6 print.c:203
+ jmp short 01ac3h ; eb c8 ; 0xf1af9
+ cmp dl, 075h ; 80 fa 75 ; 0xf1afb print.c:205
+ jne short 01b0fh ; 75 0f ; 0xf1afe
+ xor cx, cx ; 31 c9 ; 0xf1b00 print.c:206
+ mov bx, di ; 89 fb ; 0xf1b02
+ mov dx, ax ; 89 c2 ; 0xf1b04
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b06
+ call 01910h ; e8 04 fe ; 0xf1b09
+ jmp near 01d32h ; e9 23 02 ; 0xf1b0c print.c:208
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1b0f
+ jne near 01bf1h ; 0f 85 db 00 ; 0xf1b12
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1b16
+ cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1b19
+ jne near 01bf1h ; 0f 85 d1 00 ; 0xf1b1c
+ add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1b20 print.c:212
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1b24 print.c:213
+ mov dl, byte [bx] ; 8a 17 ; 0xf1b27
+ mov word [bp-026h], ax ; 89 46 da ; 0xf1b29 print.c:215
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b2c print.c:216
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b2f
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b32
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1b36
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b39
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf1b3d
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b40 print.c:217
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b43
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b46
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1b4a
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b4d
+ mov word [bp-022h], ax ; 89 46 de ; 0xf1b51
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b54 print.c:218
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b57
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b5a
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1b5e
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b61
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf1b65
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b68 print.c:219
+ je short 01b72h ; 74 05 ; 0xf1b6b
+ cmp dl, 058h ; 80 fa 58 ; 0xf1b6d
+ jne short 01be3h ; 75 71 ; 0xf1b70
+ test di, di ; 85 ff ; 0xf1b72 print.c:220
+ jne short 01b79h ; 75 03 ; 0xf1b74
+ mov di, strict word 00010h ; bf 10 00 ; 0xf1b76 print.c:221
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b79 print.c:222
+ jne short 01b85h ; 75 07 ; 0xf1b7c
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1b7e print.c:223
+ jmp short 01b8ah ; eb 05 ; 0xf1b83 print.c:224
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1b85 print.c:225
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1b8a print.c:226
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1b8d
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b90
+ test ax, ax ; 85 c0 ; 0xf1b93
+ jl near 01d32h ; 0f 8c 99 01 ; 0xf1b95
+ sal ax, 002h ; c1 e0 02 ; 0xf1b99 print.c:227
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1b9c
+ xor ax, ax ; 31 c0 ; 0xf1b9f
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1ba1
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1ba4
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf1ba7
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1baa
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf1bad
+ mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1bb0
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf1bb3
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1bb6
+ call 0b290h ; e8 d4 96 ; 0xf1bb9
+ mov ax, dx ; 89 d0 ; 0xf1bbc
+ xor ah, dh ; 30 f4 ; 0xf1bbe
+ and AL, strict byte 00fh ; 24 0f ; 0xf1bc0
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1bc2 print.c:228
+ jnbe short 01bceh ; 77 07 ; 0xf1bc5
+ mov dx, ax ; 89 c2 ; 0xf1bc7
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1bc9
+ jmp short 01bd6h ; eb 08 ; 0xf1bcc
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1bce
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1bd1
+ add dx, ax ; 01 c2 ; 0xf1bd4
+ xor dh, dh ; 30 f6 ; 0xf1bd6
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bd8
+ call 01876h ; e8 98 fc ; 0xf1bdb
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1bde print.c:229
+ jmp short 01b90h ; eb ad ; 0xf1be1
+ push 00108h ; 68 08 01 ; 0xf1be3 print.c:231
+ push strict byte 00007h ; 6a 07 ; 0xf1be6
+ call 01a23h ; e8 38 fe ; 0xf1be8
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1beb
+ jmp near 01d32h ; e9 41 01 ; 0xf1bee print.c:234
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf1bf1
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1bf4
+ jne near 01cbah ; 0f 85 bf 00 ; 0xf1bf7
+ inc word [bp+006h] ; ff 46 06 ; 0xf1bfb print.c:235
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1bfe print.c:236
+ mov dl, byte [si] ; 8a 14 ; 0xf1c01
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1c03 print.c:237
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c06
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1c09
+ les si, [bp-016h] ; c4 76 ea ; 0xf1c0d
+ mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1c10
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1c14
+ cmp dl, 064h ; 80 fa 64 ; 0xf1c17 print.c:238
+ jne short 01c49h ; 75 2d ; 0xf1c1a
+ test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1c1c print.c:239
+ je short 01c37h ; 74 15 ; 0xf1c20
+ push strict byte 00001h ; 6a 01 ; 0xf1c22 print.c:240
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1c24
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1c27
+ neg cx ; f7 d9 ; 0xf1c2a
+ neg ax ; f7 d8 ; 0xf1c2c
+ sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1c2e
+ mov dx, bx ; 89 da ; 0xf1c31
+ mov bx, ax ; 89 c3 ; 0xf1c33
+ jmp short 01c40h ; eb 09 ; 0xf1c35 print.c:241
+ push strict byte 00000h ; 6a 00 ; 0xf1c37 print.c:242
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1c39
+ mov dx, di ; 89 fa ; 0xf1c3c
+ mov cx, ax ; 89 c1 ; 0xf1c3e
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c40
+ call 01970h ; e8 2a fd ; 0xf1c43
+ jmp near 01d32h ; e9 e9 00 ; 0xf1c46 print.c:244
+ cmp dl, 075h ; 80 fa 75 ; 0xf1c49
+ jne short 01c50h ; 75 02 ; 0xf1c4c
+ jmp short 01c37h ; eb e7 ; 0xf1c4e
+ cmp dl, 078h ; 80 fa 78 ; 0xf1c50 print.c:247
+ je short 01c5ch ; 74 07 ; 0xf1c53
+ cmp dl, 058h ; 80 fa 58 ; 0xf1c55
+ jne near 01d32h ; 0f 85 d6 00 ; 0xf1c58
+ test di, di ; 85 ff ; 0xf1c5c print.c:249
+ jne short 01c63h ; 75 03 ; 0xf1c5e
+ mov di, strict word 00008h ; bf 08 00 ; 0xf1c60 print.c:250
+ cmp dl, 078h ; 80 fa 78 ; 0xf1c63 print.c:251
+ jne short 01c6fh ; 75 07 ; 0xf1c66
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1c68 print.c:252
+ jmp short 01c74h ; eb 05 ; 0xf1c6d print.c:253
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1c6f print.c:254
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1c74 print.c:255
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1c77
+ cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf1c7a
+ jl near 01d32h ; 0f 8c b0 00 ; 0xf1c7e
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1c82 print.c:256
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf1c85
+ sal cx, 002h ; c1 e1 02 ; 0xf1c88
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1c8b
+ jcxz 01c96h ; e3 06 ; 0xf1c8e
+ shr dx, 1 ; d1 ea ; 0xf1c90
+ rcr ax, 1 ; d1 d8 ; 0xf1c92
+ loop 01c90h ; e2 fa ; 0xf1c94
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf1c96
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1c99 print.c:257
+ jnbe short 01ca5h ; 77 07 ; 0xf1c9c
+ mov dx, ax ; 89 c2 ; 0xf1c9e
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1ca0
+ jmp short 01cadh ; eb 08 ; 0xf1ca3
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1ca5
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ca8
+ add dx, ax ; 01 c2 ; 0xf1cab
+ xor dh, dh ; 30 f6 ; 0xf1cad
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1caf
+ call 01876h ; e8 c1 fb ; 0xf1cb2
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1cb5 print.c:258
+ jmp short 01c7ah ; eb c0 ; 0xf1cb8
+ cmp dl, 064h ; 80 fa 64 ; 0xf1cba print.c:261
+ jne short 01cdeh ; 75 1f ; 0xf1cbd
+ test byte [bp-011h], 080h ; f6 46 ef 80 ; 0xf1cbf print.c:262
+ je short 01ccfh ; 74 0a ; 0xf1cc3
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1cc5 print.c:263
+ neg dx ; f7 da ; 0xf1cc8
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf1cca
+ jmp short 01cd6h ; eb 07 ; 0xf1ccd print.c:264
+ xor cx, cx ; 31 c9 ; 0xf1ccf print.c:265
+ mov bx, di ; 89 fb ; 0xf1cd1
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1cd3
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1cd6
+ call 018b1h ; e8 d5 fb ; 0xf1cd9
+ jmp short 01d32h ; eb 54 ; 0xf1cdc print.c:267
+ cmp dl, 073h ; 80 fa 73 ; 0xf1cde
+ jne short 01cf0h ; 75 0d ; 0xf1ce1
+ mov cx, ds ; 8c d9 ; 0xf1ce3 print.c:268
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1ce5
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1ce8
+ call 019e2h ; e8 f4 fc ; 0xf1ceb
+ jmp short 01d32h ; eb 42 ; 0xf1cee print.c:270
+ cmp dl, 053h ; 80 fa 53 ; 0xf1cf0
+ jne short 01d16h ; 75 21 ; 0xf1cf3
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1cf5 print.c:271
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1cf8
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1cfb print.c:272
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1cfe
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1d01
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1d05
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1d08
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1d0c
+ mov bx, ax ; 89 c3 ; 0xf1d0f print.c:273
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1d11
+ jmp short 01ce8h ; eb d2 ; 0xf1d14
+ cmp dl, 063h ; 80 fa 63 ; 0xf1d16 print.c:275
+ jne short 01d27h ; 75 0c ; 0xf1d19
+ movzx dx, byte [bp-012h] ; 0f b6 56 ee ; 0xf1d1b print.c:276
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d1f
+ call 01876h ; e8 51 fb ; 0xf1d22
+ jmp short 01d32h ; eb 0b ; 0xf1d25 print.c:278
+ push 00129h ; 68 29 01 ; 0xf1d27 print.c:279
+ push strict byte 00007h ; 6a 07 ; 0xf1d2a
+ call 01a23h ; e8 f4 fc ; 0xf1d2c
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1d2f
+ xor bx, bx ; 31 db ; 0xf1d32 print.c:280
+ jmp short 01d3eh ; eb 08 ; 0xf1d34 print.c:283
+ xor dh, dh ; 30 f6 ; 0xf1d36 print.c:284
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d38
+ call 01876h ; e8 38 fb ; 0xf1d3b
+ inc word [bp+006h] ; ff 46 06 ; 0xf1d3e print.c:286
+ jmp near 01a51h ; e9 0d fd ; 0xf1d41 print.c:287
+ xor ax, ax ; 31 c0 ; 0xf1d44 print.c:288
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1d46
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1d49
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1d4c print.c:289
+ je short 01d56h ; 74 04 ; 0xf1d50
+ cli ; fa ; 0xf1d52 print.c:291
+ hlt ; f4 ; 0xf1d53 print.c:292
+ jmp short 01d53h ; eb fd ; 0xf1d54
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1d56 print.c:294
+ pop di ; 5f ; 0xf1d59
+ pop si ; 5e ; 0xf1d5a
+ pop dx ; 5a ; 0xf1d5b
+ pop cx ; 59 ; 0xf1d5c
+ pop bx ; 5b ; 0xf1d5d
+ pop bp ; 5d ; 0xf1d5e
+ retn ; c3 ; 0xf1d5f
+ ; disGetNextSymbol 0xf1d60 LB 0x95ec -> off=0x0 cb=00000000000000cc uValue=00000000000f0760 'ata_init'
+ata_init: ; 0xf1d60 LB 0xcc
+ push si ; 56 ; 0xf1d60 ata.c:99
+ push bp ; 55 ; 0xf1d61
+ mov bp, sp ; 89 e5 ; 0xf1d62
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d64 ata.c:48
+ mov si, strict word 00040h ; be 40 00 ; 0xf1d67
+ mov es, si ; 8e c6 ; 0xf1d6a
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf1d6c
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf1d6f ata.c:49
+ mov dx, bx ; 89 da ; 0xf1d72
+ xor al, al ; 30 c0 ; 0xf1d74 ata.c:107
+ jmp short 01d7ch ; eb 04 ; 0xf1d76
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf1d78
+ jnc short 01da0h ; 73 24 ; 0xf1d7a
+ movzx bx, al ; 0f b6 d8 ; 0xf1d7c ata.c:108
+ imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf1d7f
+ mov es, dx ; 8e c2 ; 0xf1d82
+ add bx, si ; 01 f3 ; 0xf1d84
+ mov byte [es:bx+0027ch], 000h ; 26 c6 87 7c 02 00 ; 0xf1d86
+ db 066h, 026h, 0c7h, 087h, 07eh, 002h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+0027eh], strict dword 000000000h ; 66 26 c7 87 7e 02 00 00 00 00; 0xf1d8c ata.c:109
+ mov byte [es:bx+0027dh], 000h ; 26 c6 87 7d 02 00 ; 0xf1d96 ata.c:111
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1d9c ata.c:112
+ jmp short 01d78h ; eb d8 ; 0xf1d9e
+ xor al, al ; 30 c0 ; 0xf1da0 ata.c:115
+ jmp short 01da8h ; eb 04 ; 0xf1da2
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf1da4
+ jnc short 01dfch ; 73 54 ; 0xf1da6
+ movzx bx, al ; 0f b6 d8 ; 0xf1da8 ata.c:116
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1dab
+ mov es, dx ; 8e c2 ; 0xf1dae
+ add bx, si ; 01 f3 ; 0xf1db0
+ db 066h, 026h, 0c7h, 047h, 022h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+022h], strict dword 000000000h ; 66 26 c7 47 22 00 00 00 00; 0xf1db2
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf1dbb ata.c:120
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf1dc0 ata.c:121
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf1dc6 ata.c:122
+ 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; 0xf1dcb ata.c:123
+ 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; 0xf1dd4 ata.c:125
+ 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; 0xf1ddd ata.c:127
+ db 066h, 026h, 0c7h, 047h, 03ah, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+03ah], strict dword 000000000h ; 66 26 c7 47 3a 00 00 00 00; 0xf1de6 ata.c:129
+ 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; 0xf1def
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1df8 ata.c:130
+ jmp short 01da4h ; eb a8 ; 0xf1dfa
+ xor al, al ; 30 c0 ; 0xf1dfc ata.c:133
+ jmp short 01e04h ; eb 04 ; 0xf1dfe
+ cmp AL, strict byte 014h ; 3c 14 ; 0xf1e00
+ jnc short 01e1bh ; 73 17 ; 0xf1e02
+ movzx bx, al ; 0f b6 d8 ; 0xf1e04 ata.c:134
+ mov es, dx ; 8e c2 ; 0xf1e07
+ add bx, si ; 01 f3 ; 0xf1e09
+ mov byte [es:bx+00253h], 014h ; 26 c6 87 53 02 14 ; 0xf1e0b
+ mov byte [es:bx+00268h], 014h ; 26 c6 87 68 02 14 ; 0xf1e11 ata.c:135
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1e17 ata.c:136
+ jmp short 01e00h ; eb e5 ; 0xf1e19
+ mov es, dx ; 8e c2 ; 0xf1e1b ata.c:138
+ mov byte [es:si+00252h], 000h ; 26 c6 84 52 02 00 ; 0xf1e1d
+ mov byte [es:si+00267h], 000h ; 26 c6 84 67 02 00 ; 0xf1e23 ata.c:139
+ pop bp ; 5d ; 0xf1e29 ata.c:140
+ pop si ; 5e ; 0xf1e2a
+ retn ; c3 ; 0xf1e2b
+ ; disGetNextSymbol 0xf1e2c LB 0x9520 -> off=0x0 cb=00000000000000dd uValue=00000000000f082c 'ata_reset'
+ata_reset: ; 0xf1e2c LB 0xdd
+ push bp ; 55 ; 0xf1e2c ata.c:148
+ mov bp, sp ; 89 e5 ; 0xf1e2d
+ push bx ; 53 ; 0xf1e2f
+ push cx ; 51 ; 0xf1e30
+ push dx ; 52 ; 0xf1e31
+ push si ; 56 ; 0xf1e32
+ push di ; 57 ; 0xf1e33
+ push ax ; 50 ; 0xf1e34
+ push ax ; 50 ; 0xf1e35
+ push ax ; 50 ; 0xf1e36
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1e37 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1e3a
+ mov es, ax ; 8e c0 ; 0xf1e3d
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1e3f
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf1e42 ata.c:49
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e45
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1e48 ata.c:157
+ shr dx, 1 ; d1 ea ; 0xf1e4b
+ mov dh, byte [bp-010h] ; 8a 76 f0 ; 0xf1e4d ata.c:158
+ and dh, 001h ; 80 e6 01 ; 0xf1e50
+ mov byte [bp-00ch], dh ; 88 76 f4 ; 0xf1e53
+ xor dh, dh ; 30 f6 ; 0xf1e56 ata.c:160
+ imul bx, dx, strict byte 00006h ; 6b da 06 ; 0xf1e58
+ mov es, ax ; 8e c0 ; 0xf1e5b
+ add bx, di ; 01 fb ; 0xf1e5d
+ mov cx, word [es:bx+0027eh] ; 26 8b 8f 7e 02 ; 0xf1e5f
+ mov si, word [es:bx+00280h] ; 26 8b b7 80 02 ; 0xf1e64 ata.c:161
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1e69 ata.c:166
+ mov AL, strict byte 00eh ; b0 0e ; 0xf1e6c
+ out DX, AL ; ee ; 0xf1e6e
+ mov bx, 000ffh ; bb ff 00 ; 0xf1e6f ata.c:169
+ dec bx ; 4b ; 0xf1e72 ata.c:170
+ test bx, bx ; 85 db ; 0xf1e73
+ jbe short 01e83h ; 76 0c ; 0xf1e75
+ mov dx, cx ; 89 ca ; 0xf1e77 ata.c:171
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e79
+ in AL, DX ; ec ; 0xf1e7c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e7d
+ test AL, strict byte 080h ; a8 80 ; 0xf1e7f ata.c:172
+ je short 01e72h ; 74 ef ; 0xf1e81
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1e83 ata.c:177
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1e86
+ out DX, AL ; ee ; 0xf1e88
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf1e89 ata.c:180
+ dec bx ; 4b ; 0xf1e8c ata.c:181
+ test bx, bx ; 85 db ; 0xf1e8d
+ jbe short 01ea7h ; 76 16 ; 0xf1e8f
+ mov dx, cx ; 89 ca ; 0xf1e91 ata.c:182
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e93
+ in AL, DX ; ec ; 0xf1e96
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e97
+ test AL, strict byte 080h ; a8 80 ; 0xf1e99 ata.c:183
+ je short 01ea7h ; 74 0a ; 0xf1e9b
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1e9d ata.c:185
+ dec ax ; 48 ; 0xf1ea0 ata.c:186
+ test ax, ax ; 85 c0 ; 0xf1ea1
+ jnbe short 01ea0h ; 77 fb ; 0xf1ea3
+ jmp short 01e8ch ; eb e5 ; 0xf1ea5 ata.c:189
+ imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c ; 0xf1ea7 ata.c:191
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf1eab
+ add bx, di ; 01 fb ; 0xf1eae
+ cmp byte [es:bx+022h], 000h ; 26 80 7f 22 00 ; 0xf1eb0
+ je short 01ef9h ; 74 42 ; 0xf1eb5
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1eb7 ata.c:194
+ je short 01ec2h ; 74 05 ; 0xf1ebb
+ mov ax, 000b0h ; b8 b0 00 ; 0xf1ebd
+ jmp short 01ec5h ; eb 03 ; 0xf1ec0
+ mov ax, 000a0h ; b8 a0 00 ; 0xf1ec2
+ mov dx, cx ; 89 ca ; 0xf1ec5
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1ec7
+ out DX, AL ; ee ; 0xf1eca
+ mov dx, cx ; 89 ca ; 0xf1ecb ata.c:195
+ inc dx ; 42 ; 0xf1ecd
+ inc dx ; 42 ; 0xf1ece
+ in AL, DX ; ec ; 0xf1ecf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1ed0
+ mov bx, ax ; 89 c3 ; 0xf1ed2
+ mov dx, cx ; 89 ca ; 0xf1ed4 ata.c:196
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1ed6
+ in AL, DX ; ec ; 0xf1ed9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1eda
+ cmp bl, 001h ; 80 fb 01 ; 0xf1edc ata.c:198
+ jne short 01ef9h ; 75 18 ; 0xf1edf
+ cmp al, bl ; 38 d8 ; 0xf1ee1
+ jne short 01ef9h ; 75 14 ; 0xf1ee3
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf1ee5 ata.c:200
+ dec bx ; 4b ; 0xf1ee8 ata.c:201
+ test bx, bx ; 85 db ; 0xf1ee9
+ jbe short 01ef9h ; 76 0c ; 0xf1eeb
+ mov dx, cx ; 89 ca ; 0xf1eed ata.c:202
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1eef
+ in AL, DX ; ec ; 0xf1ef2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1ef3
+ test AL, strict byte 040h ; a8 40 ; 0xf1ef5 ata.c:203
+ je short 01ee8h ; 74 ef ; 0xf1ef7
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1ef9 ata.c:210
+ mov AL, strict byte 008h ; b0 08 ; 0xf1efc
+ out DX, AL ; ee ; 0xf1efe
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1eff ata.c:211
+ pop di ; 5f ; 0xf1f02
+ pop si ; 5e ; 0xf1f03
+ pop dx ; 5a ; 0xf1f04
+ pop cx ; 59 ; 0xf1f05
+ pop bx ; 5b ; 0xf1f06
+ pop bp ; 5d ; 0xf1f07
+ retn ; c3 ; 0xf1f08
+ ; disGetNextSymbol 0xf1f09 LB 0x9443 -> off=0x0 cb=00000000000002e2 uValue=00000000000f0909 'ata_cmd_data_in'
+ata_cmd_data_in: ; 0xf1f09 LB 0x2e2
+ push bp ; 55 ; 0xf1f09 ata.c:225
+ mov bp, sp ; 89 e5 ; 0xf1f0a
+ push si ; 56 ; 0xf1f0c
+ push di ; 57 ; 0xf1f0d
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf1f0e
+ push ax ; 50 ; 0xf1f11
+ push dx ; 52 ; 0xf1f12
+ push bx ; 53 ; 0xf1f13
+ push cx ; 51 ; 0xf1f14
+ mov es, dx ; 8e c2 ; 0xf1f15 ata.c:235
+ mov bx, ax ; 89 c3 ; 0xf1f17
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1f19
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf1f1d
+ movzx bx, al ; 0f b6 d8 ; 0xf1f20 ata.c:237
+ mov ax, bx ; 89 d8 ; 0xf1f23
+ cwd ; 99 ; 0xf1f25
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf1f26
+ sar ax, 1 ; d1 f8 ; 0xf1f28
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf1f2a
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f2d
+ add di, ax ; 01 c7 ; 0xf1f30
+ mov ax, word [es:di+0027eh] ; 26 8b 85 7e 02 ; 0xf1f32
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1f37
+ mov ax, word [es:di+00280h] ; 26 8b 85 80 02 ; 0xf1f3a ata.c:238
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1f3f
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1f42 ata.c:239
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f45
+ add di, bx ; 01 df ; 0xf1f48
+ mov al, byte [es:di+026h] ; 26 8a 45 26 ; 0xf1f4a
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf1f4e
+ mov ax, word [es:di+028h] ; 26 8b 45 28 ; 0xf1f51 ata.c:240
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1f55
+ test ax, ax ; 85 c0 ; 0xf1f58 ata.c:241
+ jne short 01f70h ; 75 14 ; 0xf1f5a
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf1f5c ata.c:243
+ jne short 01f69h ; 75 07 ; 0xf1f60
+ mov word [bp-00eh], 04000h ; c7 46 f2 00 40 ; 0xf1f62 ata.c:244
+ jmp short 01f7fh ; eb 16 ; 0xf1f67 ata.c:245
+ mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1f69 ata.c:247
+ jmp short 01f7fh ; eb 0f ; 0xf1f6e ata.c:248
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf1f70 ata.c:250
+ jne short 01f7ch ; 75 06 ; 0xf1f74
+ shr word [bp-00eh], 002h ; c1 6e f2 02 ; 0xf1f76 ata.c:251
+ jmp short 01f7fh ; eb 03 ; 0xf1f7a ata.c:252
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1f7c ata.c:254
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1f7f ata.c:257
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1f82
+ in AL, DX ; ec ; 0xf1f85
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1f86
+ test AL, strict byte 080h ; a8 80 ; 0xf1f88 ata.c:258
+ je short 01f9bh ; 74 0f ; 0xf1f8a
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1f8c ata.c:262
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1f8f
+ mov AL, strict byte 008h ; b0 08 ; 0xf1f92
+ out DX, AL ; ee ; 0xf1f94
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf1f95 ata.c:263
+ jmp near 021e2h ; e9 47 02 ; 0xf1f98
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf1f9b ata.c:266
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f9e
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1fa1
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf1fa5
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1fa8
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1fac
+ mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1faf ata.c:267
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1fb3
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1fb6 ata.c:268
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1fba
+ mov bl, byte [es:bx+014h] ; 26 8a 5f 14 ; 0xf1fbd ata.c:269
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1fc1 ata.c:272
+ test al, al ; 84 c0 ; 0xf1fc4
+ jne near 020adh ; 0f 85 e3 00 ; 0xf1fc6
+ xor bx, bx ; 31 db ; 0xf1fca ata.c:273
+ xor dx, dx ; 31 d2 ; 0xf1fcc
+ xor ah, ah ; 30 e4 ; 0xf1fce
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1fd0
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf1fd3
+ mov cx, word [es:si] ; 26 8b 0c ; 0xf1fd6
+ add cx, word [bp-01eh] ; 03 4e e2 ; 0xf1fd9
+ adc bx, word [es:si+002h] ; 26 13 5c 02 ; 0xf1fdc
+ adc dx, word [es:si+004h] ; 26 13 54 04 ; 0xf1fe0
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf1fe4
+ adc ax, word [bp-016h] ; 13 46 ea ; 0xf1fe8
+ test ax, ax ; 85 c0 ; 0xf1feb
+ jnbe short 01fffh ; 77 10 ; 0xf1fed
+ jne short 02063h ; 75 72 ; 0xf1fef
+ test dx, dx ; 85 d2 ; 0xf1ff1
+ jnbe short 01fffh ; 77 0a ; 0xf1ff3
+ jne short 02063h ; 75 6c ; 0xf1ff5
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf1ff7
+ jnbe short 01fffh ; 77 02 ; 0xf1ffb
+ jne short 02063h ; 75 64 ; 0xf1ffd
+ mov bx, si ; 89 f3 ; 0xf1fff ata.c:275
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf2001
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2005
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf2009
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf200d
+ mov si, strict word 00018h ; be 18 00 ; 0xf2010
+ call 0b290h ; e8 7a 92 ; 0xf2013
+ xor dh, dh ; 30 f6 ; 0xf2016
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf2018
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf201b ata.c:276
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf201e
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2022
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2026
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf2029
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf202d
+ mov si, strict word 00020h ; be 20 00 ; 0xf2030
+ call 0b290h ; e8 5a 92 ; 0xf2033
+ mov bx, dx ; 89 d3 ; 0xf2036
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2038 ata.c:277
+ xor al, al ; 30 c0 ; 0xf203b
+ shr ax, 008h ; c1 e8 08 ; 0xf203d
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2040
+ inc dx ; 42 ; 0xf2043
+ inc dx ; 42 ; 0xf2044
+ out DX, AL ; ee ; 0xf2045
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2046 ata.c:278
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2049
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf204c
+ out DX, AL ; ee ; 0xf204f
+ mov ax, bx ; 89 d8 ; 0xf2050 ata.c:279
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2052
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2055
+ out DX, AL ; ee ; 0xf2058
+ shr ax, 008h ; c1 e8 08 ; 0xf2059 ata.c:280
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf205c
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf205f
+ out DX, AL ; ee ; 0xf2062
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf2063 ata.c:284
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf2066
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf2069
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf206c
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf206f ata.c:285
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2073
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2077
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf207a
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf207e
+ mov si, strict word 00008h ; be 08 00 ; 0xf2081
+ call 0b290h ; e8 09 92 ; 0xf2084
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf2087
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf208a ata.c:286
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf208d
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2091
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2095
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf2098
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf209c
+ mov si, strict word 00018h ; be 18 00 ; 0xf209f
+ call 0b290h ; e8 eb 91 ; 0xf20a2
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf20a5
+ or dl, 040h ; 80 ca 40 ; 0xf20a8
+ mov bx, dx ; 89 d3 ; 0xf20ab
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf20ad ata.c:289
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20b0
+ mov AL, strict byte 00ah ; b0 0a ; 0xf20b3
+ out DX, AL ; ee ; 0xf20b5
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20b6 ata.c:290
+ inc dx ; 42 ; 0xf20b9
+ xor al, al ; 30 c0 ; 0xf20ba
+ out DX, AL ; ee ; 0xf20bc
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20bd ata.c:291
+ inc dx ; 42 ; 0xf20c0
+ inc dx ; 42 ; 0xf20c1
+ mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf20c2
+ out DX, AL ; ee ; 0xf20c5
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20c6 ata.c:292
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf20c9
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf20cc
+ out DX, AL ; ee ; 0xf20cf
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf20d0 ata.c:293
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20d3
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf20d6
+ out DX, AL ; ee ; 0xf20d9
+ shr ax, 008h ; c1 e8 08 ; 0xf20da ata.c:294
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20dd
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf20e0
+ out DX, AL ; ee ; 0xf20e3
+ test byte [bp-00ah], 001h ; f6 46 f6 01 ; 0xf20e4 ata.c:295
+ je short 020efh ; 74 05 ; 0xf20e8
+ mov ax, 000b0h ; b8 b0 00 ; 0xf20ea
+ jmp short 020f2h ; eb 03 ; 0xf20ed
+ mov ax, 000a0h ; b8 a0 00 ; 0xf20ef
+ movzx dx, bl ; 0f b6 d3 ; 0xf20f2
+ or ax, dx ; 09 d0 ; 0xf20f5
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20f7
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20fa
+ out DX, AL ; ee ; 0xf20fd
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20fe ata.c:296
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2101
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2104
+ out DX, AL ; ee ; 0xf2107
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf2108 ata.c:298
+ cmp ax, 000c4h ; 3d c4 00 ; 0xf210b
+ je short 02115h ; 74 05 ; 0xf210e
+ cmp ax, strict word 00029h ; 3d 29 00 ; 0xf2110
+ jne short 0211fh ; 75 0a ; 0xf2113
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2115 ata.c:299
+ mov word [bp-01eh], strict word 00001h ; c7 46 e2 01 00 ; 0xf2118 ata.c:300
+ jmp short 02122h ; eb 03 ; 0xf211d ata.c:301
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf211f ata.c:302
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2122 ata.c:306
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2125
+ in AL, DX ; ec ; 0xf2128
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2129
+ mov dl, al ; 88 c2 ; 0xf212b
+ test AL, strict byte 080h ; a8 80 ; 0xf212d ata.c:307
+ jne short 02122h ; 75 f1 ; 0xf212f
+ test AL, strict byte 001h ; a8 01 ; 0xf2131 ata.c:311
+ je short 02144h ; 74 0f ; 0xf2133
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf2135 ata.c:314
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2138
+ mov AL, strict byte 008h ; b0 08 ; 0xf213b
+ out DX, AL ; ee ; 0xf213d
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf213e ata.c:315
+ jmp near 021e2h ; e9 9e 00 ; 0xf2141
+ test dl, 008h ; f6 c2 08 ; 0xf2144 ata.c:316
+ jne short 02158h ; 75 0f ; 0xf2147
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf2149 ata.c:319
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf214c
+ mov AL, strict byte 008h ; b0 08 ; 0xf214f
+ out DX, AL ; ee ; 0xf2151
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf2152 ata.c:320
+ jmp near 021e2h ; e9 8a 00 ; 0xf2155
+ sti ; fb ; 0xf2158 ata.c:325
+ cmp di, 0f800h ; 81 ff 00 f8 ; 0xf2159 ata.c:330
+ jc short 0216ch ; 72 0d ; 0xf215d
+ sub di, 00800h ; 81 ef 00 08 ; 0xf215f ata.c:331
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2163
+ add ax, 00080h ; 05 80 00 ; 0xf2166
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2169
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf216c ata.c:334
+ jne short 02180h ; 75 0e ; 0xf2170
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2172 ata.c:335
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2175
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf2178
+ db 0f3h, 066h, 06dh
+ ; rep insd ; f3 66 6d ; 0xf217b
+ jmp short 0218bh ; eb 0b ; 0xf217e ata.c:336
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2180 ata.c:338
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2183
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf2186
+ rep insw ; f3 6d ; 0xf2189
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf218b ata.c:339
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf218e
+ add word [es:si+018h], bx ; 26 01 5c 18 ; 0xf2191
+ dec word [bp-01eh] ; ff 4e e2 ; 0xf2195 ata.c:340
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2198 ata.c:342
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf219b
+ in AL, DX ; ec ; 0xf219e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf219f
+ mov dl, al ; 88 c2 ; 0xf21a1
+ test AL, strict byte 080h ; a8 80 ; 0xf21a3 ata.c:343
+ jne short 02198h ; 75 f1 ; 0xf21a5
+ cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf21a7 ata.c:346
+ jne short 021c1h ; 75 14 ; 0xf21ab
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf21ad ata.c:347
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf21af
+ je short 021d7h ; 74 24 ; 0xf21b1
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21b3 ata.c:351
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf21b6
+ mov AL, strict byte 008h ; b0 08 ; 0xf21b9
+ out DX, AL ; ee ; 0xf21bb
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf21bc ata.c:352
+ jmp short 021e2h ; eb 21 ; 0xf21bf
+ mov al, dl ; 88 d0 ; 0xf21c1 ata.c:357
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf21c3
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf21c5
+ je short 02159h ; 74 90 ; 0xf21c7
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21c9 ata.c:361
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf21cc
+ mov AL, strict byte 008h ; b0 08 ; 0xf21cf
+ out DX, AL ; ee ; 0xf21d1
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf21d2 ata.c:362
+ jmp short 021e2h ; eb 0b ; 0xf21d5
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21d7 ata.c:368
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf21da
+ mov AL, strict byte 008h ; b0 08 ; 0xf21dd
+ out DX, AL ; ee ; 0xf21df
+ xor dx, dx ; 31 d2 ; 0xf21e0 ata.c:369
+ mov ax, dx ; 89 d0 ; 0xf21e2 ata.c:370
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf21e4
+ pop di ; 5f ; 0xf21e7
+ pop si ; 5e ; 0xf21e8
+ pop bp ; 5d ; 0xf21e9
+ retn ; c3 ; 0xf21ea
+ ; disGetNextSymbol 0xf21eb LB 0x9161 -> off=0x0 cb=0000000000000094 uValue=00000000000f0beb 'ata_signature'
+ata_signature: ; 0xf21eb LB 0x94
+ push bp ; 55 ; 0xf21eb ata.c:376
+ mov bp, sp ; 89 e5 ; 0xf21ec
+ push cx ; 51 ; 0xf21ee
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf21ef
+ mov cx, ax ; 89 c1 ; 0xf21f2
+ mov al, bl ; 88 d8 ; 0xf21f4
+ xor bx, bx ; 31 db ; 0xf21f6 ata.c:378
+ test al, al ; 84 c0 ; 0xf21f8 ata.c:386
+ je short 02201h ; 74 05 ; 0xf21fa
+ mov ax, 000b0h ; b8 b0 00 ; 0xf21fc
+ jmp short 02204h ; eb 03 ; 0xf21ff
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2201
+ mov dx, cx ; 89 ca ; 0xf2204
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2206
+ out DX, AL ; ee ; 0xf2209
+ mov dx, cx ; 89 ca ; 0xf220a ata.c:388
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf220c
+ in AL, DX ; ec ; 0xf220f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2210
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf2212
+ test AL, strict byte 080h ; a8 80 ; 0xf2215 ata.c:389
+ jne short 0220ah ; 75 f1 ; 0xf2217
+ mov dx, cx ; 89 ca ; 0xf2219 ata.c:397
+ inc dx ; 42 ; 0xf221b
+ inc dx ; 42 ; 0xf221c
+ in AL, DX ; ec ; 0xf221d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf221e
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2220
+ mov dx, cx ; 89 ca ; 0xf2223 ata.c:398
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2225
+ in AL, DX ; ec ; 0xf2228
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2229
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf222b ata.c:399
+ jne short 02277h ; 75 46 ; 0xf222f
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2231
+ jne short 02277h ; 75 42 ; 0xf2233
+ mov dx, cx ; 89 ca ; 0xf2235 ata.c:400
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2237
+ in AL, DX ; ec ; 0xf223a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf223b
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf223d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2240
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf2243
+ mov dx, cx ; 89 ca ; 0xf2246 ata.c:401
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2248
+ in AL, DX ; ec ; 0xf224b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf224c
+ mov dl, al ; 88 c2 ; 0xf224e
+ cmp byte [bp-008h], 014h ; 80 7e f8 14 ; 0xf2250 ata.c:408
+ jne short 0225fh ; 75 09 ; 0xf2254
+ cmp AL, strict byte 0ebh ; 3c eb ; 0xf2256
+ jne short 0225fh ; 75 05 ; 0xf2258
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf225a ata.c:409
+ jmp short 02277h ; eb 18 ; 0xf225d ata.c:411
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf225f
+ jne short 02274h ; 75 0f ; 0xf2263
+ test dl, dl ; 84 d2 ; 0xf2265
+ jne short 02274h ; 75 0b ; 0xf2267
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2269 ata.c:412
+ je short 02277h ; 74 08 ; 0xf226d
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf226f ata.c:413
+ jmp short 02277h ; eb 03 ; 0xf2272 ata.c:418
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2274 ata.c:419
+ mov ax, bx ; 89 d8 ; 0xf2277 ata.c:426
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2279
+ pop cx ; 59 ; 0xf227c
+ pop bp ; 5d ; 0xf227d
+ retn ; c3 ; 0xf227e
+ ; disGetNextSymbol 0xf227f LB 0x90cd -> off=0x0 cb=000000000000062e uValue=00000000000f0c7f 'ata_detect'
+ata_detect: ; 0xf227f LB 0x62e
+ push bp ; 55 ; 0xf227f ata.c:428
+ mov bp, sp ; 89 e5 ; 0xf2280
+ push si ; 56 ; 0xf2282
+ push di ; 57 ; 0xf2283
+ sub sp, 0025eh ; 81 ec 5e 02 ; 0xf2284
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2288 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf228b
+ mov es, ax ; 8e c0 ; 0xf228e
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf2290
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf2293 ata.c:49
+ mov ax, 00101h ; b8 01 01 ; 0xf2296 ata.c:444
+ call 0b018h ; e8 7c 8d ; 0xf2299
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf229c ata.c:445
+ jne short 022bah ; 75 19 ; 0xf229f
+ mov bx, 00f24h ; bb 24 0f ; 0xf22a1 ata.c:446
+ mov cx, ds ; 8c d9 ; 0xf22a4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf22a6
+ call 019e2h ; e8 36 f7 ; 0xf22a9
+ push 00146h ; 68 46 01 ; 0xf22ac
+ push strict byte 00004h ; 6a 04 ; 0xf22af
+ call 01a23h ; e8 6f f7 ; 0xf22b1
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf22b4
+ jmp near 028a6h ; e9 ec 05 ; 0xf22b7 ata.c:447
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf22ba ata.c:451
+ mov es, [bp-032h] ; 8e 46 ce ; 0xf22bd
+ mov word [bp-028h], bx ; 89 5e d8 ; 0xf22c0
+ mov [bp-020h], es ; 8c 46 e0 ; 0xf22c3
+ mov byte [es:bx+0027ch], 000h ; 26 c6 87 7c 02 00 ; 0xf22c6 ata.c:454
+ db 066h, 026h, 0c7h, 087h, 07eh, 002h, 0f0h, 001h, 0f0h, 003h
+ ; mov dword [es:bx+0027eh], strict dword 003f001f0h ; 66 26 c7 87 7e 02 f0 01 f0 03; 0xf22cc ata.c:455
+ mov byte [es:bx+0027dh], 00eh ; 26 c6 87 7d 02 0e ; 0xf22d6 ata.c:457
+ mov byte [es:bx+00282h], 000h ; 26 c6 87 82 02 00 ; 0xf22dc ata.c:460
+ db 066h, 026h, 0c7h, 087h, 084h, 002h, 070h, 001h, 070h, 003h
+ ; mov dword [es:bx+00284h], strict dword 003700170h ; 66 26 c7 87 84 02 70 01 70 03; 0xf22e2 ata.c:461
+ mov byte [es:bx+00283h], 00fh ; 26 c6 87 83 02 0f ; 0xf22ec ata.c:463
+ mov byte [es:bx+00288h], 000h ; 26 c6 87 88 02 00 ; 0xf22f2 ata.c:466
+ db 066h, 026h, 0c7h, 087h, 08ah, 002h, 0e8h, 001h, 0e0h, 003h
+ ; mov dword [es:bx+0028ah], strict dword 003e001e8h ; 66 26 c7 87 8a 02 e8 01 e0 03; 0xf22f8 ata.c:467
+ mov byte [es:bx+00289h], 00ch ; 26 c6 87 89 02 0c ; 0xf2302 ata.c:469
+ mov byte [es:bx+0028eh], 000h ; 26 c6 87 8e 02 00 ; 0xf2308 ata.c:472
+ db 066h, 026h, 0c7h, 087h, 090h, 002h, 068h, 001h, 060h, 003h
+ ; mov dword [es:bx+00290h], strict dword 003600168h ; 66 26 c7 87 90 02 68 01 60 03; 0xf230e ata.c:473
+ mov byte [es:bx+0028fh], 00bh ; 26 c6 87 8f 02 0b ; 0xf2318 ata.c:475
+ xor al, al ; 30 c0 ; 0xf231e ata.c:482
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf2320
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf2323
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf2326 ata.c:484
+ jmp near 0283dh ; e9 11 05 ; 0xf2329
+ cmp byte [bp-024h], 000h ; 80 7e dc 00 ; 0xf232c ata.c:529
+ jne short 02390h ; 75 5e ; 0xf2330
+ mov dx, cx ; 89 ca ; 0xf2332 ata.c:530
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2334
+ mov AL, strict byte 00eh ; b0 0e ; 0xf2337
+ out DX, AL ; ee ; 0xf2339
+ mov bx, strict word 00020h ; bb 20 00 ; 0xf233a ata.c:536
+ dec bx ; 4b ; 0xf233d ata.c:537
+ test bx, bx ; 85 db ; 0xf233e
+ jbe short 0234ch ; 76 0a ; 0xf2340
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf2342 ata.c:538
+ in AL, DX ; ec ; 0xf2345
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2346
+ test AL, strict byte 080h ; a8 80 ; 0xf2348 ata.c:539
+ je short 0233dh ; 74 f1 ; 0xf234a
+ mov dx, cx ; 89 ca ; 0xf234c ata.c:543
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf234e
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2351
+ out DX, AL ; ee ; 0xf2353
+ movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf2354 ata.c:550
+ xor bx, bx ; 31 db ; 0xf2358
+ mov dx, di ; 89 fa ; 0xf235a
+ mov ax, si ; 89 f0 ; 0xf235c
+ call 021ebh ; e8 8a fe ; 0xf235e
+ movzx dx, byte [bp-012h] ; 0f b6 56 ee ; 0xf2361
+ mov word [bp-02ch], dx ; 89 56 d4 ; 0xf2365
+ imul bx, dx, strict byte 0001ch ; 6b da 1c ; 0xf2368
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf236b
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf236e
+ mov byte [es:bx+022h], al ; 26 88 47 22 ; 0xf2371
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2375 ata.c:551
+ mov dx, di ; 89 fa ; 0xf2378
+ mov ax, si ; 89 f0 ; 0xf237a
+ call 021ebh ; e8 6c fe ; 0xf237c
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf237f
+ inc bx ; 43 ; 0xf2382
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf2383
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf2386
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf2389
+ mov byte [es:bx+022h], al ; 26 88 47 22 ; 0xf238c
+ mov dx, cx ; 89 ca ; 0xf2390 ata.c:555
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2392
+ mov AL, strict byte 008h ; b0 08 ; 0xf2395
+ out DX, AL ; ee ; 0xf2397
+ movzx ax, byte [bp-012h] ; 0f b6 46 ee ; 0xf2398 ata.c:557
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf239c
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf239f
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf23a2
+ add bx, ax ; 01 c3 ; 0xf23a5
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf23a7
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf23ab
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf23ae ata.c:560
+ jne near 0260bh ; 0f 85 57 02 ; 0xf23b0
+ mov byte [es:bx+023h], 0ffh ; 26 c6 47 23 ff ; 0xf23b4 ata.c:568
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf23b9 ata.c:569
+ lea dx, [bp-00262h] ; 8d 96 9e fd ; 0xf23be ata.c:570
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf23c2
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf23c5
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf23c9
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf23cd ata.c:571
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf23d0
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf23d4 ata.c:573
+ mov bx, 000ech ; bb ec 00 ; 0xf23d7
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf23da
+ mov dx, es ; 8c c2 ; 0xf23dd
+ call 01f09h ; e8 27 fb ; 0xf23df
+ test ax, ax ; 85 c0 ; 0xf23e2
+ je short 023f1h ; 74 0b ; 0xf23e4
+ push 0016eh ; 68 6e 01 ; 0xf23e6 ata.c:574
+ push strict byte 00007h ; 6a 07 ; 0xf23e9
+ call 01a23h ; e8 35 f6 ; 0xf23eb
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf23ee
+ test byte [bp-00262h], 080h ; f6 86 9e fd 80 ; 0xf23f1 ata.c:576
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf23f6
+ xor ah, ah ; 30 e4 ; 0xf23f9
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf23fb
+ cmp byte [bp-00202h], 000h ; 80 be fe fd 00 ; 0xf23fe ata.c:578
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf2403
+ xor ah, ah ; 30 e4 ; 0xf2406
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf2408
+ mov word [bp-022h], 00200h ; c7 46 de 00 02 ; 0xf240b ata.c:582
+ mov ax, word [bp-00260h] ; 8b 86 a0 fd ; 0xf2410 ata.c:584
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2414
+ mov ax, word [bp-0025ch] ; 8b 86 a4 fd ; 0xf2417 ata.c:585
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf241b
+ mov ax, word [bp-00256h] ; 8b 86 aa fd ; 0xf241e ata.c:586
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2422
+ mov si, word [bp-001eah] ; 8b b6 16 fe ; 0xf2425 ata.c:588
+ mov ax, word [bp-001e8h] ; 8b 86 18 fe ; 0xf2429
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf242d
+ xor ax, ax ; 31 c0 ; 0xf2430
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf2432
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf2435
+ cmp word [bp-02ah], 00fffh ; 81 7e d6 ff 0f ; 0xf2438 ata.c:589
+ jne short 0245dh ; 75 1e ; 0xf243d
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf243f
+ jne short 0245dh ; 75 19 ; 0xf2442
+ mov ax, word [bp-00194h] ; 8b 86 6c fe ; 0xf2444 ata.c:590
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf2448
+ mov ax, word [bp-00196h] ; 8b 86 6a fe ; 0xf244b
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf244f
+ mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf2452
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf2456
+ mov si, word [bp-0019ah] ; 8b b6 66 fe ; 0xf2459
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf245d ata.c:591
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2460
+ jc short 02470h ; 72 0c ; 0xf2462
+ jbe short 02478h ; 76 12 ; 0xf2464
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2466
+ je short 02480h ; 74 16 ; 0xf2468
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf246a
+ je short 0247ch ; 74 0e ; 0xf246c
+ jmp short 024bdh ; eb 4d ; 0xf246e
+ test al, al ; 84 c0 ; 0xf2470
+ jne short 024bdh ; 75 49 ; 0xf2472
+ mov BL, strict byte 01eh ; b3 1e ; 0xf2474 ata.c:594
+ jmp short 02482h ; eb 0a ; 0xf2476 ata.c:595
+ mov BL, strict byte 026h ; b3 26 ; 0xf2478 ata.c:597
+ jmp short 02482h ; eb 06 ; 0xf247a ata.c:598
+ mov BL, strict byte 067h ; b3 67 ; 0xf247c ata.c:600
+ jmp short 02482h ; eb 02 ; 0xf247e ata.c:601
+ mov BL, strict byte 070h ; b3 70 ; 0xf2480 ata.c:603
+ mov al, bl ; 88 d8 ; 0xf2482 ata.c:610
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf2484
+ xor ah, ah ; 30 e4 ; 0xf2486
+ call 01765h ; e8 da f2 ; 0xf2488
+ xor ah, ah ; 30 e4 ; 0xf248b
+ mov dx, ax ; 89 c2 ; 0xf248d
+ sal dx, 008h ; c1 e2 08 ; 0xf248f
+ movzx ax, bl ; 0f b6 c3 ; 0xf2492
+ call 01765h ; e8 cd f2 ; 0xf2495
+ xor ah, ah ; 30 e4 ; 0xf2498
+ add ax, dx ; 01 d0 ; 0xf249a
+ mov word [bp-036h], ax ; 89 46 ca ; 0xf249c
+ mov al, bl ; 88 d8 ; 0xf249f ata.c:611
+ add AL, strict byte 002h ; 04 02 ; 0xf24a1
+ xor ah, ah ; 30 e4 ; 0xf24a3
+ call 01765h ; e8 bd f2 ; 0xf24a5
+ xor ah, ah ; 30 e4 ; 0xf24a8
+ mov word [bp-038h], ax ; 89 46 c8 ; 0xf24aa
+ mov al, bl ; 88 d8 ; 0xf24ad ata.c:612
+ add AL, strict byte 007h ; 04 07 ; 0xf24af
+ xor ah, ah ; 30 e4 ; 0xf24b1
+ call 01765h ; e8 af f2 ; 0xf24b3
+ xor ah, ah ; 30 e4 ; 0xf24b6
+ mov word [bp-034h], ax ; 89 46 cc ; 0xf24b8
+ jmp short 024cfh ; eb 12 ; 0xf24bb ata.c:614
+ push word [bp-030h] ; ff 76 d0 ; 0xf24bd ata.c:615
+ push word [bp-01ah] ; ff 76 e6 ; 0xf24c0
+ push word [bp-02ah] ; ff 76 d6 ; 0xf24c3
+ push si ; 56 ; 0xf24c6
+ mov dx, ss ; 8c d2 ; 0xf24c7
+ lea ax, [bp-038h] ; 8d 46 c8 ; 0xf24c9
+ call 059e2h ; e8 13 35 ; 0xf24cc
+ mov bx, 00f24h ; bb 24 0f ; 0xf24cf ata.c:618
+ mov cx, ds ; 8c d9 ; 0xf24d2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf24d4
+ call 019e2h ; e8 08 f5 ; 0xf24d7
+ mov ax, word [bp-034h] ; 8b 46 cc ; 0xf24da
+ push ax ; 50 ; 0xf24dd
+ mov ax, word [bp-038h] ; 8b 46 c8 ; 0xf24de
+ push ax ; 50 ; 0xf24e1
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf24e2
+ push ax ; 50 ; 0xf24e5
+ push word [bp-01ch] ; ff 76 e4 ; 0xf24e6
+ push word [bp-018h] ; ff 76 e8 ; 0xf24e9
+ push word [bp-01eh] ; ff 76 e2 ; 0xf24ec
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf24ef
+ push ax ; 50 ; 0xf24f3
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf24f4
+ push ax ; 50 ; 0xf24f8
+ push 00197h ; 68 97 01 ; 0xf24f9
+ push strict byte 00004h ; 6a 04 ; 0xf24fc
+ call 01a23h ; e8 22 f5 ; 0xf24fe
+ add sp, strict byte 00014h ; 83 c4 14 ; 0xf2501
+ movzx ax, byte [bp-012h] ; 0f b6 46 ee ; 0xf2504 ata.c:620
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2508
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf250b
+ mov di, word [bp-028h] ; 8b 7e d8 ; 0xf250e
+ add di, ax ; 01 c7 ; 0xf2511
+ mov byte [es:di+023h], 0ffh ; 26 c6 45 23 ff ; 0xf2513
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2518 ata.c:621
+ mov byte [es:di+024h], al ; 26 88 45 24 ; 0xf251b
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf251f ata.c:622
+ mov byte [es:di+026h], al ; 26 88 45 26 ; 0xf2522
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf2526 ata.c:623
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xf2529
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf252d ata.c:624
+ mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf2530
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2534 ata.c:625
+ mov word [es:di+032h], ax ; 26 89 45 32 ; 0xf2537
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf253b ata.c:626
+ mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf253e
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf2542 ata.c:627
+ mov word [es:di+03ch], ax ; 26 89 45 3c ; 0xf2545
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf2549
+ mov word [es:di+03ah], ax ; 26 89 45 3a ; 0xf254c
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf2550
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf2553
+ mov word [es:di+036h], si ; 26 89 75 36 ; 0xf2557
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf255b ata.c:628
+ push DS ; 1e ; 0xf255e
+ push SS ; 16 ; 0xf255f
+ pop DS ; 1f ; 0xf2560
+ lea si, [bp-038h] ; 8d 76 c8 ; 0xf2561
+ movsw ; a5 ; 0xf2564
+ movsw ; a5 ; 0xf2565
+ movsw ; a5 ; 0xf2566
+ pop DS ; 1f ; 0xf2567
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf2568 ata.c:629
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf256b
+ jnc near 025f6h ; 0f 83 85 00 ; 0xf256d
+ test al, al ; 84 c0 ; 0xf2571 ata.c:635
+ jne short 0257ah ; 75 05 ; 0xf2573
+ mov bx, strict word 0003dh ; bb 3d 00 ; 0xf2575 ata.c:636
+ jmp short 0257dh ; eb 03 ; 0xf2578 ata.c:637
+ mov bx, strict word 0004dh ; bb 4d 00 ; 0xf257a ata.c:638
+ mov dx, word [bp-032h] ; 8b 56 ce ; 0xf257d
+ movzx si, byte [bp-012h] ; 0f b6 76 ee ; 0xf2580 ata.c:650
+ imul si, si, strict byte 00005h ; 6b f6 05 ; 0xf2584
+ sal si, 002h ; c1 e6 02 ; 0xf2587
+ add si, 00104h ; 81 c6 04 01 ; 0xf258a
+ xor ax, ax ; 31 c0 ; 0xf258e
+ mov es, ax ; 8e c0 ; 0xf2590
+ mov word [es:si], bx ; 26 89 1c ; 0xf2592 ata.c:651
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf2595
+ mov es, dx ; 8e c2 ; 0xf2599 ata.c:657
+ mov word [es:bx+00ch], ax ; 26 89 47 0c ; 0xf259b
+ mov word [es:bx+005h], ax ; 26 89 47 05 ; 0xf259f
+ mov word [es:bx+007h], ax ; 26 89 47 07 ; 0xf25a3
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf25a7 ata.c:659
+ mov word [es:bx], ax ; 26 89 07 ; 0xf25aa
+ mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf25ad ata.c:660
+ mov byte [es:bx+002h], al ; 26 88 47 02 ; 0xf25b0
+ mov byte [es:bx+003h], 0a0h ; 26 c6 47 03 a0 ; 0xf25b4 ata.c:661
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf25b9 ata.c:662
+ mov byte [es:bx+004h], al ; 26 88 47 04 ; 0xf25bc
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf25c0 ata.c:663
+ mov word [es:bx+009h], ax ; 26 89 47 09 ; 0xf25c3
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf25c7 ata.c:664
+ mov byte [es:bx+00bh], al ; 26 88 47 0b ; 0xf25ca
+ mov al, byte [bp-034h] ; 8a 46 cc ; 0xf25ce ata.c:665
+ mov byte [es:bx+00eh], al ; 26 88 47 0e ; 0xf25d1
+ xor al, al ; 30 c0 ; 0xf25d5 ata.c:666
+ xor ah, ah ; 30 e4 ; 0xf25d7 ata.c:667
+ jmp short 025e0h ; eb 05 ; 0xf25d9
+ cmp ah, 00fh ; 80 fc 0f ; 0xf25db
+ jnc short 025eeh ; 73 0e ; 0xf25de
+ movzx si, ah ; 0f b6 f4 ; 0xf25e0 ata.c:668
+ mov es, dx ; 8e c2 ; 0xf25e3
+ add si, bx ; 01 de ; 0xf25e5
+ add al, byte [es:si] ; 26 02 04 ; 0xf25e7
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf25ea
+ jmp short 025dbh ; eb ed ; 0xf25ec
+ neg al ; f6 d8 ; 0xf25ee ata.c:669
+ mov es, dx ; 8e c2 ; 0xf25f0 ata.c:670
+ mov byte [es:bx+00fh], al ; 26 88 47 0f ; 0xf25f2
+ movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf25f6 ata.c:674
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf25fa
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf25fd
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf2600
+ mov byte [es:bx+00253h], al ; 26 88 87 53 02 ; 0xf2603
+ inc byte [bp-016h] ; fe 46 ea ; 0xf2608 ata.c:675
+ cmp byte [bp-008h], 003h ; 80 7e f8 03 ; 0xf260b ata.c:679
+ jne near 026abh ; 0f 85 98 00 ; 0xf260f
+ movzx bx, byte [bp-012h] ; 0f b6 5e ee ; 0xf2613 ata.c:684
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf2617
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf261a
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf261d
+ mov byte [es:bx+023h], 005h ; 26 c6 47 23 05 ; 0xf2620
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf2625 ata.c:685
+ lea dx, [bp-00262h] ; 8d 96 9e fd ; 0xf262a ata.c:686
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf262e
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf2631
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf2635
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf2639 ata.c:687
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf263c
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf2640 ata.c:689
+ mov bx, 000a1h ; bb a1 00 ; 0xf2643
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf2646
+ mov dx, es ; 8c c2 ; 0xf2649
+ call 01f09h ; e8 bb f8 ; 0xf264b
+ test ax, ax ; 85 c0 ; 0xf264e
+ je short 0265dh ; 74 0b ; 0xf2650
+ push 001beh ; 68 be 01 ; 0xf2652 ata.c:690
+ push strict byte 00007h ; 6a 07 ; 0xf2655
+ call 01a23h ; e8 c9 f3 ; 0xf2657
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf265a
+ mov cl, byte [bp-00261h] ; 8a 8e 9f fd ; 0xf265d ata.c:692
+ and cl, 01fh ; 80 e1 1f ; 0xf2661
+ test byte [bp-00262h], 080h ; f6 86 9e fd 80 ; 0xf2664 ata.c:693
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf2669
+ xor ah, ah ; 30 e4 ; 0xf266c
+ mov dx, ax ; 89 c2 ; 0xf266e
+ cmp byte [bp-00202h], 000h ; 80 be fe fd 00 ; 0xf2670 ata.c:695
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf2675
+ xor ah, ah ; 30 e4 ; 0xf2678
+ movzx bx, byte [bp-012h] ; 0f b6 5e ee ; 0xf267a ata.c:701
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf267e
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf2681
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf2684
+ mov byte [es:bx+023h], cl ; 26 88 4f 23 ; 0xf2687
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf268b ata.c:702
+ mov byte [es:bx+026h], al ; 26 88 47 26 ; 0xf268f ata.c:703
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf2693 ata.c:704
+ movzx bx, byte [bp-00eh] ; 0f b6 5e f2 ; 0xf2699 ata.c:707
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf269d
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf26a0
+ mov byte [es:bx+00268h], al ; 26 88 87 68 02 ; 0xf26a3
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf26a8 ata.c:708
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf26ab ata.c:717
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf26ae
+ je short 026e3h ; 74 31 ; 0xf26b0
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf26b2
+ jne near 02746h ; 0f 85 8e 00 ; 0xf26b4
+ movzx ax, byte [bp-012h] ; 0f b6 46 ee ; 0xf26b8 ata.c:719
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf26bc
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf26bf
+ mov di, word [bp-028h] ; 8b 7e d8 ; 0xf26c2
+ add di, ax ; 01 c7 ; 0xf26c5
+ mov ax, word [es:di+03ch] ; 26 8b 45 3c ; 0xf26c7
+ mov bx, word [es:di+03ah] ; 26 8b 5d 3a ; 0xf26cb
+ mov cx, word [es:di+038h] ; 26 8b 4d 38 ; 0xf26cf
+ mov dx, word [es:di+036h] ; 26 8b 55 36 ; 0xf26d3
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf26d7
+ call 0b290h ; e8 b3 8b ; 0xf26da
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf26dd
+ mov word [bp-026h], cx ; 89 4e da ; 0xf26e0
+ movzx ax, byte [bp-001c1h] ; 0f b6 86 3f fe ; 0xf26e3 ata.c:722
+ sal ax, 008h ; c1 e0 08 ; 0xf26e8
+ movzx dx, byte [bp-001c2h] ; 0f b6 96 3e fe ; 0xf26eb
+ or dx, ax ; 09 c2 ; 0xf26f0
+ mov byte [bp-006h], 00fh ; c6 46 fa 0f ; 0xf26f2 ata.c:723
+ jmp short 02701h ; eb 09 ; 0xf26f6
+ dec byte [bp-006h] ; fe 4e fa ; 0xf26f8 ata.c:726
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf26fb
+ jbe short 0270eh ; 76 0d ; 0xf26ff
+ movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf2701
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2705
+ sal ax, CL ; d3 e0 ; 0xf2708
+ test dx, ax ; 85 c2 ; 0xf270a
+ je short 026f8h ; 74 ea ; 0xf270c
+ xor di, di ; 31 ff ; 0xf270e ata.c:729
+ jmp short 02717h ; eb 05 ; 0xf2710
+ cmp di, strict byte 00014h ; 83 ff 14 ; 0xf2712
+ jnl short 0272ch ; 7d 15 ; 0xf2715
+ mov si, di ; 89 fe ; 0xf2717 ata.c:730
+ add si, di ; 01 fe ; 0xf2719
+ mov al, byte [bp+si-0022bh] ; 8a 82 d5 fd ; 0xf271b
+ mov byte [bp+si-062h], al ; 88 42 9e ; 0xf271f
+ mov al, byte [bp+si-0022ch] ; 8a 82 d4 fd ; 0xf2722 ata.c:731
+ mov byte [bp+si-061h], al ; 88 42 9f ; 0xf2726
+ inc di ; 47 ; 0xf2729 ata.c:732
+ jmp short 02712h ; eb e6 ; 0xf272a
+ mov byte [bp-03ah], 000h ; c6 46 c6 00 ; 0xf272c ata.c:735
+ mov di, strict word 00027h ; bf 27 00 ; 0xf2730 ata.c:736
+ jmp short 0273ah ; eb 05 ; 0xf2733
+ dec di ; 4f ; 0xf2735 ata.c:741
+ test di, di ; 85 ff ; 0xf2736
+ jle short 02746h ; 7e 0c ; 0xf2738
+ cmp byte [bp+di-062h], 020h ; 80 7b 9e 20 ; 0xf273a
+ jne short 02746h ; 75 06 ; 0xf273e
+ mov byte [bp+di-062h], 000h ; c6 43 9e 00 ; 0xf2740
+ jmp short 02735h ; eb ef ; 0xf2744
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2746 ata.c:748
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2749
+ je short 027abh ; 74 5e ; 0xf274b
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf274d
+ je short 0275ah ; 74 09 ; 0xf274f
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2751
+ je near 02815h ; 0f 84 be 00 ; 0xf2753
+ jmp near 02834h ; e9 da 00 ; 0xf2757
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf275a ata.c:751
+ je short 02765h ; 74 05 ; 0xf275e
+ mov ax, 001e9h ; b8 e9 01 ; 0xf2760
+ jmp short 02768h ; eb 03 ; 0xf2763
+ mov ax, 001f0h ; b8 f0 01 ; 0xf2765
+ push ax ; 50 ; 0xf2768
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf2769
+ push ax ; 50 ; 0xf276d
+ push 001f7h ; 68 f7 01 ; 0xf276e
+ push strict byte 00002h ; 6a 02 ; 0xf2771
+ call 01a23h ; e8 ad f2 ; 0xf2773
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf2776
+ xor di, di ; 31 ff ; 0xf2779 ata.c:752
+ movzx ax, byte [bp+di-062h] ; 0f b6 43 9e ; 0xf277b ata.c:753
+ inc di ; 47 ; 0xf277f
+ test ax, ax ; 85 c0 ; 0xf2780
+ je short 02792h ; 74 0e ; 0xf2782
+ push ax ; 50 ; 0xf2784 ata.c:754
+ push 00202h ; 68 02 02 ; 0xf2785
+ push strict byte 00002h ; 6a 02 ; 0xf2788
+ call 01a23h ; e8 96 f2 ; 0xf278a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf278d
+ jmp short 0277bh ; eb e9 ; 0xf2790
+ push word [bp-026h] ; ff 76 da ; 0xf2792 ata.c:755
+ push word [bp-02eh] ; ff 76 d2 ; 0xf2795
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf2798
+ push ax ; 50 ; 0xf279c
+ push 00205h ; 68 05 02 ; 0xf279d
+ push strict byte 00002h ; 6a 02 ; 0xf27a0
+ call 01a23h ; e8 7e f2 ; 0xf27a2
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf27a5
+ jmp near 02834h ; e9 89 00 ; 0xf27a8 ata.c:756
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf27ab ata.c:758
+ je short 027b6h ; 74 05 ; 0xf27af
+ mov ax, 001e9h ; b8 e9 01 ; 0xf27b1
+ jmp short 027b9h ; eb 03 ; 0xf27b4
+ mov ax, 001f0h ; b8 f0 01 ; 0xf27b6
+ push ax ; 50 ; 0xf27b9
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf27ba
+ push ax ; 50 ; 0xf27be
+ push 001f7h ; 68 f7 01 ; 0xf27bf
+ push strict byte 00002h ; 6a 02 ; 0xf27c2
+ call 01a23h ; e8 5c f2 ; 0xf27c4
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf27c7
+ xor di, di ; 31 ff ; 0xf27ca ata.c:759
+ movzx ax, byte [bp+di-062h] ; 0f b6 43 9e ; 0xf27cc ata.c:760
+ inc di ; 47 ; 0xf27d0
+ test ax, ax ; 85 c0 ; 0xf27d1
+ je short 027e3h ; 74 0e ; 0xf27d3
+ push ax ; 50 ; 0xf27d5 ata.c:761
+ push 00202h ; 68 02 02 ; 0xf27d6
+ push strict byte 00002h ; 6a 02 ; 0xf27d9
+ call 01a23h ; e8 45 f2 ; 0xf27db
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf27de
+ jmp short 027cch ; eb e9 ; 0xf27e1
+ movzx ax, byte [bp-012h] ; 0f b6 46 ee ; 0xf27e3 ata.c:762
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf27e7
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf27ea
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf27ed
+ add bx, ax ; 01 c3 ; 0xf27f0
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf27f2
+ jne short 02803h ; 75 0a ; 0xf27f7
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf27f9 ata.c:763
+ push ax ; 50 ; 0xf27fd
+ push 00225h ; 68 25 02 ; 0xf27fe
+ jmp short 0280bh ; eb 08 ; 0xf2801 ata.c:764
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf2803 ata.c:765
+ push ax ; 50 ; 0xf2807
+ push 0023fh ; 68 3f 02 ; 0xf2808
+ push strict byte 00002h ; 6a 02 ; 0xf280b
+ call 01a23h ; e8 13 f2 ; 0xf280d
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2810
+ jmp short 02834h ; eb 1f ; 0xf2813 ata.c:766
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf2815 ata.c:768
+ je short 02820h ; 74 05 ; 0xf2819
+ mov ax, 001e9h ; b8 e9 01 ; 0xf281b
+ jmp short 02823h ; eb 03 ; 0xf281e
+ mov ax, 001f0h ; b8 f0 01 ; 0xf2820
+ push ax ; 50 ; 0xf2823
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf2824
+ push ax ; 50 ; 0xf2828
+ push 00251h ; 68 51 02 ; 0xf2829
+ push strict byte 00002h ; 6a 02 ; 0xf282c
+ call 01a23h ; e8 f2 f1 ; 0xf282e
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf2831
+ inc byte [bp-012h] ; fe 46 ee ; 0xf2834 ata.c:773
+ cmp byte [bp-012h], 008h ; 80 7e ee 08 ; 0xf2837
+ jnc short 02882h ; 73 45 ; 0xf283b
+ movzx bx, byte [bp-012h] ; 0f b6 5e ee ; 0xf283d
+ mov ax, bx ; 89 d8 ; 0xf2841
+ cwd ; 99 ; 0xf2843
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf2844
+ sar ax, 1 ; d1 f8 ; 0xf2846
+ mov cx, ax ; 89 c1 ; 0xf2848
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf284a
+ mov ax, bx ; 89 d8 ; 0xf284d
+ cwd ; 99 ; 0xf284f
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf2850
+ idiv bx ; f7 fb ; 0xf2853
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf2855
+ mov al, byte [bp-024h] ; 8a 46 dc ; 0xf2858
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf285b
+ movzx bx, cl ; 0f b6 d9 ; 0xf285e
+ imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf2861
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf2864
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf2867
+ mov si, word [es:bx+0027eh] ; 26 8b b7 7e 02 ; 0xf286a
+ mov cx, word [es:bx+00280h] ; 26 8b 8f 80 02 ; 0xf286f
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf2874
+ in AL, DX ; ec ; 0xf2877
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2878
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf287a
+ jne near 0232ch ; 0f 85 ac fa ; 0xf287c
+ jmp short 02834h ; eb b2 ; 0xf2880
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2882 ata.c:776
+ mov es, [bp-020h] ; 8e 46 e0 ; 0xf2885
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf2888
+ mov byte [es:bx+00252h], al ; 26 88 87 52 02 ; 0xf288b
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2890 ata.c:777
+ mov byte [es:bx+00267h], al ; 26 88 87 67 02 ; 0xf2893
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf2898 ata.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf289b
+ mov es, ax ; 8e c0 ; 0xf289e
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf28a0
+ mov byte [es:bx], al ; 26 88 07 ; 0xf28a3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf28a6 ata.c:790
+ pop di ; 5f ; 0xf28a9
+ pop si ; 5e ; 0xf28aa
+ pop bp ; 5d ; 0xf28ab
+ retn ; c3 ; 0xf28ac
+ ; disGetNextSymbol 0xf28ad LB 0x8a9f -> off=0x0 cb=00000000000002bc uValue=00000000000f12ad 'ata_cmd_data_out'
+ata_cmd_data_out: ; 0xf28ad LB 0x2bc
+ push bp ; 55 ; 0xf28ad ata.c:804
+ mov bp, sp ; 89 e5 ; 0xf28ae
+ push si ; 56 ; 0xf28b0
+ push di ; 57 ; 0xf28b1
+ sub sp, strict byte 00022h ; 83 ec 22 ; 0xf28b2
+ mov di, ax ; 89 c7 ; 0xf28b5
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf28b7
+ mov word [bp-024h], bx ; 89 5e dc ; 0xf28ba
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf28bd
+ mov es, dx ; 8e c2 ; 0xf28c0 ata.c:816
+ movzx ax, byte [es:di+00ch] ; 26 0f b6 45 0c ; 0xf28c2
+ mov dx, ax ; 89 c2 ; 0xf28c7 ata.c:817
+ shr dx, 1 ; d1 ea ; 0xf28c9
+ mov dh, al ; 88 c6 ; 0xf28cb ata.c:818
+ and dh, 001h ; 80 e6 01 ; 0xf28cd
+ mov byte [bp-006h], dh ; 88 76 fa ; 0xf28d0
+ xor dh, dh ; 30 f6 ; 0xf28d3 ata.c:820
+ imul dx, dx, strict byte 00006h ; 6b d2 06 ; 0xf28d5
+ mov bx, di ; 89 fb ; 0xf28d8
+ add bx, dx ; 01 d3 ; 0xf28da
+ mov dx, word [es:bx+0027eh] ; 26 8b 97 7e 02 ; 0xf28dc
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf28e1
+ mov dx, word [es:bx+00280h] ; 26 8b 97 80 02 ; 0xf28e4 ata.c:821
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf28e9
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf28ec ata.c:822
+ mov bx, di ; 89 fb ; 0xf28ef
+ add bx, ax ; 01 c3 ; 0xf28f1
+ mov al, byte [es:bx+026h] ; 26 8a 47 26 ; 0xf28f3
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf28f7
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf28fa ata.c:825
+ jne short 02905h ; 75 07 ; 0xf28fc
+ mov word [bp-020h], 00080h ; c7 46 e0 80 00 ; 0xf28fe ata.c:826
+ jmp short 0290ah ; eb 05 ; 0xf2903 ata.c:827
+ mov word [bp-020h], 00100h ; c7 46 e0 00 01 ; 0xf2905 ata.c:829
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf290a ata.c:831
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf290d
+ in AL, DX ; ec ; 0xf2910
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2911
+ test AL, strict byte 080h ; a8 80 ; 0xf2913 ata.c:832
+ je short 02926h ; 74 0f ; 0xf2915
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2917 ata.c:835
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf291a
+ mov AL, strict byte 008h ; b0 08 ; 0xf291d
+ out DX, AL ; ee ; 0xf291f
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf2920 ata.c:836
+ jmp near 02b60h ; e9 3a 02 ; 0xf2923
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2926 ata.c:839
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf2929
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf292d
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf2930
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2934
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf2937
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf293b
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf293e
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2941
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf2944 ata.c:840
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2948
+ mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf294b
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf294f
+ mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf2952 ata.c:841
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2956
+ mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf2959 ata.c:842
+ mov word [bp-026h], ax ; 89 46 da ; 0xf295d
+ mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf2960 ata.c:843
+ mov word [bp-022h], ax ; 89 46 de ; 0xf2964
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf2967 ata.c:846
+ test ax, ax ; 85 c0 ; 0xf296a
+ jne near 02a37h ; 0f 85 c7 00 ; 0xf296c
+ xor dx, dx ; 31 d2 ; 0xf2970 ata.c:847
+ xor bx, bx ; 31 db ; 0xf2972
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf2974
+ add si, word [bp-01ah] ; 03 76 e6 ; 0xf2977
+ adc dx, word [bp-016h] ; 13 56 ea ; 0xf297a
+ adc bx, word [bp-014h] ; 13 5e ec ; 0xf297d
+ adc ax, word [bp-010h] ; 13 46 f0 ; 0xf2980
+ test ax, ax ; 85 c0 ; 0xf2983
+ jnbe short 02997h ; 77 10 ; 0xf2985
+ jne short 029fah ; 75 71 ; 0xf2987
+ test bx, bx ; 85 db ; 0xf2989
+ jnbe short 02997h ; 77 0a ; 0xf298b
+ jne short 029fah ; 75 6b ; 0xf298d
+ cmp dx, 01000h ; 81 fa 00 10 ; 0xf298f
+ jnbe short 02997h ; 77 02 ; 0xf2993
+ jne short 029fah ; 75 63 ; 0xf2995
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2997 ata.c:849
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf299a
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf299d
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf29a0
+ mov si, strict word 00018h ; be 18 00 ; 0xf29a3
+ call 0b290h ; e8 e7 88 ; 0xf29a6
+ xor dh, dh ; 30 f6 ; 0xf29a9
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf29ab
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf29ae ata.c:850
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf29b1
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf29b4
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf29b7
+ mov si, strict word 00020h ; be 20 00 ; 0xf29ba
+ call 0b290h ; e8 d0 88 ; 0xf29bd
+ mov bx, dx ; 89 d3 ; 0xf29c0
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf29c2 ata.c:851
+ xor al, al ; 30 c0 ; 0xf29c5
+ shr ax, 008h ; c1 e8 08 ; 0xf29c7
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf29ca
+ inc dx ; 42 ; 0xf29cd
+ inc dx ; 42 ; 0xf29ce
+ out DX, AL ; ee ; 0xf29cf
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf29d0 ata.c:852
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf29d3
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf29d6
+ out DX, AL ; ee ; 0xf29d9
+ mov ax, bx ; 89 d8 ; 0xf29da ata.c:853
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf29dc
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf29df
+ out DX, AL ; ee ; 0xf29e2
+ shr ax, 008h ; c1 e8 08 ; 0xf29e3 ata.c:854
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf29e6
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf29e9
+ out DX, AL ; ee ; 0xf29ec
+ xor al, al ; 30 c0 ; 0xf29ed ata.c:857
+ mov byte [bp-015h], al ; 88 46 eb ; 0xf29ef
+ xor ah, ah ; 30 e4 ; 0xf29f2
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf29f4
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf29f7
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf29fa ata.c:859
+ xor ah, ah ; 30 e4 ; 0xf29fd
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf29ff
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2a02 ata.c:860
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf2a05
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf2a08
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf2a0b
+ mov si, strict word 00008h ; be 08 00 ; 0xf2a0e
+ call 0b290h ; e8 7c 88 ; 0xf2a11
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf2a14
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf2a17
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf2a1a
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf2a1d
+ mov word [bp-026h], dx ; 89 56 da ; 0xf2a20 ata.c:861
+ mov si, strict word 00010h ; be 10 00 ; 0xf2a23 ata.c:862
+ call 0b290h ; e8 67 88 ; 0xf2a26
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf2a29
+ mov ax, dx ; 89 d0 ; 0xf2a2c ata.c:863
+ xor ah, dh ; 30 f4 ; 0xf2a2e
+ and AL, strict byte 00fh ; 24 0f ; 0xf2a30
+ or AL, strict byte 040h ; 0c 40 ; 0xf2a32
+ mov word [bp-022h], ax ; 89 46 de ; 0xf2a34
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2a37 ata.c:866
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a3a
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2a3d
+ out DX, AL ; ee ; 0xf2a3f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a40 ata.c:867
+ inc dx ; 42 ; 0xf2a43
+ xor al, al ; 30 c0 ; 0xf2a44
+ out DX, AL ; ee ; 0xf2a46
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a47 ata.c:868
+ inc dx ; 42 ; 0xf2a4a
+ inc dx ; 42 ; 0xf2a4b
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2a4c
+ out DX, AL ; ee ; 0xf2a4f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a50 ata.c:869
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2a53
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2a56
+ out DX, AL ; ee ; 0xf2a59
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf2a5a ata.c:870
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a5d
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2a60
+ out DX, AL ; ee ; 0xf2a63
+ shr ax, 008h ; c1 e8 08 ; 0xf2a64 ata.c:871
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a67
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2a6a
+ out DX, AL ; ee ; 0xf2a6d
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2a6e ata.c:872
+ je short 02a79h ; 74 05 ; 0xf2a72
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2a74
+ jmp short 02a7ch ; eb 03 ; 0xf2a77
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2a79
+ movzx dx, byte [bp-022h] ; 0f b6 56 de ; 0xf2a7c
+ or ax, dx ; 09 d0 ; 0xf2a80
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a82
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a85
+ out DX, AL ; ee ; 0xf2a88
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a89 ata.c:873
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2a8c
+ mov al, byte [bp-024h] ; 8a 46 dc ; 0xf2a8f
+ out DX, AL ; ee ; 0xf2a92
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a93 ata.c:876
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2a96
+ in AL, DX ; ec ; 0xf2a99
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2a9a
+ mov dl, al ; 88 c2 ; 0xf2a9c
+ test AL, strict byte 080h ; a8 80 ; 0xf2a9e ata.c:877
+ jne short 02a93h ; 75 f1 ; 0xf2aa0
+ test AL, strict byte 001h ; a8 01 ; 0xf2aa2 ata.c:881
+ je short 02ab5h ; 74 0f ; 0xf2aa4
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2aa6 ata.c:884
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2aa9
+ mov AL, strict byte 008h ; b0 08 ; 0xf2aac
+ out DX, AL ; ee ; 0xf2aae
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf2aaf ata.c:885
+ jmp near 02b60h ; e9 ab 00 ; 0xf2ab2
+ test dl, 008h ; f6 c2 08 ; 0xf2ab5 ata.c:886
+ jne short 02ac9h ; 75 0f ; 0xf2ab8
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2aba ata.c:889
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2abd
+ mov AL, strict byte 008h ; b0 08 ; 0xf2ac0
+ out DX, AL ; ee ; 0xf2ac2
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf2ac3 ata.c:890
+ jmp near 02b60h ; e9 97 00 ; 0xf2ac6
+ sti ; fb ; 0xf2ac9 ata.c:895
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2aca ata.c:900
+ cmp ax, 0f800h ; 3d 00 f8 ; 0xf2acd
+ jc short 02ae2h ; 72 10 ; 0xf2ad0
+ sub ax, 00800h ; 2d 00 08 ; 0xf2ad2 ata.c:901
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2ad5
+ add dx, 00080h ; 81 c2 80 00 ; 0xf2ad8
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2adc
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf2adf
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf2ae2 ata.c:904
+ jne short 02afah ; 75 12 ; 0xf2ae6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2ae8 ata.c:905
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2aeb
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf2aee
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf2af1
+ db 0f3h, 066h, 026h, 06fh
+ ; rep es outsd ; f3 66 26 6f ; 0xf2af4
+ jmp short 02b09h ; eb 0f ; 0xf2af8 ata.c:906
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2afa ata.c:908
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2afd
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf2b00
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf2b03
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2b06
+ mov word [bp-00eh], si ; 89 76 f2 ; 0xf2b09
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2b0c ata.c:910
+ inc word [es:di+018h] ; 26 ff 45 18 ; 0xf2b0f
+ dec word [bp-01ah] ; ff 4e e6 ; 0xf2b13 ata.c:911
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2b16 ata.c:913
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2b19
+ in AL, DX ; ec ; 0xf2b1c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2b1d
+ mov dl, al ; 88 c2 ; 0xf2b1f
+ test AL, strict byte 080h ; a8 80 ; 0xf2b21 ata.c:914
+ jne short 02b16h ; 75 f1 ; 0xf2b23
+ cmp word [bp-01ah], strict byte 00000h ; 83 7e e6 00 ; 0xf2b25 ata.c:917
+ jne short 02b3fh ; 75 14 ; 0xf2b29
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2b2b ata.c:918
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2b2d
+ je short 02b55h ; 74 24 ; 0xf2b2f
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b31 ata.c:922
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b34
+ mov AL, strict byte 008h ; b0 08 ; 0xf2b37
+ out DX, AL ; ee ; 0xf2b39
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2b3a ata.c:923
+ jmp short 02b60h ; eb 21 ; 0xf2b3d
+ mov al, dl ; 88 d0 ; 0xf2b3f ata.c:928
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2b41
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2b43
+ je short 02acah ; 74 83 ; 0xf2b45
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b47 ata.c:932
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b4a
+ mov AL, strict byte 008h ; b0 08 ; 0xf2b4d
+ out DX, AL ; ee ; 0xf2b4f
+ mov dx, strict word 00007h ; ba 07 00 ; 0xf2b50 ata.c:933
+ jmp short 02b60h ; eb 0b ; 0xf2b53
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b55 ata.c:939
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b58
+ mov AL, strict byte 008h ; b0 08 ; 0xf2b5b
+ out DX, AL ; ee ; 0xf2b5d
+ xor dx, dx ; 31 d2 ; 0xf2b5e ata.c:940
+ mov ax, dx ; 89 d0 ; 0xf2b60 ata.c:941
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b62
+ pop di ; 5f ; 0xf2b65
+ pop si ; 5e ; 0xf2b66
+ pop bp ; 5d ; 0xf2b67
+ retn ; c3 ; 0xf2b68
+ ; disGetNextSymbol 0xf2b69 LB 0x87e3 -> off=0x0 cb=00000000000000b5 uValue=00000000000f1569 'ata_read_sectors'
+ata_read_sectors: ; 0xf2b69 LB 0xb5
+ push bp ; 55 ; 0xf2b69 ata.c:951
+ mov bp, sp ; 89 e5 ; 0xf2b6a
+ push si ; 56 ; 0xf2b6c
+ push di ; 57 ; 0xf2b6d
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf2b6e
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf2b71
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf2b74 ata.c:957
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2b77
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2b7b ata.c:958
+ mov dx, cx ; 89 ca ; 0xf2b7f
+ sal dx, 009h ; c1 e2 09 ; 0xf2b81
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2b84 ata.c:960
+ je short 02baah ; 74 1f ; 0xf2b89
+ xor ah, ah ; 30 e4 ; 0xf2b8b ata.c:962
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2b8d
+ mov [bp-00ah], es ; 8c 46 f6 ; 0xf2b90
+ mov di, si ; 89 f7 ; 0xf2b93
+ add di, ax ; 01 c7 ; 0xf2b95
+ mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2b97
+ mov bx, 000c4h ; bb c4 00 ; 0xf2b9b ata.c:964
+ mov ax, si ; 89 f0 ; 0xf2b9e
+ mov dx, es ; 8c c2 ; 0xf2ba0
+ call 01f09h ; e8 64 f3 ; 0xf2ba2
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2ba5 ata.c:965
+ jmp short 02c0fh ; eb 65 ; 0xf2ba8 ata.c:966
+ xor bx, bx ; 31 db ; 0xf2baa ata.c:968
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf2bac
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf2baf
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2bb2
+ add di, cx ; 01 cf ; 0xf2bb5
+ mov word [bp-008h], di ; 89 7e f8 ; 0xf2bb7
+ mov di, word [es:si+002h] ; 26 8b 7c 02 ; 0xf2bba
+ adc di, bx ; 11 df ; 0xf2bbe
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2bc0
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf2bc3
+ adc bx, word [bp-00ah] ; 13 5e f6 ; 0xf2bc7
+ mov di, word [es:si+006h] ; 26 8b 7c 06 ; 0xf2bca
+ adc di, word [bp-00ch] ; 13 7e f4 ; 0xf2bce
+ test di, di ; 85 ff ; 0xf2bd1
+ jnbe short 02be6h ; 77 11 ; 0xf2bd3
+ jne short 02bf2h ; 75 1b ; 0xf2bd5
+ test bx, bx ; 85 db ; 0xf2bd7
+ jnbe short 02be6h ; 77 0b ; 0xf2bd9
+ jne short 02bf2h ; 75 15 ; 0xf2bdb
+ cmp word [bp-006h], 01000h ; 81 7e fa 00 10 ; 0xf2bdd
+ jnbe short 02be6h ; 77 02 ; 0xf2be2
+ jne short 02bf2h ; 75 0c ; 0xf2be4
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf2be6 ata.c:970
+ mov ax, si ; 89 f0 ; 0xf2be9
+ mov dx, es ; 8c c2 ; 0xf2beb
+ call 01f09h ; e8 19 f3 ; 0xf2bed
+ jmp short 02c15h ; eb 23 ; 0xf2bf0 ata.c:971
+ xor ah, ah ; 30 e4 ; 0xf2bf2 ata.c:972
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2bf4
+ mov [bp-006h], es ; 8c 46 fa ; 0xf2bf7
+ mov di, si ; 89 f7 ; 0xf2bfa
+ add di, ax ; 01 c7 ; 0xf2bfc
+ mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2bfe
+ mov bx, 000c4h ; bb c4 00 ; 0xf2c02 ata.c:974
+ mov ax, si ; 89 f0 ; 0xf2c05
+ mov dx, es ; 8c c2 ; 0xf2c07
+ call 01f09h ; e8 fd f2 ; 0xf2c09
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf2c0c ata.c:975
+ mov word [es:di+028h], 00200h ; 26 c7 45 28 00 02 ; 0xf2c0f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2c15 ata.c:979
+ pop di ; 5f ; 0xf2c18
+ pop si ; 5e ; 0xf2c19
+ pop bp ; 5d ; 0xf2c1a
+ retn 00004h ; c2 04 00 ; 0xf2c1b
+ ; disGetNextSymbol 0xf2c1e LB 0x872e -> off=0x0 cb=000000000000005b uValue=00000000000f161e 'ata_write_sectors'
+ata_write_sectors: ; 0xf2c1e LB 0x5b
+ push bp ; 55 ; 0xf2c1e ata.c:988
+ mov bp, sp ; 89 e5 ; 0xf2c1f
+ push si ; 56 ; 0xf2c21
+ push di ; 57 ; 0xf2c22
+ push ax ; 50 ; 0xf2c23
+ les si, [bp+004h] ; c4 76 04 ; 0xf2c24
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2c27 ata.c:992
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2c2b ata.c:994
+ je short 02c3eh ; 74 0c ; 0xf2c30
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf2c32 ata.c:996
+ mov ax, si ; 89 f0 ; 0xf2c35
+ mov dx, es ; 8c c2 ; 0xf2c37
+ call 028adh ; e8 71 fc ; 0xf2c39
+ jmp short 02c70h ; eb 32 ; 0xf2c3c
+ xor ax, ax ; 31 c0 ; 0xf2c3e ata.c:999
+ xor bx, bx ; 31 db ; 0xf2c40
+ xor dx, dx ; 31 d2 ; 0xf2c42
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2c44
+ add di, cx ; 01 cf ; 0xf2c47
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2c49
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2c4c
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2c50
+ adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2c54
+ test dx, dx ; 85 d2 ; 0xf2c58
+ jnbe short 02c6bh ; 77 0f ; 0xf2c5a
+ jne short 02c32h ; 75 d4 ; 0xf2c5c
+ test bx, bx ; 85 db ; 0xf2c5e
+ jnbe short 02c6bh ; 77 09 ; 0xf2c60
+ jne short 02c32h ; 75 ce ; 0xf2c62
+ cmp ax, 01000h ; 3d 00 10 ; 0xf2c64
+ jnbe short 02c6bh ; 77 02 ; 0xf2c67
+ jne short 02c32h ; 75 c7 ; 0xf2c69
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf2c6b ata.c:1000
+ jmp short 02c35h ; eb c5 ; 0xf2c6e
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2c70 ata.c:1004
+ pop di ; 5f ; 0xf2c73
+ pop si ; 5e ; 0xf2c74
+ pop bp ; 5d ; 0xf2c75
+ retn 00004h ; c2 04 00 ; 0xf2c76
+ ; disGetNextSymbol 0xf2c79 LB 0x86d3 -> off=0x0 cb=00000000000002df uValue=00000000000f1679 'ata_cmd_packet'
+ata_cmd_packet: ; 0xf2c79 LB 0x2df
+ push bp ; 55 ; 0xf2c79 ata.c:1016
+ mov bp, sp ; 89 e5 ; 0xf2c7a
+ push si ; 56 ; 0xf2c7c
+ push di ; 57 ; 0xf2c7d
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xf2c7e
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2c81
+ mov di, bx ; 89 df ; 0xf2c84
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2c86 ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2c89
+ mov es, dx ; 8e c2 ; 0xf2c8c
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf2c8e
+ mov word [bp-012h], strict word 0005eh ; c7 46 ee 5e 00 ; 0xf2c91 ata.c:49
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf2c96
+ mov dx, ax ; 89 c2 ; 0xf2c99 ata.c:1028
+ shr dx, 1 ; d1 ea ; 0xf2c9b
+ mov dh, al ; 88 c6 ; 0xf2c9d ata.c:1029
+ and dh, 001h ; 80 e6 01 ; 0xf2c9f
+ mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf2ca2
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf2ca5 ata.c:1032
+ jne short 02ccah ; 75 1f ; 0xf2ca9
+ mov bx, 00f24h ; bb 24 0f ; 0xf2cab ata.c:1033
+ mov cx, ds ; 8c d9 ; 0xf2cae
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2cb0
+ call 019e2h ; e8 2c ed ; 0xf2cb3
+ push 0026bh ; 68 6b 02 ; 0xf2cb6
+ push 0027ah ; 68 7a 02 ; 0xf2cb9
+ push strict byte 00004h ; 6a 04 ; 0xf2cbc
+ call 01a23h ; e8 62 ed ; 0xf2cbe
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2cc1
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf2cc4 ata.c:1034
+ jmp near 02f4dh ; e9 83 02 ; 0xf2cc7
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf2cca ata.c:1038
+ jne short 02cc4h ; 75 f4 ; 0xf2cce
+ xor dh, dh ; 30 f6 ; 0xf2cd0 ata.c:1043
+ imul dx, dx, strict byte 00006h ; 6b d2 06 ; 0xf2cd2
+ les si, [bp-012h] ; c4 76 ee ; 0xf2cd5
+ add si, dx ; 01 d6 ; 0xf2cd8
+ mov bx, word [es:si+0027eh] ; 26 8b 9c 7e 02 ; 0xf2cda
+ mov dx, word [es:si+00280h] ; 26 8b 94 80 02 ; 0xf2cdf ata.c:1044
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf2ce4
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2ce7 ata.c:1045
+ mov si, word [bp-012h] ; 8b 76 ee ; 0xf2cea
+ add si, ax ; 01 c6 ; 0xf2ced
+ mov al, byte [es:si+026h] ; 26 8a 44 26 ; 0xf2cef
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2cf3
+ xor ax, ax ; 31 c0 ; 0xf2cf6 ata.c:1046
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf2cf8
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2cfb
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2cfe ata.c:1048
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf2d01
+ jnc short 02d0bh ; 73 06 ; 0xf2d03
+ mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2d05 ata.c:1049
+ jmp short 02d11h ; eb 06 ; 0xf2d09
+ jbe short 02d11h ; 76 04 ; 0xf2d0b ata.c:1050
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2d0d ata.c:1051
+ shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2d11 ata.c:1052
+ les si, [bp-012h] ; c4 76 ee ; 0xf2d14 ata.c:1056
+ 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; 0xf2d17
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf2d20 ata.c:1057
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d26 ata.c:1059
+ in AL, DX ; ec ; 0xf2d29
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d2a
+ test AL, strict byte 080h ; a8 80 ; 0xf2d2c ata.c:1060
+ je short 02d36h ; 74 06 ; 0xf2d2e
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf2d30 ata.c:1061
+ jmp near 02f4dh ; e9 17 02 ; 0xf2d33
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2d36 ata.c:1063
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d39
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2d3c
+ out DX, AL ; ee ; 0xf2d3e
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf2d3f ata.c:1067
+ mov AL, strict byte 0f0h ; b0 f0 ; 0xf2d42
+ out DX, AL ; ee ; 0xf2d44
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf2d45 ata.c:1068
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf2d48
+ out DX, AL ; ee ; 0xf2d4a
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf2d4b ata.c:1069
+ je short 02d56h ; 74 05 ; 0xf2d4f
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2d51
+ jmp short 02d59h ; eb 03 ; 0xf2d54
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2d56
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2d59
+ out DX, AL ; ee ; 0xf2d5c
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d5d ata.c:1070
+ mov AL, strict byte 0a0h ; b0 a0 ; 0xf2d60
+ out DX, AL ; ee ; 0xf2d62
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d63 ata.c:1074
+ in AL, DX ; ec ; 0xf2d66
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d67
+ mov dl, al ; 88 c2 ; 0xf2d69
+ test AL, strict byte 080h ; a8 80 ; 0xf2d6b ata.c:1075
+ jne short 02d63h ; 75 f4 ; 0xf2d6d
+ test AL, strict byte 001h ; a8 01 ; 0xf2d6f ata.c:1078
+ je short 02d82h ; 74 0f ; 0xf2d71
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2d73 ata.c:1081
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d76
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d79
+ out DX, AL ; ee ; 0xf2d7b
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf2d7c ata.c:1082
+ jmp near 02f4dh ; e9 cb 01 ; 0xf2d7f
+ test dl, 008h ; f6 c2 08 ; 0xf2d82 ata.c:1083
+ jne short 02d96h ; 75 0f ; 0xf2d85
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2d87 ata.c:1086
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d8a
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d8d
+ out DX, AL ; ee ; 0xf2d8f
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf2d90 ata.c:1087
+ jmp near 02f4dh ; e9 b7 01 ; 0xf2d93
+ sti ; fb ; 0xf2d96 ata.c:1090
+ mov ax, di ; 89 f8 ; 0xf2d97 ata.c:1094
+ shr ax, 004h ; c1 e8 04 ; 0xf2d99
+ add ax, cx ; 01 c8 ; 0xf2d9c
+ mov si, di ; 89 fe ; 0xf2d9e
+ and si, strict byte 0000fh ; 83 e6 0f ; 0xf2da0
+ movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf2da3 ata.c:1099
+ mov dx, bx ; 89 da ; 0xf2da7
+ mov es, ax ; 8e c0 ; 0xf2da9
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2dab
+ cmp byte [bp+00ah], 000h ; 80 7e 0a 00 ; 0xf2dae ata.c:1101
+ jne short 02dbfh ; 75 0b ; 0xf2db2
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf2db4 ata.c:1102
+ in AL, DX ; ec ; 0xf2db7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2db8
+ mov dl, al ; 88 c2 ; 0xf2dba
+ jmp near 02f2eh ; e9 6f 01 ; 0xf2dbc ata.c:1104
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf2dbf ata.c:1108
+ in AL, DX ; ec ; 0xf2dc2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2dc3
+ mov dl, al ; 88 c2 ; 0xf2dc5
+ test AL, strict byte 080h ; a8 80 ; 0xf2dc7 ata.c:1109
+ jne short 02dbfh ; 75 f4 ; 0xf2dc9
+ test AL, strict byte 088h ; a8 88 ; 0xf2dcb ata.c:1114
+ je near 02f2eh ; 0f 84 5d 01 ; 0xf2dcd
+ test AL, strict byte 001h ; a8 01 ; 0xf2dd1 ata.c:1117
+ je short 02de0h ; 74 0b ; 0xf2dd3
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2dd5 ata.c:1120
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dd8
+ mov AL, strict byte 008h ; b0 08 ; 0xf2ddb
+ out DX, AL ; ee ; 0xf2ddd
+ jmp short 02d7ch ; eb 9c ; 0xf2dde
+ mov al, dl ; 88 d0 ; 0xf2de0 ata.c:1125
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2de2
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2de4
+ je short 02df3h ; 74 0b ; 0xf2de6
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2de8 ata.c:1129
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2deb
+ mov AL, strict byte 008h ; b0 08 ; 0xf2dee
+ out DX, AL ; ee ; 0xf2df0
+ jmp short 02d90h ; eb 9d ; 0xf2df1
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2df3 ata.c:1135
+ shr ax, 004h ; c1 e8 04 ; 0xf2df6
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf2df9
+ add dx, ax ; 01 c2 ; 0xf2dfc
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2dfe
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf2e01
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf2e04
+ mov word [bp+00eh], dx ; 89 56 0e ; 0xf2e07
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf2e0a ata.c:1140
+ in AL, DX ; ec ; 0xf2e0d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e0e
+ mov cx, ax ; 89 c1 ; 0xf2e10
+ sal cx, 008h ; c1 e1 08 ; 0xf2e12
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf2e15
+ in AL, DX ; ec ; 0xf2e18
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e19
+ add cx, ax ; 01 c1 ; 0xf2e1b
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf2e1d
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf2e20 ata.c:1143
+ cmp ax, cx ; 39 c8 ; 0xf2e23
+ jbe short 02e33h ; 76 0c ; 0xf2e25
+ mov ax, cx ; 89 c8 ; 0xf2e27 ata.c:1145
+ sub word [bp+004h], cx ; 29 4e 04 ; 0xf2e29
+ xor ax, cx ; 31 c8 ; 0xf2e2c ata.c:1146
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2e2e
+ jmp short 02e3dh ; eb 0a ; 0xf2e31 ata.c:1148
+ mov cx, ax ; 89 c1 ; 0xf2e33 ata.c:1149
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf2e35 ata.c:1150
+ sub word [bp-00ch], ax ; 29 46 f4 ; 0xf2e3a ata.c:1151
+ xor ax, ax ; 31 c0 ; 0xf2e3d ata.c:1154
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf2e3f
+ jne short 02e66h ; 75 21 ; 0xf2e43
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e45
+ cmp dx, word [bp+006h] ; 3b 56 06 ; 0xf2e48
+ jbe short 02e66h ; 76 19 ; 0xf2e4b
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2e4d ata.c:1155
+ sub ax, word [bp+006h] ; 2b 46 06 ; 0xf2e50
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2e53
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf2e56 ata.c:1156
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2e59
+ xor ax, ax ; 31 c0 ; 0xf2e5c ata.c:1157
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf2e5e
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf2e61
+ jmp short 02e72h ; eb 0c ; 0xf2e64 ata.c:1159
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2e66 ata.c:1160
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e69 ata.c:1161
+ sub word [bp+006h], dx ; 29 56 06 ; 0xf2e6c
+ sbb word [bp+008h], ax ; 19 46 08 ; 0xf2e6f
+ mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf2e72 ata.c:1165
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2e75 ata.c:1171
+ test cl, 003h ; f6 c1 03 ; 0xf2e78 ata.c:1172
+ je short 02e7fh ; 74 02 ; 0xf2e7b
+ xor al, al ; 30 c0 ; 0xf2e7d ata.c:1173
+ test byte [bp-00ch], 003h ; f6 46 f4 03 ; 0xf2e7f ata.c:1174
+ je short 02e87h ; 74 02 ; 0xf2e83
+ xor al, al ; 30 c0 ; 0xf2e85 ata.c:1175
+ test byte [bp-00eh], 003h ; f6 46 f2 03 ; 0xf2e87 ata.c:1176
+ je short 02e8fh ; 74 02 ; 0xf2e8b
+ xor al, al ; 30 c0 ; 0xf2e8d ata.c:1177
+ test byte [bp-00ch], 001h ; f6 46 f4 01 ; 0xf2e8f ata.c:1180
+ je short 02ea7h ; 74 12 ; 0xf2e93
+ inc word [bp-00ch] ; ff 46 f4 ; 0xf2e95 ata.c:1181
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xf2e98 ata.c:1182
+ jbe short 02ea7h ; 76 09 ; 0xf2e9c
+ test byte [bp-00eh], 001h ; f6 46 f2 01 ; 0xf2e9e
+ je short 02ea7h ; 74 03 ; 0xf2ea2
+ dec word [bp-00eh] ; ff 4e f2 ; 0xf2ea4 ata.c:1183
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2ea7 ata.c:1188
+ jne short 02eb8h ; 75 0d ; 0xf2ea9
+ shr word [bp-00ch], 002h ; c1 6e f4 02 ; 0xf2eab ata.c:1189
+ shr cx, 002h ; c1 e9 02 ; 0xf2eaf ata.c:1190
+ shr word [bp-00eh], 002h ; c1 6e f2 02 ; 0xf2eb2 ata.c:1191
+ jmp short 02ec0h ; eb 08 ; 0xf2eb6 ata.c:1192
+ shr word [bp-00ch], 1 ; d1 6e f4 ; 0xf2eb8 ata.c:1195
+ shr cx, 1 ; d1 e9 ; 0xf2ebb ata.c:1196
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf2ebd ata.c:1197
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2ec0 ata.c:1201
+ jne short 02ef0h ; 75 2c ; 0xf2ec2
+ test cx, cx ; 85 c9 ; 0xf2ec4 ata.c:1202
+ je short 02ed2h ; 74 0a ; 0xf2ec6
+ mov dx, bx ; 89 da ; 0xf2ec8 ata.c:1203
+ push eax ; 66 50 ; 0xf2eca
+ in eax, DX ; 66 ed ; 0xf2ecc
+ loop 02ecch ; e2 fc ; 0xf2ece
+ pop eax ; 66 58 ; 0xf2ed0
+ mov dx, bx ; 89 da ; 0xf2ed2 ata.c:1204
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf2ed4
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf2ed7
+ db 0f3h, 066h, 06dh
+ ; rep insd ; f3 66 6d ; 0xf2eda
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2edd ata.c:1205
+ test ax, ax ; 85 c0 ; 0xf2ee0
+ je short 02f0fh ; 74 2b ; 0xf2ee2
+ mov cx, ax ; 89 c1 ; 0xf2ee4 ata.c:1206
+ push eax ; 66 50 ; 0xf2ee6
+ in eax, DX ; 66 ed ; 0xf2ee8
+ loop 02ee8h ; e2 fc ; 0xf2eea
+ pop eax ; 66 58 ; 0xf2eec
+ jmp short 02f0fh ; eb 1f ; 0xf2eee ata.c:1207
+ test cx, cx ; 85 c9 ; 0xf2ef0 ata.c:1210
+ je short 02ef9h ; 74 05 ; 0xf2ef2
+ mov dx, bx ; 89 da ; 0xf2ef4 ata.c:1211
+ in ax, DX ; ed ; 0xf2ef6
+ loop 02ef6h ; e2 fd ; 0xf2ef7
+ mov dx, bx ; 89 da ; 0xf2ef9 ata.c:1212
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf2efb
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf2efe
+ rep insw ; f3 6d ; 0xf2f01
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2f03 ata.c:1213
+ test ax, ax ; 85 c0 ; 0xf2f06
+ je short 02f0fh ; 74 05 ; 0xf2f08
+ mov cx, ax ; 89 c1 ; 0xf2f0a ata.c:1214
+ in ax, DX ; ed ; 0xf2f0c
+ loop 02f0ch ; e2 fd ; 0xf2f0d
+ add word [bp+00ch], si ; 01 76 0c ; 0xf2f0f ata.c:1219
+ xor ax, ax ; 31 c0 ; 0xf2f12 ata.c:1222
+ add word [bp-016h], si ; 01 76 ea ; 0xf2f14
+ adc word [bp-014h], ax ; 11 46 ec ; 0xf2f17
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf2f1a ata.c:1223
+ les si, [bp-012h] ; c4 76 ee ; 0xf2f1d
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf2f20
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2f24
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf2f27
+ jmp near 02dbfh ; e9 91 fe ; 0xf2f2b ata.c:1224
+ mov al, dl ; 88 d0 ; 0xf2f2e ata.c:1228
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2f30
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2f32
+ je short 02f42h ; 74 0c ; 0xf2f34
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2f36 ata.c:1232
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2f39
+ mov AL, strict byte 008h ; b0 08 ; 0xf2f3c
+ out DX, AL ; ee ; 0xf2f3e
+ jmp near 02d90h ; e9 4e fe ; 0xf2f3f
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2f42 ata.c:1237
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2f45
+ mov AL, strict byte 008h ; b0 08 ; 0xf2f48
+ out DX, AL ; ee ; 0xf2f4a
+ xor dx, dx ; 31 d2 ; 0xf2f4b ata.c:1238
+ mov ax, dx ; 89 d0 ; 0xf2f4d ata.c:1239
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2f4f
+ pop di ; 5f ; 0xf2f52
+ pop si ; 5e ; 0xf2f53
+ pop bp ; 5d ; 0xf2f54
+ retn 0000ch ; c2 0c 00 ; 0xf2f55
+ ; disGetNextSymbol 0xf2f58 LB 0x83f4 -> off=0x0 cb=000000000000007a uValue=00000000000f1958 'ata_soft_reset'
+ata_soft_reset: ; 0xf2f58 LB 0x7a
+ push bp ; 55 ; 0xf2f58 ata.c:1247
+ mov bp, sp ; 89 e5 ; 0xf2f59
+ push bx ; 53 ; 0xf2f5b
+ push cx ; 51 ; 0xf2f5c
+ push dx ; 52 ; 0xf2f5d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2f5e ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2f61
+ mov es, dx ; 8e c2 ; 0xf2f64
+ mov es, [es:bx] ; 26 8e 07 ; 0xf2f66
+ mov dx, ax ; 89 c2 ; 0xf2f69 ata.c:1256
+ shr dx, 1 ; d1 ea ; 0xf2f6b
+ mov ah, al ; 88 c4 ; 0xf2f6d ata.c:1257
+ and ah, 001h ; 80 e4 01 ; 0xf2f6f
+ movzx bx, dl ; 0f b6 da ; 0xf2f72 ata.c:1259
+ imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf2f75
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf2f78
+ mov cx, word [es:bx+0027eh] ; 26 8b 8f 7e 02 ; 0xf2f7b
+ mov bx, word [es:bx+00280h] ; 26 8b 9f 80 02 ; 0xf2f80 ata.c:1260
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f85 ata.c:1263
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2f88
+ out DX, AL ; ee ; 0xf2f8a
+ test ah, ah ; 84 e4 ; 0xf2f8b ata.c:1264
+ je short 02f94h ; 74 05 ; 0xf2f8d
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2f8f
+ jmp short 02f97h ; eb 03 ; 0xf2f92
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2f94
+ mov dx, cx ; 89 ca ; 0xf2f97
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2f99
+ out DX, AL ; ee ; 0xf2f9c
+ mov dx, cx ; 89 ca ; 0xf2f9d ata.c:1265
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2f9f
+ mov AL, strict byte 008h ; b0 08 ; 0xf2fa2
+ out DX, AL ; ee ; 0xf2fa4
+ mov dx, cx ; 89 ca ; 0xf2fa5 ata.c:1269
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2fa7
+ in AL, DX ; ec ; 0xf2faa
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2fab
+ test AL, strict byte 080h ; a8 80 ; 0xf2fad ata.c:1270
+ jne short 02fa5h ; 75 f4 ; 0xf2faf
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2fb1 ata.c:1274
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2fb3
+ je short 02fc2h ; 74 0b ; 0xf2fb5
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2fb7 ata.c:1278
+ mov AL, strict byte 008h ; b0 08 ; 0xf2fba
+ out DX, AL ; ee ; 0xf2fbc
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2fbd ata.c:1279
+ jmp short 02fcah ; eb 08 ; 0xf2fc0
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2fc2 ata.c:1283
+ mov AL, strict byte 008h ; b0 08 ; 0xf2fc5
+ out DX, AL ; ee ; 0xf2fc7
+ xor ax, ax ; 31 c0 ; 0xf2fc8 ata.c:1284
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2fca ata.c:1285
+ pop dx ; 5a ; 0xf2fcd
+ pop cx ; 59 ; 0xf2fce
+ pop bx ; 5b ; 0xf2fcf
+ pop bp ; 5d ; 0xf2fd0
+ retn ; c3 ; 0xf2fd1
+ ; disGetNextSymbol 0xf2fd2 LB 0x837a -> off=0x0 cb=000000000000002a uValue=00000000000f19d2 'set_diskette_current_cyl'
+set_diskette_current_cyl: ; 0xf2fd2 LB 0x2a
+ push bp ; 55 ; 0xf2fd2 floppy.c:71
+ mov bp, sp ; 89 e5 ; 0xf2fd3
+ push bx ; 53 ; 0xf2fd5
+ mov dh, al ; 88 c6 ; 0xf2fd6
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2fd8 floppy.c:73
+ jbe short 02fe7h ; 76 0b ; 0xf2fda
+ push 0029ah ; 68 9a 02 ; 0xf2fdc floppy.c:74
+ push strict byte 00007h ; 6a 07 ; 0xf2fdf
+ call 01a23h ; e8 3f ea ; 0xf2fe1
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2fe4
+ movzx bx, dh ; 0f b6 de ; 0xf2fe7 floppy.c:75
+ add bx, 00094h ; 81 c3 94 00 ; 0xf2fea
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2fee floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf2ff1
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf2ff3
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2ff6 floppy.c:76
+ pop bx ; 5b ; 0xf2ff9
+ pop bp ; 5d ; 0xf2ffa
+ retn ; c3 ; 0xf2ffb
+ ; disGetNextSymbol 0xf2ffc LB 0x8350 -> off=0x0 cb=0000000000000023 uValue=00000000000f19fc 'floppy_wait_for_interrupt'
+floppy_wait_for_interrupt: ; 0xf2ffc LB 0x23
+ push bp ; 55 ; 0xf2ffc floppy.c:96
+ mov bp, sp ; 89 e5 ; 0xf2ffd
+ push bx ; 53 ; 0xf2fff
+ cli ; fa ; 0xf3000 floppy.c:98
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf3001 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3004
+ mov es, ax ; 8e c0 ; 0xf3007
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3009
+ test AL, strict byte 080h ; a8 80 ; 0xf300c floppy.c:102
+ je short 03014h ; 74 04 ; 0xf300e
+ and AL, strict byte 080h ; 24 80 ; 0xf3010 floppy.c:103
+ jmp short 03019h ; eb 05 ; 0xf3012
+ sti ; fb ; 0xf3014 floppy.c:104
+ hlt ; f4 ; 0xf3015
+ cli ; fa ; 0xf3016
+ jmp short 03001h ; eb e8 ; 0xf3017 floppy.c:105
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf3019 floppy.c:106
+ pop bx ; 5b ; 0xf301c
+ pop bp ; 5d ; 0xf301d
+ retn ; c3 ; 0xf301e
+ ; disGetNextSymbol 0xf301f LB 0x832d -> off=0x0 cb=0000000000000038 uValue=00000000000f1a1f 'floppy_wait_for_interrupt_or_timeout'
+floppy_wait_for_interrupt_or_timeout: ; 0xf301f LB 0x38
+ push bp ; 55 ; 0xf301f floppy.c:116
+ mov bp, sp ; 89 e5 ; 0xf3020
+ push bx ; 53 ; 0xf3022
+ cli ; fa ; 0xf3023 floppy.c:118
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf3024 floppy.c:38
+ mov es, bx ; 8e c3 ; 0xf3027
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3029
+ test al, al ; 84 c0 ; 0xf302c floppy.c:122
+ jne short 03033h ; 75 03 ; 0xf302e
+ sti ; fb ; 0xf3030 floppy.c:123
+ jmp short 03051h ; eb 1e ; 0xf3031 floppy.c:124
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf3033 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3036
+ mov es, ax ; 8e c0 ; 0xf3039
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf303b
+ test AL, strict byte 080h ; a8 80 ; 0xf303e floppy.c:128
+ je short 0304ch ; 74 0a ; 0xf3040
+ mov ah, al ; 88 c4 ; 0xf3042 floppy.c:129
+ and ah, 07fh ; 80 e4 7f ; 0xf3044
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf3047 floppy.c:43
+ jmp short 03051h ; eb 05 ; 0xf304a floppy.c:130
+ sti ; fb ; 0xf304c floppy.c:132
+ hlt ; f4 ; 0xf304d
+ cli ; fa ; 0xf304e
+ jmp short 03024h ; eb d3 ; 0xf304f floppy.c:133
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf3051 floppy.c:134
+ pop bx ; 5b ; 0xf3054
+ pop bp ; 5d ; 0xf3055
+ retn ; c3 ; 0xf3056
+ ; disGetNextSymbol 0xf3057 LB 0x82f5 -> off=0x0 cb=0000000000000042 uValue=00000000000f1a57 'floppy_reset_controller'
+floppy_reset_controller: ; 0xf3057 LB 0x42
+ push bp ; 55 ; 0xf3057 floppy.c:138
+ mov bp, sp ; 89 e5 ; 0xf3058
+ push bx ; 53 ; 0xf305a
+ push cx ; 51 ; 0xf305b
+ push dx ; 52 ; 0xf305c
+ mov cx, ax ; 89 c1 ; 0xf305d
+ mov dx, 003f2h ; ba f2 03 ; 0xf305f floppy.c:143
+ in AL, DX ; ec ; 0xf3062
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3063
+ mov bx, ax ; 89 c3 ; 0xf3065
+ movzx ax, bl ; 0f b6 c3 ; 0xf3067 floppy.c:144
+ and AL, strict byte 0fbh ; 24 fb ; 0xf306a
+ out DX, AL ; ee ; 0xf306c
+ mov al, bl ; 88 d8 ; 0xf306d floppy.c:145
+ or AL, strict byte 004h ; 0c 04 ; 0xf306f
+ out DX, AL ; ee ; 0xf3071
+ mov dx, 003f4h ; ba f4 03 ; 0xf3072 floppy.c:149
+ in AL, DX ; ec ; 0xf3075
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3076
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3078 floppy.c:150
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf307a
+ jne short 03072h ; 75 f4 ; 0xf307c
+ mov bx, cx ; 89 cb ; 0xf307e floppy.c:153
+ add bx, 00090h ; 81 c3 90 00 ; 0xf3080
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3084 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3087
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3089
+ and AL, strict byte 0efh ; 24 ef ; 0xf308c floppy.c:154
+ mov byte [es:bx], al ; 26 88 07 ; 0xf308e floppy.c:43
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf3091 floppy.c:157
+ pop dx ; 5a ; 0xf3094
+ pop cx ; 59 ; 0xf3095
+ pop bx ; 5b ; 0xf3096
+ pop bp ; 5d ; 0xf3097
+ retn ; c3 ; 0xf3098
+ ; disGetNextSymbol 0xf3099 LB 0x82b3 -> off=0x0 cb=0000000000000074 uValue=00000000000f1a99 'floppy_prepare_controller'
+floppy_prepare_controller: ; 0xf3099 LB 0x74
+ push bp ; 55 ; 0xf3099 floppy.c:159
+ mov bp, sp ; 89 e5 ; 0xf309a
+ push bx ; 53 ; 0xf309c
+ push cx ; 51 ; 0xf309d
+ push dx ; 52 ; 0xf309e
+ push ax ; 50 ; 0xf309f
+ mov cx, ax ; 89 c1 ; 0xf30a0
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf30a2 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf30a5
+ mov es, ax ; 8e c0 ; 0xf30a8
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf30aa
+ and AL, strict byte 07fh ; 24 7f ; 0xf30ad floppy.c:165
+ mov byte [es:bx], al ; 26 88 07 ; 0xf30af floppy.c:43
+ mov dx, 003f2h ; ba f2 03 ; 0xf30b2 floppy.c:169
+ in AL, DX ; ec ; 0xf30b5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf30b6
+ and AL, strict byte 004h ; 24 04 ; 0xf30b8
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf30ba
+ test cx, cx ; 85 c9 ; 0xf30bd floppy.c:170
+ je short 030c5h ; 74 04 ; 0xf30bf
+ mov AL, strict byte 020h ; b0 20 ; 0xf30c1 floppy.c:171
+ jmp short 030c7h ; eb 02 ; 0xf30c3 floppy.c:172
+ mov AL, strict byte 010h ; b0 10 ; 0xf30c5 floppy.c:173
+ or AL, strict byte 00ch ; 0c 0c ; 0xf30c7 floppy.c:174
+ or al, cl ; 08 c8 ; 0xf30c9 floppy.c:175
+ mov dx, 003f2h ; ba f2 03 ; 0xf30cb floppy.c:176
+ out DX, AL ; ee ; 0xf30ce
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf30cf floppy.c:43
+ mov es, bx ; 8e c3 ; 0xf30d2
+ mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf30d4
+ mov bx, 0008bh ; bb 8b 00 ; 0xf30d8 floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf30db
+ shr al, 006h ; c0 e8 06 ; 0xf30de floppy.c:183
+ mov dx, 003f7h ; ba f7 03 ; 0xf30e1 floppy.c:184
+ out DX, AL ; ee ; 0xf30e4
+ mov dx, 003f4h ; ba f4 03 ; 0xf30e5 floppy.c:188
+ in AL, DX ; ec ; 0xf30e8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf30e9
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf30eb floppy.c:189
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf30ed
+ jne short 030e5h ; 75 f4 ; 0xf30ef
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf30f1 floppy.c:191
+ jne short 03105h ; 75 0e ; 0xf30f5
+ call 02ffch ; e8 02 ff ; 0xf30f7 floppy.c:202
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf30fa floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf30fd
+ mov es, dx ; 8e c2 ; 0xf3100
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3102
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf3105 floppy.c:206
+ pop dx ; 5a ; 0xf3108
+ pop cx ; 59 ; 0xf3109
+ pop bx ; 5b ; 0xf310a
+ pop bp ; 5d ; 0xf310b
+ retn ; c3 ; 0xf310c
+ ; disGetNextSymbol 0xf310d LB 0x823f -> off=0x0 cb=0000000000000049 uValue=00000000000f1b0d 'floppy_media_known'
+floppy_media_known: ; 0xf310d LB 0x49
+ push bx ; 53 ; 0xf310d floppy.c:208
+ push dx ; 52 ; 0xf310e
+ push bp ; 55 ; 0xf310f
+ mov bp, sp ; 89 e5 ; 0xf3110
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf3112 floppy.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3115
+ mov es, dx ; 8e c2 ; 0xf3118
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf311a
+ mov bl, bh ; 88 fb ; 0xf311d floppy.c:39
+ test ax, ax ; 85 c0 ; 0xf311f floppy.c:214
+ je short 03125h ; 74 02 ; 0xf3121
+ shr bl, 1 ; d0 eb ; 0xf3123 floppy.c:215
+ and bl, 001h ; 80 e3 01 ; 0xf3125 floppy.c:216
+ jne short 0312eh ; 75 04 ; 0xf3128 floppy.c:217
+ xor bh, bh ; 30 ff ; 0xf312a floppy.c:218
+ jmp short 03150h ; eb 22 ; 0xf312c
+ mov bx, 00090h ; bb 90 00 ; 0xf312e floppy.c:220
+ test ax, ax ; 85 c0 ; 0xf3131 floppy.c:221
+ je short 03138h ; 74 03 ; 0xf3133
+ mov bx, 00091h ; bb 91 00 ; 0xf3135 floppy.c:222
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3138 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf313b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf313d
+ xor ah, ah ; 30 e4 ; 0xf3140 floppy.c:225
+ sar ax, 004h ; c1 f8 04 ; 0xf3142
+ and AL, strict byte 001h ; 24 01 ; 0xf3145
+ jne short 0314dh ; 75 04 ; 0xf3147 floppy.c:226
+ xor bx, bx ; 31 db ; 0xf3149 floppy.c:227
+ jmp short 03150h ; eb 03 ; 0xf314b
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf314d floppy.c:230
+ mov ax, bx ; 89 d8 ; 0xf3150 floppy.c:231
+ pop bp ; 5d ; 0xf3152
+ pop dx ; 5a ; 0xf3153
+ pop bx ; 5b ; 0xf3154
+ retn ; c3 ; 0xf3155
+ ; disGetNextSymbol 0xf3156 LB 0x81f6 -> off=0x0 cb=000000000000004e uValue=00000000000f1b56 'floppy_read_id'
+floppy_read_id: ; 0xf3156 LB 0x4e
+ push bp ; 55 ; 0xf3156 floppy.c:233
+ mov bp, sp ; 89 e5 ; 0xf3157
+ push bx ; 53 ; 0xf3159
+ push dx ; 52 ; 0xf315a
+ push si ; 56 ; 0xf315b
+ mov bx, ax ; 89 c3 ; 0xf315c
+ call 03099h ; e8 38 ff ; 0xf315e floppy.c:240
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3161 floppy.c:243
+ mov dx, 003f5h ; ba f5 03 ; 0xf3163
+ out DX, AL ; ee ; 0xf3166
+ mov al, bl ; 88 d8 ; 0xf3167 floppy.c:244
+ out DX, AL ; ee ; 0xf3169
+ call 02ffch ; e8 8f fe ; 0xf316a floppy.c:259
+ xor bx, bx ; 31 db ; 0xf316d floppy.c:263
+ jmp short 03176h ; eb 05 ; 0xf316f
+ cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf3171
+ jnl short 0318ah ; 7d 14 ; 0xf3174
+ mov dx, 003f5h ; ba f5 03 ; 0xf3176 floppy.c:264
+ in AL, DX ; ec ; 0xf3179
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf317a
+ lea si, [bx+042h] ; 8d 77 42 ; 0xf317c
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf317f floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf3182
+ mov byte [es:si], al ; 26 88 04 ; 0xf3184
+ inc bx ; 43 ; 0xf3187 floppy.c:264
+ jmp short 03171h ; eb e7 ; 0xf3188
+ mov bx, strict word 00042h ; bb 42 00 ; 0xf318a floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf318d
+ mov es, ax ; 8e c0 ; 0xf3190
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3192
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3195 floppy.c:39
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf3197
+ xor ah, ah ; 30 e4 ; 0xf319a
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf319c floppy.c:270
+ pop si ; 5e ; 0xf319f
+ pop dx ; 5a ; 0xf31a0
+ pop bx ; 5b ; 0xf31a1
+ pop bp ; 5d ; 0xf31a2
+ retn ; c3 ; 0xf31a3
+ ; disGetNextSymbol 0xf31a4 LB 0x81a8 -> off=0x0 cb=0000000000000041 uValue=00000000000f1ba4 'floppy_drive_recal'
+floppy_drive_recal: ; 0xf31a4 LB 0x41
+ push bp ; 55 ; 0xf31a4 floppy.c:272
+ mov bp, sp ; 89 e5 ; 0xf31a5
+ push bx ; 53 ; 0xf31a7
+ push dx ; 52 ; 0xf31a8
+ push si ; 56 ; 0xf31a9
+ mov bx, ax ; 89 c3 ; 0xf31aa
+ call 03099h ; e8 ea fe ; 0xf31ac floppy.c:277
+ mov AL, strict byte 007h ; b0 07 ; 0xf31af floppy.c:280
+ mov dx, 003f5h ; ba f5 03 ; 0xf31b1
+ out DX, AL ; ee ; 0xf31b4
+ mov al, bl ; 88 d8 ; 0xf31b5 floppy.c:281
+ out DX, AL ; ee ; 0xf31b7
+ call 02ffch ; e8 41 fe ; 0xf31b8 floppy.c:300
+ test bx, bx ; 85 db ; 0xf31bb floppy.c:304
+ je short 031c6h ; 74 07 ; 0xf31bd
+ or AL, strict byte 002h ; 0c 02 ; 0xf31bf floppy.c:305
+ mov bx, 00095h ; bb 95 00 ; 0xf31c1 floppy.c:306
+ jmp short 031cbh ; eb 05 ; 0xf31c4 floppy.c:307
+ or AL, strict byte 001h ; 0c 01 ; 0xf31c6 floppy.c:308
+ mov bx, 00094h ; bb 94 00 ; 0xf31c8 floppy.c:309
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf31cb floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf31ce
+ mov es, dx ; 8e c2 ; 0xf31d1
+ mov byte [es:si], al ; 26 88 04 ; 0xf31d3
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf31d6 floppy.c:43
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf31da floppy.c:315
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf31dd
+ pop si ; 5e ; 0xf31e0
+ pop dx ; 5a ; 0xf31e1
+ pop bx ; 5b ; 0xf31e2
+ pop bp ; 5d ; 0xf31e3
+ retn ; c3 ; 0xf31e4
+ ; disGetNextSymbol 0xf31e5 LB 0x8167 -> off=0x0 cb=00000000000000e4 uValue=00000000000f1be5 'floppy_media_sense'
+floppy_media_sense: ; 0xf31e5 LB 0xe4
+ push bp ; 55 ; 0xf31e5 floppy.c:318
+ mov bp, sp ; 89 e5 ; 0xf31e6
+ push bx ; 53 ; 0xf31e8
+ push cx ; 51 ; 0xf31e9
+ push dx ; 52 ; 0xf31ea
+ push si ; 56 ; 0xf31eb
+ mov bx, ax ; 89 c3 ; 0xf31ec
+ call 031a4h ; e8 b3 ff ; 0xf31ee floppy.c:324
+ test ax, ax ; 85 c0 ; 0xf31f1
+ jne short 031fah ; 75 05 ; 0xf31f3
+ xor dx, dx ; 31 d2 ; 0xf31f5 floppy.c:325
+ jmp near 032beh ; e9 c4 00 ; 0xf31f7
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf31fa floppy.c:360
+ call 01765h ; e8 65 e5 ; 0xf31fd
+ test bx, bx ; 85 db ; 0xf3200 floppy.c:361
+ jne short 0320bh ; 75 07 ; 0xf3202
+ mov dl, al ; 88 c2 ; 0xf3204 floppy.c:362
+ shr dl, 004h ; c0 ea 04 ; 0xf3206
+ jmp short 03210h ; eb 05 ; 0xf3209 floppy.c:363
+ mov dl, al ; 88 c2 ; 0xf320b floppy.c:364
+ and dl, 00fh ; 80 e2 0f ; 0xf320d
+ cmp dl, 001h ; 80 fa 01 ; 0xf3210 floppy.c:365
+ jne short 0321eh ; 75 09 ; 0xf3213
+ xor dl, dl ; 30 d2 ; 0xf3215 floppy.c:367
+ mov DH, strict byte 015h ; b6 15 ; 0xf3217 floppy.c:368
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf3219 floppy.c:369
+ jmp short 0325ch ; eb 3e ; 0xf321c floppy.c:371
+ cmp dl, 002h ; 80 fa 02 ; 0xf321e
+ jne short 03229h ; 75 06 ; 0xf3221
+ xor dl, dl ; 30 d2 ; 0xf3223 floppy.c:373
+ mov DH, strict byte 035h ; b6 35 ; 0xf3225 floppy.c:374
+ jmp short 03219h ; eb f0 ; 0xf3227
+ cmp dl, 003h ; 80 fa 03 ; 0xf3229 floppy.c:377
+ jne short 03234h ; 75 06 ; 0xf322c
+ xor dl, dl ; 30 d2 ; 0xf322e floppy.c:379
+ mov DH, strict byte 017h ; b6 17 ; 0xf3230 floppy.c:380
+ jmp short 03219h ; eb e5 ; 0xf3232
+ cmp dl, 004h ; 80 fa 04 ; 0xf3234 floppy.c:383
+ jne short 0323fh ; 75 06 ; 0xf3237
+ xor dl, dl ; 30 d2 ; 0xf3239 floppy.c:385
+ mov DH, strict byte 017h ; b6 17 ; 0xf323b floppy.c:386
+ jmp short 03219h ; eb da ; 0xf323d
+ cmp dl, 005h ; 80 fa 05 ; 0xf323f floppy.c:389
+ jne short 0324ah ; 75 06 ; 0xf3242
+ mov DL, strict byte 0cch ; b2 cc ; 0xf3244 floppy.c:391
+ mov DH, strict byte 0d7h ; b6 d7 ; 0xf3246 floppy.c:392
+ jmp short 03219h ; eb cf ; 0xf3248
+ cmp dl, 00eh ; 80 fa 0e ; 0xf324a floppy.c:396
+ je short 03254h ; 74 05 ; 0xf324d
+ cmp dl, 00fh ; 80 fa 0f ; 0xf324f
+ jne short 03256h ; 75 02 ; 0xf3252
+ jmp short 03244h ; eb ee ; 0xf3254
+ xor dl, dl ; 30 d2 ; 0xf3256 floppy.c:404
+ xor dh, dh ; 30 f6 ; 0xf3258 floppy.c:405
+ xor cx, cx ; 31 c9 ; 0xf325a floppy.c:406
+ mov si, 0008bh ; be 8b 00 ; 0xf325c floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf325f
+ mov es, ax ; 8e c0 ; 0xf3262
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3264
+ mov ax, bx ; 89 d8 ; 0xf3267 floppy.c:410
+ call 03156h ; e8 ea fe ; 0xf3269
+ test ax, ax ; 85 c0 ; 0xf326c
+ jne short 032a2h ; 75 32 ; 0xf326e
+ mov al, dl ; 88 d0 ; 0xf3270 floppy.c:411
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3272
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf3274
+ je short 032a2h ; 74 2a ; 0xf3276
+ mov al, dl ; 88 d0 ; 0xf3278 floppy.c:415
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf327a
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf327c
+ je short 0328fh ; 74 0f ; 0xf327e
+ mov ah, dl ; 88 d4 ; 0xf3280
+ and ah, 03fh ; 80 e4 3f ; 0xf3282
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf3285
+ je short 0329bh ; 74 12 ; 0xf3287
+ test al, al ; 84 c0 ; 0xf3289
+ je short 03294h ; 74 07 ; 0xf328b
+ jmp short 0325ch ; eb cd ; 0xf328d
+ and dl, 03fh ; 80 e2 3f ; 0xf328f floppy.c:417
+ jmp short 0325ch ; eb c8 ; 0xf3292 floppy.c:418
+ mov dl, ah ; 88 e2 ; 0xf3294 floppy.c:420
+ or dl, 040h ; 80 ca 40 ; 0xf3296
+ jmp short 0325ch ; eb c1 ; 0xf3299 floppy.c:421
+ mov dl, ah ; 88 e2 ; 0xf329b floppy.c:423
+ or dl, 080h ; 80 ca 80 ; 0xf329d
+ jmp short 0325ch ; eb ba ; 0xf32a0 floppy.c:427
+ test bx, bx ; 85 db ; 0xf32a2 floppy.c:429
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf32a4
+ movzx bx, al ; 0f b6 d8 ; 0xf32a7
+ add bx, 00090h ; 81 c3 90 00 ; 0xf32aa
+ mov si, 0008bh ; be 8b 00 ; 0xf32ae floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf32b1
+ mov es, ax ; 8e c0 ; 0xf32b4
+ mov byte [es:si], dl ; 26 88 14 ; 0xf32b6
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf32b9 floppy.c:43
+ mov dx, cx ; 89 ca ; 0xf32bc floppy.c:436
+ mov ax, dx ; 89 d0 ; 0xf32be floppy.c:437
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf32c0
+ pop si ; 5e ; 0xf32c3
+ pop dx ; 5a ; 0xf32c4
+ pop cx ; 59 ; 0xf32c5
+ pop bx ; 5b ; 0xf32c6
+ pop bp ; 5d ; 0xf32c7
+ retn ; c3 ; 0xf32c8
+ ; disGetNextSymbol 0xf32c9 LB 0x8083 -> off=0x0 cb=0000000000000024 uValue=00000000000f1cc9 'floppy_drive_exists'
+floppy_drive_exists: ; 0xf32c9 LB 0x24
+ push bp ; 55 ; 0xf32c9 floppy.c:440
+ mov bp, sp ; 89 e5 ; 0xf32ca
+ push dx ; 52 ; 0xf32cc
+ mov dx, ax ; 89 c2 ; 0xf32cd
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf32cf floppy.c:446
+ call 01765h ; e8 90 e4 ; 0xf32d2
+ test dx, dx ; 85 d2 ; 0xf32d5 floppy.c:447
+ jne short 032deh ; 75 05 ; 0xf32d7
+ shr al, 004h ; c0 e8 04 ; 0xf32d9 floppy.c:448
+ jmp short 032e0h ; eb 02 ; 0xf32dc floppy.c:449
+ and AL, strict byte 00fh ; 24 0f ; 0xf32de floppy.c:450
+ test al, al ; 84 c0 ; 0xf32e0 floppy.c:451
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf32e2
+ xor ah, ah ; 30 e4 ; 0xf32e5
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf32e7 floppy.c:452
+ pop dx ; 5a ; 0xf32ea
+ pop bp ; 5d ; 0xf32eb
+ retn ; c3 ; 0xf32ec
+ ; disGetNextSymbol 0xf32ed LB 0x805f -> off=0x23 cb=0000000000000984 uValue=00000000000f1d10 'int13_diskette_function'
+ db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 071h, 03ch, 050h, 033h, 0cdh
+ db 033h, 0edh, 033h, 0edh, 033h, 0edh, 033h, 068h, 037h, 026h, 039h, 016h, 03ah, 058h, 03ah, 08ch
+ db 03ah, 0feh, 03ah
+int13_diskette_function: ; 0xf3310 LB 0x984
+ push bp ; 55 ; 0xf3310 floppy.c:467
+ mov bp, sp ; 89 e5 ; 0xf3311
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf3313
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf3316 floppy.c:478
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf331a floppy.c:480
+ shr ax, 008h ; c1 e8 08 ; 0xf331d
+ cmp ax, strict word 00018h ; 3d 18 00 ; 0xf3320
+ jnbe near 03c71h ; 0f 87 4a 09 ; 0xf3323
+ push CS ; 0e ; 0xf3327
+ pop ES ; 07 ; 0xf3328
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3329
+ mov di, 032edh ; bf ed 32 ; 0xf332c
+ repne scasb ; f2 ae ; 0xf332f
+ sal cx, 1 ; d1 e1 ; 0xf3331
+ mov di, cx ; 89 cf ; 0xf3333
+ mov di, word [cs:di+032f8h] ; 2e 8b bd f8 32 ; 0xf3335
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf333a
+ xor dh, dh ; 30 f6 ; 0xf333d
+ mov ah, byte [bp+00eh] ; 8a 66 0e ; 0xf333f
+ mov cx, word [bp+01ch] ; 8b 4e 1c ; 0xf3342
+ or cl, 001h ; 80 c9 01 ; 0xf3345
+ mov si, dx ; 89 d6 ; 0xf3348
+ or si, 00100h ; 81 ce 00 01 ; 0xf334a
+ jmp di ; ff e7 ; 0xf334e
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3350 floppy.c:483
+ cmp bl, 001h ; 80 fb 01 ; 0xf3353 floppy.c:484
+ jbe short 03372h ; 76 1a ; 0xf3356
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3358 floppy.c:485
+ xor ah, ah ; 30 e4 ; 0xf335b
+ or ah, 001h ; 80 cc 01 ; 0xf335d
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3360
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3363 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3366
+ mov es, ax ; 8e c0 ; 0xf3369
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf336b
+ jmp near 03b5eh ; e9 ec 07 ; 0xf336f
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3372 floppy.c:491
+ call 01765h ; e8 ed e3 ; 0xf3375
+ test bl, bl ; 84 db ; 0xf3378 floppy.c:492
+ jne short 03383h ; 75 07 ; 0xf337a
+ mov dl, al ; 88 c2 ; 0xf337c floppy.c:493
+ shr dl, 004h ; c0 ea 04 ; 0xf337e
+ jmp short 03388h ; eb 05 ; 0xf3381 floppy.c:494
+ mov dl, al ; 88 c2 ; 0xf3383 floppy.c:495
+ and dl, 00fh ; 80 e2 0f ; 0xf3385
+ test dl, dl ; 84 d2 ; 0xf3388 floppy.c:496
+ jne short 033a6h ; 75 1a ; 0xf338a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf338c floppy.c:497
+ xor ah, ah ; 30 e4 ; 0xf338f
+ or ah, 080h ; 80 cc 80 ; 0xf3391
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3394
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3397 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf339a
+ mov es, ax ; 8e c0 ; 0xf339d
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf339f
+ jmp near 03b5eh ; e9 b8 07 ; 0xf33a3
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf33a6 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf33a9
+ mov es, ax ; 8e c0 ; 0xf33ac
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf33ae
+ xor al, al ; 30 c0 ; 0xf33b2 floppy.c:506
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf33b4
+ mov si, strict word 00041h ; be 41 00 ; 0xf33b7 floppy.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf33ba
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf33bd floppy.c:508
+ movzx ax, bl ; 0f b6 c3 ; 0xf33c1 floppy.c:509
+ xor dx, dx ; 31 d2 ; 0xf33c4
+ call 02fd2h ; e8 09 fc ; 0xf33c6
+ mov sp, bp ; 89 ec ; 0xf33c9 floppy.c:510
+ pop bp ; 5d ; 0xf33cb
+ retn ; c3 ; 0xf33cc
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf33cd floppy.c:513
+ mov bx, 00441h ; bb 41 04 ; 0xf33d1 floppy.c:38
+ xor ax, ax ; 31 c0 ; 0xf33d4
+ mov es, ax ; 8e c0 ; 0xf33d6
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf33d8
+ movzx bx, al ; 0f b6 d8 ; 0xf33db floppy.c:515
+ sal bx, 008h ; c1 e3 08 ; 0xf33de
+ or dx, bx ; 09 da ; 0xf33e1
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf33e3
+ test al, al ; 84 c0 ; 0xf33e6 floppy.c:516
+ je short 033c9h ; 74 df ; 0xf33e8
+ jmp near 03b5eh ; e9 71 07 ; 0xf33ea
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf33ed floppy.c:524
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf33f0 floppy.c:525
+ shr ax, 008h ; c1 e8 08 ; 0xf33f3
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf33f6
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf33f9 floppy.c:526
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf33fc
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf33ff floppy.c:527
+ shr ax, 008h ; c1 e8 08 ; 0xf3402
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf3405
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3408 floppy.c:528
+ cmp bl, 001h ; 80 fb 01 ; 0xf340b floppy.c:530
+ jnbe short 0341dh ; 77 0d ; 0xf340e
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf3410
+ jnbe short 0341dh ; 77 09 ; 0xf3412
+ test bh, bh ; 84 ff ; 0xf3414
+ je short 0341dh ; 74 05 ; 0xf3416
+ cmp bh, 048h ; 80 ff 48 ; 0xf3418
+ jbe short 03450h ; 76 33 ; 0xf341b
+ mov bx, 00f24h ; bb 24 0f ; 0xf341d floppy.c:532
+ mov cx, ds ; 8c d9 ; 0xf3420
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3422
+ call 019e2h ; e8 ba e5 ; 0xf3425
+ push 002bfh ; 68 bf 02 ; 0xf3428
+ push 002d7h ; 68 d7 02 ; 0xf342b
+ push strict byte 00004h ; 6a 04 ; 0xf342e
+ call 01a23h ; e8 f0 e5 ; 0xf3430
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3433
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3436 floppy.c:533
+ xor ah, ah ; 30 e4 ; 0xf3439
+ or ah, 001h ; 80 cc 01 ; 0xf343b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf343e
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3441 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3444
+ mov es, ax ; 8e c0 ; 0xf3447
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3449
+ jmp near 034dbh ; e9 8b 00 ; 0xf344d
+ movzx ax, bl ; 0f b6 c3 ; 0xf3450 floppy.c:535
+ call 032c9h ; e8 73 fe ; 0xf3453
+ test ax, ax ; 85 c0 ; 0xf3456
+ je near 03572h ; 0f 84 16 01 ; 0xf3458
+ movzx cx, bl ; 0f b6 cb ; 0xf345c floppy.c:551
+ mov ax, cx ; 89 c8 ; 0xf345f
+ call 0310dh ; e8 a9 fc ; 0xf3461
+ test ax, ax ; 85 c0 ; 0xf3464
+ jne short 0348ah ; 75 22 ; 0xf3466
+ mov ax, cx ; 89 c8 ; 0xf3468 floppy.c:552
+ call 031e5h ; e8 78 fd ; 0xf346a
+ test ax, ax ; 85 c0 ; 0xf346d
+ jne short 0348ah ; 75 19 ; 0xf346f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3471 floppy.c:554
+ xor ah, ah ; 30 e4 ; 0xf3474
+ or ah, 00ch ; 80 cc 0c ; 0xf3476
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3479
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf347c floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf347f
+ mov es, ax ; 8e c0 ; 0xf3482
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3484
+ jmp short 034dbh ; eb 51 ; 0xf3488
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf348a floppy.c:562
+ shr ax, 008h ; c1 e8 08 ; 0xf348d
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf3490
+ jne near 03626h ; 0f 85 8f 01 ; 0xf3493
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3497 floppy.c:573
+ shr dx, 00ch ; c1 ea 0c ; 0xf349a
+ mov ah, dl ; 88 d4 ; 0xf349d
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf349f floppy.c:574
+ sal cx, 004h ; c1 e1 04 ; 0xf34a2
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf34a5 floppy.c:575
+ add si, cx ; 01 ce ; 0xf34a8
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf34aa
+ cmp cx, si ; 39 f1 ; 0xf34ad floppy.c:577
+ jbe short 034b3h ; 76 02 ; 0xf34af
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf34b1 floppy.c:579
+ movzx cx, bh ; 0f b6 cf ; 0xf34b3 floppy.c:581
+ sal cx, 009h ; c1 e1 09 ; 0xf34b6
+ dec cx ; 49 ; 0xf34b9
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf34ba floppy.c:584
+ add dx, cx ; 01 ca ; 0xf34bd
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf34bf floppy.c:585
+ jnc short 034e2h ; 73 1e ; 0xf34c2
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf34c4 floppy.c:586
+ xor ah, ah ; 30 e4 ; 0xf34c7
+ or ah, 009h ; 80 cc 09 ; 0xf34c9
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf34cc
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf34cf floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf34d2
+ mov es, ax ; 8e c0 ; 0xf34d5
+ mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf34d7
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf34db
+ jmp near 03b5eh ; e9 7c 06 ; 0xf34df
+ mov AL, strict byte 006h ; b0 06 ; 0xf34e2 floppy.c:594
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf34e4
+ out DX, AL ; ee ; 0xf34e7
+ xor al, al ; 30 c0 ; 0xf34e8 floppy.c:597
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34ea
+ out DX, AL ; ee ; 0xf34ed
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf34ee floppy.c:598
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf34f1
+ out DX, AL ; ee ; 0xf34f4
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf34f5 floppy.c:599
+ shr dx, 008h ; c1 ea 08 ; 0xf34f8
+ mov al, dl ; 88 d0 ; 0xf34fb
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf34fd
+ out DX, AL ; ee ; 0xf3500
+ xor al, al ; 30 c0 ; 0xf3501 floppy.c:601
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3503
+ out DX, AL ; ee ; 0xf3506
+ mov al, cl ; 88 c8 ; 0xf3507 floppy.c:602
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3509
+ out DX, AL ; ee ; 0xf350c
+ shr cx, 008h ; c1 e9 08 ; 0xf350d floppy.c:603
+ mov al, cl ; 88 c8 ; 0xf3510
+ out DX, AL ; ee ; 0xf3512
+ mov AL, strict byte 046h ; b0 46 ; 0xf3513 floppy.c:611
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3515
+ out DX, AL ; ee ; 0xf3518
+ mov al, ah ; 88 e0 ; 0xf3519 floppy.c:615
+ mov dx, 00081h ; ba 81 00 ; 0xf351b
+ out DX, AL ; ee ; 0xf351e
+ mov AL, strict byte 002h ; b0 02 ; 0xf351f floppy.c:618
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3521
+ out DX, AL ; ee ; 0xf3524
+ movzx cx, bl ; 0f b6 cb ; 0xf3525 floppy.c:623
+ mov ax, cx ; 89 c8 ; 0xf3528
+ call 03099h ; e8 6c fb ; 0xf352a
+ mov AL, strict byte 0e6h ; b0 e6 ; 0xf352d floppy.c:626
+ mov dx, 003f5h ; ba f5 03 ; 0xf352f
+ out DX, AL ; ee ; 0xf3532
+ movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf3533 floppy.c:627
+ sal dx, 002h ; c1 e2 02 ; 0xf3537
+ movzx ax, bl ; 0f b6 c3 ; 0xf353a
+ or ax, dx ; 09 d0 ; 0xf353d
+ mov dx, 003f5h ; ba f5 03 ; 0xf353f
+ out DX, AL ; ee ; 0xf3542
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3543 floppy.c:628
+ out DX, AL ; ee ; 0xf3546
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3547 floppy.c:629
+ out DX, AL ; ee ; 0xf354a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf354b floppy.c:630
+ out DX, AL ; ee ; 0xf354e
+ mov AL, strict byte 002h ; b0 02 ; 0xf354f floppy.c:631
+ out DX, AL ; ee ; 0xf3551
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf3552 floppy.c:632
+ movzx dx, bh ; 0f b6 d7 ; 0xf3556
+ add ax, dx ; 01 d0 ; 0xf3559
+ dec ax ; 48 ; 0xf355b
+ mov dx, 003f5h ; ba f5 03 ; 0xf355c
+ out DX, AL ; ee ; 0xf355f
+ xor al, al ; 30 c0 ; 0xf3560 floppy.c:633
+ out DX, AL ; ee ; 0xf3562
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf3563 floppy.c:634
+ out DX, AL ; ee ; 0xf3565
+ call 0301fh ; e8 b6 fa ; 0xf3566 floppy.c:666
+ test al, al ; 84 c0 ; 0xf3569 floppy.c:667
+ jne short 0358ch ; 75 1f ; 0xf356b
+ mov ax, cx ; 89 c8 ; 0xf356d floppy.c:669
+ call 03057h ; e8 e5 fa ; 0xf356f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3572 floppy.c:68
+ xor ah, ah ; 30 e4 ; 0xf3575
+ or ah, 080h ; 80 cc 80 ; 0xf3577
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf357a
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf357d
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3580
+ mov es, ax ; 8e c0 ; 0xf3583
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3585
+ jmp near 034dbh ; e9 4f ff ; 0xf3589
+ mov dx, 003f4h ; ba f4 03 ; 0xf358c floppy.c:679
+ in AL, DX ; ec ; 0xf358f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3590
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3592 floppy.c:680
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3594
+ je short 035a6h ; 74 0e ; 0xf3596
+ push 002bfh ; 68 bf 02 ; 0xf3598 floppy.c:681
+ push 002f2h ; 68 f2 02 ; 0xf359b
+ push strict byte 00007h ; 6a 07 ; 0xf359e
+ call 01a23h ; e8 80 e4 ; 0xf35a0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf35a3
+ xor cx, cx ; 31 c9 ; 0xf35a6 floppy.c:684
+ jmp short 035afh ; eb 05 ; 0xf35a8
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf35aa
+ jnl short 035c5h ; 7d 16 ; 0xf35ad
+ mov dx, 003f5h ; ba f5 03 ; 0xf35af floppy.c:685
+ in AL, DX ; ec ; 0xf35b2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf35b3
+ mov si, cx ; 89 ce ; 0xf35b5
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf35b7
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf35ba floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf35bd
+ mov byte [es:si], al ; 26 88 04 ; 0xf35bf
+ inc cx ; 41 ; 0xf35c2 floppy.c:685
+ jmp short 035aah ; eb e5 ; 0xf35c3
+ mov si, strict word 00042h ; be 42 00 ; 0xf35c5 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf35c8
+ mov es, ax ; 8e c0 ; 0xf35cb
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf35cd
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf35d0 floppy.c:39
+ je short 035f4h ; 74 20 ; 0xf35d2
+ movzx ax, bl ; 0f b6 c3 ; 0xf35d4 floppy.c:689
+ call 03057h ; e8 7d fa ; 0xf35d7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf35da floppy.c:690
+ xor ah, ah ; 30 e4 ; 0xf35dd
+ or ah, 020h ; 80 cc 20 ; 0xf35df
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf35e2
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf35e5 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf35e8
+ mov es, ax ; 8e c0 ; 0xf35eb
+ mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf35ed
+ jmp near 034dbh ; e9 e7 fe ; 0xf35f1
+ movzx ax, bh ; 0f b6 c7 ; 0xf35f4 floppy.c:698
+ sal ax, 009h ; c1 e0 09 ; 0xf35f7
+ cwd ; 99 ; 0xf35fa
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf35fb
+ sar ax, 1 ; d1 f8 ; 0xf35fd
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf35ff
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3602
+ mov di, si ; 89 f7 ; 0xf3605
+ mov cx, ax ; 89 c1 ; 0xf3607
+ mov es, dx ; 8e c2 ; 0xf3609
+ push DS ; 1e ; 0xf360b
+ mov ds, dx ; 8e da ; 0xf360c
+ rep movsw ; f3 a5 ; 0xf360e
+ pop DS ; 1f ; 0xf3610
+ movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf3611 floppy.c:702
+ movzx ax, bl ; 0f b6 c3 ; 0xf3615
+ call 02fd2h ; e8 b7 f9 ; 0xf3618
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf361b floppy.c:704
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf361f floppy.c:705
+ jmp near 033c9h ; e9 a3 fd ; 0xf3623 floppy.c:706
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3626 floppy.c:707
+ shr ax, 008h ; c1 e8 08 ; 0xf3629
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf362c
+ jne near 03753h ; 0f 85 20 01 ; 0xf362f
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf3633 floppy.c:718
+ shr cx, 00ch ; c1 e9 0c ; 0xf3636
+ mov ah, cl ; 88 cc ; 0xf3639
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf363b floppy.c:719
+ sal dx, 004h ; c1 e2 04 ; 0xf363e
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3641 floppy.c:720
+ add si, dx ; 01 d6 ; 0xf3644
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3646
+ cmp dx, si ; 39 f2 ; 0xf3649 floppy.c:722
+ jbe short 0364fh ; 76 02 ; 0xf364b
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf364d floppy.c:724
+ movzx cx, bh ; 0f b6 cf ; 0xf364f floppy.c:726
+ sal cx, 009h ; c1 e1 09 ; 0xf3652
+ dec cx ; 49 ; 0xf3655
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3656 floppy.c:729
+ add dx, cx ; 01 ca ; 0xf3659
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf365b floppy.c:730
+ jc near 034c4h ; 0f 82 62 fe ; 0xf365e
+ mov AL, strict byte 006h ; b0 06 ; 0xf3662 floppy.c:739
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3664
+ out DX, AL ; ee ; 0xf3667
+ xor al, al ; 30 c0 ; 0xf3668 floppy.c:741
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf366a
+ out DX, AL ; ee ; 0xf366d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf366e floppy.c:742
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3671
+ out DX, AL ; ee ; 0xf3674
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3675 floppy.c:743
+ shr dx, 008h ; c1 ea 08 ; 0xf3678
+ mov al, dl ; 88 d0 ; 0xf367b
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf367d
+ out DX, AL ; ee ; 0xf3680
+ xor al, al ; 30 c0 ; 0xf3681 floppy.c:744
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3683
+ out DX, AL ; ee ; 0xf3686
+ mov al, cl ; 88 c8 ; 0xf3687 floppy.c:745
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3689
+ out DX, AL ; ee ; 0xf368c
+ shr cx, 008h ; c1 e9 08 ; 0xf368d floppy.c:746
+ mov al, cl ; 88 c8 ; 0xf3690
+ out DX, AL ; ee ; 0xf3692
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3693 floppy.c:753
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3695
+ out DX, AL ; ee ; 0xf3698
+ mov al, ah ; 88 e0 ; 0xf3699 floppy.c:756
+ mov dx, 00081h ; ba 81 00 ; 0xf369b
+ out DX, AL ; ee ; 0xf369e
+ mov AL, strict byte 002h ; b0 02 ; 0xf369f floppy.c:759
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf36a1
+ out DX, AL ; ee ; 0xf36a4
+ movzx cx, bl ; 0f b6 cb ; 0xf36a5 floppy.c:764
+ mov ax, cx ; 89 c8 ; 0xf36a8
+ call 03099h ; e8 ec f9 ; 0xf36aa
+ mov AL, strict byte 0c5h ; b0 c5 ; 0xf36ad floppy.c:767
+ mov dx, 003f5h ; ba f5 03 ; 0xf36af
+ out DX, AL ; ee ; 0xf36b2
+ movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf36b3 floppy.c:768
+ sal dx, 002h ; c1 e2 02 ; 0xf36b7
+ movzx ax, bl ; 0f b6 c3 ; 0xf36ba
+ or ax, dx ; 09 d0 ; 0xf36bd
+ mov dx, 003f5h ; ba f5 03 ; 0xf36bf
+ out DX, AL ; ee ; 0xf36c2
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf36c3 floppy.c:769
+ out DX, AL ; ee ; 0xf36c6
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf36c7 floppy.c:770
+ out DX, AL ; ee ; 0xf36ca
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf36cb floppy.c:771
+ out DX, AL ; ee ; 0xf36ce
+ mov AL, strict byte 002h ; b0 02 ; 0xf36cf floppy.c:772
+ out DX, AL ; ee ; 0xf36d1
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf36d2 floppy.c:773
+ movzx ax, bh ; 0f b6 c7 ; 0xf36d6
+ add ax, dx ; 01 d0 ; 0xf36d9
+ dec ax ; 48 ; 0xf36db
+ mov dx, 003f5h ; ba f5 03 ; 0xf36dc
+ out DX, AL ; ee ; 0xf36df
+ xor al, al ; 30 c0 ; 0xf36e0 floppy.c:774
+ out DX, AL ; ee ; 0xf36e2
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf36e3 floppy.c:775
+ out DX, AL ; ee ; 0xf36e5
+ call 0301fh ; e8 36 f9 ; 0xf36e6 floppy.c:804
+ test al, al ; 84 c0 ; 0xf36e9 floppy.c:805
+ je near 0356dh ; 0f 84 7e fe ; 0xf36eb
+ mov dx, 003f4h ; ba f4 03 ; 0xf36ef floppy.c:816
+ in AL, DX ; ec ; 0xf36f2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf36f3
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf36f5 floppy.c:817
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf36f7
+ je short 03709h ; 74 0e ; 0xf36f9
+ push 002bfh ; 68 bf 02 ; 0xf36fb floppy.c:818
+ push 002f2h ; 68 f2 02 ; 0xf36fe
+ push strict byte 00007h ; 6a 07 ; 0xf3701
+ call 01a23h ; e8 1d e3 ; 0xf3703
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3706
+ xor cx, cx ; 31 c9 ; 0xf3709 floppy.c:821
+ jmp short 03712h ; eb 05 ; 0xf370b
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf370d
+ jnl short 03728h ; 7d 16 ; 0xf3710
+ mov dx, 003f5h ; ba f5 03 ; 0xf3712 floppy.c:822
+ in AL, DX ; ec ; 0xf3715
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3716
+ mov si, cx ; 89 ce ; 0xf3718
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf371a
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf371d floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf3720
+ mov byte [es:si], al ; 26 88 04 ; 0xf3722
+ inc cx ; 41 ; 0xf3725 floppy.c:822
+ jmp short 0370dh ; eb e5 ; 0xf3726
+ mov si, strict word 00042h ; be 42 00 ; 0xf3728 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf372b
+ mov es, ax ; 8e c0 ; 0xf372e
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3730
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3733 floppy.c:39
+ je near 03611h ; 0f 84 d8 fe ; 0xf3735
+ mov bx, strict word 00043h ; bb 43 00 ; 0xf3739 floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf373c
+ test AL, strict byte 002h ; a8 02 ; 0xf373f floppy.c:39
+ je short 0374bh ; 74 08 ; 0xf3741
+ mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf3743 floppy.c:829
+ jmp near 03b5eh ; e9 13 04 ; 0xf3748
+ mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf374b floppy.c:832
+ jmp near 03b5eh ; e9 0b 04 ; 0xf3750 floppy.c:833
+ movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf3753 floppy.c:848
+ movzx ax, bl ; 0f b6 c3 ; 0xf3757
+ call 02fd2h ; e8 75 f8 ; 0xf375a
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf375d floppy.c:850
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3761 floppy.c:851
+ jmp near 033c9h ; e9 61 fc ; 0xf3765 floppy.c:852
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3768 floppy.c:859
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf376b floppy.c:860
+ shr ax, 008h ; c1 e8 08 ; 0xf376e
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf3771
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf3774 floppy.c:861
+ shr dx, 008h ; c1 ea 08 ; 0xf3777
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf377a
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf377d floppy.c:862
+ cmp bl, 001h ; 80 fb 01 ; 0xf3780 floppy.c:864
+ jnbe short 03797h ; 77 12 ; 0xf3783
+ cmp dl, 001h ; 80 fa 01 ; 0xf3785
+ jnbe short 03797h ; 77 0d ; 0xf3788
+ cmp AL, strict byte 04fh ; 3c 4f ; 0xf378a
+ jnbe short 03797h ; 77 09 ; 0xf378c
+ test bh, bh ; 84 ff ; 0xf378e
+ je short 03797h ; 74 05 ; 0xf3790
+ cmp bh, 012h ; 80 ff 12 ; 0xf3792
+ jbe short 037b2h ; 76 1b ; 0xf3795
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3797 floppy.c:866
+ xor ah, ah ; 30 e4 ; 0xf379a
+ or ah, 001h ; 80 cc 01 ; 0xf379c
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf379f
+ mov si, strict word 00041h ; be 41 00 ; 0xf37a2 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf37a5
+ mov es, ax ; 8e c0 ; 0xf37a8
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf37aa
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf37ae floppy.c:868
+ movzx ax, bl ; 0f b6 c3 ; 0xf37b2 floppy.c:872
+ call 032c9h ; e8 11 fb ; 0xf37b5
+ test ax, ax ; 85 c0 ; 0xf37b8
+ jne short 037d6h ; 75 1a ; 0xf37ba
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf37bc floppy.c:873
+ xor ah, ah ; 30 e4 ; 0xf37bf
+ or ah, 080h ; 80 cc 80 ; 0xf37c1
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf37c4
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf37c7 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf37ca
+ mov es, ax ; 8e c0 ; 0xf37cd
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf37cf
+ jmp near 03b5eh ; e9 88 03 ; 0xf37d3
+ movzx cx, bl ; 0f b6 cb ; 0xf37d6 floppy.c:880
+ mov ax, cx ; 89 c8 ; 0xf37d9
+ call 0310dh ; e8 2f f9 ; 0xf37db
+ test ax, ax ; 85 c0 ; 0xf37de
+ jne short 037edh ; 75 0b ; 0xf37e0
+ mov ax, cx ; 89 c8 ; 0xf37e2 floppy.c:881
+ call 031e5h ; e8 fe f9 ; 0xf37e4
+ test ax, ax ; 85 c0 ; 0xf37e7
+ je near 03471h ; 0f 84 84 fc ; 0xf37e9
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf37ed floppy.c:892
+ shr dx, 00ch ; c1 ea 0c ; 0xf37f0
+ mov ah, dl ; 88 d4 ; 0xf37f3
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf37f5 floppy.c:893
+ sal cx, 004h ; c1 e1 04 ; 0xf37f8
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf37fb floppy.c:894
+ add si, cx ; 01 ce ; 0xf37fe
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3800
+ cmp cx, si ; 39 f1 ; 0xf3803 floppy.c:896
+ jbe short 03809h ; 76 02 ; 0xf3805
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf3807 floppy.c:898
+ movzx cx, bh ; 0f b6 cf ; 0xf3809 floppy.c:900
+ sal cx, 002h ; c1 e1 02 ; 0xf380c
+ dec cx ; 49 ; 0xf380f
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3810 floppy.c:903
+ add dx, cx ; 01 ca ; 0xf3813
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf3815 floppy.c:904
+ jc near 034c4h ; 0f 82 a8 fc ; 0xf3818
+ mov AL, strict byte 006h ; b0 06 ; 0xf381c floppy.c:912
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf381e
+ out DX, AL ; ee ; 0xf3821
+ xor al, al ; 30 c0 ; 0xf3822 floppy.c:913
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3824
+ out DX, AL ; ee ; 0xf3827
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3828 floppy.c:914
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf382b
+ out DX, AL ; ee ; 0xf382e
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf382f floppy.c:915
+ shr dx, 008h ; c1 ea 08 ; 0xf3832
+ mov al, dl ; 88 d0 ; 0xf3835
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3837
+ out DX, AL ; ee ; 0xf383a
+ xor al, al ; 30 c0 ; 0xf383b floppy.c:916
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf383d
+ out DX, AL ; ee ; 0xf3840
+ mov al, cl ; 88 c8 ; 0xf3841 floppy.c:917
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3843
+ out DX, AL ; ee ; 0xf3846
+ shr cx, 008h ; c1 e9 08 ; 0xf3847 floppy.c:918
+ mov al, cl ; 88 c8 ; 0xf384a
+ out DX, AL ; ee ; 0xf384c
+ mov AL, strict byte 04ah ; b0 4a ; 0xf384d floppy.c:921
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf384f
+ out DX, AL ; ee ; 0xf3852
+ mov al, ah ; 88 e0 ; 0xf3853 floppy.c:923
+ mov dx, 00081h ; ba 81 00 ; 0xf3855
+ out DX, AL ; ee ; 0xf3858
+ mov AL, strict byte 002h ; b0 02 ; 0xf3859 floppy.c:924
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf385b
+ out DX, AL ; ee ; 0xf385e
+ movzx cx, bl ; 0f b6 cb ; 0xf385f floppy.c:927
+ mov ax, cx ; 89 c8 ; 0xf3862
+ call 03099h ; e8 32 f8 ; 0xf3864
+ mov AL, strict byte 00fh ; b0 0f ; 0xf3867 floppy.c:930
+ mov dx, 003f5h ; ba f5 03 ; 0xf3869
+ out DX, AL ; ee ; 0xf386c
+ movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf386d floppy.c:931
+ sal dx, 002h ; c1 e2 02 ; 0xf3871
+ movzx ax, bl ; 0f b6 c3 ; 0xf3874
+ or dx, ax ; 09 c2 ; 0xf3877
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3879
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf387c
+ mov dx, 003f5h ; ba f5 03 ; 0xf387f
+ out DX, AL ; ee ; 0xf3882
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3883 floppy.c:932
+ out DX, AL ; ee ; 0xf3886
+ mov AL, strict byte 04dh ; b0 4d ; 0xf3887 floppy.c:935
+ out DX, AL ; ee ; 0xf3889
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf388a floppy.c:936
+ out DX, AL ; ee ; 0xf388d
+ mov AL, strict byte 002h ; b0 02 ; 0xf388e floppy.c:937
+ out DX, AL ; ee ; 0xf3890
+ mov al, bh ; 88 f8 ; 0xf3891 floppy.c:938
+ out DX, AL ; ee ; 0xf3893
+ xor al, bh ; 30 f8 ; 0xf3894 floppy.c:939
+ out DX, AL ; ee ; 0xf3896
+ mov AL, strict byte 0f6h ; b0 f6 ; 0xf3897 floppy.c:940
+ out DX, AL ; ee ; 0xf3899
+ call 0301fh ; e8 82 f7 ; 0xf389a floppy.c:968
+ test al, al ; 84 c0 ; 0xf389d floppy.c:969
+ jne short 038a9h ; 75 08 ; 0xf389f
+ mov ax, cx ; 89 c8 ; 0xf38a1 floppy.c:970
+ call 03057h ; e8 b1 f7 ; 0xf38a3
+ jmp near 037bch ; e9 13 ff ; 0xf38a6 floppy.c:68
+ mov dx, 003f4h ; ba f4 03 ; 0xf38a9 floppy.c:979
+ in AL, DX ; ec ; 0xf38ac
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf38ad
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf38af floppy.c:980
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf38b1
+ je short 038c3h ; 74 0e ; 0xf38b3
+ push 002bfh ; 68 bf 02 ; 0xf38b5 floppy.c:981
+ push 002f2h ; 68 f2 02 ; 0xf38b8
+ push strict byte 00007h ; 6a 07 ; 0xf38bb
+ call 01a23h ; e8 63 e1 ; 0xf38bd
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf38c0
+ xor cx, cx ; 31 c9 ; 0xf38c3 floppy.c:984
+ jmp short 038cch ; eb 05 ; 0xf38c5
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf38c7
+ jnl short 038e2h ; 7d 16 ; 0xf38ca
+ mov dx, 003f5h ; ba f5 03 ; 0xf38cc floppy.c:985
+ in AL, DX ; ec ; 0xf38cf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf38d0
+ mov si, cx ; 89 ce ; 0xf38d2
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf38d4
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf38d7 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf38da
+ mov byte [es:si], al ; 26 88 04 ; 0xf38dc
+ inc cx ; 41 ; 0xf38df floppy.c:985
+ jmp short 038c7h ; eb e5 ; 0xf38e0
+ mov si, strict word 00042h ; be 42 00 ; 0xf38e2 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf38e5
+ mov es, ax ; 8e c0 ; 0xf38e8
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf38ea
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf38ed floppy.c:39
+ je short 0390bh ; 74 1a ; 0xf38ef
+ mov si, strict word 00043h ; be 43 00 ; 0xf38f1 floppy.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf38f4
+ test AL, strict byte 002h ; a8 02 ; 0xf38f7 floppy.c:39
+ jne near 03743h ; 0f 85 46 fe ; 0xf38f9
+ push 002bfh ; 68 bf 02 ; 0xf38fd floppy.c:996
+ push 00306h ; 68 06 03 ; 0xf3900
+ push strict byte 00007h ; 6a 07 ; 0xf3903
+ call 01a23h ; e8 1b e1 ; 0xf3905
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3908
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf390b floppy.c:1000
+ mov si, strict word 00041h ; be 41 00 ; 0xf390f floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3912
+ mov es, ax ; 8e c0 ; 0xf3915
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf3917
+ movzx ax, bl ; 0f b6 c3 ; 0xf391b floppy.c:1002
+ xor dx, dx ; 31 d2 ; 0xf391e
+ call 02fd2h ; e8 af f6 ; 0xf3920
+ jmp near 0361fh ; e9 f9 fc ; 0xf3923
+ mov bl, ah ; 88 e3 ; 0xf3926 floppy.c:1009
+ cmp ah, 001h ; 80 fc 01 ; 0xf3928 floppy.c:1011
+ jbe short 0394ah ; 76 1d ; 0xf392b
+ xor ax, ax ; 31 c0 ; 0xf392d floppy.c:1012
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf392f
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf3932 floppy.c:1013
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf3935 floppy.c:1014
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf3938 floppy.c:1015
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf393b floppy.c:1016
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf393e floppy.c:1017
+ movzx ax, bh ; 0f b6 c7 ; 0xf3941 floppy.c:1018
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf3944
+ jmp near 03a6ch ; e9 22 01 ; 0xf3947
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf394a floppy.c:1019
+ call 01765h ; e8 15 de ; 0xf394d
+ mov dl, al ; 88 c2 ; 0xf3950
+ xor bh, bh ; 30 ff ; 0xf3952 floppy.c:1025
+ test AL, strict byte 0f0h ; a8 f0 ; 0xf3954 floppy.c:1026
+ je short 0395ah ; 74 02 ; 0xf3956
+ mov BH, strict byte 001h ; b7 01 ; 0xf3958 floppy.c:1027
+ test dl, 00fh ; f6 c2 0f ; 0xf395a floppy.c:1028
+ je short 03961h ; 74 02 ; 0xf395d
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf395f floppy.c:1029
+ test bl, bl ; 84 db ; 0xf3961 floppy.c:1031
+ jne short 0396ah ; 75 05 ; 0xf3963
+ shr dl, 004h ; c0 ea 04 ; 0xf3965 floppy.c:1032
+ jmp short 0396dh ; eb 03 ; 0xf3968 floppy.c:1033
+ and dl, 00fh ; 80 e2 0f ; 0xf396a floppy.c:1034
+ mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf396d floppy.c:1037
+ movzx ax, dl ; 0f b6 c2 ; 0xf3971
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf3974
+ mov word [bp+016h], strict word 00000h ; c7 46 16 00 00 ; 0xf3977 floppy.c:1038
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf397c floppy.c:1040
+ xor cl, cl ; 30 c9 ; 0xf397f
+ movzx ax, bh ; 0f b6 c7 ; 0xf3981
+ or cx, ax ; 09 c1 ; 0xf3984
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf3986
+ mov ax, cx ; 89 c8 ; 0xf3989 floppy.c:1041
+ xor ah, ch ; 30 ec ; 0xf398b
+ or ah, 001h ; 80 cc 01 ; 0xf398d
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf3990
+ cmp dl, 003h ; 80 fa 03 ; 0xf3993 floppy.c:1043
+ jc short 039adh ; 72 15 ; 0xf3996
+ jbe short 039d4h ; 76 3a ; 0xf3998
+ cmp dl, 005h ; 80 fa 05 ; 0xf399a
+ jc short 039dbh ; 72 3c ; 0xf399d
+ jbe short 039e2h ; 76 41 ; 0xf399f
+ cmp dl, 00fh ; 80 fa 0f ; 0xf39a1
+ je short 039f0h ; 74 4a ; 0xf39a4
+ cmp dl, 00eh ; 80 fa 0e ; 0xf39a6
+ je short 039e9h ; 74 3e ; 0xf39a9
+ jmp short 039f7h ; eb 4a ; 0xf39ab
+ cmp dl, 002h ; 80 fa 02 ; 0xf39ad
+ je short 039cdh ; 74 1b ; 0xf39b0
+ cmp dl, 001h ; 80 fa 01 ; 0xf39b2
+ je short 039c6h ; 74 0f ; 0xf39b5
+ test dl, dl ; 84 d2 ; 0xf39b7
+ jne short 039f7h ; 75 3c ; 0xf39b9
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf39bb floppy.c:1045
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf39c0 floppy.c:1046
+ jmp short 03a05h ; eb 3f ; 0xf39c4 floppy.c:1047
+ mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf39c6 floppy.c:1050
+ jmp short 03a05h ; eb 38 ; 0xf39cb floppy.c:1051
+ mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf39cd floppy.c:1054
+ jmp short 03a05h ; eb 31 ; 0xf39d2 floppy.c:1055
+ mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf39d4 floppy.c:1058
+ jmp short 03a05h ; eb 2a ; 0xf39d9 floppy.c:1059
+ mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf39db floppy.c:1062
+ jmp short 03a05h ; eb 23 ; 0xf39e0 floppy.c:1063
+ mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf39e2 floppy.c:1066
+ jmp short 03a05h ; eb 1c ; 0xf39e7 floppy.c:1067
+ mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf39e9 floppy.c:1070
+ jmp short 03a05h ; eb 15 ; 0xf39ee floppy.c:1071
+ mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf39f0 floppy.c:1074
+ jmp short 03a05h ; eb 0e ; 0xf39f5 floppy.c:1075
+ push 002bfh ; 68 bf 02 ; 0xf39f7 floppy.c:1079
+ push 00317h ; 68 17 03 ; 0xf39fa
+ push strict byte 00007h ; 6a 07 ; 0xf39fd
+ call 01a23h ; e8 21 e0 ; 0xf39ff
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3a02
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3a05 floppy.c:1083
+ movzx ax, dl ; 0f b6 c2 ; 0xf3a0a floppy.c:1084
+ call 03c94h ; e8 84 02 ; 0xf3a0d
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3a10
+ jmp near 0361fh ; e9 09 fc ; 0xf3a13
+ mov bl, ah ; 88 e3 ; 0xf3a16 floppy.c:1091
+ cmp ah, 001h ; 80 fc 01 ; 0xf3a18 floppy.c:1092
+ jbe short 03a22h ; 76 05 ; 0xf3a1b
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf3a1d floppy.c:1093
+ jmp short 03a6ch ; eb 4a ; 0xf3a20
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3a22 floppy.c:1099
+ call 01765h ; e8 3d dd ; 0xf3a25
+ test bl, bl ; 84 db ; 0xf3a28 floppy.c:1100
+ jne short 03a33h ; 75 07 ; 0xf3a2a
+ mov dl, al ; 88 c2 ; 0xf3a2c floppy.c:1101
+ shr dl, 004h ; c0 ea 04 ; 0xf3a2e
+ jmp short 03a38h ; eb 05 ; 0xf3a31 floppy.c:1102
+ mov dl, al ; 88 c2 ; 0xf3a33 floppy.c:1103
+ and dl, 00fh ; 80 e2 0f ; 0xf3a35
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3a38 floppy.c:1104
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a3c
+ xor ah, ah ; 30 e4 ; 0xf3a3f
+ test dl, dl ; 84 d2 ; 0xf3a41 floppy.c:1105
+ je short 03a52h ; 74 0d ; 0xf3a43
+ cmp dl, 001h ; 80 fa 01 ; 0xf3a45 floppy.c:1106
+ jbe short 03a4fh ; 76 05 ; 0xf3a48
+ or ah, 002h ; 80 cc 02 ; 0xf3a4a floppy.c:1108
+ jmp short 03a52h ; eb 03 ; 0xf3a4d floppy.c:1109
+ or ah, 001h ; 80 cc 01 ; 0xf3a4f floppy.c:1110
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3a52
+ jmp near 033c9h ; e9 71 f9 ; 0xf3a55 floppy.c:1113
+ cmp ah, 001h ; 80 fc 01 ; 0xf3a58 floppy.c:1118
+ jbe short 03a72h ; 76 15 ; 0xf3a5b
+ mov word [bp+016h], si ; 89 76 16 ; 0xf3a5d floppy.c:1119
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a60 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a63
+ mov es, ax ; 8e c0 ; 0xf3a66
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3a68
+ mov word [bp+01ch], cx ; 89 4e 1c ; 0xf3a6c
+ jmp near 033c9h ; e9 57 f9 ; 0xf3a6f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a72 floppy.c:1125
+ xor ah, ah ; 30 e4 ; 0xf3a75
+ or ah, 006h ; 80 cc 06 ; 0xf3a77
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3a7a
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a7d floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a80
+ mov es, ax ; 8e c0 ; 0xf3a83
+ mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf3a85
+ jmp near 03b5eh ; e9 d2 00 ; 0xf3a89
+ mov bl, ah ; 88 e3 ; 0xf3a8c floppy.c:1134
+ mov dl, byte [bp+016h] ; 8a 56 16 ; 0xf3a8e floppy.c:1142
+ cmp ah, 001h ; 80 fc 01 ; 0xf3a91 floppy.c:1146
+ jnbe short 03a5dh ; 77 c7 ; 0xf3a94
+ movzx ax, bl ; 0f b6 c3 ; 0xf3a96 floppy.c:1154
+ call 032c9h ; e8 2d f8 ; 0xf3a99
+ test ax, ax ; 85 c0 ; 0xf3a9c
+ je near 037bch ; 0f 84 1a fd ; 0xf3a9e
+ test bl, bl ; 84 db ; 0xf3aa2 floppy.c:1162
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf3aa4
+ movzx bx, al ; 0f b6 d8 ; 0xf3aa7
+ add bx, 00090h ; 81 c3 90 00 ; 0xf3aaa
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf3aae
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3ab1 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3ab4
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf3ab6
+ and bl, 00fh ; 80 e3 0f ; 0xf3ab9 floppy.c:1166
+ cmp dl, 002h ; 80 fa 02 ; 0xf3abc floppy.c:1168
+ jc short 03ad0h ; 72 0f ; 0xf3abf
+ jbe short 03addh ; 76 1a ; 0xf3ac1
+ cmp dl, 004h ; 80 fa 04 ; 0xf3ac3
+ je short 03ad8h ; 74 10 ; 0xf3ac6
+ cmp dl, 003h ; 80 fa 03 ; 0xf3ac8
+ je short 03ae2h ; 74 15 ; 0xf3acb
+ jmp near 03358h ; e9 88 f8 ; 0xf3acd
+ cmp dl, 001h ; 80 fa 01 ; 0xf3ad0
+ je short 03ad8h ; 74 03 ; 0xf3ad3
+ jmp near 03358h ; e9 80 f8 ; 0xf3ad5
+ or bl, 090h ; 80 cb 90 ; 0xf3ad8 floppy.c:1171
+ jmp short 03ae5h ; eb 08 ; 0xf3adb floppy.c:1172
+ or bl, 070h ; 80 cb 70 ; 0xf3add floppy.c:1175
+ jmp short 03ae5h ; eb 03 ; 0xf3ae0 floppy.c:1176
+ or bl, 010h ; 80 cb 10 ; 0xf3ae2 floppy.c:1179
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3ae5 floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf3ae8
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3aea
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3aed
+ xor al, al ; 30 c0 ; 0xf3af0 floppy.c:1198
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf3af2
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3af5 floppy.c:43
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3af8
+ jmp near 0361fh ; e9 21 fb ; 0xf3afb
+ mov bl, ah ; 88 e3 ; 0xf3afe floppy.c:1208
+ mov dl, byte [bp+014h] ; 8a 56 14 ; 0xf3b00 floppy.c:1210
+ mov bh, dl ; 88 d7 ; 0xf3b03 floppy.c:1211
+ and bh, 03fh ; 80 e7 3f ; 0xf3b05
+ xor dh, dh ; 30 f6 ; 0xf3b08 floppy.c:1212
+ sar dx, 006h ; c1 fa 06 ; 0xf3b0a
+ sal dx, 008h ; c1 e2 08 ; 0xf3b0d
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3b10
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf3b13
+ shr dx, 008h ; c1 ea 08 ; 0xf3b16
+ add dx, word [bp-00ch] ; 03 56 f4 ; 0xf3b19
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf3b1c
+ cmp ah, 001h ; 80 fc 01 ; 0xf3b1f floppy.c:1217
+ jnbe near 03a5dh ; 0f 87 37 ff ; 0xf3b22
+ movzx ax, bl ; 0f b6 c3 ; 0xf3b26 floppy.c:1225
+ call 032c9h ; e8 9d f7 ; 0xf3b29
+ test ax, ax ; 85 c0 ; 0xf3b2c
+ je near 037bch ; 0f 84 8a fc ; 0xf3b2e
+ movzx cx, bl ; 0f b6 cb ; 0xf3b32 floppy.c:1233
+ mov ax, cx ; 89 c8 ; 0xf3b35
+ call 0310dh ; e8 d3 f5 ; 0xf3b37
+ test ax, ax ; 85 c0 ; 0xf3b3a
+ jne short 03b65h ; 75 27 ; 0xf3b3c
+ mov ax, cx ; 89 c8 ; 0xf3b3e floppy.c:1234
+ call 031e5h ; e8 a2 f6 ; 0xf3b40
+ test ax, ax ; 85 c0 ; 0xf3b43
+ jne short 03b65h ; 75 1e ; 0xf3b45
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3b47 floppy.c:1235
+ xor ah, ah ; 30 e4 ; 0xf3b4a
+ or ah, 00ch ; 80 cc 0c ; 0xf3b4c
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3b4f
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3b52 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b55
+ mov es, ax ; 8e c0 ; 0xf3b58
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3b5a
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3b5e
+ jmp near 033c9h ; e9 64 f8 ; 0xf3b62
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3b65 floppy.c:1243
+ call 01765h ; e8 fa db ; 0xf3b68
+ test bl, bl ; 84 db ; 0xf3b6b floppy.c:1244
+ jne short 03b76h ; 75 07 ; 0xf3b6d
+ mov dl, al ; 88 c2 ; 0xf3b6f floppy.c:1245
+ shr dl, 004h ; c0 ea 04 ; 0xf3b71
+ jmp short 03b7bh ; eb 05 ; 0xf3b74 floppy.c:1246
+ mov dl, al ; 88 c2 ; 0xf3b76 floppy.c:1247
+ and dl, 00fh ; 80 e2 0f ; 0xf3b78
+ test bl, bl ; 84 db ; 0xf3b7b floppy.c:1250
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf3b7d
+ movzx si, al ; 0f b6 f0 ; 0xf3b80
+ add si, 00090h ; 81 c6 90 00 ; 0xf3b83
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3b87
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b8a floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3b8d
+ mov bl, byte [es:si] ; 26 8a 1c ; 0xf3b8f
+ and bl, 00fh ; 80 e3 0f ; 0xf3b92 floppy.c:39
+ cmp dl, 003h ; 80 fa 03 ; 0xf3b95 floppy.c:1256
+ jc short 03bb7h ; 72 1d ; 0xf3b98
+ mov al, bl ; 88 d8 ; 0xf3b9a
+ or AL, strict byte 090h ; 0c 90 ; 0xf3b9c
+ cmp dl, 003h ; 80 fa 03 ; 0xf3b9e
+ jbe short 03bf8h ; 76 55 ; 0xf3ba1
+ mov ah, bl ; 88 dc ; 0xf3ba3
+ or ah, 010h ; 80 cc 10 ; 0xf3ba5
+ cmp dl, 005h ; 80 fa 05 ; 0xf3ba8
+ je near 03c1dh ; 0f 84 6e 00 ; 0xf3bab
+ cmp dl, 004h ; 80 fa 04 ; 0xf3baf
+ je short 03c07h ; 74 53 ; 0xf3bb2
+ jmp near 03c39h ; e9 82 00 ; 0xf3bb4
+ cmp dl, 002h ; 80 fa 02 ; 0xf3bb7
+ je short 03bd8h ; 74 1c ; 0xf3bba
+ cmp dl, 001h ; 80 fa 01 ; 0xf3bbc
+ jne near 03c39h ; 0f 85 76 00 ; 0xf3bbf
+ cmp byte [bp-002h], 027h ; 80 7e fe 27 ; 0xf3bc3 floppy.c:1258
+ jne near 03c39h ; 0f 85 6e 00 ; 0xf3bc7
+ cmp bh, 009h ; 80 ff 09 ; 0xf3bcb
+ jne near 03c39h ; 0f 85 67 00 ; 0xf3bce
+ or bl, 090h ; 80 cb 90 ; 0xf3bd2 floppy.c:1259
+ jmp near 03c39h ; e9 61 00 ; 0xf3bd5 floppy.c:1261
+ cmp byte [bp-002h], 027h ; 80 7e fe 27 ; 0xf3bd8 floppy.c:1263
+ jne short 03be8h ; 75 0a ; 0xf3bdc
+ cmp bh, 009h ; 80 ff 09 ; 0xf3bde
+ jne short 03be8h ; 75 05 ; 0xf3be1
+ or bl, 070h ; 80 cb 70 ; 0xf3be3 floppy.c:1264
+ jmp short 03c39h ; eb 51 ; 0xf3be6 floppy.c:1265
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3be8
+ jne short 03c39h ; 75 4b ; 0xf3bec
+ cmp bh, 00fh ; 80 ff 0f ; 0xf3bee
+ jne short 03c39h ; 75 46 ; 0xf3bf1
+ or bl, 010h ; 80 cb 10 ; 0xf3bf3 floppy.c:1266
+ jmp short 03c39h ; eb 41 ; 0xf3bf6 floppy.c:1268
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3bf8 floppy.c:1270
+ jne short 03c39h ; 75 3b ; 0xf3bfc
+ cmp bh, 009h ; 80 ff 09 ; 0xf3bfe
+ jne short 03c39h ; 75 36 ; 0xf3c01
+ mov bl, al ; 88 c3 ; 0xf3c03 floppy.c:1271
+ jmp short 03c39h ; eb 32 ; 0xf3c05 floppy.c:1273
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3c07 floppy.c:1275
+ jne short 03c39h ; 75 2c ; 0xf3c0b
+ cmp bh, 009h ; 80 ff 09 ; 0xf3c0d floppy.c:1276
+ jne short 03c14h ; 75 02 ; 0xf3c10
+ jmp short 03c03h ; eb ef ; 0xf3c12
+ cmp bh, 012h ; 80 ff 12 ; 0xf3c14 floppy.c:1277
+ jne short 03c39h ; 75 20 ; 0xf3c17
+ mov bl, ah ; 88 e3 ; 0xf3c19 floppy.c:1279
+ jmp short 03c39h ; eb 1c ; 0xf3c1b floppy.c:1282
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3c1d floppy.c:1284
+ jne short 03c39h ; 75 16 ; 0xf3c21
+ cmp bh, 009h ; 80 ff 09 ; 0xf3c23 floppy.c:1285
+ jne short 03c2ah ; 75 02 ; 0xf3c26
+ jmp short 03c03h ; eb d9 ; 0xf3c28
+ cmp bh, 012h ; 80 ff 12 ; 0xf3c2a floppy.c:1286
+ jne short 03c31h ; 75 02 ; 0xf3c2d
+ jmp short 03c19h ; eb e8 ; 0xf3c2f
+ cmp bh, 024h ; 80 ff 24 ; 0xf3c31 floppy.c:1288
+ jne short 03c39h ; 75 03 ; 0xf3c34
+ or bl, 0d0h ; 80 cb d0 ; 0xf3c36 floppy.c:1290
+ movzx ax, bl ; 0f b6 c3 ; 0xf3c39 floppy.c:1299
+ sar ax, 004h ; c1 f8 04 ; 0xf3c3c
+ test AL, strict byte 001h ; a8 01 ; 0xf3c3f
+ je near 03b47h ; 0f 84 02 ff ; 0xf3c41
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c45 floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf3c48
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3c4a
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3c4d
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3c50 floppy.c:1312
+ movzx ax, dl ; 0f b6 c2 ; 0xf3c55 floppy.c:1313
+ call 03c94h ; e8 39 00 ; 0xf3c58
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3c5b
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3c5e floppy.c:1316
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3c62 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c65
+ mov es, ax ; 8e c0 ; 0xf3c68
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3c6a
+ jmp near 0361fh ; e9 ae f9 ; 0xf3c6e
+ mov bx, 00f24h ; bb 24 0f ; 0xf3c71 floppy.c:1322
+ mov cx, ds ; 8c d9 ; 0xf3c74
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3c76
+ call 019e2h ; e8 66 dd ; 0xf3c79
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3c7c
+ shr ax, 008h ; c1 e8 08 ; 0xf3c7f
+ push ax ; 50 ; 0xf3c82
+ push 002bfh ; 68 bf 02 ; 0xf3c83
+ push 0032ch ; 68 2c 03 ; 0xf3c86
+ push strict byte 00004h ; 6a 04 ; 0xf3c89
+ call 01a23h ; e8 95 dd ; 0xf3c8b
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3c8e
+ jmp near 03358h ; e9 c4 f6 ; 0xf3c91 floppy.c:68
+ ; disGetNextSymbol 0xf3c94 LB 0x76b8 -> off=0x0 cb=000000000000002f uValue=00000000000f2694 'get_floppy_dpt'
+get_floppy_dpt: ; 0xf3c94 LB 0x2f
+ push bx ; 53 ; 0xf3c94 floppyt.c:94
+ push dx ; 52 ; 0xf3c95
+ push bp ; 55 ; 0xf3c96
+ mov bp, sp ; 89 e5 ; 0xf3c97
+ mov dl, al ; 88 c2 ; 0xf3c99
+ xor ax, ax ; 31 c0 ; 0xf3c9b floppyt.c:98
+ jmp short 03ca5h ; eb 06 ; 0xf3c9d
+ inc ax ; 40 ; 0xf3c9f floppyt.c:100
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3ca0
+ jnc short 03cbch ; 73 17 ; 0xf3ca3
+ mov bx, ax ; 89 c3 ; 0xf3ca5
+ add bx, ax ; 01 c3 ; 0xf3ca7
+ cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3ca9
+ jne short 03c9fh ; 75 f0 ; 0xf3cad
+ movzx ax, byte [word bx+0005ch] ; 0f b6 87 5c 00 ; 0xf3caf
+ imul ax, ax, strict byte 0000dh ; 6b c0 0d ; 0xf3cb4
+ add ax, strict word 00000h ; 05 00 00 ; 0xf3cb7
+ jmp short 03cbfh ; eb 03 ; 0xf3cba
+ mov ax, strict word 00041h ; b8 41 00 ; 0xf3cbc floppyt.c:103
+ pop bp ; 5d ; 0xf3cbf floppyt.c:104
+ pop dx ; 5a ; 0xf3cc0
+ pop bx ; 5b ; 0xf3cc1
+ retn ; c3 ; 0xf3cc2
+ ; disGetNextSymbol 0xf3cc3 LB 0x7689 -> off=0x0 cb=0000000000000007 uValue=00000000000f26c3 'dummy_soft_reset'
+dummy_soft_reset: ; 0xf3cc3 LB 0x7
+ push bp ; 55 ; 0xf3cc3 eltorito.c:129
+ mov bp, sp ; 89 e5 ; 0xf3cc4
+ xor ax, ax ; 31 c0 ; 0xf3cc6 eltorito.c:132
+ pop bp ; 5d ; 0xf3cc8
+ retn ; c3 ; 0xf3cc9
+ ; disGetNextSymbol 0xf3cca LB 0x7682 -> off=0x0 cb=0000000000000017 uValue=00000000000f26ca 'cdemu_init'
+cdemu_init: ; 0xf3cca LB 0x17
+ push bp ; 55 ; 0xf3cca eltorito.c:158
+ mov bp, sp ; 89 e5 ; 0xf3ccb
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3ccd eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3cd0
+ mov es, ax ; 8e c0 ; 0xf3cd3
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3cd5
+ mov bx, 0031eh ; bb 1e 03 ; 0xf3cd8 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3cdb
+ pop bp ; 5d ; 0xf3cdf eltorito.c:165
+ retn ; c3 ; 0xf3ce0
+ ; disGetNextSymbol 0xf3ce1 LB 0x766b -> off=0x0 cb=0000000000000016 uValue=00000000000f26e1 'cdemu_isactive'
+cdemu_isactive: ; 0xf3ce1 LB 0x16
+ push bp ; 55 ; 0xf3ce1 eltorito.c:167
+ mov bp, sp ; 89 e5 ; 0xf3ce2
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3ce4 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3ce7
+ mov es, ax ; 8e c0 ; 0xf3cea
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3cec
+ mov bx, 0031eh ; bb 1e 03 ; 0xf3cef eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3cf2
+ pop bp ; 5d ; 0xf3cf5 eltorito.c:173
+ retn ; c3 ; 0xf3cf6
+ ; disGetNextSymbol 0xf3cf7 LB 0x7655 -> off=0x0 cb=0000000000000016 uValue=00000000000f26f7 'cdemu_emulated_drive'
+cdemu_emulated_drive: ; 0xf3cf7 LB 0x16
+ push bp ; 55 ; 0xf3cf7 eltorito.c:175
+ mov bp, sp ; 89 e5 ; 0xf3cf8
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3cfa eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3cfd
+ mov es, ax ; 8e c0 ; 0xf3d00
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3d02
+ mov bx, 00320h ; bb 20 03 ; 0xf3d05 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3d08
+ pop bp ; 5d ; 0xf3d0b eltorito.c:181
+ retn ; c3 ; 0xf3d0c
+ ; disGetNextSymbol 0xf3d0d LB 0x763f -> off=0x0 cb=000000000000017a uValue=00000000000f270d 'int13_eltorito'
+int13_eltorito: ; 0xf3d0d LB 0x17a
+ push bp ; 55 ; 0xf3d0d eltorito.c:187
+ mov bp, sp ; 89 e5 ; 0xf3d0e
+ push si ; 56 ; 0xf3d10
+ push di ; 57 ; 0xf3d11
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d12 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3d15
+ mov es, ax ; 8e c0 ; 0xf3d18
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf3d1a
+ mov bx, 0031eh ; bb 1e 03 ; 0xf3d1d eltorito.c:193
+ mov si, word [bp+016h] ; 8b 76 16 ; 0xf3d20 eltorito.c:199
+ shr si, 008h ; c1 ee 08 ; 0xf3d23
+ cmp si, strict byte 0004bh ; 83 fe 4b ; 0xf3d26
+ jc short 03d35h ; 72 0a ; 0xf3d29
+ jbe short 03d5bh ; 76 2e ; 0xf3d2b
+ cmp si, strict byte 0004dh ; 83 fe 4d ; 0xf3d2d
+ jbe short 03d3ch ; 76 0a ; 0xf3d30
+ jmp near 03e4dh ; e9 18 01 ; 0xf3d32
+ cmp si, strict byte 0004ah ; 83 fe 4a ; 0xf3d35
+ jne near 03e4dh ; 0f 85 11 01 ; 0xf3d38
+ mov bx, 00f24h ; bb 24 0f ; 0xf3d3c eltorito.c:205
+ mov cx, ds ; 8c d9 ; 0xf3d3f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3d41
+ call 019e2h ; e8 9b dc ; 0xf3d44
+ push word [bp+016h] ; ff 76 16 ; 0xf3d47
+ push 00346h ; 68 46 03 ; 0xf3d4a
+ push 00355h ; 68 55 03 ; 0xf3d4d
+ push strict byte 00004h ; 6a 04 ; 0xf3d50
+ call 01a23h ; e8 ce dc ; 0xf3d52
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3d55
+ jmp near 03e68h ; e9 0d 01 ; 0xf3d58 eltorito.c:206
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf3d5b eltorito.c:41
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d5e
+ mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3d61
+ inc si ; 46 ; 0xf3d65 eltorito.c:213
+ mov ax, es ; 8c c0 ; 0xf3d66 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3d68
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3d6a
+ mov es, ax ; 8e c0 ; 0xf3d6e eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d70
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d73 eltorito.c:214
+ inc si ; 46 ; 0xf3d76
+ inc si ; 46 ; 0xf3d77
+ mov es, di ; 8e c7 ; 0xf3d78 eltorito.c:41
+ mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3d7a
+ mov es, ax ; 8e c0 ; 0xf3d7e eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d80
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d83 eltorito.c:215
+ add si, strict byte 00003h ; 83 c6 03 ; 0xf3d86
+ mov es, di ; 8e c7 ; 0xf3d89 eltorito.c:41
+ mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3d8b
+ mov es, ax ; 8e c0 ; 0xf3d8f eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d91
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d94 eltorito.c:216
+ add si, strict byte 00004h ; 83 c6 04 ; 0xf3d97
+ mov es, di ; 8e c7 ; 0xf3d9a eltorito.c:61
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3d9c
+ mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3da0
+ mov es, ax ; 8e c0 ; 0xf3da4 eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3da6
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3da9
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dad eltorito.c:217
+ add si, strict byte 00008h ; 83 c6 08 ; 0xf3db0
+ mov es, di ; 8e c7 ; 0xf3db3 eltorito.c:51
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3db5
+ mov es, ax ; 8e c0 ; 0xf3db9 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3dbb
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dbe eltorito.c:218
+ add si, strict byte 0000ah ; 83 c6 0a ; 0xf3dc1
+ mov es, di ; 8e c7 ; 0xf3dc4 eltorito.c:51
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3dc6
+ mov es, ax ; 8e c0 ; 0xf3dca eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3dcc
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dcf eltorito.c:219
+ add si, strict byte 0000ch ; 83 c6 0c ; 0xf3dd2
+ mov es, di ; 8e c7 ; 0xf3dd5 eltorito.c:51
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3dd7
+ mov es, ax ; 8e c0 ; 0xf3ddb eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3ddd
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3de0 eltorito.c:220
+ add si, strict byte 0000eh ; 83 c6 0e ; 0xf3de3
+ mov es, di ; 8e c7 ; 0xf3de6 eltorito.c:51
+ mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3de8
+ mov es, ax ; 8e c0 ; 0xf3dec eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3dee
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3df1 eltorito.c:221
+ add si, strict byte 00010h ; 83 c6 10 ; 0xf3df4
+ mov es, di ; 8e c7 ; 0xf3df7 eltorito.c:41
+ mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3df9
+ mov es, ax ; 8e c0 ; 0xf3dfd eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3dff
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3e02 eltorito.c:222
+ add si, strict byte 00011h ; 83 c6 11 ; 0xf3e05
+ mov es, di ; 8e c7 ; 0xf3e08 eltorito.c:41
+ mov dl, byte [es:bx+014h] ; 26 8a 57 14 ; 0xf3e0a
+ mov es, ax ; 8e c0 ; 0xf3e0e eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3e10
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3e13 eltorito.c:223
+ add si, strict byte 00012h ; 83 c6 12 ; 0xf3e16
+ mov dx, ax ; 89 c2 ; 0xf3e19 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3e1b
+ mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3e1d
+ mov es, dx ; 8e c2 ; 0xf3e21 eltorito.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf3e23
+ test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3e26 eltorito.c:226
+ jne short 03e32h ; 75 06 ; 0xf3e2a
+ mov es, di ; 8e c7 ; 0xf3e2c eltorito.c:228
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3e2e
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3e32 eltorito.c:231
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3e36
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3e39
+ mov es, ax ; 8e c0 ; 0xf3e3c
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3e3e
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3e42
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3e46
+ pop di ; 5f ; 0xf3e49
+ pop si ; 5e ; 0xf3e4a
+ pop bp ; 5d ; 0xf3e4b
+ retn ; c3 ; 0xf3e4c
+ mov bx, 00f24h ; bb 24 0f ; 0xf3e4d eltorito.c:235
+ mov cx, ds ; 8c d9 ; 0xf3e50
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3e52
+ call 019e2h ; e8 8a db ; 0xf3e55
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf3e58
+ shr bx, 008h ; c1 eb 08 ; 0xf3e5b
+ push bx ; 53 ; 0xf3e5e
+ push 00346h ; 68 46 03 ; 0xf3e5f
+ push 0037dh ; 68 7d 03 ; 0xf3e62
+ jmp near 03d50h ; e9 e8 fe ; 0xf3e65
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3e68 eltorito.c:241
+ xor ah, ah ; 30 e4 ; 0xf3e6b
+ or ah, 001h ; 80 cc 01 ; 0xf3e6d
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3e70
+ shr ax, 008h ; c1 e8 08 ; 0xf3e73 eltorito.c:242
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3e76 eltorito.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3e79
+ mov es, dx ; 8e c2 ; 0xf3e7c
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3e7e
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3e81 eltorito.c:243
+ jmp short 03e46h ; eb bf ; 0xf3e85 eltorito.c:244
+ ; disGetNextSymbol 0xf3e87 LB 0x74c5 -> off=0x0 cb=0000000000000032 uValue=00000000000f2887 'device_is_cdrom'
+device_is_cdrom: ; 0xf3e87 LB 0x32
+ push bx ; 53 ; 0xf3e87 eltorito.c:259
+ push dx ; 52 ; 0xf3e88
+ push bp ; 55 ; 0xf3e89
+ mov bp, sp ; 89 e5 ; 0xf3e8a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e8c eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3e8f
+ mov es, dx ; 8e c2 ; 0xf3e92
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf3e94
+ cmp AL, strict byte 014h ; 3c 14 ; 0xf3e97 eltorito.c:265
+ jc short 03e9fh ; 72 04 ; 0xf3e99
+ xor ax, ax ; 31 c0 ; 0xf3e9b eltorito.c:266
+ jmp short 03eb5h ; eb 16 ; 0xf3e9d
+ xor ah, ah ; 30 e4 ; 0xf3e9f eltorito.c:271
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3ea1
+ mov es, bx ; 8e c3 ; 0xf3ea4
+ mov bx, ax ; 89 c3 ; 0xf3ea6
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3ea8
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf3eab
+ jne short 03e9bh ; 75 e9 ; 0xf3eb0
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3eb2 eltorito.c:272
+ pop bp ; 5d ; 0xf3eb5 eltorito.c:275
+ pop dx ; 5a ; 0xf3eb6
+ pop bx ; 5b ; 0xf3eb7
+ retn ; c3 ; 0xf3eb8
+ ; disGetNextSymbol 0xf3eb9 LB 0x7493 -> off=0x0 cb=00000000000003ab uValue=00000000000f28b9 'cdrom_boot'
+cdrom_boot: ; 0xf3eb9 LB 0x3ab
+ push bp ; 55 ; 0xf3eb9 eltorito.c:285
+ mov bp, sp ; 89 e5 ; 0xf3eba
+ push bx ; 53 ; 0xf3ebc
+ push cx ; 51 ; 0xf3ebd
+ push dx ; 52 ; 0xf3ebe
+ push si ; 56 ; 0xf3ebf
+ push di ; 57 ; 0xf3ec0
+ sub sp, 0081ch ; 81 ec 1c 08 ; 0xf3ec1
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3ec5 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3ec8
+ mov es, ax ; 8e c0 ; 0xf3ecb
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf3ecd
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf3ed0 eltorito.c:49
+ mov si, 0031eh ; be 1e 03 ; 0xf3ed3 eltorito.c:298
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf3ed6
+ mov word [bp-012h], strict word 0005eh ; c7 46 ee 5e 00 ; 0xf3ed9 eltorito.c:299
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf3ede
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3ee1 eltorito.c:302
+ jmp short 03ef0h ; eb 09 ; 0xf3ee5
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf3ee7 eltorito.c:305
+ cmp byte [bp-00eh], 014h ; 80 7e f2 14 ; 0xf3eea
+ jnc short 03efbh ; 73 0b ; 0xf3eee
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3ef0
+ call 03e87h ; e8 90 ff ; 0xf3ef4
+ test ax, ax ; 85 c0 ; 0xf3ef7
+ je short 03ee7h ; 74 ec ; 0xf3ef9
+ cmp byte [bp-00eh], 014h ; 80 7e f2 14 ; 0xf3efb eltorito.c:308
+ jc short 03f07h ; 72 06 ; 0xf3eff
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf3f01 eltorito.c:309
+ jmp near 0425ah ; e9 53 03 ; 0xf3f04
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3f07 eltorito.c:312
+ xor bx, bx ; 31 db ; 0xf3f0a
+ mov dx, ss ; 8c d2 ; 0xf3f0c
+ lea ax, [bp-026h] ; 8d 46 da ; 0xf3f0e
+ call 0b2b0h ; e8 9c 73 ; 0xf3f11
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3f14 eltorito.c:313
+ mov ax, strict word 00011h ; b8 11 00 ; 0xf3f19 eltorito.c:314
+ xor dx, dx ; 31 d2 ; 0xf3f1c
+ xchg ah, al ; 86 c4 ; 0xf3f1e
+ xchg dh, dl ; 86 d6 ; 0xf3f20
+ xchg dx, ax ; 92 ; 0xf3f22
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3f23
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3f26
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3f29 eltorito.c:315
+ xchg ah, al ; 86 c4 ; 0xf3f2c
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3f2e
+ les bx, [bp-012h] ; c4 5e ee ; 0xf3f31 eltorito.c:317
+ db 066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 008h
+ ; mov dword [es:bx+00eh], strict dword 008000001h ; 66 26 c7 47 0e 01 00 00 08; 0xf3f34
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3f3d eltorito.c:320
+ jmp short 03f4ch ; eb 09 ; 0xf3f41
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf3f43 eltorito.c:325
+ cmp byte [bp-00ch], 004h ; 80 7e f4 04 ; 0xf3f46
+ jnbe short 03f82h ; 77 36 ; 0xf3f4a
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3f4c
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3f50
+ les bx, [bp-012h] ; c4 5e ee ; 0xf3f53
+ add bx, ax ; 01 c3 ; 0xf3f56
+ movzx di, byte [es:bx+022h] ; 26 0f b6 7f 22 ; 0xf3f58
+ add di, di ; 01 ff ; 0xf3f5d
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3f5f
+ push SS ; 16 ; 0xf3f63
+ push dx ; 52 ; 0xf3f64
+ push strict byte 00001h ; 6a 01 ; 0xf3f65
+ push strict byte 00000h ; 6a 00 ; 0xf3f67
+ push 00800h ; 68 00 08 ; 0xf3f69
+ push strict byte 00000h ; 6a 00 ; 0xf3f6c
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3f6e
+ mov cx, ss ; 8c d1 ; 0xf3f72
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3f74
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3f77
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3f7a
+ test ax, ax ; 85 c0 ; 0xf3f7e
+ jne short 03f43h ; 75 c1 ; 0xf3f80
+ test ax, ax ; 85 c0 ; 0xf3f82 eltorito.c:326
+ je short 03f8ch ; 74 06 ; 0xf3f84
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf3f86 eltorito.c:327
+ jmp near 0425ah ; e9 ce 02 ; 0xf3f89
+ cmp byte [bp-00826h], 000h ; 80 be da f7 00 ; 0xf3f8c eltorito.c:330
+ je short 03f99h ; 74 06 ; 0xf3f91
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3f93 eltorito.c:331
+ jmp near 0425ah ; e9 c1 02 ; 0xf3f96
+ xor di, di ; 31 ff ; 0xf3f99 eltorito.c:333
+ jmp short 03fa3h ; eb 06 ; 0xf3f9b
+ inc di ; 47 ; 0xf3f9d eltorito.c:335
+ cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3f9e
+ jnc short 03fb3h ; 73 10 ; 0xf3fa1
+ mov al, byte [bp+di-00825h] ; 8a 83 db f7 ; 0xf3fa3
+ cmp al, byte [di+00f2ch] ; 3a 85 2c 0f ; 0xf3fa7
+ je short 03f9dh ; 74 f0 ; 0xf3fab
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf3fad
+ jmp near 0425ah ; e9 a7 02 ; 0xf3fb0
+ xor di, di ; 31 ff ; 0xf3fb3 eltorito.c:337
+ jmp short 03fbdh ; eb 06 ; 0xf3fb5
+ inc di ; 47 ; 0xf3fb7 eltorito.c:339
+ cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3fb8
+ jnc short 03fcdh ; 73 10 ; 0xf3fbb
+ mov al, byte [bp+di-0081fh] ; 8a 83 e1 f7 ; 0xf3fbd
+ cmp al, byte [di+00f32h] ; 3a 85 32 0f ; 0xf3fc1
+ je short 03fb7h ; 74 f0 ; 0xf3fc5
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf3fc7
+ jmp near 0425ah ; e9 8d 02 ; 0xf3fca
+ mov ax, word [bp-007dfh] ; 8b 86 21 f8 ; 0xf3fcd eltorito.c:342
+ mov dx, word [bp-007ddh] ; 8b 96 23 f8 ; 0xf3fd1
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3fd5 eltorito.c:346
+ xchg ah, al ; 86 c4 ; 0xf3fda eltorito.c:347
+ xchg dh, dl ; 86 d6 ; 0xf3fdc
+ xchg dx, ax ; 92 ; 0xf3fde
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3fdf
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3fe2
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3fe5 eltorito.c:348
+ xchg ah, al ; 86 c4 ; 0xf3fe8
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3fea
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3fed eltorito.c:355
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3ff1
+ les di, [bp-012h] ; c4 7e ee ; 0xf3ff4
+ add di, ax ; 01 c7 ; 0xf3ff7
+ movzx di, byte [es:di+022h] ; 26 0f b6 7d 22 ; 0xf3ff9
+ add di, di ; 01 ff ; 0xf3ffe
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf4000
+ push SS ; 16 ; 0xf4004
+ push dx ; 52 ; 0xf4005
+ push strict byte 00001h ; 6a 01 ; 0xf4006
+ push strict byte 00000h ; 6a 00 ; 0xf4008
+ push 00800h ; 68 00 08 ; 0xf400a
+ push strict byte 00000h ; 6a 00 ; 0xf400d
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf400f
+ mov cx, ss ; 8c d1 ; 0xf4013
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf4015
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4018
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf401b
+ test ax, ax ; 85 c0 ; 0xf401f eltorito.c:356
+ je short 04029h ; 74 06 ; 0xf4021
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf4023 eltorito.c:357
+ jmp near 0425ah ; e9 31 02 ; 0xf4026
+ cmp byte [bp-00826h], 001h ; 80 be da f7 01 ; 0xf4029 eltorito.c:362
+ je short 04036h ; 74 06 ; 0xf402e
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf4030 eltorito.c:363
+ jmp near 0425ah ; e9 24 02 ; 0xf4033
+ cmp byte [bp-00825h], 000h ; 80 be db f7 00 ; 0xf4036 eltorito.c:364
+ je short 04043h ; 74 06 ; 0xf403b
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf403d eltorito.c:365
+ jmp near 0425ah ; e9 17 02 ; 0xf4040
+ cmp byte [bp-00808h], 055h ; 80 be f8 f7 55 ; 0xf4043 eltorito.c:366
+ je short 04050h ; 74 06 ; 0xf4048
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf404a eltorito.c:367
+ jmp near 0425ah ; e9 0a 02 ; 0xf404d
+ cmp byte [bp-00807h], 0aah ; 80 be f9 f7 aa ; 0xf4050 eltorito.c:368
+ jne short 0404ah ; 75 f3 ; 0xf4055
+ cmp byte [bp-00806h], 088h ; 80 be fa f7 88 ; 0xf4057 eltorito.c:369
+ je short 04064h ; 74 06 ; 0xf405c
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf405e eltorito.c:373
+ jmp near 0425ah ; e9 f6 01 ; 0xf4061
+ mov al, byte [bp-00805h] ; 8a 86 fb f7 ; 0xf4064 eltorito.c:375
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf4068
+ mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf406b
+ cmp byte [bp-00805h], 000h ; 80 be fb f7 00 ; 0xf406f eltorito.c:376
+ jne short 0407dh ; 75 07 ; 0xf4074
+ mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf4076 eltorito.c:379
+ jmp short 04090h ; eb 13 ; 0xf407b eltorito.c:381
+ cmp byte [bp-00805h], 004h ; 80 be fb f7 04 ; 0xf407d
+ jnc short 0408bh ; 73 07 ; 0xf4082
+ mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf4084 eltorito.c:382
+ jmp short 04090h ; eb 05 ; 0xf4089 eltorito.c:383
+ mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf408b eltorito.c:384
+ movzx di, byte [bp-00eh] ; 0f b6 7e f2 ; 0xf4090 eltorito.c:386
+ mov ax, di ; 89 f8 ; 0xf4094
+ cwd ; 99 ; 0xf4096
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf4097
+ sar ax, 1 ; d1 f8 ; 0xf4099
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf409b
+ mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf409e
+ mov ax, di ; 89 f8 ; 0xf40a2 eltorito.c:387
+ cwd ; 99 ; 0xf40a4
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf40a5
+ idiv bx ; f7 fb ; 0xf40a8
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf40aa
+ mov ax, word [bp-00804h] ; 8b 86 fc f7 ; 0xf40ae eltorito.c:389
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf40b2
+ test ax, ax ; 85 c0 ; 0xf40b5 eltorito.c:390
+ jne short 040beh ; 75 05 ; 0xf40b7
+ mov word [bp-014h], 007c0h ; c7 46 ec c0 07 ; 0xf40b9 eltorito.c:391
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf40be eltorito.c:393
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf40c1
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf40c4
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf40c8 eltorito.c:394
+ mov di, word [bp-00800h] ; 8b be 00 f8 ; 0xf40ce eltorito.c:396
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf40d2 eltorito.c:397
+ test di, di ; 85 ff ; 0xf40d6 eltorito.c:402
+ je short 040e0h ; 74 06 ; 0xf40d8
+ cmp di, 00400h ; 81 ff 00 04 ; 0xf40da
+ jbe short 040e6h ; 76 06 ; 0xf40de
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf40e0 eltorito.c:403
+ jmp near 0425ah ; e9 74 01 ; 0xf40e3
+ mov ax, word [bp-007feh] ; 8b 86 02 f8 ; 0xf40e6 eltorito.c:405
+ mov dx, word [bp-007fch] ; 8b 96 04 f8 ; 0xf40ea
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf40ee eltorito.c:406
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf40f2
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf40f6 eltorito.c:412
+ xchg ah, al ; 86 c4 ; 0xf40fb eltorito.c:413
+ xchg dh, dl ; 86 d6 ; 0xf40fd
+ xchg dx, ax ; 92 ; 0xf40ff
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf4100
+ mov word [bp-022h], dx ; 89 56 de ; 0xf4103
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf4106 eltorito.c:414
+ shr dx, 002h ; c1 ea 02 ; 0xf4109
+ inc dx ; 42 ; 0xf410c
+ mov ax, dx ; 89 d0 ; 0xf410d
+ xchg ah, al ; 86 c4 ; 0xf410f
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf4111
+ les bx, [bp-012h] ; c4 5e ee ; 0xf4114 eltorito.c:416
+ mov word [es:bx+00eh], dx ; 26 89 57 0e ; 0xf4117
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf411b eltorito.c:417
+ mov ax, di ; 89 f8 ; 0xf4121 eltorito.c:419
+ sal ax, 009h ; c1 e0 09 ; 0xf4123
+ mov dx, 00800h ; ba 00 08 ; 0xf4126
+ sub dx, ax ; 29 c2 ; 0xf4129
+ mov ax, dx ; 89 d0 ; 0xf412b
+ and ah, 007h ; 80 e4 07 ; 0xf412d
+ mov word [es:bx+020h], ax ; 26 89 47 20 ; 0xf4130
+ movzx bx, byte [bp-00eh] ; 0f b6 5e f2 ; 0xf4134 eltorito.c:421
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf4138
+ add bx, word [bp-012h] ; 03 5e ee ; 0xf413b
+ movzx ax, byte [es:bx+022h] ; 26 0f b6 47 22 ; 0xf413e
+ add ax, ax ; 01 c0 ; 0xf4143
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf4145
+ push word [bp-014h] ; ff 76 ec ; 0xf4148
+ push dword 000000001h ; 66 6a 01 ; 0xf414b
+ mov ax, di ; 89 f8 ; 0xf414e
+ xor di, di ; 31 ff ; 0xf4150
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4152
+ sal ax, 1 ; d1 e0 ; 0xf4155
+ rcl di, 1 ; d1 d7 ; 0xf4157
+ loop 04155h ; e2 fa ; 0xf4159
+ push di ; 57 ; 0xf415b
+ push ax ; 50 ; 0xf415c
+ push strict byte 00000h ; 6a 00 ; 0xf415d
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf415f
+ mov cx, ss ; 8c d1 ; 0xf4163
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf4165
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4168
+ mov di, word [bp-01ah] ; 8b 7e e6 ; 0xf416b
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf416e
+ les bx, [bp-012h] ; c4 5e ee ; 0xf4172 eltorito.c:423
+ mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf4175
+ test ax, ax ; 85 c0 ; 0xf417b eltorito.c:425
+ je short 04185h ; 74 06 ; 0xf417d
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf417f eltorito.c:426
+ jmp near 0425ah ; e9 d5 00 ; 0xf4182
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf4185 eltorito.c:431
+ mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf4188
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf418c
+ jc short 0419ch ; 72 0c ; 0xf418e
+ jbe short 041b4h ; 76 22 ; 0xf4190
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf4192
+ je short 041cah ; 74 34 ; 0xf4194
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf4196
+ je short 041bfh ; 74 25 ; 0xf4198
+ jmp short 04211h ; eb 75 ; 0xf419a
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf419c
+ jne short 04211h ; 75 71 ; 0xf419e
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf41a0 eltorito.c:433
+ 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; 0xf41a3
+ mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf41ac eltorito.c:435
+ jmp short 04211h ; eb 5d ; 0xf41b2 eltorito.c:436
+ 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; 0xf41b4 eltorito.c:438
+ jmp short 041ach ; eb ed ; 0xf41bd
+ 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; 0xf41bf eltorito.c:443
+ jmp short 041ach ; eb e2 ; 0xf41c8
+ mov bx, 001c4h ; bb c4 01 ; 0xf41ca eltorito.c:38
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf41cd
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf41d0
+ and AL, strict byte 03fh ; 24 3f ; 0xf41d3 eltorito.c:39
+ xor ah, ah ; 30 e4 ; 0xf41d5
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf41d7
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf41da
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf41de eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf41e1
+ and ax, 000c0h ; 25 c0 00 ; 0xf41e4 eltorito.c:39
+ mov dx, ax ; 89 c2 ; 0xf41e7
+ sal dx, 002h ; c1 e2 02 ; 0xf41e9
+ mov bx, 001c5h ; bb c5 01 ; 0xf41ec eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf41ef
+ xor ah, ah ; 30 e4 ; 0xf41f2 eltorito.c:39
+ add ax, dx ; 01 d0 ; 0xf41f4
+ inc ax ; 40 ; 0xf41f6
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf41f7
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf41fa
+ mov di, 001c3h ; bf c3 01 ; 0xf41fe eltorito.c:38
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4201
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf4204
+ xor ah, ah ; 30 e4 ; 0xf4207 eltorito.c:39
+ inc ax ; 40 ; 0xf4209
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf420a
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf420d
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf4211 eltorito.c:456
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4214
+ je short 04241h ; 74 26 ; 0xf4219
+ cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf421b eltorito.c:458
+ jne short 04233h ; 75 11 ; 0xf4220
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf4222 eltorito.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4225
+ mov es, ax ; 8e c0 ; 0xf4228
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf422a
+ or AL, strict byte 041h ; 0c 41 ; 0xf422d eltorito.c:39
+ mov di, bx ; 89 df ; 0xf422f eltorito.c:43
+ jmp short 0423eh ; eb 0b ; 0xf4231 eltorito.c:460
+ mov di, 002b0h ; bf b0 02 ; 0xf4233 eltorito.c:38
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf4236
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf4239
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf423c eltorito.c:39
+ mov byte [es:di], al ; 26 88 05 ; 0xf423e eltorito.c:43
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf4241 eltorito.c:465
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4244
+ je short 0424fh ; 74 04 ; 0xf4249
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf424b eltorito.c:466
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf424f eltorito.c:469
+ movzx ax, byte [es:si+002h] ; 26 0f b6 44 02 ; 0xf4252
+ sal ax, 008h ; c1 e0 08 ; 0xf4257
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf425a eltorito.c:470
+ pop di ; 5f ; 0xf425d
+ pop si ; 5e ; 0xf425e
+ pop dx ; 5a ; 0xf425f
+ pop cx ; 59 ; 0xf4260
+ pop bx ; 5b ; 0xf4261
+ pop bp ; 5d ; 0xf4262
+ retn ; c3 ; 0xf4263
+ ; disGetNextSymbol 0xf4264 LB 0x70e8 -> off=0x59 cb=00000000000005d8 uValue=00000000000f2cbd '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, 078h, 048h, 068h
+ db 043h, 0b2h, 043h, 0d6h, 043h, 0a7h, 043h, 0d6h, 043h, 0a7h, 043h, 0cfh, 045h, 08ch, 043h, 078h
+ db 048h, 078h, 048h, 08ch, 043h, 08ch, 043h, 08ch, 043h, 08ch, 043h, 08ch, 043h, 077h, 046h, 08ch
+ db 043h, 078h, 048h, 080h, 046h, 093h, 046h, 078h, 048h, 093h, 046h, 078h, 048h, 078h, 048h, 093h
+ db 046h, 03ch, 048h, 078h, 048h, 078h, 048h, 078h, 048h
+int13_cdemu: ; 0xf42bd LB 0x5d8
+ push bp ; 55 ; 0xf42bd eltorito.c:480
+ mov bp, sp ; 89 e5 ; 0xf42be
+ push si ; 56 ; 0xf42c0
+ push di ; 57 ; 0xf42c1
+ sub sp, strict byte 00038h ; 83 ec 38 ; 0xf42c2
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf42c5 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf42c8
+ mov es, ax ; 8e c0 ; 0xf42cb
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf42cd
+ mov dx, 0031eh ; ba 1e 03 ; 0xf42d0 eltorito.c:496
+ mov cx, ax ; 89 c1 ; 0xf42d3
+ mov bx, dx ; 89 d3 ; 0xf42d5
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf42d7
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf42da eltorito.c:497
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf42dd
+ mov es, ax ; 8e c0 ; 0xf42e0 eltorito.c:504
+ mov di, dx ; 89 d7 ; 0xf42e2
+ mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf42e4
+ add al, al ; 00 c0 ; 0xf42e8
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf42ea
+ mov al, byte [es:di+004h] ; 26 8a 45 04 ; 0xf42ed eltorito.c:505
+ add byte [bp-006h], al ; 00 46 fa ; 0xf42f1
+ mov di, strict word 00074h ; bf 74 00 ; 0xf42f4 eltorito.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf42f7
+ mov es, ax ; 8e c0 ; 0xf42fa
+ mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf42fc
+ mov es, cx ; 8e c1 ; 0xf4300 eltorito.c:510
+ mov di, dx ; 89 d7 ; 0xf4302
+ cmp byte [es:di], 000h ; 26 80 3d 00 ; 0xf4304
+ je short 04318h ; 74 0e ; 0xf4308
+ movzx dx, byte [es:di+002h] ; 26 0f b6 55 02 ; 0xf430a
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf430f
+ xor ah, ah ; 30 e4 ; 0xf4312
+ cmp dx, ax ; 39 c2 ; 0xf4314
+ je short 04341h ; 74 29 ; 0xf4316
+ mov bx, 00f24h ; bb 24 0f ; 0xf4318 eltorito.c:511
+ mov cx, ds ; 8c d9 ; 0xf431b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf431d
+ call 019e2h ; e8 bf d6 ; 0xf4320
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf4323
+ xor ah, ah ; 30 e4 ; 0xf4326
+ push ax ; 50 ; 0xf4328
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4329
+ shr ax, 008h ; c1 e8 08 ; 0xf432c
+ push ax ; 50 ; 0xf432f
+ push 00396h ; 68 96 03 ; 0xf4330
+ push 003a2h ; 68 a2 03 ; 0xf4333
+ push strict byte 00004h ; 6a 04 ; 0xf4336
+ call 01a23h ; e8 e8 d6 ; 0xf4338
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf433b
+ jmp near 04855h ; e9 14 05 ; 0xf433e eltorito.c:512
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4341 eltorito.c:515
+ shr ax, 008h ; c1 e8 08 ; 0xf4344
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf4347
+ jnbe near 04878h ; 0f 87 2a 05 ; 0xf434a
+ push CS ; 0e ; 0xf434e
+ pop ES ; 07 ; 0xf434f
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4350
+ mov di, 04264h ; bf 64 42 ; 0xf4353
+ repne scasb ; f2 ae ; 0xf4356
+ sal cx, 1 ; d1 e1 ; 0xf4358
+ mov di, cx ; 89 cf ; 0xf435a
+ mov dx, word [cs:di+04281h] ; 2e 8b 95 81 42 ; 0xf435c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4361
+ xor ah, ah ; 30 e4 ; 0xf4364
+ jmp dx ; ff e2 ; 0xf4366
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4368 eltorito.c:518
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf436c
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf436f
+ add si, ax ; 01 c6 ; 0xf4372
+ movzx bx, byte [es:si+022h] ; 26 0f b6 5c 22 ; 0xf4374
+ add bx, bx ; 01 db ; 0xf4379
+ cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf437b
+ je near 0438ch ; 0f 84 08 00 ; 0xf4380
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4384 eltorito.c:520
+ call word [word bx+00078h] ; ff 97 78 00 ; 0xf4388
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf438c eltorito.c:522
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4390
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4393
+ mov es, ax ; 8e c0 ; 0xf4396
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4398
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf439c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf43a0
+ pop di ; 5f ; 0xf43a3
+ pop si ; 5e ; 0xf43a4
+ pop bp ; 5d ; 0xf43a5
+ retn ; c3 ; 0xf43a6
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43a7 eltorito.c:538
+ xor ah, ah ; 30 e4 ; 0xf43aa
+ or ah, 003h ; 80 cc 03 ; 0xf43ac
+ jmp near 0485dh ; e9 ab 04 ; 0xf43af eltorito.c:539
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf43b2 eltorito.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf43b5
+ mov es, dx ; 8e c2 ; 0xf43b8
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf43ba
+ movzx bx, dl ; 0f b6 da ; 0xf43bd eltorito.c:544
+ sal bx, 008h ; c1 e3 08 ; 0xf43c0
+ or ax, bx ; 09 d8 ; 0xf43c3
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf43c5
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf43c8 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf43cb
+ test dl, dl ; 84 d2 ; 0xf43cf eltorito.c:548
+ je short 04390h ; 74 bd ; 0xf43d1
+ jmp near 04871h ; e9 9b 04 ; 0xf43d3 eltorito.c:549
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf43d6 eltorito.c:556
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf43d9
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf43dd
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf43e0 eltorito.c:557
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf43e4 eltorito.c:558
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf43e8
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf43eb eltorito.c:559
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf43ef
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf43f2
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf43f6
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf43f9 eltorito.c:561
+ and ax, strict word 0003fh ; 25 3f 00 ; 0xf43fc
+ mov word [bp-022h], ax ; 89 46 de ; 0xf43ff
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf4402 eltorito.c:562
+ and bx, 000c0h ; 81 e3 c0 00 ; 0xf4405
+ sal bx, 002h ; c1 e3 02 ; 0xf4409
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf440c
+ shr ax, 008h ; c1 e8 08 ; 0xf440f
+ or ax, bx ; 09 d8 ; 0xf4412
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf4414 eltorito.c:563
+ shr bx, 008h ; c1 eb 08 ; 0xf4417
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf441a
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf441d eltorito.c:564
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf4420
+ jne short 04429h ; 75 03 ; 0xf4424 eltorito.c:572
+ jmp near 0438ch ; e9 63 ff ; 0xf4426 eltorito.c:573
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf4429 eltorito.c:576
+ cmp bx, word [bp-00ch] ; 3b 5e f4 ; 0xf442c
+ jnbe near 04855h ; 0f 87 22 04 ; 0xf442f
+ cmp ax, dx ; 39 d0 ; 0xf4433
+ jnc near 04855h ; 0f 83 1c 04 ; 0xf4435
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf4439
+ cmp dx, word [bp-00eh] ; 3b 56 f2 ; 0xf443c
+ jnc near 04855h ; 0f 83 12 04 ; 0xf443f
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf4443 eltorito.c:583
+ shr dx, 008h ; c1 ea 08 ; 0xf4446
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4449
+ jne short 04451h ; 75 03 ; 0xf444c
+ jmp near 0438ch ; e9 3b ff ; 0xf444e eltorito.c:584
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf4451 eltorito.c:586
+ shr dx, 004h ; c1 ea 04 ; 0xf4454
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf4457
+ add bx, dx ; 01 d3 ; 0xf445a
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf445c
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf445f eltorito.c:587
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4462
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf4465
+ xor dl, dl ; 30 d2 ; 0xf4468 eltorito.c:590
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf446a
+ xor cx, cx ; 31 c9 ; 0xf446d
+ call 0b210h ; e8 9e 6d ; 0xf446f
+ xor bx, bx ; 31 db ; 0xf4472
+ add ax, word [bp-012h] ; 03 46 ee ; 0xf4474
+ adc dx, bx ; 11 da ; 0xf4477
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf4479
+ xor cx, cx ; 31 c9 ; 0xf447c
+ call 0b210h ; e8 8f 6d ; 0xf447e
+ mov bx, dx ; 89 d3 ; 0xf4481
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf4483
+ dec dx ; 4a ; 0xf4486
+ mov word [bp-026h], strict word 00000h ; c7 46 da 00 00 ; 0xf4487
+ add dx, ax ; 01 c2 ; 0xf448c
+ adc bx, word [bp-026h] ; 13 5e da ; 0xf448e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4491 eltorito.c:593
+ xor al, al ; 30 c0 ; 0xf4494
+ or ax, di ; 09 f8 ; 0xf4496
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4498
+ mov word [bp-02ch], dx ; 89 56 d4 ; 0xf449b eltorito.c:596
+ mov word [bp-02ah], bx ; 89 5e d6 ; 0xf449e
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf44a1
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf44a4
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf44a7
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf44aa
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf44ad
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf44b0
+ mov ax, dx ; 89 d0 ; 0xf44b3 eltorito.c:597
+ xor ah, dh ; 30 f4 ; 0xf44b5
+ and AL, strict byte 003h ; 24 03 ; 0xf44b7
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf44b9
+ xor cx, cx ; 31 c9 ; 0xf44bc eltorito.c:600
+ mov ax, dx ; 89 d0 ; 0xf44be
+ add ax, di ; 01 f8 ; 0xf44c0
+ mov dx, bx ; 89 da ; 0xf44c2
+ adc dx, cx ; 11 ca ; 0xf44c4
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf44c6
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf44c9
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf44cc
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf44cf
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf44d2
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf44d5
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf44d8
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf44db
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf44de eltorito.c:602
+ xor bx, bx ; 31 db ; 0xf44e1
+ mov dx, ss ; 8c d2 ; 0xf44e3
+ lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf44e5
+ call 0b2b0h ; e8 c5 6d ; 0xf44e8
+ mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf44eb eltorito.c:603
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf44f0 eltorito.c:604
+ add ax, word [bp-02ch] ; 03 46 d4 ; 0xf44f3
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf44f6
+ adc dx, word [bp-028h] ; 13 56 d8 ; 0xf44f9
+ xchg ah, al ; 86 c4 ; 0xf44fc
+ xchg dh, dl ; 86 d6 ; 0xf44fe
+ xchg dx, ax ; 92 ; 0xf4500
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf4501
+ mov word [bp-038h], dx ; 89 56 c8 ; 0xf4504
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf4507 eltorito.c:605
+ sub ax, word [bp-02ch] ; 2b 46 d4 ; 0xf450a
+ inc ax ; 40 ; 0xf450d
+ xchg ah, al ; 86 c4 ; 0xf450e
+ mov word [bp-035h], ax ; 89 46 cb ; 0xf4510
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4513 eltorito.c:607
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf4516
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf451a eltorito.c:608
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf4520 eltorito.c:610
+ sal ax, 009h ; c1 e0 09 ; 0xf4523
+ mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf4526
+ mov dx, di ; 89 fa ; 0xf452a eltorito.c:611
+ xor dh, dh ; 30 f6 ; 0xf452c
+ and dl, 003h ; 80 e2 03 ; 0xf452e
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4531
+ sub bx, dx ; 29 d3 ; 0xf4534
+ mov dx, bx ; 89 da ; 0xf4536
+ sub dx, word [bp-024h] ; 2b 56 dc ; 0xf4538
+ sal dx, 009h ; c1 e2 09 ; 0xf453b
+ and dh, 007h ; 80 e6 07 ; 0xf453e
+ mov word [es:si+020h], dx ; 26 89 54 20 ; 0xf4541
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4545 eltorito.c:613
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4549
+ mov bx, si ; 89 f3 ; 0xf454c
+ add bx, dx ; 01 d3 ; 0xf454e
+ movzx dx, byte [es:bx+022h] ; 26 0f b6 57 22 ; 0xf4550
+ add dx, dx ; 01 d2 ; 0xf4555
+ mov word [bp-026h], dx ; 89 56 da ; 0xf4557
+ push word [bp-016h] ; ff 76 ea ; 0xf455a
+ push word [bp-014h] ; ff 76 ec ; 0xf455d
+ push strict byte 00001h ; 6a 01 ; 0xf4560
+ mov bx, di ; 89 fb ; 0xf4562
+ xor di, di ; 31 ff ; 0xf4564
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4566
+ sal bx, 1 ; d1 e3 ; 0xf4569
+ rcl di, 1 ; d1 d7 ; 0xf456b
+ loop 04569h ; e2 fa ; 0xf456d
+ push di ; 57 ; 0xf456f
+ push bx ; 53 ; 0xf4570
+ push ax ; 50 ; 0xf4571
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4572
+ mov cx, ss ; 8c d1 ; 0xf4576
+ lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf4578
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf457b
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf457e
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4581
+ mov dx, ax ; 89 c2 ; 0xf4585
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4587 eltorito.c:615
+ db 066h, 026h, 0c7h, 044h, 01eh, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+01eh], strict dword 000000000h ; 66 26 c7 44 1e 00 00 00 00; 0xf458a
+ test al, al ; 84 c0 ; 0xf4593 eltorito.c:616
+ je near 0438ch ; 0f 84 f3 fd ; 0xf4595
+ mov bx, 00f24h ; bb 24 0f ; 0xf4599 eltorito.c:619
+ mov cx, ds ; 8c d9 ; 0xf459c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf459e
+ call 019e2h ; e8 3e d4 ; 0xf45a1
+ movzx ax, dl ; 0f b6 c2 ; 0xf45a4
+ push ax ; 50 ; 0xf45a7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf45a8
+ shr ax, 008h ; c1 e8 08 ; 0xf45ab
+ push ax ; 50 ; 0xf45ae
+ push 00396h ; 68 96 03 ; 0xf45af
+ push 003d8h ; 68 d8 03 ; 0xf45b2
+ push strict byte 00004h ; 6a 04 ; 0xf45b5
+ call 01a23h ; e8 69 d4 ; 0xf45b7
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf45ba
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf45bd eltorito.c:620
+ xor ah, ah ; 30 e4 ; 0xf45c0
+ or ah, 002h ; 80 cc 02 ; 0xf45c2
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf45c5
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf45c8 eltorito.c:621
+ jmp near 04860h ; e9 91 02 ; 0xf45cc eltorito.c:622
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf45cf eltorito.c:629
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf45d2
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf45d6
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf45d9 eltorito.c:630
+ dec dx ; 4a ; 0xf45dd
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf45de eltorito.c:631
+ dec ax ; 48 ; 0xf45e2
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf45e3
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf45e6 eltorito.c:633
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf45ea eltorito.c:634
+ and si, 0ff00h ; 81 e6 00 ff ; 0xf45ed
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf45f1 eltorito.c:635
+ xor ah, ah ; 30 e4 ; 0xf45f4
+ mov cx, dx ; 89 d1 ; 0xf45f6
+ xor ch, dh ; 30 f5 ; 0xf45f8
+ sal cx, 008h ; c1 e1 08 ; 0xf45fa
+ or ax, cx ; 09 c8 ; 0xf45fd
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf45ff
+ mov ax, dx ; 89 d0 ; 0xf4602 eltorito.c:636
+ shr ax, 002h ; c1 e8 02 ; 0xf4604
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf4607
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf4609
+ and dl, 03fh ; 80 e2 3f ; 0xf460c
+ or al, dl ; 08 d0 ; 0xf460f
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf4611
+ mov dl, al ; 88 c2 ; 0xf4614
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf4616
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf4619 eltorito.c:637
+ xor dh, dh ; 30 f6 ; 0xf461c
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf461e
+ sal ax, 008h ; c1 e0 08 ; 0xf4621
+ or dx, ax ; 09 c2 ; 0xf4624
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf4626
+ mov ax, dx ; 89 d0 ; 0xf4629 eltorito.c:638
+ xor al, dl ; 30 d0 ; 0xf462b
+ or AL, strict byte 002h ; 0c 02 ; 0xf462d
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf462f
+ mov al, byte [es:bx+001h] ; 26 8a 47 01 ; 0xf4632 eltorito.c:641
+ mov word [bp+010h], si ; 89 76 10 ; 0xf4636
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf4639
+ je short 04659h ; 74 1c ; 0xf463b
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf463d
+ je short 04651h ; 74 10 ; 0xf463f
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf4641
+ jne short 0465eh ; 75 19 ; 0xf4643
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4645 eltorito.c:642
+ xor al, al ; 30 c0 ; 0xf4648
+ or AL, strict byte 002h ; 0c 02 ; 0xf464a
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf464c
+ jmp short 0465eh ; eb 0d ; 0xf464f
+ or si, strict byte 00004h ; 83 ce 04 ; 0xf4651 eltorito.c:643
+ mov word [bp+010h], si ; 89 76 10 ; 0xf4654
+ jmp short 0465eh ; eb 05 ; 0xf4657
+ or si, strict byte 00005h ; 83 ce 05 ; 0xf4659 eltorito.c:644
+ jmp short 04654h ; eb f6 ; 0xf465c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf465e eltorito.c:648
+ cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf4661
+ jnc near 0438ch ; 0f 83 22 fd ; 0xf4666
+ mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf466a eltorito.c:649
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf466f eltorito.c:650
+ jmp near 0438ch ; e9 15 fd ; 0xf4674 eltorito.c:652
+ or ah, 003h ; 80 cc 03 ; 0xf4677 eltorito.c:657
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf467a
+ jmp near 04390h ; e9 10 fd ; 0xf467d eltorito.c:658
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf4680 eltorito.c:662
+ or ah, 030h ; 80 cc 30 ; 0xf4685 eltorito.c:663
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4688
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf468b eltorito.c:664
+ jmp near 04390h ; e9 fd fc ; 0xf4690 eltorito.c:665
+ mov di, word [bp+00ah] ; 8b 7e 0a ; 0xf4693 eltorito.c:673
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf4696
+ mov word [bp-01ch], di ; 89 7e e4 ; 0xf4699
+ mov [bp-01ah], es ; 8c 46 e6 ; 0xf469c
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf469f eltorito.c:675
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf46a3
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf46a6 eltorito.c:676
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf46aa
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf46ad eltorito.c:677
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf46b1
+ mov ax, word [es:di+00ch] ; 26 8b 45 0c ; 0xf46b4 eltorito.c:680
+ mov dx, word [es:di+00eh] ; 26 8b 55 0e ; 0xf46b8
+ or ax, dx ; 09 d0 ; 0xf46bc eltorito.c:681
+ je short 046d8h ; 74 18 ; 0xf46be
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf46c0 eltorito.c:682
+ shr ax, 008h ; c1 e8 08 ; 0xf46c3
+ push ax ; 50 ; 0xf46c6
+ push 00396h ; 68 96 03 ; 0xf46c7
+ push 003f9h ; 68 f9 03 ; 0xf46ca
+ push strict byte 00007h ; 6a 07 ; 0xf46cd
+ call 01a23h ; e8 51 d3 ; 0xf46cf
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf46d2
+ jmp near 04855h ; e9 7d 01 ; 0xf46d5 eltorito.c:683
+ les di, [bp-01ch] ; c4 7e e4 ; 0xf46d8 eltorito.c:687
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf46db
+ mov dx, word [es:di+00ah] ; 26 8b 55 0a ; 0xf46df
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf46e3 eltorito.c:690
+ shr cx, 008h ; c1 e9 08 ; 0xf46e6
+ mov word [bp-018h], cx ; 89 4e e8 ; 0xf46e9
+ cmp cx, strict byte 00044h ; 83 f9 44 ; 0xf46ec
+ je near 0438ch ; 0f 84 99 fc ; 0xf46ef
+ cmp cx, strict byte 00047h ; 83 f9 47 ; 0xf46f3
+ jne short 046fbh ; 75 03 ; 0xf46f6
+ jmp near 0438ch ; e9 91 fc ; 0xf46f8 eltorito.c:691
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf46fb eltorito.c:698
+ mov cx, word [es:bx+008h] ; 26 8b 4f 08 ; 0xf46fe
+ mov word [bp-020h], cx ; 89 4e e0 ; 0xf4702
+ mov bx, word [es:bx+00ah] ; 26 8b 5f 0a ; 0xf4705
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf4709
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf470c eltorito.c:701
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf470f
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf4712
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf4715
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf4718
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf471b
+ mov di, word [bp-02eh] ; 8b 7e d2 ; 0xf471e
+ mov bx, ax ; 89 c3 ; 0xf4721 eltorito.c:702
+ xor bh, ah ; 30 e7 ; 0xf4723
+ and bl, 003h ; 80 e3 03 ; 0xf4725
+ mov word [bp-024h], bx ; 89 5e dc ; 0xf4728
+ xor bx, bx ; 31 db ; 0xf472b eltorito.c:705
+ add ax, word [bp-010h] ; 03 46 f0 ; 0xf472d
+ adc dx, bx ; 11 da ; 0xf4730
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf4732
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf4735
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf4738
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf473b
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf473e
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf4741
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf4744
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf4747
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf474a eltorito.c:707
+ mov dx, ss ; 8c d2 ; 0xf474d
+ lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf474f
+ call 0b2b0h ; e8 5b 6b ; 0xf4752
+ mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf4755 eltorito.c:708
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf475a eltorito.c:709
+ add ax, word [bp-030h] ; 03 46 d0 ; 0xf475d
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf4760
+ adc dx, di ; 11 fa ; 0xf4763
+ xchg ah, al ; 86 c4 ; 0xf4765
+ xchg dh, dl ; 86 d6 ; 0xf4767
+ xchg dx, ax ; 92 ; 0xf4769
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf476a
+ mov word [bp-038h], dx ; 89 56 c8 ; 0xf476d
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf4770 eltorito.c:710
+ sub ax, word [bp-030h] ; 2b 46 d0 ; 0xf4773
+ inc ax ; 40 ; 0xf4776
+ xchg ah, al ; 86 c4 ; 0xf4777
+ mov word [bp-035h], ax ; 89 46 cb ; 0xf4779
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf477c eltorito.c:712
+ sal ax, 009h ; c1 e0 09 ; 0xf477f
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4782
+ mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf4785
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf4789 eltorito.c:713
+ xor dh, dh ; 30 f6 ; 0xf478c
+ and dl, 003h ; 80 e2 03 ; 0xf478e
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4791
+ sub bx, dx ; 29 d3 ; 0xf4794
+ mov dx, bx ; 89 da ; 0xf4796
+ sub dx, word [bp-024h] ; 2b 56 dc ; 0xf4798
+ sal dx, 009h ; c1 e2 09 ; 0xf479b
+ and dh, 007h ; 80 e6 07 ; 0xf479e
+ mov word [es:si+020h], dx ; 26 89 54 20 ; 0xf47a1
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf47a5 eltorito.c:715
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf47a9
+ mov bx, si ; 89 f3 ; 0xf47ac
+ add bx, dx ; 01 d3 ; 0xf47ae
+ movzx dx, byte [es:bx+022h] ; 26 0f b6 57 22 ; 0xf47b0
+ add dx, dx ; 01 d2 ; 0xf47b5
+ mov word [bp-026h], dx ; 89 56 da ; 0xf47b7
+ push word [bp-016h] ; ff 76 ea ; 0xf47ba
+ push word [bp-014h] ; ff 76 ec ; 0xf47bd
+ push strict byte 00001h ; 6a 01 ; 0xf47c0
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf47c2
+ xor di, di ; 31 ff ; 0xf47c5
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf47c7
+ sal bx, 1 ; d1 e3 ; 0xf47ca
+ rcl di, 1 ; d1 d7 ; 0xf47cc
+ loop 047cah ; e2 fa ; 0xf47ce
+ push di ; 57 ; 0xf47d0
+ push bx ; 53 ; 0xf47d1
+ push ax ; 50 ; 0xf47d2
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf47d3
+ mov cx, ss ; 8c d1 ; 0xf47d7
+ lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf47d9
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf47dc
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf47df
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf47e2
+ mov dx, ax ; 89 c2 ; 0xf47e6
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf47e8 eltorito.c:717
+ db 066h, 026h, 0c7h, 044h, 01eh, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+01eh], strict dword 000000000h ; 66 26 c7 44 1e 00 00 00 00; 0xf47eb
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf47f4 eltorito.c:720
+ mov di, word [es:si+01ch] ; 26 8b 7c 1c ; 0xf47f8
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf47fc
+ shr di, 1 ; d1 ef ; 0xf47ff
+ rcr bx, 1 ; d1 db ; 0xf4801
+ loop 047ffh ; e2 fa ; 0xf4803
+ les si, [bp-01ch] ; c4 76 e4 ; 0xf4805 eltorito.c:721
+ mov word [es:si+002h], bx ; 26 89 5c 02 ; 0xf4808
+ test al, al ; 84 c0 ; 0xf480c eltorito.c:723
+ je near 0438ch ; 0f 84 7a fb ; 0xf480e
+ mov bx, 00f24h ; bb 24 0f ; 0xf4812 eltorito.c:724
+ mov cx, ds ; 8c d9 ; 0xf4815
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4817
+ call 019e2h ; e8 c5 d1 ; 0xf481a
+ movzx ax, dl ; 0f b6 c2 ; 0xf481d
+ push ax ; 50 ; 0xf4820
+ push word [bp-018h] ; ff 76 e8 ; 0xf4821
+ push 00396h ; 68 96 03 ; 0xf4824
+ push 00422h ; 68 22 04 ; 0xf4827
+ push strict byte 00004h ; 6a 04 ; 0xf482a
+ call 01a23h ; e8 f4 d1 ; 0xf482c
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf482f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4832 eltorito.c:725
+ xor ah, ah ; 30 e4 ; 0xf4835
+ or ah, 00ch ; 80 cc 0c ; 0xf4837
+ jmp short 0485dh ; eb 21 ; 0xf483a
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf483c eltorito.c:733
+ push ax ; 50 ; 0xf4840
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf4841
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf4844
+ mov bx, si ; 89 f3 ; 0xf4847
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf4849
+ call 05a95h ; e8 46 12 ; 0xf484c
+ test ax, ax ; 85 c0 ; 0xf484f
+ je near 0438ch ; 0f 84 37 fb ; 0xf4851
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4855 eltorito.c:734
+ xor ah, ah ; 30 e4 ; 0xf4858
+ or ah, 001h ; 80 cc 01 ; 0xf485a
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf485d
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4860
+ shr ax, 008h ; c1 e8 08 ; 0xf4863
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4866
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4869
+ mov es, dx ; 8e c2 ; 0xf486c
+ mov byte [es:bx], al ; 26 88 07 ; 0xf486e
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf4871
+ jmp near 043a0h ; e9 28 fb ; 0xf4875
+ mov bx, 00f24h ; bb 24 0f ; 0xf4878 eltorito.c:750
+ mov cx, ds ; 8c d9 ; 0xf487b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf487d
+ call 019e2h ; e8 5f d1 ; 0xf4880
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4883
+ shr ax, 008h ; c1 e8 08 ; 0xf4886
+ push ax ; 50 ; 0xf4889
+ push 00396h ; 68 96 03 ; 0xf488a
+ push 00444h ; 68 44 04 ; 0xf488d
+ push strict byte 00004h ; 6a 04 ; 0xf4890
+ jmp near 046cfh ; e9 3a fe ; 0xf4892
+ ; disGetNextSymbol 0xf4895 LB 0x6ab7 -> off=0x59 cb=0000000000000362 uValue=00000000000f32ee '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, 033h, 04ch, 095h
+ db 04bh, 096h, 049h, 033h, 04ch, 08bh, 049h, 033h, 04ch, 08bh, 049h, 033h, 04ch, 095h, 04bh, 033h
+ db 04ch, 033h, 04ch, 095h, 04bh, 095h, 04bh, 095h, 04bh, 095h, 04bh, 095h, 04bh, 0bch, 049h, 095h
+ db 04bh, 033h, 04ch, 0c2h, 049h, 0d5h, 049h, 08bh, 049h, 0d5h, 049h, 006h, 04bh, 0b0h, 04bh, 0d5h
+ db 049h, 0d4h, 04bh, 00dh, 04ch, 015h, 04ch, 033h, 04ch
+int13_cdrom: ; 0xf48ee LB 0x362
+ push bp ; 55 ; 0xf48ee eltorito.c:775
+ mov bp, sp ; 89 e5 ; 0xf48ef
+ push si ; 56 ; 0xf48f1
+ push di ; 57 ; 0xf48f2
+ sub sp, strict byte 0001eh ; 83 ec 1e ; 0xf48f3
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf48f6 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf48f9
+ mov es, ax ; 8e c0 ; 0xf48fc
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf48fe
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf4901 eltorito.c:785
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf4904
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4907 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf490a
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf490e eltorito.c:792
+ xor ah, ah ; 30 e4 ; 0xf4911
+ cmp ax, 000e0h ; 3d e0 00 ; 0xf4913
+ jc short 0491dh ; 72 05 ; 0xf4916
+ cmp ax, 000f4h ; 3d f4 00 ; 0xf4918
+ jc short 0493bh ; 72 1e ; 0xf491b
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf491d eltorito.c:793
+ xor ah, ah ; 30 e4 ; 0xf4920
+ push ax ; 50 ; 0xf4922
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4923
+ shr ax, 008h ; c1 e8 08 ; 0xf4926
+ push ax ; 50 ; 0xf4929
+ push 00474h ; 68 74 04 ; 0xf492a
+ push 00480h ; 68 80 04 ; 0xf492d
+ push strict byte 00004h ; 6a 04 ; 0xf4930
+ call 01a23h ; e8 ee d0 ; 0xf4932
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4935
+ jmp near 04bebh ; e9 b0 02 ; 0xf4938 eltorito.c:794
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf493b eltorito.c:798
+ xor ah, ah ; 30 e4 ; 0xf493e
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4940
+ mov bx, si ; 89 f3 ; 0xf4943
+ add bx, ax ; 01 c3 ; 0xf4945
+ mov dl, byte [es:bx+00188h] ; 26 8a 97 88 01 ; 0xf4947
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf494c
+ cmp dl, 014h ; 80 fa 14 ; 0xf494f eltorito.c:801
+ jc short 04964h ; 72 10 ; 0xf4952
+ push ax ; 50 ; 0xf4954 eltorito.c:802
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4955
+ shr ax, 008h ; c1 e8 08 ; 0xf4958
+ push ax ; 50 ; 0xf495b
+ push 00474h ; 68 74 04 ; 0xf495c
+ push 004abh ; 68 ab 04 ; 0xf495f
+ jmp short 04930h ; eb cc ; 0xf4962
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4964 eltorito.c:806
+ shr ax, 008h ; c1 e8 08 ; 0xf4967
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf496a
+ jnbe near 04c33h ; 0f 87 c2 02 ; 0xf496d
+ push CS ; 0e ; 0xf4971
+ pop ES ; 07 ; 0xf4972
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4973
+ mov di, 04895h ; bf 95 48 ; 0xf4976
+ repne scasb ; f2 ae ; 0xf4979
+ sal cx, 1 ; d1 e1 ; 0xf497b
+ mov di, cx ; 89 cf ; 0xf497d
+ mov dx, word [cs:di+048b2h] ; 2e 8b 95 b2 48 ; 0xf497f
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4984
+ xor ah, ah ; 30 e4 ; 0xf4987
+ jmp dx ; ff e2 ; 0xf4989
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf498b eltorito.c:824
+ xor ah, ah ; 30 e4 ; 0xf498e
+ or ah, 003h ; 80 cc 03 ; 0xf4990
+ jmp near 04bf3h ; e9 5d 02 ; 0xf4993
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4996 eltorito.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4999
+ mov es, dx ; 8e c2 ; 0xf499c
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf499e
+ movzx bx, dl ; 0f b6 da ; 0xf49a1 eltorito.c:830
+ sal bx, 008h ; c1 e3 08 ; 0xf49a4
+ or ax, bx ; 09 d8 ; 0xf49a7
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf49a9
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf49ac eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf49af
+ test dl, dl ; 84 d2 ; 0xf49b3 eltorito.c:834
+ je near 04b99h ; 0f 84 e0 01 ; 0xf49b5
+ jmp near 04c07h ; e9 4b 02 ; 0xf49b9 eltorito.c:835
+ or ah, 002h ; 80 cc 02 ; 0xf49bc eltorito.c:841
+ jmp near 04bf3h ; e9 31 02 ; 0xf49bf
+ mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf49c2 eltorito.c:846
+ or ah, 030h ; 80 cc 30 ; 0xf49c7 eltorito.c:847
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf49ca
+ mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf49cd eltorito.c:848
+ jmp near 04b99h ; e9 c4 01 ; 0xf49d2 eltorito.c:849
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf49d5 eltorito.c:857
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf49d8
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf49db
+ mov [bp-00eh], es ; 8c 46 f2 ; 0xf49de
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf49e1 eltorito.c:859
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf49e5
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf49e8 eltorito.c:860
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf49ec
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf49ef eltorito.c:861
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf49f3
+ mov di, word [es:bx+00ch] ; 26 8b 7f 0c ; 0xf49f6 eltorito.c:864
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf49fa
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf49fe
+ or di, ax ; 09 c7 ; 0xf4a01 eltorito.c:865
+ je short 04a1dh ; 74 18 ; 0xf4a03
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a05 eltorito.c:866
+ shr ax, 008h ; c1 e8 08 ; 0xf4a08
+ push ax ; 50 ; 0xf4a0b
+ push 00474h ; 68 74 04 ; 0xf4a0c
+ push 003f9h ; 68 f9 03 ; 0xf4a0f
+ push strict byte 00007h ; 6a 07 ; 0xf4a12
+ call 01a23h ; e8 0c d0 ; 0xf4a14
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4a17
+ jmp near 04bebh ; e9 ce 01 ; 0xf4a1a eltorito.c:867
+ les di, [bp-010h] ; c4 7e f0 ; 0xf4a1d eltorito.c:871
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf4a20
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf4a24
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf4a27
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4a2b
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a2e eltorito.c:874
+ shr ax, 008h ; c1 e8 08 ; 0xf4a31
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf4a34
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf4a37
+ je near 04b95h ; 0f 84 57 01 ; 0xf4a3a
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf4a3e
+ je near 04b95h ; 0f 84 50 01 ; 0xf4a41
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf4a45 eltorito.c:880
+ xor bx, bx ; 31 db ; 0xf4a48
+ mov dx, ss ; 8c d2 ; 0xf4a4a
+ lea ax, [bp-022h] ; 8d 46 de ; 0xf4a4c
+ call 0b2b0h ; e8 5e 68 ; 0xf4a4f
+ mov word [bp-022h], strict word 00028h ; c7 46 de 28 00 ; 0xf4a52 eltorito.c:881
+ mov ax, di ; 89 f8 ; 0xf4a57 eltorito.c:882
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf4a59
+ xchg ah, al ; 86 c4 ; 0xf4a5c
+ xchg dh, dl ; 86 d6 ; 0xf4a5e
+ xchg dx, ax ; 92 ; 0xf4a60
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf4a61
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf4a64
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf4a67 eltorito.c:883
+ xchg ah, al ; 86 c4 ; 0xf4a6a
+ mov word [bp-01bh], ax ; 89 46 e5 ; 0xf4a6c
+ les ax, [bp-00ah] ; c4 46 f6 ; 0xf4a6f eltorito.c:885
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf4a72
+ mov word [es:si+010h], 00800h ; 26 c7 44 10 00 08 ; 0xf4a76 eltorito.c:886
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4a7c eltorito.c:888
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4a80
+ mov bx, si ; 89 f3 ; 0xf4a83
+ add bx, ax ; 01 c3 ; 0xf4a85
+ movzx di, byte [es:bx+022h] ; 26 0f b6 7f 22 ; 0xf4a87
+ add di, di ; 01 ff ; 0xf4a8c
+ push word [bp-016h] ; ff 76 ea ; 0xf4a8e
+ push word [bp-014h] ; ff 76 ec ; 0xf4a91
+ push strict byte 00001h ; 6a 01 ; 0xf4a94
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf4a96
+ xor bx, bx ; 31 db ; 0xf4a99
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a9b
+ sal ax, 1 ; d1 e0 ; 0xf4a9e
+ rcl bx, 1 ; d1 d3 ; 0xf4aa0
+ loop 04a9eh ; e2 fa ; 0xf4aa2
+ push bx ; 53 ; 0xf4aa4
+ push ax ; 50 ; 0xf4aa5
+ push strict byte 00000h ; 6a 00 ; 0xf4aa6
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4aa8
+ mov cx, ss ; 8c d1 ; 0xf4aac
+ lea bx, [bp-022h] ; 8d 5e de ; 0xf4aae
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4ab1
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4ab4
+ mov dx, ax ; 89 c2 ; 0xf4ab8
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4aba eltorito.c:890
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4abd
+ mov bx, word [es:si+01ch] ; 26 8b 5c 1c ; 0xf4ac1
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4ac5
+ shr bx, 1 ; d1 eb ; 0xf4ac8
+ rcr ax, 1 ; d1 d8 ; 0xf4aca
+ loop 04ac8h ; e2 fa ; 0xf4acc
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf4ace eltorito.c:891
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf4ad1
+ test dl, dl ; 84 d2 ; 0xf4ad5 eltorito.c:893
+ je near 04b95h ; 0f 84 ba 00 ; 0xf4ad7
+ mov bx, 00f24h ; bb 24 0f ; 0xf4adb eltorito.c:894
+ mov cx, ds ; 8c d9 ; 0xf4ade
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4ae0
+ call 019e2h ; e8 fc ce ; 0xf4ae3
+ movzx ax, dl ; 0f b6 c2 ; 0xf4ae6
+ push ax ; 50 ; 0xf4ae9
+ push word [bp-012h] ; ff 76 ee ; 0xf4aea
+ push 00474h ; 68 74 04 ; 0xf4aed
+ push 00422h ; 68 22 04 ; 0xf4af0
+ push strict byte 00004h ; 6a 04 ; 0xf4af3
+ call 01a23h ; e8 2b cf ; 0xf4af5
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4af8
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4afb eltorito.c:895
+ xor ah, ah ; 30 e4 ; 0xf4afe
+ or ah, 00ch ; 80 cc 0c ; 0xf4b00
+ jmp near 04bf3h ; e9 ed 00 ; 0xf4b03
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4b06 eltorito.c:903
+ jnbe near 04bebh ; 0f 87 de 00 ; 0xf4b09
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4b0d eltorito.c:906
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4b11
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4b14
+ mov bx, si ; 89 f3 ; 0xf4b17
+ add bx, dx ; 01 d3 ; 0xf4b19
+ mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf4b1b
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4b1f eltorito.c:908
+ je short 04b83h ; 74 5f ; 0xf4b22
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4b24
+ je short 04b61h ; 74 38 ; 0xf4b27
+ test ax, ax ; 85 c0 ; 0xf4b29
+ jne near 04b95h ; 0f 85 66 00 ; 0xf4b2b
+ cmp bl, 0ffh ; 80 fb ff ; 0xf4b2f eltorito.c:910
+ jne short 04b46h ; 75 12 ; 0xf4b32
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b34 eltorito.c:911
+ xor ah, ah ; 30 e4 ; 0xf4b37
+ or ah, 0b4h ; 80 cc b4 ; 0xf4b39
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4b3c
+ xor al, al ; 30 c0 ; 0xf4b3f eltorito.c:912
+ or AL, strict byte 001h ; 0c 01 ; 0xf4b41
+ jmp near 04bf3h ; e9 ad 00 ; 0xf4b43
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4b46 eltorito.c:914
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4b4a
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf4b4d eltorito.c:915
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4b4f
+ add si, ax ; 01 c6 ; 0xf4b52
+ mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4b54
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b58 eltorito.c:916
+ xor al, al ; 30 c0 ; 0xf4b5b
+ or AL, strict byte 001h ; 0c 01 ; 0xf4b5d
+ jmp short 04b92h ; eb 31 ; 0xf4b5f
+ test bl, bl ; 84 db ; 0xf4b61 eltorito.c:919
+ jne short 04b71h ; 75 0c ; 0xf4b63
+ or ah, 0b0h ; 80 cc b0 ; 0xf4b65 eltorito.c:920
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4b68
+ mov byte [bp+018h], bl ; 88 5e 18 ; 0xf4b6b eltorito.c:921
+ jmp near 04bf6h ; e9 85 00 ; 0xf4b6e eltorito.c:922
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4b71 eltorito.c:923
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4b75
+ db 0feh, 0cbh
+ ; dec bl ; fe cb ; 0xf4b78 eltorito.c:924
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4b7a
+ add si, ax ; 01 c6 ; 0xf4b7d
+ mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4b7f
+ test bl, bl ; 84 db ; 0xf4b83 eltorito.c:925
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf4b85
+ movzx dx, al ; 0f b6 d0 ; 0xf4b88
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b8b
+ xor al, al ; 30 c0 ; 0xf4b8e
+ or ax, dx ; 09 d0 ; 0xf4b90
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4b92
+ mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4b95 eltorito.c:931
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4b99
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4b9c
+ mov es, ax ; 8e c0 ; 0xf4b9f
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4ba1
+ and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4ba5
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4ba9
+ pop di ; 5f ; 0xf4bac
+ pop si ; 5e ; 0xf4bad
+ pop bp ; 5d ; 0xf4bae
+ retn ; c3 ; 0xf4baf
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4bb0 eltorito.c:935
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4bb4
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4bb7
+ mov bx, si ; 89 f3 ; 0xf4bba
+ add bx, dx ; 01 d3 ; 0xf4bbc
+ mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf4bbe
+ test bl, bl ; 84 db ; 0xf4bc2 eltorito.c:937
+ je short 04bcbh ; 74 05 ; 0xf4bc4
+ or ah, 0b1h ; 80 cc b1 ; 0xf4bc6 eltorito.c:938
+ jmp short 04bf3h ; eb 28 ; 0xf4bc9
+ je short 04b95h ; 74 c8 ; 0xf4bcb eltorito.c:960
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4bcd eltorito.c:961
+ xor ah, ah ; 30 e4 ; 0xf4bd0
+ jmp short 04bc6h ; eb f2 ; 0xf4bd2
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4bd4 eltorito.c:969
+ push ax ; 50 ; 0xf4bd8
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4bd9
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4bdc
+ mov bx, si ; 89 f3 ; 0xf4bdf
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf4be1
+ call 05a95h ; e8 ae 0e ; 0xf4be4
+ test ax, ax ; 85 c0 ; 0xf4be7
+ je short 04b95h ; 74 aa ; 0xf4be9
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4beb eltorito.c:970
+ xor ah, ah ; 30 e4 ; 0xf4bee
+ or ah, 001h ; 80 cc 01 ; 0xf4bf0
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4bf3
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4bf6
+ shr ax, 008h ; c1 e8 08 ; 0xf4bf9
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4bfc
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4bff
+ mov es, dx ; 8e c2 ; 0xf4c02
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4c04
+ or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4c07
+ jmp short 04ba9h ; eb 9c ; 0xf4c0b
+ or ah, 006h ; 80 cc 06 ; 0xf4c0d eltorito.c:977
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4c10
+ jmp short 04c07h ; eb f2 ; 0xf4c13 eltorito.c:978
+ cmp ax, strict word 00006h ; 3d 06 00 ; 0xf4c15 eltorito.c:983
+ je near 04b95h ; 0f 84 79 ff ; 0xf4c18
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4c1c
+ jc short 04bebh ; 72 ca ; 0xf4c1f
+ jbe near 04b95h ; 0f 86 70 ff ; 0xf4c21
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf4c25
+ jc short 04bebh ; 72 c1 ; 0xf4c28
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf4c2a
+ jbe near 04b95h ; 0f 86 64 ff ; 0xf4c2d
+ jmp short 04bebh ; eb b8 ; 0xf4c31 eltorito.c:991
+ mov bx, 00f24h ; bb 24 0f ; 0xf4c33 eltorito.c:1004
+ mov cx, ds ; 8c d9 ; 0xf4c36
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c38
+ call 019e2h ; e8 a4 cd ; 0xf4c3b
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4c3e
+ shr ax, 008h ; c1 e8 08 ; 0xf4c41
+ push ax ; 50 ; 0xf4c44
+ push 00474h ; 68 74 04 ; 0xf4c45
+ push 0037dh ; 68 7d 03 ; 0xf4c48
+ push strict byte 00004h ; 6a 04 ; 0xf4c4b
+ jmp near 04a14h ; e9 c4 fd ; 0xf4c4d
+ ; disGetNextSymbol 0xf4c50 LB 0x66fc -> off=0x0 cb=000000000000004b uValue=00000000000f3650 'print_boot_device'
+print_boot_device: ; 0xf4c50 LB 0x4b
+ push bp ; 55 ; 0xf4c50 boot.c:109
+ mov bp, sp ; 89 e5 ; 0xf4c51
+ push cx ; 51 ; 0xf4c53
+ test al, al ; 84 c0 ; 0xf4c54 boot.c:117
+ je short 04c5dh ; 74 05 ; 0xf4c56
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf4c58
+ jmp short 04c77h ; eb 1a ; 0xf4c5b boot.c:118
+ test dl, dl ; 84 d2 ; 0xf4c5d
+ je short 04c66h ; 74 05 ; 0xf4c5f
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf4c61
+ jmp short 04c77h ; eb 11 ; 0xf4c64 boot.c:119
+ test bl, 080h ; f6 c3 80 ; 0xf4c66
+ jne short 04c6fh ; 75 04 ; 0xf4c69
+ xor dh, dh ; 30 f6 ; 0xf4c6b
+ jmp short 04c77h ; eb 08 ; 0xf4c6d boot.c:120
+ test bl, 080h ; f6 c3 80 ; 0xf4c6f
+ je short 04c95h ; 74 21 ; 0xf4c72
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4c74
+ mov bx, 00f24h ; bb 24 0f ; 0xf4c77 boot.c:123
+ mov cx, ds ; 8c d9 ; 0xf4c7a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c7c
+ call 019e2h ; e8 60 cd ; 0xf4c7f
+ imul dx, dx, strict byte 0000ah ; 6b d2 0a ; 0xf4c82
+ add dx, 00f4ah ; 81 c2 4a 0f ; 0xf4c85
+ push dx ; 52 ; 0xf4c89
+ push 004deh ; 68 de 04 ; 0xf4c8a
+ push strict byte 00004h ; 6a 04 ; 0xf4c8d
+ call 01a23h ; e8 91 cd ; 0xf4c8f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c92
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4c95 boot.c:124
+ pop cx ; 59 ; 0xf4c98
+ pop bp ; 5d ; 0xf4c99
+ retn ; c3 ; 0xf4c9a
+ ; disGetNextSymbol 0xf4c9b LB 0x66b1 -> off=0x0 cb=0000000000000093 uValue=00000000000f369b 'print_boot_failure'
+print_boot_failure: ; 0xf4c9b LB 0x93
+ push bp ; 55 ; 0xf4c9b boot.c:131
+ mov bp, sp ; 89 e5 ; 0xf4c9c
+ push si ; 56 ; 0xf4c9e
+ mov dh, cl ; 88 ce ; 0xf4c9f
+ mov ah, bl ; 88 dc ; 0xf4ca1 boot.c:134
+ and ah, 07fh ; 80 e4 7f ; 0xf4ca3
+ movzx si, ah ; 0f b6 f4 ; 0xf4ca6
+ test al, al ; 84 c0 ; 0xf4ca9 boot.c:142
+ je short 04cc8h ; 74 1b ; 0xf4cab
+ mov bx, 00f24h ; bb 24 0f ; 0xf4cad boot.c:143
+ mov cx, ds ; 8c d9 ; 0xf4cb0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4cb2
+ call 019e2h ; e8 2a cd ; 0xf4cb5
+ push 00f5eh ; 68 5e 0f ; 0xf4cb8
+ push 004f2h ; 68 f2 04 ; 0xf4cbb
+ push strict byte 00004h ; 6a 04 ; 0xf4cbe
+ call 01a23h ; e8 60 cd ; 0xf4cc0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4cc3
+ jmp short 04d0ch ; eb 44 ; 0xf4cc6 boot.c:144
+ test dl, dl ; 84 d2 ; 0xf4cc8
+ je short 04cdch ; 74 10 ; 0xf4cca
+ mov bx, 00f24h ; bb 24 0f ; 0xf4ccc boot.c:145
+ mov cx, ds ; 8c d9 ; 0xf4ccf
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4cd1
+ call 019e2h ; e8 0b cd ; 0xf4cd4
+ push 00f68h ; 68 68 0f ; 0xf4cd7
+ jmp short 04cbbh ; eb df ; 0xf4cda
+ test bl, 080h ; f6 c3 80 ; 0xf4cdc boot.c:146
+ je short 04cf2h ; 74 11 ; 0xf4cdf
+ mov bx, 00f24h ; bb 24 0f ; 0xf4ce1 boot.c:147
+ mov cx, ds ; 8c d9 ; 0xf4ce4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4ce6
+ call 019e2h ; e8 f6 cc ; 0xf4ce9
+ push si ; 56 ; 0xf4cec
+ push 00f54h ; 68 54 0f ; 0xf4ced
+ jmp short 04d01h ; eb 0f ; 0xf4cf0 boot.c:148
+ mov bx, 00f24h ; bb 24 0f ; 0xf4cf2 boot.c:149
+ mov cx, ds ; 8c d9 ; 0xf4cf5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4cf7
+ call 019e2h ; e8 e5 cc ; 0xf4cfa
+ push si ; 56 ; 0xf4cfd
+ push 00f4ah ; 68 4a 0f ; 0xf4cfe
+ push 00507h ; 68 07 05 ; 0xf4d01
+ push strict byte 00004h ; 6a 04 ; 0xf4d04
+ call 01a23h ; e8 1a cd ; 0xf4d06
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4d09
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4d0c boot.c:151
+ jne short 04d26h ; 75 14 ; 0xf4d10
+ test dh, dh ; 84 f6 ; 0xf4d12 boot.c:152
+ jne short 04d1bh ; 75 05 ; 0xf4d14
+ push 0051fh ; 68 1f 05 ; 0xf4d16 boot.c:153
+ jmp short 04d1eh ; eb 03 ; 0xf4d19 boot.c:154
+ push 00549h ; 68 49 05 ; 0xf4d1b boot.c:155
+ push strict byte 00007h ; 6a 07 ; 0xf4d1e
+ call 01a23h ; e8 00 cd ; 0xf4d20
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4d23
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4d26 boot.c:157
+ pop si ; 5e ; 0xf4d29
+ pop bp ; 5d ; 0xf4d2a
+ retn 00002h ; c2 02 00 ; 0xf4d2b
+ ; disGetNextSymbol 0xf4d2e LB 0x661e -> off=0x0 cb=0000000000000027 uValue=00000000000f372e 'print_cdromboot_failure'
+print_cdromboot_failure: ; 0xf4d2e LB 0x27
+ push bp ; 55 ; 0xf4d2e boot.c:163
+ mov bp, sp ; 89 e5 ; 0xf4d2f
+ push bx ; 53 ; 0xf4d31
+ push cx ; 51 ; 0xf4d32
+ push dx ; 52 ; 0xf4d33
+ mov dx, ax ; 89 c2 ; 0xf4d34
+ mov bx, 00f24h ; bb 24 0f ; 0xf4d36 boot.c:165
+ mov cx, ds ; 8c d9 ; 0xf4d39
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4d3b
+ call 019e2h ; e8 a1 cc ; 0xf4d3e
+ push dx ; 52 ; 0xf4d41
+ push 0057eh ; 68 7e 05 ; 0xf4d42
+ push strict byte 00004h ; 6a 04 ; 0xf4d45
+ call 01a23h ; e8 d9 cc ; 0xf4d47
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4d4a
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf4d4d boot.c:167
+ pop dx ; 5a ; 0xf4d50
+ pop cx ; 59 ; 0xf4d51
+ pop bx ; 5b ; 0xf4d52
+ pop bp ; 5d ; 0xf4d53
+ retn ; c3 ; 0xf4d54
+ ; disGetNextSymbol 0xf4d55 LB 0x65f7 -> off=0x0 cb=0000000000000245 uValue=00000000000f3755 'int19_function'
+int19_function: ; 0xf4d55 LB 0x245
+ push bp ; 55 ; 0xf4d55 boot.c:170
+ mov bp, sp ; 89 e5 ; 0xf4d56
+ push si ; 56 ; 0xf4d58
+ push di ; 57 ; 0xf4d59
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf4d5a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4d5d boot.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4d60
+ mov es, ax ; 8e c0 ; 0xf4d63
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf4d65
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf4d68 boot.c:49
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4d6b boot.c:181
+ mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4d6f boot.c:204
+ call 01765h ; e8 f0 c9 ; 0xf4d72
+ movzx dx, al ; 0f b6 d0 ; 0xf4d75
+ mov ax, strict word 00038h ; b8 38 00 ; 0xf4d78 boot.c:205
+ call 01765h ; e8 e7 c9 ; 0xf4d7b
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4d7e
+ xor ah, ah ; 30 e4 ; 0xf4d80
+ sal ax, 004h ; c1 e0 04 ; 0xf4d82
+ or dx, ax ; 09 c2 ; 0xf4d85
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d87 boot.c:206
+ call 01765h ; e8 d8 c9 ; 0xf4d8a
+ and AL, strict byte 00fh ; 24 0f ; 0xf4d8d
+ xor ah, ah ; 30 e4 ; 0xf4d8f
+ sal ax, 00ch ; c1 e0 0c ; 0xf4d91
+ or dx, ax ; 09 c2 ; 0xf4d94
+ mov di, 00335h ; bf 35 03 ; 0xf4d96 boot.c:38
+ mov es, bx ; 8e c3 ; 0xf4d99
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf4d9b
+ test al, al ; 84 c0 ; 0xf4d9e boot.c:39
+ je short 04da5h ; 74 03 ; 0xf4da0
+ movzx dx, al ; 0f b6 d0 ; 0xf4da2 boot.c:39
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4da5 boot.c:210
+ jne short 04dbbh ; 75 10 ; 0xf4da9
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4dab boot.c:211
+ call 01765h ; e8 b4 c9 ; 0xf4dae
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4db1
+ xor ah, ah ; 30 e4 ; 0xf4db3
+ sar ax, 004h ; c1 f8 04 ; 0xf4db5
+ call 07d31h ; e8 76 2f ; 0xf4db8
+ cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4dbb boot.c:213
+ jne short 04dc4h ; 75 03 ; 0xf4dbf
+ shr dx, 004h ; c1 ea 04 ; 0xf4dc1
+ cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4dc4 boot.c:214
+ jne short 04dcdh ; 75 03 ; 0xf4dc8
+ shr dx, 008h ; c1 ea 08 ; 0xf4dca
+ cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4dcd boot.c:215
+ jne short 04dd6h ; 75 03 ; 0xf4dd1
+ shr dx, 00ch ; c1 ea 0c ; 0xf4dd3
+ cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4dd6 boot.c:216
+ jnc short 04ddfh ; 73 04 ; 0xf4dd9
+ mov byte [bp-006h], 001h ; c6 46 fa 01 ; 0xf4ddb
+ xor al, al ; 30 c0 ; 0xf4ddf boot.c:217
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4de1
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4de4
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf4de7 boot.c:218
+ mov bx, 00f24h ; bb 24 0f ; 0xf4dea boot.c:219
+ mov cx, ds ; 8c d9 ; 0xf4ded
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4def
+ call 019e2h ; e8 ed cb ; 0xf4df2
+ push dx ; 52 ; 0xf4df5
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf4df6
+ push ax ; 50 ; 0xf4dfa
+ push 0059eh ; 68 9e 05 ; 0xf4dfb
+ push strict byte 00004h ; 6a 04 ; 0xf4dfe
+ call 01a23h ; e8 20 cc ; 0xf4e00
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4e03
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4e06 boot.c:221
+ cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4e09
+ jc short 04e1ch ; 72 0e ; 0xf4e0c
+ jbe short 04e2bh ; 76 1b ; 0xf4e0e
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4e10
+ je short 04e48h ; 74 33 ; 0xf4e13
+ cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4e15
+ je short 04e3eh ; 74 24 ; 0xf4e18
+ jmp short 04e75h ; eb 59 ; 0xf4e1a
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4e1c
+ jne short 04e75h ; 75 54 ; 0xf4e1f
+ xor al, al ; 30 c0 ; 0xf4e21 boot.c:223
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4e23
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4e26 boot.c:224
+ jmp short 04e8bh ; eb 60 ; 0xf4e29 boot.c:225
+ mov bx, 00334h ; bb 34 03 ; 0xf4e2b boot.c:38
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4e2e
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4e31
+ add AL, strict byte 080h ; 04 80 ; 0xf4e34 boot.c:231
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4e36
+ mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf4e39 boot.c:232
+ jmp short 04e8bh ; eb 4d ; 0xf4e3c boot.c:233
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf4e3e boot.c:236
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4e42 boot.c:237
+ jmp short 04e52h ; eb 0a ; 0xf4e46 boot.c:238
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4e48 boot.c:239
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4e4c boot.c:255
+ je short 04e8bh ; 74 39 ; 0xf4e50
+ call 03eb9h ; e8 64 f0 ; 0xf4e52 boot.c:256
+ mov dx, ax ; 89 c2 ; 0xf4e55
+ test AL, strict byte 0ffh ; a8 ff ; 0xf4e57 boot.c:259
+ je short 04e7ch ; 74 21 ; 0xf4e59
+ call 04d2eh ; e8 d0 fe ; 0xf4e5b boot.c:260
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4e5e boot.c:261
+ push ax ; 50 ; 0xf4e62
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e63
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4e67
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4e6b
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4e6f
+ call 04c9bh ; e8 26 fe ; 0xf4e72
+ xor ax, ax ; 31 c0 ; 0xf4e75
+ xor dx, dx ; 31 d2 ; 0xf4e77
+ jmp near 04f93h ; e9 17 01 ; 0xf4e79
+ mov bx, 0032ah ; bb 2a 03 ; 0xf4e7c boot.c:48
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4e7f
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf4e82
+ shr dx, 008h ; c1 ea 08 ; 0xf4e85 boot.c:266
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf4e88
+ cmp byte [bp-00ch], 001h ; 80 7e f4 01 ; 0xf4e8b boot.c:272
+ jne near 04f07h ; 0f 85 74 00 ; 0xf4e8f
+ xor si, si ; 31 f6 ; 0xf4e93 boot.c:275
+ mov ax, 0e200h ; b8 00 e2 ; 0xf4e95
+ mov es, ax ; 8e c0 ; 0xf4e98
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4e9a boot.c:276
+ jne short 04e5eh ; 75 bd ; 0xf4e9f
+ mov di, ax ; 89 c7 ; 0xf4ea1 boot.c:282
+ mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4ea3
+ cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4ea7 boot.c:283
+ jne short 04e5eh ; 75 af ; 0xf4ead
+ cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4eaf
+ jne short 04e5eh ; 75 a8 ; 0xf4eb4
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4eb6 boot.c:285
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4eba
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf4ebd
+ cmp ax, 06568h ; 3d 68 65 ; 0xf4ec1 boot.c:286
+ jne short 04ee5h ; 75 1f ; 0xf4ec4
+ cmp dx, 07445h ; 81 fa 45 74 ; 0xf4ec6
+ jne short 04ee5h ; 75 19 ; 0xf4eca
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4ecc boot.c:288
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4ed0
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4ed4
+ call 04c50h ; e8 75 fd ; 0xf4ed8
+ mov word [bp-012h], strict word 00006h ; c7 46 ee 06 00 ; 0xf4edb boot.c:289
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4ee0
+ jmp short 04f01h ; eb 1c ; 0xf4ee3 boot.c:292
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4ee5 boot.c:295
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4ee9
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4eed
+ call 04c50h ; e8 5c fd ; 0xf4ef1
+ sti ; fb ; 0xf4ef4 boot.c:296
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4ef5 boot.c:297
+ mov es, di ; 8e c7 ; 0xf4ef8
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4efa
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf4efe
+ call far [bp-012h] ; ff 5e ee ; 0xf4f01 boot.c:298
+ jmp near 04e5eh ; e9 57 ff ; 0xf4f04 boot.c:301
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4f07 boot.c:309
+ jne short 04f33h ; 75 26 ; 0xf4f0b
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf4f0d
+ jne short 04f33h ; 75 20 ; 0xf4f11
+ mov si, 007c0h ; be c0 07 ; 0xf4f13 boot.c:310
+ mov es, si ; 8e c6 ; 0xf4f16 boot.c:312
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf4f18
+ mov ax, 00201h ; b8 01 02 ; 0xf4f1b
+ mov DH, strict byte 000h ; b6 00 ; 0xf4f1e
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4f20
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf4f23
+ int 013h ; cd 13 ; 0xf4f25
+ mov ax, strict word 00000h ; b8 00 00 ; 0xf4f27
+ sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4f2a
+ test ax, ax ; 85 c0 ; 0xf4f2d boot.c:313
+ jne near 04e5eh ; 0f 85 2b ff ; 0xf4f2f
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4f33 boot.c:328
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf4f37
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4f3a boot.c:333
+ je short 04f42h ; 74 02 ; 0xf4f3e
+ mov AL, strict byte 001h ; b0 01 ; 0xf4f40 boot.c:334
+ xor bx, bx ; 31 db ; 0xf4f42 boot.c:48
+ mov es, si ; 8e c6 ; 0xf4f44
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4f46
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4f49 boot.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf4f4c
+ cmp dx, bx ; 39 da ; 0xf4f4f boot.c:49
+ je short 04f62h ; 74 0f ; 0xf4f51
+ test al, al ; 84 c0 ; 0xf4f53
+ jne short 04f78h ; 75 21 ; 0xf4f55
+ mov bx, 001feh ; bb fe 01 ; 0xf4f57 boot.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4f5a
+ cmp ax, 0aa55h ; 3d 55 aa ; 0xf4f5d boot.c:49
+ je short 04f78h ; 74 16 ; 0xf4f60
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4f62 boot.c:340
+ push ax ; 50 ; 0xf4f66
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4f67
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4f6b
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4f6f
+ xor cx, cx ; 31 c9 ; 0xf4f73
+ jmp near 04e72h ; e9 fa fe ; 0xf4f75
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4f78 boot.c:346
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4f7c
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4f80
+ call 04c50h ; e8 c9 fc ; 0xf4f84
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4f87 boot.c:352
+ xor dx, dx ; 31 d2 ; 0xf4f8b
+ xor ax, ax ; 31 c0 ; 0xf4f8d
+ add ax, si ; 01 f0 ; 0xf4f8f
+ adc dx, bx ; 11 da ; 0xf4f91
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4f93 boot.c:353
+ pop di ; 5f ; 0xf4f96
+ pop si ; 5e ; 0xf4f97
+ pop bp ; 5d ; 0xf4f98
+ retn ; c3 ; 0xf4f99
+ ; disGetNextSymbol 0xf4f9a LB 0x63b2 -> off=0x0 cb=0000000000000013 uValue=00000000000f399a 'keyboard_panic'
+keyboard_panic: ; 0xf4f9a LB 0x13
+ push bp ; 55 ; 0xf4f9a keyboard.c:194
+ mov bp, sp ; 89 e5 ; 0xf4f9b
+ push ax ; 50 ; 0xf4f9d keyboard.c:199
+ push 005beh ; 68 be 05 ; 0xf4f9e
+ push strict byte 00007h ; 6a 07 ; 0xf4fa1
+ call 01a23h ; e8 7d ca ; 0xf4fa3
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4fa6
+ mov sp, bp ; 89 ec ; 0xf4fa9 keyboard.c:200
+ pop bp ; 5d ; 0xf4fab
+ retn ; c3 ; 0xf4fac
+ ; disGetNextSymbol 0xf4fad LB 0x639f -> off=0x0 cb=000000000000026a uValue=00000000000f39ad 'keyboard_init'
+keyboard_init: ; 0xf4fad LB 0x26a
+ push bp ; 55 ; 0xf4fad keyboard.c:208
+ mov bp, sp ; 89 e5 ; 0xf4fae
+ mov AL, strict byte 0aah ; b0 aa ; 0xf4fb0 keyboard.c:214
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fb2
+ out DX, AL ; ee ; 0xf4fb5
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fb6 keyboard.c:217
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fb9 keyboard.c:218
+ in AL, DX ; ec ; 0xf4fbc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fbd
+ test AL, strict byte 002h ; a8 02 ; 0xf4fbf
+ je short 04fd0h ; 74 0d ; 0xf4fc1
+ dec bx ; 4b ; 0xf4fc3
+ test bx, bx ; 85 db ; 0xf4fc4
+ jbe short 04fd0h ; 76 08 ; 0xf4fc6
+ xor al, al ; 30 c0 ; 0xf4fc8
+ mov dx, 00080h ; ba 80 00 ; 0xf4fca
+ out DX, AL ; ee ; 0xf4fcd
+ jmp short 04fb9h ; eb e9 ; 0xf4fce
+ test bx, bx ; 85 db ; 0xf4fd0 keyboard.c:219
+ jne short 04fd9h ; 75 05 ; 0xf4fd2
+ xor ax, ax ; 31 c0 ; 0xf4fd4
+ call 04f9ah ; e8 c1 ff ; 0xf4fd6
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fd9 keyboard.c:222
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fdc keyboard.c:223
+ in AL, DX ; ec ; 0xf4fdf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fe0
+ test AL, strict byte 001h ; a8 01 ; 0xf4fe2
+ jne short 04ff3h ; 75 0d ; 0xf4fe4
+ dec bx ; 4b ; 0xf4fe6
+ test bx, bx ; 85 db ; 0xf4fe7
+ jbe short 04ff3h ; 76 08 ; 0xf4fe9
+ mov AL, strict byte 001h ; b0 01 ; 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:224
+ jne short 04ffdh ; 75 06 ; 0xf4ff5
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4ff7
+ call 04f9ah ; e8 9d ff ; 0xf4ffa
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4ffd keyboard.c:227
+ in AL, DX ; ec ; 0xf5000
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5001
+ cmp ax, strict word 00055h ; 3d 55 00 ; 0xf5003
+ je short 0500eh ; 74 06 ; 0xf5006
+ mov ax, 003dfh ; b8 df 03 ; 0xf5008 keyboard.c:228
+ call 04f9ah ; e8 8c ff ; 0xf500b
+ mov AL, strict byte 0abh ; b0 ab ; 0xf500e keyboard.c:232
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5010
+ out DX, AL ; ee ; 0xf5013
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5014 keyboard.c:235
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5017 keyboard.c:236
+ in AL, DX ; ec ; 0xf501a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf501b
+ test AL, strict byte 002h ; a8 02 ; 0xf501d
+ je short 0502eh ; 74 0d ; 0xf501f
+ dec bx ; 4b ; 0xf5021
+ test bx, bx ; 85 db ; 0xf5022
+ jbe short 0502eh ; 76 08 ; 0xf5024
+ mov AL, strict byte 010h ; b0 10 ; 0xf5026
+ mov dx, 00080h ; ba 80 00 ; 0xf5028
+ out DX, AL ; ee ; 0xf502b
+ jmp short 05017h ; eb e9 ; 0xf502c
+ test bx, bx ; 85 db ; 0xf502e keyboard.c:237
+ jne short 05038h ; 75 06 ; 0xf5030
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf5032
+ call 04f9ah ; e8 62 ff ; 0xf5035
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5038 keyboard.c:240
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf503b keyboard.c:241
+ in AL, DX ; ec ; 0xf503e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf503f
+ test AL, strict byte 001h ; a8 01 ; 0xf5041
+ jne short 05052h ; 75 0d ; 0xf5043
+ dec bx ; 4b ; 0xf5045
+ test bx, bx ; 85 db ; 0xf5046
+ jbe short 05052h ; 76 08 ; 0xf5048
+ mov AL, strict byte 011h ; b0 11 ; 0xf504a
+ mov dx, 00080h ; ba 80 00 ; 0xf504c
+ out DX, AL ; ee ; 0xf504f
+ jmp short 0503bh ; eb e9 ; 0xf5050
+ test bx, bx ; 85 db ; 0xf5052 keyboard.c:242
+ jne short 0505ch ; 75 06 ; 0xf5054
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf5056
+ call 04f9ah ; e8 3e ff ; 0xf5059
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf505c keyboard.c:246
+ in AL, DX ; ec ; 0xf505f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5060
+ test ax, ax ; 85 c0 ; 0xf5062
+ je short 0506ch ; 74 06 ; 0xf5064
+ mov ax, 003e0h ; b8 e0 03 ; 0xf5066 keyboard.c:247
+ call 04f9ah ; e8 2e ff ; 0xf5069
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf506c keyboard.c:253
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf506e
+ out DX, AL ; ee ; 0xf5071
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5072 keyboard.c:256
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5075 keyboard.c:257
+ in AL, DX ; ec ; 0xf5078
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5079
+ test AL, strict byte 002h ; a8 02 ; 0xf507b
+ je short 0508ch ; 74 0d ; 0xf507d
+ dec bx ; 4b ; 0xf507f
+ test bx, bx ; 85 db ; 0xf5080
+ jbe short 0508ch ; 76 08 ; 0xf5082
+ mov AL, strict byte 020h ; b0 20 ; 0xf5084
+ mov dx, 00080h ; ba 80 00 ; 0xf5086
+ out DX, AL ; ee ; 0xf5089
+ jmp short 05075h ; eb e9 ; 0xf508a
+ test bx, bx ; 85 db ; 0xf508c keyboard.c:258
+ jne short 05096h ; 75 06 ; 0xf508e
+ mov ax, strict word 00014h ; b8 14 00 ; 0xf5090
+ call 04f9ah ; e8 04 ff ; 0xf5093
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5096 keyboard.c:261
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5099 keyboard.c:262
+ in AL, DX ; ec ; 0xf509c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf509d
+ test AL, strict byte 001h ; a8 01 ; 0xf509f
+ jne short 050b0h ; 75 0d ; 0xf50a1
+ dec bx ; 4b ; 0xf50a3
+ test bx, bx ; 85 db ; 0xf50a4
+ jbe short 050b0h ; 76 08 ; 0xf50a6
+ mov AL, strict byte 021h ; b0 21 ; 0xf50a8
+ mov dx, 00080h ; ba 80 00 ; 0xf50aa
+ out DX, AL ; ee ; 0xf50ad
+ jmp short 05099h ; eb e9 ; 0xf50ae
+ test bx, bx ; 85 db ; 0xf50b0 keyboard.c:263
+ jne short 050bah ; 75 06 ; 0xf50b2
+ mov ax, strict word 00015h ; b8 15 00 ; 0xf50b4
+ call 04f9ah ; e8 e0 fe ; 0xf50b7
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50ba keyboard.c:266
+ in AL, DX ; ec ; 0xf50bd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50be
+ cmp ax, 000fah ; 3d fa 00 ; 0xf50c0
+ je short 050cbh ; 74 06 ; 0xf50c3
+ mov ax, 003e1h ; b8 e1 03 ; 0xf50c5 keyboard.c:267
+ call 04f9ah ; e8 cf fe ; 0xf50c8
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50cb keyboard.c:271
+ in AL, DX ; ec ; 0xf50ce
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50cf
+ test AL, strict byte 001h ; a8 01 ; 0xf50d1
+ jne short 050ddh ; 75 08 ; 0xf50d3
+ mov AL, strict byte 031h ; b0 31 ; 0xf50d5
+ mov dx, 00080h ; ba 80 00 ; 0xf50d7
+ out DX, AL ; ee ; 0xf50da
+ jmp short 050cbh ; eb ee ; 0xf50db
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50dd keyboard.c:273
+ in AL, DX ; ec ; 0xf50e0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50e1
+ cmp ax, 000aah ; 3d aa 00 ; 0xf50e3
+ je short 050f6h ; 74 0e ; 0xf50e6
+ in AL, DX ; ec ; 0xf50e8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50e9
+ cmp ax, 000aah ; 3d aa 00 ; 0xf50eb
+ je short 050f6h ; 74 06 ; 0xf50ee
+ mov ax, 003e2h ; b8 e2 03 ; 0xf50f0 keyboard.c:274
+ call 04f9ah ; e8 a4 fe ; 0xf50f3
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf50f6 keyboard.c:278
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50f8
+ out DX, AL ; ee ; 0xf50fb
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf50fc keyboard.c:281
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50ff keyboard.c:282
+ in AL, DX ; ec ; 0xf5102
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5103
+ test AL, strict byte 002h ; a8 02 ; 0xf5105
+ je short 05116h ; 74 0d ; 0xf5107
+ dec bx ; 4b ; 0xf5109
+ test bx, bx ; 85 db ; 0xf510a
+ jbe short 05116h ; 76 08 ; 0xf510c
+ mov AL, strict byte 040h ; b0 40 ; 0xf510e
+ mov dx, 00080h ; ba 80 00 ; 0xf5110
+ out DX, AL ; ee ; 0xf5113
+ jmp short 050ffh ; eb e9 ; 0xf5114
+ test bx, bx ; 85 db ; 0xf5116 keyboard.c:283
+ jne short 05120h ; 75 06 ; 0xf5118
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf511a
+ call 04f9ah ; e8 7a fe ; 0xf511d
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5120 keyboard.c:286
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5123 keyboard.c:287
+ in AL, DX ; ec ; 0xf5126
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5127
+ test AL, strict byte 001h ; a8 01 ; 0xf5129
+ jne short 0513ah ; 75 0d ; 0xf512b
+ dec bx ; 4b ; 0xf512d
+ test bx, bx ; 85 db ; 0xf512e
+ jbe short 0513ah ; 76 08 ; 0xf5130
+ mov AL, strict byte 041h ; b0 41 ; 0xf5132
+ mov dx, 00080h ; ba 80 00 ; 0xf5134
+ out DX, AL ; ee ; 0xf5137
+ jmp short 05123h ; eb e9 ; 0xf5138
+ test bx, bx ; 85 db ; 0xf513a keyboard.c:288
+ jne short 05144h ; 75 06 ; 0xf513c
+ mov ax, strict word 00029h ; b8 29 00 ; 0xf513e
+ call 04f9ah ; e8 56 fe ; 0xf5141
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5144 keyboard.c:291
+ in AL, DX ; ec ; 0xf5147
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5148
+ cmp ax, 000fah ; 3d fa 00 ; 0xf514a
+ je short 05155h ; 74 06 ; 0xf514d
+ mov ax, 003e3h ; b8 e3 03 ; 0xf514f keyboard.c:292
+ call 04f9ah ; e8 45 fe ; 0xf5152
+ mov AL, strict byte 060h ; b0 60 ; 0xf5155 keyboard.c:296
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5157
+ out DX, AL ; ee ; 0xf515a
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf515b keyboard.c:299
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf515e keyboard.c:300
+ in AL, DX ; ec ; 0xf5161
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5162
+ test AL, strict byte 002h ; a8 02 ; 0xf5164
+ je short 05175h ; 74 0d ; 0xf5166
+ dec bx ; 4b ; 0xf5168
+ test bx, bx ; 85 db ; 0xf5169
+ jbe short 05175h ; 76 08 ; 0xf516b
+ mov AL, strict byte 050h ; b0 50 ; 0xf516d
+ mov dx, 00080h ; ba 80 00 ; 0xf516f
+ out DX, AL ; ee ; 0xf5172
+ jmp short 0515eh ; eb e9 ; 0xf5173
+ test bx, bx ; 85 db ; 0xf5175 keyboard.c:301
+ jne short 0517fh ; 75 06 ; 0xf5177
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf5179
+ call 04f9ah ; e8 1b fe ; 0xf517c
+ mov AL, strict byte 065h ; b0 65 ; 0xf517f keyboard.c:304
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5181
+ out DX, AL ; ee ; 0xf5184
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5185 keyboard.c:307
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5188 keyboard.c:308
+ in AL, DX ; ec ; 0xf518b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf518c
+ test AL, strict byte 002h ; a8 02 ; 0xf518e
+ je short 0519fh ; 74 0d ; 0xf5190
+ dec bx ; 4b ; 0xf5192
+ test bx, bx ; 85 db ; 0xf5193
+ jbe short 0519fh ; 76 08 ; 0xf5195
+ mov AL, strict byte 060h ; b0 60 ; 0xf5197
+ mov dx, 00080h ; ba 80 00 ; 0xf5199
+ out DX, AL ; ee ; 0xf519c
+ jmp short 05188h ; eb e9 ; 0xf519d
+ test bx, bx ; 85 db ; 0xf519f keyboard.c:309
+ jne short 051a9h ; 75 06 ; 0xf51a1
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf51a3
+ call 04f9ah ; e8 f1 fd ; 0xf51a6
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf51a9 keyboard.c:312
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf51ab
+ out DX, AL ; ee ; 0xf51ae
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf51af keyboard.c:315
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf51b2 keyboard.c:316
+ in AL, DX ; ec ; 0xf51b5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf51b6
+ test AL, strict byte 002h ; a8 02 ; 0xf51b8
+ je short 051c9h ; 74 0d ; 0xf51ba
+ dec bx ; 4b ; 0xf51bc
+ test bx, bx ; 85 db ; 0xf51bd
+ jbe short 051c9h ; 76 08 ; 0xf51bf
+ mov AL, strict byte 070h ; b0 70 ; 0xf51c1
+ mov dx, 00080h ; ba 80 00 ; 0xf51c3
+ out DX, AL ; ee ; 0xf51c6
+ jmp short 051b2h ; eb e9 ; 0xf51c7
+ test bx, bx ; 85 db ; 0xf51c9 keyboard.c:317
+ jne short 051d3h ; 75 06 ; 0xf51cb
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf51cd
+ call 04f9ah ; e8 c7 fd ; 0xf51d0
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf51d3 keyboard.c:320
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf51d6 keyboard.c:321
+ in AL, DX ; ec ; 0xf51d9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf51da
+ test AL, strict byte 001h ; a8 01 ; 0xf51dc
+ jne short 051edh ; 75 0d ; 0xf51de
+ dec bx ; 4b ; 0xf51e0
+ test bx, bx ; 85 db ; 0xf51e1
+ jbe short 051edh ; 76 08 ; 0xf51e3
+ mov AL, strict byte 071h ; b0 71 ; 0xf51e5
+ mov dx, 00080h ; ba 80 00 ; 0xf51e7
+ out DX, AL ; ee ; 0xf51ea
+ jmp short 051d6h ; eb e9 ; 0xf51eb
+ test bx, bx ; 85 db ; 0xf51ed keyboard.c:322
+ jne short 051f7h ; 75 06 ; 0xf51ef
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf51f1
+ call 04f9ah ; e8 a3 fd ; 0xf51f4
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf51f7 keyboard.c:325
+ in AL, DX ; ec ; 0xf51fa
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf51fb
+ cmp ax, 000fah ; 3d fa 00 ; 0xf51fd
+ je short 05208h ; 74 06 ; 0xf5200
+ mov ax, 003e4h ; b8 e4 03 ; 0xf5202 keyboard.c:326
+ call 04f9ah ; e8 92 fd ; 0xf5205
+ mov AL, strict byte 0a8h ; b0 a8 ; 0xf5208 keyboard.c:330
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf520a
+ out DX, AL ; ee ; 0xf520d
+ xor ax, ax ; 31 c0 ; 0xf520e keyboard.c:335
+ call 06635h ; e8 22 14 ; 0xf5210
+ mov sp, bp ; 89 ec ; 0xf5213 keyboard.c:336
+ pop bp ; 5d ; 0xf5215
+ retn ; c3 ; 0xf5216
+ ; disGetNextSymbol 0xf5217 LB 0x6135 -> off=0x0 cb=0000000000000053 uValue=00000000000f3c17 'enqueue_key'
+enqueue_key: ; 0xf5217 LB 0x53
+ push bx ; 53 ; 0xf5217 keyboard.c:339
+ push cx ; 51 ; 0xf5218
+ push si ; 56 ; 0xf5219
+ push di ; 57 ; 0xf521a
+ push bp ; 55 ; 0xf521b
+ mov bp, sp ; 89 e5 ; 0xf521c
+ mov dh, al ; 88 c6 ; 0xf521e
+ mov bx, 00080h ; bb 80 00 ; 0xf5220 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5223
+ mov es, ax ; 8e c0 ; 0xf5226
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf5228
+ mov bx, 00082h ; bb 82 00 ; 0xf522b keyboard.c:48
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf522e
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5231 keyboard.c:48
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf5234
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5237 keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf523a
+ mov bx, ax ; 89 c3 ; 0xf523d keyboard.c:354
+ inc ax ; 40 ; 0xf523f keyboard.c:355
+ inc ax ; 40 ; 0xf5240
+ cmp ax, si ; 39 f0 ; 0xf5241 keyboard.c:356
+ jc short 05247h ; 72 02 ; 0xf5243
+ mov ax, di ; 89 f8 ; 0xf5245 keyboard.c:357
+ cmp ax, cx ; 39 c8 ; 0xf5247 keyboard.c:359
+ jne short 0524fh ; 75 04 ; 0xf5249
+ xor ax, cx ; 31 c8 ; 0xf524b keyboard.c:360
+ jmp short 05264h ; eb 15 ; 0xf524d
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf524f keyboard.c:43
+ mov es, cx ; 8e c1 ; 0xf5252
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5254
+ inc bx ; 43 ; 0xf5257 keyboard.c:363
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5258 keyboard.c:43
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf525b keyboard.c:53
+ mov word [es:bx], ax ; 26 89 07 ; 0xf525e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5261 keyboard.c:365
+ pop bp ; 5d ; 0xf5264 keyboard.c:366
+ pop di ; 5f ; 0xf5265
+ pop si ; 5e ; 0xf5266
+ pop cx ; 59 ; 0xf5267
+ pop bx ; 5b ; 0xf5268
+ retn ; c3 ; 0xf5269
+ ; disGetNextSymbol 0xf526a LB 0x60e2 -> off=0x35 cb=00000000000003cd uValue=00000000000f3c9f 'int09_function'
+ db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
+ db 01dh, 02bh, 055h, 07bh, 053h, 024h, 053h, 024h, 053h, 0e0h, 053h, 0ffh, 052h, 033h, 054h, 08eh
+ db 054h, 010h, 055h, 0f3h, 054h, 0abh, 053h, 024h, 053h, 024h, 053h, 00ch, 054h, 016h, 053h, 076h
+ db 054h, 0dbh, 054h, 00bh, 055h
+int09_function: ; 0xf529f LB 0x3cd
+ push bp ; 55 ; 0xf529f keyboard.c:371
+ mov bp, sp ; 89 e5 ; 0xf52a0
+ push si ; 56 ; 0xf52a2
+ push di ; 57 ; 0xf52a3
+ push ax ; 50 ; 0xf52a4
+ push ax ; 50 ; 0xf52a5
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf52a6 keyboard.c:382
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf52a9
+ test al, al ; 84 c0 ; 0xf52ac keyboard.c:384
+ jne short 052c9h ; 75 19 ; 0xf52ae
+ mov bx, 00f24h ; bb 24 0f ; 0xf52b0 keyboard.c:385
+ mov cx, ds ; 8c d9 ; 0xf52b3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf52b5
+ call 019e2h ; e8 27 c7 ; 0xf52b8
+ push 005d1h ; 68 d1 05 ; 0xf52bb
+ push strict byte 00004h ; 6a 04 ; 0xf52be
+ call 01a23h ; e8 60 c7 ; 0xf52c0
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf52c3
+ jmp near 05374h ; e9 ab 00 ; 0xf52c6 keyboard.c:386
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52c9 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52cc
+ mov es, ax ; 8e c0 ; 0xf52cf
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf52d1
+ mov dl, bl ; 88 da ; 0xf52d4 keyboard.c:39
+ mov si, 00096h ; be 96 00 ; 0xf52d6 keyboard.c:38
+ mov bh, byte [es:si] ; 26 8a 3c ; 0xf52d9
+ mov byte [bp-008h], bh ; 88 7e f8 ; 0xf52dc keyboard.c:39
+ mov si, strict word 00017h ; be 17 00 ; 0xf52df keyboard.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf52e2
+ mov dh, ah ; 88 e6 ; 0xf52e5 keyboard.c:39
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52e7 keyboard.c:394
+ push CS ; 0e ; 0xf52ea
+ pop ES ; 07 ; 0xf52eb
+ mov cx, strict word 00012h ; b9 12 00 ; 0xf52ec
+ mov di, 0526ah ; bf 6a 52 ; 0xf52ef
+ repne scasb ; f2 ae ; 0xf52f2
+ sal cx, 1 ; d1 e1 ; 0xf52f4
+ mov di, cx ; 89 cf ; 0xf52f6
+ mov si, word [cs:di+0527bh] ; 2e 8b b5 7b 52 ; 0xf52f8
+ jmp si ; ff e6 ; 0xf52fd
+ xor dh, 040h ; 80 f6 40 ; 0xf52ff keyboard.c:396
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5302 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5305
+ mov es, ax ; 8e c0 ; 0xf5308
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf530a
+ or dl, 040h ; 80 ca 40 ; 0xf530d keyboard.c:398
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5310 keyboard.c:43
+ jmp near 05505h ; e9 ef 01 ; 0xf5313
+ and dl, 0bfh ; 80 e2 bf ; 0xf5316 keyboard.c:402
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5319 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf531c
+ mov es, ax ; 8e c0 ; 0xf531f
+ jmp near 05505h ; e9 e1 01 ; 0xf5321
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf5324 keyboard.c:411
+ jne near 05355h ; 0f 85 29 00 ; 0xf5328
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf532c keyboard.c:412
+ and AL, strict byte 07fh ; 24 7f ; 0xf532f
+ cmp AL, strict byte 02ah ; 3c 2a ; 0xf5331
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf5333
+ movzx bx, al ; 0f b6 d8 ; 0xf5336
+ inc bx ; 43 ; 0xf5339
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf533a keyboard.c:413
+ je short 05348h ; 74 08 ; 0xf533e
+ mov al, bl ; 88 d8 ; 0xf5340 keyboard.c:414
+ not al ; f6 d0 ; 0xf5342
+ and dh, al ; 20 c6 ; 0xf5344
+ jmp short 0534ah ; eb 02 ; 0xf5346 keyboard.c:415
+ or dh, bl ; 08 de ; 0xf5348 keyboard.c:416
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf534a keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf534d
+ mov es, ax ; 8e c0 ; 0xf5350
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5352
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5355 keyboard.c:419
+ and AL, strict byte 07fh ; 24 7f ; 0xf5358
+ cmp AL, strict byte 01dh ; 3c 1d ; 0xf535a
+ je short 05362h ; 74 04 ; 0xf535c
+ and byte [bp-008h], 0feh ; 80 66 f8 fe ; 0xf535e
+ and byte [bp-008h], 0fdh ; 80 66 f8 fd ; 0xf5362
+ mov bx, 00096h ; bb 96 00 ; 0xf5366
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5369
+ mov es, ax ; 8e c0 ; 0xf536c
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf536e
+ mov byte [es:bx], al ; 26 88 07 ; 0xf5371
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf5374
+ pop di ; 5f ; 0xf5377
+ pop si ; 5e ; 0xf5378
+ pop bp ; 5d ; 0xf5379
+ retn ; c3 ; 0xf537a
+ test bh, 001h ; f6 c7 01 ; 0xf537b keyboard.c:422
+ jne short 05355h ; 75 d5 ; 0xf537e
+ or dh, 004h ; 80 ce 04 ; 0xf5380 keyboard.c:423
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5383 keyboard.c:41
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5386
+ mov es, ax ; 8e c0 ; 0xf5389 keyboard.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf538b
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf538e keyboard.c:425
+ je short 053a0h ; 74 0c ; 0xf5392
+ or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xf5394 keyboard.c:426
+ mov bx, 00096h ; bb 96 00 ; 0xf5398 keyboard.c:41
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf539b
+ jmp short 053a6h ; eb 06 ; 0xf539e keyboard.c:428
+ or dl, 001h ; 80 ca 01 ; 0xf53a0 keyboard.c:429
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53a3 keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53a6 keyboard.c:43
+ jmp short 05355h ; eb aa ; 0xf53a9 keyboard.c:433
+ test bh, 001h ; f6 c7 01 ; 0xf53ab keyboard.c:435
+ jne short 05355h ; 75 a5 ; 0xf53ae
+ and dh, 0fbh ; 80 e6 fb ; 0xf53b0 keyboard.c:436
+ mov si, strict word 00017h ; be 17 00 ; 0xf53b3 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53b6
+ mov es, ax ; 8e c0 ; 0xf53b9
+ mov byte [es:si], dh ; 26 88 34 ; 0xf53bb
+ test bh, 002h ; f6 c7 02 ; 0xf53be keyboard.c:438
+ je short 053d4h ; 74 11 ; 0xf53c1
+ and bh, 0fbh ; 80 e7 fb ; 0xf53c3 keyboard.c:439
+ mov byte [bp-008h], bh ; 88 7e f8 ; 0xf53c6
+ mov bx, 00096h ; bb 96 00 ; 0xf53c9 keyboard.c:43
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf53cc
+ mov byte [es:bx], al ; 26 88 07 ; 0xf53cf
+ jmp short 05355h ; eb 81 ; 0xf53d2 keyboard.c:441
+ and dl, 0feh ; 80 e2 fe ; 0xf53d4 keyboard.c:442
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53d7 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53da
+ jmp near 05355h ; e9 75 ff ; 0xf53dd keyboard.c:446
+ or dh, 008h ; 80 ce 08 ; 0xf53e0 keyboard.c:449
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53e3 keyboard.c:41
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf53e6
+ mov es, ax ; 8e c0 ; 0xf53e9 keyboard.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf53eb
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf53ee keyboard.c:451
+ je short 05400h ; 74 0c ; 0xf53f2
+ or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xf53f4 keyboard.c:452
+ mov bx, 00096h ; bb 96 00 ; 0xf53f8 keyboard.c:41
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf53fb
+ jmp short 05406h ; eb 06 ; 0xf53fe keyboard.c:454
+ or dl, 002h ; 80 ca 02 ; 0xf5400 keyboard.c:455
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5403 keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5406 keyboard.c:43
+ jmp near 05355h ; e9 49 ff ; 0xf5409 keyboard.c:458
+ and dh, 0f7h ; 80 e6 f7 ; 0xf540c keyboard.c:460
+ mov si, strict word 00017h ; be 17 00 ; 0xf540f keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5412
+ mov es, ax ; 8e c0 ; 0xf5415
+ mov byte [es:si], dh ; 26 88 34 ; 0xf5417
+ test bh, 002h ; f6 c7 02 ; 0xf541a keyboard.c:462
+ je short 05427h ; 74 08 ; 0xf541d
+ and bh, 0f7h ; 80 e7 f7 ; 0xf541f keyboard.c:463
+ mov byte [bp-008h], bh ; 88 7e f8 ; 0xf5422
+ jmp short 053c9h ; eb a2 ; 0xf5425 keyboard.c:464
+ and dl, 0fdh ; 80 e2 fd ; 0xf5427 keyboard.c:466
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf542a keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf542d
+ jmp near 05355h ; e9 22 ff ; 0xf5430 keyboard.c:469
+ test bh, 003h ; f6 c7 03 ; 0xf5433 keyboard.c:472
+ jne short 0544ch ; 75 14 ; 0xf5436
+ or dl, 020h ; 80 ca 20 ; 0xf5438 keyboard.c:474
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf543b keyboard.c:41
+ mov es, ax ; 8e c0 ; 0xf543e
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5440
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5443 keyboard.c:43
+ xor dh, 020h ; 80 f6 20 ; 0xf5446 keyboard.c:476
+ jmp near 054d2h ; e9 86 00 ; 0xf5449 keyboard.c:477
+ or dl, 008h ; 80 ca 08 ; 0xf544c keyboard.c:480
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf544f keyboard.c:41
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5452
+ mov es, ax ; 8e c0 ; 0xf5455 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5457
+ mov ax, 000aeh ; b8 ae 00 ; 0xf545a keyboard.c:484
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf545d
+ out DX, AL ; ee ; 0xf5460
+ call 0e034h ; e8 d0 8b ; 0xf5461 keyboard.c:485
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5464 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5467
+ mov es, ax ; 8e c0 ; 0xf546a
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf546c
+ test AL, strict byte 008h ; a8 08 ; 0xf546f keyboard.c:39
+ jne short 05464h ; 75 f1 ; 0xf5471
+ jmp near 05355h ; e9 df fe ; 0xf5473 keyboard.c:492
+ test bh, 003h ; f6 c7 03 ; 0xf5476 keyboard.c:494
+ jne near 05355h ; 0f 85 d8 fe ; 0xf5479
+ and dl, 0dfh ; 80 e2 df ; 0xf547d keyboard.c:495
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5480 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5483
+ mov es, ax ; 8e c0 ; 0xf5486
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5488
+ jmp near 05355h ; e9 c7 fe ; 0xf548b keyboard.c:498
+ test bh, 002h ; f6 c7 02 ; 0xf548e keyboard.c:501
+ je short 054c1h ; 74 2e ; 0xf5491
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5493 keyboard.c:46
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5496
+ mov es, ax ; 8e c0 ; 0xf5499 keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf549b
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf549e keyboard.c:51
+ mov word [es:bx], ax ; 26 89 07 ; 0xf54a1 keyboard.c:53
+ mov bx, strict word 00071h ; bb 71 00 ; 0xf54a4 keyboard.c:41
+ mov DL, strict byte 080h ; b2 80 ; 0xf54a7
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54a9 keyboard.c:43
+ mov ax, 000aeh ; b8 ae 00 ; 0xf54ac keyboard.c:506
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf54af
+ out DX, AL ; ee ; 0xf54b2
+ push bp ; 55 ; 0xf54b3 keyboard.c:507
+ int 01bh ; cd 1b ; 0xf54b4
+ pop bp ; 5d ; 0xf54b6
+ xor dx, dx ; 31 d2 ; 0xf54b7 keyboard.c:508
+ xor ax, ax ; 31 c0 ; 0xf54b9
+ call 05217h ; e8 59 fd ; 0xf54bb
+ jmp near 05355h ; e9 94 fe ; 0xf54be keyboard.c:509
+ or dl, 010h ; 80 ca 10 ; 0xf54c1 keyboard.c:510
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54c4 keyboard.c:41
+ mov es, ax ; 8e c0 ; 0xf54c7
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54c9
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54cc keyboard.c:43
+ xor dh, 010h ; 80 f6 10 ; 0xf54cf keyboard.c:512
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf54d2 keyboard.c:41
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf54d5 keyboard.c:43
+ jmp near 05355h ; e9 7a fe ; 0xf54d8 keyboard.c:515
+ test bh, 002h ; f6 c7 02 ; 0xf54db keyboard.c:518
+ jne near 05355h ; 0f 85 73 fe ; 0xf54de
+ and dl, 0efh ; 80 e2 ef ; 0xf54e2 keyboard.c:519
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54e5 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54e8
+ mov es, ax ; 8e c0 ; 0xf54eb
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54ed
+ jmp near 05355h ; e9 62 fe ; 0xf54f0 keyboard.c:522
+ test bl, 004h ; f6 c3 04 ; 0xf54f3 keyboard.c:525
+ jne near 05355h ; 0f 85 5b fe ; 0xf54f6
+ or dl, 004h ; 80 ca 04 ; 0xf54fa keyboard.c:526
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54fd keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5500
+ mov es, ax ; 8e c0 ; 0xf5503
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5505
+ jmp near 05355h ; e9 4a fe ; 0xf5508 keyboard.c:530
+ and dl, 0fbh ; 80 e2 fb ; 0xf550b keyboard.c:533
+ jmp short 054fdh ; eb ed ; 0xf550e keyboard.c:534
+ mov al, ah ; 88 e0 ; 0xf5510 keyboard.c:539
+ and AL, strict byte 00ch ; 24 0c ; 0xf5512
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf5514
+ jne short 0552bh ; 75 13 ; 0xf5516
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5518 keyboard.c:51
+ mov es, ax ; 8e c0 ; 0xf551b
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf551d
+ mov ax, 01234h ; b8 34 12 ; 0xf5520
+ mov word [es:bx], ax ; 26 89 07 ; 0xf5523 keyboard.c:53
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf5526 keyboard.c:542
+ test dl, 008h ; f6 c2 08 ; 0xf552b keyboard.c:548
+ je short 05541h ; 74 11 ; 0xf552e
+ and dl, 0f7h ; 80 e2 f7 ; 0xf5530 keyboard.c:550
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5533 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5536
+ mov es, ax ; 8e c0 ; 0xf5539
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf553b
+ jmp near 05374h ; e9 33 fe ; 0xf553e keyboard.c:552
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5541 keyboard.c:555
+ test AL, strict byte 080h ; a8 80 ; 0xf5544
+ je short 05576h ; 74 2e ; 0xf5546
+ cmp AL, strict byte 0fah ; 3c fa ; 0xf5548 keyboard.c:557
+ jne short 0555ch ; 75 10 ; 0xf554a
+ mov bx, 00097h ; bb 97 00 ; 0xf554c keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf554f
+ mov es, ax ; 8e c0 ; 0xf5552
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5554
+ or ah, 010h ; 80 cc 10 ; 0xf5557 keyboard.c:39
+ jmp short 05570h ; eb 14 ; 0xf555a keyboard.c:560
+ cmp AL, strict byte 0feh ; 3c fe ; 0xf555c
+ jne near 05355h ; 0f 85 f3 fd ; 0xf555e
+ mov bx, 00097h ; bb 97 00 ; 0xf5562 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5565
+ mov es, ax ; 8e c0 ; 0xf5568
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf556a
+ or ah, 020h ; 80 cc 20 ; 0xf556d keyboard.c:39
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf5570 keyboard.c:43
+ jmp near 05355h ; e9 df fd ; 0xf5573 keyboard.c:564
+ cmp byte [bp-006h], 058h ; 80 7e fa 58 ; 0xf5576 keyboard.c:566
+ jbe short 0559ah ; 76 1e ; 0xf557a
+ mov bx, 00f24h ; bb 24 0f ; 0xf557c keyboard.c:567
+ mov cx, ds ; 8c d9 ; 0xf557f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5581
+ call 019e2h ; e8 5b c4 ; 0xf5584
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf5587
+ push ax ; 50 ; 0xf558b
+ push 005ebh ; 68 eb 05 ; 0xf558c
+ push strict byte 00004h ; 6a 04 ; 0xf558f
+ call 01a23h ; e8 8f c4 ; 0xf5591
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf5594
+ jmp near 05374h ; e9 da fd ; 0xf5597 keyboard.c:568
+ test dh, 008h ; f6 c6 08 ; 0xf559a keyboard.c:570
+ je short 055b1h ; 74 12 ; 0xf559d
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf559f keyboard.c:571
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf55a3
+ mov dl, byte [bx+00f78h] ; 8a 97 78 0f ; 0xf55a6
+ mov ax, word [bx+00f78h] ; 8b 87 78 0f ; 0xf55aa keyboard.c:572
+ jmp near 0563dh ; e9 8c 00 ; 0xf55ae keyboard.c:573
+ test dh, 004h ; f6 c6 04 ; 0xf55b1
+ je short 055c8h ; 74 12 ; 0xf55b4
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf55b6 keyboard.c:574
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf55ba
+ mov dl, byte [bx+00f76h] ; 8a 97 76 0f ; 0xf55bd
+ mov ax, word [bx+00f76h] ; 8b 87 76 0f ; 0xf55c1 keyboard.c:575
+ jmp near 0563dh ; e9 75 00 ; 0xf55c5 keyboard.c:576
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf55c8
+ and AL, strict byte 002h ; 24 02 ; 0xf55cb
+ test al, al ; 84 c0 ; 0xf55cd
+ jbe short 055e6h ; 76 15 ; 0xf55cf
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55d1
+ cmp AL, strict byte 047h ; 3c 47 ; 0xf55d4
+ jc short 055e6h ; 72 0e ; 0xf55d6
+ cmp AL, strict byte 053h ; 3c 53 ; 0xf55d8
+ jnbe short 055e6h ; 77 0a ; 0xf55da
+ mov DL, strict byte 0e0h ; b2 e0 ; 0xf55dc keyboard.c:578
+ movzx bx, al ; 0f b6 d8 ; 0xf55de keyboard.c:579
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf55e1
+ jmp short 05639h ; eb 53 ; 0xf55e4 keyboard.c:580
+ test dh, 003h ; f6 c6 03 ; 0xf55e6
+ je short 05618h ; 74 2d ; 0xf55e9
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf55eb keyboard.c:584
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf55ef
+ movzx ax, byte [bx+00f7ah] ; 0f b6 87 7a 0f ; 0xf55f2
+ movzx dx, dh ; 0f b6 d6 ; 0xf55f7
+ test dx, ax ; 85 c2 ; 0xf55fa
+ je short 05608h ; 74 0a ; 0xf55fc
+ mov dl, byte [bx+00f72h] ; 8a 97 72 0f ; 0xf55fe keyboard.c:585
+ mov ax, word [bx+00f72h] ; 8b 87 72 0f ; 0xf5602 keyboard.c:586
+ jmp short 05610h ; eb 08 ; 0xf5606 keyboard.c:587
+ mov dl, byte [bx+00f74h] ; 8a 97 74 0f ; 0xf5608 keyboard.c:588
+ mov ax, word [bx+00f74h] ; 8b 87 74 0f ; 0xf560c keyboard.c:589
+ shr ax, 008h ; c1 e8 08 ; 0xf5610
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf5613
+ jmp short 05643h ; eb 2b ; 0xf5616 keyboard.c:591
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf5618 keyboard.c:593
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf561c
+ movzx si, byte [bx+00f7ah] ; 0f b6 b7 7a 0f ; 0xf561f
+ movzx ax, dh ; 0f b6 c6 ; 0xf5624
+ test ax, si ; 85 f0 ; 0xf5627
+ je short 05635h ; 74 0a ; 0xf5629
+ mov dl, byte [bx+00f74h] ; 8a 97 74 0f ; 0xf562b keyboard.c:594
+ mov ax, word [bx+00f74h] ; 8b 87 74 0f ; 0xf562f keyboard.c:595
+ jmp short 0563dh ; eb 08 ; 0xf5633 keyboard.c:596
+ mov dl, byte [bx+00f72h] ; 8a 97 72 0f ; 0xf5635 keyboard.c:597
+ mov ax, word [bx+00f72h] ; 8b 87 72 0f ; 0xf5639 keyboard.c:598
+ shr ax, 008h ; c1 e8 08 ; 0xf563d
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf5640
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5643 keyboard.c:601
+ jne short 05663h ; 75 1a ; 0xf5647
+ test dl, dl ; 84 d2 ; 0xf5649
+ jne short 05663h ; 75 16 ; 0xf564b
+ mov bx, 00f24h ; bb 24 0f ; 0xf564d keyboard.c:602
+ mov cx, ds ; 8c d9 ; 0xf5650
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5652
+ call 019e2h ; e8 8a c3 ; 0xf5655
+ push 00622h ; 68 22 06 ; 0xf5658
+ push strict byte 00004h ; 6a 04 ; 0xf565b
+ call 01a23h ; e8 c3 c3 ; 0xf565d
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5660
+ xor dh, dh ; 30 f6 ; 0xf5663 keyboard.c:604
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf5665
+ jmp near 054bbh ; e9 4f fe ; 0xf5669
+ ; disGetNextSymbol 0xf566c LB 0x5ce0 -> off=0x0 cb=000000000000006c uValue=00000000000f406c 'dequeue_key'
+dequeue_key: ; 0xf566c LB 0x6c
+ push si ; 56 ; 0xf566c keyboard.c:614
+ push di ; 57 ; 0xf566d
+ enter 00002h, 000h ; c8 02 00 00 ; 0xf566e
+ push ax ; 50 ; 0xf5672
+ push dx ; 52 ; 0xf5673
+ mov si, bx ; 89 de ; 0xf5674
+ mov bx, 00080h ; bb 80 00 ; 0xf5676 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5679
+ mov es, ax ; 8e c0 ; 0xf567c
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf567e
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf5681
+ mov bx, 00082h ; bb 82 00 ; 0xf5684 keyboard.c:48
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf5687
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf568a keyboard.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf568d
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf5690 keyboard.c:48
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf5693
+ cmp bx, ax ; 39 c3 ; 0xf5696 keyboard.c:630
+ je short 056d0h ; 74 36 ; 0xf5698
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf569a keyboard.c:38
+ lea di, [bx+001h] ; 8d 7f 01 ; 0xf569d keyboard.c:632
+ mov ah, byte [es:di] ; 26 8a 25 ; 0xf56a0 keyboard.c:38
+ mov es, cx ; 8e c1 ; 0xf56a3 keyboard.c:633
+ mov byte [es:si], al ; 26 88 04 ; 0xf56a5
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf56a8 keyboard.c:634
+ mov si, word [bp-004h] ; 8b 76 fc ; 0xf56ab
+ mov byte [es:si], ah ; 26 88 24 ; 0xf56ae
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf56b1 keyboard.c:637
+ je short 056cbh ; 74 14 ; 0xf56b5
+ inc bx ; 43 ; 0xf56b7 keyboard.c:638
+ inc bx ; 43 ; 0xf56b8
+ cmp bx, dx ; 39 d3 ; 0xf56b9 keyboard.c:639
+ jc short 056c0h ; 72 03 ; 0xf56bb
+ mov bx, word [bp-002h] ; 8b 5e fe ; 0xf56bd keyboard.c:640
+ mov si, strict word 0001ah ; be 1a 00 ; 0xf56c0 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf56c3
+ mov es, ax ; 8e c0 ; 0xf56c6
+ mov word [es:si], bx ; 26 89 1c ; 0xf56c8
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf56cb keyboard.c:643
+ jmp short 056d2h ; eb 02 ; 0xf56ce
+ xor ax, ax ; 31 c0 ; 0xf56d0 keyboard.c:646
+ leave ; c9 ; 0xf56d2 keyboard.c:648
+ pop di ; 5f ; 0xf56d3
+ pop si ; 5e ; 0xf56d4
+ retn 00002h ; c2 02 00 ; 0xf56d5
+ ; disGetNextSymbol 0xf56d8 LB 0x5c74 -> off=0x23 cb=00000000000002e7 uValue=00000000000f40fb 'int16_function'
+ db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 098h, 059h, 0b0h, 057h, 0f7h
+ db 057h, 044h, 058h, 056h, 058h, 080h, 058h, 089h, 058h, 0fah, 058h, 02bh, 059h, 059h, 059h, 08dh
+ db 059h, 0dbh, 059h
+int16_function: ; 0xf56fb LB 0x2e7
+ push bp ; 55 ; 0xf56fb keyboard.c:665
+ mov bp, sp ; 89 e5 ; 0xf56fc
+ push si ; 56 ; 0xf56fe
+ push di ; 57 ; 0xf56ff
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf5700
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5703 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5706
+ mov es, ax ; 8e c0 ; 0xf5709
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf570b
+ mov bl, al ; 88 c3 ; 0xf570e keyboard.c:39
+ mov si, 00097h ; be 97 00 ; 0xf5710 keyboard.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf5713
+ mov bh, ah ; 88 e7 ; 0xf5716 keyboard.c:39
+ movzx dx, al ; 0f b6 d0 ; 0xf5718 keyboard.c:674
+ sar dx, 004h ; c1 fa 04 ; 0xf571b
+ and dl, 007h ; 80 e2 07 ; 0xf571e
+ mov al, ah ; 88 e0 ; 0xf5721
+ and AL, strict byte 007h ; 24 07 ; 0xf5723
+ xor ah, ah ; 30 e4 ; 0xf5725
+ xor al, dl ; 30 d0 ; 0xf5727
+ test ax, ax ; 85 c0 ; 0xf5729
+ je short 0578eh ; 74 61 ; 0xf572b
+ cli ; fa ; 0xf572d keyboard.c:675
+ mov AL, strict byte 0edh ; b0 ed ; 0xf572e keyboard.c:676
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5730
+ out DX, AL ; ee ; 0xf5733
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5734 keyboard.c:677
+ in AL, DX ; ec ; 0xf5737
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5738
+ test AL, strict byte 001h ; a8 01 ; 0xf573a
+ jne short 05746h ; 75 08 ; 0xf573c
+ mov AL, strict byte 021h ; b0 21 ; 0xf573e
+ mov dx, 00080h ; ba 80 00 ; 0xf5740
+ out DX, AL ; ee ; 0xf5743
+ jmp short 05734h ; eb ee ; 0xf5744
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5746 keyboard.c:678
+ in AL, DX ; ec ; 0xf5749
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf574a
+ cmp ax, 000fah ; 3d fa 00 ; 0xf574c
+ jne short 0578dh ; 75 3c ; 0xf574f
+ and bh, 0c8h ; 80 e7 c8 ; 0xf5751 keyboard.c:679
+ movzx dx, bl ; 0f b6 d3 ; 0xf5754 keyboard.c:680
+ sar dx, 004h ; c1 fa 04 ; 0xf5757
+ and dx, strict byte 00007h ; 83 e2 07 ; 0xf575a
+ movzx ax, bh ; 0f b6 c7 ; 0xf575d
+ or ax, dx ; 09 d0 ; 0xf5760
+ mov bh, al ; 88 c7 ; 0xf5762
+ and AL, strict byte 007h ; 24 07 ; 0xf5764 keyboard.c:681
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5766
+ out DX, AL ; ee ; 0xf5769
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf576a keyboard.c:682
+ in AL, DX ; ec ; 0xf576d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf576e
+ test AL, strict byte 001h ; a8 01 ; 0xf5770
+ jne short 0577ch ; 75 08 ; 0xf5772
+ mov AL, strict byte 021h ; b0 21 ; 0xf5774 keyboard.c:683
+ mov dx, 00080h ; ba 80 00 ; 0xf5776
+ out DX, AL ; ee ; 0xf5779
+ jmp short 0576ah ; eb ee ; 0xf577a
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf577c keyboard.c:684
+ in AL, DX ; ec ; 0xf577f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5780
+ mov si, 00097h ; be 97 00 ; 0xf5782 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5785
+ mov es, ax ; 8e c0 ; 0xf5788
+ mov byte [es:si], bh ; 26 88 3c ; 0xf578a
+ sti ; fb ; 0xf578d keyboard.c:687
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf578e keyboard.c:690
+ shr ax, 008h ; c1 e8 08 ; 0xf5791
+ cmp ax, 000a2h ; 3d a2 00 ; 0xf5794
+ jnbe near 05998h ; 0f 87 fd 01 ; 0xf5797
+ push CS ; 0e ; 0xf579b
+ pop ES ; 07 ; 0xf579c
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf579d
+ mov di, 056d8h ; bf d8 56 ; 0xf57a0
+ repne scasb ; f2 ae ; 0xf57a3
+ sal cx, 1 ; d1 e1 ; 0xf57a5
+ mov di, cx ; 89 cf ; 0xf57a7
+ mov ax, word [cs:di+056e3h] ; 2e 8b 85 e3 56 ; 0xf57a9
+ jmp ax ; ff e0 ; 0xf57ae
+ push strict byte 00001h ; 6a 01 ; 0xf57b0 keyboard.c:692
+ mov cx, ss ; 8c d1 ; 0xf57b2
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf57b4
+ mov dx, ss ; 8c d2 ; 0xf57b7
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf57b9
+ call 0566ch ; e8 ad fe ; 0xf57bc
+ test ax, ax ; 85 c0 ; 0xf57bf
+ jne short 057ceh ; 75 0b ; 0xf57c1
+ push 00659h ; 68 59 06 ; 0xf57c3 keyboard.c:693
+ push strict byte 00007h ; 6a 07 ; 0xf57c6
+ call 01a23h ; e8 58 c2 ; 0xf57c8
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf57cb
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf57ce keyboard.c:695
+ je short 057dah ; 74 06 ; 0xf57d2
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf57d4
+ je short 057e0h ; 74 06 ; 0xf57d8
+ cmp byte [bp-00ah], 0e0h ; 80 7e f6 e0 ; 0xf57da keyboard.c:697
+ jne short 057e4h ; 75 04 ; 0xf57de
+ mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf57e0 keyboard.c:698
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf57e4 keyboard.c:699
+ sal dx, 008h ; c1 e2 08 ; 0xf57e8
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf57eb
+ or dx, ax ; 09 c2 ; 0xf57ef
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf57f1
+ jmp near 059dbh ; e9 e4 01 ; 0xf57f4 keyboard.c:700
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf57f7 keyboard.c:704
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf57fa
+ push strict byte 00000h ; 6a 00 ; 0xf57fd keyboard.c:705
+ mov cx, ss ; 8c d1 ; 0xf57ff
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf5801
+ mov dx, ss ; 8c d2 ; 0xf5804
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf5806
+ call 0566ch ; e8 60 fe ; 0xf5809
+ test ax, ax ; 85 c0 ; 0xf580c
+ jne short 05817h ; 75 07 ; 0xf580e
+ or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf5810 keyboard.c:706
+ jmp near 059dbh ; e9 c4 01 ; 0xf5814 keyboard.c:707
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5817 keyboard.c:709
+ je short 05823h ; 74 06 ; 0xf581b
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf581d
+ je short 05829h ; 74 06 ; 0xf5821
+ cmp byte [bp-00ah], 0e0h ; 80 7e f6 e0 ; 0xf5823 keyboard.c:711
+ jne short 0582dh ; 75 04 ; 0xf5827
+ mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf5829 keyboard.c:712
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf582d keyboard.c:713
+ sal dx, 008h ; c1 e2 08 ; 0xf5831
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf5834
+ or dx, ax ; 09 c2 ; 0xf5838
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf583a
+ and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf583d keyboard.c:714
+ jmp near 059dbh ; e9 97 01 ; 0xf5841 keyboard.c:715
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5844 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5847
+ mov es, ax ; 8e c0 ; 0xf584a
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf584c
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf584f keyboard.c:719
+ mov dl, al ; 88 c2 ; 0xf5852
+ jmp short 057f1h ; eb 9b ; 0xf5854
+ mov al, byte [bp+010h] ; 8a 46 10 ; 0xf5856 keyboard.c:723
+ movzx dx, al ; 0f b6 d0 ; 0xf5859
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf585c
+ shr ax, 008h ; c1 e8 08 ; 0xf585f
+ xor ah, ah ; 30 e4 ; 0xf5862
+ call 05217h ; e8 b0 f9 ; 0xf5864
+ test ax, ax ; 85 c0 ; 0xf5867
+ jne short 05878h ; 75 0d ; 0xf5869
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf586b keyboard.c:724
+ xor al, al ; 30 c0 ; 0xf586e
+ or AL, strict byte 001h ; 0c 01 ; 0xf5870
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf5872
+ jmp near 059dbh ; e9 63 01 ; 0xf5875 keyboard.c:726
+ and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf5878 keyboard.c:727
+ jmp near 059dbh ; e9 5b 01 ; 0xf587d keyboard.c:729
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5880 keyboard.c:742
+ xor al, al ; 30 c0 ; 0xf5883
+ or AL, strict byte 030h ; 0c 30 ; 0xf5885
+ jmp short 05872h ; eb e9 ; 0xf5887
+ mov byte [bp-008h], 002h ; c6 46 f8 02 ; 0xf5889 keyboard.c:746
+ xor cx, cx ; 31 c9 ; 0xf588d keyboard.c:747
+ cli ; fa ; 0xf588f keyboard.c:749
+ mov AL, strict byte 0f2h ; b0 f2 ; 0xf5890 keyboard.c:750
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5892
+ out DX, AL ; ee ; 0xf5895
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5896 keyboard.c:752
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5899 keyboard.c:753
+ in AL, DX ; ec ; 0xf589c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf589d
+ test AL, strict byte 001h ; a8 01 ; 0xf589f
+ jne short 058b0h ; 75 0d ; 0xf58a1
+ dec bx ; 4b ; 0xf58a3
+ test bx, bx ; 85 db ; 0xf58a4
+ jbe short 058b0h ; 76 08 ; 0xf58a6
+ mov dx, 00080h ; ba 80 00 ; 0xf58a8 keyboard.c:754
+ in AL, DX ; ec ; 0xf58ab
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf58ac
+ jmp short 05899h ; eb e9 ; 0xf58ae
+ test bx, bx ; 85 db ; 0xf58b0 keyboard.c:755
+ jbe short 058f4h ; 76 40 ; 0xf58b2
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf58b4 keyboard.c:756
+ in AL, DX ; ec ; 0xf58b7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf58b8
+ cmp ax, 000fah ; 3d fa 00 ; 0xf58ba
+ jne short 058f4h ; 75 35 ; 0xf58bd
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf58bf keyboard.c:758
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf58c2 keyboard.c:759
+ in AL, DX ; ec ; 0xf58c5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf58c6
+ test AL, strict byte 001h ; a8 01 ; 0xf58c8
+ jne short 058d9h ; 75 0d ; 0xf58ca
+ dec bx ; 4b ; 0xf58cc
+ test bx, bx ; 85 db ; 0xf58cd
+ jbe short 058d9h ; 76 08 ; 0xf58cf
+ mov dx, 00080h ; ba 80 00 ; 0xf58d1 keyboard.c:760
+ in AL, DX ; ec ; 0xf58d4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf58d5
+ jmp short 058c2h ; eb e9 ; 0xf58d7
+ test bx, bx ; 85 db ; 0xf58d9 keyboard.c:761
+ jbe short 058ebh ; 76 0e ; 0xf58db
+ shr cx, 008h ; c1 e9 08 ; 0xf58dd keyboard.c:762
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf58e0 keyboard.c:763
+ in AL, DX ; ec ; 0xf58e3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf58e4
+ sal ax, 008h ; c1 e0 08 ; 0xf58e6
+ or cx, ax ; 09 c1 ; 0xf58e9
+ dec byte [bp-008h] ; fe 4e f8 ; 0xf58eb keyboard.c:765
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf58ee
+ jnbe short 058bfh ; 77 cb ; 0xf58f2
+ mov word [bp+00ch], cx ; 89 4e 0c ; 0xf58f4 keyboard.c:768
+ jmp near 059dbh ; e9 e1 00 ; 0xf58f7 keyboard.c:769
+ push strict byte 00001h ; 6a 01 ; 0xf58fa keyboard.c:772
+ mov cx, ss ; 8c d1 ; 0xf58fc
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf58fe
+ mov dx, ss ; 8c d2 ; 0xf5901
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf5903
+ call 0566ch ; e8 63 fd ; 0xf5906
+ test ax, ax ; 85 c0 ; 0xf5909
+ jne short 05918h ; 75 0b ; 0xf590b
+ push 00659h ; 68 59 06 ; 0xf590d keyboard.c:773
+ push strict byte 00007h ; 6a 07 ; 0xf5910
+ call 01a23h ; e8 0e c1 ; 0xf5912
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5915
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5918 keyboard.c:775
+ je near 057e4h ; 0f 84 c4 fe ; 0xf591c
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf5920
+ je near 057e0h ; 0f 84 b8 fe ; 0xf5924
+ jmp near 057e4h ; e9 b9 fe ; 0xf5928
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf592b keyboard.c:782
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf592e
+ push strict byte 00000h ; 6a 00 ; 0xf5931 keyboard.c:783
+ mov cx, ss ; 8c d1 ; 0xf5933
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf5935
+ mov dx, ss ; 8c d2 ; 0xf5938
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf593a
+ call 0566ch ; e8 2c fd ; 0xf593d
+ test ax, ax ; 85 c0 ; 0xf5940
+ je near 05810h ; 0f 84 ca fe ; 0xf5942
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5946 keyboard.c:787
+ je near 0582dh ; 0f 84 df fe ; 0xf594a
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf594e
+ je near 05829h ; 0f 84 d3 fe ; 0xf5952
+ jmp near 0582dh ; e9 d4 fe ; 0xf5956
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5959 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf595c
+ mov es, ax ; 8e c0 ; 0xf595f
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5961
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5964 keyboard.c:795
+ mov dl, al ; 88 c2 ; 0xf5967
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5969
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf596c keyboard.c:38
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf596f
+ and bl, 073h ; 80 e3 73 ; 0xf5972 keyboard.c:39
+ mov si, 00096h ; be 96 00 ; 0xf5975 keyboard.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5978
+ and AL, strict byte 00ch ; 24 0c ; 0xf597b keyboard.c:39
+ or bl, al ; 08 c3 ; 0xf597d
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf597f keyboard.c:798
+ xor dh, dh ; 30 f6 ; 0xf5982
+ movzx ax, bl ; 0f b6 c3 ; 0xf5984
+ sal ax, 008h ; c1 e0 08 ; 0xf5987
+ jmp near 057efh ; e9 62 fe ; 0xf598a
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf598d keyboard.c:803
+ xor ah, ah ; 30 e4 ; 0xf5990
+ or ah, 080h ; 80 cc 80 ; 0xf5992
+ jmp near 05872h ; e9 da fe ; 0xf5995
+ mov bx, 00f24h ; bb 24 0f ; 0xf5998 keyboard.c:818
+ mov cx, ds ; 8c d9 ; 0xf599b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf599d
+ call 019e2h ; e8 3f c0 ; 0xf59a0
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf59a3
+ shr ax, 008h ; c1 e8 08 ; 0xf59a6
+ push ax ; 50 ; 0xf59a9
+ push 0067dh ; 68 7d 06 ; 0xf59aa
+ push strict byte 00004h ; 6a 04 ; 0xf59ad
+ call 01a23h ; e8 71 c0 ; 0xf59af
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf59b2
+ mov bx, 00f24h ; bb 24 0f ; 0xf59b5 keyboard.c:819
+ mov cx, ds ; 8c d9 ; 0xf59b8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf59ba
+ call 019e2h ; e8 22 c0 ; 0xf59bd
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf59c0
+ push ax ; 50 ; 0xf59c3
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf59c4
+ push ax ; 50 ; 0xf59c7
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf59c8
+ push ax ; 50 ; 0xf59cb
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf59cc
+ push ax ; 50 ; 0xf59cf
+ push 006a5h ; 68 a5 06 ; 0xf59d0
+ push strict byte 00004h ; 6a 04 ; 0xf59d3
+ call 01a23h ; e8 4b c0 ; 0xf59d5
+ add sp, strict byte 0000ch ; 83 c4 0c ; 0xf59d8
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf59db keyboard.c:822
+ pop di ; 5f ; 0xf59de
+ pop si ; 5e ; 0xf59df
+ pop bp ; 5d ; 0xf59e0
+ retn ; c3 ; 0xf59e1
+ ; disGetNextSymbol 0xf59e2 LB 0x596a -> off=0x0 cb=00000000000000b3 uValue=00000000000f43e2 'set_geom_lba'
+set_geom_lba: ; 0xf59e2 LB 0xb3
+ push bx ; 53 ; 0xf59e2 disk.c:118
+ push cx ; 51 ; 0xf59e3
+ push si ; 56 ; 0xf59e4
+ push di ; 57 ; 0xf59e5
+ enter 00008h, 000h ; c8 08 00 00 ; 0xf59e6
+ mov di, ax ; 89 c7 ; 0xf59ea
+ mov es, dx ; 8e c2 ; 0xf59ec
+ mov dword [bp-008h], strict dword 0007e0000h ; 66 c7 46 f8 00 00 7e 00 ; 0xf59ee disk.c:120
+ mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf59f6 disk.c:122
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf59fb disk.c:125
+ mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf59fe
+ mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf5a01
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf5a04
+ mov si, strict word 00020h ; be 20 00 ; 0xf5a07
+ call 0b290h ; e8 83 58 ; 0xf5a0a
+ test ax, ax ; 85 c0 ; 0xf5a0d
+ jne short 05a1dh ; 75 0c ; 0xf5a0f
+ test bx, bx ; 85 db ; 0xf5a11
+ jne short 05a1dh ; 75 08 ; 0xf5a13
+ test cx, cx ; 85 c9 ; 0xf5a15
+ jne short 05a1dh ; 75 04 ; 0xf5a17
+ test dx, dx ; 85 d2 ; 0xf5a19
+ je short 05a24h ; 74 07 ; 0xf5a1b
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5a1d
+ mov si, bx ; 89 de ; 0xf5a20
+ jmp short 05a2ah ; eb 06 ; 0xf5a22
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf5a24
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf5a27
+ mov word [bp-004h], bx ; 89 5e fc ; 0xf5a2a
+ xor bx, bx ; 31 db ; 0xf5a2d disk.c:127
+ jmp short 05a36h ; eb 05 ; 0xf5a2f
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf5a31
+ jnl short 05a59h ; 7d 23 ; 0xf5a34
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5a36 disk.c:128
+ cmp si, ax ; 39 c6 ; 0xf5a39
+ jc short 05a47h ; 72 0a ; 0xf5a3b
+ jne short 05a50h ; 75 11 ; 0xf5a3d
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5a3f
+ cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf5a42
+ jnbe short 05a50h ; 77 09 ; 0xf5a45
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a47 disk.c:129
+ inc ax ; 40 ; 0xf5a4a
+ shr ax, 1 ; d1 e8 ; 0xf5a4b
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf5a4d
+ shr word [bp-006h], 1 ; d1 6e fa ; 0xf5a50 disk.c:130
+ rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5a53
+ inc bx ; 43 ; 0xf5a56 disk.c:131
+ jmp short 05a31h ; eb d8 ; 0xf5a57
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a59 disk.c:133
+ xor dx, dx ; 31 d2 ; 0xf5a5c
+ mov bx, strict word 0003fh ; bb 3f 00 ; 0xf5a5e
+ xor cx, cx ; 31 c9 ; 0xf5a61
+ call 0b210h ; e8 aa 57 ; 0xf5a63
+ mov bx, ax ; 89 c3 ; 0xf5a66
+ mov cx, dx ; 89 d1 ; 0xf5a68
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5a6a
+ mov dx, si ; 89 f2 ; 0xf5a6d
+ call 0b250h ; e8 de 57 ; 0xf5a6f
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5a72
+ cmp ax, 00400h ; 3d 00 04 ; 0xf5a76 disk.c:134
+ jbe short 05a81h ; 76 06 ; 0xf5a79
+ mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf5a7b disk.c:135
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a81 disk.c:136
+ mov word [es:di], ax ; 26 89 05 ; 0xf5a84
+ mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5a87 disk.c:137
+ leave ; c9 ; 0xf5a8d disk.c:138
+ pop di ; 5f ; 0xf5a8e
+ pop si ; 5e ; 0xf5a8f
+ pop cx ; 59 ; 0xf5a90
+ pop bx ; 5b ; 0xf5a91
+ retn 00008h ; c2 08 00 ; 0xf5a92
+ ; disGetNextSymbol 0xf5a95 LB 0x58b7 -> off=0x0 cb=00000000000002ed uValue=00000000000f4495 'edd_fill_dpt'
+edd_fill_dpt: ; 0xf5a95 LB 0x2ed
+ push si ; 56 ; 0xf5a95 disk.c:140
+ push di ; 57 ; 0xf5a96
+ enter 0000eh, 000h ; c8 0e 00 00 ; 0xf5a97
+ mov di, ax ; 89 c7 ; 0xf5a9b
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5a9d
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf5aa0
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf5aa3
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5aa6 disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5aa9
+ mov es, ax ; 8e c0 ; 0xf5aac
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5aae
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf5ab1 disk.c:49
+ mov es, dx ; 8e c2 ; 0xf5ab4 disk.c:145
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf5ab6
+ cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5ab9
+ jnc short 05ac4h ; 73 06 ; 0xf5abc
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf5abe disk.c:146
+ jmp near 05d7ch ; e9 b8 02 ; 0xf5ac1
+ jc near 05b96h ; 0f 82 ce 00 ; 0xf5ac4 disk.c:149
+ mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf5ac8 disk.c:152
+ movzx bx, byte [bp+008h] ; 0f b6 5e 08 ; 0xf5acd disk.c:153
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf5ad1
+ mov dx, cx ; 89 ca ; 0xf5ad4
+ add bx, word [bp-00eh] ; 03 5e f2 ; 0xf5ad6
+ mov es, cx ; 8e c1 ; 0xf5ad9
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf5adb
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5adf
+ mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf5ae2
+ mov es, cx ; 8e c1 ; 0xf5ae6 disk.c:155
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf5ae8
+ jne short 05b27h ; 75 38 ; 0xf5aed
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5aef disk.c:156
+ 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; 0xf5af2
+ 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; 0xf5afb disk.c:157
+ 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; 0xf5b04 disk.c:158
+ 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; 0xf5b0d disk.c:159
+ 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; 0xf5b16 disk.c:160
+ mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf5b1f disk.c:161
+ jmp short 05b96h ; eb 6f ; 0xf5b25 disk.c:162
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b27 disk.c:163
+ mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf5b2a
+ mov es, cx ; 8e c1 ; 0xf5b30 disk.c:164
+ mov ax, word [es:bx+032h] ; 26 8b 47 32 ; 0xf5b32
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b36
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5b39
+ mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5b3d
+ mov es, cx ; 8e c1 ; 0xf5b43 disk.c:165
+ mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5b45
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b49
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5b4c
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5b50
+ mov es, cx ; 8e c1 ; 0xf5b56 disk.c:166
+ mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5b58
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b5c
+ mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5b5f
+ mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5b63
+ mov es, cx ; 8e c1 ; 0xf5b69 disk.c:167
+ mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf5b6b
+ mov si, word [es:bx+03ah] ; 26 8b 77 3a ; 0xf5b6f
+ mov cx, word [es:bx+038h] ; 26 8b 4f 38 ; 0xf5b73
+ mov dx, word [es:bx+036h] ; 26 8b 57 36 ; 0xf5b77
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b7b disk.c:168
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5b7e
+ mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5b82
+ mov bx, si ; 89 f3 ; 0xf5b86 disk.c:169
+ mov si, strict word 00020h ; be 20 00 ; 0xf5b88
+ call 0b290h ; e8 02 57 ; 0xf5b8b
+ mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5b8e
+ mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5b92
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b96 disk.c:174
+ cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5b99
+ jc near 05cbfh ; 0f 82 1e 01 ; 0xf5b9d
+ mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5ba1 disk.c:178
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5ba6 disk.c:179
+ mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5ba9
+ mov word [es:di+01ah], 0030eh ; 26 c7 45 1a 0e 03 ; 0xf5bad disk.c:180
+ movzx cx, byte [bp+008h] ; 0f b6 4e 08 ; 0xf5bb3 disk.c:183
+ mov ax, cx ; 89 c8 ; 0xf5bb7
+ cwd ; 99 ; 0xf5bb9
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5bba
+ sar ax, 1 ; d1 f8 ; 0xf5bbc
+ xor ah, ah ; 30 e4 ; 0xf5bbe disk.c:184
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5bc0
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5bc3
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5bc6
+ add bx, ax ; 01 c3 ; 0xf5bc9
+ mov ax, word [es:bx+0027eh] ; 26 8b 87 7e 02 ; 0xf5bcb
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5bd0
+ mov ax, word [es:bx+00280h] ; 26 8b 87 80 02 ; 0xf5bd3 disk.c:185
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5bd8
+ mov al, byte [es:bx+0027dh] ; 26 8a 87 7d 02 ; 0xf5bdb disk.c:186
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf5be0
+ imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf5be3 disk.c:187
+ add bx, word [bp-00eh] ; 03 5e f2 ; 0xf5be6
+ mov ah, byte [es:bx+026h] ; 26 8a 67 26 ; 0xf5be9
+ mov al, byte [es:bx+027h] ; 26 8a 47 27 ; 0xf5bed disk.c:188
+ test al, al ; 84 c0 ; 0xf5bf1 disk.c:190
+ jne short 05bf9h ; 75 04 ; 0xf5bf3
+ xor bx, bx ; 31 db ; 0xf5bf5
+ jmp short 05bfch ; eb 03 ; 0xf5bf7
+ mov bx, strict word 00008h ; bb 08 00 ; 0xf5bf9
+ or bl, 010h ; 80 cb 10 ; 0xf5bfc disk.c:191
+ movzx dx, byte [bp+008h] ; 0f b6 56 08 ; 0xf5bff disk.c:192
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5c03
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5c06
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf5c09
+ add si, dx ; 01 d6 ; 0xf5c0c
+ cmp byte [es:si+023h], 005h ; 26 80 7c 23 05 ; 0xf5c0e
+ jne short 05c18h ; 75 03 ; 0xf5c13
+ or bl, 060h ; 80 cb 60 ; 0xf5c15 disk.c:193
+ cmp ah, 001h ; 80 fc 01 ; 0xf5c18 disk.c:197
+ db 00fh, 094h, 0c4h
+ ; sete ah ; 0f 94 c4 ; 0xf5c1b
+ movzx dx, ah ; 0f b6 d4 ; 0xf5c1e
+ or bx, dx ; 09 d3 ; 0xf5c21
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf5c23 disk.c:199
+ db 00fh, 094h, 0c4h
+ ; sete ah ; 0f 94 c4 ; 0xf5c25
+ movzx dx, ah ; 0f b6 d4 ; 0xf5c28
+ or bx, dx ; 09 d3 ; 0xf5c2b
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf5c2d disk.c:200
+ jne short 05c36h ; 75 05 ; 0xf5c2f
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf5c31
+ jmp short 05c38h ; eb 02 ; 0xf5c34
+ xor ax, ax ; 31 c0 ; 0xf5c36
+ or bx, ax ; 09 c3 ; 0xf5c38
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5c3a disk.c:202
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5c3d
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf5c40
+ mov word [es:si+002b0h], ax ; 26 89 84 b0 02 ; 0xf5c43
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5c48 disk.c:203
+ mov word [es:si+002b2h], ax ; 26 89 84 b2 02 ; 0xf5c4b
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf5c50 disk.c:204
+ cwd ; 99 ; 0xf5c54
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf5c55
+ idiv cx ; f7 f9 ; 0xf5c58
+ or dl, 00eh ; 80 ca 0e ; 0xf5c5a
+ sal dx, 004h ; c1 e2 04 ; 0xf5c5d
+ mov byte [es:si+002b4h], dl ; 26 88 94 b4 02 ; 0xf5c60
+ mov byte [es:si+002b5h], 0cbh ; 26 c6 84 b5 02 cb ; 0xf5c65 disk.c:205
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5c6b disk.c:206
+ mov byte [es:si+002b6h], al ; 26 88 84 b6 02 ; 0xf5c6e
+ mov word [es:si+002b7h], strict word 00001h ; 26 c7 84 b7 02 01 00 ; 0xf5c73 disk.c:207
+ mov byte [es:si+002b9h], 000h ; 26 c6 84 b9 02 00 ; 0xf5c7a disk.c:209
+ mov word [es:si+002bah], bx ; 26 89 9c ba 02 ; 0xf5c80 disk.c:210
+ mov bx, si ; 89 f3 ; 0xf5c85 disk.c:211
+ mov word [es:bx+002bch], strict word 00000h ; 26 c7 87 bc 02 00 00 ; 0xf5c87
+ mov byte [es:bx+002beh], 011h ; 26 c6 87 be 02 11 ; 0xf5c8e disk.c:212
+ xor al, al ; 30 c0 ; 0xf5c94 disk.c:214
+ xor ah, ah ; 30 e4 ; 0xf5c96 disk.c:215
+ jmp short 05c9fh ; eb 05 ; 0xf5c98
+ cmp ah, 00fh ; 80 fc 0f ; 0xf5c9a
+ jnc short 05cb2h ; 73 13 ; 0xf5c9d
+ movzx bx, ah ; 0f b6 dc ; 0xf5c9f disk.c:216
+ add bx, 0030eh ; 81 c3 0e 03 ; 0xf5ca2
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf5ca6 disk.c:38
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5ca9
+ add al, dl ; 00 d0 ; 0xf5cac disk.c:39
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf5cae disk.c:216
+ jmp short 05c9ah ; eb e8 ; 0xf5cb0
+ neg al ; f6 d8 ; 0xf5cb2 disk.c:217
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5cb4 disk.c:218
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5cb7
+ mov byte [es:bx+002bfh], al ; 26 88 87 bf 02 ; 0xf5cba
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5cbf disk.c:222
+ cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5cc2
+ jc near 05d7ah ; 0f 82 b0 00 ; 0xf5cc6
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf5cca disk.c:226
+ cwd ; 99 ; 0xf5cce
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5ccf
+ sar ax, 1 ; d1 f8 ; 0xf5cd1
+ xor ah, ah ; 30 e4 ; 0xf5cd3 disk.c:227
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5cd5
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5cd8
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5cdb
+ add bx, ax ; 01 c3 ; 0xf5cde
+ mov al, byte [es:bx+0027ch] ; 26 8a 87 7c 02 ; 0xf5ce0
+ mov dx, word [es:bx+0027eh] ; 26 8b 97 7e 02 ; 0xf5ce5 disk.c:228
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5cea disk.c:230
+ mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5ced
+ 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; 0xf5cf2 disk.c:231
+ mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5cfb disk.c:234
+ test al, al ; 84 c0 ; 0xf5d01 disk.c:236
+ jne short 05d0eh ; 75 09 ; 0xf5d03
+ 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; 0xf5d05 disk.c:237
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d0e disk.c:245
+ 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; 0xf5d11
+ 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; 0xf5d1a disk.c:249
+ test al, al ; 84 c0 ; 0xf5d23 disk.c:254
+ jne short 05d3ah ; 75 13 ; 0xf5d25
+ mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5d27 disk.c:255
+ 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; 0xf5d2b disk.c:256
+ mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5d34 disk.c:257
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5d3a disk.c:262
+ and AL, strict byte 001h ; 24 01 ; 0xf5d3d
+ xor ah, ah ; 30 e4 ; 0xf5d3f
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d41
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5d44
+ 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; 0xf5d48 disk.c:263
+ mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5d51 disk.c:264
+ xor al, al ; 30 c0 ; 0xf5d57 disk.c:266
+ mov AH, strict byte 01eh ; b4 1e ; 0xf5d59 disk.c:267
+ jmp short 05d62h ; eb 05 ; 0xf5d5b
+ cmp ah, 040h ; 80 fc 40 ; 0xf5d5d
+ jnc short 05d71h ; 73 0f ; 0xf5d60
+ movzx bx, ah ; 0f b6 dc ; 0xf5d62 disk.c:268
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d65
+ add bx, di ; 01 fb ; 0xf5d68
+ add al, byte [es:bx] ; 26 02 07 ; 0xf5d6a
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf5d6d
+ jmp short 05d5dh ; eb ec ; 0xf5d6f
+ neg al ; f6 d8 ; 0xf5d71 disk.c:269
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d73 disk.c:270
+ mov byte [es:di+041h], al ; 26 88 45 41 ; 0xf5d76
+ xor ax, ax ; 31 c0 ; 0xf5d7a disk.c:272
+ leave ; c9 ; 0xf5d7c disk.c:273
+ pop di ; 5f ; 0xf5d7d
+ pop si ; 5e ; 0xf5d7e
+ retn 00002h ; c2 02 00 ; 0xf5d7f
+ ; disGetNextSymbol 0xf5d82 LB 0x55ca -> off=0x32 cb=000000000000042f uValue=00000000000f47b4 'int13_harddisk'
+ db 04ah, 05eh, 071h, 05eh, 098h, 05eh, 098h, 05eh, 098h, 05eh, 07dh, 060h, 0a5h, 061h, 0a5h, 061h
+ db 096h, 060h, 082h, 061h, 0a5h, 061h, 0a5h, 061h, 082h, 061h, 082h, 061h, 0a5h, 061h, 0a5h, 061h
+ db 003h, 061h, 082h, 061h, 0a5h, 061h, 0a5h, 061h, 082h, 061h, 03bh, 061h, 0a5h, 061h, 0a5h, 061h
+ db 0a5h, 061h
+int13_harddisk: ; 0xf5db4 LB 0x42f
+ push bp ; 55 ; 0xf5db4 disk.c:275
+ mov bp, sp ; 89 e5 ; 0xf5db5
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf5db7
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5dba disk.c:286
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5dbe disk.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf5dc1
+ mov es, dx ; 8e c2 ; 0xf5dc4
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf5dc6
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf5dc9 disk.c:49
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5dcc
+ mov bx, 0008eh ; bb 8e 00 ; 0xf5dcf disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5dd2
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5dd6 disk.c:292
+ xor dh, dh ; 30 f6 ; 0xf5dd9
+ cmp dx, 00080h ; 81 fa 80 00 ; 0xf5ddb
+ jc short 05de7h ; 72 06 ; 0xf5ddf
+ cmp dx, 00094h ; 81 fa 94 00 ; 0xf5de1
+ jc short 05e05h ; 72 1e ; 0xf5de5
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5de7 disk.c:293
+ xor ah, ah ; 30 e4 ; 0xf5dea
+ push ax ; 50 ; 0xf5dec
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ded
+ shr ax, 008h ; c1 e8 08 ; 0xf5df0
+ push ax ; 50 ; 0xf5df3
+ push 006c8h ; 68 c8 06 ; 0xf5df4
+ push 006d7h ; 68 d7 06 ; 0xf5df7
+ push strict byte 00004h ; 6a 04 ; 0xf5dfa
+ call 01a23h ; e8 24 bc ; 0xf5dfc
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5dff
+ jmp near 061c0h ; e9 bb 03 ; 0xf5e02 disk.c:294
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5e05 disk.c:298
+ xor dh, dh ; 30 f6 ; 0xf5e08
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5e0a
+ mov bx, si ; 89 f3 ; 0xf5e0d
+ add bx, dx ; 01 d3 ; 0xf5e0f
+ mov bl, byte [es:bx+001d3h] ; 26 8a 9f d3 01 ; 0xf5e11
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf5e16
+ cmp bl, 014h ; 80 fb 14 ; 0xf5e19 disk.c:301
+ jc short 05e2eh ; 72 10 ; 0xf5e1c
+ push dx ; 52 ; 0xf5e1e disk.c:302
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5e1f
+ shr ax, 008h ; c1 e8 08 ; 0xf5e22
+ push ax ; 50 ; 0xf5e25
+ push 006c8h ; 68 c8 06 ; 0xf5e26
+ push 00702h ; 68 02 07 ; 0xf5e29
+ jmp short 05dfah ; eb cc ; 0xf5e2c
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5e2e disk.c:306
+ shr bx, 008h ; c1 eb 08 ; 0xf5e31
+ cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5e34
+ jnbe near 061a5h ; 0f 87 6a 03 ; 0xf5e37
+ add bx, bx ; 01 db ; 0xf5e3b
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5e3d
+ xor dh, dh ; 30 f6 ; 0xf5e40
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf5e42
+ jmp word [cs:bx+05d82h] ; 2e ff a7 82 5d ; 0xf5e45
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e4a disk.c:311
+ jnc near 05e59h ; 0f 83 07 00 ; 0xf5e4e
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5e52 disk.c:313
+ call 01e2ch ; e8 d3 bf ; 0xf5e56
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5e59 disk.c:314
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5e5d
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5e60
+ mov es, ax ; 8e c0 ; 0xf5e63
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e65
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5e69
+ mov sp, bp ; 89 ec ; 0xf5e6d
+ pop bp ; 5d ; 0xf5e6f
+ retn ; c3 ; 0xf5e70
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5e71 disk.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5e74
+ mov es, ax ; 8e c0 ; 0xf5e77
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5e79
+ movzx dx, al ; 0f b6 d0 ; 0xf5e7c disk.c:319
+ sal dx, 008h ; c1 e2 08 ; 0xf5e7f
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf5e82
+ or bx, dx ; 09 d3 ; 0xf5e85
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5e87
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5e8a disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e8d
+ test al, al ; 84 c0 ; 0xf5e91 disk.c:322
+ je short 05e5dh ; 74 c8 ; 0xf5e93
+ jmp near 061dch ; e9 44 03 ; 0xf5e95
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5e98 disk.c:330
+ xor dh, dh ; 30 f6 ; 0xf5e9b
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5e9d
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5ea0 disk.c:331
+ shr di, 008h ; c1 ef 08 ; 0xf5ea3
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5ea6 disk.c:332
+ xor dh, dh ; 30 f6 ; 0xf5ea9
+ sal dx, 002h ; c1 e2 02 ; 0xf5eab
+ xor dl, dl ; 30 d2 ; 0xf5eae
+ and dh, 003h ; 80 e6 03 ; 0xf5eb0
+ or di, dx ; 09 d7 ; 0xf5eb3
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5eb5 disk.c:333
+ and dx, strict byte 0003fh ; 83 e2 3f ; 0xf5eb8
+ mov word [bp-006h], dx ; 89 56 fa ; 0xf5ebb
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5ebe disk.c:334
+ shr dx, 008h ; c1 ea 08 ; 0xf5ec1
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf5ec4
+ cmp word [bp-00ch], 00080h ; 81 7e f4 80 00 ; 0xf5ec7 disk.c:337
+ jnbe short 05ed4h ; 77 06 ; 0xf5ecc
+ cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf5ece
+ jne short 05ef7h ; 75 23 ; 0xf5ed2
+ mov bx, 00f24h ; bb 24 0f ; 0xf5ed4 disk.c:338
+ mov cx, ds ; 8c d9 ; 0xf5ed7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5ed9
+ call 019e2h ; e8 03 bb ; 0xf5edc
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5edf
+ shr ax, 008h ; c1 e8 08 ; 0xf5ee2
+ push ax ; 50 ; 0xf5ee5
+ push 006c8h ; 68 c8 06 ; 0xf5ee6
+ push 00734h ; 68 34 07 ; 0xf5ee9
+ push strict byte 00004h ; 6a 04 ; 0xf5eec
+ call 01a23h ; e8 32 bb ; 0xf5eee
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf5ef1
+ jmp near 061c0h ; e9 c9 02 ; 0xf5ef4 disk.c:339
+ movzx bx, byte [bp-002h] ; 0f b6 5e fe ; 0xf5ef7 disk.c:343
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf5efb
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5efe
+ add bx, si ; 01 f3 ; 0xf5f01
+ mov dx, word [es:bx+02ch] ; 26 8b 57 2c ; 0xf5f03
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf5f07
+ mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf5f0a disk.c:344
+ mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf5f0e disk.c:345
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5f12
+ cmp di, word [bp-012h] ; 3b 7e ee ; 0xf5f15 disk.c:348
+ jnc short 05f27h ; 73 0d ; 0xf5f18
+ cmp cx, word [bp-008h] ; 3b 4e f8 ; 0xf5f1a
+ jbe short 05f27h ; 76 08 ; 0xf5f1d
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf5f1f
+ cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5f22
+ jbe short 05f55h ; 76 2e ; 0xf5f25
+ mov bx, 00f24h ; bb 24 0f ; 0xf5f27 disk.c:349
+ mov cx, ds ; 8c d9 ; 0xf5f2a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f2c
+ call 019e2h ; e8 b0 ba ; 0xf5f2f
+ push dword [bp-008h] ; 66 ff 76 f8 ; 0xf5f32
+ push di ; 57 ; 0xf5f36
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5f37
+ xor ah, ah ; 30 e4 ; 0xf5f3a
+ push ax ; 50 ; 0xf5f3c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f3d
+ shr ax, 008h ; c1 e8 08 ; 0xf5f40
+ push ax ; 50 ; 0xf5f43
+ push 006c8h ; 68 c8 06 ; 0xf5f44
+ push 0075ch ; 68 5c 07 ; 0xf5f47
+ push strict byte 00004h ; 6a 04 ; 0xf5f4a
+ call 01a23h ; e8 d4 ba ; 0xf5f4c
+ add sp, strict byte 00010h ; 83 c4 10 ; 0xf5f4f
+ jmp near 061c0h ; e9 6b 02 ; 0xf5f52 disk.c:350
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5f55 disk.c:354
+ shr dx, 008h ; c1 ea 08 ; 0xf5f58
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf5f5b
+ jne short 05f63h ; 75 03 ; 0xf5f5e
+ jmp near 05e59h ; e9 f6 fe ; 0xf5f60 disk.c:355
+ movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf5f63 disk.c:359
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5f67
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5f6a
+ mov bx, si ; 89 f3 ; 0xf5f6d
+ add bx, dx ; 01 d3 ; 0xf5f6f
+ cmp cx, word [es:bx+030h] ; 26 3b 4f 30 ; 0xf5f71
+ jne short 05f86h ; 75 0f ; 0xf5f75
+ mov dx, word [es:bx+034h] ; 26 8b 57 34 ; 0xf5f77
+ cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5f7b
+ jne short 05f86h ; 75 06 ; 0xf5f7e
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5f80
+ jc short 05fb7h ; 72 31 ; 0xf5f84
+ mov ax, di ; 89 f8 ; 0xf5f86 disk.c:360
+ xor dx, dx ; 31 d2 ; 0xf5f88
+ mov bx, cx ; 89 cb ; 0xf5f8a
+ xor cx, cx ; 31 c9 ; 0xf5f8c
+ call 0b210h ; e8 7f 52 ; 0xf5f8e
+ xor bx, bx ; 31 db ; 0xf5f91
+ add ax, word [bp-008h] ; 03 46 f8 ; 0xf5f93
+ adc dx, bx ; 11 da ; 0xf5f96
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5f98
+ xor cx, cx ; 31 c9 ; 0xf5f9b
+ call 0b210h ; e8 70 52 ; 0xf5f9d
+ xor cx, cx ; 31 c9 ; 0xf5fa0
+ mov bx, word [bp-006h] ; 8b 5e fa ; 0xf5fa2
+ add bx, ax ; 01 c3 ; 0xf5fa5
+ mov ax, dx ; 89 d0 ; 0xf5fa7
+ adc ax, cx ; 11 c8 ; 0xf5fa9
+ add bx, strict byte 0ffffh ; 83 c3 ff ; 0xf5fab
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf5fae
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf5fb1
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf5fb4 disk.c:361
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5fb7 disk.c:371
+ 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; 0xf5fba
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5fc3 disk.c:372
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf5fc9 disk.c:375
+ mov word [es:si], dx ; 26 89 14 ; 0xf5fcc
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5fcf
+ 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; 0xf5fd3
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5fdc disk.c:376
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5fdf
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5fe2
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5fe6
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5fea disk.c:377
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf5fed
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf5ff1 disk.c:378
+ mov word [es:si+012h], di ; 26 89 7c 12 ; 0xf5ff7 disk.c:379
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5ffb disk.c:380
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5ffe
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf6002 disk.c:381
+ mov word [es:si+016h], ax ; 26 89 44 16 ; 0xf6005
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6009 disk.c:382
+ mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf600c
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf6010 disk.c:384
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf6014
+ mov bx, si ; 89 f3 ; 0xf6017
+ add bx, ax ; 01 c3 ; 0xf6019
+ movzx ax, byte [es:bx+022h] ; 26 0f b6 47 22 ; 0xf601b
+ mov bx, ax ; 89 c3 ; 0xf6020
+ sal bx, 002h ; c1 e3 02 ; 0xf6022
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6025
+ shr ax, 008h ; c1 e8 08 ; 0xf6028
+ add ax, ax ; 01 c0 ; 0xf602b
+ add bx, ax ; 01 c3 ; 0xf602d
+ push ES ; 06 ; 0xf602f
+ push si ; 56 ; 0xf6030
+ call word [bx+00082h] ; ff 97 82 00 ; 0xf6031
+ mov dx, ax ; 89 c2 ; 0xf6035
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6037 disk.c:387
+ xor al, al ; 30 c0 ; 0xf603a
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf603c
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf603f
+ or bx, ax ; 09 c3 ; 0xf6043
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf6045
+ test dl, dl ; 84 d2 ; 0xf6048 disk.c:389
+ je near 05e59h ; 0f 84 0b fe ; 0xf604a
+ mov bx, 00f24h ; bb 24 0f ; 0xf604e disk.c:390
+ mov cx, ds ; 8c d9 ; 0xf6051
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6053
+ call 019e2h ; e8 89 b9 ; 0xf6056
+ movzx ax, dl ; 0f b6 c2 ; 0xf6059
+ push ax ; 50 ; 0xf605c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf605d
+ shr ax, 008h ; c1 e8 08 ; 0xf6060
+ push ax ; 50 ; 0xf6063
+ push 006c8h ; 68 c8 06 ; 0xf6064
+ push 007a3h ; 68 a3 07 ; 0xf6067
+ push strict byte 00004h ; 6a 04 ; 0xf606a
+ call 01a23h ; e8 b4 b9 ; 0xf606c
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf606f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6072 disk.c:391
+ xor ah, ah ; 30 e4 ; 0xf6075
+ or ah, 00ch ; 80 cc 0c ; 0xf6077
+ jmp near 061c8h ; e9 4b 01 ; 0xf607a disk.c:392
+ mov bx, 00f24h ; bb 24 0f ; 0xf607d disk.c:399
+ mov cx, ds ; 8c d9 ; 0xf6080
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6082
+ call 019e2h ; e8 5a b9 ; 0xf6085
+ push 007c4h ; 68 c4 07 ; 0xf6088
+ push strict byte 00004h ; 6a 04 ; 0xf608b
+ call 01a23h ; e8 93 b9 ; 0xf608d
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf6090
+ jmp near 05e59h ; e9 c3 fd ; 0xf6093 disk.c:400
+ movzx di, byte [bp-002h] ; 0f b6 7e fe ; 0xf6096 disk.c:406
+ imul di, di, strict byte 0001ch ; 6b ff 1c ; 0xf609a
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf609d
+ add di, si ; 01 f7 ; 0xf60a0
+ mov bx, word [es:di+02ch] ; 26 8b 5d 2c ; 0xf60a2
+ mov cx, word [es:di+02ah] ; 26 8b 4d 2a ; 0xf60a6 disk.c:407
+ mov ax, word [es:di+02eh] ; 26 8b 45 2e ; 0xf60aa disk.c:408
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf60ae
+ movzx ax, byte [es:si+00252h] ; 26 0f b6 84 52 02 ; 0xf60b1 disk.c:410
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf60b7
+ mov byte [bp+016h], dh ; 88 76 16 ; 0xf60ba disk.c:413
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf60bd disk.c:414
+ xor dh, dh ; 30 f6 ; 0xf60c0
+ dec bx ; 4b ; 0xf60c2 disk.c:412
+ mov ax, bx ; 89 d8 ; 0xf60c3
+ xor ah, bh ; 30 fc ; 0xf60c5
+ sal ax, 008h ; c1 e0 08 ; 0xf60c7
+ or dx, ax ; 09 c2 ; 0xf60ca
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf60cc
+ shr bx, 002h ; c1 eb 02 ; 0xf60cf disk.c:415
+ and bl, 0c0h ; 80 e3 c0 ; 0xf60d2
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf60d5
+ mov dl, al ; 88 c2 ; 0xf60d8
+ and dl, 03fh ; 80 e2 3f ; 0xf60da
+ or dl, bl ; 08 da ; 0xf60dd
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf60df
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf60e2 disk.c:416
+ xor dh, dh ; 30 f6 ; 0xf60e5
+ mov ax, cx ; 89 c8 ; 0xf60e7
+ sal ax, 008h ; c1 e0 08 ; 0xf60e9
+ sub ax, 00100h ; 2d 00 01 ; 0xf60ec
+ or dx, ax ; 09 c2 ; 0xf60ef
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf60f1
+ mov ax, dx ; 89 d0 ; 0xf60f4 disk.c:417
+ xor al, dl ; 30 d0 ; 0xf60f6
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf60f8
+ or dx, ax ; 09 c2 ; 0xf60fb
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf60fd
+ jmp near 05e59h ; e9 56 fd ; 0xf6100 disk.c:422
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf6103 disk.c:430
+ jnc near 05e59h ; 0f 83 4e fd ; 0xf6107
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf610b disk.c:433
+ cwd ; 99 ; 0xf610f
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf6110
+ sar ax, 1 ; d1 f8 ; 0xf6112
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf6114
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf6117
+ add si, ax ; 01 c6 ; 0xf611a
+ mov dx, word [es:si+0027eh] ; 26 8b 94 7e 02 ; 0xf611c
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf6121
+ in AL, DX ; ec ; 0xf6124
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6125
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf6127 disk.c:434
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf6129
+ jne short 06130h ; 75 03 ; 0xf612b
+ jmp near 05e59h ; e9 29 fd ; 0xf612d disk.c:435
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6130 disk.c:437
+ xor ah, ah ; 30 e4 ; 0xf6133
+ or ah, 0aah ; 80 cc aa ; 0xf6135
+ jmp near 061c8h ; e9 8d 00 ; 0xf6138
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf613b disk.c:449
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf613f
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf6142
+ add si, ax ; 01 c6 ; 0xf6145
+ mov di, word [es:si+032h] ; 26 8b 7c 32 ; 0xf6147
+ mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf614b disk.c:450
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf614f
+ mov ax, word [es:si+034h] ; 26 8b 44 34 ; 0xf6152 disk.c:451
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6156
+ mov ax, di ; 89 f8 ; 0xf6159 disk.c:454
+ xor dl, dl ; 30 d2 ; 0xf615b
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf615d
+ xor cx, cx ; 31 c9 ; 0xf6160
+ call 0b210h ; e8 ab 50 ; 0xf6162
+ mov bx, word [bp-006h] ; 8b 5e fa ; 0xf6165
+ xor cx, cx ; 31 c9 ; 0xf6168
+ call 0b210h ; e8 a3 50 ; 0xf616a
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf616d
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf6170 disk.c:455
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6173 disk.c:456
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf6176 disk.c:458
+ or ah, 003h ; 80 cc 03 ; 0xf6179
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf617c
+ jmp near 05e5dh ; e9 db fc ; 0xf617f disk.c:459
+ mov bx, 00f24h ; bb 24 0f ; 0xf6182 disk.c:467
+ mov cx, ds ; 8c d9 ; 0xf6185
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6187
+ call 019e2h ; e8 55 b8 ; 0xf618a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf618d
+ shr ax, 008h ; c1 e8 08 ; 0xf6190
+ push ax ; 50 ; 0xf6193
+ push 006c8h ; 68 c8 06 ; 0xf6194
+ push 007deh ; 68 de 07 ; 0xf6197
+ push strict byte 00004h ; 6a 04 ; 0xf619a
+ call 01a23h ; e8 84 b8 ; 0xf619c
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf619f
+ jmp near 05e59h ; e9 b4 fc ; 0xf61a2 disk.c:468
+ mov bx, 00f24h ; bb 24 0f ; 0xf61a5 disk.c:475
+ mov cx, ds ; 8c d9 ; 0xf61a8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf61aa
+ call 019e2h ; e8 32 b8 ; 0xf61ad
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61b0
+ shr ax, 008h ; c1 e8 08 ; 0xf61b3
+ push ax ; 50 ; 0xf61b6
+ push 006c8h ; 68 c8 06 ; 0xf61b7
+ push 00811h ; 68 11 08 ; 0xf61ba
+ jmp near 05eech ; e9 2c fd ; 0xf61bd
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61c0 disk.c:481
+ xor ah, ah ; 30 e4 ; 0xf61c3
+ or ah, 001h ; 80 cc 01 ; 0xf61c5
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf61c8
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61cb disk.c:483
+ shr ax, 008h ; c1 e8 08 ; 0xf61ce
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf61d1 disk.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf61d4
+ mov es, dx ; 8e c2 ; 0xf61d7
+ mov byte [es:bx], al ; 26 88 07 ; 0xf61d9
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf61dc disk.c:485
+ jmp near 05e6dh ; e9 8a fc ; 0xf61e0 disk.c:486
+ ; disGetNextSymbol 0xf61e3 LB 0x5169 -> off=0x20 cb=000000000000029e uValue=00000000000f4c03 'int13_harddisk_ext'
+ db 093h, 062h, 0abh, 062h, 0abh, 062h, 0abh, 062h, 089h, 064h, 015h, 064h, 0abh, 062h, 01dh, 064h
+ db 089h, 064h, 06eh, 064h, 06eh, 064h, 06eh, 064h, 06eh, 064h, 056h, 064h, 06eh, 064h, 06eh, 064h
+int13_harddisk_ext: ; 0xf6203 LB 0x29e
+ push bp ; 55 ; 0xf6203 disk.c:496
+ mov bp, sp ; 89 e5 ; 0xf6204
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf6206
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6209 disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf620c
+ mov es, ax ; 8e c0 ; 0xf620f
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6211
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf6214 disk.c:49
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6217
+ mov bx, 0008eh ; bb 8e 00 ; 0xf621a disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf621d
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6221 disk.c:520
+ xor ah, ah ; 30 e4 ; 0xf6224
+ cmp ax, 00080h ; 3d 80 00 ; 0xf6226
+ jc short 06230h ; 72 05 ; 0xf6229
+ cmp ax, 00094h ; 3d 94 00 ; 0xf622b
+ jc short 0624eh ; 72 1e ; 0xf622e
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6230 disk.c:521
+ xor ah, ah ; 30 e4 ; 0xf6233
+ push ax ; 50 ; 0xf6235
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6236
+ shr ax, 008h ; c1 e8 08 ; 0xf6239
+ push ax ; 50 ; 0xf623c
+ push 0083fh ; 68 3f 08 ; 0xf623d
+ push 006d7h ; 68 d7 06 ; 0xf6240
+ push strict byte 00004h ; 6a 04 ; 0xf6243
+ call 01a23h ; e8 db b7 ; 0xf6245
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6248
+ jmp near 06434h ; e9 e6 01 ; 0xf624b disk.c:522
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf624e disk.c:526
+ xor ah, ah ; 30 e4 ; 0xf6251
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6253
+ mov bx, di ; 89 fb ; 0xf6256
+ add bx, ax ; 01 c3 ; 0xf6258
+ mov dl, byte [es:bx+001d3h] ; 26 8a 97 d3 01 ; 0xf625a
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf625f
+ cmp dl, 014h ; 80 fa 14 ; 0xf6262 disk.c:529
+ jc short 06277h ; 72 10 ; 0xf6265
+ push ax ; 50 ; 0xf6267 disk.c:530
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6268
+ shr ax, 008h ; c1 e8 08 ; 0xf626b
+ push ax ; 50 ; 0xf626e
+ push 0083fh ; 68 3f 08 ; 0xf626f
+ push 00702h ; 68 02 07 ; 0xf6272
+ jmp short 06243h ; eb cc ; 0xf6275
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf6277 disk.c:534
+ shr bx, 008h ; c1 eb 08 ; 0xf627a
+ sub bx, strict byte 00041h ; 83 eb 41 ; 0xf627d
+ cmp bx, strict byte 0000fh ; 83 fb 0f ; 0xf6280
+ jnbe near 0646eh ; 0f 87 e7 01 ; 0xf6283
+ add bx, bx ; 01 db ; 0xf6287
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf6289
+ xor ch, ch ; 30 ed ; 0xf628c
+ jmp word [cs:bx+061e3h] ; 2e ff a7 e3 61 ; 0xf628e
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf6293 disk.c:536
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6298 disk.c:537
+ xor ah, ah ; 30 e4 ; 0xf629b
+ or ah, 030h ; 80 cc 30 ; 0xf629d
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf62a0
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf62a3 disk.c:538
+ jmp near 0648dh ; e9 e2 01 ; 0xf62a8 disk.c:539
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf62ab disk.c:548
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf62ae
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf62b1
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf62b4
+ mov [bp-010h], es ; 8c 46 f0 ; 0xf62b7
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf62ba disk.c:550
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf62be
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf62c1 disk.c:551
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf62c5
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf62c8 disk.c:552
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf62cc
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf62cf disk.c:555
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf62d3
+ xor ax, ax ; 31 c0 ; 0xf62d7 disk.c:556
+ xor bx, bx ; 31 db ; 0xf62d9
+ mov si, strict word 00020h ; be 20 00 ; 0xf62db
+ call 0b2a0h ; e8 bf 4f ; 0xf62de
+ mov si, ax ; 89 c6 ; 0xf62e1
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf62e3
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf62e6 disk.c:557
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf62e9
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf62ed
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf62f0
+ or dx, word [bp-016h] ; 0b 56 ea ; 0xf62f4
+ or cx, ax ; 09 c1 ; 0xf62f7
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf62f9 disk.c:562
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf62fd
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6300
+ mov bx, di ; 89 fb ; 0xf6303
+ add bx, ax ; 01 c3 ; 0xf6305
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf6307
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf630b
+ mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf630e disk.c:563
+ cmp si, ax ; 39 c6 ; 0xf6312
+ jnbe short 06338h ; 77 22 ; 0xf6314
+ jne short 0635bh ; 75 43 ; 0xf6316
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf6318
+ cmp ax, word [es:bx+03ah] ; 26 3b 47 3a ; 0xf631b
+ jnbe short 06338h ; 77 17 ; 0xf631f
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf6321
+ cmp ax, word [es:bx+03ah] ; 26 3b 47 3a ; 0xf6324
+ jne short 0635bh ; 75 31 ; 0xf6328
+ cmp cx, word [es:bx+038h] ; 26 3b 4f 38 ; 0xf632a
+ jnbe short 06338h ; 77 08 ; 0xf632e
+ jne short 0635bh ; 75 29 ; 0xf6330
+ cmp dx, word [es:bx+036h] ; 26 3b 57 36 ; 0xf6332
+ jc short 0635bh ; 72 23 ; 0xf6336
+ mov bx, 00f24h ; bb 24 0f ; 0xf6338 disk.c:564
+ mov cx, ds ; 8c d9 ; 0xf633b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf633d
+ call 019e2h ; e8 9f b6 ; 0xf6340
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6343
+ shr ax, 008h ; c1 e8 08 ; 0xf6346
+ push ax ; 50 ; 0xf6349
+ push 0083fh ; 68 3f 08 ; 0xf634a
+ push 00852h ; 68 52 08 ; 0xf634d
+ push strict byte 00004h ; 6a 04 ; 0xf6350
+ call 01a23h ; e8 ce b6 ; 0xf6352
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6355
+ jmp near 06434h ; e9 d9 00 ; 0xf6358 disk.c:565
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf635b disk.c:569
+ shr ax, 008h ; c1 e8 08 ; 0xf635e
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6361
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf6364
+ je near 06489h ; 0f 84 1e 01 ; 0xf6367
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf636b
+ je near 06489h ; 0f 84 17 01 ; 0xf636e
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6372 disk.c:573
+ 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; 0xf6375
+ mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf637e disk.c:574
+ mov word [es:di+006h], si ; 26 89 75 06 ; 0xf6384 disk.c:577
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf6388
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf638b
+ mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf638f
+ mov word [es:di], dx ; 26 89 15 ; 0xf6393
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf6396 disk.c:578
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf6399
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf639d
+ mov word [es:di+00ah], ax ; 26 89 45 0a ; 0xf63a0
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf63a4 disk.c:579
+ mov word [es:di+00eh], ax ; 26 89 45 0e ; 0xf63a7
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf63ab disk.c:580
+ mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf63b1 disk.c:581
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf63b7 disk.c:582
+ mov byte [es:di+00ch], al ; 26 88 45 0c ; 0xf63ba
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf63be disk.c:585
+ add bx, bx ; 01 db ; 0xf63c1
+ movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf63c3
+ sal ax, 002h ; c1 e0 02 ; 0xf63c7
+ add bx, ax ; 01 c3 ; 0xf63ca
+ push ES ; 06 ; 0xf63cc
+ push di ; 57 ; 0xf63cd
+ call word [word bx+00002h] ; ff 97 02 00 ; 0xf63ce
+ mov dx, ax ; 89 c2 ; 0xf63d2
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf63d4 disk.c:586
+ mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf63d7
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf63db
+ les bx, [bp-012h] ; c4 5e ee ; 0xf63de disk.c:587
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf63e1
+ test dl, dl ; 84 d2 ; 0xf63e5 disk.c:589
+ je near 06489h ; 0f 84 9e 00 ; 0xf63e7
+ mov bx, 00f24h ; bb 24 0f ; 0xf63eb disk.c:590
+ mov cx, ds ; 8c d9 ; 0xf63ee
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf63f0
+ call 019e2h ; e8 ec b5 ; 0xf63f3
+ movzx ax, dl ; 0f b6 c2 ; 0xf63f6
+ push ax ; 50 ; 0xf63f9
+ push word [bp-008h] ; ff 76 f8 ; 0xf63fa
+ push 0083fh ; 68 3f 08 ; 0xf63fd
+ push 007a3h ; 68 a3 07 ; 0xf6400
+ push strict byte 00004h ; 6a 04 ; 0xf6403
+ call 01a23h ; e8 1b b6 ; 0xf6405
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6408
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf640b disk.c:591
+ xor ah, ah ; 30 e4 ; 0xf640e
+ or ah, 00ch ; 80 cc 0c ; 0xf6410
+ jmp short 0643ch ; eb 27 ; 0xf6413 disk.c:592
+ or ch, 0b2h ; 80 cd b2 ; 0xf6415 disk.c:604
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf6418
+ jmp short 0643fh ; eb 22 ; 0xf641b disk.c:605
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf641d disk.c:609
+ push ax ; 50 ; 0xf6421
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6422
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6425
+ mov bx, di ; 89 fb ; 0xf6428
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf642a
+ call 05a95h ; e8 65 f6 ; 0xf642d
+ test ax, ax ; 85 c0 ; 0xf6430
+ je short 06489h ; 74 55 ; 0xf6432
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6434 disk.c:610
+ xor ah, ah ; 30 e4 ; 0xf6437
+ or ah, 001h ; 80 cc 01 ; 0xf6439
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf643c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf643f
+ shr ax, 008h ; c1 e8 08 ; 0xf6442
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf6445
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6448
+ mov es, dx ; 8e c2 ; 0xf644b
+ mov byte [es:bx], al ; 26 88 07 ; 0xf644d
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6450
+ jmp short 0649dh ; eb 47 ; 0xf6454
+ cmp cx, strict byte 00006h ; 83 f9 06 ; 0xf6456 disk.c:617
+ je short 06489h ; 74 2e ; 0xf6459
+ cmp cx, strict byte 00001h ; 83 f9 01 ; 0xf645b
+ jc short 06434h ; 72 d4 ; 0xf645e
+ jbe short 06489h ; 76 27 ; 0xf6460
+ cmp cx, strict byte 00003h ; 83 f9 03 ; 0xf6462
+ jc short 06434h ; 72 cd ; 0xf6465
+ cmp cx, strict byte 00004h ; 83 f9 04 ; 0xf6467
+ jbe short 06489h ; 76 1d ; 0xf646a
+ jmp short 06434h ; eb c6 ; 0xf646c disk.c:625
+ mov bx, 00f24h ; bb 24 0f ; 0xf646e disk.c:631
+ mov cx, ds ; 8c d9 ; 0xf6471
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6473
+ call 019e2h ; e8 69 b5 ; 0xf6476
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6479
+ shr ax, 008h ; c1 e8 08 ; 0xf647c
+ push ax ; 50 ; 0xf647f
+ push 0083fh ; 68 3f 08 ; 0xf6480
+ push 00811h ; 68 11 08 ; 0xf6483
+ jmp near 06350h ; e9 c7 fe ; 0xf6486
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6489 disk.c:644
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf648d disk.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6490
+ mov es, ax ; 8e c0 ; 0xf6493
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6495
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6499 disk.c:647
+ mov sp, bp ; 89 ec ; 0xf649d disk.c:649
+ pop bp ; 5d ; 0xf649f
+ retn ; c3 ; 0xf64a0
+ ; disGetNextSymbol 0xf64a1 LB 0x4eab -> off=0x0 cb=0000000000000151 uValue=00000000000f4ea1 'int14_function'
+int14_function: ; 0xf64a1 LB 0x151
+ push bp ; 55 ; 0xf64a1 serial.c:60
+ mov bp, sp ; 89 e5 ; 0xf64a2
+ push si ; 56 ; 0xf64a4
+ push di ; 57 ; 0xf64a5
+ sti ; fb ; 0xf64a6 serial.c:65
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf64a7 serial.c:67
+ add si, si ; 01 f6 ; 0xf64aa
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf64ac serial.c:48
+ mov es, ax ; 8e c0 ; 0xf64af
+ mov si, word [es:si] ; 26 8b 34 ; 0xf64b1
+ mov bx, si ; 89 f3 ; 0xf64b4 serial.c:49
+ mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf64b6 serial.c:68
+ add di, strict byte 0007ch ; 83 c7 7c ; 0xf64b9
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf64bc serial.c:38
+ cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf64bf serial.c:69
+ jnc near 065e7h ; 0f 83 20 01 ; 0xf64c3
+ test si, si ; 85 f6 ; 0xf64c7
+ jbe near 065e7h ; 0f 86 1a 01 ; 0xf64c9
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf64cd serial.c:70
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf64d0
+ jc short 064e5h ; 72 11 ; 0xf64d2
+ jbe short 0653eh ; 76 68 ; 0xf64d4
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf64d6
+ je near 065d0h ; 0f 84 f4 00 ; 0xf64d8
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf64dc
+ je near 06589h ; 0f 84 a7 00 ; 0xf64de
+ jmp near 065e1h ; e9 fc 00 ; 0xf64e2
+ test al, al ; 84 c0 ; 0xf64e5
+ jne near 065e1h ; 0f 85 f6 00 ; 0xf64e7
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf64eb serial.c:72
+ in AL, DX ; ec ; 0xf64ee
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64ef
+ or AL, strict byte 080h ; 0c 80 ; 0xf64f1
+ out DX, AL ; ee ; 0xf64f3
+ lea si, [bx+001h] ; 8d 77 01 ; 0xf64f4
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf64f7 serial.c:73
+ test AL, strict byte 0e0h ; a8 e0 ; 0xf64fa
+ jne short 0650ah ; 75 0c ; 0xf64fc
+ mov AL, strict byte 017h ; b0 17 ; 0xf64fe serial.c:74
+ mov dx, bx ; 89 da ; 0xf6500
+ out DX, AL ; ee ; 0xf6502
+ mov AL, strict byte 004h ; b0 04 ; 0xf6503 serial.c:75
+ mov dx, si ; 89 f2 ; 0xf6505
+ out DX, AL ; ee ; 0xf6507
+ jmp short 06520h ; eb 16 ; 0xf6508 serial.c:76
+ and AL, strict byte 0e0h ; 24 e0 ; 0xf650a serial.c:77
+ movzx cx, al ; 0f b6 c8 ; 0xf650c
+ sar cx, 005h ; c1 f9 05 ; 0xf650f
+ mov ax, 00600h ; b8 00 06 ; 0xf6512
+ sar ax, CL ; d3 f8 ; 0xf6515
+ mov dx, bx ; 89 da ; 0xf6517 serial.c:78
+ out DX, AL ; ee ; 0xf6519
+ shr ax, 008h ; c1 e8 08 ; 0xf651a serial.c:79
+ mov dx, si ; 89 f2 ; 0xf651d
+ out DX, AL ; ee ; 0xf651f
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6520 serial.c:81
+ and AL, strict byte 01fh ; 24 1f ; 0xf6523
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf6525
+ out DX, AL ; ee ; 0xf6528
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6529 serial.c:82
+ in AL, DX ; ec ; 0xf652c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf652d
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf652f
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf6532 serial.c:83
+ in AL, DX ; ec ; 0xf6535
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6536
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6538
+ jmp near 065c2h ; e9 84 00 ; 0xf653b
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf653e serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6541
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6544 serial.c:88
+ in AL, DX ; ec ; 0xf6547
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6548
+ and ax, strict word 00060h ; 25 60 00 ; 0xf654a
+ cmp ax, strict word 00060h ; 3d 60 00 ; 0xf654d
+ je short 0656bh ; 74 19 ; 0xf6550
+ test cl, cl ; 84 c9 ; 0xf6552
+ je short 0656bh ; 74 15 ; 0xf6554
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf6556 serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6559
+ mov es, ax ; 8e c0 ; 0xf655c
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf655e
+ cmp ax, si ; 39 f0 ; 0xf6561 serial.c:90
+ je short 06544h ; 74 df ; 0xf6563
+ mov si, ax ; 89 c6 ; 0xf6565 serial.c:91
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf6567 serial.c:92
+ jmp short 06544h ; eb d9 ; 0xf6569 serial.c:94
+ test cl, cl ; 84 c9 ; 0xf656b serial.c:95
+ je short 06575h ; 74 06 ; 0xf656d
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf656f
+ mov dx, bx ; 89 da ; 0xf6572
+ out DX, AL ; ee ; 0xf6574
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6575 serial.c:96
+ in AL, DX ; ec ; 0xf6578
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6579
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf657b
+ test cl, cl ; 84 c9 ; 0xf657e serial.c:97
+ jne short 065c2h ; 75 40 ; 0xf6580
+ or AL, strict byte 080h ; 0c 80 ; 0xf6582
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6584
+ jmp short 065c2h ; eb 39 ; 0xf6587
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf6589 serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf658c
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf658f serial.c:102
+ in AL, DX ; ec ; 0xf6592
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6593
+ test AL, strict byte 001h ; a8 01 ; 0xf6595
+ jne short 065b2h ; 75 19 ; 0xf6597
+ test cl, cl ; 84 c9 ; 0xf6599
+ je short 065b2h ; 74 15 ; 0xf659b
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf659d serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf65a0
+ mov es, ax ; 8e c0 ; 0xf65a3
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf65a5
+ cmp ax, si ; 39 f0 ; 0xf65a8 serial.c:104
+ je short 0658fh ; 74 e3 ; 0xf65aa
+ mov si, ax ; 89 c6 ; 0xf65ac serial.c:105
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf65ae serial.c:106
+ jmp short 0658fh ; eb dd ; 0xf65b0 serial.c:108
+ test cl, cl ; 84 c9 ; 0xf65b2 serial.c:109
+ je short 065c8h ; 74 12 ; 0xf65b4
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf65b6 serial.c:110
+ mov dx, bx ; 89 da ; 0xf65ba serial.c:111
+ in AL, DX ; ec ; 0xf65bc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65bd
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf65bf
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf65c2 serial.c:112
+ jmp short 065ebh ; eb 23 ; 0xf65c6
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf65c8 serial.c:113
+ in AL, DX ; ec ; 0xf65cb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65cc
+ jmp short 06584h ; eb b4 ; 0xf65ce
+ lea dx, [si+005h] ; 8d 54 05 ; 0xf65d0 serial.c:118
+ in AL, DX ; ec ; 0xf65d3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65d4
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf65d6
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf65d9 serial.c:119
+ in AL, DX ; ec ; 0xf65dc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65dd
+ jmp short 065bfh ; eb de ; 0xf65df
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf65e1 serial.c:123
+ jmp short 065ebh ; eb 04 ; 0xf65e5 serial.c:125
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf65e7 serial.c:126
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf65eb serial.c:128
+ pop di ; 5f ; 0xf65ee
+ pop si ; 5e ; 0xf65ef
+ pop bp ; 5d ; 0xf65f0
+ retn ; c3 ; 0xf65f1
+ ; disGetNextSymbol 0xf65f2 LB 0x4d5a -> off=0x0 cb=0000000000000043 uValue=00000000000f4ff2 'timer_wait'
+timer_wait: ; 0xf65f2 LB 0x43
+ push bp ; 55 ; 0xf65f2 system.c:289
+ mov bp, sp ; 89 e5 ; 0xf65f3
+ push bx ; 53 ; 0xf65f5
+ push cx ; 51 ; 0xf65f6
+ push ax ; 50 ; 0xf65f7
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf65f8 system.c:296
+ xor cx, cx ; 31 c9 ; 0xf65fb
+ call 0b250h ; e8 50 4c ; 0xf65fd
+ mov cx, ax ; 89 c1 ; 0xf6600
+ mov bx, dx ; 89 d3 ; 0xf6602
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6604 system.c:298
+ in AL, DX ; ec ; 0xf6607
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6608
+ and AL, strict byte 010h ; 24 10 ; 0xf660a
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf660c
+ add cx, strict byte 0ffffh ; 83 c1 ff ; 0xf660f system.c:299
+ adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf6612
+ cmp bx, strict byte 0ffffh ; 83 fb ff ; 0xf6615
+ jne short 0661fh ; 75 05 ; 0xf6618
+ cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf661a
+ je short 0662eh ; 74 0f ; 0xf661d
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf661f system.c:302
+ in AL, DX ; ec ; 0xf6622
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6623
+ and AL, strict byte 010h ; 24 10 ; 0xf6625
+ cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf6627 system.c:303
+ jne short 0661fh ; 75 f3 ; 0xf662a
+ jmp short 0660fh ; eb e1 ; 0xf662c system.c:305
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf662e system.c:306
+ pop cx ; 59 ; 0xf6631
+ pop bx ; 5b ; 0xf6632
+ pop bp ; 5d ; 0xf6633
+ retn ; c3 ; 0xf6634
+ ; disGetNextSymbol 0xf6635 LB 0x4d17 -> off=0x0 cb=000000000000002c uValue=00000000000f5035 'set_enable_a20'
+set_enable_a20: ; 0xf6635 LB 0x2c
+ push bp ; 55 ; 0xf6635 system.c:308
+ mov bp, sp ; 89 e5 ; 0xf6636
+ push bx ; 53 ; 0xf6638
+ push cx ; 51 ; 0xf6639
+ push dx ; 52 ; 0xf663a
+ mov bx, ax ; 89 c3 ; 0xf663b
+ mov dx, 00092h ; ba 92 00 ; 0xf663d system.c:315
+ in AL, DX ; ec ; 0xf6640
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6641
+ mov cl, al ; 88 c1 ; 0xf6643
+ test bx, bx ; 85 db ; 0xf6645 system.c:318
+ je short 0664eh ; 74 05 ; 0xf6647
+ or AL, strict byte 002h ; 0c 02 ; 0xf6649 system.c:319
+ out DX, AL ; ee ; 0xf664b
+ jmp short 06651h ; eb 03 ; 0xf664c system.c:320
+ and AL, strict byte 0fdh ; 24 fd ; 0xf664e system.c:321
+ out DX, AL ; ee ; 0xf6650
+ test cl, 002h ; f6 c1 02 ; 0xf6651 system.c:323
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf6654
+ xor ah, ah ; 30 e4 ; 0xf6657
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf6659 system.c:324
+ pop dx ; 5a ; 0xf665c
+ pop cx ; 59 ; 0xf665d
+ pop bx ; 5b ; 0xf665e
+ pop bp ; 5d ; 0xf665f
+ retn ; c3 ; 0xf6660
+ ; disGetNextSymbol 0xf6661 LB 0x4ceb -> off=0x3b cb=00000000000002f7 uValue=00000000000f509c 'int15_function'
+ db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h
+ db 024h, 022h, 000h, 075h, 069h, 0d9h, 066h, 016h, 069h, 0ech, 066h, 016h, 069h, 06eh, 069h, 030h
+ db 067h, 066h, 067h, 003h, 068h, 00fh, 068h, 038h, 068h, 0fch, 067h, 0fch, 067h, 000h, 069h, 028h
+ db 069h, 03bh, 069h, 016h, 069h, 04fh, 069h, 0c5h, 067h, 056h, 069h
+int15_function: ; 0xf669c LB 0x2f7
+ push bp ; 55 ; 0xf669c system.c:345
+ mov bp, sp ; 89 e5 ; 0xf669d
+ push si ; 56 ; 0xf669f
+ push di ; 57 ; 0xf66a0
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf66a1 system.c:352
+ shr ax, 008h ; c1 e8 08 ; 0xf66a4
+ cmp ax, 000ech ; 3d ec 00 ; 0xf66a7
+ jnbe near 06975h ; 0f 87 c7 02 ; 0xf66aa
+ push CS ; 0e ; 0xf66ae
+ pop ES ; 07 ; 0xf66af
+ mov cx, strict word 00014h ; b9 14 00 ; 0xf66b0
+ mov di, 06661h ; bf 61 66 ; 0xf66b3
+ repne scasb ; f2 ae ; 0xf66b6
+ sal cx, 1 ; d1 e1 ; 0xf66b8
+ mov di, cx ; 89 cf ; 0xf66ba
+ mov cx, word [cs:di+06674h] ; 2e 8b 8d 74 66 ; 0xf66bc
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf66c1
+ xor ah, ah ; 30 e4 ; 0xf66c4
+ mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf66c6
+ and bl, 0feh ; 80 e3 fe ; 0xf66c9
+ mov si, word [bp+018h] ; 8b 76 18 ; 0xf66cc
+ or si, strict byte 00001h ; 83 ce 01 ; 0xf66cf
+ mov dx, ax ; 89 c2 ; 0xf66d2
+ or dh, 086h ; 80 ce 86 ; 0xf66d4
+ jmp cx ; ff e1 ; 0xf66d7
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf66d9 system.c:354
+ xor ah, ah ; 30 e4 ; 0xf66dc
+ cmp ax, 000c0h ; 3d c0 00 ; 0xf66de
+ jne near 06975h ; 0f 85 90 02 ; 0xf66e1
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf66e5 system.c:361
+ jmp near 0691fh ; e9 33 02 ; 0xf66e9
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf66ec system.c:365
+ xor ah, ah ; 30 e4 ; 0xf66ef
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf66f1
+ jc short 06704h ; 72 0e ; 0xf66f4
+ jbe short 06718h ; 76 20 ; 0xf66f6
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf66f8
+ je short 0673ah ; 74 3d ; 0xf66fb
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf66fd
+ je short 0671dh ; 74 1b ; 0xf6700
+ jmp short 06747h ; eb 43 ; 0xf6702
+ test ax, ax ; 85 c0 ; 0xf6704
+ jne short 06747h ; 75 3f ; 0xf6706
+ xor ax, ax ; 31 c0 ; 0xf6708 system.c:367
+ call 06635h ; e8 28 ff ; 0xf670a
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf670d system.c:368
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6711 system.c:369
+ jmp near 067fch ; e9 e4 00 ; 0xf6715 system.c:370
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6718 system.c:372
+ jmp short 0670ah ; eb ed ; 0xf671b
+ mov dx, 00092h ; ba 92 00 ; 0xf671d system.c:377
+ in AL, DX ; ec ; 0xf6720
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6721
+ shr ax, 1 ; d1 e8 ; 0xf6723
+ and ax, strict word 00001h ; 25 01 00 ; 0xf6725
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf6728
+ mov dl, al ; 88 c2 ; 0xf672b
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf672d
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6730 system.c:378
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf6734 system.c:379
+ jmp near 067fch ; e9 c2 00 ; 0xf6737 system.c:380
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf673a system.c:382
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf673e system.c:383
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf6741 system.c:384
+ jmp near 067fch ; e9 b5 00 ; 0xf6744 system.c:385
+ mov bx, 00f24h ; bb 24 0f ; 0xf6747 system.c:387
+ mov cx, ds ; 8c d9 ; 0xf674a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf674c
+ call 019e2h ; e8 90 b2 ; 0xf674f
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6752
+ xor ah, ah ; 30 e4 ; 0xf6755
+ push ax ; 50 ; 0xf6757
+ push 00878h ; 68 78 08 ; 0xf6758
+ push strict byte 00004h ; 6a 04 ; 0xf675b
+ call 01a23h ; e8 c3 b2 ; 0xf675d
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6760
+ jmp near 06916h ; e9 b0 01 ; 0xf6763
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6766 system.c:419
+ jne short 067ceh ; 75 62 ; 0xf676a
+ mov bx, 000a0h ; bb a0 00 ; 0xf676c system.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf676f
+ mov es, ax ; 8e c0 ; 0xf6772
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6774
+ test AL, strict byte 001h ; a8 01 ; 0xf6777 system.c:39
+ jne short 067c5h ; 75 4a ; 0xf6779
+ mov DL, strict byte 001h ; b2 01 ; 0xf677b system.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf677d system.c:43
+ mov bx, 00098h ; bb 98 00 ; 0xf6780 system.c:51
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf6783
+ mov word [es:bx], dx ; 26 89 17 ; 0xf6786 system.c:53
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6789 system.c:51
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf678c
+ mov word [es:bx], dx ; 26 89 17 ; 0xf678f system.c:53
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6792 system.c:51
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf6795
+ mov word [es:bx], dx ; 26 89 17 ; 0xf6798 system.c:53
+ mov bx, 0009eh ; bb 9e 00 ; 0xf679b system.c:51
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf679e
+ mov word [es:bx], dx ; 26 89 17 ; 0xf67a1 system.c:53
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf67a4 system.c:428
+ mov dx, 000a1h ; ba a1 00 ; 0xf67a8 system.c:429
+ in AL, DX ; ec ; 0xf67ab
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf67ac
+ and AL, strict byte 0feh ; 24 fe ; 0xf67ae system.c:430
+ out DX, AL ; ee ; 0xf67b0
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf67b1 system.c:431
+ call 01765h ; e8 ae af ; 0xf67b4
+ or AL, strict byte 040h ; 0c 40 ; 0xf67b7 system.c:432
+ movzx dx, al ; 0f b6 d0 ; 0xf67b9
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf67bc
+ call 01782h ; e8 c0 af ; 0xf67bf
+ jmp near 067fch ; e9 37 00 ; 0xf67c2 system.c:433
+ mov word [bp+018h], si ; 89 76 18 ; 0xf67c5 system.c:436
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf67c8 system.c:437
+ jmp near 067fch ; e9 2e 00 ; 0xf67cb system.c:439
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf67ce
+ jne short 067edh ; 75 1a ; 0xf67d1
+ mov bx, 000a0h ; bb a0 00 ; 0xf67d3 system.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf67d6
+ mov es, ax ; 8e c0 ; 0xf67d9
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf67db
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf67df system.c:442
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf67e3 system.c:443
+ call 01765h ; e8 7c af ; 0xf67e6
+ and AL, strict byte 0bfh ; 24 bf ; 0xf67e9 system.c:444
+ jmp short 067b9h ; eb cc ; 0xf67eb
+ mov word [bp+018h], si ; 89 76 18 ; 0xf67ed system.c:447
+ mov ax, dx ; 89 d0 ; 0xf67f0 system.c:449
+ xor ah, dh ; 30 f4 ; 0xf67f2
+ xor dl, dl ; 30 d2 ; 0xf67f4
+ dec ax ; 48 ; 0xf67f6
+ or dx, ax ; 09 c2 ; 0xf67f7
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf67f9
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf67fc system.c:452
+ pop di ; 5f ; 0xf67ff
+ pop si ; 5e ; 0xf6800
+ pop bp ; 5d ; 0xf6801
+ retn ; c3 ; 0xf6802
+ sti ; fb ; 0xf6803 system.c:458
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf6804 system.c:459
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6807
+ call 065f2h ; e8 e5 fd ; 0xf680a
+ jmp short 067fch ; eb ed ; 0xf680d system.c:460
+ mov ax, strict word 00031h ; b8 31 00 ; 0xf680f system.c:465
+ call 01765h ; e8 50 af ; 0xf6812
+ movzx dx, al ; 0f b6 d0 ; 0xf6815
+ sal dx, 008h ; c1 e2 08 ; 0xf6818
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf681b
+ call 01765h ; e8 44 af ; 0xf681e
+ xor ah, ah ; 30 e4 ; 0xf6821
+ or dx, ax ; 09 c2 ; 0xf6823
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6825
+ cmp dx, strict byte 0ffc0h ; 83 fa c0 ; 0xf6828 system.c:470
+ jbe short 06832h ; 76 05 ; 0xf682b
+ mov word [bp+012h], strict word 0ffc0h ; c7 46 12 c0 ff ; 0xf682d system.c:471
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6832 system.c:480
+ jmp short 067fch ; eb c4 ; 0xf6836 system.c:485
+ cli ; fa ; 0xf6838 system.c:494
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6839 system.c:496
+ call 06635h ; e8 f6 fd ; 0xf683c
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf683f system.c:499
+ add bx, strict byte 00038h ; 83 c3 38 ; 0xf6842
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6845 system.c:51
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6848
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf684d system.c:500
+ add bx, strict byte 0003ah ; 83 c3 3a ; 0xf6850
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6853 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6856 system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf685b system.c:501
+ add bx, strict byte 0003ch ; 83 c3 3c ; 0xf685e
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6861 system.c:41
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf6864
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6868 system.c:502
+ add bx, strict byte 0003dh ; 83 c3 3d ; 0xf686b
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf686e system.c:41
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6871
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6875 system.c:503
+ add bx, strict byte 0003eh ; 83 c3 3e ; 0xf6878
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf687b system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf687e
+ mov AL, strict byte 011h ; b0 11 ; 0xf6883 system.c:506
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf6885
+ out DX, AL ; ee ; 0xf6888
+ mov dx, 000a0h ; ba a0 00 ; 0xf6889 system.c:507
+ out DX, AL ; ee ; 0xf688c
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf688d system.c:508
+ shr ax, 008h ; c1 e8 08 ; 0xf6890
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6893
+ out DX, AL ; ee ; 0xf6896
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6897 system.c:509
+ mov dx, 000a1h ; ba a1 00 ; 0xf689a
+ out DX, AL ; ee ; 0xf689d
+ mov AL, strict byte 004h ; b0 04 ; 0xf689e system.c:510
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf68a0
+ out DX, AL ; ee ; 0xf68a3
+ mov AL, strict byte 002h ; b0 02 ; 0xf68a4 system.c:511
+ mov dx, 000a1h ; ba a1 00 ; 0xf68a6
+ out DX, AL ; ee ; 0xf68a9
+ mov AL, strict byte 001h ; b0 01 ; 0xf68aa system.c:512
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf68ac
+ out DX, AL ; ee ; 0xf68af
+ mov dx, 000a1h ; ba a1 00 ; 0xf68b0 system.c:513
+ out DX, AL ; ee ; 0xf68b3
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf68b4 system.c:515
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf68b6
+ out DX, AL ; ee ; 0xf68b9
+ mov dx, 000a1h ; ba a1 00 ; 0xf68ba system.c:516
+ out DX, AL ; ee ; 0xf68bd
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf68be system.c:518
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf68c1
+ lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf68c6
+ push strict byte 00038h ; 6a 38 ; 0xf68cb
+ call 068d0h ; e8 00 00 ; 0xf68cd
+ pop ax ; 58 ; 0xf68d0
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf68d1
+ push ax ; 50 ; 0xf68d4
+ smsw ax ; 0f 01 e0 ; 0xf68d5
+ or AL, strict byte 001h ; 0c 01 ; 0xf68d8
+ lmsw ax ; 0f 01 f0 ; 0xf68da
+ retf ; cb ; 0xf68dd
+ mov ax, strict word 00018h ; b8 18 00 ; 0xf68de
+ mov ds, ax ; 8e d8 ; 0xf68e1
+ add AL, strict byte 008h ; 04 08 ; 0xf68e3
+ mov es, ax ; 8e c0 ; 0xf68e5
+ add AL, strict byte 008h ; 04 08 ; 0xf68e7
+ mov ss, ax ; 8e d0 ; 0xf68e9
+ lea ax, [bp+004h] ; 8d 46 04 ; 0xf68eb system.c:519
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xf68ee
+ popaw ; 61 ; 0xf68f0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf68f1
+ pop cx ; 59 ; 0xf68f4
+ pop ax ; 58 ; 0xf68f5
+ pop ax ; 58 ; 0xf68f6
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf68f7
+ push ax ; 50 ; 0xf68fa
+ push cx ; 51 ; 0xf68fb
+ retf ; cb ; 0xf68fc
+ jmp near 067fch ; e9 fc fe ; 0xf68fd system.c:525
+ mov bx, 00f24h ; bb 24 0f ; 0xf6900 system.c:532
+ mov cx, ds ; 8c d9 ; 0xf6903
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6905
+ call 019e2h ; e8 d7 b0 ; 0xf6908
+ push 008b8h ; 68 b8 08 ; 0xf690b
+ push strict byte 00004h ; 6a 04 ; 0xf690e
+ call 01a23h ; e8 10 b1 ; 0xf6910
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf6913
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6916
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf691a
+ xor ah, ah ; 30 e4 ; 0xf691d
+ or ah, 086h ; 80 cc 86 ; 0xf691f
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6922
+ jmp near 067fch ; e9 d4 fe ; 0xf6925
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf6928 system.c:538
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf692b system.c:539
+ mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf692e system.c:540
+ mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf6933 system.c:541
+ jmp near 067fch ; e9 c1 fe ; 0xf6938 system.c:542
+ mov si, strict word 0000eh ; be 0e 00 ; 0xf693b system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf693e
+ mov es, ax ; 8e c0 ; 0xf6941
+ mov ax, word [es:si] ; 26 8b 04 ; 0xf6943
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf6946 system.c:49
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf6949 system.c:546
+ jmp near 067fch ; e9 ad fe ; 0xf694c system.c:547
+ push 008e7h ; 68 e7 08 ; 0xf694f system.c:550
+ push strict byte 00008h ; 6a 08 ; 0xf6952
+ jmp short 06910h ; eb ba ; 0xf6954
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6956 system.c:562
+ jne short 06975h ; 75 19 ; 0xf695a
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf695c system.c:564
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf695f system.c:565
+ xor ah, ah ; 30 e4 ; 0xf6962
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6964
+ jc short 0696eh ; 72 05 ; 0xf6967
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6969
+ jbe short 06949h ; 76 db ; 0xf696c
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf696e system.c:568
+ jmp near 067fch ; e9 87 fe ; 0xf6972 system.c:569
+ mov bx, 00f24h ; bb 24 0f ; 0xf6975 system.c:573
+ mov cx, ds ; 8c d9 ; 0xf6978
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf697a
+ call 019e2h ; e8 62 b0 ; 0xf697d
+ push word [bp+00ch] ; ff 76 0c ; 0xf6980
+ push word [bp+012h] ; ff 76 12 ; 0xf6983
+ push 008feh ; 68 fe 08 ; 0xf6986
+ push strict byte 00004h ; 6a 04 ; 0xf6989
+ call 01a23h ; e8 95 b0 ; 0xf698b
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf698e
+ jmp short 06916h ; eb 83 ; 0xf6991
+ ; disGetNextSymbol 0xf6993 LB 0x49b9 -> off=0x0 cb=0000000000000057 uValue=00000000000f5393 'set_e820_range'
+set_e820_range: ; 0xf6993 LB 0x57
+ push si ; 56 ; 0xf6993 system.c:590
+ push bp ; 55 ; 0xf6994
+ mov bp, sp ; 89 e5 ; 0xf6995
+ mov es, ax ; 8e c0 ; 0xf6997
+ mov si, dx ; 89 d6 ; 0xf6999
+ mov word [es:si], bx ; 26 89 1c ; 0xf699b system.c:596
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf699e
+ movzx ax, byte [bp+00ah] ; 0f b6 46 0a ; 0xf69a2 system.c:597
+ mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf69a6
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf69aa
+ sub word [bp+006h], bx ; 29 5e 06 ; 0xf69b0 system.c:598
+ sbb word [bp+008h], cx ; 19 4e 08 ; 0xf69b3
+ mov al, byte [bp+00ah] ; 8a 46 0a ; 0xf69b6 system.c:599
+ sub byte [bp+00ch], al ; 28 46 0c ; 0xf69b9
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf69bc system.c:600
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf69bf
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xf69c3
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf69c6
+ movzx ax, byte [bp+00ch] ; 0f b6 46 0c ; 0xf69ca system.c:601
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf69ce
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf69d2
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf69d8 system.c:602
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf69db
+ mov word [es:si+012h], strict word 00000h ; 26 c7 44 12 00 00 ; 0xf69df
+ pop bp ; 5d ; 0xf69e5 system.c:603
+ pop si ; 5e ; 0xf69e6
+ retn 0000ah ; c2 0a 00 ; 0xf69e7
+ ; disGetNextSymbol 0xf69ea LB 0x4962 -> off=0x14 cb=0000000000000381 uValue=00000000000f53fe 'int15_function32'
+ db 065h, 06bh, 09bh, 06bh, 0bdh, 06bh, 0deh, 06bh, 0fdh, 06bh, 01eh, 06ch, 042h, 06ch, 066h, 06ch
+ db 0a8h, 06ch, 0d5h, 06ch
+int15_function32: ; 0xf69fe LB 0x381
+ push bp ; 55 ; 0xf69fe system.c:605
+ mov bp, sp ; 89 e5 ; 0xf69ff
+ push si ; 56 ; 0xf6a01
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf6a02
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6a05 system.c:614
+ shr ax, 008h ; c1 e8 08 ; 0xf6a08
+ cmp ax, 000e8h ; 3d e8 00 ; 0xf6a0b
+ je near 06a84h ; 0f 84 72 00 ; 0xf6a0e
+ cmp ax, 000d0h ; 3d d0 00 ; 0xf6a12
+ jne near 06d4fh ; 0f 85 36 03 ; 0xf6a15
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6a19 system.c:616
+ xor ah, ah ; 30 e4 ; 0xf6a1c
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf6a1e
+ jne near 06d4fh ; 0f 85 2a 03 ; 0xf6a21
+ cmp word [bp+016h], 05052h ; 81 7e 16 52 50 ; 0xf6a25 system.c:618
+ jne near 06d4fh ; 0f 85 21 03 ; 0xf6a2a
+ cmp word [bp+014h], 04f43h ; 81 7e 14 43 4f ; 0xf6a2e
+ jne near 06d4fh ; 0f 85 18 03 ; 0xf6a33
+ cmp word [bp+01eh], 04d4fh ; 81 7e 1e 4f 4d ; 0xf6a37
+ jne near 06d4fh ; 0f 85 0f 03 ; 0xf6a3c
+ cmp word [bp+01ch], 04445h ; 81 7e 1c 45 44 ; 0xf6a40
+ jne near 06d4fh ; 0f 85 06 03 ; 0xf6a45
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6a49
+ or ax, word [bp+008h] ; 0b 46 08 ; 0xf6a4c
+ jne near 06d4fh ; 0f 85 fc 02 ; 0xf6a4f
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf6a53
+ or ax, word [bp+004h] ; 0b 46 04 ; 0xf6a56
+ jne near 06d4fh ; 0f 85 f2 02 ; 0xf6a59
+ and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6a5d system.c:620
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf6a61 system.c:621
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf6a64
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6a67
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf6a6a
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf6a6d system.c:622
+ mov word [bp+004h], ax ; 89 46 04 ; 0xf6a70
+ mov ax, word [bp+01eh] ; 8b 46 1e ; 0xf6a73
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf6a76
+ mov dword [bp+020h], strict dword 049413332h ; 66 c7 46 20 32 33 41 49 ; 0xf6a79 system.c:623
+ jmp near 06d79h ; e9 f5 02 ; 0xf6a81 system.c:627
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6a84 system.c:630
+ xor ah, ah ; 30 e4 ; 0xf6a87
+ cmp ax, strict word 00020h ; 3d 20 00 ; 0xf6a89
+ je short 06a98h ; 74 0a ; 0xf6a8c
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6a8e
+ je near 06d02h ; 0f 84 6d 02 ; 0xf6a91
+ jmp near 06d4fh ; e9 b7 02 ; 0xf6a95
+ cmp word [bp+01ah], 0534dh ; 81 7e 1a 4d 53 ; 0xf6a98 system.c:632
+ jne near 06d4fh ; 0f 85 ae 02 ; 0xf6a9d
+ cmp word [bp+018h], 04150h ; 81 7e 18 50 41 ; 0xf6aa1
+ jne near 06d4fh ; 0f 85 a5 02 ; 0xf6aa6
+ mov ax, strict word 00035h ; b8 35 00 ; 0xf6aaa system.c:633
+ call 01765h ; e8 b5 ac ; 0xf6aad
+ movzx bx, al ; 0f b6 d8 ; 0xf6ab0
+ xor dx, dx ; 31 d2 ; 0xf6ab3
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf6ab5 system.c:634
+ sal bx, 1 ; d1 e3 ; 0xf6ab8
+ rcl dx, 1 ; d1 d2 ; 0xf6aba
+ loop 06ab8h ; e2 fa ; 0xf6abc
+ mov ax, strict word 00034h ; b8 34 00 ; 0xf6abe system.c:635
+ call 01765h ; e8 a1 ac ; 0xf6ac1
+ xor ah, ah ; 30 e4 ; 0xf6ac4
+ mov dx, bx ; 89 da ; 0xf6ac6
+ or dx, ax ; 09 c2 ; 0xf6ac8
+ xor bx, bx ; 31 db ; 0xf6aca system.c:644
+ add bx, bx ; 01 db ; 0xf6acc
+ adc dx, 00100h ; 81 d2 00 01 ; 0xf6ace
+ cmp dx, 00100h ; 81 fa 00 01 ; 0xf6ad2 system.c:646
+ jc short 06adeh ; 72 06 ; 0xf6ad6
+ jne short 06b0bh ; 75 31 ; 0xf6ad8
+ test bx, bx ; 85 db ; 0xf6ada
+ jnbe short 06b0bh ; 77 2d ; 0xf6adc
+ mov ax, strict word 00031h ; b8 31 00 ; 0xf6ade system.c:647
+ call 01765h ; e8 81 ac ; 0xf6ae1
+ movzx bx, al ; 0f b6 d8 ; 0xf6ae4
+ xor dx, dx ; 31 d2 ; 0xf6ae7
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf6ae9 system.c:648
+ sal bx, 1 ; d1 e3 ; 0xf6aec
+ rcl dx, 1 ; d1 d2 ; 0xf6aee
+ loop 06aech ; e2 fa ; 0xf6af0
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf6af2 system.c:649
+ call 01765h ; e8 6d ac ; 0xf6af5
+ xor ah, ah ; 30 e4 ; 0xf6af8
+ or bx, ax ; 09 c3 ; 0xf6afa
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf6afc system.c:650
+ sal bx, 1 ; d1 e3 ; 0xf6aff
+ rcl dx, 1 ; d1 d2 ; 0xf6b01
+ loop 06affh ; e2 fa ; 0xf6b03
+ add bx, strict byte 00000h ; 83 c3 00 ; 0xf6b05 system.c:651
+ adc dx, strict byte 00010h ; 83 d2 10 ; 0xf6b08
+ mov ax, strict word 00062h ; b8 62 00 ; 0xf6b0b system.c:655
+ call 01765h ; e8 54 ac ; 0xf6b0e
+ xor ah, ah ; 30 e4 ; 0xf6b11
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6b13
+ xor al, al ; 30 c0 ; 0xf6b16
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6b18
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf6b1b system.c:656
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf6b1e
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf6b21
+ loop 06b1eh ; e2 f8 ; 0xf6b24
+ mov ax, strict word 00061h ; b8 61 00 ; 0xf6b26 system.c:657
+ call 01765h ; e8 39 ac ; 0xf6b29
+ xor ah, ah ; 30 e4 ; 0xf6b2c
+ or word [bp-00ah], ax ; 09 46 f6 ; 0xf6b2e
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf6b31 system.c:658
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6b34
+ mov word [bp-00ah], strict word 00000h ; c7 46 f6 00 00 ; 0xf6b37
+ mov ax, strict word 00063h ; b8 63 00 ; 0xf6b3c system.c:659
+ call 01765h ; e8 23 ac ; 0xf6b3f
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6b42
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6b45
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf6b48 system.c:665
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf6b4b
+ jnbe near 06d4fh ; 0f 87 fd 01 ; 0xf6b4e
+ mov si, ax ; 89 c6 ; 0xf6b52
+ add si, ax ; 01 c6 ; 0xf6b54
+ mov cx, bx ; 89 d9 ; 0xf6b56
+ add cx, strict byte 00000h ; 83 c1 00 ; 0xf6b58
+ mov ax, dx ; 89 d0 ; 0xf6b5b
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf6b5d
+ jmp word [cs:si+069eah] ; 2e ff a4 ea 69 ; 0xf6b60
+ push strict byte 00001h ; 6a 01 ; 0xf6b65 system.c:668
+ push dword 000000000h ; 66 6a 00 ; 0xf6b67
+ push strict byte 00009h ; 6a 09 ; 0xf6b6a
+ push 0fc00h ; 68 00 fc ; 0xf6b6c
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b6f
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b72
+ xor bx, bx ; 31 db ; 0xf6b75
+ xor cx, cx ; 31 c9 ; 0xf6b77
+ call 06993h ; e8 17 fe ; 0xf6b79
+ mov dword [bp+014h], strict dword 000000001h ; 66 c7 46 14 01 00 00 00 ; 0xf6b7c system.c:670
+ mov dword [bp+020h], strict dword 0534d4150h ; 66 c7 46 20 50 41 4d 53 ; 0xf6b84 system.c:671
+ mov dword [bp+01ch], strict dword 000000014h ; 66 c7 46 1c 14 00 00 00 ; 0xf6b8c
+ and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6b94
+ jmp near 06d79h ; e9 de 01 ; 0xf6b98
+ push strict byte 00002h ; 6a 02 ; 0xf6b9b system.c:673
+ push dword 000000000h ; 66 6a 00 ; 0xf6b9d
+ push strict byte 0000ah ; 6a 0a ; 0xf6ba0
+ push strict byte 00000h ; 6a 00 ; 0xf6ba2
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6ba4
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6ba7
+ mov bx, 0fc00h ; bb 00 fc ; 0xf6baa
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf6bad
+ call 06993h ; e8 e0 fd ; 0xf6bb0
+ mov dword [bp+014h], strict dword 000000002h ; 66 c7 46 14 02 00 00 00 ; 0xf6bb3 system.c:675
+ jmp short 06b84h ; eb c7 ; 0xf6bbb system.c:676
+ push strict byte 00002h ; 6a 02 ; 0xf6bbd system.c:689
+ push dword 000000000h ; 66 6a 00 ; 0xf6bbf
+ push strict byte 00010h ; 6a 10 ; 0xf6bc2
+ push strict byte 00000h ; 6a 00 ; 0xf6bc4
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6bc6
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6bc9
+ xor bx, bx ; 31 db ; 0xf6bcc
+ mov cx, strict word 0000fh ; b9 0f 00 ; 0xf6bce
+ call 06993h ; e8 bf fd ; 0xf6bd1
+ mov dword [bp+014h], strict dword 000000003h ; 66 c7 46 14 03 00 00 00 ; 0xf6bd4 system.c:691
+ jmp short 06b84h ; eb a6 ; 0xf6bdc system.c:692
+ push strict byte 00001h ; 6a 01 ; 0xf6bde system.c:694
+ push dword 000000000h ; 66 6a 00 ; 0xf6be0
+ push ax ; 50 ; 0xf6be3
+ push cx ; 51 ; 0xf6be4
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6be5
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6be8
+ xor bx, bx ; 31 db ; 0xf6beb
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf6bed
+ call 06993h ; e8 a0 fd ; 0xf6bf0
+ mov dword [bp+014h], strict dword 000000004h ; 66 c7 46 14 04 00 00 00 ; 0xf6bf3 system.c:697
+ jmp short 06b84h ; eb 87 ; 0xf6bfb system.c:698
+ push strict byte 00003h ; 6a 03 ; 0xf6bfd system.c:700
+ push dword 000000000h ; 66 6a 00 ; 0xf6bff
+ push dx ; 52 ; 0xf6c02
+ push bx ; 53 ; 0xf6c03
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6c04
+ mov si, word [bp+024h] ; 8b 76 24 ; 0xf6c07
+ mov bx, cx ; 89 cb ; 0xf6c0a
+ mov cx, ax ; 89 c1 ; 0xf6c0c
+ mov ax, si ; 89 f0 ; 0xf6c0e
+ call 06993h ; e8 80 fd ; 0xf6c10
+ mov dword [bp+014h], strict dword 000000005h ; 66 c7 46 14 05 00 00 00 ; 0xf6c13 system.c:703
+ jmp near 06b84h ; e9 66 ff ; 0xf6c1b system.c:704
+ push strict byte 00002h ; 6a 02 ; 0xf6c1e system.c:706
+ push dword 000000000h ; 66 6a 00 ; 0xf6c20
+ push 0fec0h ; 68 c0 fe ; 0xf6c23
+ push 01000h ; 68 00 10 ; 0xf6c26
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6c29
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6c2c
+ xor bx, bx ; 31 db ; 0xf6c2f
+ mov cx, 0fec0h ; b9 c0 fe ; 0xf6c31
+ call 06993h ; e8 5c fd ; 0xf6c34
+ mov dword [bp+014h], strict dword 000000006h ; 66 c7 46 14 06 00 00 00 ; 0xf6c37 system.c:709
+ jmp near 06b84h ; e9 42 ff ; 0xf6c3f system.c:710
+ push strict byte 00002h ; 6a 02 ; 0xf6c42 system.c:712
+ push dword 000000000h ; 66 6a 00 ; 0xf6c44
+ push 0fee0h ; 68 e0 fe ; 0xf6c47
+ push 01000h ; 68 00 10 ; 0xf6c4a
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6c4d
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6c50
+ xor bx, bx ; 31 db ; 0xf6c53
+ mov cx, 0fee0h ; b9 e0 fe ; 0xf6c55
+ call 06993h ; e8 38 fd ; 0xf6c58
+ mov dword [bp+014h], strict dword 000000007h ; 66 c7 46 14 07 00 00 00 ; 0xf6c5b system.c:715
+ jmp near 06b84h ; e9 1e ff ; 0xf6c63 system.c:716
+ push strict byte 00002h ; 6a 02 ; 0xf6c66 system.c:721
+ push dword 000000000h ; 66 6a 00 ; 0xf6c68
+ push dword 000000000h ; 66 6a 00 ; 0xf6c6b
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6c6e
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6c71
+ xor bx, bx ; 31 db ; 0xf6c74
+ mov cx, strict word 0fffch ; b9 fc ff ; 0xf6c76
+ call 06993h ; e8 17 fd ; 0xf6c79
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf6c7c
+ jne short 06c89h ; 75 07 ; 0xf6c80
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6c82
+ test ax, ax ; 85 c0 ; 0xf6c85
+ je short 06c9fh ; 74 16 ; 0xf6c87
+ mov dword [bp+014h], strict dword 000000009h ; 66 c7 46 14 09 00 00 00 ; 0xf6c89
+ jmp near 06b84h ; e9 f0 fe ; 0xf6c91
+ mov dword [bp+014h], strict dword 000000008h ; 66 c7 46 14 08 00 00 00 ; 0xf6c94 system.c:724
+ jmp near 06b84h ; e9 e5 fe ; 0xf6c9c system.c:725
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf6c9f system.c:730
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6ca2
+ jmp near 06b84h ; e9 dc fe ; 0xf6ca5 system.c:732
+ push strict byte 00002h ; 6a 02 ; 0xf6ca8 system.c:735
+ push dword 000000000h ; 66 6a 00 ; 0xf6caa
+ push dword 000000000h ; 66 6a 00 ; 0xf6cad
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6cb0
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6cb3
+ xor bx, bx ; 31 db ; 0xf6cb6
+ xor cx, cx ; 31 c9 ; 0xf6cb8
+ call 06993h ; e8 d6 fc ; 0xf6cba
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf6cbd system.c:738
+ jne short 06ccah ; 75 07 ; 0xf6cc1
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6cc3
+ test ax, ax ; 85 c0 ; 0xf6cc6
+ je short 06ccch ; 74 02 ; 0xf6cc8
+ jmp short 06c89h ; eb bd ; 0xf6cca
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf6ccc system.c:741
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6ccf
+ jmp near 06b84h ; e9 af fe ; 0xf6cd2 system.c:742
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf6cd5 system.c:749
+ jne short 06ce1h ; 75 06 ; 0xf6cd9
+ cmp word [bp-008h], strict byte 00000h ; 83 7e f8 00 ; 0xf6cdb
+ je short 06d4fh ; 74 6e ; 0xf6cdf
+ push strict byte 00001h ; 6a 01 ; 0xf6ce1 system.c:751
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6ce3
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf6ce6
+ xor ah, ah ; 30 e4 ; 0xf6ce8
+ push ax ; 50 ; 0xf6cea
+ push strict byte 00001h ; 6a 01 ; 0xf6ceb
+ push dword [bp-00ah] ; 66 ff 76 f6 ; 0xf6ced
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6cf1
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6cf4
+ xor bx, bx ; 31 db ; 0xf6cf7
+ xor cx, cx ; 31 c9 ; 0xf6cf9
+ call 06993h ; e8 95 fc ; 0xf6cfb
+ xor ax, ax ; 31 c0 ; 0xf6cfe system.c:754
+ jmp short 06ccch ; eb ca ; 0xf6d00
+ and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6d02 system.c:773
+ mov ax, strict word 00031h ; b8 31 00 ; 0xf6d06 system.c:783
+ call 01765h ; e8 59 aa ; 0xf6d09
+ xor ah, ah ; 30 e4 ; 0xf6d0c
+ mov dx, ax ; 89 c2 ; 0xf6d0e
+ sal dx, 008h ; c1 e2 08 ; 0xf6d10
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf6d13
+ call 01765h ; e8 4c aa ; 0xf6d16
+ xor ah, ah ; 30 e4 ; 0xf6d19
+ or dx, ax ; 09 c2 ; 0xf6d1b
+ mov word [bp+01ch], dx ; 89 56 1c ; 0xf6d1d
+ cmp dx, 03c00h ; 81 fa 00 3c ; 0xf6d20 system.c:786
+ jbe short 06d2bh ; 76 05 ; 0xf6d24
+ mov word [bp+01ch], 03c00h ; c7 46 1c 00 3c ; 0xf6d26 system.c:787
+ mov ax, strict word 00035h ; b8 35 00 ; 0xf6d2b system.c:790
+ call 01765h ; e8 34 aa ; 0xf6d2e
+ movzx dx, al ; 0f b6 d0 ; 0xf6d31
+ sal dx, 008h ; c1 e2 08 ; 0xf6d34
+ mov ax, strict word 00034h ; b8 34 00 ; 0xf6d37
+ call 01765h ; e8 28 aa ; 0xf6d3a
+ xor ah, ah ; 30 e4 ; 0xf6d3d
+ or dx, ax ; 09 c2 ; 0xf6d3f
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf6d41
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf6d44 system.c:793
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf6d47
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf6d4a system.c:794
+ jmp short 06d79h ; eb 2a ; 0xf6d4d system.c:799
+ mov bx, 00f24h ; bb 24 0f ; 0xf6d4f system.c:804
+ mov cx, ds ; 8c d9 ; 0xf6d52
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6d54
+ call 019e2h ; e8 88 ac ; 0xf6d57
+ push word [bp+014h] ; ff 76 14 ; 0xf6d5a
+ push word [bp+020h] ; ff 76 20 ; 0xf6d5d
+ push 008feh ; 68 fe 08 ; 0xf6d60
+ push strict byte 00004h ; 6a 04 ; 0xf6d63
+ call 01a23h ; e8 bb ac ; 0xf6d65
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6d68
+ or byte [bp+028h], 001h ; 80 4e 28 01 ; 0xf6d6b system.c:805
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6d6f system.c:806
+ xor al, al ; 30 c0 ; 0xf6d72
+ or AL, strict byte 086h ; 0c 86 ; 0xf6d74
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf6d76
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6d79 system.c:809
+ pop si ; 5e ; 0xf6d7c
+ pop bp ; 5d ; 0xf6d7d
+ retn ; c3 ; 0xf6d7e
+ ; disGetNextSymbol 0xf6d7f LB 0x45cd -> off=0x0 cb=0000000000000156 uValue=00000000000f577f 'int15_blkmove'
+int15_blkmove: ; 0xf6d7f LB 0x156
+ push bp ; 55 ; 0xf6d7f system.c:818
+ mov bp, sp ; 89 e5 ; 0xf6d80
+ push si ; 56 ; 0xf6d82
+ push di ; 57 ; 0xf6d83
+ cli ; fa ; 0xf6d84 system.c:828
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6d85 system.c:830
+ call 06635h ; e8 aa f8 ; 0xf6d88
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6d8b system.c:853
+ sal bx, 004h ; c1 e3 04 ; 0xf6d8e
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6d91
+ add ax, bx ; 01 d8 ; 0xf6d94
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf6d96 system.c:854
+ shr dx, 00ch ; c1 ea 0c ; 0xf6d99
+ mov cl, dl ; 88 d1 ; 0xf6d9c
+ cmp ax, bx ; 39 d8 ; 0xf6d9e system.c:855
+ jnc short 06da4h ; 73 02 ; 0xf6da0
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf6da2 system.c:856
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6da4 system.c:857
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf6da7
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6daa system.c:51
+ mov word [es:bx], strict word 0002fh ; 26 c7 07 2f 00 ; 0xf6dad
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6db2 system.c:858
+ add bx, strict byte 0000ah ; 83 c3 0a ; 0xf6db5
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6db8 system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dbb system.c:859
+ add bx, strict byte 0000ch ; 83 c3 0c ; 0xf6dbe
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf6dc1 system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dc4 system.c:860
+ add bx, strict byte 0000dh ; 83 c3 0d ; 0xf6dc7
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6dca system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dce system.c:861
+ add bx, strict byte 0000eh ; 83 c3 0e ; 0xf6dd1
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6dd4 system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dd9 system.c:864
+ add bx, strict byte 00020h ; 83 c3 20 ; 0xf6ddc
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6ddf system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6de4 system.c:865
+ add bx, strict byte 00022h ; 83 c3 22 ; 0xf6de7
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6dea system.c:53
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6def system.c:866
+ add bx, strict byte 00024h ; 83 c3 24 ; 0xf6df2
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf6df5 system.c:41
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6df9 system.c:867
+ add bx, strict byte 00025h ; 83 c3 25 ; 0xf6dfc
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6dff system.c:41
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6e03 system.c:868
+ add bx, strict byte 00026h ; 83 c3 26 ; 0xf6e06
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6e09 system.c:51
+ mov ax, ss ; 8c d0 ; 0xf6e0e system.c:871
+ mov cx, ax ; 89 c1 ; 0xf6e10
+ sal ax, 004h ; c1 e0 04 ; 0xf6e12 system.c:872
+ shr cx, 00ch ; c1 e9 0c ; 0xf6e15
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6e18 system.c:874
+ add bx, strict byte 00028h ; 83 c3 28 ; 0xf6e1b
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6e1e system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6e23 system.c:875
+ add bx, strict byte 0002ah ; 83 c3 2a ; 0xf6e26
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6e29 system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6e2c system.c:876
+ add bx, strict byte 0002ch ; 83 c3 2c ; 0xf6e2f
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf6e32 system.c:41
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6e35 system.c:877
+ add bx, strict byte 0002dh ; 83 c3 2d ; 0xf6e38
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6e3b system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6e3f system.c:878
+ add bx, strict byte 0002eh ; 83 c3 2e ; 0xf6e42
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6e45 system.c:53
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf6e4a system.c:884
+ mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf6e4d
+ push DS ; 1e ; 0xf6e50
+ push eax ; 66 50 ; 0xf6e51
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf6e53
+ mov ds, ax ; 8e d8 ; 0xf6e55
+ mov word [00467h], sp ; 89 26 67 04 ; 0xf6e57
+ mov [00469h], ss ; 8c 16 69 04 ; 0xf6e5b
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6e5f system.c:888
+ lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf6e64
+ push strict byte 00020h ; 6a 20 ; 0xf6e6a
+ call 06e6fh ; e8 00 00 ; 0xf6e6c
+ pop ax ; 58 ; 0xf6e6f
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6e70
+ push ax ; 50 ; 0xf6e73
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6e74
+ or AL, strict byte 001h ; 0c 01 ; 0xf6e77
+ mov cr0, eax ; 0f 22 c0 ; 0xf6e79
+ retf ; cb ; 0xf6e7c
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf6e7d
+ mov ds, ax ; 8e d8 ; 0xf6e80
+ add AL, strict byte 008h ; 04 08 ; 0xf6e82
+ mov es, ax ; 8e c0 ; 0xf6e84
+ add AL, strict byte 010h ; 04 10 ; 0xf6e86
+ mov ss, ax ; 8e d0 ; 0xf6e88
+ db 033h, 0f6h
+ ; xor si, si ; 33 f6 ; 0xf6e8a system.c:889
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xf6e8c
+ cld ; fc ; 0xf6e8e
+ rep movsw ; f3 a5 ; 0xf6e8f
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf6e91 system.c:890
+ mov ds, ax ; 8e d8 ; 0xf6e94
+ mov es, ax ; 8e c0 ; 0xf6e96
+ push 0f000h ; 68 00 f0 ; 0xf6e98
+ call 06e9eh ; e8 00 00 ; 0xf6e9b
+ pop ax ; 58 ; 0xf6e9e
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6e9f
+ push ax ; 50 ; 0xf6ea2
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6ea3
+ and AL, strict byte 0feh ; 24 fe ; 0xf6ea6
+ mov cr0, eax ; 0f 22 c0 ; 0xf6ea8
+ retf ; cb ; 0xf6eab
+ lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xf6eac
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf6eb2 system.c:891
+ mov ds, ax ; 8e d8 ; 0xf6eb4
+ mov es, ax ; 8e c0 ; 0xf6eb6
+ lss sp, [00467h] ; 0f b2 26 67 04 ; 0xf6eb8
+ pop eax ; 66 58 ; 0xf6ebd
+ pop DS ; 1f ; 0xf6ebf
+ xor ax, ax ; 31 c0 ; 0xf6ec0 system.c:893
+ call 06635h ; e8 70 f7 ; 0xf6ec2
+ sti ; fb ; 0xf6ec5 system.c:896
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6ec6 system.c:898
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6eca system.c:899
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6ece system.c:900
+ pop di ; 5f ; 0xf6ed1
+ pop si ; 5e ; 0xf6ed2
+ pop bp ; 5d ; 0xf6ed3
+ retn ; c3 ; 0xf6ed4
+ ; disGetNextSymbol 0xf6ed5 LB 0x4477 -> off=0x0 cb=0000000000000195 uValue=00000000000f58d5 'inv_op_handler'
+inv_op_handler: ; 0xf6ed5 LB 0x195
+ push bp ; 55 ; 0xf6ed5 invop.c:237
+ mov bp, sp ; 89 e5 ; 0xf6ed6
+ push si ; 56 ; 0xf6ed8
+ push di ; 57 ; 0xf6ed9
+ push ax ; 50 ; 0xf6eda
+ push ax ; 50 ; 0xf6edb
+ les bx, [bp+018h] ; c4 5e 18 ; 0xf6edc invop.c:239
+ cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6edf invop.c:241
+ jne short 06eebh ; 75 06 ; 0xf6ee3
+ inc word [bp+018h] ; ff 46 18 ; 0xf6ee5 invop.c:243
+ jmp near 07063h ; e9 78 01 ; 0xf6ee8 invop.c:244
+ cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf6eeb
+ jne near 0705fh ; 0f 85 6b 01 ; 0xf6ef0
+ mov si, 00800h ; be 00 08 ; 0xf6ef4 invop.c:246
+ xor ax, ax ; 31 c0 ; 0xf6ef7
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6ef9
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6efc invop.c:249
+ mov es, ax ; 8e c0 ; 0xf6eff invop.c:257
+ mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6f01
+ sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6f05
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6f08
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6f0c invop.c:258
+ mov es, dx ; 8e c2 ; 0xf6f10
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6f12
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6f15 invop.c:259
+ mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6f18
+ mov es, dx ; 8e c2 ; 0xf6f1c
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6f1e
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6f22 invop.c:260
+ mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6f25
+ mov es, dx ; 8e c2 ; 0xf6f29
+ mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6f2b
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6f2f invop.c:263
+ movzx bx, byte [es:si+038h] ; 26 0f b6 5c 38 ; 0xf6f32
+ mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6f37
+ mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6f3b invop.c:264
+ xor dx, dx ; 31 d2 ; 0xf6f3f
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6f41
+ sal ax, 1 ; d1 e0 ; 0xf6f44
+ rcl dx, 1 ; d1 d2 ; 0xf6f46
+ loop 06f44h ; e2 fa ; 0xf6f48
+ cmp bx, dx ; 39 d3 ; 0xf6f4a
+ jne short 06f52h ; 75 04 ; 0xf6f4c
+ cmp di, ax ; 39 c7 ; 0xf6f4e
+ je short 06f57h ; 74 05 ; 0xf6f50
+ mov word [bp-008h], strict word 00001h ; c7 46 f8 01 00 ; 0xf6f52 invop.c:265
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6f57 invop.c:266
+ movzx di, byte [es:si+04ah] ; 26 0f b6 7c 4a ; 0xf6f5a
+ mov bx, word [es:si+048h] ; 26 8b 5c 48 ; 0xf6f5f
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6f63 invop.c:267
+ xor dx, dx ; 31 d2 ; 0xf6f67
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6f69
+ sal ax, 1 ; d1 e0 ; 0xf6f6c
+ rcl dx, 1 ; d1 d2 ; 0xf6f6e
+ loop 06f6ch ; e2 fa ; 0xf6f70
+ cmp di, dx ; 39 d7 ; 0xf6f72
+ jne short 06f7ah ; 75 04 ; 0xf6f74
+ cmp bx, ax ; 39 c3 ; 0xf6f76
+ je short 06f7eh ; 74 04 ; 0xf6f78
+ or byte [bp-008h], 002h ; 80 4e f8 02 ; 0xf6f7a invop.c:268
+ push strict byte 00000h ; 6a 00 ; 0xf6f7e invop.c:271
+ push 00800h ; 68 00 08 ; 0xf6f80
+ push strict byte 0001fh ; 6a 1f ; 0xf6f83
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6f85
+ lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6f87
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f8b
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6f8e invop.c:274
+ mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6f91
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6f95
+ mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6f99 invop.c:275
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6f9d
+ movzx dx, byte [es:si+039h] ; 26 0f b6 54 39 ; 0xf6fa1 invop.c:276
+ sal dx, 008h ; c1 e2 08 ; 0xf6fa6
+ movzx ax, byte [es:si+038h] ; 26 0f b6 44 38 ; 0xf6fa9
+ or dx, ax ; 09 c2 ; 0xf6fae
+ mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6fb0
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6fb4 invop.c:277
+ mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6fba invop.c:280
+ mov word [es:si], ax ; 26 89 04 ; 0xf6fbe
+ mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6fc1 invop.c:281
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6fc5
+ movzx dx, byte [es:si+04bh] ; 26 0f b6 54 4b ; 0xf6fc9 invop.c:282
+ sal dx, 008h ; c1 e2 08 ; 0xf6fce
+ movzx ax, byte [es:si+04ah] ; 26 0f b6 44 4a ; 0xf6fd1
+ or dx, ax ; 09 c2 ; 0xf6fd6
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6fd8
+ movzx ax, byte [es:si+05ch] ; 26 0f b6 44 5c ; 0xf6fdc invop.c:285
+ mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6fe1
+ push ax ; 50 ; 0xf6fe5 invop.c:286
+ push dx ; 52 ; 0xf6fe6
+ push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6fe7
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6feb
+ lidt [ss:bx] ; 36 0f 01 1f ; 0xf6fed
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6ff1
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf6ff4 invop.c:289
+ mov ax, 00080h ; b8 80 00 ; 0xf6ff7
+ mov ss, ax ; 8e d0 ; 0xf6ffa
+ mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6ffc
+ mov ds, ax ; 8e d8 ; 0xf7000
+ mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf7002
+ mov es, ax ; 8e c0 ; 0xf7006
+ smsw ax ; 0f 01 e0 ; 0xf7008 invop.c:290
+ inc ax ; 40 ; 0xf700b
+ lmsw ax ; 0f 01 f0 ; 0xf700c
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf700f
+ test cx, strict word 00001h ; f7 c1 01 00 ; 0xf7012
+ je near 0701ch ; 0f 84 02 00 ; 0xf7016
+ mov es, ax ; 8e c0 ; 0xf701a
+ test cx, strict word 00002h ; f7 c1 02 00 ; 0xf701c
+ je near 07044h ; 0f 84 20 00 ; 0xf7020
+ mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf7024
+ mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf7029
+ mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf702e
+ mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf7033
+ mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf7038
+ mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf703d
+ mov ds, ax ; 8e d8 ; 0xf7042
+ mov eax, cr0 ; 0f 20 c0 ; 0xf7044
+ dec ax ; 48 ; 0xf7047
+ mov cr0, eax ; 0f 22 c0 ; 0xf7048
+ mov sp, strict word 00026h ; bc 26 00 ; 0xf704b invop.c:291
+ popaw ; 61 ; 0xf704e
+ mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf704f
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7054
+ mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf7057
+ iret ; cf ; 0xf705c
+ jmp short 07063h ; eb 04 ; 0xf705d invop.c:343
+ sti ; fb ; 0xf705f invop.c:347
+ hlt ; f4 ; 0xf7060 invop.c:348
+ jmp short 07060h ; eb fd ; 0xf7061
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7063 invop.c:350
+ pop di ; 5f ; 0xf7066
+ pop si ; 5e ; 0xf7067
+ pop bp ; 5d ; 0xf7068
+ retn ; c3 ; 0xf7069
+ ; disGetNextSymbol 0xf706a LB 0x42e2 -> off=0x0 cb=0000000000000028 uValue=00000000000f5a6a 'init_rtc'
+init_rtc: ; 0xf706a LB 0x28
+ push bp ; 55 ; 0xf706a timepci.c:74
+ mov bp, sp ; 89 e5 ; 0xf706b
+ push dx ; 52 ; 0xf706d
+ mov dx, strict word 00026h ; ba 26 00 ; 0xf706e timepci.c:76
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf7071
+ call 01782h ; e8 0b a7 ; 0xf7074
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf7077 timepci.c:77
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf707a
+ call 01782h ; e8 02 a7 ; 0xf707d
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf7080 timepci.c:78
+ call 01765h ; e8 df a6 ; 0xf7083
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf7086 timepci.c:79
+ call 01765h ; e8 d9 a6 ; 0xf7089
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf708c timepci.c:80
+ pop dx ; 5a ; 0xf708f
+ pop bp ; 5d ; 0xf7090
+ retn ; c3 ; 0xf7091
+ ; disGetNextSymbol 0xf7092 LB 0x42ba -> off=0x0 cb=0000000000000021 uValue=00000000000f5a92 'rtc_updating'
+rtc_updating: ; 0xf7092 LB 0x21
+ push bp ; 55 ; 0xf7092 timepci.c:82
+ mov bp, sp ; 89 e5 ; 0xf7093
+ push dx ; 52 ; 0xf7095
+ mov dx, 061a8h ; ba a8 61 ; 0xf7096 timepci.c:95
+ dec dx ; 4a ; 0xf7099 timepci.c:96
+ je short 070aah ; 74 0e ; 0xf709a
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf709c timepci.c:97
+ call 01765h ; e8 c3 a6 ; 0xf709f
+ test AL, strict byte 080h ; a8 80 ; 0xf70a2
+ jne short 07099h ; 75 f3 ; 0xf70a4
+ xor ax, ax ; 31 c0 ; 0xf70a6 timepci.c:98
+ jmp short 070adh ; eb 03 ; 0xf70a8
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf70aa timepci.c:100
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf70ad timepci.c:101
+ pop dx ; 5a ; 0xf70b0
+ pop bp ; 5d ; 0xf70b1
+ retn ; c3 ; 0xf70b2
+ ; disGetNextSymbol 0xf70b3 LB 0x4299 -> off=0x0 cb=0000000000000091 uValue=00000000000f5ab3 'int70_function'
+int70_function: ; 0xf70b3 LB 0x91
+ push bp ; 55 ; 0xf70b3 timepci.c:110
+ mov bp, sp ; 89 e5 ; 0xf70b4
+ push si ; 56 ; 0xf70b6
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf70b7 timepci.c:116
+ call 01765h ; e8 a8 a6 ; 0xf70ba
+ mov bl, al ; 88 c3 ; 0xf70bd
+ mov dh, al ; 88 c6 ; 0xf70bf
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf70c1 timepci.c:117
+ call 01765h ; e8 9e a6 ; 0xf70c4
+ mov dl, al ; 88 c2 ; 0xf70c7
+ test bl, 060h ; f6 c3 60 ; 0xf70c9 timepci.c:119
+ je short 0713bh ; 74 6d ; 0xf70cc
+ test AL, strict byte 020h ; a8 20 ; 0xf70ce timepci.c:120
+ je short 070d6h ; 74 04 ; 0xf70d0
+ sti ; fb ; 0xf70d2 timepci.c:122
+ int 04ah ; cd 4a ; 0xf70d3 timepci.c:123
+ cli ; fa ; 0xf70d5 timepci.c:124
+ test dl, 040h ; f6 c2 40 ; 0xf70d6 timepci.c:126
+ je short 0713bh ; 74 60 ; 0xf70d9
+ mov bx, 000a0h ; bb a0 00 ; 0xf70db timepci.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf70de
+ mov es, ax ; 8e c0 ; 0xf70e1
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf70e3
+ test al, al ; 84 c0 ; 0xf70e6 timepci.c:39
+ je short 0713bh ; 74 51 ; 0xf70e8
+ mov bx, 0009ch ; bb 9c 00 ; 0xf70ea timepci.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf70ed
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf70f0
+ test bx, bx ; 85 db ; 0xf70f4 timepci.c:134
+ jne short 07129h ; 75 31 ; 0xf70f6
+ cmp ax, 003d1h ; 3d d1 03 ; 0xf70f8
+ jnc short 07129h ; 73 2c ; 0xf70fb
+ mov bx, 00098h ; bb 98 00 ; 0xf70fd timepci.c:48
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf7100
+ mov bx, 0009ah ; bb 9a 00 ; 0xf7103 timepci.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf7106
+ mov si, 000a0h ; be a0 00 ; 0xf7109 timepci.c:43
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf710c
+ mov al, dh ; 88 f0 ; 0xf7110 timepci.c:141
+ and AL, strict byte 037h ; 24 37 ; 0xf7112
+ movzx dx, al ; 0f b6 d0 ; 0xf7114
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7117
+ call 01782h ; e8 65 a6 ; 0xf711a
+ mov es, cx ; 8e c1 ; 0xf711d timepci.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf711f
+ or AL, strict byte 080h ; 0c 80 ; 0xf7122 timepci.c:39
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7124 timepci.c:43
+ jmp short 0713bh ; eb 12 ; 0xf7127 timepci.c:143
+ add ax, 0fc2fh ; 05 2f fc ; 0xf7129 timepci.c:145
+ mov dx, bx ; 89 da ; 0xf712c
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf712e
+ mov bx, 0009ch ; bb 9c 00 ; 0xf7131 timepci.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf7134
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf7137
+ call 0e030h ; e8 f2 6e ; 0xf713b timepci.c:151
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf713e timepci.c:152
+ pop si ; 5e ; 0xf7141
+ pop bp ; 5d ; 0xf7142
+ retn ; c3 ; 0xf7143
+ ; disGetNextSymbol 0xf7144 LB 0x4208 -> off=0x10 cb=00000000000001c8 uValue=00000000000f5b54 'int1a_function'
+ db 06bh, 071h, 094h, 071h, 0b9h, 071h, 0ebh, 071h, 03ah, 072h, 072h, 072h, 0b5h, 072h, 00ch, 073h
+int1a_function: ; 0xf7154 LB 0x1c8
+ push bp ; 55 ; 0xf7154 timepci.c:157
+ mov bp, sp ; 89 e5 ; 0xf7155
+ sti ; fb ; 0xf7157 timepci.c:163
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf7158 timepci.c:165
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf715b
+ jnbe near 07190h ; 0f 87 2f 00 ; 0xf715d
+ movzx bx, al ; 0f b6 d8 ; 0xf7161
+ add bx, bx ; 01 db ; 0xf7164
+ jmp word [cs:bx+07144h] ; 2e ff a7 44 71 ; 0xf7166
+ cli ; fa ; 0xf716b timepci.c:167
+ mov bx, 0046eh ; bb 6e 04 ; 0xf716c timepci.c:168
+ xor ax, ax ; 31 c0 ; 0xf716f
+ mov es, ax ; 8e c0 ; 0xf7171
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7173
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf7176
+ mov bx, 0046ch ; bb 6c 04 ; 0xf7179 timepci.c:169
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf717c
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf717f
+ mov bx, 00470h ; bb 70 04 ; 0xf7182 timepci.c:170
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7185
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf7188
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf718b timepci.c:171
+ sti ; fb ; 0xf718f timepci.c:172
+ mov sp, bp ; 89 ec ; 0xf7190 timepci.c:175
+ pop bp ; 5d ; 0xf7192
+ retn ; c3 ; 0xf7193
+ cli ; fa ; 0xf7194 timepci.c:178
+ mov bx, 0046eh ; bb 6e 04 ; 0xf7195 timepci.c:179
+ xor ax, ax ; 31 c0 ; 0xf7198
+ mov es, ax ; 8e c0 ; 0xf719a
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf719c
+ mov word [es:bx], ax ; 26 89 07 ; 0xf719f
+ mov bx, 0046ch ; bb 6c 04 ; 0xf71a2 timepci.c:180
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf71a5
+ mov word [es:bx], ax ; 26 89 07 ; 0xf71a8
+ mov bx, 00470h ; bb 70 04 ; 0xf71ab timepci.c:181
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf71ae
+ sti ; fb ; 0xf71b2 timepci.c:182
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf71b3 timepci.c:183
+ jmp short 07190h ; eb d7 ; 0xf71b7 timepci.c:185
+ call 07092h ; e8 d6 fe ; 0xf71b9 timepci.c:188
+ test ax, ax ; 85 c0 ; 0xf71bc
+ je short 071c2h ; 74 02 ; 0xf71be
+ jmp short 07190h ; eb ce ; 0xf71c0 timepci.c:190
+ xor ax, ax ; 31 c0 ; 0xf71c2 timepci.c:193
+ call 01765h ; e8 9e a5 ; 0xf71c4
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf71c7
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf71ca timepci.c:194
+ call 01765h ; e8 95 a5 ; 0xf71cd
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf71d0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf71d3 timepci.c:195
+ call 01765h ; e8 8c a5 ; 0xf71d6
+ mov bl, al ; 88 c3 ; 0xf71d9
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf71db
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf71de timepci.c:196
+ call 01765h ; e8 81 a5 ; 0xf71e1
+ and AL, strict byte 001h ; 24 01 ; 0xf71e4
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf71e6
+ jmp short 07230h ; eb 45 ; 0xf71e9
+ call 07092h ; e8 a4 fe ; 0xf71eb timepci.c:213
+ test ax, ax ; 85 c0 ; 0xf71ee
+ je short 071f5h ; 74 03 ; 0xf71f0
+ call 0706ah ; e8 75 fe ; 0xf71f2 timepci.c:214
+ movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf71f5 timepci.c:217
+ xor ax, ax ; 31 c0 ; 0xf71f9
+ call 01782h ; e8 84 a5 ; 0xf71fb
+ movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf71fe timepci.c:218
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7202
+ call 01782h ; e8 7a a5 ; 0xf7205
+ movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf7208 timepci.c:219
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf720c
+ call 01782h ; e8 70 a5 ; 0xf720f
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7212 timepci.c:221
+ call 01765h ; e8 4d a5 ; 0xf7215
+ mov bl, al ; 88 c3 ; 0xf7218
+ and bl, 060h ; 80 e3 60 ; 0xf721a
+ or bl, 002h ; 80 cb 02 ; 0xf721d
+ mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf7220
+ and AL, strict byte 001h ; 24 01 ; 0xf7223
+ or bl, al ; 08 c3 ; 0xf7225
+ movzx dx, bl ; 0f b6 d3 ; 0xf7227 timepci.c:223
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf722a
+ call 01782h ; e8 52 a5 ; 0xf722d
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf7230
+ mov byte [bp+012h], bl ; 88 5e 12 ; 0xf7234
+ jmp near 07190h ; e9 56 ff ; 0xf7237
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf723a timepci.c:230
+ call 07092h ; e8 51 fe ; 0xf723e timepci.c:231
+ test ax, ax ; 85 c0 ; 0xf7241
+ je short 07248h ; 74 03 ; 0xf7243
+ jmp near 07190h ; e9 48 ff ; 0xf7245 timepci.c:233
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf7248 timepci.c:235
+ call 01765h ; e8 17 a5 ; 0xf724b
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf724e
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf7251 timepci.c:236
+ call 01765h ; e8 0e a5 ; 0xf7254
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf7257
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf725a timepci.c:237
+ call 01765h ; e8 05 a5 ; 0xf725d
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf7260
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf7263 timepci.c:238
+ call 01765h ; e8 fc a4 ; 0xf7266
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf7269
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf726c timepci.c:239
+ jmp near 07190h ; e9 1e ff ; 0xf726f timepci.c:241
+ call 07092h ; e8 1d fe ; 0xf7272 timepci.c:254
+ test ax, ax ; 85 c0 ; 0xf7275
+ je short 0727fh ; 74 06 ; 0xf7277
+ call 0706ah ; e8 ee fd ; 0xf7279 timepci.c:255
+ jmp near 07190h ; e9 11 ff ; 0xf727c timepci.c:257
+ movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf727f timepci.c:259
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf7283
+ call 01782h ; e8 f9 a4 ; 0xf7286
+ movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf7289 timepci.c:260
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf728d
+ call 01782h ; e8 ef a4 ; 0xf7290
+ movzx dx, byte [bp+00eh] ; 0f b6 56 0e ; 0xf7293 timepci.c:261
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7297
+ call 01782h ; e8 e5 a4 ; 0xf729a
+ movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf729d timepci.c:262
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf72a1
+ call 01782h ; e8 db a4 ; 0xf72a4
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf72a7 timepci.c:263
+ call 01765h ; e8 b8 a4 ; 0xf72aa
+ mov bl, al ; 88 c3 ; 0xf72ad
+ and bl, 07fh ; 80 e3 7f ; 0xf72af
+ jmp near 07227h ; e9 72 ff ; 0xf72b2
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf72b5 timepci.c:281
+ call 01765h ; e8 aa a4 ; 0xf72b8
+ mov bl, al ; 88 c3 ; 0xf72bb
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf72bd timepci.c:282
+ test AL, strict byte 020h ; a8 20 ; 0xf72c2 timepci.c:283
+ je short 072c9h ; 74 03 ; 0xf72c4
+ jmp near 07190h ; e9 c7 fe ; 0xf72c6 timepci.c:286
+ call 07092h ; e8 c6 fd ; 0xf72c9 timepci.c:288
+ test ax, ax ; 85 c0 ; 0xf72cc
+ je short 072d3h ; 74 03 ; 0xf72ce
+ call 0706ah ; e8 97 fd ; 0xf72d0 timepci.c:289
+ movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf72d3 timepci.c:292
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf72d7
+ call 01782h ; e8 a5 a4 ; 0xf72da
+ movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf72dd timepci.c:293
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf72e1
+ call 01782h ; e8 9b a4 ; 0xf72e4
+ movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf72e7 timepci.c:294
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf72eb
+ call 01782h ; e8 91 a4 ; 0xf72ee
+ mov dx, 000a1h ; ba a1 00 ; 0xf72f1 timepci.c:295
+ in AL, DX ; ec ; 0xf72f4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf72f5
+ and AL, strict byte 0feh ; 24 fe ; 0xf72f7
+ out DX, AL ; ee ; 0xf72f9
+ mov al, bl ; 88 d8 ; 0xf72fa timepci.c:297
+ and AL, strict byte 05fh ; 24 5f ; 0xf72fc
+ or AL, strict byte 020h ; 0c 20 ; 0xf72fe
+ movzx dx, al ; 0f b6 d0 ; 0xf7300
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7303
+ call 01782h ; e8 79 a4 ; 0xf7306
+ jmp near 07190h ; e9 84 fe ; 0xf7309 timepci.c:299
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf730c timepci.c:312
+ call 01765h ; e8 53 a4 ; 0xf730f
+ mov bl, al ; 88 c3 ; 0xf7312
+ and AL, strict byte 057h ; 24 57 ; 0xf7314 timepci.c:314
+ movzx dx, al ; 0f b6 d0 ; 0xf7316
+ jmp near 0722ah ; e9 0e ff ; 0xf7319
+ ; disGetNextSymbol 0xf731c LB 0x4030 -> off=0x0 cb=0000000000000034 uValue=00000000000f5d1c 'send_to_mouse_ctrl'
+send_to_mouse_ctrl: ; 0xf731c LB 0x34
+ push bp ; 55 ; 0xf731c ps2mouse.c:77
+ mov bp, sp ; 89 e5 ; 0xf731d
+ push bx ; 53 ; 0xf731f
+ push dx ; 52 ; 0xf7320
+ mov bl, al ; 88 c3 ; 0xf7321
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf7323 ps2mouse.c:81
+ in AL, DX ; ec ; 0xf7326
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7327
+ test AL, strict byte 002h ; a8 02 ; 0xf7329
+ je short 0733bh ; 74 0e ; 0xf732b
+ push 00938h ; 68 38 09 ; 0xf732d ps2mouse.c:82
+ push 012ech ; 68 ec 12 ; 0xf7330
+ push strict byte 00007h ; 6a 07 ; 0xf7333
+ call 01a23h ; e8 eb a6 ; 0xf7335
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7338
+ mov AL, strict byte 0d4h ; b0 d4 ; 0xf733b ps2mouse.c:83
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf733d
+ out DX, AL ; ee ; 0xf7340
+ mov al, bl ; 88 d8 ; 0xf7341 ps2mouse.c:84
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf7343
+ out DX, AL ; ee ; 0xf7346
+ xor al, bl ; 30 d8 ; 0xf7347 ps2mouse.c:86
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7349
+ pop dx ; 5a ; 0xf734c
+ pop bx ; 5b ; 0xf734d
+ pop bp ; 5d ; 0xf734e
+ retn ; c3 ; 0xf734f
+ ; disGetNextSymbol 0xf7350 LB 0x3ffc -> off=0x0 cb=000000000000005c uValue=00000000000f5d50 'get_mouse_data'
+get_mouse_data: ; 0xf7350 LB 0x5c
+ push bp ; 55 ; 0xf7350 ps2mouse.c:89
+ mov bp, sp ; 89 e5 ; 0xf7351
+ push bx ; 53 ; 0xf7353
+ push cx ; 51 ; 0xf7354
+ push ax ; 50 ; 0xf7355
+ mov bx, ax ; 89 c3 ; 0xf7356
+ mov es, dx ; 8e c2 ; 0xf7358
+ mov cx, 02710h ; b9 10 27 ; 0xf735a ps2mouse.c:91
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf735d ps2mouse.c:94
+ in AL, DX ; ec ; 0xf7360
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7361
+ and ax, strict word 00021h ; 25 21 00 ; 0xf7363
+ cmp ax, strict word 00021h ; 3d 21 00 ; 0xf7366
+ je short 07392h ; 74 27 ; 0xf7369
+ test cx, cx ; 85 c9 ; 0xf736b
+ je short 07392h ; 74 23 ; 0xf736d
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf736f ps2mouse.c:97
+ in AL, DX ; ec ; 0xf7372
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7373
+ and AL, strict byte 010h ; 24 10 ; 0xf7375
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7377
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf737a ps2mouse.c:98
+ in AL, DX ; ec ; 0xf737d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf737e
+ mov dx, ax ; 89 c2 ; 0xf7380
+ xor dh, ah ; 30 e6 ; 0xf7382
+ and dl, 010h ; 80 e2 10 ; 0xf7384
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7387
+ cmp dx, ax ; 39 c2 ; 0xf738b
+ je short 0737ah ; 74 eb ; 0xf738d
+ dec cx ; 49 ; 0xf738f ps2mouse.c:100
+ jmp short 0735dh ; eb cb ; 0xf7390 ps2mouse.c:101
+ test cx, cx ; 85 c9 ; 0xf7392 ps2mouse.c:103
+ jne short 0739ah ; 75 04 ; 0xf7394
+ mov AL, strict byte 001h ; b0 01 ; 0xf7396 ps2mouse.c:104
+ jmp short 073a5h ; eb 0b ; 0xf7398
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf739a ps2mouse.c:106
+ in AL, DX ; ec ; 0xf739d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf739e
+ mov byte [es:bx], al ; 26 88 07 ; 0xf73a0 ps2mouse.c:107
+ xor al, al ; 30 c0 ; 0xf73a3 ps2mouse.c:108
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf73a5 ps2mouse.c:109
+ pop cx ; 59 ; 0xf73a8
+ pop bx ; 5b ; 0xf73a9
+ pop bp ; 5d ; 0xf73aa
+ retn ; c3 ; 0xf73ab
+ ; disGetNextSymbol 0xf73ac LB 0x3fa0 -> off=0x0 cb=0000000000000032 uValue=00000000000f5dac 'set_kbd_command_byte'
+set_kbd_command_byte: ; 0xf73ac LB 0x32
+ push bp ; 55 ; 0xf73ac ps2mouse.c:111
+ mov bp, sp ; 89 e5 ; 0xf73ad
+ push bx ; 53 ; 0xf73af
+ push dx ; 52 ; 0xf73b0
+ mov bl, al ; 88 c3 ; 0xf73b1
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf73b3 ps2mouse.c:113
+ in AL, DX ; ec ; 0xf73b6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73b7
+ test AL, strict byte 002h ; a8 02 ; 0xf73b9
+ je short 073cbh ; 74 0e ; 0xf73bb
+ push 00942h ; 68 42 09 ; 0xf73bd ps2mouse.c:114
+ push 012ech ; 68 ec 12 ; 0xf73c0
+ push strict byte 00007h ; 6a 07 ; 0xf73c3
+ call 01a23h ; e8 5b a6 ; 0xf73c5
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf73c8
+ mov AL, strict byte 060h ; b0 60 ; 0xf73cb ps2mouse.c:116
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf73cd
+ out DX, AL ; ee ; 0xf73d0
+ mov al, bl ; 88 d8 ; 0xf73d1 ps2mouse.c:117
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf73d3
+ out DX, AL ; ee ; 0xf73d6
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf73d7 ps2mouse.c:118
+ pop dx ; 5a ; 0xf73da
+ pop bx ; 5b ; 0xf73db
+ pop bp ; 5d ; 0xf73dc
+ retn ; c3 ; 0xf73dd
+ ; disGetNextSymbol 0xf73de LB 0x3f6e -> off=0x0 cb=0000000000000094 uValue=00000000000f5dde 'int74_function'
+int74_function: ; 0xf73de LB 0x94
+ push bp ; 55 ; 0xf73de ps2mouse.c:121
+ mov bp, sp ; 89 e5 ; 0xf73df
+ push si ; 56 ; 0xf73e1
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf73e2 ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf73e5
+ mov es, ax ; 8e c0 ; 0xf73e8
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf73ea
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf73ed ps2mouse.c:129
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf73f2 ps2mouse.c:131
+ in AL, DX ; ec ; 0xf73f5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73f6
+ and AL, strict byte 021h ; 24 21 ; 0xf73f8 ps2mouse.c:132
+ cmp AL, strict byte 021h ; 3c 21 ; 0xf73fa
+ jne short 0746ch ; 75 6e ; 0xf73fc
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf73fe ps2mouse.c:135
+ in AL, DX ; ec ; 0xf7401
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7402
+ mov cl, al ; 88 c1 ; 0xf7404
+ mov si, strict word 00026h ; be 26 00 ; 0xf7406 ps2mouse.c:38
+ mov es, bx ; 8e c3 ; 0xf7409
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf740b
+ mov si, strict word 00027h ; be 27 00 ; 0xf740e ps2mouse.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf7411
+ mov dl, ah ; 88 e2 ; 0xf7414 ps2mouse.c:39
+ test ah, 080h ; f6 c4 80 ; 0xf7416 ps2mouse.c:141
+ je short 0746ch ; 74 51 ; 0xf7419
+ mov dh, dl ; 88 d6 ; 0xf741b ps2mouse.c:145
+ and dh, 007h ; 80 e6 07 ; 0xf741d
+ mov ah, al ; 88 c4 ; 0xf7420 ps2mouse.c:146
+ and ah, 007h ; 80 e4 07 ; 0xf7422
+ movzx si, ah ; 0f b6 f4 ; 0xf7425 ps2mouse.c:147
+ add si, strict byte 00028h ; 83 c6 28 ; 0xf7428
+ mov es, bx ; 8e c3 ; 0xf742b ps2mouse.c:43
+ mov byte [es:si], cl ; 26 88 0c ; 0xf742d
+ cmp ah, dh ; 38 f4 ; 0xf7430 ps2mouse.c:149
+ jc short 07462h ; 72 2e ; 0xf7432
+ mov si, strict word 00028h ; be 28 00 ; 0xf7434 ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7437
+ xor ah, ah ; 30 e4 ; 0xf743a ps2mouse.c:39
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf743c
+ mov si, strict word 00029h ; be 29 00 ; 0xf743f ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7442
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf7445 ps2mouse.c:39
+ mov si, strict word 0002ah ; be 2a 00 ; 0xf7448 ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf744b
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf744e ps2mouse.c:39
+ xor al, al ; 30 c0 ; 0xf7451 ps2mouse.c:154
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf7453
+ test dl, 080h ; f6 c2 80 ; 0xf7456 ps2mouse.c:157
+ je short 07464h ; 74 09 ; 0xf7459
+ mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf745b ps2mouse.c:158
+ jmp short 07464h ; eb 02 ; 0xf7460 ps2mouse.c:160
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7462 ps2mouse.c:161
+ mov si, strict word 00026h ; be 26 00 ; 0xf7464 ps2mouse.c:43
+ mov es, bx ; 8e c3 ; 0xf7467
+ mov byte [es:si], al ; 26 88 04 ; 0xf7469
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf746c ps2mouse.c:164
+ pop si ; 5e ; 0xf746f
+ pop bp ; 5d ; 0xf7470
+ retn ; c3 ; 0xf7471
+ ; disGetNextSymbol 0xf7472 LB 0x3eda -> off=0x10 cb=0000000000000370 uValue=00000000000f5e82 'int15_function_mouse'
+ db 0c5h, 074h, 033h, 075h, 0aeh, 075h, 03fh, 076h, 0adh, 076h, 011h, 075h, 0d5h, 076h, 09ah, 077h
+int15_function_mouse: ; 0xf7482 LB 0x370
+ push bp ; 55 ; 0xf7482 ps2mouse.c:166
+ mov bp, sp ; 89 e5 ; 0xf7483
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7485
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7488 ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf748b
+ mov es, ax ; 8e c0 ; 0xf748e
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7490
+ cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf7493 ps2mouse.c:188
+ jbe short 074a4h ; 76 0b ; 0xf7497
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7499 ps2mouse.c:191
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf749d ps2mouse.c:192
+ jmp near 077eeh ; e9 4a 03 ; 0xf74a1 ps2mouse.c:193
+ mov ax, strict word 00065h ; b8 65 00 ; 0xf74a4 ps2mouse.c:197
+ call 073ach ; e8 02 ff ; 0xf74a7
+ and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf74aa ps2mouse.c:198
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf74ae ps2mouse.c:199
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf74b2 ps2mouse.c:201
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf74b5
+ jnbe near 077d5h ; 0f 87 1a 03 ; 0xf74b7
+ movzx bx, al ; 0f b6 d8 ; 0xf74bb
+ add bx, bx ; 01 db ; 0xf74be
+ jmp word [cs:bx+07472h] ; 2e ff a7 72 74 ; 0xf74c0
+ cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf74c5 ps2mouse.c:204
+ jnbe near 077e0h ; 0f 87 13 03 ; 0xf74c9
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf74cd ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf74d0
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf74d2
+ test AL, strict byte 080h ; a8 80 ; 0xf74d5 ps2mouse.c:212
+ jne short 074e4h ; 75 0b ; 0xf74d7
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf74d9 ps2mouse.c:214
+ mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf74dd ps2mouse.c:215
+ jmp near 077e8h ; e9 04 03 ; 0xf74e1 ps2mouse.c:216
+ cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf74e4 ps2mouse.c:218
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf74e8
+ add AL, strict byte 0f4h ; 04 f4 ; 0xf74eb
+ xor ah, ah ; 30 e4 ; 0xf74ed ps2mouse.c:226
+ call 0731ch ; e8 2a fe ; 0xf74ef
+ test al, al ; 84 c0 ; 0xf74f2 ps2mouse.c:227
+ jne near 07776h ; 0f 85 7e 02 ; 0xf74f4
+ mov dx, ss ; 8c d2 ; 0xf74f8 ps2mouse.c:228
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf74fa
+ call 07350h ; e8 50 fe ; 0xf74fd
+ test al, al ; 84 c0 ; 0xf7500 ps2mouse.c:229
+ je near 077e8h ; 0f 84 e2 02 ; 0xf7502
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7506
+ jne near 07776h ; 0f 85 68 02 ; 0xf750a
+ jmp near 077e8h ; e9 d7 02 ; 0xf750e ps2mouse.c:231
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7511 ps2mouse.c:242
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7514
+ jc short 0751ch ; 72 04 ; 0xf7516
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf7518
+ jbe short 0751fh ; 76 03 ; 0xf751a
+ jmp near 076a2h ; e9 83 01 ; 0xf751c
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf751f ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf7522
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7524
+ mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf7527 ps2mouse.c:248
+ db 0feh, 0cch
+ ; dec ah ; fe cc ; 0xf752a
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf752c
+ or al, ah ; 08 e0 ; 0xf752e
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7530 ps2mouse.c:43
+ mov bx, strict word 00026h ; bb 26 00 ; 0xf7533 ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf7536
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7538
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf753b ps2mouse.c:256
+ mov byte [es:bx], al ; 26 88 07 ; 0xf753d ps2mouse.c:43
+ mov ax, 000ffh ; b8 ff 00 ; 0xf7540 ps2mouse.c:258
+ call 0731ch ; e8 d6 fd ; 0xf7543
+ test al, al ; 84 c0 ; 0xf7546 ps2mouse.c:259
+ jne near 07776h ; 0f 85 2a 02 ; 0xf7548
+ mov dx, ss ; 8c d2 ; 0xf754c ps2mouse.c:260
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf754e
+ call 07350h ; e8 fc fd ; 0xf7551
+ mov dl, al ; 88 c2 ; 0xf7554
+ cmp byte [bp-004h], 0feh ; 80 7e fc fe ; 0xf7556 ps2mouse.c:262
+ jne short 07567h ; 75 0b ; 0xf755a
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf755c ps2mouse.c:263
+ mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf7560 ps2mouse.c:264
+ jmp near 077e8h ; e9 81 02 ; 0xf7564 ps2mouse.c:265
+ cmp byte [bp-004h], 0fah ; 80 7e fc fa ; 0xf7567 ps2mouse.c:267
+ je short 0757dh ; 74 10 ; 0xf756b
+ movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf756d ps2mouse.c:268
+ push ax ; 50 ; 0xf7571
+ push 0094dh ; 68 4d 09 ; 0xf7572
+ push strict byte 00007h ; 6a 07 ; 0xf7575
+ call 01a23h ; e8 a9 a4 ; 0xf7577
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf757a
+ test dl, dl ; 84 d2 ; 0xf757d ps2mouse.c:269
+ jne near 07776h ; 0f 85 f3 01 ; 0xf757f
+ mov dx, ss ; 8c d2 ; 0xf7583 ps2mouse.c:270
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7585
+ call 07350h ; e8 c5 fd ; 0xf7588
+ test al, al ; 84 c0 ; 0xf758b ps2mouse.c:271
+ jne near 07776h ; 0f 85 e5 01 ; 0xf758d
+ mov dx, ss ; 8c d2 ; 0xf7591 ps2mouse.c:272
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7593
+ call 07350h ; e8 b7 fd ; 0xf7596
+ test al, al ; 84 c0 ; 0xf7599 ps2mouse.c:273
+ jne near 07776h ; 0f 85 d7 01 ; 0xf759b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf759f ps2mouse.c:275
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf75a2
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf75a5 ps2mouse.c:276
+ mov byte [bp+00dh], al ; 88 46 0d ; 0xf75a8
+ jmp near 077e8h ; e9 3a 02 ; 0xf75ab ps2mouse.c:277
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf75ae ps2mouse.c:290
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf75b1
+ jc short 075c5h ; 72 10 ; 0xf75b3
+ jbe short 075e3h ; 76 2c ; 0xf75b5
+ cmp AL, strict byte 006h ; 3c 06 ; 0xf75b7
+ je short 075f5h ; 74 3a ; 0xf75b9
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf75bb
+ je short 075efh ; 74 30 ; 0xf75bd
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf75bf
+ je short 075e9h ; 74 26 ; 0xf75c1
+ jmp short 075fbh ; eb 36 ; 0xf75c3
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf75c5
+ je short 075ddh ; 74 14 ; 0xf75c7
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf75c9
+ je short 075d7h ; 74 0a ; 0xf75cb
+ test al, al ; 84 c0 ; 0xf75cd
+ jne short 075fbh ; 75 2a ; 0xf75cf
+ mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf75d1 ps2mouse.c:291
+ jmp short 075ffh ; eb 28 ; 0xf75d5
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf75d7 ps2mouse.c:292
+ jmp short 075ffh ; eb 22 ; 0xf75db
+ mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf75dd ps2mouse.c:293
+ jmp short 075ffh ; eb 1c ; 0xf75e1
+ mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf75e3 ps2mouse.c:294
+ jmp short 075ffh ; eb 16 ; 0xf75e7
+ mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf75e9 ps2mouse.c:295
+ jmp short 075ffh ; eb 10 ; 0xf75ed
+ mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf75ef ps2mouse.c:296
+ jmp short 075ffh ; eb 0a ; 0xf75f3
+ mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf75f5 ps2mouse.c:297
+ jmp short 075ffh ; eb 04 ; 0xf75f9
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf75fb ps2mouse.c:298
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf75ff ps2mouse.c:300
+ jbe short 07634h ; 76 2f ; 0xf7603
+ mov ax, 000f3h ; b8 f3 00 ; 0xf7605 ps2mouse.c:301
+ call 0731ch ; e8 11 fd ; 0xf7608
+ test al, al ; 84 c0 ; 0xf760b ps2mouse.c:302
+ jne short 07629h ; 75 1a ; 0xf760d
+ mov dx, ss ; 8c d2 ; 0xf760f ps2mouse.c:303
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7611
+ call 07350h ; e8 39 fd ; 0xf7614
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7617 ps2mouse.c:304
+ call 0731ch ; e8 fe fc ; 0xf761b
+ mov dx, ss ; 8c d2 ; 0xf761e ps2mouse.c:305
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7620
+ call 07350h ; e8 2a fd ; 0xf7623
+ jmp near 077e8h ; e9 bf 01 ; 0xf7626 ps2mouse.c:307
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7629 ps2mouse.c:309
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf762d ps2mouse.c:310
+ jmp near 077e8h ; e9 b4 01 ; 0xf7631 ps2mouse.c:312
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7634 ps2mouse.c:314
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf7638 ps2mouse.c:315
+ jmp near 077e8h ; e9 a9 01 ; 0xf763c ps2mouse.c:317
+ cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf763f ps2mouse.c:326
+ jnc short 076a2h ; 73 5d ; 0xf7643
+ mov ax, 000e8h ; b8 e8 00 ; 0xf7645 ps2mouse.c:327
+ call 0731ch ; e8 d1 fc ; 0xf7648
+ test al, al ; 84 c0 ; 0xf764b ps2mouse.c:328
+ jne short 07697h ; 75 48 ; 0xf764d
+ mov dx, ss ; 8c d2 ; 0xf764f ps2mouse.c:329
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7651
+ call 07350h ; e8 f9 fc ; 0xf7654
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7657 ps2mouse.c:330
+ je short 0766dh ; 74 10 ; 0xf765b
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf765d ps2mouse.c:331
+ push ax ; 50 ; 0xf7661
+ push 00978h ; 68 78 09 ; 0xf7662
+ push strict byte 00007h ; 6a 07 ; 0xf7665
+ call 01a23h ; e8 b9 a3 ; 0xf7667
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf766a
+ movzx ax, byte [bp+00dh] ; 0f b6 46 0d ; 0xf766d ps2mouse.c:332
+ call 0731ch ; e8 a8 fc ; 0xf7671
+ mov dx, ss ; 8c d2 ; 0xf7674 ps2mouse.c:333
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7676
+ call 07350h ; e8 d4 fc ; 0xf7679
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf767c ps2mouse.c:334
+ je near 077e8h ; 0f 84 64 01 ; 0xf7680
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7684 ps2mouse.c:335
+ push ax ; 50 ; 0xf7688
+ push 00978h ; 68 78 09 ; 0xf7689
+ push strict byte 00007h ; 6a 07 ; 0xf768c
+ call 01a23h ; e8 92 a3 ; 0xf768e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7691
+ jmp near 077e8h ; e9 51 01 ; 0xf7694 ps2mouse.c:337
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7697 ps2mouse.c:339
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf769b ps2mouse.c:340
+ jmp near 077e8h ; e9 46 01 ; 0xf769f ps2mouse.c:342
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf76a2 ps2mouse.c:344
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf76a6 ps2mouse.c:345
+ jmp near 077e8h ; e9 3b 01 ; 0xf76aa ps2mouse.c:347
+ mov ax, 000f2h ; b8 f2 00 ; 0xf76ad ps2mouse.c:351
+ call 0731ch ; e8 69 fc ; 0xf76b0
+ test al, al ; 84 c0 ; 0xf76b3 ps2mouse.c:352
+ jne short 076cah ; 75 13 ; 0xf76b5
+ mov dx, ss ; 8c d2 ; 0xf76b7 ps2mouse.c:353
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf76b9
+ call 07350h ; e8 91 fc ; 0xf76bc
+ mov dx, ss ; 8c d2 ; 0xf76bf ps2mouse.c:354
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf76c1
+ call 07350h ; e8 89 fc ; 0xf76c4
+ jmp near 075a5h ; e9 db fe ; 0xf76c7
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf76ca ps2mouse.c:355
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf76ce ps2mouse.c:360
+ jmp near 077e8h ; e9 13 01 ; 0xf76d2 ps2mouse.c:362
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf76d5 ps2mouse.c:366
+ test al, al ; 84 c0 ; 0xf76d8
+ jbe short 076e3h ; 76 07 ; 0xf76da
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf76dc
+ jbe short 0774ch ; 76 6c ; 0xf76de
+ jmp near 07780h ; e9 9d 00 ; 0xf76e0
+ mov ax, 000e9h ; b8 e9 00 ; 0xf76e3 ps2mouse.c:368
+ call 0731ch ; e8 33 fc ; 0xf76e6
+ test al, al ; 84 c0 ; 0xf76e9 ps2mouse.c:369
+ jne near 07776h ; 0f 85 87 00 ; 0xf76eb
+ mov dx, ss ; 8c d2 ; 0xf76ef ps2mouse.c:370
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf76f1
+ call 07350h ; e8 59 fc ; 0xf76f4
+ mov dl, al ; 88 c2 ; 0xf76f7
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf76f9 ps2mouse.c:371
+ je short 0770fh ; 74 10 ; 0xf76fd
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf76ff ps2mouse.c:372
+ push ax ; 50 ; 0xf7703
+ push 00978h ; 68 78 09 ; 0xf7704
+ push strict byte 00007h ; 6a 07 ; 0xf7707
+ call 01a23h ; e8 17 a3 ; 0xf7709
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf770c
+ test dl, dl ; 84 d2 ; 0xf770f ps2mouse.c:373
+ jne short 07776h ; 75 63 ; 0xf7711
+ mov dx, ss ; 8c d2 ; 0xf7713 ps2mouse.c:374
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7715
+ call 07350h ; e8 35 fc ; 0xf7718
+ test al, al ; 84 c0 ; 0xf771b ps2mouse.c:375
+ jne short 07776h ; 75 57 ; 0xf771d
+ mov dx, ss ; 8c d2 ; 0xf771f ps2mouse.c:376
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7721
+ call 07350h ; e8 29 fc ; 0xf7724
+ test al, al ; 84 c0 ; 0xf7727 ps2mouse.c:377
+ jne short 07776h ; 75 4b ; 0xf7729
+ mov dx, ss ; 8c d2 ; 0xf772b ps2mouse.c:378
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf772d
+ call 07350h ; e8 1d fc ; 0xf7730
+ test al, al ; 84 c0 ; 0xf7733 ps2mouse.c:379
+ jne short 07776h ; 75 3f ; 0xf7735
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7737 ps2mouse.c:380
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf773a
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf773d ps2mouse.c:381
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf7740
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf7743 ps2mouse.c:382
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf7746
+ jmp near 077e8h ; e9 9c 00 ; 0xf7749 ps2mouse.c:384
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf774c ps2mouse.c:398
+ jne short 07755h ; 75 05 ; 0xf774e
+ mov ax, 000e6h ; b8 e6 00 ; 0xf7750 ps2mouse.c:399
+ jmp short 07758h ; eb 03 ; 0xf7753 ps2mouse.c:400
+ mov ax, 000e7h ; b8 e7 00 ; 0xf7755 ps2mouse.c:401
+ call 0731ch ; e8 c1 fb ; 0xf7758
+ mov dl, al ; 88 c2 ; 0xf775b
+ test dl, dl ; 84 d2 ; 0xf775d ps2mouse.c:403
+ jne short 07770h ; 75 0f ; 0xf775f
+ mov dx, ss ; 8c d2 ; 0xf7761 ps2mouse.c:404
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7763
+ call 07350h ; e8 e7 fb ; 0xf7766
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7769 ps2mouse.c:405
+ db 00fh, 095h, 0c2h
+ ; setne dl ; 0f 95 c2 ; 0xf776d
+ test dl, dl ; 84 d2 ; 0xf7770 ps2mouse.c:407
+ je near 077e8h ; 0f 84 72 00 ; 0xf7772
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7776 ps2mouse.c:409
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf777a ps2mouse.c:410
+ jmp short 077e8h ; eb 68 ; 0xf777e ps2mouse.c:412
+ movzx ax, byte [bp+00dh] ; 0f b6 46 0d ; 0xf7780 ps2mouse.c:415
+ push ax ; 50 ; 0xf7784
+ push 009a4h ; 68 a4 09 ; 0xf7785
+ push strict byte 00007h ; 6a 07 ; 0xf7788
+ call 01a23h ; e8 96 a2 ; 0xf778a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf778d
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7790 ps2mouse.c:417
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7794 ps2mouse.c:418
+ jmp short 077e8h ; eb 4e ; 0xf7798 ps2mouse.c:420
+ mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf779a ps2mouse.c:425
+ mov bx, strict word 00022h ; bb 22 00 ; 0xf779d ps2mouse.c:53
+ mov es, dx ; 8e c2 ; 0xf77a0
+ mov word [es:bx], cx ; 26 89 0f ; 0xf77a2
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf77a5 ps2mouse.c:53
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf77a8
+ mov word [es:bx], ax ; 26 89 07 ; 0xf77ab
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf77ae ps2mouse.c:38
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf77b1
+ mov al, bl ; 88 d8 ; 0xf77b4 ps2mouse.c:39
+ test cx, cx ; 85 c9 ; 0xf77b6 ps2mouse.c:429
+ jne short 077c9h ; 75 0f ; 0xf77b8
+ cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf77ba
+ jne short 077c9h ; 75 09 ; 0xf77be
+ test bl, 080h ; f6 c3 80 ; 0xf77c0 ps2mouse.c:431
+ je short 077cbh ; 74 06 ; 0xf77c3
+ and AL, strict byte 07fh ; 24 7f ; 0xf77c5 ps2mouse.c:432
+ jmp short 077cbh ; eb 02 ; 0xf77c7 ps2mouse.c:435
+ or AL, strict byte 080h ; 0c 80 ; 0xf77c9 ps2mouse.c:437
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf77cb ps2mouse.c:43
+ mov es, dx ; 8e c2 ; 0xf77ce
+ mov byte [es:bx], al ; 26 88 07 ; 0xf77d0
+ jmp short 077e8h ; eb 13 ; 0xf77d3 ps2mouse.c:440
+ push 009beh ; 68 be 09 ; 0xf77d5 ps2mouse.c:443
+ push strict byte 00007h ; 6a 07 ; 0xf77d8
+ call 01a23h ; e8 46 a2 ; 0xf77da
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf77dd
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf77e0 ps2mouse.c:445
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf77e4 ps2mouse.c:446
+ mov ax, strict word 00047h ; b8 47 00 ; 0xf77e8 ps2mouse.c:450
+ call 073ach ; e8 be fb ; 0xf77eb
+ mov sp, bp ; 89 ec ; 0xf77ee ps2mouse.c:451
+ pop bp ; 5d ; 0xf77f0
+ retn ; c3 ; 0xf77f1
+ ; disGetNextSymbol 0xf77f2 LB 0x3b5a -> off=0x0 cb=00000000000000b2 uValue=00000000000f61f2 'int17_function'
+int17_function: ; 0xf77f2 LB 0xb2
+ push bp ; 55 ; 0xf77f2 parallel.c:60
+ mov bp, sp ; 89 e5 ; 0xf77f3
+ push si ; 56 ; 0xf77f5
+ push di ; 57 ; 0xf77f6
+ push ax ; 50 ; 0xf77f7
+ sti ; fb ; 0xf77f8 parallel.c:65
+ mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf77f9 parallel.c:67
+ add bx, bx ; 01 db ; 0xf77fc
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf77fe
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7801 parallel.c:48
+ mov es, ax ; 8e c0 ; 0xf7804
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf7806
+ mov si, bx ; 89 de ; 0xf7809 parallel.c:49
+ cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf780b parallel.c:68
+ jnc near 07899h ; 0f 83 86 00 ; 0xf780f
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7813
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf7816
+ jnc near 07899h ; 0f 83 7c 00 ; 0xf7819
+ test bx, bx ; 85 db ; 0xf781d
+ jbe near 07899h ; 0f 86 76 00 ; 0xf781f
+ mov di, ax ; 89 c7 ; 0xf7823 parallel.c:69
+ add di, strict byte 00078h ; 83 c7 78 ; 0xf7825
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf7828 parallel.c:38
+ movzx cx, al ; 0f b6 c8 ; 0xf782b parallel.c:39
+ sal cx, 008h ; c1 e1 08 ; 0xf782e
+ cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf7831 parallel.c:70
+ jne short 07864h ; 75 2d ; 0xf7835
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf7837 parallel.c:71
+ mov dx, bx ; 89 da ; 0xf783a
+ out DX, AL ; ee ; 0xf783c
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf783d parallel.c:72
+ in AL, DX ; ec ; 0xf7840
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7841
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf7843
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7846 parallel.c:73
+ or AL, strict byte 001h ; 0c 01 ; 0xf7849
+ out DX, AL ; ee ; 0xf784b
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf784c parallel.c:74
+ and AL, strict byte 0feh ; 24 fe ; 0xf7850
+ out DX, AL ; ee ; 0xf7852
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf7853 parallel.c:75
+ in AL, DX ; ec ; 0xf7856
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7857
+ test AL, strict byte 040h ; a8 40 ; 0xf7859
+ je short 07864h ; 74 07 ; 0xf785b
+ test cx, cx ; 85 c9 ; 0xf785d
+ je short 07864h ; 74 03 ; 0xf785f
+ dec cx ; 49 ; 0xf7861 parallel.c:76
+ jmp short 07853h ; eb ef ; 0xf7862 parallel.c:77
+ cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf7864 parallel.c:79
+ jne short 07880h ; 75 16 ; 0xf7868
+ lea dx, [si+002h] ; 8d 54 02 ; 0xf786a parallel.c:80
+ in AL, DX ; ec ; 0xf786d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf786e
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf7870
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7873 parallel.c:81
+ and AL, strict byte 0fbh ; 24 fb ; 0xf7877
+ out DX, AL ; ee ; 0xf7879
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf787a parallel.c:82
+ or AL, strict byte 004h ; 0c 04 ; 0xf787d
+ out DX, AL ; ee ; 0xf787f
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf7880 parallel.c:84
+ in AL, DX ; ec ; 0xf7883
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7884
+ xor AL, strict byte 048h ; 34 48 ; 0xf7886 parallel.c:85
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf7888
+ test cx, cx ; 85 c9 ; 0xf788b parallel.c:86
+ jne short 07893h ; 75 04 ; 0xf788d
+ or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf788f
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf7893 parallel.c:87
+ jmp short 0789dh ; eb 04 ; 0xf7897 parallel.c:88
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf7899 parallel.c:89
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf789d parallel.c:91
+ pop di ; 5f ; 0xf78a0
+ pop si ; 5e ; 0xf78a1
+ pop bp ; 5d ; 0xf78a2
+ retn ; c3 ; 0xf78a3
+ ; disGetNextSymbol 0xf78a4 LB 0x3aa8 -> off=0x0 cb=00000000000000b8 uValue=00000000000f62a4 '_wait_'
+_wait_: ; 0xf78a4 LB 0xb8
+ push bp ; 55 ; 0xf78a4 logo.c:171
+ mov bp, sp ; 89 e5 ; 0xf78a5
+ push bx ; 53 ; 0xf78a7
+ push cx ; 51 ; 0xf78a8
+ push si ; 56 ; 0xf78a9
+ push di ; 57 ; 0xf78aa
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf78ab
+ mov di, ax ; 89 c7 ; 0xf78ae
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf78b0
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf78b3 logo.c:176
+ pushfw ; 9c ; 0xf78b7 logo.c:182
+ pop ax ; 58 ; 0xf78b8
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf78b9
+ sti ; fb ; 0xf78bc logo.c:183
+ xor dx, dx ; 31 d2 ; 0xf78bd logo.c:189
+ mov bx, 0046ch ; bb 6c 04 ; 0xf78bf logo.c:58
+ mov es, dx ; 8e c2 ; 0xf78c2
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf78c4
+ mov cx, word [es:bx+002h] ; 26 8b 4f 02 ; 0xf78c7
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf78cb logo.c:59
+ hlt ; f4 ; 0xf78ce logo.c:193
+ mov bx, 0046ch ; bb 6c 04 ; 0xf78cf logo.c:58
+ xor ax, ax ; 31 c0 ; 0xf78d2
+ mov es, ax ; 8e c0 ; 0xf78d4
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf78d6
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf78d9
+ mov bx, si ; 89 f3 ; 0xf78dd logo.c:59
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf78df
+ cmp ax, cx ; 39 c8 ; 0xf78e2 logo.c:195
+ jnbe short 078edh ; 77 07 ; 0xf78e4
+ jne short 078f4h ; 75 0c ; 0xf78e6
+ cmp si, word [bp-00eh] ; 3b 76 f2 ; 0xf78e8
+ jbe short 078f4h ; 76 07 ; 0xf78eb
+ sub si, word [bp-00eh] ; 2b 76 f2 ; 0xf78ed logo.c:197
+ sbb ax, cx ; 19 c8 ; 0xf78f0
+ jmp short 078ffh ; eb 0b ; 0xf78f2 logo.c:200
+ cmp ax, cx ; 39 c8 ; 0xf78f4
+ jc short 078ffh ; 72 07 ; 0xf78f6
+ jne short 07903h ; 75 09 ; 0xf78f8
+ cmp si, word [bp-00eh] ; 3b 76 f2 ; 0xf78fa
+ jnc short 07903h ; 73 04 ; 0xf78fd
+ sub di, si ; 29 f7 ; 0xf78ff logo.c:201
+ sbb dx, ax ; 19 c2 ; 0xf7901
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf7903 logo.c:202
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf7906
+ mov ax, 00100h ; b8 00 01 ; 0xf7909 logo.c:204
+ int 016h ; cd 16 ; 0xf790c
+ je near 07917h ; 0f 84 05 00 ; 0xf790e
+ mov AL, strict byte 001h ; b0 01 ; 0xf7912
+ jmp near 07919h ; e9 02 00 ; 0xf7914
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf7917
+ test al, al ; 84 c0 ; 0xf7919
+ je short 07941h ; 74 24 ; 0xf791b
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf791d logo.c:206
+ int 016h ; cd 16 ; 0xf791f
+ xchg ah, al ; 86 c4 ; 0xf7921
+ mov bl, al ; 88 c3 ; 0xf7923
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7925
+ movzx ax, bl ; 0f b6 c3 ; 0xf7928 logo.c:207
+ push ax ; 50 ; 0xf792b
+ push 009e0h ; 68 e0 09 ; 0xf792c
+ push strict byte 00004h ; 6a 04 ; 0xf792f
+ call 01a23h ; e8 ef a0 ; 0xf7931
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7934
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf7937 logo.c:208
+ je short 07941h ; 74 04 ; 0xf793b
+ mov al, bl ; 88 d8 ; 0xf793d logo.c:209
+ jmp short 07953h ; eb 12 ; 0xf793f
+ test dx, dx ; 85 d2 ; 0xf7941 logo.c:211
+ jnle short 078ceh ; 7f 89 ; 0xf7943
+ jne short 0794bh ; 75 04 ; 0xf7945
+ test di, di ; 85 ff ; 0xf7947
+ jnbe short 078ceh ; 77 83 ; 0xf7949
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf794b logo.c:212
+ push ax ; 50 ; 0xf794e
+ popfw ; 9d ; 0xf794f
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7950 logo.c:213
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7953 logo.c:214
+ pop di ; 5f ; 0xf7956
+ pop si ; 5e ; 0xf7957
+ pop cx ; 59 ; 0xf7958
+ pop bx ; 5b ; 0xf7959
+ pop bp ; 5d ; 0xf795a
+ retn ; c3 ; 0xf795b
+ ; disGetNextSymbol 0xf795c LB 0x39f0 -> off=0x0 cb=0000000000000016 uValue=00000000000f635c 'read_logo_byte'
+read_logo_byte: ; 0xf795c LB 0x16
+ push bp ; 55 ; 0xf795c logo.c:216
+ mov bp, sp ; 89 e5 ; 0xf795d
+ push dx ; 52 ; 0xf795f
+ xor ah, ah ; 30 e4 ; 0xf7960 logo.c:218
+ or ah, 001h ; 80 cc 01 ; 0xf7962
+ mov dx, 003b8h ; ba b8 03 ; 0xf7965
+ out DX, ax ; ef ; 0xf7968
+ in AL, DX ; ec ; 0xf7969 logo.c:219
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf796a
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf796c logo.c:220
+ pop dx ; 5a ; 0xf796f
+ pop bp ; 5d ; 0xf7970
+ retn ; c3 ; 0xf7971
+ ; disGetNextSymbol 0xf7972 LB 0x39da -> off=0x0 cb=0000000000000014 uValue=00000000000f6372 'read_logo_word'
+read_logo_word: ; 0xf7972 LB 0x14
+ push bp ; 55 ; 0xf7972 logo.c:222
+ mov bp, sp ; 89 e5 ; 0xf7973
+ push dx ; 52 ; 0xf7975
+ xor ah, ah ; 30 e4 ; 0xf7976 logo.c:224
+ or ah, 001h ; 80 cc 01 ; 0xf7978
+ mov dx, 003b8h ; ba b8 03 ; 0xf797b
+ out DX, ax ; ef ; 0xf797e
+ in ax, DX ; ed ; 0xf797f logo.c:225
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf7980 logo.c:226
+ pop dx ; 5a ; 0xf7983
+ pop bp ; 5d ; 0xf7984
+ retn ; c3 ; 0xf7985
+ ; disGetNextSymbol 0xf7986 LB 0x39c6 -> off=0x0 cb=0000000000000133 uValue=00000000000f6386 'print_detected_harddisks'
+print_detected_harddisks: ; 0xf7986 LB 0x133
+ push bp ; 55 ; 0xf7986 logo.c:245
+ mov bp, sp ; 89 e5 ; 0xf7987
+ push bx ; 53 ; 0xf7989
+ push cx ; 51 ; 0xf798a
+ push dx ; 52 ; 0xf798b
+ push si ; 56 ; 0xf798c
+ push di ; 57 ; 0xf798d
+ push ax ; 50 ; 0xf798e
+ push ax ; 50 ; 0xf798f
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7990 logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7993
+ mov es, ax ; 8e c0 ; 0xf7996
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf7998
+ mov di, si ; 89 f7 ; 0xf799b logo.c:49
+ xor ch, ch ; 30 ed ; 0xf799d logo.c:250
+ xor cl, cl ; 30 c9 ; 0xf799f logo.c:251
+ mov byte [bp-00eh], ch ; 88 6e f2 ; 0xf79a1 logo.c:252
+ mov bx, 002b0h ; bb b0 02 ; 0xf79a4 logo.c:38
+ mov es, si ; 8e c6 ; 0xf79a7
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf79a9
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf79ac logo.c:39
+ xor bl, bl ; 30 db ; 0xf79af logo.c:257
+ cmp bl, byte [bp-00ch] ; 3a 5e f4 ; 0xf79b1
+ jnc near 07a8bh ; 0f 83 d3 00 ; 0xf79b4
+ movzx si, bl ; 0f b6 f3 ; 0xf79b8 logo.c:259
+ add si, 002b1h ; 81 c6 b1 02 ; 0xf79bb
+ mov es, di ; 8e c7 ; 0xf79bf logo.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf79c1
+ mov bh, al ; 88 c7 ; 0xf79c4 logo.c:39
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf79c6 logo.c:262
+ jc short 079eeh ; 72 24 ; 0xf79c8
+ test cl, cl ; 84 c9 ; 0xf79ca logo.c:264
+ jne short 079dbh ; 75 0d ; 0xf79cc
+ push 009f1h ; 68 f1 09 ; 0xf79ce logo.c:266
+ push strict byte 00002h ; 6a 02 ; 0xf79d1
+ call 01a23h ; e8 4d a0 ; 0xf79d3
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf79d6
+ mov CL, strict byte 001h ; b1 01 ; 0xf79d9 logo.c:267
+ movzx ax, bl ; 0f b6 c3 ; 0xf79db logo.c:270
+ inc ax ; 40 ; 0xf79de
+ push ax ; 50 ; 0xf79df
+ push 00a06h ; 68 06 0a ; 0xf79e0
+ push strict byte 00002h ; 6a 02 ; 0xf79e3
+ call 01a23h ; e8 3b a0 ; 0xf79e5
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf79e8
+ jmp near 07a86h ; e9 98 00 ; 0xf79eb logo.c:273
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf79ee logo.c:276
+ jc short 07a09h ; 72 17 ; 0xf79f0
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf79f2 logo.c:278
+ jne short 07a07h ; 75 0f ; 0xf79f6
+ push 00a19h ; 68 19 0a ; 0xf79f8 logo.c:280
+ push strict byte 00002h ; 6a 02 ; 0xf79fb
+ call 01a23h ; e8 23 a0 ; 0xf79fd
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a00
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7a03 logo.c:281
+ jmp short 079dbh ; eb d2 ; 0xf7a07 logo.c:282
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7a09 logo.c:291
+ jnc short 07a20h ; 73 13 ; 0xf7a0b
+ test ch, ch ; 84 ed ; 0xf7a0d
+ jne short 07a20h ; 75 0f ; 0xf7a0f
+ push 00a2eh ; 68 2e 0a ; 0xf7a11 logo.c:293
+ push strict byte 00002h ; 6a 02 ; 0xf7a14
+ call 01a23h ; e8 0a a0 ; 0xf7a16
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a19
+ mov CH, strict byte 001h ; b5 01 ; 0xf7a1c logo.c:294
+ jmp short 07a36h ; eb 16 ; 0xf7a1e logo.c:296
+ cmp bh, 004h ; 80 ff 04 ; 0xf7a20
+ jc short 07a36h ; 72 11 ; 0xf7a23
+ test cl, cl ; 84 c9 ; 0xf7a25
+ jne short 07a36h ; 75 0d ; 0xf7a27
+ push 00a40h ; 68 40 0a ; 0xf7a29 logo.c:298
+ push strict byte 00002h ; 6a 02 ; 0xf7a2c
+ call 01a23h ; e8 f2 9f ; 0xf7a2e
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a31
+ mov CL, strict byte 001h ; b1 01 ; 0xf7a34 logo.c:299
+ movzx ax, bl ; 0f b6 c3 ; 0xf7a36 logo.c:302
+ inc ax ; 40 ; 0xf7a39
+ push ax ; 50 ; 0xf7a3a
+ push 00a54h ; 68 54 0a ; 0xf7a3b
+ push strict byte 00002h ; 6a 02 ; 0xf7a3e
+ call 01a23h ; e8 e0 9f ; 0xf7a40
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7a43
+ cmp bh, 004h ; 80 ff 04 ; 0xf7a46 logo.c:309
+ jc short 07a4eh ; 72 03 ; 0xf7a49
+ sub bh, 004h ; 80 ef 04 ; 0xf7a4b logo.c:310
+ movzx ax, bh ; 0f b6 c7 ; 0xf7a4e logo.c:312
+ cwd ; 99 ; 0xf7a51
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf7a52
+ sar ax, 1 ; d1 f8 ; 0xf7a54
+ test ax, ax ; 85 c0 ; 0xf7a56
+ je short 07a5fh ; 74 05 ; 0xf7a58
+ push 00a5eh ; 68 5e 0a ; 0xf7a5a logo.c:313
+ jmp short 07a62h ; eb 03 ; 0xf7a5d logo.c:314
+ push 00a69h ; 68 69 0a ; 0xf7a5f logo.c:315
+ push strict byte 00002h ; 6a 02 ; 0xf7a62
+ call 01a23h ; e8 bc 9f ; 0xf7a64
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a67
+ movzx ax, bh ; 0f b6 c7 ; 0xf7a6a logo.c:317
+ cwd ; 99 ; 0xf7a6d
+ mov si, strict word 00002h ; be 02 00 ; 0xf7a6e
+ idiv si ; f7 fe ; 0xf7a71
+ test dx, dx ; 85 d2 ; 0xf7a73
+ je short 07a7ch ; 74 05 ; 0xf7a75
+ push 00a72h ; 68 72 0a ; 0xf7a77 logo.c:318
+ jmp short 07a7fh ; eb 03 ; 0xf7a7a logo.c:319
+ push 00a78h ; 68 78 0a ; 0xf7a7c logo.c:320
+ push si ; 56 ; 0xf7a7f
+ call 01a23h ; e8 a0 9f ; 0xf7a80
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a83
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf7a86 logo.c:322
+ jmp near 079b1h ; e9 26 ff ; 0xf7a88
+ test ch, ch ; 84 ed ; 0xf7a8b logo.c:324
+ jne short 07aa4h ; 75 15 ; 0xf7a8d
+ test cl, cl ; 84 c9 ; 0xf7a8f
+ jne short 07aa4h ; 75 11 ; 0xf7a91
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7a93
+ jne short 07aa4h ; 75 0b ; 0xf7a97
+ push 00a7fh ; 68 7f 0a ; 0xf7a99 logo.c:327
+ push strict byte 00002h ; 6a 02 ; 0xf7a9c
+ call 01a23h ; e8 82 9f ; 0xf7a9e
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7aa1
+ push 00a93h ; 68 93 0a ; 0xf7aa4 logo.c:329
+ push strict byte 00002h ; 6a 02 ; 0xf7aa7
+ call 01a23h ; e8 77 9f ; 0xf7aa9
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7aac
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7aaf logo.c:330
+ pop di ; 5f ; 0xf7ab2
+ pop si ; 5e ; 0xf7ab3
+ pop dx ; 5a ; 0xf7ab4
+ pop cx ; 59 ; 0xf7ab5
+ pop bx ; 5b ; 0xf7ab6
+ pop bp ; 5d ; 0xf7ab7
+ retn ; c3 ; 0xf7ab8
+ ; disGetNextSymbol 0xf7ab9 LB 0x3893 -> off=0x0 cb=0000000000000024 uValue=00000000000f64b9 'get_boot_drive'
+get_boot_drive: ; 0xf7ab9 LB 0x24
+ push bx ; 53 ; 0xf7ab9 logo.c:332
+ push dx ; 52 ; 0xf7aba
+ push bp ; 55 ; 0xf7abb
+ mov bp, sp ; 89 e5 ; 0xf7abc
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7abe logo.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf7ac1
+ mov es, dx ; 8e c2 ; 0xf7ac4
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7ac6
+ mov bx, 002b0h ; bb b0 02 ; 0xf7ac9 logo.c:38
+ mov es, dx ; 8e c2 ; 0xf7acc
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf7ace
+ sub AL, strict byte 002h ; 2c 02 ; 0xf7ad1 logo.c:340
+ cmp al, dl ; 38 d0 ; 0xf7ad3 logo.c:342
+ jc short 07ad9h ; 72 02 ; 0xf7ad5
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf7ad7 logo.c:343
+ pop bp ; 5d ; 0xf7ad9 logo.c:347
+ pop dx ; 5a ; 0xf7ada
+ pop bx ; 5b ; 0xf7adb
+ retn ; c3 ; 0xf7adc
+ ; disGetNextSymbol 0xf7add LB 0x386f -> off=0x0 cb=0000000000000254 uValue=00000000000f64dd 'show_logo'
+show_logo: ; 0xf7add LB 0x254
+ push bp ; 55 ; 0xf7add logo.c:349
+ mov bp, sp ; 89 e5 ; 0xf7ade
+ push bx ; 53 ; 0xf7ae0
+ push cx ; 51 ; 0xf7ae1
+ push dx ; 52 ; 0xf7ae2
+ push si ; 56 ; 0xf7ae3
+ push di ; 57 ; 0xf7ae4
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf7ae5
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7ae8 logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7aeb
+ mov es, ax ; 8e c0 ; 0xf7aee
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf7af0
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf7af3 logo.c:352
+ xor dx, dx ; 31 d2 ; 0xf7af7 logo.c:356
+ mov AL, strict byte 034h ; b0 34 ; 0xf7af9 logo.c:363
+ out strict byte 043h, AL ; e6 43 ; 0xf7afb
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7afd
+ out strict byte 040h, AL ; e6 40 ; 0xf7aff
+ mov AL, strict byte 048h ; b0 48 ; 0xf7b01
+ out strict byte 040h, AL ; e6 40 ; 0xf7b03
+ movzx ax, dl ; 0f b6 c2 ; 0xf7b05 logo.c:366
+ call 07972h ; e8 67 fe ; 0xf7b08
+ cmp ax, 066bbh ; 3d bb 66 ; 0xf7b0b logo.c:367
+ jne near 07c10h ; 0f 85 fe 00 ; 0xf7b0e
+ push SS ; 16 ; 0xf7b12 logo.c:371
+ pop ES ; 07 ; 0xf7b13
+ lea di, [bp-018h] ; 8d 7e e8 ; 0xf7b14
+ mov ax, 04f03h ; b8 03 4f ; 0xf7b17
+ int 010h ; cd 10 ; 0xf7b1a
+ mov word [es:di], bx ; 26 89 1d ; 0xf7b1c
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7b1f
+ jne near 07c10h ; 0f 85 ea 00 ; 0xf7b22
+ mov al, dl ; 88 d0 ; 0xf7b26 logo.c:375
+ add AL, strict byte 004h ; 04 04 ; 0xf7b28
+ xor ah, ah ; 30 e4 ; 0xf7b2a
+ call 0795ch ; e8 2d fe ; 0xf7b2c
+ mov bl, al ; 88 c3 ; 0xf7b2f
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf7b31
+ mov al, dl ; 88 d0 ; 0xf7b34 logo.c:376
+ add AL, strict byte 005h ; 04 05 ; 0xf7b36
+ xor ah, ah ; 30 e4 ; 0xf7b38
+ call 0795ch ; e8 1f fe ; 0xf7b3a
+ mov dh, al ; 88 c6 ; 0xf7b3d
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7b3f
+ mov al, dl ; 88 d0 ; 0xf7b42 logo.c:377
+ add AL, strict byte 002h ; 04 02 ; 0xf7b44
+ xor ah, ah ; 30 e4 ; 0xf7b46
+ call 07972h ; e8 27 fe ; 0xf7b48
+ mov cx, ax ; 89 c1 ; 0xf7b4b
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf7b4d
+ mov al, dl ; 88 d0 ; 0xf7b50 logo.c:378
+ add AL, strict byte 006h ; 04 06 ; 0xf7b52
+ xor ah, ah ; 30 e4 ; 0xf7b54
+ call 0795ch ; e8 03 fe ; 0xf7b56
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf7b59
+ test bl, bl ; 84 db ; 0xf7b5c logo.c:381
+ jne short 07b6ah ; 75 0a ; 0xf7b5e
+ test dh, dh ; 84 f6 ; 0xf7b60
+ jne short 07b6ah ; 75 06 ; 0xf7b62
+ test cx, cx ; 85 c9 ; 0xf7b64
+ je near 07c10h ; 0f 84 a6 00 ; 0xf7b66
+ mov BH, strict byte 020h ; b7 20 ; 0xf7b6a logo.c:385
+ mov dx, 001e0h ; ba e0 01 ; 0xf7b6c
+ mov cx, 00280h ; b9 80 02 ; 0xf7b6f
+ mov ax, 05642h ; b8 42 56 ; 0xf7b72
+ mov BL, strict byte 000h ; b3 00 ; 0xf7b75
+ int 010h ; cd 10 ; 0xf7b77
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7b79 logo.c:387
+ je short 07b86h ; 74 08 ; 0xf7b7c
+ mov bx, 00142h ; bb 42 01 ; 0xf7b7e logo.c:388
+ mov ax, 04f02h ; b8 02 4f ; 0xf7b81
+ int 010h ; cd 10 ; 0xf7b84
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7b86 logo.c:390
+ je short 07bb1h ; 74 25 ; 0xf7b8a
+ xor bx, bx ; 31 db ; 0xf7b8c logo.c:392
+ jmp short 07b96h ; eb 06 ; 0xf7b8e
+ inc bx ; 43 ; 0xf7b90 logo.c:394
+ cmp bx, strict byte 00010h ; 83 fb 10 ; 0xf7b91
+ jnbe short 07bb8h ; 77 22 ; 0xf7b94
+ mov ax, bx ; 89 d8 ; 0xf7b96
+ or ah, 002h ; 80 cc 02 ; 0xf7b98
+ mov dx, 003b8h ; ba b8 03 ; 0xf7b9b
+ out DX, ax ; ef ; 0xf7b9e
+ xor dx, dx ; 31 d2 ; 0xf7b9f
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7ba1
+ call 078a4h ; e8 fd fc ; 0xf7ba4
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7ba7
+ jne short 07b90h ; 75 e5 ; 0xf7ba9
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7bab
+ jmp short 07bb8h ; eb 07 ; 0xf7baf
+ mov ax, 00210h ; b8 10 02 ; 0xf7bb1 logo.c:404
+ mov dx, 003b8h ; ba b8 03 ; 0xf7bb4
+ out DX, ax ; ef ; 0xf7bb7
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7bb8 logo.c:407
+ jne short 07bd2h ; 75 14 ; 0xf7bbc
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7bbe logo.c:409
+ shr ax, 004h ; c1 e8 04 ; 0xf7bc1
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7bc4
+ call 078a4h ; e8 da fc ; 0xf7bc7
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7bca logo.c:410
+ jne short 07bd2h ; 75 04 ; 0xf7bcc
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7bce logo.c:411
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7bd2 logo.c:415
+ je short 07c03h ; 74 2b ; 0xf7bd6
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7bd8
+ jne short 07c03h ; 75 25 ; 0xf7bdc
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf7bde logo.c:417
+ jmp short 07be8h ; eb 05 ; 0xf7be1
+ dec bx ; 4b ; 0xf7be3 logo.c:419
+ test bx, bx ; 85 db ; 0xf7be4
+ jbe short 07c10h ; 76 28 ; 0xf7be6
+ mov ax, bx ; 89 d8 ; 0xf7be8
+ or ah, 002h ; 80 cc 02 ; 0xf7bea
+ mov dx, 003b8h ; ba b8 03 ; 0xf7bed
+ out DX, ax ; ef ; 0xf7bf0
+ xor dx, dx ; 31 d2 ; 0xf7bf1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7bf3
+ call 078a4h ; e8 ab fc ; 0xf7bf6
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7bf9
+ jne short 07be3h ; 75 e6 ; 0xf7bfb
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7bfd
+ jmp short 07c10h ; eb 0d ; 0xf7c01
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7c03 logo.c:428
+ jne short 07c10h ; 75 07 ; 0xf7c07
+ mov ax, 00200h ; b8 00 02 ; 0xf7c09 logo.c:429
+ mov dx, 003b8h ; ba b8 03 ; 0xf7c0c
+ out DX, ax ; ef ; 0xf7c0f
+ mov bx, 00335h ; bb 35 03 ; 0xf7c10 logo.c:43
+ mov es, si ; 8e c6 ; 0xf7c13
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7c15
+ mov AL, strict byte 003h ; b0 03 ; 0xf7c19 logo.c:437
+ mov AH, strict byte 000h ; b4 00 ; 0xf7c1b
+ int 010h ; cd 10 ; 0xf7c1d
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7c1f logo.c:440
+ je near 07d12h ; 0f 84 eb 00 ; 0xf7c23
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7c27 logo.c:443
+ jne short 07c61h ; 75 34 ; 0xf7c2b
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7c2d
+ jne short 07c61h ; 75 2e ; 0xf7c31
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf7c33
+ jne short 07c61h ; 75 28 ; 0xf7c37
+ cmp byte [bp-014h], 002h ; 80 7e ec 02 ; 0xf7c39 logo.c:445
+ jne short 07c4ah ; 75 0b ; 0xf7c3d
+ push 00a95h ; 68 95 0a ; 0xf7c3f logo.c:446
+ push strict byte 00002h ; 6a 02 ; 0xf7c42
+ call 01a23h ; e8 dc 9d ; 0xf7c44
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7c47
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7c4a logo.c:449
+ jne short 07c61h ; 75 11 ; 0xf7c4e
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7c50 logo.c:452
+ mov ax, 000c0h ; b8 c0 00 ; 0xf7c53
+ call 078a4h ; e8 4b fc ; 0xf7c56
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7c59 logo.c:453
+ jne short 07c61h ; 75 04 ; 0xf7c5b
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7c5d logo.c:454
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7c61 logo.c:459
+ je near 07d12h ; 0f 84 a9 00 ; 0xf7c65
+ mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7c69 logo.c:461
+ mov ax, 00100h ; b8 00 01 ; 0xf7c6d logo.c:464
+ mov cx, 01000h ; b9 00 10 ; 0xf7c70
+ int 010h ; cd 10 ; 0xf7c73
+ mov ax, 00700h ; b8 00 07 ; 0xf7c75
+ mov BH, strict byte 007h ; b7 07 ; 0xf7c78
+ db 033h, 0c9h
+ ; xor cx, cx ; 33 c9 ; 0xf7c7a
+ mov dx, 0184fh ; ba 4f 18 ; 0xf7c7c
+ int 010h ; cd 10 ; 0xf7c7f
+ mov ax, 00200h ; b8 00 02 ; 0xf7c81
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf7c84
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf7c86
+ int 010h ; cd 10 ; 0xf7c88
+ push 00ab7h ; 68 b7 0a ; 0xf7c8a logo.c:467
+ push strict byte 00002h ; 6a 02 ; 0xf7c8d
+ call 01a23h ; e8 91 9d ; 0xf7c8f
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7c92
+ call 07986h ; e8 ee fc ; 0xf7c95 logo.c:468
+ push 00afbh ; 68 fb 0a ; 0xf7c98 logo.c:469
+ push strict byte 00002h ; 6a 02 ; 0xf7c9b
+ call 01a23h ; e8 83 9d ; 0xf7c9d
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7ca0
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7ca3 logo.c:478
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7ca6
+ call 078a4h ; e8 f8 fb ; 0xf7ca9
+ mov bl, al ; 88 c3 ; 0xf7cac
+ test al, al ; 84 c0 ; 0xf7cae logo.c:479
+ je short 07ca3h ; 74 f1 ; 0xf7cb0
+ cmp AL, strict byte 030h ; 3c 30 ; 0xf7cb2 logo.c:481
+ je short 07d01h ; 74 4b ; 0xf7cb4
+ cmp bl, 002h ; 80 fb 02 ; 0xf7cb6 logo.c:488
+ jc short 07cdah ; 72 1f ; 0xf7cb9
+ cmp bl, 009h ; 80 fb 09 ; 0xf7cbb
+ jnbe short 07cdah ; 77 1a ; 0xf7cbe
+ movzx ax, bl ; 0f b6 c3 ; 0xf7cc0 logo.c:490
+ call 07ab9h ; e8 f3 fd ; 0xf7cc3
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf7cc6 logo.c:497
+ jne short 07ccch ; 75 02 ; 0xf7cc8
+ jmp short 07ca3h ; eb d7 ; 0xf7cca logo.c:498
+ mov bx, 00334h ; bb 34 03 ; 0xf7ccc logo.c:43
+ mov es, si ; 8e c6 ; 0xf7ccf
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7cd1
+ mov byte [bp-010h], 002h ; c6 46 f0 02 ; 0xf7cd4 logo.c:501
+ jmp short 07d01h ; eb 27 ; 0xf7cd8 logo.c:502
+ cmp bl, 02eh ; 80 fb 2e ; 0xf7cda logo.c:505
+ je short 07cefh ; 74 10 ; 0xf7cdd
+ cmp bl, 026h ; 80 fb 26 ; 0xf7cdf
+ je short 07cf5h ; 74 11 ; 0xf7ce2
+ cmp bl, 021h ; 80 fb 21 ; 0xf7ce4
+ jne short 07cfbh ; 75 12 ; 0xf7ce7
+ mov byte [bp-010h], 001h ; c6 46 f0 01 ; 0xf7ce9 logo.c:509
+ jmp short 07d01h ; eb 12 ; 0xf7ced logo.c:510
+ mov byte [bp-010h], 003h ; c6 46 f0 03 ; 0xf7cef logo.c:513
+ jmp short 07d01h ; eb 0c ; 0xf7cf3 logo.c:514
+ mov byte [bp-010h], 004h ; c6 46 f0 04 ; 0xf7cf5 logo.c:517
+ jmp short 07d01h ; eb 06 ; 0xf7cf9 logo.c:518
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf7cfb logo.c:521
+ je short 07ca3h ; 74 a2 ; 0xf7cff
+ mov bx, 00335h ; bb 35 03 ; 0xf7d01 logo.c:43
+ mov es, si ; 8e c6 ; 0xf7d04
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7d06
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7d09
+ mov AL, strict byte 003h ; b0 03 ; 0xf7d0c logo.c:528
+ mov AH, strict byte 000h ; b4 00 ; 0xf7d0e
+ int 010h ; cd 10 ; 0xf7d10
+ mov AL, strict byte 034h ; b0 34 ; 0xf7d12 logo.c:533
+ out strict byte 043h, AL ; e6 43 ; 0xf7d14
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7d16
+ out strict byte 040h, AL ; e6 40 ; 0xf7d18
+ out strict byte 040h, AL ; e6 40 ; 0xf7d1a
+ pushad ; 66 60 ; 0xf7d1c
+ push DS ; 1e ; 0xf7d1e
+ mov ds, ax ; 8e d8 ; 0xf7d1f
+ call 0edbfh ; e8 9b 70 ; 0xf7d21
+ pop DS ; 1f ; 0xf7d24
+ popad ; 66 61 ; 0xf7d25
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7d27 logo.c:536
+ pop di ; 5f ; 0xf7d2a
+ pop si ; 5e ; 0xf7d2b
+ pop dx ; 5a ; 0xf7d2c
+ pop cx ; 59 ; 0xf7d2d
+ pop bx ; 5b ; 0xf7d2e
+ pop bp ; 5d ; 0xf7d2f
+ retn ; c3 ; 0xf7d30
+ ; disGetNextSymbol 0xf7d31 LB 0x361b -> off=0x0 cb=0000000000000067 uValue=00000000000f6731 'delay_boot'
+delay_boot: ; 0xf7d31 LB 0x67
+ push bp ; 55 ; 0xf7d31 logo.c:539
+ mov bp, sp ; 89 e5 ; 0xf7d32
+ push bx ; 53 ; 0xf7d34
+ push dx ; 52 ; 0xf7d35
+ mov dx, ax ; 89 c2 ; 0xf7d36
+ test ax, ax ; 85 c0 ; 0xf7d38 logo.c:543
+ je short 07d91h ; 74 55 ; 0xf7d3a
+ mov AL, strict byte 034h ; b0 34 ; 0xf7d3c logo.c:547
+ out strict byte 043h, AL ; e6 43 ; 0xf7d3e
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7d40
+ out strict byte 040h, AL ; e6 40 ; 0xf7d42
+ mov AL, strict byte 048h ; b0 48 ; 0xf7d44
+ out strict byte 040h, AL ; e6 40 ; 0xf7d46
+ push dx ; 52 ; 0xf7d48 logo.c:549
+ push 00b45h ; 68 45 0b ; 0xf7d49
+ push strict byte 00002h ; 6a 02 ; 0xf7d4c
+ call 01a23h ; e8 d2 9c ; 0xf7d4e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7d51
+ mov bx, dx ; 89 d3 ; 0xf7d54 logo.c:550
+ test bx, bx ; 85 db ; 0xf7d56
+ jbe short 07d71h ; 76 17 ; 0xf7d58
+ push bx ; 53 ; 0xf7d5a logo.c:552
+ push 00b63h ; 68 63 0b ; 0xf7d5b
+ push strict byte 00002h ; 6a 02 ; 0xf7d5e
+ call 01a23h ; e8 c0 9c ; 0xf7d60
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7d63
+ xor dx, dx ; 31 d2 ; 0xf7d66 logo.c:553
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7d68
+ call 078a4h ; e8 36 fb ; 0xf7d6b
+ dec bx ; 4b ; 0xf7d6e logo.c:554
+ jmp short 07d56h ; eb e5 ; 0xf7d6f
+ push 00a93h ; 68 93 0a ; 0xf7d71 logo.c:555
+ push strict byte 00002h ; 6a 02 ; 0xf7d74
+ call 01a23h ; e8 aa 9c ; 0xf7d76
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7d79
+ mov AL, strict byte 034h ; b0 34 ; 0xf7d7c logo.c:557
+ out strict byte 043h, AL ; e6 43 ; 0xf7d7e
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7d80
+ out strict byte 040h, AL ; e6 40 ; 0xf7d82
+ out strict byte 040h, AL ; e6 40 ; 0xf7d84
+ pushad ; 66 60 ; 0xf7d86
+ push DS ; 1e ; 0xf7d88
+ mov ds, ax ; 8e d8 ; 0xf7d89
+ call 0edbfh ; e8 31 70 ; 0xf7d8b
+ pop DS ; 1f ; 0xf7d8e
+ popad ; 66 61 ; 0xf7d8f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7d91 logo.c:558
+ pop dx ; 5a ; 0xf7d94
+ pop bx ; 5b ; 0xf7d95
+ pop bp ; 5d ; 0xf7d96
+ retn ; c3 ; 0xf7d97
+ ; disGetNextSymbol 0xf7d98 LB 0x35b4 -> off=0x0 cb=00000000000000d5 uValue=00000000000f6798 'scsi_cmd_data_in'
+scsi_cmd_data_in: ; 0xf7d98 LB 0xd5
+ push bp ; 55 ; 0xf7d98 scsi.c:65
+ mov bp, sp ; 89 e5 ; 0xf7d99
+ push si ; 56 ; 0xf7d9b
+ push di ; 57 ; 0xf7d9c
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7d9d
+ mov si, ax ; 89 c6 ; 0xf7da0
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf7da2
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7da5
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf7da8
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7dab
+ mov dx, si ; 89 f2 ; 0xf7dae scsi.c:73
+ in AL, DX ; ec ; 0xf7db0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7db1
+ test AL, strict byte 001h ; a8 01 ; 0xf7db3 scsi.c:74
+ jne short 07daeh ; 75 f7 ; 0xf7db5
+ cmp byte [bp+004h], 010h ; 80 7e 04 10 ; 0xf7db7 scsi.c:76
+ jne short 07dc1h ; 75 04 ; 0xf7dbb
+ xor ax, ax ; 31 c0 ; 0xf7dbd
+ jmp short 07dc5h ; eb 04 ; 0xf7dbf
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7dc1
+ mov di, ax ; 89 c7 ; 0xf7dc5
+ mov ax, bx ; 89 d8 ; 0xf7dc7
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7dc9
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7dcc
+ shr dx, 1 ; d1 ea ; 0xf7dcf
+ rcr ax, 1 ; d1 d8 ; 0xf7dd1
+ loop 07dcfh ; e2 fa ; 0xf7dd3
+ mov cx, ax ; 89 c1 ; 0xf7dd5
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7dd7
+ or cx, di ; 09 f9 ; 0xf7ddb
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7ddd scsi.c:77
+ mov dx, si ; 89 f2 ; 0xf7de0
+ out DX, AL ; ee ; 0xf7de2
+ xor al, al ; 30 c0 ; 0xf7de3 scsi.c:78
+ out DX, AL ; ee ; 0xf7de5
+ mov al, cl ; 88 c8 ; 0xf7de6 scsi.c:79
+ out DX, AL ; ee ; 0xf7de8
+ mov al, bl ; 88 d8 ; 0xf7de9 scsi.c:80
+ out DX, AL ; ee ; 0xf7deb
+ mov ax, bx ; 89 d8 ; 0xf7dec scsi.c:81
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7dee
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7df1
+ shr dx, 1 ; d1 ea ; 0xf7df4
+ rcr ax, 1 ; d1 d8 ; 0xf7df6
+ loop 07df4h ; e2 fa ; 0xf7df8
+ mov dx, si ; 89 f2 ; 0xf7dfa
+ out DX, AL ; ee ; 0xf7dfc
+ xor cx, cx ; 31 c9 ; 0xf7dfd scsi.c:82
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7dff
+ cmp cx, ax ; 39 c1 ; 0xf7e03
+ jnc short 07e15h ; 73 0e ; 0xf7e05
+ les di, [bp-00ah] ; c4 7e f6 ; 0xf7e07 scsi.c:83
+ add di, cx ; 01 cf ; 0xf7e0a
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf7e0c
+ mov dx, si ; 89 f2 ; 0xf7e0f
+ out DX, AL ; ee ; 0xf7e11
+ inc cx ; 41 ; 0xf7e12
+ jmp short 07dffh ; eb ea ; 0xf7e13
+ mov dx, si ; 89 f2 ; 0xf7e15 scsi.c:87
+ in AL, DX ; ec ; 0xf7e17
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7e18
+ test AL, strict byte 001h ; a8 01 ; 0xf7e1a scsi.c:88
+ jne short 07e15h ; 75 f7 ; 0xf7e1c
+ test AL, strict byte 002h ; a8 02 ; 0xf7e1e scsi.c:91
+ je short 07e30h ; 74 0e ; 0xf7e20
+ lea dx, [si+003h] ; 8d 54 03 ; 0xf7e22 scsi.c:92
+ xor al, al ; 30 c0 ; 0xf7e25
+ out DX, AL ; ee ; 0xf7e27
+ in AL, DX ; ec ; 0xf7e28 scsi.c:94
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7e29
+ mov di, strict word 00004h ; bf 04 00 ; 0xf7e2b scsi.c:96
+ jmp short 07e62h ; eb 32 ; 0xf7e2e
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf7e30 scsi.c:102
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7e33
+ jne short 07e3fh ; 75 06 ; 0xf7e37
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf7e39
+ jbe short 07e59h ; 76 1a ; 0xf7e3d
+ mov cx, 08000h ; b9 00 80 ; 0xf7e3f scsi.c:104
+ les di, [bp+006h] ; c4 7e 06 ; 0xf7e42
+ rep insb ; f3 6c ; 0xf7e45
+ add bx, 08000h ; 81 c3 00 80 ; 0xf7e47 scsi.c:105
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7e4b
+ mov ax, es ; 8c c0 ; 0xf7e4f
+ add ax, 00800h ; 05 00 08 ; 0xf7e51
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7e54
+ jmp short 07e30h ; eb d7 ; 0xf7e57 scsi.c:107
+ mov cx, bx ; 89 d9 ; 0xf7e59 scsi.c:110
+ les di, [bp+006h] ; c4 7e 06 ; 0xf7e5b
+ rep insb ; f3 6c ; 0xf7e5e
+ xor di, di ; 31 ff ; 0xf7e60 scsi.c:112
+ mov ax, di ; 89 f8 ; 0xf7e62 scsi.c:113
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7e64
+ pop di ; 5f ; 0xf7e67
+ pop si ; 5e ; 0xf7e68
+ pop bp ; 5d ; 0xf7e69
+ retn 0000ah ; c2 0a 00 ; 0xf7e6a
+ ; disGetNextSymbol 0xf7e6d LB 0x34df -> off=0x0 cb=00000000000000d5 uValue=00000000000f686d 'scsi_cmd_data_out'
+scsi_cmd_data_out: ; 0xf7e6d LB 0xd5
+ push bp ; 55 ; 0xf7e6d scsi.c:115
+ mov bp, sp ; 89 e5 ; 0xf7e6e
+ push si ; 56 ; 0xf7e70
+ push di ; 57 ; 0xf7e71
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7e72
+ mov di, ax ; 89 c7 ; 0xf7e75
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf7e77
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7e7a
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf7e7d
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7e80
+ mov dx, di ; 89 fa ; 0xf7e83 scsi.c:123
+ in AL, DX ; ec ; 0xf7e85
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7e86
+ test AL, strict byte 001h ; a8 01 ; 0xf7e88 scsi.c:124
+ jne short 07e83h ; 75 f7 ; 0xf7e8a
+ cmp byte [bp+004h], 010h ; 80 7e 04 10 ; 0xf7e8c scsi.c:127
+ jne short 07e96h ; 75 04 ; 0xf7e90
+ xor ax, ax ; 31 c0 ; 0xf7e92
+ jmp short 07e9ah ; eb 04 ; 0xf7e94
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7e96
+ mov si, ax ; 89 c6 ; 0xf7e9a
+ mov ax, bx ; 89 d8 ; 0xf7e9c
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7e9e
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7ea1
+ shr dx, 1 ; d1 ea ; 0xf7ea4
+ rcr ax, 1 ; d1 d8 ; 0xf7ea6
+ loop 07ea4h ; e2 fa ; 0xf7ea8
+ mov cx, ax ; 89 c1 ; 0xf7eaa
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7eac
+ or cx, si ; 09 f1 ; 0xf7eb0
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7eb2 scsi.c:128
+ mov dx, di ; 89 fa ; 0xf7eb5
+ out DX, AL ; ee ; 0xf7eb7
+ mov AL, strict byte 001h ; b0 01 ; 0xf7eb8 scsi.c:129
+ out DX, AL ; ee ; 0xf7eba
+ mov al, cl ; 88 c8 ; 0xf7ebb scsi.c:130
+ out DX, AL ; ee ; 0xf7ebd
+ mov al, bl ; 88 d8 ; 0xf7ebe scsi.c:131
+ out DX, AL ; ee ; 0xf7ec0
+ mov ax, bx ; 89 d8 ; 0xf7ec1 scsi.c:132
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7ec3
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7ec6
+ shr dx, 1 ; d1 ea ; 0xf7ec9
+ rcr ax, 1 ; d1 d8 ; 0xf7ecb
+ loop 07ec9h ; e2 fa ; 0xf7ecd
+ mov dx, di ; 89 fa ; 0xf7ecf
+ out DX, AL ; ee ; 0xf7ed1
+ xor cx, cx ; 31 c9 ; 0xf7ed2 scsi.c:133
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7ed4
+ cmp cx, ax ; 39 c1 ; 0xf7ed8
+ jnc short 07eeah ; 73 0e ; 0xf7eda
+ les si, [bp-00ah] ; c4 76 f6 ; 0xf7edc scsi.c:134
+ add si, cx ; 01 ce ; 0xf7edf
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7ee1
+ mov dx, di ; 89 fa ; 0xf7ee4
+ out DX, AL ; ee ; 0xf7ee6
+ inc cx ; 41 ; 0xf7ee7
+ jmp short 07ed4h ; eb ea ; 0xf7ee8
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf7eea scsi.c:139
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7eed
+ jne short 07ef9h ; 75 06 ; 0xf7ef1
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf7ef3
+ jbe short 07f14h ; 76 1b ; 0xf7ef7
+ mov cx, 08000h ; b9 00 80 ; 0xf7ef9 scsi.c:141
+ les si, [bp+006h] ; c4 76 06 ; 0xf7efc
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7eff
+ add bx, 08000h ; 81 c3 00 80 ; 0xf7f02 scsi.c:142
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7f06
+ mov ax, es ; 8c c0 ; 0xf7f0a
+ add ax, 00800h ; 05 00 08 ; 0xf7f0c
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7f0f
+ jmp short 07eeah ; eb d6 ; 0xf7f12 scsi.c:144
+ mov cx, bx ; 89 d9 ; 0xf7f14 scsi.c:147
+ les si, [bp+006h] ; c4 76 06 ; 0xf7f16
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7f19
+ mov dx, di ; 89 fa ; 0xf7f1c scsi.c:151
+ in AL, DX ; ec ; 0xf7f1e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7f1f
+ test AL, strict byte 001h ; a8 01 ; 0xf7f21 scsi.c:152
+ jne short 07f1ch ; 75 f7 ; 0xf7f23
+ test AL, strict byte 002h ; a8 02 ; 0xf7f25 scsi.c:155
+ je short 07f37h ; 74 0e ; 0xf7f27
+ lea dx, [di+003h] ; 8d 55 03 ; 0xf7f29 scsi.c:156
+ xor al, al ; 30 c0 ; 0xf7f2c
+ out DX, AL ; ee ; 0xf7f2e
+ in AL, DX ; ec ; 0xf7f2f scsi.c:158
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7f30
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7f32 scsi.c:160
+ jmp short 07f39h ; eb 02 ; 0xf7f35
+ xor ax, ax ; 31 c0 ; 0xf7f37 scsi.c:163
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7f39 scsi.c:164
+ pop di ; 5f ; 0xf7f3c
+ pop si ; 5e ; 0xf7f3d
+ pop bp ; 5d ; 0xf7f3e
+ retn 0000ah ; c2 0a 00 ; 0xf7f3f
+ ; disGetNextSymbol 0xf7f42 LB 0x340a -> off=0x0 cb=00000000000000db uValue=00000000000f6942 'scsi_read_sectors'
+scsi_read_sectors: ; 0xf7f42 LB 0xdb
+ push bp ; 55 ; 0xf7f42 scsi.c:173
+ mov bp, sp ; 89 e5 ; 0xf7f43
+ push si ; 56 ; 0xf7f45
+ push di ; 57 ; 0xf7f46
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7f47
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7f4a
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7f4d scsi.c:182
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7f50
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7f54
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7f56
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7f59 scsi.c:183
+ jbe short 07f70h ; 76 13 ; 0xf7f5b
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7f5d scsi.c:184
+ push ax ; 50 ; 0xf7f61
+ push 00b68h ; 68 68 0b ; 0xf7f62
+ push 00b7ah ; 68 7a 0b ; 0xf7f65
+ push strict byte 00007h ; 6a 07 ; 0xf7f68
+ call 01a23h ; e8 b6 9a ; 0xf7f6a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7f6d
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7f70 scsi.c:186
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7f73
+ mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf7f77 scsi.c:189
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7f7c scsi.c:190
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7f80
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7f84
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7f88
+ xchg ah, al ; 86 c4 ; 0xf7f8b
+ xchg bh, bl ; 86 df ; 0xf7f8d
+ xchg ch, cl ; 86 cd ; 0xf7f8f
+ xchg dh, dl ; 86 d6 ; 0xf7f91
+ xchg dx, ax ; 92 ; 0xf7f93
+ xchg bx, cx ; 87 cb ; 0xf7f94
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7f96
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7f99
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7f9c
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7f9f
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7fa2 scsi.c:191
+ mov ax, di ; 89 f8 ; 0xf7fa6 scsi.c:192
+ xor dx, dx ; 31 d2 ; 0xf7fa8
+ xchg ah, al ; 86 c4 ; 0xf7faa
+ xchg dh, dl ; 86 d6 ; 0xf7fac
+ xchg dx, ax ; 92 ; 0xf7fae
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7faf
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7fb2
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7fb5 scsi.c:193
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7fb9 scsi.c:196
+ sal ax, 002h ; c1 e0 02 ; 0xf7fbd
+ mov bx, si ; 89 f3 ; 0xf7fc0
+ add bx, ax ; 01 c3 ; 0xf7fc2
+ mov ax, word [es:bx+00294h] ; 26 8b 87 94 02 ; 0xf7fc4
+ mov dl, byte [es:bx+00296h] ; 26 8a 97 96 02 ; 0xf7fc9 scsi.c:197
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf7fce scsi.c:202
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7fd1
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7fd6
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7fd9
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7fdc
+ loop 07fd9h ; e2 f8 ; 0xf7fdf
+ push dword [bp-00ah] ; 66 ff 76 f6 ; 0xf7fe1
+ db 066h, 026h, 0ffh, 074h, 008h
+ ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf7fe5
+ push strict byte 00010h ; 6a 10 ; 0xf7fea
+ xor dh, dh ; 30 f6 ; 0xf7fec
+ mov cx, ss ; 8c d1 ; 0xf7fee
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7ff0
+ call 07d98h ; e8 a2 fd ; 0xf7ff3
+ mov ah, al ; 88 c4 ; 0xf7ff6
+ test al, al ; 84 c0 ; 0xf7ff8 scsi.c:205
+ jne short 08011h ; 75 15 ; 0xf7ffa
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7ffc scsi.c:207
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7fff
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8003 scsi.c:208
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf8006
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf800a
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf800d
+ movzx ax, ah ; 0f b6 c4 ; 0xf8011 scsi.c:212
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8014 scsi.c:213
+ pop di ; 5f ; 0xf8017
+ pop si ; 5e ; 0xf8018
+ pop bp ; 5d ; 0xf8019
+ retn 00004h ; c2 04 00 ; 0xf801a
+ ; disGetNextSymbol 0xf801d LB 0x332f -> off=0x0 cb=00000000000000db uValue=00000000000f6a1d 'scsi_write_sectors'
+scsi_write_sectors: ; 0xf801d LB 0xdb
+ push bp ; 55 ; 0xf801d scsi.c:222
+ mov bp, sp ; 89 e5 ; 0xf801e
+ push si ; 56 ; 0xf8020
+ push di ; 57 ; 0xf8021
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf8022
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf8025
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8028 scsi.c:231
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf802b
+ sub AL, strict byte 008h ; 2c 08 ; 0xf802f
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf8031
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf8034 scsi.c:232
+ jbe short 0804bh ; 76 13 ; 0xf8036
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf8038 scsi.c:233
+ push ax ; 50 ; 0xf803c
+ push 00b99h ; 68 99 0b ; 0xf803d
+ push 00b7ah ; 68 7a 0b ; 0xf8040
+ push strict byte 00007h ; 6a 07 ; 0xf8043
+ call 01a23h ; e8 db 99 ; 0xf8045
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8048
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf804b scsi.c:235
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf804e
+ mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf8052 scsi.c:238
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf8057 scsi.c:239
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf805b
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf805f
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8063
+ xchg ah, al ; 86 c4 ; 0xf8066
+ xchg bh, bl ; 86 df ; 0xf8068
+ xchg ch, cl ; 86 cd ; 0xf806a
+ xchg dh, dl ; 86 d6 ; 0xf806c
+ xchg dx, ax ; 92 ; 0xf806e
+ xchg bx, cx ; 87 cb ; 0xf806f
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf8071
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf8074
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf8077
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf807a
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf807d scsi.c:240
+ mov ax, di ; 89 f8 ; 0xf8081 scsi.c:241
+ xor dx, dx ; 31 d2 ; 0xf8083
+ xchg ah, al ; 86 c4 ; 0xf8085
+ xchg dh, dl ; 86 d6 ; 0xf8087
+ xchg dx, ax ; 92 ; 0xf8089
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf808a
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf808d
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf8090 scsi.c:242
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf8094 scsi.c:244
+ sal ax, 002h ; c1 e0 02 ; 0xf8098
+ mov bx, si ; 89 f3 ; 0xf809b
+ add bx, ax ; 01 c3 ; 0xf809d
+ mov ax, word [es:bx+00294h] ; 26 8b 87 94 02 ; 0xf809f
+ mov dl, byte [es:bx+00296h] ; 26 8a 97 96 02 ; 0xf80a4 scsi.c:245
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf80a9 scsi.c:250
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf80ac
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf80b1
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf80b4
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf80b7
+ loop 080b4h ; e2 f8 ; 0xf80ba
+ push dword [bp-00ah] ; 66 ff 76 f6 ; 0xf80bc
+ db 066h, 026h, 0ffh, 074h, 008h
+ ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf80c0
+ push strict byte 00010h ; 6a 10 ; 0xf80c5
+ xor dh, dh ; 30 f6 ; 0xf80c7
+ mov cx, ss ; 8c d1 ; 0xf80c9
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf80cb
+ call 07e6dh ; e8 9c fd ; 0xf80ce
+ mov ah, al ; 88 c4 ; 0xf80d1
+ test al, al ; 84 c0 ; 0xf80d3 scsi.c:253
+ jne short 080ech ; 75 15 ; 0xf80d5
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf80d7 scsi.c:255
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf80da
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf80de scsi.c:256
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf80e1
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf80e5
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf80e8
+ movzx ax, ah ; 0f b6 c4 ; 0xf80ec scsi.c:260
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf80ef scsi.c:261
+ pop di ; 5f ; 0xf80f2
+ pop si ; 5e ; 0xf80f3
+ pop bp ; 5d ; 0xf80f4
+ retn 00004h ; c2 04 00 ; 0xf80f5
+ ; disGetNextSymbol 0xf80f8 LB 0x3254 -> off=0x0 cb=0000000000000168 uValue=00000000000f6af8 'scsi_cmd_packet'
+scsi_cmd_packet: ; 0xf80f8 LB 0x168
+ push bp ; 55 ; 0xf80f8 scsi.c:281
+ mov bp, sp ; 89 e5 ; 0xf80f9
+ push si ; 56 ; 0xf80fb
+ push di ; 57 ; 0xf80fc
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf80fd
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf8100
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf8103
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf8106
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8109 scsi.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf810c
+ mov es, dx ; 8e c2 ; 0xf810f
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf8111
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf8114 scsi.c:49
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8117
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf811a scsi.c:292
+ jne short 0813fh ; 75 1f ; 0xf811e
+ mov bx, 00f24h ; bb 24 0f ; 0xf8120 scsi.c:293
+ mov cx, ds ; 8c d9 ; 0xf8123
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8125
+ call 019e2h ; e8 b7 98 ; 0xf8128
+ push 00bach ; 68 ac 0b ; 0xf812b
+ push 00bbch ; 68 bc 0b ; 0xf812e
+ push strict byte 00004h ; 6a 04 ; 0xf8131
+ call 01a23h ; e8 ed 98 ; 0xf8133
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf8136
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf8139 scsi.c:294
+ jmp near 08255h ; e9 16 01 ; 0xf813c
+ sub ax, strict word 00008h ; 2d 08 00 ; 0xf813f scsi.c:298
+ sal ax, 002h ; c1 e0 02 ; 0xf8142 scsi.c:308
+ sub byte [bp-006h], 002h ; 80 6e fa 02 ; 0xf8145 scsi.c:306
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8149
+ mov di, si ; 89 f7 ; 0xf814c
+ add di, ax ; 01 c7 ; 0xf814e
+ mov bx, word [es:di+00294h] ; 26 8b 9d 94 02 ; 0xf8150
+ mov al, byte [es:di+00296h] ; 26 8a 85 96 02 ; 0xf8155 scsi.c:309
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf815a
+ mov dx, bx ; 89 da ; 0xf815d scsi.c:313
+ in AL, DX ; ec ; 0xf815f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf8160
+ test AL, strict byte 001h ; a8 01 ; 0xf8162 scsi.c:314
+ jne short 0815dh ; 75 f7 ; 0xf8164
+ xor dx, bx ; 31 da ; 0xf8166 scsi.c:320
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8168
+ add ax, word [bp+004h] ; 03 46 04 ; 0xf816b
+ mov cx, word [bp+008h] ; 8b 4e 08 ; 0xf816e
+ adc cx, dx ; 11 d1 ; 0xf8171
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8173
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf8176
+ xor di, di ; 31 ff ; 0xf817a
+ add ax, dx ; 01 d0 ; 0xf817c
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf817e
+ adc di, cx ; 11 cf ; 0xf8181
+ mov dx, di ; 89 fa ; 0xf8183 scsi.c:322
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf8185
+ shr dx, 1 ; d1 ea ; 0xf8188
+ rcr ax, 1 ; d1 d8 ; 0xf818a
+ loop 08188h ; e2 fa ; 0xf818c
+ and ax, 000f0h ; 25 f0 00 ; 0xf818e
+ movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf8191
+ or cx, ax ; 09 c1 ; 0xf8195
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8197 scsi.c:323
+ mov dx, bx ; 89 da ; 0xf819a
+ out DX, AL ; ee ; 0xf819c
+ xor al, al ; 30 c0 ; 0xf819d scsi.c:324
+ out DX, AL ; ee ; 0xf819f
+ mov al, cl ; 88 c8 ; 0xf81a0 scsi.c:325
+ out DX, AL ; ee ; 0xf81a2
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf81a3 scsi.c:326
+ out DX, AL ; ee ; 0xf81a6
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf81a7 scsi.c:327
+ mov dx, di ; 89 fa ; 0xf81aa
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf81ac
+ shr dx, 1 ; d1 ea ; 0xf81af
+ rcr ax, 1 ; d1 d8 ; 0xf81b1
+ loop 081afh ; e2 fa ; 0xf81b3
+ mov dx, bx ; 89 da ; 0xf81b5
+ out DX, AL ; ee ; 0xf81b7
+ xor cx, cx ; 31 c9 ; 0xf81b8 scsi.c:328
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf81ba
+ cmp cx, ax ; 39 c1 ; 0xf81be
+ jnc short 081d0h ; 73 0e ; 0xf81c0
+ les di, [bp-00eh] ; c4 7e f2 ; 0xf81c2 scsi.c:329
+ add di, cx ; 01 cf ; 0xf81c5
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf81c7
+ mov dx, bx ; 89 da ; 0xf81ca
+ out DX, AL ; ee ; 0xf81cc
+ inc cx ; 41 ; 0xf81cd
+ jmp short 081bah ; eb ea ; 0xf81ce
+ mov dx, bx ; 89 da ; 0xf81d0 scsi.c:333
+ in AL, DX ; ec ; 0xf81d2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf81d3
+ test AL, strict byte 001h ; a8 01 ; 0xf81d5 scsi.c:334
+ jne short 081d0h ; 75 f7 ; 0xf81d7
+ test AL, strict byte 002h ; a8 02 ; 0xf81d9 scsi.c:337
+ je short 081ebh ; 74 0e ; 0xf81db
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf81dd scsi.c:338
+ xor al, al ; 30 c0 ; 0xf81e0
+ out DX, AL ; ee ; 0xf81e2
+ in AL, DX ; ec ; 0xf81e3 scsi.c:340
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf81e4
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf81e6 scsi.c:342
+ jmp short 08255h ; eb 6a ; 0xf81e9
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf81eb scsi.c:347
+ test ax, ax ; 85 c0 ; 0xf81ee
+ je short 081fah ; 74 08 ; 0xf81f0
+ lea dx, [bx+001h] ; 8d 57 01 ; 0xf81f2 scsi.c:348
+ mov cx, ax ; 89 c1 ; 0xf81f5
+ in AL, DX ; ec ; 0xf81f7
+ loop 081f7h ; e2 fd ; 0xf81f8
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf81fa scsi.c:350
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf81fd
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf8200
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xf8204
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf8207
+ lea ax, [bx+001h] ; 8d 47 01 ; 0xf820b scsi.c:355
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf820e
+ jne short 0821bh ; 75 07 ; 0xf8212
+ cmp word [bp+006h], 08000h ; 81 7e 06 00 80 ; 0xf8214
+ jbe short 08238h ; 76 1d ; 0xf8219
+ mov dx, ax ; 89 c2 ; 0xf821b scsi.c:357
+ mov cx, 08000h ; b9 00 80 ; 0xf821d
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf8220
+ rep insb ; f3 6c ; 0xf8223
+ add word [bp+006h], 08000h ; 81 46 06 00 80 ; 0xf8225 scsi.c:358
+ adc word [bp+008h], strict byte 0ffffh ; 83 56 08 ff ; 0xf822a
+ mov ax, es ; 8c c0 ; 0xf822e
+ add ax, 00800h ; 05 00 08 ; 0xf8230
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf8233
+ jmp short 0820bh ; eb d3 ; 0xf8236 scsi.c:360
+ mov dx, ax ; 89 c2 ; 0xf8238 scsi.c:363
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf823a
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf823d
+ rep insb ; f3 6c ; 0xf8240
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8242 scsi.c:365
+ cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00 ; 0xf8245
+ je short 08253h ; 74 07 ; 0xf824a
+ mov cx, word [es:si+020h] ; 26 8b 4c 20 ; 0xf824c scsi.c:366
+ in AL, DX ; ec ; 0xf8250
+ loop 08250h ; e2 fd ; 0xf8251
+ xor dx, dx ; 31 d2 ; 0xf8253 scsi.c:368
+ mov ax, dx ; 89 d0 ; 0xf8255 scsi.c:369
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8257
+ pop di ; 5f ; 0xf825a
+ pop si ; 5e ; 0xf825b
+ pop bp ; 5d ; 0xf825c
+ retn 0000ch ; c2 0c 00 ; 0xf825d
+ ; disGetNextSymbol 0xf8260 LB 0x30ec -> off=0x0 cb=0000000000000484 uValue=00000000000f6c60 'scsi_enumerate_attached_devices'
+scsi_enumerate_attached_devices: ; 0xf8260 LB 0x484
+ push bp ; 55 ; 0xf8260 scsi.c:377
+ mov bp, sp ; 89 e5 ; 0xf8261
+ push bx ; 53 ; 0xf8263
+ push cx ; 51 ; 0xf8264
+ push dx ; 52 ; 0xf8265
+ push si ; 56 ; 0xf8266
+ push di ; 57 ; 0xf8267
+ sub sp, 0023ch ; 81 ec 3c 02 ; 0xf8268
+ push ax ; 50 ; 0xf826c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf826d scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8270
+ mov es, ax ; 8e c0 ; 0xf8273
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8275
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf8278 scsi.c:49
+ mov word [bp-022h], ax ; 89 46 de ; 0xf827b
+ mov word [bp-01ch], strict word 00000h ; c7 46 e4 00 00 ; 0xf827e scsi.c:386
+ jmp near 08666h ; e9 e0 03 ; 0xf8283
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf8286 scsi.c:406
+ jnc near 086dah ; 0f 83 4e 04 ; 0xf8288
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf828c scsi.c:421
+ xor bx, bx ; 31 db ; 0xf828f
+ mov dx, ss ; 8c d2 ; 0xf8291
+ lea ax, [bp-046h] ; 8d 46 ba ; 0xf8293
+ call 0b2b0h ; e8 17 30 ; 0xf8296
+ mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xf8299 scsi.c:422
+ mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xf829d scsi.c:423
+ mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xf82a1 scsi.c:424
+ push dword 000000020h ; 66 6a 20 ; 0xf82a5 scsi.c:426
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf82a8
+ push SS ; 16 ; 0xf82ac
+ push dx ; 52 ; 0xf82ad
+ push strict byte 00010h ; 6a 10 ; 0xf82ae
+ movzx dx, byte [bp-01ch] ; 0f b6 56 e4 ; 0xf82b0
+ mov cx, ss ; 8c d1 ; 0xf82b4
+ lea bx, [bp-046h] ; 8d 5e ba ; 0xf82b6
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf82b9
+ call 07d98h ; e8 d8 fa ; 0xf82bd
+ test al, al ; 84 c0 ; 0xf82c0 scsi.c:427
+ je short 082d2h ; 74 0e ; 0xf82c2
+ push 00bdch ; 68 dc 0b ; 0xf82c4 scsi.c:428
+ push 00c15h ; 68 15 0c ; 0xf82c7
+ push strict byte 00007h ; 6a 07 ; 0xf82ca
+ call 01a23h ; e8 54 97 ; 0xf82cc
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf82cf
+ mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xf82d2 scsi.c:433
+ mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xf82d6
+ mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xf82da
+ mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xf82de
+ xchg ah, al ; 86 c4 ; 0xf82e2
+ xchg bh, bl ; 86 df ; 0xf82e4
+ xchg ch, cl ; 86 cd ; 0xf82e6
+ xchg dh, dl ; 86 d6 ; 0xf82e8
+ xchg dx, ax ; 92 ; 0xf82ea
+ xchg bx, cx ; 87 cb ; 0xf82eb
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xf82ed
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf82f0
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xf82f3
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf82f6
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xf82f9
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf82fc
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf82ff
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf8302
+ movzx si, byte [bp-0023eh] ; 0f b6 b6 c2 fd ; 0xf8305 scsi.c:435
+ sal si, 008h ; c1 e6 08 ; 0xf830a
+ movzx ax, byte [bp-0023dh] ; 0f b6 86 c3 fd ; 0xf830d
+ xor bx, bx ; 31 db ; 0xf8312
+ or si, ax ; 09 c6 ; 0xf8314
+ movzx ax, byte [bp-0023ch] ; 0f b6 86 c4 fd ; 0xf8316
+ xor dx, dx ; 31 d2 ; 0xf831b
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf831d
+ sal ax, 1 ; d1 e0 ; 0xf8320
+ rcl dx, 1 ; d1 d2 ; 0xf8322
+ loop 08320h ; e2 fa ; 0xf8324
+ or ax, bx ; 09 d8 ; 0xf8326
+ or dx, si ; 09 f2 ; 0xf8328
+ movzx bx, byte [bp-0023bh] ; 0f b6 9e c5 fd ; 0xf832a
+ or ax, bx ; 09 d8 ; 0xf832f
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf8331
+ test dx, dx ; 85 d2 ; 0xf8334 scsi.c:441
+ jne short 0833dh ; 75 05 ; 0xf8336
+ cmp ax, 00200h ; 3d 00 02 ; 0xf8338
+ je short 0835dh ; 74 20 ; 0xf833b
+ mov bx, 00f24h ; bb 24 0f ; 0xf833d scsi.c:444
+ mov cx, ds ; 8c d9 ; 0xf8340
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8342
+ call 019e2h ; e8 9a 96 ; 0xf8345
+ push dx ; 52 ; 0xf8348
+ push word [bp-028h] ; ff 76 d8 ; 0xf8349
+ push word [bp-01ch] ; ff 76 e4 ; 0xf834c
+ push 00c34h ; 68 34 0c ; 0xf834f
+ push strict byte 00004h ; 6a 04 ; 0xf8352
+ call 01a23h ; e8 cc 96 ; 0xf8354
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf8357
+ jmp near 0865dh ; e9 00 03 ; 0xf835a scsi.c:445
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf835d scsi.c:449
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8360
+ jc short 08370h ; 72 0c ; 0xf8362
+ jbe short 08378h ; 76 12 ; 0xf8364
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf8366
+ je short 08380h ; 74 16 ; 0xf8368
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf836a
+ je short 0837ch ; 74 0e ; 0xf836c
+ jmp short 083c9h ; eb 59 ; 0xf836e
+ test al, al ; 84 c0 ; 0xf8370
+ jne short 083c9h ; 75 55 ; 0xf8372
+ mov BL, strict byte 090h ; b3 90 ; 0xf8374 scsi.c:452
+ jmp short 08382h ; eb 0a ; 0xf8376 scsi.c:453
+ mov BL, strict byte 098h ; b3 98 ; 0xf8378 scsi.c:455
+ jmp short 08382h ; eb 06 ; 0xf837a scsi.c:456
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xf837c scsi.c:458
+ jmp short 08382h ; eb 02 ; 0xf837e scsi.c:459
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xf8380 scsi.c:461
+ mov al, bl ; 88 d8 ; 0xf8382 scsi.c:465
+ add AL, strict byte 007h ; 04 07 ; 0xf8384
+ movzx cx, al ; 0f b6 c8 ; 0xf8386
+ mov ax, cx ; 89 c8 ; 0xf8389
+ call 01765h ; e8 d7 93 ; 0xf838b
+ test al, al ; 84 c0 ; 0xf838e
+ je short 083c9h ; 74 37 ; 0xf8390
+ mov al, bl ; 88 d8 ; 0xf8392 scsi.c:470
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8394
+ xor ah, ah ; 30 e4 ; 0xf8396
+ call 01765h ; e8 ca 93 ; 0xf8398
+ movzx dx, al ; 0f b6 d0 ; 0xf839b
+ sal dx, 008h ; c1 e2 08 ; 0xf839e
+ movzx ax, bl ; 0f b6 c3 ; 0xf83a1
+ call 01765h ; e8 be 93 ; 0xf83a4
+ xor ah, ah ; 30 e4 ; 0xf83a7
+ add ax, dx ; 01 d0 ; 0xf83a9
+ cwd ; 99 ; 0xf83ab
+ mov si, ax ; 89 c6 ; 0xf83ac
+ mov al, bl ; 88 d8 ; 0xf83ae scsi.c:471
+ add AL, strict byte 002h ; 04 02 ; 0xf83b0
+ xor ah, ah ; 30 e4 ; 0xf83b2
+ call 01765h ; e8 ae 93 ; 0xf83b4
+ xor ah, ah ; 30 e4 ; 0xf83b7
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf83b9
+ mov ax, cx ; 89 c8 ; 0xf83bc scsi.c:472
+ call 01765h ; e8 a4 93 ; 0xf83be
+ xor ah, ah ; 30 e4 ; 0xf83c1
+ mov word [bp-026h], ax ; 89 46 da ; 0xf83c3
+ jmp near 084b8h ; e9 ef 00 ; 0xf83c6 scsi.c:474
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf83c9 scsi.c:475
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf83cc
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf83cf
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf83d2
+ mov si, strict word 0000ch ; be 0c 00 ; 0xf83d5
+ call 0b290h ; e8 b5 2e ; 0xf83d8
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf83db
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf83de
+ mov word [bp-018h], cx ; 89 4e e8 ; 0xf83e1
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf83e4
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf83e7 scsi.c:479
+ test ax, ax ; 85 c0 ; 0xf83ea
+ jnbe short 08404h ; 77 16 ; 0xf83ec
+ jne near 08479h ; 0f 85 87 00 ; 0xf83ee
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf83f2
+ jnbe short 08404h ; 77 0c ; 0xf83f6
+ jne near 08479h ; 0f 85 7d 00 ; 0xf83f8
+ cmp word [bp-010h], strict byte 00040h ; 83 7e f0 40 ; 0xf83fc
+ jnbe short 08404h ; 77 02 ; 0xf8400
+ jne short 08479h ; 75 75 ; 0xf8402
+ mov word [bp-032h], 000ffh ; c7 46 ce ff 00 ; 0xf8404 scsi.c:481
+ mov word [bp-026h], strict word 0003fh ; c7 46 da 3f 00 ; 0xf8409 scsi.c:482
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf840e scsi.c:484
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf8411
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf8414
+ mov si, strict word 00006h ; be 06 00 ; 0xf8417
+ call 0b290h ; e8 73 2e ; 0xf841a
+ mov si, word [bp-02ah] ; 8b 76 d6 ; 0xf841d
+ add si, dx ; 01 d6 ; 0xf8420
+ mov word [bp-02ch], si ; 89 76 d4 ; 0xf8422
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf8425
+ adc dx, cx ; 11 ca ; 0xf8428
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf842a
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf842d
+ adc dx, bx ; 11 da ; 0xf8430
+ mov word [bp-034h], dx ; 89 56 cc ; 0xf8432
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf8435
+ adc dx, ax ; 11 c2 ; 0xf8438
+ mov word [bp-036h], dx ; 89 56 ca ; 0xf843a
+ mov ax, dx ; 89 d0 ; 0xf843d scsi.c:485
+ mov bx, word [bp-034h] ; 8b 5e cc ; 0xf843f
+ mov cx, word [bp-01eh] ; 8b 4e e2 ; 0xf8442
+ mov dx, si ; 89 f2 ; 0xf8445
+ mov si, strict word 00008h ; be 08 00 ; 0xf8447
+ call 0b290h ; e8 43 2e ; 0xf844a
+ mov word [bp-02eh], bx ; 89 5e d2 ; 0xf844d
+ mov word [bp-020h], cx ; 89 4e e0 ; 0xf8450
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf8453
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf8456
+ mov bx, word [bp-034h] ; 8b 5e cc ; 0xf8459
+ mov cx, word [bp-01eh] ; 8b 4e e2 ; 0xf845c
+ mov dx, word [bp-02ch] ; 8b 56 d4 ; 0xf845f
+ mov si, strict word 00010h ; be 10 00 ; 0xf8462
+ call 0b290h ; e8 28 2e ; 0xf8465
+ mov si, word [bp-030h] ; 8b 76 d0 ; 0xf8468
+ add si, dx ; 01 d6 ; 0xf846b
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf846d
+ adc dx, cx ; 11 ca ; 0xf8470
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf8472
+ adc ax, bx ; 11 d8 ; 0xf8475
+ jmp short 084b8h ; eb 3f ; 0xf8477 scsi.c:487
+ test ax, ax ; 85 c0 ; 0xf8479
+ jnbe short 0848fh ; 77 12 ; 0xf847b
+ jne short 0849bh ; 75 1c ; 0xf847d
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf847f
+ jnbe short 0848fh ; 77 0a ; 0xf8483
+ jne short 0849bh ; 75 14 ; 0xf8485
+ cmp word [bp-010h], strict byte 00020h ; 83 7e f0 20 ; 0xf8487
+ jnbe short 0848fh ; 77 02 ; 0xf848b
+ jne short 0849bh ; 75 0c ; 0xf848d
+ mov word [bp-032h], 00080h ; c7 46 ce 80 00 ; 0xf848f scsi.c:489
+ mov word [bp-026h], strict word 00020h ; c7 46 da 20 00 ; 0xf8494 scsi.c:490
+ jmp short 084b4h ; eb 19 ; 0xf8499 scsi.c:493
+ mov word [bp-032h], strict word 00040h ; c7 46 ce 40 00 ; 0xf849b scsi.c:495
+ mov word [bp-026h], strict word 00020h ; c7 46 da 20 00 ; 0xf84a0 scsi.c:496
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf84a5 scsi.c:497
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf84a8
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf84ab
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf84ae
+ call 0b290h ; e8 dc 2d ; 0xf84b1
+ mov si, dx ; 89 d6 ; 0xf84b4
+ mov dx, cx ; 89 ca ; 0xf84b6
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf84b8 scsi.c:502
+ add AL, strict byte 008h ; 04 08 ; 0xf84bb
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf84bd
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf84c0 scsi.c:504
+ sal ax, 002h ; c1 e0 02 ; 0xf84c4
+ mov es, [bp-022h] ; 8e 46 de ; 0xf84c7
+ mov bx, di ; 89 fb ; 0xf84ca
+ add bx, ax ; 01 c3 ; 0xf84cc
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf84ce
+ mov word [es:bx+00294h], ax ; 26 89 87 94 02 ; 0xf84d2
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf84d7 scsi.c:505
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xf84da
+ movzx bx, byte [bp-00eh] ; 0f b6 5e f2 ; 0xf84df scsi.c:506
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf84e3
+ add bx, di ; 01 fb ; 0xf84e6
+ db 066h, 026h, 0c7h, 047h, 022h, 004h, 0ffh, 000h, 000h
+ ; mov dword [es:bx+022h], strict dword 00000ff04h ; 66 26 c7 47 22 04 ff 00 00; 0xf84e8
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf84f1 scsi.c:510
+ mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xf84f4
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf84f8 scsi.c:511
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf84fd scsi.c:514
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf8500
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf8504 scsi.c:515
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf8507
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf850b scsi.c:516
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf850e
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf8512 scsi.c:517
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf8515
+ test dx, dx ; 85 d2 ; 0xf8519 scsi.c:519
+ jne short 08523h ; 75 06 ; 0xf851b
+ cmp si, 00400h ; 81 fe 00 04 ; 0xf851d
+ jbe short 08531h ; 76 0e ; 0xf8521
+ mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xf8523 scsi.c:520
+ mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xf8529 scsi.c:521
+ jmp short 08539h ; eb 08 ; 0xf852f scsi.c:522
+ mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xf8531 scsi.c:523
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf8535 scsi.c:524
+ mov bx, 00f24h ; bb 24 0f ; 0xf8539 scsi.c:528
+ mov cx, ds ; 8c d9 ; 0xf853c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf853e
+ call 019e2h ; e8 9e 94 ; 0xf8541
+ push word [bp-024h] ; ff 76 dc ; 0xf8544
+ push word [bp-016h] ; ff 76 ea ; 0xf8547
+ push dword [bp-012h] ; 66 ff 76 ee ; 0xf854a
+ push word [bp-026h] ; ff 76 da ; 0xf854e
+ push word [bp-032h] ; ff 76 ce ; 0xf8551
+ push dx ; 52 ; 0xf8554
+ push si ; 56 ; 0xf8555
+ push word [bp-01ch] ; ff 76 e4 ; 0xf8556
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf8559
+ push ax ; 50 ; 0xf855d
+ push 00c62h ; 68 62 0c ; 0xf855e
+ push strict byte 00004h ; 6a 04 ; 0xf8561
+ call 01a23h ; e8 bd 94 ; 0xf8563
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xf8566
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf8569 scsi.c:530
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf856d
+ mov es, [bp-022h] ; 8e 46 de ; 0xf8570
+ mov bx, di ; 89 fb ; 0xf8573
+ add bx, ax ; 01 c3 ; 0xf8575
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf8577
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf857a
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf857e
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf8581
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8585
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8588
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf858c
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf858f
+ mov al, byte [es:di+00252h] ; 26 8a 85 52 02 ; 0xf8593 scsi.c:533
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8598 scsi.c:534
+ add ah, 008h ; 80 c4 08 ; 0xf859b
+ movzx bx, al ; 0f b6 d8 ; 0xf859e
+ add bx, di ; 01 fb ; 0xf85a1
+ mov byte [es:bx+00253h], ah ; 26 88 a7 53 02 ; 0xf85a3
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf85a8 scsi.c:535
+ mov byte [es:di+00252h], al ; 26 88 85 52 02 ; 0xf85aa scsi.c:536
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf85af scsi.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf85b2
+ mov es, ax ; 8e c0 ; 0xf85b5
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf85b7
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf85ba scsi.c:540
+ mov byte [es:bx], al ; 26 88 07 ; 0xf85bc scsi.c:43
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf85bf scsi.c:543
+ jmp near 08652h ; e9 8d 00 ; 0xf85c2 scsi.c:545
+ mov bx, 00f24h ; bb 24 0f ; 0xf85c5 scsi.c:557
+ mov cx, ds ; 8c d9 ; 0xf85c8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf85ca
+ call 019e2h ; e8 12 94 ; 0xf85cd
+ push word [bp-01ch] ; ff 76 e4 ; 0xf85d0
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf85d3
+ push ax ; 50 ; 0xf85d7
+ push 00c90h ; 68 90 0c ; 0xf85d8
+ push strict byte 00004h ; 6a 04 ; 0xf85db
+ call 01a23h ; e8 43 94 ; 0xf85dd
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf85e0
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf85e3 scsi.c:560
+ add AL, strict byte 008h ; 04 08 ; 0xf85e6
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf85e8
+ test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xf85eb scsi.c:562
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf85f0
+ xor ah, ah ; 30 e4 ; 0xf85f3
+ mov dx, ax ; 89 c2 ; 0xf85f5
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf85f7 scsi.c:564
+ sal ax, 002h ; c1 e0 02 ; 0xf85fb
+ mov es, [bp-022h] ; 8e 46 de ; 0xf85fe
+ mov bx, di ; 89 fb ; 0xf8601
+ add bx, ax ; 01 c3 ; 0xf8603
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8605
+ mov word [es:bx+00294h], ax ; 26 89 87 94 02 ; 0xf8609
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf860e scsi.c:565
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xf8611
+ movzx bx, byte [bp-00eh] ; 0f b6 5e f2 ; 0xf8616 scsi.c:566
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf861a
+ add bx, di ; 01 fb ; 0xf861d
+ mov word [es:bx+022h], 00504h ; 26 c7 47 22 04 05 ; 0xf861f
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf8625 scsi.c:568
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf8629 scsi.c:569
+ mov byte [es:bx+027h], dh ; 26 88 77 27 ; 0xf862f scsi.c:570
+ mov al, byte [es:di+00267h] ; 26 8a 85 67 02 ; 0xf8633 scsi.c:573
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8638 scsi.c:574
+ add ah, 008h ; 80 c4 08 ; 0xf863b
+ movzx bx, al ; 0f b6 d8 ; 0xf863e
+ add bx, di ; 01 fb ; 0xf8641
+ mov byte [es:bx+00268h], ah ; 26 88 a7 68 02 ; 0xf8643
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8648 scsi.c:575
+ mov byte [es:di+00267h], al ; 26 88 85 67 02 ; 0xf864a scsi.c:576
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf864f scsi.c:578
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8652 scsi.c:583
+ mov es, [bp-022h] ; 8e 46 de ; 0xf8655
+ mov byte [es:di+002a4h], al ; 26 88 85 a4 02 ; 0xf8658
+ inc word [bp-01ch] ; ff 46 e4 ; 0xf865d scsi.c:584
+ cmp word [bp-01ch], strict byte 00010h ; 83 7e e4 10 ; 0xf8660
+ jnl short 086dah ; 7d 74 ; 0xf8664
+ mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xf8666
+ xor al, al ; 30 c0 ; 0xf866a
+ mov byte [bp-045h], al ; 88 46 bb ; 0xf866c
+ mov byte [bp-044h], al ; 88 46 bc ; 0xf866f
+ mov byte [bp-043h], al ; 88 46 bd ; 0xf8672
+ mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xf8675
+ mov byte [bp-041h], al ; 88 46 bf ; 0xf8679
+ push dword 000000005h ; 66 6a 05 ; 0xf867c
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf867f
+ push SS ; 16 ; 0xf8683
+ push dx ; 52 ; 0xf8684
+ push strict byte 00006h ; 6a 06 ; 0xf8685
+ movzx dx, byte [bp-01ch] ; 0f b6 56 e4 ; 0xf8687
+ mov cx, ss ; 8c d1 ; 0xf868b
+ lea bx, [bp-046h] ; 8d 5e ba ; 0xf868d
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8690
+ call 07d98h ; e8 01 f7 ; 0xf8694
+ test al, al ; 84 c0 ; 0xf8697
+ je short 086a9h ; 74 0e ; 0xf8699
+ push 00bdch ; 68 dc 0b ; 0xf869b
+ push 00bfch ; 68 fc 0b ; 0xf869e
+ push strict byte 00007h ; 6a 07 ; 0xf86a1
+ call 01a23h ; e8 7d 93 ; 0xf86a3
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf86a6
+ mov es, [bp-022h] ; 8e 46 de ; 0xf86a9
+ mov al, byte [es:di+002a4h] ; 26 8a 85 a4 02 ; 0xf86ac
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf86b1
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf86b4
+ jne short 086c4h ; 75 09 ; 0xf86b9
+ test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xf86bb
+ je near 08286h ; 0f 84 c2 fb ; 0xf86c0
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf86c4
+ jne short 08652h ; 75 87 ; 0xf86c9
+ mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xf86cb
+ and AL, strict byte 01fh ; 24 1f ; 0xf86cf
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf86d1
+ je near 085c5h ; 0f 84 ee fe ; 0xf86d3
+ jmp near 08652h ; e9 78 ff ; 0xf86d7
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf86da scsi.c:585
+ pop di ; 5f ; 0xf86dd
+ pop si ; 5e ; 0xf86de
+ pop dx ; 5a ; 0xf86df
+ pop cx ; 59 ; 0xf86e0
+ pop bx ; 5b ; 0xf86e1
+ pop bp ; 5d ; 0xf86e2
+ retn ; c3 ; 0xf86e3
+ ; disGetNextSymbol 0xf86e4 LB 0x2c68 -> off=0x0 cb=000000000000002d uValue=00000000000f70e4 'scsi_pci_init'
+scsi_pci_init: ; 0xf86e4 LB 0x2d
+ push bp ; 55 ; 0xf86e4 scsi.c:587
+ mov bp, sp ; 89 e5 ; 0xf86e5
+ push bx ; 53 ; 0xf86e7
+ push cx ; 51 ; 0xf86e8
+ push si ; 56 ; 0xf86e9
+ call 0b032h ; e8 45 29 ; 0xf86ea scsi.c:591
+ mov dx, ax ; 89 c2 ; 0xf86ed
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf86ef scsi.c:592
+ je short 08709h ; 74 15 ; 0xf86f2
+ movzx si, dl ; 0f b6 f2 ; 0xf86f4 scsi.c:599
+ mov ax, dx ; 89 d0 ; 0xf86f7
+ shr ax, 008h ; c1 e8 08 ; 0xf86f9
+ xor ah, ah ; 30 e4 ; 0xf86fc
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf86fe
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf8701
+ mov dx, si ; 89 f2 ; 0xf8704
+ call 0b0c4h ; e8 bb 29 ; 0xf8706
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8709 scsi.c:600
+ pop si ; 5e ; 0xf870c
+ pop cx ; 59 ; 0xf870d
+ pop bx ; 5b ; 0xf870e
+ pop bp ; 5d ; 0xf870f
+ retn ; c3 ; 0xf8710
+ ; disGetNextSymbol 0xf8711 LB 0x2c3b -> off=0x0 cb=0000000000000081 uValue=00000000000f7111 'scsi_init'
+scsi_init: ; 0xf8711 LB 0x81
+ push bp ; 55 ; 0xf8711 scsi.c:605
+ mov bp, sp ; 89 e5 ; 0xf8712
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8714 scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8717
+ mov es, ax ; 8e c0 ; 0xf871a
+ mov es, [es:bx] ; 26 8e 07 ; 0xf871c
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf871f scsi.c:49
+ mov byte [es:bx+002a4h], 000h ; 26 c6 87 a4 02 00 ; 0xf8722 scsi.c:612
+ mov AL, strict byte 055h ; b0 55 ; 0xf8728 scsi.c:617
+ mov dx, 00432h ; ba 32 04 ; 0xf872a
+ out DX, AL ; ee ; 0xf872d
+ in AL, DX ; ec ; 0xf872e scsi.c:618
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf872f
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf8731 scsi.c:620
+ jne short 0874ah ; 75 15 ; 0xf8733
+ xor al, al ; 30 c0 ; 0xf8735 scsi.c:624
+ mov dx, 00433h ; ba 33 04 ; 0xf8737
+ out DX, AL ; ee ; 0xf873a
+ mov ax, 00430h ; b8 30 04 ; 0xf873b scsi.c:625
+ call 08260h ; e8 1f fb ; 0xf873e
+ mov dx, 01040h ; ba 40 10 ; 0xf8741 scsi.c:626
+ mov ax, 0104bh ; b8 4b 10 ; 0xf8744
+ call 086e4h ; e8 9a ff ; 0xf8747
+ mov AL, strict byte 055h ; b0 55 ; 0xf874a scsi.c:634
+ mov dx, 00436h ; ba 36 04 ; 0xf874c
+ out DX, AL ; ee ; 0xf874f
+ in AL, DX ; ec ; 0xf8750 scsi.c:635
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf8751
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf8753 scsi.c:637
+ jne short 0876ch ; 75 15 ; 0xf8755
+ xor al, al ; 30 c0 ; 0xf8757 scsi.c:641
+ mov dx, 00437h ; ba 37 04 ; 0xf8759
+ out DX, AL ; ee ; 0xf875c
+ mov ax, 00434h ; b8 34 04 ; 0xf875d scsi.c:642
+ call 08260h ; e8 fd fa ; 0xf8760
+ mov dx, strict word 00030h ; ba 30 00 ; 0xf8763 scsi.c:643
+ mov ax, 01000h ; b8 00 10 ; 0xf8766
+ call 086e4h ; e8 78 ff ; 0xf8769
+ mov AL, strict byte 055h ; b0 55 ; 0xf876c scsi.c:651
+ mov dx, 0043ah ; ba 3a 04 ; 0xf876e
+ out DX, AL ; ee ; 0xf8771
+ in AL, DX ; ec ; 0xf8772 scsi.c:652
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf8773
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf8775 scsi.c:654
+ jne short 0878eh ; 75 15 ; 0xf8777
+ xor al, al ; 30 c0 ; 0xf8779 scsi.c:658
+ mov dx, 0043bh ; ba 3b 04 ; 0xf877b
+ out DX, AL ; ee ; 0xf877e
+ mov ax, 00438h ; b8 38 04 ; 0xf877f scsi.c:659
+ call 08260h ; e8 db fa ; 0xf8782
+ mov dx, strict word 00054h ; ba 54 00 ; 0xf8785 scsi.c:660
+ mov ax, 01000h ; b8 00 10 ; 0xf8788
+ call 086e4h ; e8 56 ff ; 0xf878b
+ mov sp, bp ; 89 ec ; 0xf878e scsi.c:666
+ pop bp ; 5d ; 0xf8790
+ retn ; c3 ; 0xf8791
+ ; disGetNextSymbol 0xf8792 LB 0x2bba -> off=0x0 cb=000000000000001b uValue=00000000000f7192 'ahci_ctrl_extract_bits'
+ahci_ctrl_extract_bits: ; 0xf8792 LB 0x1b
+ push si ; 56 ; 0xf8792 ahci.c:279
+ push bp ; 55 ; 0xf8793
+ mov bp, sp ; 89 e5 ; 0xf8794
+ mov si, bx ; 89 de ; 0xf8796
+ and ax, bx ; 21 d8 ; 0xf8798 ahci.c:281
+ and dx, cx ; 21 ca ; 0xf879a
+ movzx cx, byte [bp+006h] ; 0f b6 4e 06 ; 0xf879c
+ jcxz 087a8h ; e3 06 ; 0xf87a0
+ shr dx, 1 ; d1 ea ; 0xf87a2
+ rcr ax, 1 ; d1 d8 ; 0xf87a4
+ loop 087a2h ; e2 fa ; 0xf87a6
+ pop bp ; 5d ; 0xf87a8 ahci.c:282
+ pop si ; 5e ; 0xf87a9
+ retn 00002h ; c2 02 00 ; 0xf87aa
+ ; disGetNextSymbol 0xf87ad LB 0x2b9f -> off=0x0 cb=000000000000001e uValue=00000000000f71ad 'ahci_addr_to_phys'
+ahci_addr_to_phys: ; 0xf87ad LB 0x1e
+ push bx ; 53 ; 0xf87ad ahci.c:287
+ push cx ; 51 ; 0xf87ae
+ push bp ; 55 ; 0xf87af
+ mov bp, sp ; 89 e5 ; 0xf87b0
+ mov bx, ax ; 89 c3 ; 0xf87b2
+ mov ax, dx ; 89 d0 ; 0xf87b4
+ xor dx, dx ; 31 d2 ; 0xf87b6 ahci.c:289
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf87b8
+ sal ax, 1 ; d1 e0 ; 0xf87bb
+ rcl dx, 1 ; d1 d2 ; 0xf87bd
+ loop 087bbh ; e2 fa ; 0xf87bf
+ xor cx, cx ; 31 c9 ; 0xf87c1
+ add ax, bx ; 01 d8 ; 0xf87c3
+ adc dx, cx ; 11 ca ; 0xf87c5
+ pop bp ; 5d ; 0xf87c7 ahci.c:290
+ pop cx ; 59 ; 0xf87c8
+ pop bx ; 5b ; 0xf87c9
+ retn ; c3 ; 0xf87ca
+ ; disGetNextSymbol 0xf87cb LB 0x2b81 -> off=0x0 cb=000000000000014b uValue=00000000000f71cb 'ahci_port_cmd_sync'
+ahci_port_cmd_sync: ; 0xf87cb LB 0x14b
+ push bp ; 55 ; 0xf87cb ahci.c:295
+ mov bp, sp ; 89 e5 ; 0xf87cc
+ push cx ; 51 ; 0xf87ce
+ push si ; 56 ; 0xf87cf
+ push di ; 57 ; 0xf87d0
+ push ax ; 50 ; 0xf87d1
+ mov si, ax ; 89 c6 ; 0xf87d2
+ mov cx, dx ; 89 d1 ; 0xf87d4
+ mov al, bl ; 88 d8 ; 0xf87d6
+ mov es, dx ; 8e c2 ; 0xf87d8 ahci.c:300
+ mov ah, byte [es:si+00262h] ; 26 8a a4 62 02 ; 0xf87da
+ mov byte [bp-008h], ah ; 88 66 f8 ; 0xf87df
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf87e2 ahci.c:301
+ cmp ah, 0ffh ; 80 fc ff ; 0xf87e7 ahci.c:303
+ je near 0890eh ; 0f 84 20 01 ; 0xf87ea
+ movzx dx, byte [es:si+00263h] ; 26 0f b6 94 63 02 ; 0xf87ee ahci.c:306
+ xor di, di ; 31 ff ; 0xf87f4
+ or di, 00080h ; 81 cf 80 00 ; 0xf87f6
+ xor ah, ah ; 30 e4 ; 0xf87fa
+ or di, ax ; 09 c7 ; 0xf87fc
+ mov word [es:si], di ; 26 89 3c ; 0xf87fe
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf8801
+ 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; 0xf8805 ahci.c:307
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf880e ahci.c:308
+ mov dx, cx ; 89 ca ; 0xf8812
+ call 087adh ; e8 96 ff ; 0xf8814
+ mov es, cx ; 8e c1 ; 0xf8817
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8819
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf881d
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf8821 ahci.c:311
+ sal di, 007h ; c1 e7 07 ; 0xf8825
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8828
+ xor cx, cx ; 31 c9 ; 0xf882c ahci.c:252
+ mov dx, bx ; 89 da ; 0xf882e
+ xchg cx, ax ; 91 ; 0xf8830
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8831
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8835
+ out DX, eax ; 66 ef ; 0xf8837
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf8839 ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf883c
+ in eax, DX ; 66 ed ; 0xf883e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8840
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8842
+ xchg dx, ax ; 92 ; 0xf8846
+ or AL, strict byte 011h ; 0c 11 ; 0xf8847
+ mov cx, dx ; 89 d1 ; 0xf8849
+ mov dx, si ; 89 f2 ; 0xf884b
+ xchg cx, ax ; 91 ; 0xf884d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf884e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8852
+ out DX, eax ; 66 ef ; 0xf8854
+ lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf8856 ahci.c:315
+ cwd ; 99 ; 0xf885a
+ mov cx, dx ; 89 d1 ; 0xf885b
+ mov dx, bx ; 89 da ; 0xf885d
+ xchg cx, ax ; 91 ; 0xf885f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8860
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8864
+ out DX, eax ; 66 ef ; 0xf8866
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8868
+ xor cx, cx ; 31 c9 ; 0xf886b
+ mov dx, si ; 89 f2 ; 0xf886d
+ xchg cx, ax ; 91 ; 0xf886f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8870
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8874
+ out DX, eax ; 66 ef ; 0xf8876
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf8878 ahci.c:319
+ sal ax, 007h ; c1 e0 07 ; 0xf887c
+ add ax, 00110h ; 05 10 01 ; 0xf887f
+ xor cx, cx ; 31 c9 ; 0xf8882 ahci.c:271
+ mov dx, bx ; 89 da ; 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
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf888f ahci.c:272
+ in eax, DX ; 66 ed ; 0xf8892
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8894
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8896
+ xchg dx, ax ; 92 ; 0xf889a
+ test dh, 040h ; f6 c6 40 ; 0xf889b
+ jne short 088a4h ; 75 04 ; 0xf889e
+ test AL, strict byte 001h ; a8 01 ; 0xf88a0
+ je short 088a8h ; 74 04 ; 0xf88a2
+ mov AL, strict byte 001h ; b0 01 ; 0xf88a4
+ jmp short 088aah ; eb 02 ; 0xf88a6
+ xor al, al ; 30 c0 ; 0xf88a8
+ test al, al ; 84 c0 ; 0xf88aa ahci.c:273
+ je short 08878h ; 74 ca ; 0xf88ac
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf88ae ahci.c:325
+ sal di, 007h ; c1 e7 07 ; 0xf88b2
+ lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf88b5
+ xor cx, cx ; 31 c9 ; 0xf88b9 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf88bb
+ xchg cx, ax ; 91 ; 0xf88bd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88be
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88c2
+ out DX, eax ; 66 ef ; 0xf88c4
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf88c6 ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf88c9
+ in eax, DX ; 66 ed ; 0xf88cb
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf88cd
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf88cf
+ xchg dx, ax ; 92 ; 0xf88d3
+ or AL, strict byte 001h ; 0c 01 ; 0xf88d4
+ mov cx, dx ; 89 d1 ; 0xf88d6
+ mov dx, si ; 89 f2 ; 0xf88d8
+ xchg cx, ax ; 91 ; 0xf88da
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88db
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88df
+ out DX, eax ; 66 ef ; 0xf88e1
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf88e3 ahci.c:329
+ xor cx, cx ; 31 c9 ; 0xf88e7 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf88e9
+ xchg cx, ax ; 91 ; 0xf88eb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88ec
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88f0
+ out DX, eax ; 66 ef ; 0xf88f2
+ mov dx, si ; 89 f2 ; 0xf88f4 ahci.c:262
+ in eax, DX ; 66 ed ; 0xf88f6
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf88f8
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf88fa
+ xchg dx, ax ; 92 ; 0xf88fe
+ and AL, strict byte 0feh ; 24 fe ; 0xf88ff
+ mov cx, dx ; 89 d1 ; 0xf8901
+ mov dx, si ; 89 f2 ; 0xf8903
+ xchg cx, ax ; 91 ; 0xf8905
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8906
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf890a
+ out DX, eax ; 66 ef ; 0xf890c
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf890e ahci.c:335
+ pop di ; 5f ; 0xf8911
+ pop si ; 5e ; 0xf8912
+ pop cx ; 59 ; 0xf8913
+ pop bp ; 5d ; 0xf8914
+ retn ; c3 ; 0xf8915
+ ; disGetNextSymbol 0xf8916 LB 0x2a36 -> off=0x0 cb=0000000000000262 uValue=00000000000f7316 'ahci_cmd_data'
+ahci_cmd_data: ; 0xf8916 LB 0x262
+ push bp ; 55 ; 0xf8916 ahci.c:340
+ mov bp, sp ; 89 e5 ; 0xf8917
+ push cx ; 51 ; 0xf8919
+ push si ; 56 ; 0xf891a
+ push di ; 57 ; 0xf891b
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf891c
+ push ax ; 50 ; 0xf891f
+ push dx ; 52 ; 0xf8920
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8921
+ xor di, di ; 31 ff ; 0xf8924 ahci.c:342
+ mov es, dx ; 8e c2 ; 0xf8926
+ mov bx, ax ; 89 c3 ; 0xf8928
+ mov ax, word [es:bx+002aeh] ; 26 8b 87 ae 02 ; 0xf892a
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf892f
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf8932
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8935
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8938 ahci.c:343
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf893c
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf893f ahci.c:344
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf8943
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8946 ahci.c:347
+ xor bx, bx ; 31 db ; 0xf8949
+ mov ax, 00080h ; b8 80 00 ; 0xf894b
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf894e
+ call 0b2b0h ; e8 5c 29 ; 0xf8951
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8954 ahci.c:350
+ mov word [es:di+00080h], 08027h ; 26 c7 85 80 00 27 80 ; 0xf8957
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf895e ahci.c:352
+ mov byte [es:di+00082h], al ; 26 88 85 82 00 ; 0xf8961
+ mov byte [es:di+00083h], 000h ; 26 c6 85 83 00 00 ; 0xf8966 ahci.c:353
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf896c ahci.c:355
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf896f
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8972
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8975
+ mov byte [es:di+00084h], al ; 26 88 85 84 00 ; 0xf8978
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf897d ahci.c:356
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8980
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8984
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8988
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf898b
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf898f
+ mov si, strict word 00008h ; be 08 00 ; 0xf8992
+ call 0b290h ; e8 f8 28 ; 0xf8995
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8998
+ mov byte [es:di+00085h], dl ; 26 88 95 85 00 ; 0xf899b
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf89a0 ahci.c:357
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf89a3
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf89a6
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf89aa
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf89ae
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf89b1
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf89b5
+ mov si, strict word 00010h ; be 10 00 ; 0xf89b8
+ call 0b290h ; e8 d2 28 ; 0xf89bb
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89be
+ mov byte [es:di+00086h], dl ; 26 88 95 86 00 ; 0xf89c1
+ mov byte [es:di+00087h], 040h ; 26 c6 85 87 00 40 ; 0xf89c6 ahci.c:358
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf89cc ahci.c:360
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf89cf
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf89d2
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf89d6
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf89da
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf89dd
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf89e1
+ mov si, strict word 00018h ; be 18 00 ; 0xf89e4
+ call 0b290h ; e8 a6 28 ; 0xf89e7
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89ea
+ mov byte [es:di+00088h], dl ; 26 88 95 88 00 ; 0xf89ed
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf89f2 ahci.c:361
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf89f5
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf89f8
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf89fc
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8a00
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8a03
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8a07
+ mov si, strict word 00020h ; be 20 00 ; 0xf8a0a
+ call 0b290h ; e8 80 28 ; 0xf8a0d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a10
+ mov byte [es:di+00089h], dl ; 26 88 95 89 00 ; 0xf8a13
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8a18 ahci.c:362
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8a1b
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8a1e
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8a22
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8a26
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8a29
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8a2d
+ mov si, strict word 00028h ; be 28 00 ; 0xf8a30
+ call 0b290h ; e8 5a 28 ; 0xf8a33
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a36
+ mov byte [es:di+0008ah], dl ; 26 88 95 8a 00 ; 0xf8a39
+ mov byte [es:di+0008bh], 000h ; 26 c6 85 8b 00 00 ; 0xf8a3e ahci.c:363
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf8a44 ahci.c:365
+ mov byte [es:di+0008ch], al ; 26 88 85 8c 00 ; 0xf8a47
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8a4c ahci.c:366
+ shr ax, 008h ; c1 e8 08 ; 0xf8a4f
+ mov byte [es:di+0008dh], al ; 26 88 85 8d 00 ; 0xf8a52
+ mov word [es:di+00276h], strict word 00010h ; 26 c7 85 76 02 10 00 ; 0xf8a57 ahci.c:369
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8a5e ahci.c:372
+ xor dx, dx ; 31 d2 ; 0xf8a61
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8a63
+ xor cx, cx ; 31 c9 ; 0xf8a66
+ call 0b210h ; e8 a5 27 ; 0xf8a68
+ push dx ; 52 ; 0xf8a6b
+ push ax ; 50 ; 0xf8a6c
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8a6d
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8a70
+ mov bx, word [es:bx+008h] ; 26 8b 5f 08 ; 0xf8a73
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8a77
+ mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf8a7a
+ mov ax, 0026ah ; b8 6a 02 ; 0xf8a7e
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a81
+ call 0b166h ; e8 df 26 ; 0xf8a84
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a87 ahci.c:375
+ mov ax, word [es:di+0027eh] ; 26 8b 85 7e 02 ; 0xf8a8a
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf8a8f
+ mov dx, word [es:di+00280h] ; 26 8b 95 80 02 ; 0xf8a92
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf8a97
+ movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8a9a
+ sal bx, 004h ; c1 e3 04 ; 0xf8aa0
+ mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf8aa3
+ mov word [es:bx+0010eh], dx ; 26 89 97 0e 01 ; 0xf8aa8
+ movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8aad ahci.c:376
+ sal bx, 004h ; c1 e3 04 ; 0xf8ab3
+ mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf8ab6
+ mov dx, word [es:di+0027ch] ; 26 8b 95 7c 02 ; 0xf8abb
+ mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf8ac0
+ mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf8ac5
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8aca ahci.c:377
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8acf ahci.c:379
+ mov bx, si ; 89 f3 ; 0xf8ad2
+ mov ax, word [es:bx+020h] ; 26 8b 47 20 ; 0xf8ad4
+ test ax, ax ; 85 c0 ; 0xf8ad8
+ je short 08b15h ; 74 39 ; 0xf8ada
+ dec ax ; 48 ; 0xf8adc ahci.c:380
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8add
+ movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8ae0
+ sal bx, 004h ; c1 e3 04 ; 0xf8ae6
+ mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf8ae9
+ mov word [es:bx+0010eh], di ; 26 89 bf 0e 01 ; 0xf8aee
+ movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8af3 ahci.c:381
+ sal bx, 004h ; c1 e3 04 ; 0xf8af9
+ mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf8afc
+ mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf8b01
+ mov word [es:bx+00100h], dx ; 26 89 97 00 01 ; 0xf8b06
+ mov word [es:bx+00102h], ax ; 26 89 87 02 01 ; 0xf8b0b
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8b10 ahci.c:382
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8b15 ahci.c:397
+ cmp AL, strict byte 035h ; 3c 35 ; 0xf8b18
+ jne short 08b22h ; 75 06 ; 0xf8b1a
+ mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf8b1c ahci.c:398
+ jmp short 08b39h ; eb 17 ; 0xf8b20 ahci.c:399
+ cmp AL, strict byte 0a0h ; 3c a0 ; 0xf8b22
+ jne short 08b35h ; 75 0f ; 0xf8b24
+ or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf8b26 ahci.c:400
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8b2a ahci.c:401
+ or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf8b2d
+ jmp short 08b39h ; eb 04 ; 0xf8b33 ahci.c:402
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf8b35 ahci.c:403
+ or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf8b39 ahci.c:405
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf8b3d ahci.c:407
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8b41
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8b44
+ call 087cbh ; e8 81 fc ; 0xf8b47
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf8b4a ahci.c:410
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8b4d
+ add bx, 00240h ; 81 c3 40 02 ; 0xf8b50
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8b54 ahci.c:414
+ add ax, 0026ah ; 05 6a 02 ; 0xf8b57
+ mov dx, cx ; 89 ca ; 0xf8b5a
+ call 0b1dfh ; e8 80 26 ; 0xf8b5c
+ mov es, cx ; 8e c1 ; 0xf8b5f ahci.c:415
+ mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf8b61
+ test al, al ; 84 c0 ; 0xf8b65
+ je short 08b6eh ; 74 05 ; 0xf8b67
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8b69
+ jmp short 08b70h ; eb 02 ; 0xf8b6c
+ xor ah, ah ; 30 e4 ; 0xf8b6e
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8b70 ahci.c:416
+ pop di ; 5f ; 0xf8b73
+ pop si ; 5e ; 0xf8b74
+ pop cx ; 59 ; 0xf8b75
+ pop bp ; 5d ; 0xf8b76
+ retn ; c3 ; 0xf8b77
+ ; disGetNextSymbol 0xf8b78 LB 0x27d4 -> off=0x0 cb=000000000000017f uValue=00000000000f7578 'ahci_port_deinit_current'
+ahci_port_deinit_current: ; 0xf8b78 LB 0x17f
+ push bp ; 55 ; 0xf8b78 ahci.c:421
+ mov bp, sp ; 89 e5 ; 0xf8b79
+ push bx ; 53 ; 0xf8b7b
+ push cx ; 51 ; 0xf8b7c
+ push si ; 56 ; 0xf8b7d
+ push di ; 57 ; 0xf8b7e
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8b7f
+ mov di, ax ; 89 c7 ; 0xf8b82
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf8b84
+ mov es, dx ; 8e c2 ; 0xf8b87 ahci.c:426
+ mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf8b89
+ mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf8b8e ahci.c:427
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf8b93
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf8b96 ahci.c:429
+ je near 08ceeh ; 0f 84 52 01 ; 0xf8b98
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8b9c ahci.c:432
+ sal ax, 007h ; c1 e0 07 ; 0xf8ba0
+ add ax, 00118h ; 05 18 01 ; 0xf8ba3
+ xor cx, cx ; 31 c9 ; 0xf8ba6 ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf8ba8
+ xchg cx, ax ; 91 ; 0xf8baa
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8bab
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8baf
+ out DX, eax ; 66 ef ; 0xf8bb1
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8bb3 ahci.c:262
+ mov dx, bx ; 89 da ; 0xf8bb6
+ in eax, DX ; 66 ed ; 0xf8bb8
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8bba
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8bbc
+ xchg dx, ax ; 92 ; 0xf8bc0
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8bc1
+ mov cx, dx ; 89 d1 ; 0xf8bc3
+ mov dx, bx ; 89 da ; 0xf8bc5
+ xchg cx, ax ; 91 ; 0xf8bc7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8bc8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8bcc
+ out DX, eax ; 66 ef ; 0xf8bce
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8bd0 ahci.c:435
+ sal ax, 007h ; c1 e0 07 ; 0xf8bd4
+ add ax, 00118h ; 05 18 01 ; 0xf8bd7
+ xor cx, cx ; 31 c9 ; 0xf8bda ahci.c:271
+ mov dx, si ; 89 f2 ; 0xf8bdc
+ xchg cx, ax ; 91 ; 0xf8bde
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8bdf
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8be3
+ out DX, eax ; 66 ef ; 0xf8be5
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf8be7 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf8bea
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8bec
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8bee
+ xchg dx, ax ; 92 ; 0xf8bf2
+ test ax, 0c011h ; a9 11 c0 ; 0xf8bf3
+ je short 08bfch ; 74 04 ; 0xf8bf6
+ mov AL, strict byte 001h ; b0 01 ; 0xf8bf8
+ jmp short 08bfeh ; eb 02 ; 0xf8bfa
+ xor al, al ; 30 c0 ; 0xf8bfc
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8bfe ahci.c:273
+ je short 08bd0h ; 74 ce ; 0xf8c00
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf8c02 ahci.c:446
+ xor bx, bx ; 31 db ; 0xf8c05
+ mov ax, di ; 89 f8 ; 0xf8c07
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8c09
+ call 0b2b0h ; e8 a1 26 ; 0xf8c0c
+ lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf8c0f ahci.c:447
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8c13
+ xor bx, bx ; 31 db ; 0xf8c16
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8c18
+ call 0b2b0h ; e8 92 26 ; 0xf8c1b
+ lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf8c1e ahci.c:448
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf8c22
+ xor bx, bx ; 31 db ; 0xf8c25
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8c27
+ call 0b2b0h ; e8 83 26 ; 0xf8c2a
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8c2d ahci.c:450
+ sal ax, 007h ; c1 e0 07 ; 0xf8c31
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf8c34
+ add ax, 00108h ; 05 08 01 ; 0xf8c37
+ cwd ; 99 ; 0xf8c3a
+ mov cx, dx ; 89 d1 ; 0xf8c3b
+ mov dx, si ; 89 f2 ; 0xf8c3d
+ xchg cx, ax ; 91 ; 0xf8c3f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c40
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c44
+ out DX, eax ; 66 ef ; 0xf8c46
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8c48
+ xor ax, ax ; 31 c0 ; 0xf8c4b
+ xor cx, cx ; 31 c9 ; 0xf8c4d
+ mov dx, bx ; 89 da ; 0xf8c4f
+ xchg cx, ax ; 91 ; 0xf8c51
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c52
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c56
+ out DX, eax ; 66 ef ; 0xf8c58
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c5a ahci.c:451
+ add ax, 0010ch ; 05 0c 01 ; 0xf8c5d
+ cwd ; 99 ; 0xf8c60
+ mov cx, dx ; 89 d1 ; 0xf8c61
+ mov dx, si ; 89 f2 ; 0xf8c63
+ xchg cx, ax ; 91 ; 0xf8c65
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c66
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c6a
+ out DX, eax ; 66 ef ; 0xf8c6c
+ xor ax, ax ; 31 c0 ; 0xf8c6e
+ xor cx, cx ; 31 c9 ; 0xf8c70
+ mov dx, bx ; 89 da ; 0xf8c72
+ xchg cx, ax ; 91 ; 0xf8c74
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c75
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c79
+ out DX, eax ; 66 ef ; 0xf8c7b
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c7d ahci.c:453
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf8c80
+ cwd ; 99 ; 0xf8c82
+ mov cx, dx ; 89 d1 ; 0xf8c83
+ mov dx, si ; 89 f2 ; 0xf8c85
+ xchg cx, ax ; 91 ; 0xf8c87
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c88
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c8c
+ out DX, eax ; 66 ef ; 0xf8c8e
+ xor ax, ax ; 31 c0 ; 0xf8c90
+ xor cx, cx ; 31 c9 ; 0xf8c92
+ mov dx, bx ; 89 da ; 0xf8c94
+ xchg cx, ax ; 91 ; 0xf8c96
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c97
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c9b
+ out DX, eax ; 66 ef ; 0xf8c9d
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c9f ahci.c:454
+ add ax, 00104h ; 05 04 01 ; 0xf8ca2
+ cwd ; 99 ; 0xf8ca5
+ mov cx, dx ; 89 d1 ; 0xf8ca6
+ mov dx, si ; 89 f2 ; 0xf8ca8
+ xchg cx, ax ; 91 ; 0xf8caa
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8cab
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8caf
+ out DX, eax ; 66 ef ; 0xf8cb1
+ xor ax, ax ; 31 c0 ; 0xf8cb3
+ xor cx, cx ; 31 c9 ; 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
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8cc2 ahci.c:457
+ add ax, 00114h ; 05 14 01 ; 0xf8cc5
+ cwd ; 99 ; 0xf8cc8
+ mov cx, dx ; 89 d1 ; 0xf8cc9
+ mov dx, si ; 89 f2 ; 0xf8ccb
+ xchg cx, ax ; 91 ; 0xf8ccd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8cce
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8cd2
+ out DX, eax ; 66 ef ; 0xf8cd4
+ xor ax, ax ; 31 c0 ; 0xf8cd6
+ xor cx, cx ; 31 c9 ; 0xf8cd8
+ mov dx, bx ; 89 da ; 0xf8cda
+ xchg cx, ax ; 91 ; 0xf8cdc
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8cdd
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ce1
+ out DX, eax ; 66 ef ; 0xf8ce3
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8ce5 ahci.c:459
+ mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf8ce8
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf8cee ahci.c:461
+ pop di ; 5f ; 0xf8cf1
+ pop si ; 5e ; 0xf8cf2
+ pop cx ; 59 ; 0xf8cf3
+ pop bx ; 5b ; 0xf8cf4
+ pop bp ; 5d ; 0xf8cf5
+ retn ; c3 ; 0xf8cf6
+ ; disGetNextSymbol 0xf8cf7 LB 0x2655 -> off=0x0 cb=000000000000024a uValue=00000000000f76f7 'ahci_port_init'
+ahci_port_init: ; 0xf8cf7 LB 0x24a
+ push bp ; 55 ; 0xf8cf7 ahci.c:467
+ mov bp, sp ; 89 e5 ; 0xf8cf8
+ push cx ; 51 ; 0xf8cfa
+ push si ; 56 ; 0xf8cfb
+ push di ; 57 ; 0xf8cfc
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8cfd
+ mov si, ax ; 89 c6 ; 0xf8d00
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8d02
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8d05
+ call 08b78h ; e8 6d fe ; 0xf8d08 ahci.c:470
+ movzx ax, bl ; 0f b6 c3 ; 0xf8d0b ahci.c:473
+ sal ax, 007h ; c1 e0 07 ; 0xf8d0e
+ add ax, 00118h ; 05 18 01 ; 0xf8d11
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d14 ahci.c:259
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8d17
+ xor cx, cx ; 31 c9 ; 0xf8d1c ahci.c:261
+ mov dx, bx ; 89 da ; 0xf8d1e
+ xchg cx, ax ; 91 ; 0xf8d20
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8d21
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8d25
+ out DX, eax ; 66 ef ; 0xf8d27
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8d29 ahci.c:262
+ mov dx, bx ; 89 da ; 0xf8d2c
+ in eax, DX ; 66 ed ; 0xf8d2e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8d30
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8d32
+ xchg dx, ax ; 92 ; 0xf8d36
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8d37
+ mov cx, dx ; 89 d1 ; 0xf8d39
+ mov dx, bx ; 89 da ; 0xf8d3b
+ xchg cx, ax ; 91 ; 0xf8d3d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8d3e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8d42
+ out DX, eax ; 66 ef ; 0xf8d44
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf8d46 ahci.c:476
+ sal ax, 007h ; c1 e0 07 ; 0xf8d4a
+ add ax, 00118h ; 05 18 01 ; 0xf8d4d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d50 ahci.c:269
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8d53
+ xor cx, cx ; 31 c9 ; 0xf8d58 ahci.c:271
+ mov dx, bx ; 89 da ; 0xf8d5a
+ xchg cx, ax ; 91 ; 0xf8d5c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8d5d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8d61
+ out DX, eax ; 66 ef ; 0xf8d63
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf8d65 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf8d68
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8d6a
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8d6c
+ xchg dx, ax ; 92 ; 0xf8d70
+ test ax, 0c011h ; a9 11 c0 ; 0xf8d71
+ je short 08d7ah ; 74 04 ; 0xf8d74
+ mov AL, strict byte 001h ; b0 01 ; 0xf8d76
+ jmp short 08d7ch ; eb 02 ; 0xf8d78
+ xor al, al ; 30 c0 ; 0xf8d7a
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8d7c ahci.c:273
+ je short 08d46h ; 74 c6 ; 0xf8d7e
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf8d80 ahci.c:487
+ xor bx, bx ; 31 db ; 0xf8d83
+ mov ax, si ; 89 f0 ; 0xf8d85
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d87
+ call 0b2b0h ; e8 23 25 ; 0xf8d8a
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf8d8d ahci.c:488
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8d91
+ xor bx, bx ; 31 db ; 0xf8d94
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d96
+ call 0b2b0h ; e8 14 25 ; 0xf8d99
+ lea di, [si+00200h] ; 8d bc 00 02 ; 0xf8d9c ahci.c:489
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf8da0
+ xor bx, bx ; 31 db ; 0xf8da3
+ mov ax, di ; 89 f8 ; 0xf8da5
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8da7
+ call 0b2b0h ; e8 03 25 ; 0xf8daa
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf8dad ahci.c:493
+ sal bx, 007h ; c1 e3 07 ; 0xf8db1
+ lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf8db4
+ cwd ; 99 ; 0xf8db8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8db9
+ mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf8dbc
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf8dc1
+ mov cx, dx ; 89 d1 ; 0xf8dc4
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8dc6
+ xchg cx, ax ; 91 ; 0xf8dc9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8dca
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8dce
+ out DX, eax ; 66 ef ; 0xf8dd0
+ mov ax, di ; 89 f8 ; 0xf8dd2
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8dd4
+ call 087adh ; e8 d3 f9 ; 0xf8dd7
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8dda
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8ddd
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8de2
+ mov cx, dx ; 89 d1 ; 0xf8de5
+ mov dx, di ; 89 fa ; 0xf8de7
+ xchg cx, ax ; 91 ; 0xf8de9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8dea
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8dee
+ out DX, eax ; 66 ef ; 0xf8df0
+ lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8df2 ahci.c:494
+ cwd ; 99 ; 0xf8df6
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8df7
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8dfa
+ mov cx, dx ; 89 d1 ; 0xf8dff
+ mov dx, di ; 89 fa ; 0xf8e01
+ xchg cx, ax ; 91 ; 0xf8e03
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e04
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e08
+ out DX, eax ; 66 ef ; 0xf8e0a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e0c
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e0f
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e14
+ xor ax, ax ; 31 c0 ; 0xf8e17
+ xor cx, cx ; 31 c9 ; 0xf8e19
+ xchg cx, ax ; 91 ; 0xf8e1b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e1c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e20
+ out DX, eax ; 66 ef ; 0xf8e22
+ lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf8e24 ahci.c:497
+ cwd ; 99 ; 0xf8e28
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e29
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e2c
+ mov cx, dx ; 89 d1 ; 0xf8e31
+ mov dx, di ; 89 fa ; 0xf8e33
+ xchg cx, ax ; 91 ; 0xf8e35
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e36
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e3a
+ out DX, eax ; 66 ef ; 0xf8e3c
+ mov ax, si ; 89 f0 ; 0xf8e3e
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8e40
+ call 087adh ; e8 67 f9 ; 0xf8e43
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e46
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e49
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8e4e
+ mov cx, dx ; 89 d1 ; 0xf8e51
+ mov dx, di ; 89 fa ; 0xf8e53
+ xchg cx, ax ; 91 ; 0xf8e55
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e56
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e5a
+ out DX, eax ; 66 ef ; 0xf8e5c
+ lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8e5e ahci.c:498
+ cwd ; 99 ; 0xf8e62
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e63
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e66
+ mov cx, dx ; 89 d1 ; 0xf8e6b
+ mov dx, di ; 89 fa ; 0xf8e6d
+ xchg cx, ax ; 91 ; 0xf8e6f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e70
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e74
+ out DX, eax ; 66 ef ; 0xf8e76
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e78
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e7b
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e80
+ xor ax, ax ; 31 c0 ; 0xf8e83
+ xor cx, cx ; 31 c9 ; 0xf8e85
+ xchg cx, ax ; 91 ; 0xf8e87
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e88
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e8c
+ out DX, eax ; 66 ef ; 0xf8e8e
+ lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8e90 ahci.c:501
+ cwd ; 99 ; 0xf8e94
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e95
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e98
+ mov cx, dx ; 89 d1 ; 0xf8e9d
+ mov dx, di ; 89 fa ; 0xf8e9f
+ xchg cx, ax ; 91 ; 0xf8ea1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ea2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ea6
+ out DX, eax ; 66 ef ; 0xf8ea8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8eaa
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ead
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8eb2
+ xor ax, ax ; 31 c0 ; 0xf8eb5
+ xor cx, cx ; 31 c9 ; 0xf8eb7
+ xchg cx, ax ; 91 ; 0xf8eb9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8eba
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ebe
+ out DX, eax ; 66 ef ; 0xf8ec0
+ lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8ec2 ahci.c:502
+ cwd ; 99 ; 0xf8ec6
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ec7
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8eca
+ mov cx, dx ; 89 d1 ; 0xf8ecf
+ mov dx, di ; 89 fa ; 0xf8ed1
+ xchg cx, ax ; 91 ; 0xf8ed3
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ed4
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ed8
+ out DX, eax ; 66 ef ; 0xf8eda
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8edc
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8edf
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ee4
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8ee7
+ mov cx, ax ; 89 c1 ; 0xf8eea
+ xchg cx, ax ; 91 ; 0xf8eec
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8eed
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ef1
+ out DX, eax ; 66 ef ; 0xf8ef3
+ lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8ef5 ahci.c:504
+ cwd ; 99 ; 0xf8ef9
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8efa
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8efd
+ mov cx, dx ; 89 d1 ; 0xf8f02
+ mov dx, bx ; 89 da ; 0xf8f04
+ xchg cx, ax ; 91 ; 0xf8f06
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f07
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f0b
+ out DX, eax ; 66 ef ; 0xf8f0d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8f0f
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f12
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f17
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8f1a
+ mov cx, ax ; 89 c1 ; 0xf8f1d
+ xchg cx, ax ; 91 ; 0xf8f1f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f20
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f24
+ out DX, eax ; 66 ef ; 0xf8f26
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8f28 ahci.c:506
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8f2b
+ mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8f2e
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8f33 ahci.c:507
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8f39 ahci.c:508
+ pop di ; 5f ; 0xf8f3c
+ pop si ; 5e ; 0xf8f3d
+ pop cx ; 59 ; 0xf8f3e
+ pop bp ; 5d ; 0xf8f3f
+ retn ; c3 ; 0xf8f40
+ ; disGetNextSymbol 0xf8f41 LB 0x240b -> off=0x0 cb=00000000000000a6 uValue=00000000000f7941 'ahci_read_sectors'
+ahci_read_sectors: ; 0xf8f41 LB 0xa6
+ push bp ; 55 ; 0xf8f41 ahci.c:517
+ mov bp, sp ; 89 e5 ; 0xf8f42
+ push si ; 56 ; 0xf8f44
+ push di ; 57 ; 0xf8f45
+ push ax ; 50 ; 0xf8f46
+ les di, [bp+004h] ; c4 7e 04 ; 0xf8f47 ahci.c:522
+ movzx di, byte [es:di+00ch] ; 26 0f b6 7d 0c ; 0xf8f4a
+ sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8f4f
+ cmp di, strict byte 00004h ; 83 ff 04 ; 0xf8f52 ahci.c:523
+ jbe short 08f66h ; 76 0f ; 0xf8f55
+ push di ; 57 ; 0xf8f57 ahci.c:524
+ push 00cach ; 68 ac 0c ; 0xf8f58
+ push 00cbeh ; 68 be 0c ; 0xf8f5b
+ push strict byte 00007h ; 6a 07 ; 0xf8f5e
+ call 01a23h ; e8 c0 8a ; 0xf8f60
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8f63
+ xor bx, bx ; 31 db ; 0xf8f66 ahci.c:530
+ les si, [bp+004h] ; c4 76 04 ; 0xf8f68
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf8f6b
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8f70 ahci.c:239
+ mov es, dx ; 8e c2 ; 0xf8f74
+ mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8f76
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8f7b ahci.c:531
+ add di, si ; 01 f7 ; 0xf8f7e
+ movzx bx, byte [es:di+002a8h] ; 26 0f b6 9d a8 02 ; 0xf8f80
+ mov di, si ; 89 f7 ; 0xf8f86
+ mov dx, word [es:di+002aeh] ; 26 8b 95 ae 02 ; 0xf8f88
+ xor ax, ax ; 31 c0 ; 0xf8f8d
+ call 08cf7h ; e8 65 fd ; 0xf8f8f
+ mov bx, strict word 00025h ; bb 25 00 ; 0xf8f92 ahci.c:532
+ mov ax, si ; 89 f0 ; 0xf8f95
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8f97
+ call 08916h ; e8 79 f9 ; 0xf8f9a
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf8f9d
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8fa0 ahci.c:534
+ mov bx, si ; 89 f3 ; 0xf8fa3
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8fa5
+ mov word [es:bx+018h], ax ; 26 89 47 18 ; 0xf8fa9
+ mov cx, ax ; 89 c1 ; 0xf8fad ahci.c:536
+ sal cx, 009h ; c1 e1 09 ; 0xf8faf
+ shr cx, 1 ; d1 e9 ; 0xf8fb2
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8fb4
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf8fb8
+ mov si, di ; 89 fe ; 0xf8fbc
+ mov dx, ax ; 89 c2 ; 0xf8fbe
+ mov es, ax ; 8e c0 ; 0xf8fc0
+ push DS ; 1e ; 0xf8fc2
+ mov ds, dx ; 8e da ; 0xf8fc3
+ rep movsw ; f3 a5 ; 0xf8fc5
+ pop DS ; 1f ; 0xf8fc7
+ xor bx, bx ; 31 db ; 0xf8fc8 ahci.c:538
+ les di, [bp+004h] ; c4 7e 04 ; 0xf8fca
+ mov es, [es:di+002aeh] ; 26 8e 85 ae 02 ; 0xf8fcd
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8fd2 ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8fd7
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf8fdb ahci.c:540
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8fde
+ pop di ; 5f ; 0xf8fe1
+ pop si ; 5e ; 0xf8fe2
+ pop bp ; 5d ; 0xf8fe3
+ retn 00004h ; c2 04 00 ; 0xf8fe4
+ ; disGetNextSymbol 0xf8fe7 LB 0x2365 -> off=0x0 cb=0000000000000084 uValue=00000000000f79e7 'ahci_write_sectors'
+ahci_write_sectors: ; 0xf8fe7 LB 0x84
+ push bp ; 55 ; 0xf8fe7 ahci.c:549
+ mov bp, sp ; 89 e5 ; 0xf8fe8
+ push si ; 56 ; 0xf8fea
+ push di ; 57 ; 0xf8feb
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf8fec
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8fef
+ mov es, cx ; 8e c1 ; 0xf8ff2 ahci.c:554
+ movzx dx, byte [es:si+00ch] ; 26 0f b6 54 0c ; 0xf8ff4
+ sub dx, strict byte 0000ch ; 83 ea 0c ; 0xf8ff9
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf8ffc ahci.c:555
+ jbe short 09010h ; 76 0f ; 0xf8fff
+ push dx ; 52 ; 0xf9001 ahci.c:556
+ push 00cddh ; 68 dd 0c ; 0xf9002
+ push 00cbeh ; 68 be 0c ; 0xf9005
+ push strict byte 00007h ; 6a 07 ; 0xf9008
+ call 01a23h ; e8 16 8a ; 0xf900a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf900d
+ xor bx, bx ; 31 db ; 0xf9010 ahci.c:562
+ mov es, cx ; 8e c1 ; 0xf9012
+ mov di, word [es:si+002aeh] ; 26 8b bc ae 02 ; 0xf9014
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9019 ahci.c:239
+ mov es, di ; 8e c7 ; 0xf901d
+ mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf901f
+ mov es, cx ; 8e c1 ; 0xf9024 ahci.c:563
+ mov bx, si ; 89 f3 ; 0xf9026
+ add bx, dx ; 01 d3 ; 0xf9028
+ movzx bx, byte [es:bx+002a8h] ; 26 0f b6 9f a8 02 ; 0xf902a
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf9030
+ xor ax, ax ; 31 c0 ; 0xf9035
+ call 08cf7h ; e8 bd fc ; 0xf9037
+ mov bx, strict word 00035h ; bb 35 00 ; 0xf903a ahci.c:564
+ mov ax, si ; 89 f0 ; 0xf903d
+ mov dx, cx ; 89 ca ; 0xf903f
+ call 08916h ; e8 d2 f8 ; 0xf9041
+ mov dx, ax ; 89 c2 ; 0xf9044
+ mov es, cx ; 8e c1 ; 0xf9046 ahci.c:566
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf9048
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf904c
+ xor bx, bx ; 31 db ; 0xf9050 ahci.c:567
+ mov es, [es:si+002aeh] ; 26 8e 84 ae 02 ; 0xf9052
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf9057 ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf905c
+ mov ax, dx ; 89 d0 ; 0xf9060 ahci.c:569
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9062
+ pop di ; 5f ; 0xf9065
+ pop si ; 5e ; 0xf9066
+ pop bp ; 5d ; 0xf9067
+ retn 00004h ; c2 04 00 ; 0xf9068
+ ; disGetNextSymbol 0xf906b LB 0x22e1 -> off=0x0 cb=0000000000000185 uValue=00000000000f7a6b 'ahci_cmd_packet'
+ahci_cmd_packet: ; 0xf906b LB 0x185
+ push bp ; 55 ; 0xf906b ahci.c:576
+ mov bp, sp ; 89 e5 ; 0xf906c
+ push si ; 56 ; 0xf906e
+ push di ; 57 ; 0xf906f
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf9070
+ push ax ; 50 ; 0xf9073
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf9074
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf9077
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf907a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf907d ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9080
+ mov es, ax ; 8e c0 ; 0xf9083
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf9085
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf9088 ahci.c:49
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf908b
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf908e ahci.c:583
+ jne short 090b3h ; 75 1f ; 0xf9092
+ mov bx, 00f24h ; bb 24 0f ; 0xf9094 ahci.c:584
+ mov cx, ds ; 8c d9 ; 0xf9097
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9099
+ call 019e2h ; e8 43 89 ; 0xf909c
+ push 00cf0h ; 68 f0 0c ; 0xf909f
+ push 00d00h ; 68 00 0d ; 0xf90a2
+ push strict byte 00004h ; 6a 04 ; 0xf90a5
+ call 01a23h ; e8 79 89 ; 0xf90a7
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf90aa
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf90ad ahci.c:585
+ jmp near 091e7h ; e9 34 01 ; 0xf90b0
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf90b3 ahci.c:589
+ jne short 090adh ; 75 f4 ; 0xf90b7
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf90b9 ahci.c:603
+ mov di, word [bp+008h] ; 8b 7e 08 ; 0xf90bc
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf90bf
+ sal bx, 1 ; d1 e3 ; 0xf90c2
+ rcl di, 1 ; d1 d7 ; 0xf90c4
+ loop 090c2h ; e2 fa ; 0xf90c6
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf90c8
+ mov word [es:si], bx ; 26 89 1c ; 0xf90cb
+ mov word [es:si+002h], di ; 26 89 7c 02 ; 0xf90ce
+ 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; 0xf90d2
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf90db ahci.c:604
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf90de
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf90e2
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf90e5
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf90e9 ahci.c:605
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf90ed
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xf90f0
+ xor cx, cx ; 31 c9 ; 0xf90f3
+ call 0b250h ; e8 58 21 ; 0xf90f5
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf90f8
+ xor di, di ; 31 ff ; 0xf90fc ahci.c:608
+ mov ax, word [es:si+002aeh] ; 26 8b 84 ae 02 ; 0xf90fe
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9103
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf9106
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9109
+ sub word [bp-014h], strict byte 0000ch ; 83 6e ec 0c ; 0xf910c ahci.c:595
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9110 ahci.c:239
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9114
+ mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf9117
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf911c ahci.c:611
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf911f
+ add bx, si ; 01 f3 ; 0xf9122
+ movzx bx, byte [es:bx+002a8h] ; 26 0f b6 9f a8 02 ; 0xf9124
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf912a
+ xor ax, ax ; 31 c0 ; 0xf912f
+ call 08cf7h ; e8 c3 fb ; 0xf9131
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf9134 ahci.c:614
+ push ax ; 50 ; 0xf9138
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf9139
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf913c
+ mov ax, 000c0h ; b8 c0 00 ; 0xf913f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9142
+ call 0b2c0h ; e8 78 21 ; 0xf9145
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf9148 ahci.c:618
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf914b
+ mov word [es:si+01ah], di ; 26 89 7c 1a ; 0xf914f ahci.c:619
+ mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf9153
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf9157 ahci.c:622
+ test ax, ax ; 85 c0 ; 0xf915b
+ je short 09186h ; 74 27 ; 0xf915d
+ dec ax ; 48 ; 0xf915f ahci.c:623
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9160
+ mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf9163
+ mov word [es:di+0010eh], di ; 26 89 bd 0e 01 ; 0xf9168
+ mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf916d ahci.c:624
+ mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf9172
+ mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf9177
+ mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf917c
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf9181 ahci.c:625
+ mov bx, 000a0h ; bb a0 00 ; 0xf9186 ahci.c:628
+ mov ax, si ; 89 f0 ; 0xf9189
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf918b
+ call 08916h ; e8 85 f7 ; 0xf918e
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf9191 ahci.c:630
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf9194
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf9198
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf919c
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf919f
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf91a3
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf91a7 ahci.c:632
+ mov cx, dx ; 89 d1 ; 0xf91ab
+ shr cx, 1 ; d1 e9 ; 0xf91ad
+ rcr bx, 1 ; d1 db ; 0xf91af
+ mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf91b1
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf91b5
+ mov cx, bx ; 89 d9 ; 0xf91b9
+ mov si, di ; 89 fe ; 0xf91bb
+ mov dx, ax ; 89 c2 ; 0xf91bd
+ mov es, ax ; 8e c0 ; 0xf91bf
+ push DS ; 1e ; 0xf91c1
+ mov ds, dx ; 8e da ; 0xf91c2
+ rep movsw ; f3 a5 ; 0xf91c4
+ pop DS ; 1f ; 0xf91c6
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf91c7 ahci.c:244
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf91ca
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf91cf
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf91d3 ahci.c:636
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf91d6
+ or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf91da
+ jne short 091e5h ; 75 05 ; 0xf91de
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf91e0
+ jmp short 091e7h ; eb 02 ; 0xf91e3
+ xor ax, ax ; 31 c0 ; 0xf91e5
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf91e7 ahci.c:637
+ pop di ; 5f ; 0xf91ea
+ pop si ; 5e ; 0xf91eb
+ pop bp ; 5d ; 0xf91ec
+ retn 0000ch ; c2 0c 00 ; 0xf91ed
+ ; disGetNextSymbol 0xf91f0 LB 0x215c -> off=0x0 cb=0000000000000005 uValue=00000000000f7bf0 'wait_ticks_device_init'
+wait_ticks_device_init: ; 0xf91f0 LB 0x5
+ push bp ; 55 ; 0xf91f0 ahci.c:640
+ mov bp, sp ; 89 e5 ; 0xf91f1
+ pop bp ; 5d ; 0xf91f3 ahci.c:642
+ retn ; c3 ; 0xf91f4
+ ; disGetNextSymbol 0xf91f5 LB 0x2157 -> off=0x0 cb=00000000000004c9 uValue=00000000000f7bf5 'ahci_port_detect_device'
+ahci_port_detect_device: ; 0xf91f5 LB 0x4c9
+ push bp ; 55 ; 0xf91f5 ahci.c:644
+ mov bp, sp ; 89 e5 ; 0xf91f6
+ push cx ; 51 ; 0xf91f8
+ push si ; 56 ; 0xf91f9
+ push di ; 57 ; 0xf91fa
+ sub sp, 0022ch ; 81 ec 2c 02 ; 0xf91fb
+ mov si, ax ; 89 c6 ; 0xf91ff
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf9201
+ mov byte [bp-00eh], bl ; 88 5e f2 ; 0xf9204
+ mov word [bp-024h], strict word 00000h ; c7 46 dc 00 00 ; 0xf9207 ahci.c:650
+ movzx di, bl ; 0f b6 fb ; 0xf920c ahci.c:652
+ mov bx, di ; 89 fb ; 0xf920f
+ call 08cf7h ; e8 e3 fa ; 0xf9211
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf9214 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9217
+ mov es, ax ; 8e c0 ; 0xf921a
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf921c
+ mov word [bp-02ch], strict word 0005eh ; c7 46 d4 5e 00 ; 0xf921f ahci.c:49
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9224
+ mov ax, di ; 89 f8 ; 0xf9227 ahci.c:657
+ sal ax, 007h ; c1 e0 07 ; 0xf9229
+ add ax, 0012ch ; 05 2c 01 ; 0xf922c
+ cwd ; 99 ; 0xf922f
+ mov bx, ax ; 89 c3 ; 0xf9230
+ mov di, dx ; 89 d7 ; 0xf9232
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9234
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9237
+ mov cx, di ; 89 f9 ; 0xf923c
+ xchg cx, ax ; 91 ; 0xf923e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf923f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9243
+ out DX, eax ; 66 ef ; 0xf9245
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9247
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf924a
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf924f
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9252
+ xor cx, cx ; 31 c9 ; 0xf9255
+ xchg cx, ax ; 91 ; 0xf9257
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9258
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf925c
+ out DX, eax ; 66 ef ; 0xf925e
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9260 ahci.c:662
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9263
+ mov ax, bx ; 89 d8 ; 0xf9268
+ mov cx, di ; 89 f9 ; 0xf926a
+ xchg cx, ax ; 91 ; 0xf926c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf926d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9271
+ out DX, eax ; 66 ef ; 0xf9273
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9275
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9278
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf927d
+ xor ax, ax ; 31 c0 ; 0xf9280
+ xor cx, cx ; 31 c9 ; 0xf9282
+ xchg cx, ax ; 91 ; 0xf9284
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9285
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9289
+ out DX, eax ; 66 ef ; 0xf928b
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf928d ahci.c:671
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9290
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf9293
+ mov es, ax ; 8e c0 ; 0xf9296 ahci.c:672
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf9298
+ add ax, strict word 00003h ; 05 03 00 ; 0xf929b
+ mov word [bp-026h], ax ; 89 46 da ; 0xf929e
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf92a1
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf92a5
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf92a8
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf92ab ahci.c:674
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf92ae
+ cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf92b2
+ jc short 092c8h ; 72 11 ; 0xf92b5
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf92b7
+ cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf92bb
+ jne short 09313h ; 75 53 ; 0xf92be
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf92c0
+ cmp ax, word [bp-026h] ; 3b 46 da ; 0xf92c3
+ jnc short 09313h ; 73 4b ; 0xf92c6
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf92c8 ahci.c:677
+ sal ax, 007h ; c1 e0 07 ; 0xf92cc
+ add ax, 00128h ; 05 28 01 ; 0xf92cf
+ cwd ; 99 ; 0xf92d2
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf92d3
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf92d6
+ mov cx, dx ; 89 d1 ; 0xf92db
+ mov dx, bx ; 89 da ; 0xf92dd
+ xchg cx, ax ; 91 ; 0xf92df
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf92e0
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf92e4
+ out DX, eax ; 66 ef ; 0xf92e6
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf92e8
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf92eb
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf92f0
+ in eax, DX ; 66 ed ; 0xf92f3
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf92f5
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf92f7
+ xchg dx, ax ; 92 ; 0xf92fb
+ mov word [bp-022h], ax ; 89 46 de ; 0xf92fc
+ mov word [bp-028h], dx ; 89 56 d8 ; 0xf92ff
+ push strict byte 00000h ; 6a 00 ; 0xf9302 ahci.c:678
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf9304
+ xor cx, cx ; 31 c9 ; 0xf9307
+ call 08792h ; e8 86 f4 ; 0xf9309
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf930c
+ jne short 092abh ; 75 9a ; 0xf930f
+ jmp short 0931bh ; eb 08 ; 0xf9311 ahci.c:680
+ cmp word [bp-024h], strict byte 00000h ; 83 7e dc 00 ; 0xf9313 ahci.c:685
+ je near 096b6h ; 0f 84 9b 03 ; 0xf9317
+ push strict byte 00000h ; 6a 00 ; 0xf931b ahci.c:690
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf931d
+ xor cx, cx ; 31 c9 ; 0xf9320
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf9322
+ mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf9325
+ call 08792h ; e8 67 f4 ; 0xf9328
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf932b
+ jne near 096b6h ; 0f 85 84 03 ; 0xf932e
+ movzx di, byte [bp-00eh] ; 0f b6 7e f2 ; 0xf9332 ahci.c:698
+ sal di, 007h ; c1 e7 07 ; 0xf9336
+ lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf9339
+ cwd ; 99 ; 0xf933d
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf933e
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf9341
+ mov cx, dx ; 89 d1 ; 0xf9346
+ mov dx, bx ; 89 da ; 0xf9348
+ xchg cx, ax ; 91 ; 0xf934a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf934b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf934f
+ out DX, eax ; 66 ef ; 0xf9351
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9353
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9356
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf935b
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf935e
+ mov cx, ax ; 89 c1 ; 0xf9361
+ xchg cx, ax ; 91 ; 0xf9363
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9364
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9368
+ out DX, eax ; 66 ef ; 0xf936a
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf936c ahci.c:700
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf936f
+ mov al, byte [es:bx+002ach] ; 26 8a 87 ac 02 ; 0xf9372
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf9377
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf937a ahci.c:705
+ jnc near 096b6h ; 0f 83 36 03 ; 0xf937c
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf9380 ahci.c:708
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9384 ahci.c:250
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf9387
+ xor cx, cx ; 31 c9 ; 0xf938c ahci.c:252
+ mov dx, bx ; 89 da ; 0xf938e
+ xchg cx, ax ; 91 ; 0xf9390
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9391
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9395
+ out DX, eax ; 66 ef ; 0xf9397
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf9399 ahci.c:253
+ mov dx, bx ; 89 da ; 0xf939c
+ in eax, DX ; 66 ed ; 0xf939e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf93a0
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf93a2
+ xchg dx, ax ; 92 ; 0xf93a6
+ or AL, strict byte 010h ; 0c 10 ; 0xf93a7
+ mov cx, dx ; 89 d1 ; 0xf93a9
+ mov dx, bx ; 89 da ; 0xf93ab
+ xchg cx, ax ; 91 ; 0xf93ad
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf93ae
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf93b2
+ out DX, eax ; 66 ef ; 0xf93b4
+ lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf93b6 ahci.c:712
+ cwd ; 99 ; 0xf93ba
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf93bb
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf93be
+ mov cx, dx ; 89 d1 ; 0xf93c3
+ mov dx, bx ; 89 da ; 0xf93c5
+ xchg cx, ax ; 91 ; 0xf93c7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf93c8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf93cc
+ out DX, eax ; 66 ef ; 0xf93ce
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf93d0
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf93d3
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf93d8
+ in eax, DX ; 66 ed ; 0xf93db
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf93dd
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf93df
+ xchg dx, ax ; 92 ; 0xf93e3
+ mov si, ax ; 89 c6 ; 0xf93e4
+ mov ax, dx ; 89 d0 ; 0xf93e6
+ mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf93e8
+ add dl, 00ch ; 80 c2 0c ; 0xf93eb
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf93ee
+ test ax, ax ; 85 c0 ; 0xf93f1 ahci.c:713
+ jne near 095feh ; 0f 85 07 02 ; 0xf93f3
+ cmp si, 00101h ; 81 fe 01 01 ; 0xf93f7
+ jne near 095feh ; 0f 85 ff 01 ; 0xf93fb
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf93ff ahci.c:723
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9402
+ 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; 0xf9405
+ db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf940e
+ lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf9416 ahci.c:724
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf941a
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf941e
+ 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; 0xf9422 ahci.c:725
+ mov bx, 000ech ; bb ec 00 ; 0xf942b ahci.c:727
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf942e
+ mov dx, es ; 8c c2 ; 0xf9431
+ call 08916h ; e8 e0 f4 ; 0xf9433
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9436 ahci.c:730
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf9439
+ test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf943c ahci.c:732
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf9441
+ xor ah, ah ; 30 e4 ; 0xf9444
+ mov dx, word [bp-00230h] ; 8b 96 d0 fd ; 0xf9446 ahci.c:733
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf944a
+ mov dx, word [bp-0022ch] ; 8b 96 d4 fd ; 0xf944d ahci.c:734
+ mov word [bp-01ah], dx ; 89 56 e6 ; 0xf9451
+ mov dx, word [bp-00226h] ; 8b 96 da fd ; 0xf9454 ahci.c:735
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf9458
+ mov di, word [bp-001bah] ; 8b be 46 fe ; 0xf945b ahci.c:736
+ mov si, word [bp-001b8h] ; 8b b6 48 fe ; 0xf945f
+ mov dword [bp-018h], strict dword 000000000h ; 66 c7 46 e8 00 00 00 00 ; 0xf9463
+ cmp si, 00fffh ; 81 fe ff 0f ; 0xf946b ahci.c:738
+ jne short 0948ch ; 75 1b ; 0xf946f
+ cmp di, strict byte 0ffffh ; 83 ff ff ; 0xf9471
+ jne short 0948ch ; 75 16 ; 0xf9474
+ mov dx, word [bp-00164h] ; 8b 96 9c fe ; 0xf9476 ahci.c:739
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf947a
+ mov dx, word [bp-00166h] ; 8b 96 9a fe ; 0xf947d
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf9481
+ mov si, word [bp-00168h] ; 8b b6 98 fe ; 0xf9484
+ mov di, word [bp-0016ah] ; 8b be 96 fe ; 0xf9488
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf948c ahci.c:743
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf9490
+ add bx, word [bp-02ch] ; 03 5e d4 ; 0xf9493
+ mov ah, byte [bp-00eh] ; 8a 66 f2 ; 0xf9496
+ mov byte [es:bx+002a8h], ah ; 26 88 a7 a8 02 ; 0xf9499
+ movzx dx, byte [bp-00ah] ; 0f b6 56 f6 ; 0xf949e ahci.c:744
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf94a2
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf94a5
+ add bx, dx ; 01 d3 ; 0xf94a8
+ mov word [es:bx+022h], 0ff05h ; 26 c7 47 22 05 ff ; 0xf94aa
+ mov byte [es:bx+024h], al ; 26 88 47 24 ; 0xf94b0 ahci.c:746
+ mov byte [es:bx+025h], 000h ; 26 c6 47 25 00 ; 0xf94b4 ahci.c:747
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf94b9 ahci.c:748
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf94bf ahci.c:749
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf94c4 ahci.c:750
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf94c7
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf94cb
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf94ce
+ mov word [es:bx+038h], si ; 26 89 77 38 ; 0xf94d2
+ mov word [es:bx+036h], di ; 26 89 7f 36 ; 0xf94d6
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf94da ahci.c:752
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf94dd
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf94e1 ahci.c:753
+ mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf94e4
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf94e8 ahci.c:754
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf94eb
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf94ef ahci.c:757
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf94f2
+ jc short 09502h ; 72 0c ; 0xf94f4
+ jbe short 0950ah ; 76 12 ; 0xf94f6
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf94f8
+ je short 09512h ; 74 16 ; 0xf94fa
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf94fc
+ je short 0950eh ; 74 0e ; 0xf94fe
+ jmp short 0955fh ; eb 5d ; 0xf9500
+ test al, al ; 84 c0 ; 0xf9502
+ jne short 0955fh ; 75 59 ; 0xf9504
+ mov BL, strict byte 040h ; b3 40 ; 0xf9506 ahci.c:760
+ jmp short 09514h ; eb 0a ; 0xf9508 ahci.c:761
+ mov BL, strict byte 048h ; b3 48 ; 0xf950a ahci.c:763
+ jmp short 09514h ; eb 06 ; 0xf950c ahci.c:764
+ mov BL, strict byte 050h ; b3 50 ; 0xf950e ahci.c:766
+ jmp short 09514h ; eb 02 ; 0xf9510 ahci.c:767
+ mov BL, strict byte 058h ; b3 58 ; 0xf9512 ahci.c:769
+ mov al, bl ; 88 d8 ; 0xf9514 ahci.c:773
+ add AL, strict byte 007h ; 04 07 ; 0xf9516
+ movzx dx, al ; 0f b6 d0 ; 0xf9518
+ mov ax, dx ; 89 d0 ; 0xf951b
+ call 01765h ; e8 45 82 ; 0xf951d
+ test al, al ; 84 c0 ; 0xf9520
+ je short 0955fh ; 74 3b ; 0xf9522
+ mov al, bl ; 88 d8 ; 0xf9524 ahci.c:776
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9526
+ xor ah, ah ; 30 e4 ; 0xf9528
+ call 01765h ; e8 38 82 ; 0xf952a
+ xor ah, ah ; 30 e4 ; 0xf952d
+ sal ax, 008h ; c1 e0 08 ; 0xf952f
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf9532
+ movzx ax, bl ; 0f b6 c3 ; 0xf9535
+ call 01765h ; e8 2a 82 ; 0xf9538
+ xor ah, ah ; 30 e4 ; 0xf953b
+ mov cx, word [bp-02ah] ; 8b 4e d6 ; 0xf953d
+ add cx, ax ; 01 c1 ; 0xf9540
+ mov word [bp-030h], cx ; 89 4e d0 ; 0xf9542
+ mov al, bl ; 88 d8 ; 0xf9545 ahci.c:777
+ add AL, strict byte 002h ; 04 02 ; 0xf9547
+ xor ah, ah ; 30 e4 ; 0xf9549
+ call 01765h ; e8 17 82 ; 0xf954b
+ xor ah, ah ; 30 e4 ; 0xf954e
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf9550
+ mov ax, dx ; 89 d0 ; 0xf9553 ahci.c:778
+ call 01765h ; e8 0d 82 ; 0xf9555
+ xor ah, ah ; 30 e4 ; 0xf9558
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf955a
+ jmp short 0956fh ; eb 10 ; 0xf955d ahci.c:780
+ push word [bp-018h] ; ff 76 e8 ; 0xf955f ahci.c:781
+ push word [bp-016h] ; ff 76 ea ; 0xf9562
+ push si ; 56 ; 0xf9565
+ push di ; 57 ; 0xf9566
+ mov dx, ss ; 8c d2 ; 0xf9567
+ lea ax, [bp-032h] ; 8d 46 ce ; 0xf9569
+ call 059e2h ; e8 73 c4 ; 0xf956c
+ mov bx, 00f24h ; bb 24 0f ; 0xf956f ahci.c:785
+ mov cx, ds ; 8c d9 ; 0xf9572
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9574
+ call 019e2h ; e8 68 84 ; 0xf9577
+ push word [bp-018h] ; ff 76 e8 ; 0xf957a
+ push word [bp-016h] ; ff 76 ea ; 0xf957d
+ push si ; 56 ; 0xf9580
+ push di ; 57 ; 0xf9581
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf9582
+ push ax ; 50 ; 0xf9585
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf9586
+ push ax ; 50 ; 0xf9589
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf958a
+ push ax ; 50 ; 0xf958d
+ push word [bp-020h] ; ff 76 e0 ; 0xf958e
+ push word [bp-01ah] ; ff 76 e6 ; 0xf9591
+ push word [bp-01eh] ; ff 76 e2 ; 0xf9594
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf9597
+ push ax ; 50 ; 0xf959b
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf959c
+ push ax ; 50 ; 0xf95a0
+ push 00d20h ; 68 20 0d ; 0xf95a1
+ push strict byte 00004h ; 6a 04 ; 0xf95a4
+ call 01a23h ; e8 7a 84 ; 0xf95a6
+ add sp, strict byte 0001ch ; 83 c4 1c ; 0xf95a9
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf95ac ahci.c:787
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf95b0
+ mov di, word [bp-02ch] ; 8b 7e d4 ; 0xf95b3
+ add di, ax ; 01 c7 ; 0xf95b6
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf95b8
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf95bb
+ push DS ; 1e ; 0xf95be
+ push SS ; 16 ; 0xf95bf
+ pop DS ; 1f ; 0xf95c0
+ lea si, [bp-032h] ; 8d 76 ce ; 0xf95c1
+ movsw ; a5 ; 0xf95c4
+ movsw ; a5 ; 0xf95c5
+ movsw ; a5 ; 0xf95c6
+ pop DS ; 1f ; 0xf95c7
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf95c8 ahci.c:790
+ mov al, byte [es:bx+00252h] ; 26 8a 87 52 02 ; 0xf95cb
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf95d0 ahci.c:791
+ add ah, 00ch ; 80 c4 0c ; 0xf95d3
+ movzx bx, al ; 0f b6 d8 ; 0xf95d6
+ add bx, word [bp-02ch] ; 03 5e d4 ; 0xf95d9
+ mov byte [es:bx+00253h], ah ; 26 88 a7 53 02 ; 0xf95dc
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf95e1 ahci.c:792
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf95e3 ahci.c:793
+ mov byte [es:bx+00252h], al ; 26 88 87 52 02 ; 0xf95e6
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf95eb ahci.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf95ee
+ mov es, ax ; 8e c0 ; 0xf95f1
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf95f3
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf95f6 ahci.c:797
+ mov byte [es:bx], al ; 26 88 07 ; 0xf95f8 ahci.c:43
+ jmp near 096a5h ; e9 a7 00 ; 0xf95fb ahci.c:800
+ cmp ax, 0eb14h ; 3d 14 eb ; 0xf95fe
+ jne near 096a5h ; 0f 85 a0 00 ; 0xf9601
+ cmp si, 00101h ; 81 fe 01 01 ; 0xf9605
+ jne near 096a5h ; 0f 85 98 00 ; 0xf9609
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf960d ahci.c:805
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9610
+ 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; 0xf9613
+ db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf961c
+ lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf9624 ahci.c:806
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf9628
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf962c
+ 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; 0xf9630 ahci.c:807
+ mov bx, 000a1h ; bb a1 00 ; 0xf9639 ahci.c:809
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf963c
+ mov dx, es ; 8c c2 ; 0xf963f
+ call 08916h ; e8 d2 f2 ; 0xf9641
+ test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf9644 ahci.c:814
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf9649
+ xor ah, ah ; 30 e4 ; 0xf964c
+ mov dx, ax ; 89 c2 ; 0xf964e
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf9650 ahci.c:816
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf9654
+ add bx, word [bp-02ch] ; 03 5e d4 ; 0xf9657
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf965a
+ mov byte [es:bx+002a8h], al ; 26 88 87 a8 02 ; 0xf965d
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf9662 ahci.c:817
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9666
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9669
+ add bx, ax ; 01 c3 ; 0xf966c
+ mov word [es:bx+022h], 00505h ; 26 c7 47 22 05 05 ; 0xf966e
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf9674 ahci.c:819
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf9678 ahci.c:820
+ mov byte [es:bx+027h], dh ; 26 88 77 27 ; 0xf967e ahci.c:821
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9682 ahci.c:824
+ mov al, byte [es:bx+00267h] ; 26 8a 87 67 02 ; 0xf9685
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf968a ahci.c:825
+ add ah, 00ch ; 80 c4 0c ; 0xf968d
+ movzx bx, al ; 0f b6 d8 ; 0xf9690
+ add bx, word [bp-02ch] ; 03 5e d4 ; 0xf9693
+ mov byte [es:bx+00268h], ah ; 26 88 a7 68 02 ; 0xf9696
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf969b ahci.c:826
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf969d ahci.c:827
+ mov byte [es:bx+00267h], al ; 26 88 87 67 02 ; 0xf96a0
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf96a5 ahci.c:832
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf96a8 ahci.c:833
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf96ab
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf96ae
+ mov byte [es:bx+002ach], al ; 26 88 87 ac 02 ; 0xf96b1
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf96b6 ahci.c:838
+ pop di ; 5f ; 0xf96b9
+ pop si ; 5e ; 0xf96ba
+ pop cx ; 59 ; 0xf96bb
+ pop bp ; 5d ; 0xf96bc
+ retn ; c3 ; 0xf96bd
+ ; disGetNextSymbol 0xf96be LB 0x1c8e -> off=0x0 cb=000000000000003a uValue=00000000000f80be 'ahci_mem_alloc'
+ahci_mem_alloc: ; 0xf96be LB 0x3a
+ push bx ; 53 ; 0xf96be ahci.c:843
+ push cx ; 51 ; 0xf96bf
+ push dx ; 52 ; 0xf96c0
+ push di ; 57 ; 0xf96c1
+ push bp ; 55 ; 0xf96c2
+ mov bp, sp ; 89 e5 ; 0xf96c3
+ mov di, 00413h ; bf 13 04 ; 0xf96c5 ahci.c:48
+ xor ax, ax ; 31 c0 ; 0xf96c8
+ mov es, ax ; 8e c0 ; 0xf96ca
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf96cc
+ test ax, ax ; 85 c0 ; 0xf96cf ahci.c:852
+ je short 096f2h ; 74 1f ; 0xf96d1
+ dec ax ; 48 ; 0xf96d3 ahci.c:853
+ mov bx, ax ; 89 c3 ; 0xf96d4
+ xor dx, dx ; 31 d2 ; 0xf96d6 ahci.c:856
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf96d8
+ sal ax, 1 ; d1 e0 ; 0xf96db
+ rcl dx, 1 ; d1 d2 ; 0xf96dd
+ loop 096dbh ; e2 fa ; 0xf96df
+ mov di, dx ; 89 d7 ; 0xf96e1
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf96e3
+ shr di, 1 ; d1 ef ; 0xf96e6
+ rcr ax, 1 ; d1 d8 ; 0xf96e8
+ loop 096e6h ; e2 fa ; 0xf96ea
+ mov di, 00413h ; bf 13 04 ; 0xf96ec ahci.c:53
+ mov word [es:di], bx ; 26 89 1d ; 0xf96ef
+ pop bp ; 5d ; 0xf96f2 ahci.c:861
+ pop di ; 5f ; 0xf96f3
+ pop dx ; 5a ; 0xf96f4
+ pop cx ; 59 ; 0xf96f5
+ pop bx ; 5b ; 0xf96f6
+ retn ; c3 ; 0xf96f7
+ ; disGetNextSymbol 0xf96f8 LB 0x1c54 -> off=0x0 cb=000000000000014f uValue=00000000000f80f8 'ahci_hba_init'
+ahci_hba_init: ; 0xf96f8 LB 0x14f
+ push bp ; 55 ; 0xf96f8 ahci.c:866
+ mov bp, sp ; 89 e5 ; 0xf96f9
+ push bx ; 53 ; 0xf96fb
+ push cx ; 51 ; 0xf96fc
+ push dx ; 52 ; 0xf96fd
+ push si ; 56 ; 0xf96fe
+ push di ; 57 ; 0xf96ff
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9700
+ mov si, ax ; 89 c6 ; 0xf9703
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf9705 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9708
+ mov es, ax ; 8e c0 ; 0xf970b
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf970d
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf9710 ahci.c:877
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf9713 ahci.c:879
+ xor cx, cx ; 31 c9 ; 0xf9716
+ mov dx, si ; 89 f2 ; 0xf9718
+ xchg cx, ax ; 91 ; 0xf971a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf971b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf971f
+ out DX, eax ; 66 ef ; 0xf9721
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf9723
+ in eax, DX ; 66 ed ; 0xf9726
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9728
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf972a
+ xchg dx, ax ; 92 ; 0xf972e
+ call 096beh ; e8 8c ff ; 0xf972f ahci.c:885
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9732
+ test ax, ax ; 85 c0 ; 0xf9735 ahci.c:886
+ je near 0983dh ; 0f 84 02 01 ; 0xf9737
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf973b ahci.c:889
+ mov es, di ; 8e c7 ; 0xf973e
+ mov word [es:bx+002aeh], ax ; 26 89 87 ae 02 ; 0xf9740
+ mov byte [es:bx+002ach], 000h ; 26 c6 87 ac 02 00 ; 0xf9745 ahci.c:895
+ xor bx, bx ; 31 db ; 0xf974b ahci.c:897
+ mov es, ax ; 8e c0 ; 0xf974d
+ mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf974f ahci.c:898
+ mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf9755 ahci.c:899
+ db 066h, 026h, 0c7h, 087h, 064h, 002h, 000h, 0c0h, 00ch, 000h
+ ; mov dword [es:bx+00264h], strict dword 0000cc000h ; 66 26 c7 87 64 02 00 c0 0c 00; 0xf975a ahci.c:904
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9764 ahci.c:252
+ xor cx, cx ; 31 c9 ; 0xf9767
+ mov dx, si ; 89 f2 ; 0xf9769
+ xchg cx, ax ; 91 ; 0xf976b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf976c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9770
+ out DX, eax ; 66 ef ; 0xf9772
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf9774 ahci.c:253
+ mov dx, bx ; 89 da ; 0xf9777
+ in eax, DX ; 66 ed ; 0xf9779
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf977b
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf977d
+ xchg dx, ax ; 92 ; 0xf9781
+ or AL, strict byte 001h ; 0c 01 ; 0xf9782
+ mov cx, dx ; 89 d1 ; 0xf9784
+ mov dx, bx ; 89 da ; 0xf9786
+ xchg cx, ax ; 91 ; 0xf9788
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9789
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf978d
+ out DX, eax ; 66 ef ; 0xf978f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9791 ahci.c:910
+ xor cx, cx ; 31 c9 ; 0xf9794
+ mov dx, si ; 89 f2 ; 0xf9796
+ xchg cx, ax ; 91 ; 0xf9798
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9799
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf979d
+ out DX, eax ; 66 ef ; 0xf979f
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf97a1
+ mov dx, bx ; 89 da ; 0xf97a4
+ in eax, DX ; 66 ed ; 0xf97a6
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf97a8
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf97aa
+ xchg dx, ax ; 92 ; 0xf97ae
+ test AL, strict byte 001h ; a8 01 ; 0xf97af ahci.c:911
+ jne short 09791h ; 75 de ; 0xf97b1
+ xor ax, ax ; 31 c0 ; 0xf97b3 ahci.c:913
+ xor cx, cx ; 31 c9 ; 0xf97b5
+ mov dx, si ; 89 f2 ; 0xf97b7
+ xchg cx, ax ; 91 ; 0xf97b9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf97ba
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf97be
+ out DX, eax ; 66 ef ; 0xf97c0
+ mov dx, bx ; 89 da ; 0xf97c2
+ in eax, DX ; 66 ed ; 0xf97c4
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf97c6
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf97c8
+ xchg dx, ax ; 92 ; 0xf97cc
+ push strict byte 00000h ; 6a 00 ; 0xf97cd ahci.c:914
+ mov bx, strict word 0001fh ; bb 1f 00 ; 0xf97cf
+ xor cx, cx ; 31 c9 ; 0xf97d2
+ call 08792h ; e8 bb ef ; 0xf97d4
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf97d7
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf97d9
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf97dc ahci.c:919
+ jmp short 09802h ; eb 20 ; 0xf97e0 ahci.c:920
+ xor al, al ; 30 c0 ; 0xf97e2 ahci.c:272
+ test al, al ; 84 c0 ; 0xf97e4 ahci.c:273
+ je short 097f9h ; 74 11 ; 0xf97e6
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf97e8 ahci.c:925
+ xor ax, ax ; 31 c0 ; 0xf97ec
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf97ee
+ call 091f5h ; e8 01 fa ; 0xf97f1
+ dec byte [bp-00eh] ; fe 4e f2 ; 0xf97f4 ahci.c:926
+ je short 0983bh ; 74 42 ; 0xf97f7 ahci.c:927
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf97f9 ahci.c:930
+ cmp byte [bp-00ch], 020h ; 80 7e f4 20 ; 0xf97fc ahci.c:931
+ jnc short 0983bh ; 73 39 ; 0xf9800
+ movzx cx, byte [bp-00ch] ; 0f b6 4e f4 ; 0xf9802
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf9806
+ xor di, di ; 31 ff ; 0xf9809
+ jcxz 09813h ; e3 06 ; 0xf980b
+ sal bx, 1 ; d1 e3 ; 0xf980d
+ rcl di, 1 ; d1 d7 ; 0xf980f
+ loop 0980dh ; e2 fa ; 0xf9811
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf9813
+ xor cx, cx ; 31 c9 ; 0xf9816
+ mov dx, si ; 89 f2 ; 0xf9818
+ xchg cx, ax ; 91 ; 0xf981a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf981b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf981f
+ out DX, eax ; 66 ef ; 0xf9821
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf9823
+ in eax, DX ; 66 ed ; 0xf9826
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9828
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf982a
+ xchg dx, ax ; 92 ; 0xf982e
+ test dx, di ; 85 fa ; 0xf982f
+ jne short 09837h ; 75 04 ; 0xf9831
+ test ax, bx ; 85 d8 ; 0xf9833
+ je short 097e2h ; 74 ab ; 0xf9835
+ mov AL, strict byte 001h ; b0 01 ; 0xf9837
+ jmp short 097e4h ; eb a9 ; 0xf9839
+ xor ax, ax ; 31 c0 ; 0xf983b ahci.c:933
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf983d ahci.c:934
+ pop di ; 5f ; 0xf9840
+ pop si ; 5e ; 0xf9841
+ pop dx ; 5a ; 0xf9842
+ pop cx ; 59 ; 0xf9843
+ pop bx ; 5b ; 0xf9844
+ pop bp ; 5d ; 0xf9845
+ retn ; c3 ; 0xf9846
+ ; disGetNextSymbol 0xf9847 LB 0x1b05 -> off=0x17 cb=0000000000000116 uValue=00000000000f825e 'ahci_init'
+ db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 02eh, 099h, 00ch, 099h, 012h, 099h, 018h, 099h, 01eh
+ db 099h, 024h, 099h, 02ah, 099h, 02eh, 099h
+ahci_init: ; 0xf985e LB 0x116
+ push bp ; 55 ; 0xf985e ahci.c:939
+ mov bp, sp ; 89 e5 ; 0xf985f
+ push si ; 56 ; 0xf9861
+ push di ; 57 ; 0xf9862
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9863
+ mov ax, 00601h ; b8 01 06 ; 0xf9866 ahci.c:943
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf9869
+ call 0afedh ; e8 7e 17 ; 0xf986c
+ mov bx, ax ; 89 c3 ; 0xf986f
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9871 ahci.c:944
+ je near 0996dh ; 0f 84 f5 00 ; 0xf9874
+ xor al, al ; 30 c0 ; 0xf9878 ahci.c:949
+ shr ax, 008h ; c1 e8 08 ; 0xf987a
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf987d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9880 ahci.c:950
+ movzx dx, bl ; 0f b6 d3 ; 0xf9883 ahci.c:955
+ xor ah, ah ; 30 e4 ; 0xf9886
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf9888
+ call 0b057h ; e8 c9 17 ; 0xf988b
+ mov cl, al ; 88 c1 ; 0xf988e
+ test cl, cl ; 84 c9 ; 0xf9890 ahci.c:957
+ je short 098b7h ; 74 23 ; 0xf9892
+ movzx bx, cl ; 0f b6 d9 ; 0xf9894 ahci.c:959
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf9897
+ movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf989b
+ mov dx, di ; 89 fa ; 0xf989f
+ mov ax, si ; 89 f0 ; 0xf98a1
+ call 0b057h ; e8 b1 17 ; 0xf98a3
+ cmp AL, strict byte 012h ; 3c 12 ; 0xf98a6 ahci.c:963
+ je short 098b7h ; 74 0d ; 0xf98a8
+ mov al, cl ; 88 c8 ; 0xf98aa ahci.c:967
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf98ac
+ movzx bx, al ; 0f b6 d8 ; 0xf98ae
+ mov dx, di ; 89 fa ; 0xf98b1
+ mov ax, si ; 89 f0 ; 0xf98b3
+ jmp short 0988bh ; eb d4 ; 0xf98b5 ahci.c:968
+ test cl, cl ; 84 c9 ; 0xf98b7 ahci.c:970
+ je near 0996dh ; 0f 84 b0 00 ; 0xf98b9
+ add cl, 002h ; 80 c1 02 ; 0xf98bd ahci.c:977
+ movzx bx, cl ; 0f b6 d9 ; 0xf98c0 ahci.c:979
+ movzx si, byte [bp-008h] ; 0f b6 76 f8 ; 0xf98c3
+ movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf98c7
+ mov dx, si ; 89 f2 ; 0xf98cb
+ mov ax, di ; 89 f8 ; 0xf98cd
+ call 0b057h ; e8 85 17 ; 0xf98cf
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf98d2 ahci.c:980
+ jne near 0996dh ; 0f 85 95 00 ; 0xf98d4
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf98d8 ahci.c:983
+ mov al, cl ; 88 c8 ; 0xf98dc ahci.c:985
+ add AL, strict byte 002h ; 04 02 ; 0xf98de
+ movzx bx, al ; 0f b6 d8 ; 0xf98e0
+ mov dx, si ; 89 f2 ; 0xf98e3
+ mov ax, di ; 89 f8 ; 0xf98e5
+ call 0b07bh ; e8 91 17 ; 0xf98e7
+ mov dx, ax ; 89 c2 ; 0xf98ea
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf98ec ahci.c:989
+ sub ax, strict word 00004h ; 2d 04 00 ; 0xf98ef
+ cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf98f2
+ jnbe short 0992eh ; 77 37 ; 0xf98f5
+ push CS ; 0e ; 0xf98f7
+ pop ES ; 07 ; 0xf98f8
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf98f9
+ mov di, 09847h ; bf 47 98 ; 0xf98fc
+ repne scasb ; f2 ae ; 0xf98ff
+ sal cx, 1 ; d1 e1 ; 0xf9901
+ mov di, cx ; 89 cf ; 0xf9903
+ mov ax, word [cs:di-067b2h] ; 2e 8b 85 4e 98 ; 0xf9905
+ jmp ax ; ff e0 ; 0xf990a
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf990c ahci.c:992
+ jmp short 0992eh ; eb 1c ; 0xf9910 ahci.c:993
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf9912 ahci.c:995
+ jmp short 0992eh ; eb 16 ; 0xf9916 ahci.c:996
+ mov byte [bp-006h], 018h ; c6 46 fa 18 ; 0xf9918 ahci.c:998
+ jmp short 0992eh ; eb 10 ; 0xf991c ahci.c:999
+ mov byte [bp-006h], 01ch ; c6 46 fa 1c ; 0xf991e ahci.c:1001
+ jmp short 0992eh ; eb 0a ; 0xf9922 ahci.c:1002
+ mov byte [bp-006h], 020h ; c6 46 fa 20 ; 0xf9924 ahci.c:1004
+ jmp short 0992eh ; eb 04 ; 0xf9928 ahci.c:1005
+ mov byte [bp-006h], 024h ; c6 46 fa 24 ; 0xf992a ahci.c:1007
+ mov cx, dx ; 89 d1 ; 0xf992e ahci.c:1016
+ shr cx, 004h ; c1 e9 04 ; 0xf9930
+ sal cx, 002h ; c1 e1 02 ; 0xf9933
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9936 ahci.c:1018
+ test al, al ; 84 c0 ; 0xf9939
+ je short 0996dh ; 74 30 ; 0xf993b
+ movzx bx, al ; 0f b6 d8 ; 0xf993d ahci.c:1020
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf9940
+ movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf9944
+ mov dx, di ; 89 fa ; 0xf9948
+ mov ax, si ; 89 f0 ; 0xf994a
+ call 0b09dh ; e8 4e 17 ; 0xf994c
+ test AL, strict byte 001h ; a8 01 ; 0xf994f ahci.c:1024
+ je short 0996dh ; 74 1a ; 0xf9951
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf9953 ahci.c:1027
+ add ax, cx ; 01 c8 ; 0xf9955
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9957
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf995a ahci.c:1030
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf995d
+ mov dx, di ; 89 fa ; 0xf9960
+ mov ax, si ; 89 f0 ; 0xf9962
+ call 0b0c4h ; e8 5d 17 ; 0xf9964
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9967 ahci.c:1033
+ call 096f8h ; e8 8b fd ; 0xf996a
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf996d ahci.c:1047
+ pop di ; 5f ; 0xf9970
+ pop si ; 5e ; 0xf9971
+ pop bp ; 5d ; 0xf9972
+ retn ; c3 ; 0xf9973
+ ; disGetNextSymbol 0xf9974 LB 0x19d8 -> off=0x0 cb=0000000000000070 uValue=00000000000f8374 'virtio_reg_set_bar_offset_length'
+virtio_reg_set_bar_offset_length: ; 0xf9974 LB 0x70
+ push bp ; 55 ; 0xf9974 virtio.c:311
+ mov bp, sp ; 89 e5 ; 0xf9975
+ push cx ; 51 ; 0xf9977
+ push si ; 56 ; 0xf9978
+ push di ; 57 ; 0xf9979
+ mov si, ax ; 89 c6 ; 0xf997a
+ mov di, dx ; 89 d7 ; 0xf997c
+ movzx cx, bl ; 0f b6 cb ; 0xf997e virtio.c:313
+ mov es, dx ; 8e c2 ; 0xf9981
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf9983
+ add AL, strict byte 004h ; 04 04 ; 0xf9988
+ movzx bx, al ; 0f b6 d8 ; 0xf998a
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf998d
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf9993
+ call 0b0e0h ; e8 44 17 ; 0xf9999
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf999c virtio.c:314
+ mov es, di ; 8e c7 ; 0xf99a0
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf99a2
+ add AL, strict byte 008h ; 04 08 ; 0xf99a7
+ movzx bx, al ; 0f b6 d8 ; 0xf99a9
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf99ac
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf99b2
+ call 0b0fch ; e8 41 17 ; 0xf99b8
+ push dword [bp+008h] ; 66 ff 76 08 ; 0xf99bb virtio.c:315
+ mov es, di ; 8e c7 ; 0xf99bf
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf99c1
+ add AL, strict byte 00ch ; 04 0c ; 0xf99c6
+ movzx bx, al ; 0f b6 d8 ; 0xf99c8
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf99cb
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf99d1
+ call 0b0fch ; e8 22 17 ; 0xf99d7
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf99da virtio.c:316
+ pop di ; 5f ; 0xf99dd
+ pop si ; 5e ; 0xf99de
+ pop cx ; 59 ; 0xf99df
+ pop bp ; 5d ; 0xf99e0
+ retn 00008h ; c2 08 00 ; 0xf99e1
+ ; disGetNextSymbol 0xf99e4 LB 0x1968 -> off=0x0 cb=0000000000000032 uValue=00000000000f83e4 'virtio_reg_common_access_prepare'
+virtio_reg_common_access_prepare: ; 0xf99e4 LB 0x32
+ push bp ; 55 ; 0xf99e4 virtio.c:318
+ mov bp, sp ; 89 e5 ; 0xf99e5
+ push si ; 56 ; 0xf99e7
+ mov si, ax ; 89 c6 ; 0xf99e8
+ mov es, dx ; 8e c2 ; 0xf99ea
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf99ec virtio.c:320
+ xor dx, dx ; 31 d2 ; 0xf99f0
+ mov ax, word [es:si+00080h] ; 26 8b 84 80 00 ; 0xf99f2
+ add ax, bx ; 01 d8 ; 0xf99f7
+ mov bx, word [es:si+00082h] ; 26 8b 9c 82 00 ; 0xf99f9
+ adc bx, dx ; 11 d3 ; 0xf99fe
+ push bx ; 53 ; 0xf9a00
+ push ax ; 50 ; 0xf9a01
+ movzx bx, byte [es:si+07ch] ; 26 0f b6 5c 7c ; 0xf9a02
+ mov ax, si ; 89 f0 ; 0xf9a07
+ mov dx, es ; 8c c2 ; 0xf9a09
+ call 09974h ; e8 66 ff ; 0xf9a0b
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9a0e virtio.c:324
+ pop si ; 5e ; 0xf9a11
+ pop bp ; 5d ; 0xf9a12
+ retn 00004h ; c2 04 00 ; 0xf9a13
+ ; disGetNextSymbol 0xf9a16 LB 0x1936 -> off=0x0 cb=0000000000000033 uValue=00000000000f8416 'virtio_reg_dev_access_prepare'
+virtio_reg_dev_access_prepare: ; 0xf9a16 LB 0x33
+ push bp ; 55 ; 0xf9a16 virtio.c:326
+ mov bp, sp ; 89 e5 ; 0xf9a17
+ push si ; 56 ; 0xf9a19
+ mov si, ax ; 89 c6 ; 0xf9a1a
+ mov es, dx ; 8e c2 ; 0xf9a1c
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf9a1e virtio.c:328
+ xor dx, dx ; 31 d2 ; 0xf9a22
+ mov ax, word [es:si+000a4h] ; 26 8b 84 a4 00 ; 0xf9a24
+ add ax, bx ; 01 d8 ; 0xf9a29
+ mov bx, word [es:si+000a6h] ; 26 8b 9c a6 00 ; 0xf9a2b
+ adc bx, dx ; 11 d3 ; 0xf9a30
+ push bx ; 53 ; 0xf9a32
+ push ax ; 50 ; 0xf9a33
+ movzx bx, byte [es:si+000a0h] ; 26 0f b6 9c a0 00 ; 0xf9a34
+ mov ax, si ; 89 f0 ; 0xf9a3a
+ mov dx, es ; 8c c2 ; 0xf9a3c
+ call 09974h ; e8 33 ff ; 0xf9a3e
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9a41 virtio.c:332
+ pop si ; 5e ; 0xf9a44
+ pop bp ; 5d ; 0xf9a45
+ retn 00004h ; c2 04 00 ; 0xf9a46
+ ; disGetNextSymbol 0xf9a49 LB 0x1903 -> off=0x0 cb=0000000000000033 uValue=00000000000f8449 'virtio_reg_notify_access_prepare'
+virtio_reg_notify_access_prepare: ; 0xf9a49 LB 0x33
+ push bp ; 55 ; 0xf9a49 virtio.c:334
+ mov bp, sp ; 89 e5 ; 0xf9a4a
+ push si ; 56 ; 0xf9a4c
+ mov si, ax ; 89 c6 ; 0xf9a4d
+ mov es, dx ; 8e c2 ; 0xf9a4f
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf9a51 virtio.c:336
+ xor dx, dx ; 31 d2 ; 0xf9a55
+ mov ax, word [es:si+0008ch] ; 26 8b 84 8c 00 ; 0xf9a57
+ add ax, bx ; 01 d8 ; 0xf9a5c
+ mov bx, word [es:si+0008eh] ; 26 8b 9c 8e 00 ; 0xf9a5e
+ adc bx, dx ; 11 d3 ; 0xf9a63
+ push bx ; 53 ; 0xf9a65
+ push ax ; 50 ; 0xf9a66
+ movzx bx, byte [es:si+00088h] ; 26 0f b6 9c 88 00 ; 0xf9a67
+ mov ax, si ; 89 f0 ; 0xf9a6d
+ mov dx, es ; 8c c2 ; 0xf9a6f
+ call 09974h ; e8 00 ff ; 0xf9a71
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9a74 virtio.c:340
+ pop si ; 5e ; 0xf9a77
+ pop bp ; 5d ; 0xf9a78
+ retn 00004h ; c2 04 00 ; 0xf9a79
+ ; disGetNextSymbol 0xf9a7c LB 0x18d0 -> off=0x0 cb=000000000000001f uValue=00000000000f847c 'virtio_reg_isr_prepare'
+virtio_reg_isr_prepare: ; 0xf9a7c LB 0x1f
+ push bp ; 55 ; 0xf9a7c virtio.c:342
+ mov bp, sp ; 89 e5 ; 0xf9a7d
+ push si ; 56 ; 0xf9a7f
+ mov si, ax ; 89 c6 ; 0xf9a80
+ mov es, dx ; 8e c2 ; 0xf9a82
+ push cx ; 51 ; 0xf9a84 virtio.c:344
+ push bx ; 53 ; 0xf9a85
+ db 066h, 026h, 0ffh, 0b4h, 098h, 000h
+ ; push dword [es:si+00098h] ; 66 26 ff b4 98 00 ; 0xf9a86
+ movzx bx, byte [es:si+00094h] ; 26 0f b6 9c 94 00 ; 0xf9a8c
+ call 09974h ; e8 df fe ; 0xf9a92
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9a95 virtio.c:348
+ pop si ; 5e ; 0xf9a98
+ pop bp ; 5d ; 0xf9a99
+ retn ; c3 ; 0xf9a9a
+ ; disGetNextSymbol 0xf9a9b LB 0x18b1 -> off=0x0 cb=0000000000000031 uValue=00000000000f849b 'virtio_reg_common_read_u8'
+virtio_reg_common_read_u8: ; 0xf9a9b LB 0x31
+ push bp ; 55 ; 0xf9a9b virtio.c:350
+ mov bp, sp ; 89 e5 ; 0xf9a9c
+ push cx ; 51 ; 0xf9a9e
+ push si ; 56 ; 0xf9a9f
+ mov si, ax ; 89 c6 ; 0xf9aa0
+ mov cx, dx ; 89 d1 ; 0xf9aa2
+ push dword 000000001h ; 66 6a 01 ; 0xf9aa4 virtio.c:352
+ call 099e4h ; e8 3a ff ; 0xf9aa7
+ mov es, cx ; 8e c1 ; 0xf9aaa virtio.c:353
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf9aac
+ add AL, strict byte 010h ; 04 10 ; 0xf9ab1
+ movzx bx, al ; 0f b6 d8 ; 0xf9ab3
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf9ab6
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf9abc
+ call 0b057h ; e8 92 15 ; 0xf9ac2
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9ac5 virtio.c:354
+ pop si ; 5e ; 0xf9ac8
+ pop cx ; 59 ; 0xf9ac9
+ pop bp ; 5d ; 0xf9aca
+ retn ; c3 ; 0xf9acb
+ ; disGetNextSymbol 0xf9acc LB 0x1880 -> off=0x0 cb=0000000000000033 uValue=00000000000f84cc 'virtio_reg_common_write_u8'
+virtio_reg_common_write_u8: ; 0xf9acc LB 0x33
+ push bp ; 55 ; 0xf9acc virtio.c:356
+ mov bp, sp ; 89 e5 ; 0xf9acd
+ push si ; 56 ; 0xf9acf
+ push di ; 57 ; 0xf9ad0
+ mov si, ax ; 89 c6 ; 0xf9ad1
+ mov di, dx ; 89 d7 ; 0xf9ad3
+ push dword 000000001h ; 66 6a 01 ; 0xf9ad5 virtio.c:358
+ call 099e4h ; e8 09 ff ; 0xf9ad8
+ xor ch, ch ; 30 ed ; 0xf9adb virtio.c:359
+ mov es, di ; 8e c7 ; 0xf9add
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf9adf
+ add AL, strict byte 010h ; 04 10 ; 0xf9ae4
+ movzx bx, al ; 0f b6 d8 ; 0xf9ae6
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf9ae9
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf9aef
+ call 0b0e0h ; e8 e8 15 ; 0xf9af5
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9af8 virtio.c:360
+ pop di ; 5f ; 0xf9afb
+ pop si ; 5e ; 0xf9afc
+ pop bp ; 5d ; 0xf9afd
+ retn ; c3 ; 0xf9afe
+ ; disGetNextSymbol 0xf9aff LB 0x184d -> off=0x0 cb=0000000000000031 uValue=00000000000f84ff 'virtio_reg_common_read_u16'
+virtio_reg_common_read_u16: ; 0xf9aff LB 0x31
+ push bp ; 55 ; 0xf9aff virtio.c:362
+ mov bp, sp ; 89 e5 ; 0xf9b00
+ push cx ; 51 ; 0xf9b02
+ push si ; 56 ; 0xf9b03
+ mov si, ax ; 89 c6 ; 0xf9b04
+ mov cx, dx ; 89 d1 ; 0xf9b06
+ push dword 000000002h ; 66 6a 02 ; 0xf9b08 virtio.c:364
+ call 099e4h ; e8 d6 fe ; 0xf9b0b
+ mov es, cx ; 8e c1 ; 0xf9b0e virtio.c:365
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf9b10
+ add AL, strict byte 010h ; 04 10 ; 0xf9b15
+ movzx bx, al ; 0f b6 d8 ; 0xf9b17
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf9b1a
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf9b20
+ call 0b07bh ; e8 52 15 ; 0xf9b26
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9b29 virtio.c:366
+ pop si ; 5e ; 0xf9b2c
+ pop cx ; 59 ; 0xf9b2d
+ pop bp ; 5d ; 0xf9b2e
+ retn ; c3 ; 0xf9b2f
+ ; disGetNextSymbol 0xf9b30 LB 0x181c -> off=0x0 cb=0000000000000031 uValue=00000000000f8530 'virtio_reg_common_write_u16'
+virtio_reg_common_write_u16: ; 0xf9b30 LB 0x31
+ push bp ; 55 ; 0xf9b30 virtio.c:368
+ mov bp, sp ; 89 e5 ; 0xf9b31
+ push si ; 56 ; 0xf9b33
+ push di ; 57 ; 0xf9b34
+ mov si, ax ; 89 c6 ; 0xf9b35
+ mov di, dx ; 89 d7 ; 0xf9b37
+ push dword 000000002h ; 66 6a 02 ; 0xf9b39 virtio.c:370
+ call 099e4h ; e8 a5 fe ; 0xf9b3c
+ mov es, di ; 8e c7 ; 0xf9b3f virtio.c:371
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf9b41
+ add AL, strict byte 010h ; 04 10 ; 0xf9b46
+ movzx bx, al ; 0f b6 d8 ; 0xf9b48
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf9b4b
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf9b51
+ call 0b0c4h ; e8 6a 15 ; 0xf9b57
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9b5a virtio.c:372
+ pop di ; 5f ; 0xf9b5d
+ pop si ; 5e ; 0xf9b5e
+ pop bp ; 5d ; 0xf9b5f
+ retn ; c3 ; 0xf9b60
+ ; disGetNextSymbol 0xf9b61 LB 0x17eb -> off=0x0 cb=0000000000000037 uValue=00000000000f8561 'virtio_reg_common_write_u32'
+virtio_reg_common_write_u32: ; 0xf9b61 LB 0x37
+ push bp ; 55 ; 0xf9b61 virtio.c:374
+ mov bp, sp ; 89 e5 ; 0xf9b62
+ push cx ; 51 ; 0xf9b64
+ push si ; 56 ; 0xf9b65
+ mov si, ax ; 89 c6 ; 0xf9b66
+ mov cx, dx ; 89 d1 ; 0xf9b68
+ push dword 000000004h ; 66 6a 04 ; 0xf9b6a virtio.c:376
+ call 099e4h ; e8 74 fe ; 0xf9b6d
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf9b70 virtio.c:377
+ mov es, cx ; 8e c1 ; 0xf9b74
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf9b76
+ add AL, strict byte 010h ; 04 10 ; 0xf9b7b
+ movzx bx, al ; 0f b6 d8 ; 0xf9b7d
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf9b80
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf9b86
+ call 0b0fch ; e8 6d 15 ; 0xf9b8c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9b8f virtio.c:378
+ pop si ; 5e ; 0xf9b92
+ pop cx ; 59 ; 0xf9b93
+ pop bp ; 5d ; 0xf9b94
+ retn 00004h ; c2 04 00 ; 0xf9b95
+ ; disGetNextSymbol 0xf9b98 LB 0x17b4 -> off=0x0 cb=0000000000000031 uValue=00000000000f8598 'virtio_reg_dev_cfg_read_u32'
+virtio_reg_dev_cfg_read_u32: ; 0xf9b98 LB 0x31
+ push bp ; 55 ; 0xf9b98 virtio.c:380
+ mov bp, sp ; 89 e5 ; 0xf9b99
+ push cx ; 51 ; 0xf9b9b
+ push si ; 56 ; 0xf9b9c
+ mov si, ax ; 89 c6 ; 0xf9b9d
+ mov cx, dx ; 89 d1 ; 0xf9b9f
+ push dword 000000004h ; 66 6a 04 ; 0xf9ba1 virtio.c:382
+ call 09a16h ; e8 6f fe ; 0xf9ba4
+ mov es, cx ; 8e c1 ; 0xf9ba7 virtio.c:383
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf9ba9
+ add AL, strict byte 010h ; 04 10 ; 0xf9bae
+ movzx bx, al ; 0f b6 d8 ; 0xf9bb0
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf9bb3
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf9bb9
+ call 0b09dh ; e8 db 14 ; 0xf9bbf
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9bc2 virtio.c:384
+ pop si ; 5e ; 0xf9bc5
+ pop cx ; 59 ; 0xf9bc6
+ pop bp ; 5d ; 0xf9bc7
+ retn ; c3 ; 0xf9bc8
+ ; disGetNextSymbol 0xf9bc9 LB 0x1783 -> off=0x0 cb=0000000000000037 uValue=00000000000f85c9 'virtio_reg_dev_cfg_write_u32'
+virtio_reg_dev_cfg_write_u32: ; 0xf9bc9 LB 0x37
+ push bp ; 55 ; 0xf9bc9 virtio.c:386
+ mov bp, sp ; 89 e5 ; 0xf9bca
+ push cx ; 51 ; 0xf9bcc
+ push si ; 56 ; 0xf9bcd
+ mov si, ax ; 89 c6 ; 0xf9bce
+ mov cx, dx ; 89 d1 ; 0xf9bd0
+ push dword 000000004h ; 66 6a 04 ; 0xf9bd2 virtio.c:388
+ call 09a16h ; e8 3e fe ; 0xf9bd5
+ push dword [bp+004h] ; 66 ff 76 04 ; 0xf9bd8 virtio.c:389
+ mov es, cx ; 8e c1 ; 0xf9bdc
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf9bde
+ add AL, strict byte 010h ; 04 10 ; 0xf9be3
+ movzx bx, al ; 0f b6 d8 ; 0xf9be5
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf9be8
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf9bee
+ call 0b0fch ; e8 05 15 ; 0xf9bf4
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9bf7 virtio.c:390
+ pop si ; 5e ; 0xf9bfa
+ pop cx ; 59 ; 0xf9bfb
+ pop bp ; 5d ; 0xf9bfc
+ retn 00004h ; c2 04 00 ; 0xf9bfd
+ ; disGetNextSymbol 0xf9c00 LB 0x174c -> off=0x0 cb=0000000000000031 uValue=00000000000f8600 'virtio_reg_notify_write_u16'
+virtio_reg_notify_write_u16: ; 0xf9c00 LB 0x31
+ push bp ; 55 ; 0xf9c00 virtio.c:392
+ mov bp, sp ; 89 e5 ; 0xf9c01
+ push si ; 56 ; 0xf9c03
+ push di ; 57 ; 0xf9c04
+ mov si, ax ; 89 c6 ; 0xf9c05
+ mov di, dx ; 89 d7 ; 0xf9c07
+ push dword 000000002h ; 66 6a 02 ; 0xf9c09 virtio.c:394
+ call 09a49h ; e8 3a fe ; 0xf9c0c
+ mov es, di ; 8e c7 ; 0xf9c0f virtio.c:395
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf9c11
+ add AL, strict byte 010h ; 04 10 ; 0xf9c16
+ movzx bx, al ; 0f b6 d8 ; 0xf9c18
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf9c1b
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf9c21
+ call 0b0c4h ; e8 9a 14 ; 0xf9c27
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9c2a virtio.c:396
+ pop di ; 5f ; 0xf9c2d
+ pop si ; 5e ; 0xf9c2e
+ pop bp ; 5d ; 0xf9c2f
+ retn ; c3 ; 0xf9c30
+ ; disGetNextSymbol 0xf9c31 LB 0x171b -> off=0x0 cb=0000000000000037 uValue=00000000000f8631 'virtio_reg_isr_read_u8'
+virtio_reg_isr_read_u8: ; 0xf9c31 LB 0x37
+ push bp ; 55 ; 0xf9c31 virtio.c:398
+ mov bp, sp ; 89 e5 ; 0xf9c32
+ push bx ; 53 ; 0xf9c34
+ push cx ; 51 ; 0xf9c35
+ push si ; 56 ; 0xf9c36
+ push di ; 57 ; 0xf9c37
+ mov si, ax ; 89 c6 ; 0xf9c38
+ mov di, dx ; 89 d7 ; 0xf9c3a
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf9c3c virtio.c:400
+ xor cx, cx ; 31 c9 ; 0xf9c3f
+ call 09a7ch ; e8 38 fe ; 0xf9c41
+ mov es, di ; 8e c7 ; 0xf9c44 virtio.c:401
+ mov al, byte [es:si+000ach] ; 26 8a 84 ac 00 ; 0xf9c46
+ add AL, strict byte 010h ; 04 10 ; 0xf9c4b
+ movzx bx, al ; 0f b6 d8 ; 0xf9c4d
+ movzx dx, byte [es:si+000b3h] ; 26 0f b6 94 b3 00 ; 0xf9c50
+ movzx ax, byte [es:si+000b2h] ; 26 0f b6 84 b2 00 ; 0xf9c56
+ call 0b057h ; e8 f8 13 ; 0xf9c5c
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf9c5f virtio.c:402
+ pop di ; 5f ; 0xf9c62
+ pop si ; 5e ; 0xf9c63
+ pop cx ; 59 ; 0xf9c64
+ pop bx ; 5b ; 0xf9c65
+ pop bp ; 5d ; 0xf9c66
+ retn ; c3 ; 0xf9c67
+ ; disGetNextSymbol 0xf9c68 LB 0x16e4 -> off=0x0 cb=000000000000003a uValue=00000000000f8668 'virtio_mem_alloc'
+virtio_mem_alloc: ; 0xf9c68 LB 0x3a
+ push bx ; 53 ; 0xf9c68 virtio.c:407
+ push cx ; 51 ; 0xf9c69
+ push dx ; 52 ; 0xf9c6a
+ push di ; 57 ; 0xf9c6b
+ push bp ; 55 ; 0xf9c6c
+ mov bp, sp ; 89 e5 ; 0xf9c6d
+ mov di, 00413h ; bf 13 04 ; 0xf9c6f virtio.c:48
+ xor ax, ax ; 31 c0 ; 0xf9c72
+ mov es, ax ; 8e c0 ; 0xf9c74
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf9c76
+ test ax, ax ; 85 c0 ; 0xf9c79 virtio.c:416
+ je short 09c9ch ; 74 1f ; 0xf9c7b
+ dec ax ; 48 ; 0xf9c7d virtio.c:417
+ mov bx, ax ; 89 c3 ; 0xf9c7e
+ xor dx, dx ; 31 d2 ; 0xf9c80 virtio.c:420
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf9c82
+ sal ax, 1 ; d1 e0 ; 0xf9c85
+ rcl dx, 1 ; d1 d2 ; 0xf9c87
+ loop 09c85h ; e2 fa ; 0xf9c89
+ mov di, dx ; 89 d7 ; 0xf9c8b
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9c8d
+ shr di, 1 ; d1 ef ; 0xf9c90
+ rcr ax, 1 ; d1 d8 ; 0xf9c92
+ loop 09c90h ; e2 fa ; 0xf9c94
+ mov di, 00413h ; bf 13 04 ; 0xf9c96 virtio.c:53
+ mov word [es:di], bx ; 26 89 1d ; 0xf9c99
+ pop bp ; 5d ; 0xf9c9c virtio.c:425
+ pop di ; 5f ; 0xf9c9d
+ pop dx ; 5a ; 0xf9c9e
+ pop cx ; 59 ; 0xf9c9f
+ pop bx ; 5b ; 0xf9ca0
+ retn ; c3 ; 0xf9ca1
+ ; disGetNextSymbol 0xf9ca2 LB 0x16aa -> off=0x0 cb=000000000000001e uValue=00000000000f86a2 'virtio_addr_to_phys'
+virtio_addr_to_phys: ; 0xf9ca2 LB 0x1e
+ push bx ; 53 ; 0xf9ca2 virtio.c:430
+ push cx ; 51 ; 0xf9ca3
+ push bp ; 55 ; 0xf9ca4
+ mov bp, sp ; 89 e5 ; 0xf9ca5
+ mov bx, ax ; 89 c3 ; 0xf9ca7
+ mov ax, dx ; 89 d0 ; 0xf9ca9
+ xor dx, dx ; 31 d2 ; 0xf9cab virtio.c:432
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9cad
+ sal ax, 1 ; d1 e0 ; 0xf9cb0
+ rcl dx, 1 ; d1 d2 ; 0xf9cb2
+ loop 09cb0h ; e2 fa ; 0xf9cb4
+ xor cx, cx ; 31 c9 ; 0xf9cb6
+ add ax, bx ; 01 d8 ; 0xf9cb8
+ adc dx, cx ; 11 ca ; 0xf9cba
+ pop bp ; 5d ; 0xf9cbc virtio.c:433
+ pop cx ; 59 ; 0xf9cbd
+ pop bx ; 5b ; 0xf9cbe
+ retn ; c3 ; 0xf9cbf
+ ; disGetNextSymbol 0xf9cc0 LB 0x168c -> off=0x0 cb=0000000000000153 uValue=00000000000f86c0 'virtio_scsi_cmd_data_out'
+virtio_scsi_cmd_data_out: ; 0xf9cc0 LB 0x153
+ push bp ; 55 ; 0xf9cc0 virtio.c:435
+ mov bp, sp ; 89 e5 ; 0xf9cc1
+ push cx ; 51 ; 0xf9cc3
+ push si ; 56 ; 0xf9cc4
+ push di ; 57 ; 0xf9cc5
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9cc6
+ mov si, ax ; 89 c6 ; 0xf9cc9
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf9ccb
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9cce
+ mov es, dx ; 8e c2 ; 0xf9cd1 virtio.c:438
+ mov ax, word [es:si+05eh] ; 26 8b 44 5e ; 0xf9cd3
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9cd7
+ mov ax, si ; 89 f0 ; 0xf9cda virtio.c:440
+ add ax, 000b6h ; 05 b6 00 ; 0xf9cdc
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9cdf
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf9ce2
+ xor bx, bx ; 31 db ; 0xf9ce5
+ call 0b2b0h ; e8 c6 15 ; 0xf9ce7
+ lea di, [si+000dah] ; 8d bc da 00 ; 0xf9cea virtio.c:441
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf9cee
+ xor bx, bx ; 31 db ; 0xf9cf1
+ mov ax, di ; 89 f8 ; 0xf9cf3
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9cf5
+ call 0b2b0h ; e8 b5 15 ; 0xf9cf8
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9cfb virtio.c:443
+ mov byte [es:si+000b6h], 001h ; 26 c6 84 b6 00 01 ; 0xf9cfe
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9d04 virtio.c:444
+ mov byte [es:si+000b7h], al ; 26 88 84 b7 00 ; 0xf9d07
+ mov word [es:si+000b8h], strict word 00000h ; 26 c7 84 b8 00 00 00 ; 0xf9d0c virtio.c:445
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf9d13 virtio.c:447
+ push ax ; 50 ; 0xf9d17
+ lea ax, [si+000c9h] ; 8d 84 c9 00 ; 0xf9d18
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9d1c
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf9d1f
+ mov dx, es ; 8c c2 ; 0xf9d22
+ call 0b2c0h ; e8 99 15 ; 0xf9d24
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9d27 virtio.c:450
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9d2a
+ call 09ca2h ; e8 72 ff ; 0xf9d2d
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9d30
+ mov word [es:si], ax ; 26 89 04 ; 0xf9d33
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf9d36
+ 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; 0xf9d3a virtio.c:451
+ 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; 0xf9d43 virtio.c:452
+ 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; 0xf9d4c virtio.c:453
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9d55 virtio.c:456
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9d58
+ call 09ca2h ; e8 44 ff ; 0xf9d5b
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9d5e
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf9d61
+ mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf9d65
+ 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; 0xf9d69 virtio.c:457
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9d72 virtio.c:458
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf9d75
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9d79
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf9d7c
+ 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; 0xf9d80 virtio.c:459
+ mov ax, di ; 89 f8 ; 0xf9d89 virtio.c:462
+ mov dx, es ; 8c c2 ; 0xf9d8b
+ call 09ca2h ; e8 12 ff ; 0xf9d8d
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9d90
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf9d93
+ mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf9d97
+ 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; 0xf9d9b virtio.c:463
+ 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; 0xf9da4 virtio.c:464
+ 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; 0xf9dad virtio.c:465
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9db6 virtio.c:466
+ xor dx, dx ; 31 d2 ; 0xf9dba
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf9dbc
+ div bx ; f7 f3 ; 0xf9dbf
+ add dx, dx ; 01 d2 ; 0xf9dc1
+ mov di, si ; 89 f7 ; 0xf9dc3
+ add di, dx ; 01 d7 ; 0xf9dc5
+ mov word [es:di+054h], strict word 00000h ; 26 c7 45 54 00 00 ; 0xf9dc7
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9dcd virtio.c:470
+ inc word [es:si+052h] ; 26 ff 44 52 ; 0xf9dd1
+ mov bx, word [es:si+078h] ; 26 8b 5c 78 ; 0xf9dd5 virtio.c:474
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9dd9
+ mov ax, si ; 89 f0 ; 0xf9ddc
+ mov dx, es ; 8c c2 ; 0xf9dde
+ call 09c00h ; e8 1d fe ; 0xf9de0
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9de3 virtio.c:477
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9de6
+ cmp ax, word [es:si+05eh] ; 26 3b 44 5e ; 0xf9de9
+ je short 09de3h ; 74 f4 ; 0xf9ded
+ mov ax, si ; 89 f0 ; 0xf9def virtio.c:482
+ mov dx, es ; 8c c2 ; 0xf9df1
+ call 09c31h ; e8 3b fe ; 0xf9df3
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9df6 virtio.c:484
+ mov al, byte [es:si+000e5h] ; 26 8a 84 e5 00 ; 0xf9df9
+ test al, al ; 84 c0 ; 0xf9dfe
+ je short 09e07h ; 74 05 ; 0xf9e00
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9e02 virtio.c:485
+ jmp short 09e09h ; eb 02 ; 0xf9e05
+ xor ah, ah ; 30 e4 ; 0xf9e07 virtio.c:487
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9e09 virtio.c:488
+ pop di ; 5f ; 0xf9e0c
+ pop si ; 5e ; 0xf9e0d
+ pop cx ; 59 ; 0xf9e0e
+ pop bp ; 5d ; 0xf9e0f
+ retn 0000eh ; c2 0e 00 ; 0xf9e10
+ ; disGetNextSymbol 0xf9e13 LB 0x1539 -> off=0x0 cb=00000000000001ed uValue=00000000000f8813 'virtio_scsi_cmd_data_in'
+virtio_scsi_cmd_data_in: ; 0xf9e13 LB 0x1ed
+ push bp ; 55 ; 0xf9e13 virtio.c:490
+ mov bp, sp ; 89 e5 ; 0xf9e14
+ push cx ; 51 ; 0xf9e16
+ push si ; 56 ; 0xf9e17
+ push di ; 57 ; 0xf9e18
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9e19
+ mov si, ax ; 89 c6 ; 0xf9e1c
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf9e1e
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9e21
+ mov es, dx ; 8e c2 ; 0xf9e24 virtio.c:494
+ mov ax, word [es:si+05eh] ; 26 8b 44 5e ; 0xf9e26
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9e2a
+ lea di, [si+000b6h] ; 8d bc b6 00 ; 0xf9e2d virtio.c:497
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf9e31
+ xor bx, bx ; 31 db ; 0xf9e34
+ mov ax, di ; 89 f8 ; 0xf9e36
+ call 0b2b0h ; e8 75 14 ; 0xf9e38
+ mov ax, si ; 89 f0 ; 0xf9e3b virtio.c:498
+ add ax, 000dah ; 05 da 00 ; 0xf9e3d
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9e40
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf9e43
+ xor bx, bx ; 31 db ; 0xf9e46
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9e48
+ call 0b2b0h ; e8 62 14 ; 0xf9e4b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9e4e virtio.c:500
+ mov byte [es:si+000b6h], 001h ; 26 c6 84 b6 00 01 ; 0xf9e51
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9e57 virtio.c:501
+ mov byte [es:si+000b7h], al ; 26 88 84 b7 00 ; 0xf9e5a
+ mov word [es:si+000b8h], strict word 00000h ; 26 c7 84 b8 00 00 00 ; 0xf9e5f virtio.c:502
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf9e66 virtio.c:504
+ push ax ; 50 ; 0xf9e6a
+ lea ax, [si+000c9h] ; 8d 84 c9 00 ; 0xf9e6b
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9e6f
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf9e72
+ mov dx, es ; 8c c2 ; 0xf9e75
+ call 0b2c0h ; e8 46 14 ; 0xf9e77
+ mov ax, di ; 89 f8 ; 0xf9e7a virtio.c:507
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9e7c
+ call 09ca2h ; e8 20 fe ; 0xf9e7f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9e82
+ mov word [es:si], ax ; 26 89 04 ; 0xf9e85
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf9e88
+ 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; 0xf9e8c virtio.c:508
+ 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; 0xf9e95 virtio.c:509
+ 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; 0xf9e9e virtio.c:510
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9ea7 virtio.c:515
+ mov dx, es ; 8c c2 ; 0xf9eaa
+ call 09ca2h ; e8 f3 fd ; 0xf9eac
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9eaf
+ lea bx, [si+010h] ; 8d 5c 10 ; 0xf9eb2
+ mov word [es:bx], ax ; 26 89 07 ; 0xf9eb5
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf9eb8
+ 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; 0xf9ebc virtio.c:516
+ db 066h, 026h, 0c7h, 047h, 008h, 02ch, 000h, 000h, 000h
+ ; mov dword [es:bx+008h], strict dword 00000002ch ; 66 26 c7 47 08 2c 00 00 00; 0xf9ec5 virtio.c:517
+ db 066h, 026h, 0c7h, 047h, 00ch, 003h, 000h, 002h, 000h
+ ; mov dword [es:bx+00ch], strict dword 000020003h ; 66 26 c7 47 0c 03 00 02 00; 0xf9ece virtio.c:518
+ mov CL, strict byte 002h ; b1 02 ; 0xf9ed7 virtio.c:520
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9ed9 virtio.c:523
+ test ax, ax ; 85 c0 ; 0xf9edc
+ je short 09f09h ; 74 29 ; 0xf9ede
+ lea bx, [si+020h] ; 8d 5c 20 ; 0xf9ee0 virtio.c:525
+ db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf9ee3
+ 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; 0xf9eeb virtio.c:526
+ mov word [es:bx+008h], ax ; 26 89 47 08 ; 0xf9ef4 virtio.c:527
+ db 066h, 026h, 0c7h, 047h, 00ah, 000h, 000h, 003h, 000h
+ ; mov dword [es:bx+00ah], strict dword 000030000h ; 66 26 c7 47 0a 00 00 03 00; 0xf9ef8
+ mov word [es:bx+00eh], strict word 00003h ; 26 c7 47 0e 03 00 ; 0xf9f01 virtio.c:529
+ mov CL, strict byte 003h ; b1 03 ; 0xf9f07 virtio.c:530
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9f09 virtio.c:533
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9f0c
+ call 09ca2h ; e8 90 fd ; 0xf9f0f
+ movzx di, cl ; 0f b6 f9 ; 0xf9f12
+ mov bx, di ; 89 fb ; 0xf9f15
+ sal bx, 004h ; c1 e3 04 ; 0xf9f17
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9f1a
+ add bx, si ; 01 f3 ; 0xf9f1d
+ mov word [es:bx], ax ; 26 89 07 ; 0xf9f1f
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf9f22
+ 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; 0xf9f26 virtio.c:534
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9f2f virtio.c:535
+ mov word [es:bx+008h], ax ; 26 89 47 08 ; 0xf9f32
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9f36
+ mov word [es:bx+00ah], ax ; 26 89 47 0a ; 0xf9f39
+ mov word [es:bx+00ch], strict word 00002h ; 26 c7 47 0c 02 00 ; 0xf9f3d virtio.c:536
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf9f43 virtio.c:537
+ test ax, ax ; 85 c0 ; 0xf9f46
+ je short 09f4dh ; 74 03 ; 0xf9f48
+ lea ax, [di+001h] ; 8d 45 01 ; 0xf9f4a
+ movzx dx, cl ; 0f b6 d1 ; 0xf9f4d
+ sal dx, 004h ; c1 e2 04 ; 0xf9f50
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9f53
+ mov bx, si ; 89 f3 ; 0xf9f56
+ add bx, dx ; 01 d3 ; 0xf9f58
+ mov word [es:bx+00eh], ax ; 26 89 47 0e ; 0xf9f5a
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf9f5e virtio.c:538
+ cmp word [bp+012h], strict byte 00000h ; 83 7e 12 00 ; 0xf9f60 virtio.c:541
+ je short 09fa3h ; 74 3d ; 0xf9f64
+ movzx ax, cl ; 0f b6 c1 ; 0xf9f66 virtio.c:543
+ sal ax, 004h ; c1 e0 04 ; 0xf9f69
+ mov bx, si ; 89 f3 ; 0xf9f6c
+ add bx, ax ; 01 c3 ; 0xf9f6e
+ or byte [es:bx-004h], 001h ; 26 80 4f fc 01 ; 0xf9f70
+ movzx ax, cl ; 0f b6 c1 ; 0xf9f75 virtio.c:544
+ mov word [es:bx-002h], ax ; 26 89 47 fe ; 0xf9f78
+ db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf9f7c virtio.c:546
+ 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; 0xf9f84 virtio.c:547
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf9f8d virtio.c:548
+ mov word [es:bx+008h], ax ; 26 89 47 08 ; 0xf9f90
+ db 066h, 026h, 0c7h, 047h, 00ah, 000h, 000h, 002h, 000h
+ ; mov dword [es:bx+00ah], strict dword 000020000h ; 66 26 c7 47 0a 00 00 02 00; 0xf9f94
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xf9f9d virtio.c:550
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9fa3 virtio.c:555
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9fa6
+ xor dx, dx ; 31 d2 ; 0xf9faa
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf9fac
+ div bx ; f7 f3 ; 0xf9faf
+ add dx, dx ; 01 d2 ; 0xf9fb1
+ mov bx, si ; 89 f3 ; 0xf9fb3
+ add bx, dx ; 01 d3 ; 0xf9fb5
+ mov word [es:bx+054h], strict word 00000h ; 26 c7 47 54 00 00 ; 0xf9fb7
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9fbd virtio.c:556
+ inc word [es:si+052h] ; 26 ff 44 52 ; 0xf9fc1
+ mov bx, word [es:si+078h] ; 26 8b 5c 78 ; 0xf9fc5 virtio.c:560
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9fc9
+ mov ax, si ; 89 f0 ; 0xf9fcc
+ mov dx, es ; 8c c2 ; 0xf9fce
+ call 09c00h ; e8 2d fc ; 0xf9fd0
+ les ax, [bp-00ch] ; c4 46 f4 ; 0xf9fd3 virtio.c:563
+ cmp ax, word [es:si+05eh] ; 26 3b 44 5e ; 0xf9fd6
+ je short 09fd3h ; 74 f7 ; 0xf9fda
+ mov ax, si ; 89 f0 ; 0xf9fdc virtio.c:568
+ mov dx, es ; 8c c2 ; 0xf9fde
+ call 09c31h ; e8 4e fc ; 0xf9fe0
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9fe3 virtio.c:570
+ mov al, byte [es:si+000e5h] ; 26 8a 84 e5 00 ; 0xf9fe6
+ test al, al ; 84 c0 ; 0xf9feb
+ je short 09ff4h ; 74 05 ; 0xf9fed
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9fef virtio.c:571
+ jmp short 09ff6h ; eb 02 ; 0xf9ff2
+ xor ah, ah ; 30 e4 ; 0xf9ff4 virtio.c:573
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9ff6 virtio.c:574
+ pop di ; 5f ; 0xf9ff9
+ pop si ; 5e ; 0xf9ffa
+ pop cx ; 59 ; 0xf9ffb
+ pop bp ; 5d ; 0xf9ffc
+ retn 00012h ; c2 12 00 ; 0xf9ffd
+ ; disGetNextSymbol 0xfa000 LB 0x134c -> off=0x0 cb=0000000000000107 uValue=00000000000f8a00 'virtio_scsi_read_sectors'
+virtio_scsi_read_sectors: ; 0xfa000 LB 0x107
+ push bp ; 55 ; 0xfa000 virtio.c:583
+ mov bp, sp ; 89 e5 ; 0xfa001
+ push si ; 56 ; 0xfa003
+ push di ; 57 ; 0xfa004
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xfa005
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xfa008
+ mov es, [bp+006h] ; 8e 46 06 ; 0xfa00b virtio.c:591
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xfa00e
+ sub AL, strict byte 008h ; 2c 08 ; 0xfa012
+ mov byte [bp-006h], al ; 88 46 fa ; 0xfa014
+ cmp AL, strict byte 004h ; 3c 04 ; 0xfa017 virtio.c:592
+ jbe short 0a02eh ; 76 13 ; 0xfa019
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xfa01b virtio.c:593
+ push ax ; 50 ; 0xfa01f
+ push 00d5ah ; 68 5a 0d ; 0xfa020
+ push 00d73h ; 68 73 0d ; 0xfa023
+ push strict byte 00007h ; 6a 07 ; 0xfa026
+ call 01a23h ; e8 f8 79 ; 0xfa028
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa02b
+ mov es, [bp+006h] ; 8e 46 06 ; 0xfa02e virtio.c:595
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xfa031
+ xor bx, bx ; 31 db ; 0xfa035 virtio.c:597
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xfa037
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa03c virtio.c:303
+ mov es, dx ; 8e c2 ; 0xfa040
+ mov word [es:bx+000b4h], ax ; 26 89 87 b4 00 ; 0xfa042
+ mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xfa047 virtio.c:599
+ mov es, [bp+006h] ; 8e 46 06 ; 0xfa04c virtio.c:600
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xfa04f
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xfa053
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xfa057
+ mov dx, word [es:si] ; 26 8b 14 ; 0xfa05b
+ xchg ah, al ; 86 c4 ; 0xfa05e
+ xchg bh, bl ; 86 df ; 0xfa060
+ xchg ch, cl ; 86 cd ; 0xfa062
+ xchg dh, dl ; 86 d6 ; 0xfa064
+ xchg dx, ax ; 92 ; 0xfa066
+ xchg bx, cx ; 87 cb ; 0xfa067
+ mov word [bp-012h], ax ; 89 46 ee ; 0xfa069
+ mov word [bp-014h], bx ; 89 5e ec ; 0xfa06c
+ mov word [bp-016h], cx ; 89 4e ea ; 0xfa06f
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xfa072
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xfa075 virtio.c:601
+ mov ax, di ; 89 f8 ; 0xfa079 virtio.c:602
+ xor dx, dx ; 31 d2 ; 0xfa07b
+ xchg ah, al ; 86 c4 ; 0xfa07d
+ xchg dh, dl ; 86 d6 ; 0xfa07f
+ xchg dx, ax ; 92 ; 0xfa081
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xfa082
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xfa085
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xfa088 virtio.c:603
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xfa08c virtio.c:606
+ sal ax, 002h ; c1 e0 02 ; 0xfa090
+ mov bx, si ; 89 f3 ; 0xfa093
+ add bx, ax ; 01 c3 ; 0xfa095
+ mov dl, byte [es:bx+00296h] ; 26 8a 97 96 02 ; 0xfa097
+ push dword 000000000h ; 66 6a 00 ; 0xfa09c virtio.c:611
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xfa09f
+ xor ax, ax ; 31 c0 ; 0xfa0a2
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xfa0a4
+ mov cx, strict word 00009h ; b9 09 00 ; 0xfa0a7
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xfa0aa
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xfa0ad
+ loop 0a0aah ; e2 f8 ; 0xfa0b0
+ push dword [bp-00ah] ; 66 ff 76 f6 ; 0xfa0b2
+ db 066h, 026h, 0ffh, 074h, 008h
+ ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xfa0b6
+ push strict byte 00010h ; 6a 10 ; 0xfa0bb
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xfa0bd
+ push SS ; 16 ; 0xfa0c0
+ push bx ; 53 ; 0xfa0c1
+ movzx bx, dl ; 0f b6 da ; 0xfa0c2
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xfa0c5
+ call 09e13h ; e8 46 fd ; 0xfa0ca
+ mov dl, al ; 88 c2 ; 0xfa0cd
+ test al, al ; 84 c0 ; 0xfa0cf virtio.c:614
+ jne short 0a0e8h ; 75 15 ; 0xfa0d1
+ mov es, [bp+006h] ; 8e 46 06 ; 0xfa0d3 virtio.c:616
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xfa0d6
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa0da virtio.c:617
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xfa0dd
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xfa0e1
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xfa0e4
+ xor bx, bx ; 31 db ; 0xfa0e8 virtio.c:620
+ mov es, [bp+006h] ; 8e 46 06 ; 0xfa0ea
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xfa0ed
+ mov ax, word [es:bx+000b4h] ; 26 8b 87 b4 00 ; 0xfa0f2 virtio.c:308
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa0f7
+ movzx ax, dl ; 0f b6 c2 ; 0xfa0fb virtio.c:622
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa0fe virtio.c:623
+ pop di ; 5f ; 0xfa101
+ pop si ; 5e ; 0xfa102
+ pop bp ; 5d ; 0xfa103
+ retn 00004h ; c2 04 00 ; 0xfa104
+ ; disGetNextSymbol 0xfa107 LB 0x1245 -> off=0x0 cb=0000000000000104 uValue=00000000000f8b07 'virtio_scsi_write_sectors'
+virtio_scsi_write_sectors: ; 0xfa107 LB 0x104
+ push bp ; 55 ; 0xfa107 virtio.c:632
+ mov bp, sp ; 89 e5 ; 0xfa108
+ push si ; 56 ; 0xfa10a
+ push di ; 57 ; 0xfa10b
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xfa10c
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xfa10f
+ mov es, [bp+006h] ; 8e 46 06 ; 0xfa112 virtio.c:640
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xfa115
+ sub AL, strict byte 008h ; 2c 08 ; 0xfa119
+ mov byte [bp-006h], al ; 88 46 fa ; 0xfa11b
+ cmp AL, strict byte 004h ; 3c 04 ; 0xfa11e virtio.c:641
+ jbe short 0a135h ; 76 13 ; 0xfa120
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xfa122 virtio.c:642
+ push ax ; 50 ; 0xfa126
+ push 00d92h ; 68 92 0d ; 0xfa127
+ push 00d73h ; 68 73 0d ; 0xfa12a
+ push strict byte 00007h ; 6a 07 ; 0xfa12d
+ call 01a23h ; e8 f1 78 ; 0xfa12f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa132
+ mov es, [bp+006h] ; 8e 46 06 ; 0xfa135 virtio.c:644
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xfa138
+ xor bx, bx ; 31 db ; 0xfa13c virtio.c:646
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xfa13e
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa143 virtio.c:303
+ mov es, dx ; 8e c2 ; 0xfa147
+ mov word [es:bx+000b4h], ax ; 26 89 87 b4 00 ; 0xfa149
+ mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xfa14e virtio.c:649
+ mov es, [bp+006h] ; 8e 46 06 ; 0xfa153 virtio.c:650
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xfa156
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xfa15a
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xfa15e
+ mov dx, word [es:si] ; 26 8b 14 ; 0xfa162
+ xchg ah, al ; 86 c4 ; 0xfa165
+ xchg bh, bl ; 86 df ; 0xfa167
+ xchg ch, cl ; 86 cd ; 0xfa169
+ xchg dh, dl ; 86 d6 ; 0xfa16b
+ xchg dx, ax ; 92 ; 0xfa16d
+ xchg bx, cx ; 87 cb ; 0xfa16e
+ mov word [bp-012h], ax ; 89 46 ee ; 0xfa170
+ mov word [bp-014h], bx ; 89 5e ec ; 0xfa173
+ mov word [bp-016h], cx ; 89 4e ea ; 0xfa176
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xfa179
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xfa17c virtio.c:651
+ mov ax, di ; 89 f8 ; 0xfa180 virtio.c:652
+ xor dx, dx ; 31 d2 ; 0xfa182
+ xchg ah, al ; 86 c4 ; 0xfa184
+ xchg dh, dl ; 86 d6 ; 0xfa186
+ xchg dx, ax ; 92 ; 0xfa188
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xfa189
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xfa18c
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xfa18f virtio.c:653
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xfa193 virtio.c:655
+ sal ax, 002h ; c1 e0 02 ; 0xfa197
+ mov bx, si ; 89 f3 ; 0xfa19a
+ add bx, ax ; 01 c3 ; 0xfa19c
+ mov dl, byte [es:bx+00296h] ; 26 8a 97 96 02 ; 0xfa19e
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xfa1a3 virtio.c:660
+ xor ax, ax ; 31 c0 ; 0xfa1a6
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xfa1a8
+ mov cx, strict word 00009h ; b9 09 00 ; 0xfa1ab
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xfa1ae
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xfa1b1
+ loop 0a1aeh ; e2 f8 ; 0xfa1b4
+ push dword [bp-00ah] ; 66 ff 76 f6 ; 0xfa1b6
+ db 066h, 026h, 0ffh, 074h, 008h
+ ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xfa1ba
+ push strict byte 00010h ; 6a 10 ; 0xfa1bf
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xfa1c1
+ push SS ; 16 ; 0xfa1c4
+ push bx ; 53 ; 0xfa1c5
+ movzx bx, dl ; 0f b6 da ; 0xfa1c6
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xfa1c9
+ call 09cc0h ; e8 ef fa ; 0xfa1ce
+ mov dl, al ; 88 c2 ; 0xfa1d1
+ test al, al ; 84 c0 ; 0xfa1d3 virtio.c:663
+ jne short 0a1ech ; 75 15 ; 0xfa1d5
+ mov es, [bp+006h] ; 8e 46 06 ; 0xfa1d7 virtio.c:665
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xfa1da
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa1de virtio.c:666
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xfa1e1
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xfa1e5
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xfa1e8
+ xor bx, bx ; 31 db ; 0xfa1ec virtio.c:669
+ mov es, [bp+006h] ; 8e 46 06 ; 0xfa1ee
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xfa1f1
+ mov ax, word [es:bx+000b4h] ; 26 8b 87 b4 00 ; 0xfa1f6 virtio.c:308
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa1fb
+ movzx ax, dl ; 0f b6 c2 ; 0xfa1ff virtio.c:671
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa202 virtio.c:672
+ pop di ; 5f ; 0xfa205
+ pop si ; 5e ; 0xfa206
+ pop bp ; 5d ; 0xfa207
+ retn 00004h ; c2 04 00 ; 0xfa208
+ ; disGetNextSymbol 0xfa20b LB 0x1141 -> off=0x0 cb=0000000000000116 uValue=00000000000f8c0b 'virtio_scsi_cmd_packet'
+virtio_scsi_cmd_packet: ; 0xfa20b LB 0x116
+ push bp ; 55 ; 0xfa20b virtio.c:688
+ mov bp, sp ; 89 e5 ; 0xfa20c
+ push si ; 56 ; 0xfa20e
+ push di ; 57 ; 0xfa20f
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xfa210
+ mov di, ax ; 89 c7 ; 0xfa213
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xfa215
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xfa218
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xfa21b
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xfa21e virtio.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfa221
+ mov es, ax ; 8e c0 ; 0xfa224
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xfa226
+ mov si, strict word 0005eh ; be 5e 00 ; 0xfa229 virtio.c:49
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa22c
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xfa22f virtio.c:696
+ jne short 0a254h ; 75 1f ; 0xfa233
+ mov bx, 00f24h ; bb 24 0f ; 0xfa235 virtio.c:697
+ mov cx, ds ; 8c d9 ; 0xfa238
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa23a
+ call 019e2h ; e8 a2 77 ; 0xfa23d
+ push 00dach ; 68 ac 0d ; 0xfa240
+ push 00dc3h ; 68 c3 0d ; 0xfa243
+ push strict byte 00004h ; 6a 04 ; 0xfa246
+ call 01a23h ; e8 d8 77 ; 0xfa248
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xfa24b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa24e virtio.c:698
+ jmp near 0a318h ; e9 c4 00 ; 0xfa251
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xfa254 virtio.c:702
+ jne short 0a24eh ; 75 f4 ; 0xfa258
+ xor bx, bx ; 31 db ; 0xfa25a virtio.c:716
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa25c
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xfa25f
+ sub di, strict byte 00008h ; 83 ef 08 ; 0xfa264 virtio.c:708
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfa267 virtio.c:303
+ mov es, dx ; 8e c2 ; 0xfa26b
+ mov word [es:bx+000b4h], ax ; 26 89 87 b4 00 ; 0xfa26d
+ mov bx, di ; 89 fb ; 0xfa272 virtio.c:717
+ sal bx, 002h ; c1 e3 02 ; 0xfa274
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa277
+ add bx, si ; 01 f3 ; 0xfa27a
+ mov al, byte [es:bx+00296h] ; 26 8a 87 96 02 ; 0xfa27c
+ mov byte [bp-006h], al ; 88 46 fa ; 0xfa281
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xfa284 virtio.c:719
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xfa287
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfa28a
+ sal ax, 1 ; d1 e0 ; 0xfa28d
+ rcl dx, 1 ; d1 d2 ; 0xfa28f
+ loop 0a28dh ; e2 fa ; 0xfa291
+ mov word [es:si], ax ; 26 89 04 ; 0xfa293
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xfa296
+ 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; 0xfa29a
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xfa2a3 virtio.c:720
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xfa2a6
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa2aa
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xfa2ad
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xfa2b1 virtio.c:721
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xfa2b5
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xfa2b8
+ xor cx, cx ; 31 c9 ; 0xfa2bb
+ call 0b250h ; e8 90 0f ; 0xfa2bd
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xfa2c0
+ push word [es:si+020h] ; 26 ff 74 20 ; 0xfa2c4 virtio.c:726
+ push word [bp+004h] ; ff 76 04 ; 0xfa2c8
+ push dword [bp+006h] ; 66 ff 76 06 ; 0xfa2cb
+ db 066h, 026h, 0ffh, 074h, 008h
+ ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xfa2cf
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xfa2d4
+ push ax ; 50 ; 0xfa2d8
+ push dword [bp-00eh] ; 66 ff 76 f2 ; 0xfa2d9
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xfa2dd
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xfa2e1
+ xor ax, ax ; 31 c0 ; 0xfa2e6
+ call 09e13h ; e8 28 fb ; 0xfa2e8
+ mov dl, al ; 88 c2 ; 0xfa2eb
+ test al, al ; 84 c0 ; 0xfa2ed virtio.c:728
+ jne short 0a302h ; 75 11 ; 0xfa2ef
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xfa2f1 virtio.c:729
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa2f4
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xfa2f7
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xfa2fb
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xfa2fe
+ xor bx, bx ; 31 db ; 0xfa302 virtio.c:732
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa304
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xfa307
+ mov ax, word [es:bx+000b4h] ; 26 8b 87 b4 00 ; 0xfa30c virtio.c:308
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa311
+ movzx ax, dl ; 0f b6 c2 ; 0xfa315 virtio.c:734
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa318 virtio.c:735
+ pop di ; 5f ; 0xfa31b
+ pop si ; 5e ; 0xfa31c
+ pop bp ; 5d ; 0xfa31d
+ retn 0000ch ; c2 0c 00 ; 0xfa31e
+ ; disGetNextSymbol 0xfa321 LB 0x102b -> off=0x0 cb=0000000000000483 uValue=00000000000f8d21 'virtio_scsi_detect_devices'
+virtio_scsi_detect_devices: ; 0xfa321 LB 0x483
+ push bp ; 55 ; 0xfa321 virtio.c:737
+ mov bp, sp ; 89 e5 ; 0xfa322
+ push bx ; 53 ; 0xfa324
+ push cx ; 51 ; 0xfa325
+ push si ; 56 ; 0xfa326
+ push di ; 57 ; 0xfa327
+ sub sp, 0023ch ; 81 ec 3c 02 ; 0xfa328
+ push ax ; 50 ; 0xfa32c
+ push dx ; 52 ; 0xfa32d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xfa32e virtio.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfa331
+ mov es, ax ; 8e c0 ; 0xfa334
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xfa336
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xfa339 virtio.c:49
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xfa33c
+ mov word [bp-01ch], strict word 00000h ; c7 46 e4 00 00 ; 0xfa33f virtio.c:746
+ jmp near 0a71ah ; e9 d3 03 ; 0xfa344
+ cmp AL, strict byte 004h ; 3c 04 ; 0xfa347 virtio.c:767
+ jnc near 0a799h ; 0f 83 4c 04 ; 0xfa349
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfa34d virtio.c:782
+ xor bx, bx ; 31 db ; 0xfa350
+ mov dx, ss ; 8c d2 ; 0xfa352
+ lea ax, [bp-044h] ; 8d 46 bc ; 0xfa354
+ call 0b2b0h ; e8 56 0f ; 0xfa357
+ mov byte [bp-044h], 09eh ; c6 46 bc 9e ; 0xfa35a virtio.c:783
+ mov byte [bp-043h], 010h ; c6 46 bd 10 ; 0xfa35e virtio.c:784
+ mov byte [bp-037h], 020h ; c6 46 c9 20 ; 0xfa362 virtio.c:785
+ push dword 000000000h ; 66 6a 00 ; 0xfa366 virtio.c:787
+ push dword 000000020h ; 66 6a 20 ; 0xfa369
+ lea dx, [bp-00244h] ; 8d 96 bc fd ; 0xfa36c
+ push SS ; 16 ; 0xfa370
+ push dx ; 52 ; 0xfa371
+ push strict byte 00010h ; 6a 10 ; 0xfa372
+ lea dx, [bp-044h] ; 8d 56 bc ; 0xfa374
+ push SS ; 16 ; 0xfa377
+ push dx ; 52 ; 0xfa378
+ mov bx, si ; 89 f3 ; 0xfa379
+ mov ax, word [bp-00246h] ; 8b 86 ba fd ; 0xfa37b
+ mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xfa37f
+ call 09e13h ; e8 8d fa ; 0xfa383
+ test al, al ; 84 c0 ; 0xfa386 virtio.c:788
+ je short 0a398h ; 74 0e ; 0xfa388
+ push 00de3h ; 68 e3 0d ; 0xfa38a virtio.c:789
+ push 00dfeh ; 68 fe 0d ; 0xfa38d
+ push strict byte 00007h ; 6a 07 ; 0xfa390
+ call 01a23h ; e8 8e 76 ; 0xfa392
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xfa395
+ mov ax, word [bp-0023eh] ; 8b 86 c2 fd ; 0xfa398 virtio.c:794
+ mov bx, word [bp-00240h] ; 8b 9e c0 fd ; 0xfa39c
+ mov cx, word [bp-00242h] ; 8b 8e be fd ; 0xfa3a0
+ mov dx, word [bp-00244h] ; 8b 96 bc fd ; 0xfa3a4
+ xchg ah, al ; 86 c4 ; 0xfa3a8
+ xchg bh, bl ; 86 df ; 0xfa3aa
+ xchg ch, cl ; 86 cd ; 0xfa3ac
+ xchg dh, dl ; 86 d6 ; 0xfa3ae
+ xchg dx, ax ; 92 ; 0xfa3b0
+ xchg bx, cx ; 87 cb ; 0xfa3b1
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xfa3b3
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xfa3b6
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xfa3b9
+ mov word [bp-02ch], cx ; 89 4e d4 ; 0xfa3bc
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xfa3bf
+ mov word [bp-02ah], bx ; 89 5e d6 ; 0xfa3c2
+ adc ax, strict word 00000h ; 15 00 00 ; 0xfa3c5
+ mov word [bp-014h], ax ; 89 46 ec ; 0xfa3c8
+ movzx ax, byte [bp-0023ch] ; 0f b6 86 c4 fd ; 0xfa3cb virtio.c:796
+ sal ax, 008h ; c1 e0 08 ; 0xfa3d0
+ movzx si, byte [bp-0023bh] ; 0f b6 b6 c5 fd ; 0xfa3d3
+ xor bx, bx ; 31 db ; 0xfa3d8
+ or si, ax ; 09 c6 ; 0xfa3da
+ movzx ax, byte [bp-0023ah] ; 0f b6 86 c6 fd ; 0xfa3dc
+ xor dx, dx ; 31 d2 ; 0xfa3e1
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfa3e3
+ sal ax, 1 ; d1 e0 ; 0xfa3e6
+ rcl dx, 1 ; d1 d2 ; 0xfa3e8
+ loop 0a3e6h ; e2 fa ; 0xfa3ea
+ or bx, ax ; 09 c3 ; 0xfa3ec
+ or dx, si ; 09 f2 ; 0xfa3ee
+ movzx ax, byte [bp-00239h] ; 0f b6 86 c7 fd ; 0xfa3f0
+ or bx, ax ; 09 c3 ; 0xfa3f5
+ mov word [bp-030h], bx ; 89 5e d0 ; 0xfa3f7
+ test dx, dx ; 85 d2 ; 0xfa3fa virtio.c:802
+ jne short 0a404h ; 75 06 ; 0xfa3fc
+ cmp bx, 00200h ; 81 fb 00 02 ; 0xfa3fe
+ je short 0a424h ; 74 20 ; 0xfa402
+ mov bx, 00f24h ; bb 24 0f ; 0xfa404 virtio.c:805
+ mov cx, ds ; 8c d9 ; 0xfa407
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa409
+ call 019e2h ; e8 d3 75 ; 0xfa40c
+ push dx ; 52 ; 0xfa40f
+ push word [bp-030h] ; ff 76 d0 ; 0xfa410
+ push word [bp-01ch] ; ff 76 e4 ; 0xfa413
+ push 00e1dh ; 68 1d 0e ; 0xfa416
+ push strict byte 00004h ; 6a 04 ; 0xfa419
+ call 01a23h ; e8 05 76 ; 0xfa41b
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xfa41e
+ jmp near 0a70fh ; e9 eb 02 ; 0xfa421 virtio.c:806
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa424 virtio.c:810
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa427
+ jc short 0a437h ; 72 0c ; 0xfa429
+ jbe short 0a43fh ; 76 12 ; 0xfa42b
+ cmp AL, strict byte 003h ; 3c 03 ; 0xfa42d
+ je short 0a447h ; 74 16 ; 0xfa42f
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfa431
+ je short 0a443h ; 74 0e ; 0xfa433
+ jmp short 0a490h ; eb 59 ; 0xfa435
+ test al, al ; 84 c0 ; 0xfa437
+ jne short 0a490h ; 75 55 ; 0xfa439
+ mov BL, strict byte 090h ; b3 90 ; 0xfa43b virtio.c:813
+ jmp short 0a449h ; eb 0a ; 0xfa43d virtio.c:814
+ mov BL, strict byte 098h ; b3 98 ; 0xfa43f virtio.c:816
+ jmp short 0a449h ; eb 06 ; 0xfa441 virtio.c:817
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xfa443 virtio.c:819
+ jmp short 0a449h ; eb 02 ; 0xfa445 virtio.c:820
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xfa447 virtio.c:822
+ mov al, bl ; 88 d8 ; 0xfa449 virtio.c:826
+ add AL, strict byte 007h ; 04 07 ; 0xfa44b
+ movzx cx, al ; 0f b6 c8 ; 0xfa44d
+ mov ax, cx ; 89 c8 ; 0xfa450
+ call 01765h ; e8 10 73 ; 0xfa452
+ test al, al ; 84 c0 ; 0xfa455
+ je short 0a490h ; 74 37 ; 0xfa457
+ mov al, bl ; 88 d8 ; 0xfa459 virtio.c:831
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa45b
+ xor ah, ah ; 30 e4 ; 0xfa45d
+ call 01765h ; e8 03 73 ; 0xfa45f
+ movzx dx, al ; 0f b6 d0 ; 0xfa462
+ sal dx, 008h ; c1 e2 08 ; 0xfa465
+ movzx ax, bl ; 0f b6 c3 ; 0xfa468
+ call 01765h ; e8 f7 72 ; 0xfa46b
+ xor ah, ah ; 30 e4 ; 0xfa46e
+ add ax, dx ; 01 d0 ; 0xfa470
+ cwd ; 99 ; 0xfa472
+ mov si, ax ; 89 c6 ; 0xfa473
+ mov al, bl ; 88 d8 ; 0xfa475 virtio.c:832
+ add AL, strict byte 002h ; 04 02 ; 0xfa477
+ xor ah, ah ; 30 e4 ; 0xfa479
+ call 01765h ; e8 e7 72 ; 0xfa47b
+ xor ah, ah ; 30 e4 ; 0xfa47e
+ mov word [bp-024h], ax ; 89 46 dc ; 0xfa480
+ mov ax, cx ; 89 c8 ; 0xfa483 virtio.c:833
+ call 01765h ; e8 dd 72 ; 0xfa485
+ xor ah, ah ; 30 e4 ; 0xfa488
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xfa48a
+ jmp near 0a57fh ; e9 ef 00 ; 0xfa48d virtio.c:835
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xfa490 virtio.c:836
+ mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xfa493
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xfa496
+ mov dx, word [bp-02eh] ; 8b 56 d2 ; 0xfa499
+ mov si, strict word 0000ch ; be 0c 00 ; 0xfa49c
+ call 0b290h ; e8 ee 0d ; 0xfa49f
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xfa4a2
+ mov word [bp-012h], bx ; 89 5e ee ; 0xfa4a5
+ mov word [bp-01eh], cx ; 89 4e e2 ; 0xfa4a8
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xfa4ab
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xfa4ae virtio.c:840
+ test ax, ax ; 85 c0 ; 0xfa4b1
+ jnbe short 0a4cbh ; 77 16 ; 0xfa4b3
+ jne near 0a540h ; 0f 85 87 00 ; 0xfa4b5
+ cmp word [bp-02ah], strict byte 00000h ; 83 7e d6 00 ; 0xfa4b9
+ jnbe short 0a4cbh ; 77 0c ; 0xfa4bd
+ jne near 0a540h ; 0f 85 7d 00 ; 0xfa4bf
+ cmp word [bp-02ch], strict byte 00040h ; 83 7e d4 40 ; 0xfa4c3
+ jnbe short 0a4cbh ; 77 02 ; 0xfa4c7
+ jne short 0a540h ; 75 75 ; 0xfa4c9
+ mov word [bp-024h], 000ffh ; c7 46 dc ff 00 ; 0xfa4cb virtio.c:842
+ mov word [bp-00eh], strict word 0003fh ; c7 46 f2 3f 00 ; 0xfa4d0 virtio.c:843
+ mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xfa4d5 virtio.c:845
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xfa4d8
+ mov dx, word [bp-02eh] ; 8b 56 d2 ; 0xfa4db
+ mov si, strict word 00006h ; be 06 00 ; 0xfa4de
+ call 0b290h ; e8 ac 0d ; 0xfa4e1
+ mov si, word [bp-020h] ; 8b 76 e0 ; 0xfa4e4
+ add si, dx ; 01 d6 ; 0xfa4e7
+ mov word [bp-034h], si ; 89 76 cc ; 0xfa4e9
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xfa4ec
+ adc dx, cx ; 11 ca ; 0xfa4ef
+ mov word [bp-022h], dx ; 89 56 de ; 0xfa4f1
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa4f4
+ adc dx, bx ; 11 da ; 0xfa4f7
+ mov word [bp-016h], dx ; 89 56 ea ; 0xfa4f9
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa4fc
+ adc dx, ax ; 11 c2 ; 0xfa4ff
+ mov word [bp-032h], dx ; 89 56 ce ; 0xfa501
+ mov ax, dx ; 89 d0 ; 0xfa504 virtio.c:846
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xfa506
+ mov cx, word [bp-022h] ; 8b 4e de ; 0xfa509
+ mov dx, si ; 89 f2 ; 0xfa50c
+ mov si, strict word 00008h ; be 08 00 ; 0xfa50e
+ call 0b290h ; e8 7c 0d ; 0xfa511
+ mov word [bp-026h], bx ; 89 5e da ; 0xfa514
+ mov word [bp-018h], cx ; 89 4e e8 ; 0xfa517
+ mov word [bp-028h], dx ; 89 56 d8 ; 0xfa51a
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xfa51d
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xfa520
+ mov cx, word [bp-022h] ; 8b 4e de ; 0xfa523
+ mov dx, word [bp-034h] ; 8b 56 cc ; 0xfa526
+ mov si, strict word 00010h ; be 10 00 ; 0xfa529
+ call 0b290h ; e8 61 0d ; 0xfa52c
+ mov si, word [bp-028h] ; 8b 76 d8 ; 0xfa52f
+ add si, dx ; 01 d6 ; 0xfa532
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa534
+ adc dx, cx ; 11 ca ; 0xfa537
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xfa539
+ adc ax, bx ; 11 d8 ; 0xfa53c
+ jmp short 0a57fh ; eb 3f ; 0xfa53e virtio.c:848
+ test ax, ax ; 85 c0 ; 0xfa540
+ jnbe short 0a556h ; 77 12 ; 0xfa542
+ jne short 0a562h ; 75 1c ; 0xfa544
+ cmp word [bp-02ah], strict byte 00000h ; 83 7e d6 00 ; 0xfa546
+ jnbe short 0a556h ; 77 0a ; 0xfa54a
+ jne short 0a562h ; 75 14 ; 0xfa54c
+ cmp word [bp-02ch], strict byte 00020h ; 83 7e d4 20 ; 0xfa54e
+ jnbe short 0a556h ; 77 02 ; 0xfa552
+ jne short 0a562h ; 75 0c ; 0xfa554
+ mov word [bp-024h], 00080h ; c7 46 dc 80 00 ; 0xfa556 virtio.c:850
+ mov word [bp-00eh], strict word 00020h ; c7 46 f2 20 00 ; 0xfa55b virtio.c:851
+ jmp short 0a57bh ; eb 19 ; 0xfa560 virtio.c:854
+ mov word [bp-024h], strict word 00040h ; c7 46 dc 40 00 ; 0xfa562 virtio.c:856
+ mov word [bp-00eh], strict word 00020h ; c7 46 f2 20 00 ; 0xfa567 virtio.c:857
+ mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xfa56c virtio.c:858
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xfa56f
+ mov dx, word [bp-02eh] ; 8b 56 d2 ; 0xfa572
+ mov si, strict word 0000bh ; be 0b 00 ; 0xfa575
+ call 0b290h ; e8 15 0d ; 0xfa578
+ mov si, dx ; 89 d6 ; 0xfa57b
+ mov dx, cx ; 89 ca ; 0xfa57d
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa57f virtio.c:863
+ add AL, strict byte 008h ; 04 08 ; 0xfa582
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xfa584
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xfa587 virtio.c:865
+ sal ax, 002h ; c1 e0 02 ; 0xfa58b
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xfa58e
+ mov bx, di ; 89 fb ; 0xfa591
+ add bx, ax ; 01 c3 ; 0xfa593
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xfa595
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xfa598
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xfa59d virtio.c:866
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xfa5a1
+ mov bx, di ; 89 fb ; 0xfa5a4
+ add bx, ax ; 01 c3 ; 0xfa5a6
+ db 066h, 026h, 0c7h, 047h, 022h, 006h, 0ffh, 000h, 000h
+ ; mov dword [es:bx+022h], strict dword 00000ff06h ; 66 26 c7 47 22 06 ff 00 00; 0xfa5a8
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xfa5b1 virtio.c:870
+ mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xfa5b4
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xfa5b8 virtio.c:871
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xfa5bd virtio.c:874
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xfa5c0
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xfa5c4 virtio.c:875
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xfa5c7
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xfa5cb virtio.c:876
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xfa5ce
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xfa5d2 virtio.c:877
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xfa5d5
+ test dx, dx ; 85 d2 ; 0xfa5d9 virtio.c:879
+ jne short 0a5e3h ; 75 06 ; 0xfa5db
+ cmp si, 00400h ; 81 fe 00 04 ; 0xfa5dd
+ jbe short 0a5f1h ; 76 0e ; 0xfa5e1
+ mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xfa5e3 virtio.c:880
+ mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xfa5e9 virtio.c:881
+ jmp short 0a5f9h ; eb 08 ; 0xfa5ef virtio.c:882
+ mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xfa5f1 virtio.c:883
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xfa5f5 virtio.c:884
+ mov bx, 00f24h ; bb 24 0f ; 0xfa5f9 virtio.c:888
+ mov cx, ds ; 8c d9 ; 0xfa5fc
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa5fe
+ call 019e2h ; e8 de 73 ; 0xfa601
+ push word [bp-014h] ; ff 76 ec ; 0xfa604
+ push dword [bp-02ch] ; 66 ff 76 d4 ; 0xfa607
+ push word [bp-02eh] ; ff 76 d2 ; 0xfa60b
+ push word [bp-00eh] ; ff 76 f2 ; 0xfa60e
+ push word [bp-024h] ; ff 76 dc ; 0xfa611
+ push dx ; 52 ; 0xfa614
+ push si ; 56 ; 0xfa615
+ push word [bp-01ch] ; ff 76 e4 ; 0xfa616
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xfa619
+ push ax ; 50 ; 0xfa61d
+ push 00e4bh ; 68 4b 0e ; 0xfa61e
+ push strict byte 00004h ; 6a 04 ; 0xfa621
+ call 01a23h ; e8 fd 73 ; 0xfa623
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xfa626
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xfa629 virtio.c:890
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xfa62d
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xfa630
+ add bx, di ; 01 fb ; 0xfa633
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xfa635
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xfa638
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xfa63c
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xfa63f
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xfa643
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xfa646
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xfa64a
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xfa64d
+ mov al, byte [es:di+00252h] ; 26 8a 85 52 02 ; 0xfa651 virtio.c:893
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xfa656 virtio.c:894
+ add ah, 008h ; 80 c4 08 ; 0xfa659
+ movzx bx, al ; 0f b6 d8 ; 0xfa65c
+ add bx, di ; 01 fb ; 0xfa65f
+ mov byte [es:bx+00253h], ah ; 26 88 a7 53 02 ; 0xfa661
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa666 virtio.c:895
+ mov byte [es:di+00252h], al ; 26 88 85 52 02 ; 0xfa668 virtio.c:896
+ mov bx, strict word 00075h ; bb 75 00 ; 0xfa66d virtio.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfa670
+ mov es, ax ; 8e c0 ; 0xfa673
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xfa675
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa678 virtio.c:900
+ mov byte [es:bx], al ; 26 88 07 ; 0xfa67a virtio.c:43
+ inc byte [bp-00ah] ; fe 46 f6 ; 0xfa67d virtio.c:903
+ jmp near 0a704h ; e9 81 00 ; 0xfa680 virtio.c:905
+ mov bx, 00f24h ; bb 24 0f ; 0xfa683 virtio.c:917
+ mov cx, ds ; 8c d9 ; 0xfa686
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa688
+ call 019e2h ; e8 54 73 ; 0xfa68b
+ push word [bp-01ch] ; ff 76 e4 ; 0xfa68e
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xfa691
+ push ax ; 50 ; 0xfa695
+ push 00e79h ; 68 79 0e ; 0xfa696
+ push strict byte 00004h ; 6a 04 ; 0xfa699
+ call 01a23h ; e8 85 73 ; 0xfa69b
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa69e
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa6a1 virtio.c:920
+ add AL, strict byte 008h ; 04 08 ; 0xfa6a4
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xfa6a6
+ test byte [bp-00243h], 080h ; f6 86 bd fd 80 ; 0xfa6a9 virtio.c:922
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xfa6ae
+ xor ah, ah ; 30 e4 ; 0xfa6b1
+ movzx bx, byte [bp-00ah] ; 0f b6 5e f6 ; 0xfa6b3 virtio.c:924
+ sal bx, 002h ; c1 e3 02 ; 0xfa6b7
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xfa6ba
+ add bx, di ; 01 fb ; 0xfa6bd
+ mov ah, byte [bp-01ch] ; 8a 66 e4 ; 0xfa6bf
+ mov byte [es:bx+00296h], ah ; 26 88 a7 96 02 ; 0xfa6c2
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xfa6c7 virtio.c:925
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xfa6cb
+ add bx, di ; 01 fb ; 0xfa6ce
+ mov word [es:bx+022h], 00506h ; 26 c7 47 22 06 05 ; 0xfa6d0
+ mov byte [es:bx+024h], al ; 26 88 47 24 ; 0xfa6d6 virtio.c:927
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xfa6da virtio.c:928
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xfa6e0 virtio.c:929
+ mov al, byte [es:di+00267h] ; 26 8a 85 67 02 ; 0xfa6e5 virtio.c:932
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xfa6ea virtio.c:933
+ add ah, 008h ; 80 c4 08 ; 0xfa6ed
+ movzx bx, al ; 0f b6 d8 ; 0xfa6f0
+ add bx, di ; 01 fb ; 0xfa6f3
+ mov byte [es:bx+00268h], ah ; 26 88 a7 68 02 ; 0xfa6f5
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa6fa virtio.c:934
+ mov byte [es:di+00267h], al ; 26 88 85 67 02 ; 0xfa6fc virtio.c:935
+ inc byte [bp-00ah] ; fe 46 f6 ; 0xfa701 virtio.c:937
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa704 virtio.c:945
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xfa707
+ mov byte [es:di+002a4h], al ; 26 88 85 a4 02 ; 0xfa70a
+ inc word [bp-01ch] ; ff 46 e4 ; 0xfa70f virtio.c:946
+ cmp word [bp-01ch], strict byte 00010h ; 83 7e e4 10 ; 0xfa712
+ jnl near 0a799h ; 0f 8d 7f 00 ; 0xfa716
+ mov byte [bp-044h], 012h ; c6 46 bc 12 ; 0xfa71a
+ xor al, al ; 30 c0 ; 0xfa71e
+ mov byte [bp-043h], al ; 88 46 bd ; 0xfa720
+ mov byte [bp-042h], al ; 88 46 be ; 0xfa723
+ mov byte [bp-041h], al ; 88 46 bf ; 0xfa726
+ mov byte [bp-040h], 005h ; c6 46 c0 05 ; 0xfa729
+ mov byte [bp-03fh], al ; 88 46 c1 ; 0xfa72d
+ mov cx, 00200h ; b9 00 02 ; 0xfa730
+ xor bx, bx ; 31 db ; 0xfa733
+ mov dx, ss ; 8c d2 ; 0xfa735
+ lea ax, [bp-00244h] ; 8d 86 bc fd ; 0xfa737
+ call 0b2b0h ; e8 72 0b ; 0xfa73b
+ push dword 000000000h ; 66 6a 00 ; 0xfa73e
+ push dword 000000005h ; 66 6a 05 ; 0xfa741
+ lea dx, [bp-00244h] ; 8d 96 bc fd ; 0xfa744
+ push SS ; 16 ; 0xfa748
+ push dx ; 52 ; 0xfa749
+ push strict byte 00006h ; 6a 06 ; 0xfa74a
+ lea dx, [bp-044h] ; 8d 56 bc ; 0xfa74c
+ push SS ; 16 ; 0xfa74f
+ push dx ; 52 ; 0xfa750
+ movzx si, byte [bp-01ch] ; 0f b6 76 e4 ; 0xfa751
+ mov bx, si ; 89 f3 ; 0xfa755
+ mov ax, word [bp-00246h] ; 8b 86 ba fd ; 0xfa757
+ mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xfa75b
+ call 09e13h ; e8 b1 f6 ; 0xfa75f
+ test al, al ; 84 c0 ; 0xfa762
+ jne short 0a704h ; 75 9e ; 0xfa764
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xfa766
+ mov al, byte [es:di+002a4h] ; 26 8a 85 a4 02 ; 0xfa769
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xfa76e
+ test byte [bp-00244h], 0e0h ; f6 86 bc fd e0 ; 0xfa771
+ jne short 0a781h ; 75 09 ; 0xfa776
+ test byte [bp-00244h], 01fh ; f6 86 bc fd 1f ; 0xfa778
+ je near 0a347h ; 0f 84 c6 fb ; 0xfa77d
+ test byte [bp-00244h], 0e0h ; f6 86 bc fd e0 ; 0xfa781
+ jne near 0a704h ; 0f 85 7a ff ; 0xfa786
+ mov al, byte [bp-00244h] ; 8a 86 bc fd ; 0xfa78a
+ and AL, strict byte 01fh ; 24 1f ; 0xfa78e
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfa790
+ je near 0a683h ; 0f 84 ed fe ; 0xfa792
+ jmp near 0a704h ; e9 6b ff ; 0xfa796
+ xor ax, ax ; 31 c0 ; 0xfa799 virtio.c:949
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa79b
+ pop di ; 5f ; 0xfa79e
+ pop si ; 5e ; 0xfa79f
+ pop cx ; 59 ; 0xfa7a0
+ pop bx ; 5b ; 0xfa7a1
+ pop bp ; 5d ; 0xfa7a2
+ retn ; c3 ; 0xfa7a3
+ ; disGetNextSymbol 0xfa7a4 LB 0xba8 -> off=0x0 cb=0000000000000346 uValue=00000000000f91a4 'virtio_scsi_hba_init'
+virtio_scsi_hba_init: ; 0xfa7a4 LB 0x346
+ push bp ; 55 ; 0xfa7a4 virtio.c:954
+ mov bp, sp ; 89 e5 ; 0xfa7a5
+ push cx ; 51 ; 0xfa7a7
+ push si ; 56 ; 0xfa7a8
+ push di ; 57 ; 0xfa7a9
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xfa7aa
+ mov ch, al ; 88 c5 ; 0xfa7ad
+ mov byte [bp-00ch], dl ; 88 56 f4 ; 0xfa7af
+ mov cl, bl ; 88 d9 ; 0xfa7b2
+ mov si, strict word 0000eh ; be 0e 00 ; 0xfa7b4 virtio.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfa7b7
+ mov es, ax ; 8e c0 ; 0xfa7ba
+ mov dx, word [es:si] ; 26 8b 14 ; 0xfa7bc
+ mov si, strict word 0005eh ; be 5e 00 ; 0xfa7bf virtio.c:964
+ call 09c68h ; e8 a3 f4 ; 0xfa7c2 virtio.c:967
+ test ax, ax ; 85 c0 ; 0xfa7c5 virtio.c:968
+ je near 0aae2h ; 0f 84 17 03 ; 0xfa7c7
+ mov es, dx ; 8e c2 ; 0xfa7cb virtio.c:971
+ mov word [es:si+002a6h], ax ; 26 89 84 a6 02 ; 0xfa7cd
+ xor di, di ; 31 ff ; 0xfa7d2 virtio.c:978
+ mov es, ax ; 8e c0 ; 0xfa7d4
+ xor si, si ; 31 f6 ; 0xfa7d6
+ mov word [bp-012h], ax ; 89 46 ee ; 0xfa7d8
+ mov byte [es:di+000b2h], ch ; 26 88 ad b2 00 ; 0xfa7db virtio.c:979
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa7e0 virtio.c:980
+ mov byte [es:di+000b3h], al ; 26 88 85 b3 00 ; 0xfa7e3
+ test cl, cl ; 84 c9 ; 0xfa7e8 virtio.c:987
+ je near 0a8f2h ; 0f 84 04 01 ; 0xfa7ea
+ movzx bx, cl ; 0f b6 d9 ; 0xfa7ee virtio.c:989
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xfa7f1
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xfa7f5
+ movzx di, ch ; 0f b6 fd ; 0xfa7f8
+ mov dx, ax ; 89 c2 ; 0xfa7fb
+ mov ax, di ; 89 f8 ; 0xfa7fd
+ call 0b057h ; e8 55 08 ; 0xfa7ff
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfa802
+ mov al, cl ; 88 c8 ; 0xfa805 virtio.c:990
+ add AL, strict byte 002h ; 04 02 ; 0xfa807
+ movzx bx, al ; 0f b6 d8 ; 0xfa809
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa80c
+ mov ax, di ; 89 f8 ; 0xfa80f
+ call 0b057h ; e8 43 08 ; 0xfa811
+ cmp byte [bp-018h], 009h ; 80 7e e8 09 ; 0xfa814 virtio.c:994
+ jne near 0a8dch ; 0f 85 c0 00 ; 0xfa818
+ cmp AL, strict byte 010h ; 3c 10 ; 0xfa81c
+ jc near 0a8dch ; 0f 82 ba 00 ; 0xfa81e
+ mov al, cl ; 88 c8 ; 0xfa822 virtio.c:998
+ add AL, strict byte 003h ; 04 03 ; 0xfa824
+ movzx bx, al ; 0f b6 d8 ; 0xfa826
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa829
+ mov ax, di ; 89 f8 ; 0xfa82c
+ call 0b057h ; e8 26 08 ; 0xfa82e
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xfa831
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfa834 virtio.c:1001
+ je near 0a8d4h ; 0f 84 9a 00 ; 0xfa836
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa83a
+ jc near 0a8dch ; 0f 82 9c 00 ; 0xfa83c
+ cmp AL, strict byte 004h ; 3c 04 ; 0xfa840
+ jnbe near 0a8dch ; 0f 87 96 00 ; 0xfa842
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xfa846 virtio.c:1008
+ dec ax ; 48 ; 0xfa84a
+ imul ax, ax, strict byte 0000ch ; 6b c0 0c ; 0xfa84b
+ lea di, [si+07ch] ; 8d 7c 7c ; 0xfa84e
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa851
+ mov word [bp-016h], dx ; 89 56 ea ; 0xfa854
+ add di, ax ; 01 c7 ; 0xfa857
+ mov al, cl ; 88 c8 ; 0xfa859 virtio.c:1010
+ add AL, strict byte 004h ; 04 04 ; 0xfa85b
+ movzx bx, al ; 0f b6 d8 ; 0xfa85d
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xfa860
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xfa864
+ movzx ax, ch ; 0f b6 c5 ; 0xfa867
+ mov word [bp-014h], ax ; 89 46 ec ; 0xfa86a
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa86d
+ call 0b057h ; e8 e4 07 ; 0xfa870
+ mov es, [bp-016h] ; 8e 46 ea ; 0xfa873
+ mov byte [es:di], al ; 26 88 05 ; 0xfa876
+ mov al, cl ; 88 c8 ; 0xfa879 virtio.c:1011
+ add AL, strict byte 008h ; 04 08 ; 0xfa87b
+ movzx bx, al ; 0f b6 d8 ; 0xfa87d
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa880
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xfa883
+ call 0b09dh ; e8 14 08 ; 0xfa886
+ mov es, [bp-016h] ; 8e 46 ea ; 0xfa889
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfa88c
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfa890
+ mov al, cl ; 88 c8 ; 0xfa894 virtio.c:1012
+ add AL, strict byte 00ch ; 04 0c ; 0xfa896
+ movzx bx, al ; 0f b6 d8 ; 0xfa898
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa89b
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xfa89e
+ call 0b09dh ; e8 f9 07 ; 0xfa8a1
+ mov es, [bp-016h] ; 8e 46 ea ; 0xfa8a4
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xfa8a7
+ mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xfa8ab
+ cmp byte [bp-008h], 002h ; 80 7e f8 02 ; 0xfa8af virtio.c:1013
+ jne short 0a8dch ; 75 27 ; 0xfa8b3
+ mov al, cl ; 88 c8 ; 0xfa8b5 virtio.c:1015
+ add AL, strict byte 010h ; 04 10 ; 0xfa8b7
+ movzx bx, al ; 0f b6 d8 ; 0xfa8b9
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa8bc
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xfa8bf
+ call 0b09dh ; e8 d8 07 ; 0xfa8c2
+ mov es, [bp-012h] ; 8e 46 ee ; 0xfa8c5
+ mov word [es:si+000aeh], ax ; 26 89 84 ae 00 ; 0xfa8c8
+ mov word [es:si+000b0h], dx ; 26 89 94 b0 00 ; 0xfa8cd
+ jmp short 0a8dch ; eb 08 ; 0xfa8d2 virtio.c:1018
+ mov es, [bp-012h] ; 8e 46 ee ; 0xfa8d4 virtio.c:1021
+ mov byte [es:si+000ach], cl ; 26 88 8c ac 00 ; 0xfa8d7
+ mov al, cl ; 88 c8 ; 0xfa8dc virtio.c:1030
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa8de
+ movzx bx, al ; 0f b6 d8 ; 0xfa8e0
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xfa8e3
+ movzx ax, ch ; 0f b6 c5 ; 0xfa8e7
+ call 0b057h ; e8 6a 07 ; 0xfa8ea
+ mov cl, al ; 88 c1 ; 0xfa8ed
+ jmp near 0a7e8h ; e9 f6 fe ; 0xfa8ef virtio.c:1031
+ xor ch, ch ; 30 ed ; 0xfa8f2 virtio.c:1035
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa8f4
+ mov ax, si ; 89 f0 ; 0xfa8f7
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa8f9
+ call 09acch ; e8 cd f1 ; 0xfa8fc
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa8ff virtio.c:1038
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa902
+ mov ax, si ; 89 f0 ; 0xfa905
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa907
+ call 09acch ; e8 bf f1 ; 0xfa90a
+ mov byte [bp-00ah], 003h ; c6 46 f6 03 ; 0xfa90d virtio.c:1040
+ mov cx, strict word 00003h ; b9 03 00 ; 0xfa911 virtio.c:1041
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa914
+ mov ax, si ; 89 f0 ; 0xfa917
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa919
+ call 09acch ; e8 ad f1 ; 0xfa91c
+ xor bx, bx ; 31 db ; 0xfa91f virtio.c:1050
+ mov ax, si ; 89 f0 ; 0xfa921
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa923
+ call 09b98h ; e8 6f f2 ; 0xfa926
+ test dx, dx ; 85 d2 ; 0xfa929
+ jne short 0a932h ; 75 05 ; 0xfa92b
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xfa92d
+ jc short 0a96eh ; 72 3c ; 0xfa930
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa932
+ mov ax, si ; 89 f0 ; 0xfa935
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa937
+ call 09b98h ; e8 5b f2 ; 0xfa93a
+ test dx, dx ; 85 d2 ; 0xfa93d
+ jne short 0a946h ; 75 05 ; 0xfa93f
+ cmp ax, strict word 00010h ; 3d 10 00 ; 0xfa941
+ jc short 0a96eh ; 72 28 ; 0xfa944
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa946
+ mov ax, si ; 89 f0 ; 0xfa949
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa94b
+ call 09b98h ; e8 47 f2 ; 0xfa94e
+ test dx, dx ; 85 d2 ; 0xfa951
+ jne short 0a95ah ; 75 05 ; 0xfa953
+ cmp ax, strict word 00020h ; 3d 20 00 ; 0xfa955
+ jc short 0a96eh ; 72 14 ; 0xfa958
+ mov bx, strict word 00008h ; bb 08 00 ; 0xfa95a
+ mov ax, si ; 89 f0 ; 0xfa95d
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa95f
+ call 09b98h ; e8 33 f2 ; 0xfa962
+ test dx, dx ; 85 d2 ; 0xfa965
+ jne short 0a973h ; 75 0a ; 0xfa967
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xfa969
+ jnc short 0a973h ; 73 05 ; 0xfa96c
+ xor ax, ax ; 31 c0 ; 0xfa96e virtio.c:1056
+ jmp near 0aae2h ; e9 6f 01 ; 0xfa970
+ push dword 000000001h ; 66 6a 01 ; 0xfa973 virtio.c:1059
+ mov bx, strict word 0000ch ; bb 0c 00 ; 0xfa976
+ mov ax, si ; 89 f0 ; 0xfa979
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa97b
+ call 09b61h ; e8 e0 f1 ; 0xfa97e
+ or byte [bp-00ah], 008h ; 80 4e f6 08 ; 0xfa981 virtio.c:1062
+ movzx cx, byte [bp-00ah] ; 0f b6 4e f6 ; 0xfa985 virtio.c:1063
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa989
+ mov ax, si ; 89 f0 ; 0xfa98c
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa98e
+ call 09acch ; e8 38 f1 ; 0xfa991
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa994 virtio.c:1066
+ mov ax, si ; 89 f0 ; 0xfa997
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa999
+ call 09a9bh ; e8 fc f0 ; 0xfa99c
+ test AL, strict byte 008h ; a8 08 ; 0xfa99f
+ je short 0a96eh ; 74 cb ; 0xfa9a1
+ xor cx, cx ; 31 c9 ; 0xfa9a3 virtio.c:1073
+ mov bx, strict word 00016h ; bb 16 00 ; 0xfa9a5
+ mov ax, si ; 89 f0 ; 0xfa9a8
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa9aa
+ call 09b30h ; e8 80 f1 ; 0xfa9ad
+ xor cx, cx ; 31 c9 ; 0xfa9b0 virtio.c:1074
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa9b2
+ mov ax, si ; 89 f0 ; 0xfa9b5
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa9b7
+ call 09b30h ; e8 73 f1 ; 0xfa9ba
+ xor cx, cx ; 31 c9 ; 0xfa9bd virtio.c:1075
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xfa9bf
+ mov ax, si ; 89 f0 ; 0xfa9c2
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa9c4
+ call 09b30h ; e8 66 f1 ; 0xfa9c7
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa9ca virtio.c:1077
+ mov bx, strict word 00016h ; bb 16 00 ; 0xfa9cd
+ mov ax, si ; 89 f0 ; 0xfa9d0
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa9d2
+ call 09b30h ; e8 58 f1 ; 0xfa9d5
+ xor cx, cx ; 31 c9 ; 0xfa9d8 virtio.c:1078
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa9da
+ mov ax, si ; 89 f0 ; 0xfa9dd
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa9df
+ call 09b30h ; e8 4b f1 ; 0xfa9e2
+ xor cx, cx ; 31 c9 ; 0xfa9e5 virtio.c:1079
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xfa9e7
+ mov ax, si ; 89 f0 ; 0xfa9ea
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa9ec
+ call 09b30h ; e8 3e f1 ; 0xfa9ef
+ mov cx, strict word 00002h ; b9 02 00 ; 0xfa9f2 virtio.c:1082
+ mov bx, strict word 00016h ; bb 16 00 ; 0xfa9f5
+ mov ax, si ; 89 f0 ; 0xfa9f8
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfa9fa
+ call 09b30h ; e8 30 f1 ; 0xfa9fd
+ mov cx, strict word 00003h ; b9 03 00 ; 0xfaa00 virtio.c:1083
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfaa03
+ mov ax, si ; 89 f0 ; 0xfaa06
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa08
+ call 09b30h ; e8 22 f1 ; 0xfaa0b
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfaa0e virtio.c:1084
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xfaa11
+ mov ax, si ; 89 f0 ; 0xfaa14
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa16
+ call 09b30h ; e8 14 f1 ; 0xfaa19
+ mov ax, si ; 89 f0 ; 0xfaa1c virtio.c:1087
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa1e
+ call 09ca2h ; e8 7e f2 ; 0xfaa21
+ push dx ; 52 ; 0xfaa24
+ push ax ; 50 ; 0xfaa25
+ mov bx, strict word 00020h ; bb 20 00 ; 0xfaa26
+ mov ax, si ; 89 f0 ; 0xfaa29
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa2b
+ call 09b61h ; e8 30 f1 ; 0xfaa2e
+ push dword 000000000h ; 66 6a 00 ; 0xfaa31 virtio.c:1088
+ mov bx, strict word 00024h ; bb 24 00 ; 0xfaa34
+ mov ax, si ; 89 f0 ; 0xfaa37
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa39
+ call 09b61h ; e8 22 f1 ; 0xfaa3c
+ lea ax, [si+050h] ; 8d 44 50 ; 0xfaa3f virtio.c:1090
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa42
+ call 09ca2h ; e8 5a f2 ; 0xfaa45
+ push dx ; 52 ; 0xfaa48
+ push ax ; 50 ; 0xfaa49
+ mov bx, strict word 00028h ; bb 28 00 ; 0xfaa4a
+ mov ax, si ; 89 f0 ; 0xfaa4d
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa4f
+ call 09b61h ; e8 0c f1 ; 0xfaa52
+ push dword 000000000h ; 66 6a 00 ; 0xfaa55 virtio.c:1091
+ mov bx, strict word 0002ch ; bb 2c 00 ; 0xfaa58
+ mov ax, si ; 89 f0 ; 0xfaa5b
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa5d
+ call 09b61h ; e8 fe f0 ; 0xfaa60
+ lea ax, [si+05ch] ; 8d 44 5c ; 0xfaa63 virtio.c:1093
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa66
+ call 09ca2h ; e8 36 f2 ; 0xfaa69
+ push dx ; 52 ; 0xfaa6c
+ push ax ; 50 ; 0xfaa6d
+ mov bx, strict word 00030h ; bb 30 00 ; 0xfaa6e
+ mov ax, si ; 89 f0 ; 0xfaa71
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa73
+ call 09b61h ; e8 e8 f0 ; 0xfaa76
+ push dword 000000000h ; 66 6a 00 ; 0xfaa79 virtio.c:1094
+ mov bx, strict word 00034h ; bb 34 00 ; 0xfaa7c
+ mov ax, si ; 89 f0 ; 0xfaa7f
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa81
+ call 09b61h ; e8 da f0 ; 0xfaa84
+ push dword 000000010h ; 66 6a 10 ; 0xfaa87 virtio.c:1096
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfaa8a
+ mov ax, si ; 89 f0 ; 0xfaa8d
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa8f
+ call 09bc9h ; e8 34 f1 ; 0xfaa92
+ push dword 000000020h ; 66 6a 20 ; 0xfaa95 virtio.c:1097
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfaa98
+ mov ax, si ; 89 f0 ; 0xfaa9b
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaa9d
+ call 09bc9h ; e8 26 f1 ; 0xfaaa0
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfaaa3 virtio.c:1100
+ mov ax, si ; 89 f0 ; 0xfaaa6
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaaa8
+ call 09affh ; e8 51 f0 ; 0xfaaab
+ mov es, [bp-012h] ; 8e 46 ee ; 0xfaaae
+ mov bx, word [es:si+000aeh] ; 26 8b 9c ae 00 ; 0xfaab1
+ mov cx, word [es:si+000b0h] ; 26 8b 8c b0 00 ; 0xfaab6
+ xor dx, dx ; 31 d2 ; 0xfaabb
+ call 0b210h ; e8 50 07 ; 0xfaabd
+ mov word [es:si+078h], ax ; 26 89 44 78 ; 0xfaac0
+ mov word [es:si+07ah], dx ; 26 89 54 7a ; 0xfaac4
+ or byte [bp-00ah], 004h ; 80 4e f6 04 ; 0xfaac8 virtio.c:1103
+ movzx cx, byte [bp-00ah] ; 0f b6 4e f6 ; 0xfaacc virtio.c:1104
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfaad0
+ mov ax, si ; 89 f0 ; 0xfaad3
+ mov dx, es ; 8c c2 ; 0xfaad5
+ call 09acch ; e8 f2 ef ; 0xfaad7
+ mov ax, si ; 89 f0 ; 0xfaada virtio.c:1106
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xfaadc
+ call 0a321h ; e8 3f f8 ; 0xfaadf
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfaae2 virtio.c:1107
+ pop di ; 5f ; 0xfaae5
+ pop si ; 5e ; 0xfaae6
+ pop cx ; 59 ; 0xfaae7
+ pop bp ; 5d ; 0xfaae8
+ retn ; c3 ; 0xfaae9
+ ; disGetNextSymbol 0xfaaea LB 0x862 -> off=0x0 cb=00000000000000d7 uValue=00000000000f94ea 'virtio_scsi_init'
+virtio_scsi_init: ; 0xfaaea LB 0xd7
+ push bp ; 55 ; 0xfaaea virtio.c:1112
+ mov bp, sp ; 89 e5 ; 0xfaaeb
+ push si ; 56 ; 0xfaaed
+ push di ; 57 ; 0xfaaee
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xfaaef
+ mov dx, 01048h ; ba 48 10 ; 0xfaaf2 virtio.c:1116
+ mov ax, 01af4h ; b8 f4 1a ; 0xfaaf5
+ call 0b032h ; e8 37 05 ; 0xfaaf8
+ mov dx, ax ; 89 c2 ; 0xfaafb
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfaafd virtio.c:1117
+ je near 0abbah ; 0f 84 b6 00 ; 0xfab00
+ mov byte [bp-006h], 0ffh ; c6 46 fa ff ; 0xfab04 virtio.c:1121
+ xor al, al ; 30 c0 ; 0xfab08 virtio.c:1122
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xfab0a
+ shr ax, 008h ; c1 e8 08 ; 0xfab0d virtio.c:1124
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xfab10
+ mov byte [bp-00ch], dl ; 88 56 f4 ; 0xfab13 virtio.c:1125
+ xor dh, dh ; 30 f6 ; 0xfab16 virtio.c:1130
+ xor ah, ah ; 30 e4 ; 0xfab18
+ mov bx, strict word 00034h ; bb 34 00 ; 0xfab1a
+ call 0b057h ; e8 37 05 ; 0xfab1d
+ mov ch, al ; 88 c5 ; 0xfab20
+ test ch, ch ; 84 ed ; 0xfab22 virtio.c:1132
+ je short 0ab8eh ; 74 68 ; 0xfab24
+ movzx bx, ch ; 0f b6 dd ; 0xfab26 virtio.c:1134
+ movzx di, byte [bp-00ch] ; 0f b6 7e f4 ; 0xfab29
+ movzx si, byte [bp-008h] ; 0f b6 76 f8 ; 0xfab2d
+ mov dx, di ; 89 fa ; 0xfab31
+ mov ax, si ; 89 f0 ; 0xfab33
+ call 0b057h ; e8 1f 05 ; 0xfab35
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xfab38
+ mov al, ch ; 88 e8 ; 0xfab3b virtio.c:1135
+ add AL, strict byte 002h ; 04 02 ; 0xfab3d
+ movzx bx, al ; 0f b6 d8 ; 0xfab3f
+ mov dx, di ; 89 fa ; 0xfab42
+ mov ax, si ; 89 f0 ; 0xfab44
+ call 0b057h ; e8 0e 05 ; 0xfab46
+ cmp byte [bp-00eh], 009h ; 80 7e f2 09 ; 0xfab49 virtio.c:1139
+ jne short 0ab7dh ; 75 2e ; 0xfab4d
+ cmp AL, strict byte 010h ; 3c 10 ; 0xfab4f
+ jc short 0ab7dh ; 72 2a ; 0xfab51
+ mov al, ch ; 88 e8 ; 0xfab53 virtio.c:1143
+ add AL, strict byte 003h ; 04 03 ; 0xfab55
+ movzx bx, al ; 0f b6 d8 ; 0xfab57
+ mov dx, di ; 89 fa ; 0xfab5a
+ mov ax, si ; 89 f0 ; 0xfab5c
+ call 0b057h ; e8 f6 04 ; 0xfab5e
+ cmp byte [bp-006h], 0ffh ; 80 7e fa ff ; 0xfab61 virtio.c:1145
+ jne short 0ab6ah ; 75 03 ; 0xfab65
+ mov byte [bp-006h], ch ; 88 6e fa ; 0xfab67 virtio.c:1146
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfab6a virtio.c:1149
+ jc short 0ab7dh ; 72 0f ; 0xfab6c
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfab6e
+ jnbe short 0ab7dh ; 77 0b ; 0xfab70
+ mov cl, al ; 88 c1 ; 0xfab72 virtio.c:1156
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xfab74
+ mov AL, strict byte 001h ; b0 01 ; 0xfab76
+ sal al, CL ; d2 e0 ; 0xfab78
+ or byte [bp-00ah], al ; 08 46 f6 ; 0xfab7a
+ mov al, ch ; 88 e8 ; 0xfab7d virtio.c:1163
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfab7f
+ movzx bx, al ; 0f b6 d8 ; 0xfab81
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xfab84
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xfab88
+ jmp short 0ab1dh ; eb 8f ; 0xfab8c virtio.c:1164
+ cmp byte [bp-006h], 0ffh ; 80 7e fa ff ; 0xfab8e virtio.c:1167
+ je short 0abbah ; 74 26 ; 0xfab92
+ cmp byte [bp-00ah], 01fh ; 80 7e f6 1f ; 0xfab94
+ jne short 0abbah ; 75 20 ; 0xfab98
+ movzx di, byte [bp-00ch] ; 0f b6 7e f4 ; 0xfab9a virtio.c:1175
+ movzx si, byte [bp-008h] ; 0f b6 76 f8 ; 0xfab9e
+ mov cx, strict word 00007h ; b9 07 00 ; 0xfaba2
+ mov bx, strict word 00004h ; bb 04 00 ; 0xfaba5
+ mov dx, di ; 89 fa ; 0xfaba8
+ mov ax, si ; 89 f0 ; 0xfabaa
+ call 0b0c4h ; e8 15 05 ; 0xfabac
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xfabaf virtio.c:1177
+ mov dx, di ; 89 fa ; 0xfabb3
+ mov ax, si ; 89 f0 ; 0xfabb5
+ call 0a7a4h ; e8 ea fb ; 0xfabb7
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfabba virtio.c:1184
+ pop di ; 5f ; 0xfabbd
+ pop si ; 5e ; 0xfabbe
+ pop bp ; 5d ; 0xfabbf
+ retn ; c3 ; 0xfabc0
+ ; disGetNextSymbol 0xfabc1 LB 0x78b -> off=0x0 cb=000000000000001b uValue=00000000000f95c1 'apm_out_str'
+apm_out_str: ; 0xfabc1 LB 0x1b
+ push bp ; 55 ; 0xfabc1 apm.c:146
+ mov bp, sp ; 89 e5 ; 0xfabc2
+ push bx ; 53 ; 0xfabc4
+ mov bx, ax ; 89 c3 ; 0xfabc5
+ cmp byte [bx], 000h ; 80 3f 00 ; 0xfabc7 apm.c:148
+ je short 0abd6h ; 74 0a ; 0xfabca
+ mov al, byte [bx] ; 8a 07 ; 0xfabcc apm.c:149
+ out DX, AL ; ee ; 0xfabce
+ inc bx ; 43 ; 0xfabcf
+ mov al, byte [bx] ; 8a 07 ; 0xfabd0
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfabd2
+ jne short 0abceh ; 75 f8 ; 0xfabd4
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfabd6 apm.c:150
+ pop bx ; 5b ; 0xfabd9
+ pop bp ; 5d ; 0xfabda
+ retn ; c3 ; 0xfabdb
+ ; disGetNextSymbol 0xfabdc LB 0x770 -> off=0x1e cb=00000000000000f5 uValue=00000000000f95fa 'apm_function'
+ db 01dh, 0ach, 0e9h, 0ach, 02fh, 0ach, 04ah, 0ach, 0e9h, 0ach, 075h, 0ach, 0e9h, 0ach, 07ah, 0ach
+ db 0beh, 0ach, 0beh, 0ach, 0beh, 0ach, 0b9h, 0ach, 0beh, 0ach, 0beh, 0ach, 0b2h, 0ach
+apm_function: ; 0xfabfa LB 0xf5
+ push bp ; 55 ; 0xfabfa apm.c:152
+ mov bp, sp ; 89 e5 ; 0xfabfb
+ push si ; 56 ; 0xfabfd
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xfabfe apm.c:156
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xfac02 apm.c:157
+ xor ah, ah ; 30 e4 ; 0xfac05
+ cmp ax, strict word 0000eh ; 3d 0e 00 ; 0xfac07
+ jnbe near 0acbeh ; 0f 87 b0 00 ; 0xfac0a
+ mov bx, ax ; 89 c3 ; 0xfac0e
+ add bx, ax ; 01 c3 ; 0xfac10
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xfac12
+ or dl, 001h ; 80 ca 01 ; 0xfac15
+ jmp word [cs:bx-05424h] ; 2e ff a7 dc ab ; 0xfac18
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfac1d apm.c:159
+ mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xfac22 apm.c:160
+ mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xfac27 apm.c:161
+ jmp near 0ace9h ; e9 ba 00 ; 0xfac2c apm.c:162
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfac2f apm.c:172
+ mov word [bp+00ch], 0b33bh ; c7 46 0c 3b b3 ; 0xfac34 apm.c:173
+ mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xfac39 apm.c:174
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfac3e apm.c:175
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfac41
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfac44 apm.c:176
+ jmp near 0ace9h ; e9 9f 00 ; 0xfac47 apm.c:177
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfac4a apm.c:183
+ mov word [bp+00ch], 0da40h ; c7 46 0c 40 da ; 0xfac4f apm.c:184
+ mov ax, 0f000h ; b8 00 f0 ; 0xfac54 apm.c:185
+ mov word [bp+010h], ax ; 89 46 10 ; 0xfac57
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xfac5a apm.c:186
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfac5d apm.c:187
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfac60
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfac63 apm.c:188
+ xor bx, bx ; 31 db ; 0xfac66 apm.c:189
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfac68
+ mov si, ax ; 89 c6 ; 0xfac6c apm.c:190
+ sal esi, 010h ; 66 c1 e6 10 ; 0xfac6e
+ jmp near 0ace9h ; e9 74 00 ; 0xfac72 apm.c:191
+ sti ; fb ; 0xfac75 apm.c:194
+ hlt ; f4 ; 0xfac76 apm.c:195
+ jmp near 0ace9h ; e9 6f 00 ; 0xfac77 apm.c:196
+ cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xfac7a apm.c:200
+ je short 0ac9fh ; 74 1f ; 0xfac7e
+ cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xfac80
+ je short 0ac97h ; 74 11 ; 0xfac84
+ cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xfac86
+ jne short 0aca7h ; 75 1b ; 0xfac8a
+ mov dx, 0040fh ; ba 0f 04 ; 0xfac8c apm.c:202
+ mov ax, 00e94h ; b8 94 0e ; 0xfac8f
+ call 0abc1h ; e8 2c ff ; 0xfac92
+ jmp short 0ace9h ; eb 52 ; 0xfac95 apm.c:203
+ mov dx, 0040fh ; ba 0f 04 ; 0xfac97 apm.c:205
+ mov ax, 00e9ch ; b8 9c 0e ; 0xfac9a
+ jmp short 0ac92h ; eb f3 ; 0xfac9d
+ mov dx, 0040fh ; ba 0f 04 ; 0xfac9f apm.c:208
+ mov ax, 00ea4h ; b8 a4 0e ; 0xfaca2
+ jmp short 0ac92h ; eb eb ; 0xfaca5
+ or ah, 00ah ; 80 cc 0a ; 0xfaca7 apm.c:211
+ mov word [bp+012h], ax ; 89 46 12 ; 0xfacaa
+ mov word [bp+018h], dx ; 89 56 18 ; 0xfacad apm.c:212
+ jmp short 0ace9h ; eb 37 ; 0xfacb0 apm.c:214
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfacb2 apm.c:216
+ jmp short 0ace9h ; eb 30 ; 0xfacb7 apm.c:217
+ or ah, 080h ; 80 cc 80 ; 0xfacb9 apm.c:224
+ jmp short 0acaah ; eb ec ; 0xfacbc
+ mov bx, 00f24h ; bb 24 0f ; 0xfacbe apm.c:228
+ mov cx, ds ; 8c d9 ; 0xfacc1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfacc3
+ call 019e2h ; e8 19 6d ; 0xfacc6
+ push word [bp+00ch] ; ff 76 0c ; 0xfacc9
+ push word [bp+012h] ; ff 76 12 ; 0xfaccc
+ push 00eadh ; 68 ad 0e ; 0xfaccf
+ push strict byte 00004h ; 6a 04 ; 0xfacd2
+ call 01a23h ; e8 4c 6d ; 0xfacd4
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfacd7
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xfacda apm.c:229
+ xor ah, ah ; 30 e4 ; 0xfacdd
+ or ah, 00ch ; 80 cc 0c ; 0xfacdf
+ mov word [bp+012h], ax ; 89 46 12 ; 0xface2
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xface5 apm.c:230
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xface9 apm.c:232
+ pop si ; 5e ; 0xfacec
+ pop bp ; 5d ; 0xfaced
+ retn ; c3 ; 0xfacee
+ ; disGetNextSymbol 0xfacef LB 0x65d -> off=0x0 cb=0000000000000024 uValue=00000000000f96ef 'pci16_select_reg'
+pci16_select_reg: ; 0xfacef LB 0x24
+ push bp ; 55 ; 0xfacef pcibios.c:188
+ mov bp, sp ; 89 e5 ; 0xfacf0
+ push bx ; 53 ; 0xfacf2
+ and dl, 0fch ; 80 e2 fc ; 0xfacf3 pcibios.c:190
+ mov bx, dx ; 89 d3 ; 0xfacf6
+ mov dx, 00cf8h ; ba f8 0c ; 0xfacf8
+ movzx eax, ax ; 66 0f b7 c0 ; 0xfacfb
+ sal eax, 008h ; 66 c1 e0 08 ; 0xfacff
+ or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xfad03
+ db 08ah, 0c3h
+ ; mov al, bl ; 8a c3 ; 0xfad09
+ out DX, eax ; 66 ef ; 0xfad0b
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfad0d pcibios.c:191
+ pop bx ; 5b ; 0xfad10
+ pop bp ; 5d ; 0xfad11
+ retn ; c3 ; 0xfad12
+ ; disGetNextSymbol 0xfad13 LB 0x639 -> off=0x0 cb=00000000000000f3 uValue=00000000000f9713 'pci16_find_device'
+pci16_find_device: ; 0xfad13 LB 0xf3
+ push bp ; 55 ; 0xfad13 pcibios.c:223
+ mov bp, sp ; 89 e5 ; 0xfad14
+ push si ; 56 ; 0xfad16
+ push di ; 57 ; 0xfad17
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xfad18
+ push ax ; 50 ; 0xfad1b
+ push dx ; 52 ; 0xfad1c
+ mov si, bx ; 89 de ; 0xfad1d
+ mov di, cx ; 89 cf ; 0xfad1f
+ test cx, cx ; 85 c9 ; 0xfad21 pcibios.c:233
+ xor bx, bx ; 31 db ; 0xfad23 pcibios.c:240
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xfad25 pcibios.c:241
+ test bl, 007h ; f6 c3 07 ; 0xfad29 pcibios.c:251
+ jne short 0ad5bh ; 75 2d ; 0xfad2c
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xfad2e pcibios.c:252
+ mov ax, bx ; 89 d8 ; 0xfad31
+ call 0acefh ; e8 b9 ff ; 0xfad33
+ mov dx, 00cfeh ; ba fe 0c ; 0xfad36 pcibios.c:253
+ in AL, DX ; ec ; 0xfad39
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfad3a
+ mov byte [bp-006h], al ; 88 46 fa ; 0xfad3c
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfad3f pcibios.c:254
+ jne short 0ad49h ; 75 06 ; 0xfad41
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfad43 pcibios.c:255
+ jmp near 0ade2h ; e9 99 00 ; 0xfad46 pcibios.c:256
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xfad49 pcibios.c:258
+ je short 0ad56h ; 74 07 ; 0xfad4d
+ mov word [bp-00ch], strict word 00001h ; c7 46 f4 01 00 ; 0xfad4f pcibios.c:259
+ jmp short 0ad5bh ; eb 05 ; 0xfad54 pcibios.c:260
+ mov word [bp-00ch], strict word 00008h ; c7 46 f4 08 00 ; 0xfad56 pcibios.c:261
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfad5b pcibios.c:272
+ and AL, strict byte 007h ; 24 07 ; 0xfad5e
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfad60
+ jne short 0ad83h ; 75 1f ; 0xfad62
+ mov ax, bx ; 89 d8 ; 0xfad64
+ shr ax, 008h ; c1 e8 08 ; 0xfad66
+ test ax, ax ; 85 c0 ; 0xfad69
+ jne short 0ad83h ; 75 16 ; 0xfad6b
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfad6d pcibios.c:274
+ mov ax, bx ; 89 d8 ; 0xfad70
+ call 0acefh ; e8 7a ff ; 0xfad72
+ mov dx, 00cfeh ; ba fe 0c ; 0xfad75 pcibios.c:275
+ in AL, DX ; ec ; 0xfad78
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfad79
+ cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xfad7b pcibios.c:276
+ jbe short 0ad83h ; 76 03 ; 0xfad7e
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xfad80 pcibios.c:277
+ test di, di ; 85 ff ; 0xfad83 pcibios.c:281
+ je short 0ad8ch ; 74 05 ; 0xfad85
+ mov dx, strict word 00008h ; ba 08 00 ; 0xfad87
+ jmp short 0ad8eh ; eb 02 ; 0xfad8a
+ xor dx, dx ; 31 d2 ; 0xfad8c
+ mov ax, bx ; 89 d8 ; 0xfad8e
+ call 0acefh ; e8 5c ff ; 0xfad90
+ mov dx, 00cfch ; ba fc 0c ; 0xfad93 pcibios.c:282
+ in eax, DX ; 66 ed ; 0xfad96
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfad98
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfad9a
+ xchg dx, ax ; 92 ; 0xfad9e
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfad9f
+ mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xfada2 pcibios.c:283
+ test di, di ; 85 ff ; 0xfada7 pcibios.c:286
+ je short 0adc6h ; 74 1b ; 0xfada9
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xfadab pcibios.c:287
+ je short 0adbah ; 74 09 ; 0xfadaf
+ mov ax, dx ; 89 d0 ; 0xfadb1 pcibios.c:288
+ mov word [bp-00ah], strict word 00000h ; c7 46 f6 00 00 ; 0xfadb3
+ jmp short 0adc6h ; eb 0c ; 0xfadb8 pcibios.c:289
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfadba pcibios.c:290
+ shr dx, 1 ; d1 ea ; 0xfadbd
+ rcr ax, 1 ; d1 d8 ; 0xfadbf
+ loop 0adbdh ; e2 fa ; 0xfadc1
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xfadc3
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfadc6 pcibios.c:297
+ cmp dx, word [bp-012h] ; 3b 56 ee ; 0xfadc9
+ jne short 0add3h ; 75 05 ; 0xfadcc
+ cmp ax, word [bp-010h] ; 3b 46 f0 ; 0xfadce
+ je short 0add9h ; 74 06 ; 0xfadd1
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xfadd3 pcibios.c:298
+ je short 0addfh ; 74 06 ; 0xfadd7
+ dec si ; 4e ; 0xfadd9
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfadda
+ je short 0adf1h ; 74 12 ; 0xfaddd
+ add bx, word [bp-00ch] ; 03 5e f4 ; 0xfaddf pcibios.c:306
+ mov ax, bx ; 89 d8 ; 0xfade2 pcibios.c:307
+ shr ax, 008h ; c1 e8 08 ; 0xfade4
+ movzx dx, byte [bp-008h] ; 0f b6 56 f8 ; 0xfade7
+ cmp ax, dx ; 39 d0 ; 0xfadeb
+ jbe near 0ad29h ; 0f 86 38 ff ; 0xfaded
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfadf1 pcibios.c:309
+ jne short 0adfah ; 75 04 ; 0xfadf4 pcibios.c:313
+ mov ax, bx ; 89 d8 ; 0xfadf6
+ jmp short 0adfdh ; eb 03 ; 0xfadf8
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfadfa
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfadfd pcibios.c:314
+ pop di ; 5f ; 0xfae00
+ pop si ; 5e ; 0xfae01
+ pop bp ; 5d ; 0xfae02
+ retn 00002h ; c2 02 00 ; 0xfae03
+ ; disGetNextSymbol 0xfae06 LB 0x546 -> off=0xc cb=00000000000001db uValue=00000000000f9812 'pci16_function'
+ db 0f8h, 0aeh, 012h, 0afh, 025h, 0afh, 03ah, 0afh, 04dh, 0afh, 060h, 0afh
+pci16_function: ; 0xfae12 LB 0x1db
+ push bp ; 55 ; 0xfae12 pcibios.c:316
+ mov bp, sp ; 89 e5 ; 0xfae13
+ push si ; 56 ; 0xfae15
+ push di ; 57 ; 0xfae16
+ push ax ; 50 ; 0xfae17
+ push ax ; 50 ; 0xfae18
+ and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xfae19 pcibios.c:323
+ and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xfae1e pcibios.c:324
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfae22 pcibios.c:326
+ xor bh, bh ; 30 ff ; 0xfae25
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfae27
+ xor ah, ah ; 30 e4 ; 0xfae2a
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xfae2c
+ jc short 0ae4bh ; 72 1a ; 0xfae2f
+ jbe short 0aea5h ; 76 72 ; 0xfae31
+ cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xfae33
+ je near 0af74h ; 0f 84 3a 01 ; 0xfae36
+ cmp bx, strict byte 00008h ; 83 fb 08 ; 0xfae3a
+ jc near 0afb9h ; 0f 82 78 01 ; 0xfae3d
+ cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xfae41
+ jbe near 0aecch ; 0f 86 84 00 ; 0xfae44
+ jmp near 0afb9h ; e9 6e 01 ; 0xfae48
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xfae4b
+ je short 0ae73h ; 74 23 ; 0xfae4e
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xfae50
+ jne near 0afb9h ; 0f 85 62 01 ; 0xfae53
+ mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xfae57 pcibios.c:328
+ mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xfae5c pcibios.c:329
+ mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xfae61 pcibios.c:331
+ mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xfae66 pcibios.c:332
+ mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xfae6b
+ jmp near 0afe6h ; e9 73 01 ; 0xfae70 pcibios.c:333
+ cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xfae73 pcibios.c:338
+ jne short 0ae7fh ; 75 06 ; 0xfae77
+ or ah, 083h ; 80 cc 83 ; 0xfae79 pcibios.c:339
+ jmp near 0afdfh ; e9 60 01 ; 0xfae7c pcibios.c:340
+ push strict byte 00000h ; 6a 00 ; 0xfae7f pcibios.c:342
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfae81
+ mov dx, word [bp+01ch] ; 8b 56 1c ; 0xfae84
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xfae87
+ xor cx, cx ; 31 c9 ; 0xfae8a
+ call 0ad13h ; e8 84 fe ; 0xfae8c
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfae8f pcibios.c:343
+ jne short 0ae9fh ; 75 0b ; 0xfae92
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfae94 pcibios.c:344
+ xor ah, ah ; 30 e4 ; 0xfae97
+ or ah, 086h ; 80 cc 86 ; 0xfae99
+ jmp near 0afdfh ; e9 40 01 ; 0xfae9c
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfae9f pcibios.c:345
+ jmp near 0afe6h ; e9 41 01 ; 0xfaea2 pcibios.c:350
+ push strict byte 00000h ; 6a 00 ; 0xfaea5 pcibios.c:352
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfaea7
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfaeaa
+ mov dx, word [bp+01eh] ; 8b 56 1e ; 0xfaead
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfaeb0
+ call 0ad13h ; e8 5d fe ; 0xfaeb3
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfaeb6 pcibios.c:353
+ jne short 0aec6h ; 75 0b ; 0xfaeb9
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfaebb pcibios.c:354
+ xor ah, ah ; 30 e4 ; 0xfaebe
+ or ah, 086h ; 80 cc 86 ; 0xfaec0
+ jmp near 0afdfh ; e9 19 01 ; 0xfaec3 pcibios.c:355
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfaec6 pcibios.c:357
+ jmp near 0afe6h ; e9 1a 01 ; 0xfaec9 pcibios.c:359
+ cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xfaecc pcibios.c:366
+ jc short 0aed9h ; 72 06 ; 0xfaed1
+ or ah, 087h ; 80 cc 87 ; 0xfaed3 pcibios.c:367
+ jmp near 0afdfh ; e9 06 01 ; 0xfaed6 pcibios.c:368
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfaed9 pcibios.c:370
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfaedc
+ call 0acefh ; e8 0d fe ; 0xfaedf
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfaee2 pcibios.c:371
+ xor bh, bh ; 30 ff ; 0xfaee5
+ sub bx, strict byte 00008h ; 83 eb 08 ; 0xfaee7
+ cmp bx, strict byte 00005h ; 83 fb 05 ; 0xfaeea
+ jnbe near 0afe6h ; 0f 87 f5 00 ; 0xfaeed
+ add bx, bx ; 01 db ; 0xfaef1
+ jmp word [cs:bx-051fah] ; 2e ff a7 06 ae ; 0xfaef3
+ mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xfaef8 pcibios.c:373
+ xor bl, bl ; 30 db ; 0xfaefb
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfaefd
+ and dx, strict byte 00003h ; 83 e2 03 ; 0xfaf00
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfaf03
+ in AL, DX ; ec ; 0xfaf07
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfaf08
+ or bx, ax ; 09 c3 ; 0xfaf0a
+ mov word [bp+01ch], bx ; 89 5e 1c ; 0xfaf0c
+ jmp near 0afe6h ; e9 d4 00 ; 0xfaf0f pcibios.c:374
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfaf12 pcibios.c:376
+ xor dh, dh ; 30 f6 ; 0xfaf15
+ and dl, 002h ; 80 e2 02 ; 0xfaf17
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfaf1a
+ in ax, DX ; ed ; 0xfaf1e
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfaf1f
+ jmp near 0afe6h ; e9 c1 00 ; 0xfaf22 pcibios.c:377
+ mov dx, 00cfch ; ba fc 0c ; 0xfaf25 pcibios.c:379
+ in eax, DX ; 66 ed ; 0xfaf28
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfaf2a
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfaf2c
+ xchg dx, ax ; 92 ; 0xfaf30
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfaf31
+ mov word [bp+01eh], dx ; 89 56 1e ; 0xfaf34
+ jmp near 0afe6h ; e9 ac 00 ; 0xfaf37 pcibios.c:380
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfaf3a pcibios.c:382
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfaf3d
+ xor dh, dh ; 30 f6 ; 0xfaf40
+ and dl, 003h ; 80 e2 03 ; 0xfaf42
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfaf45
+ out DX, AL ; ee ; 0xfaf49
+ jmp near 0afe6h ; e9 99 00 ; 0xfaf4a pcibios.c:383
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfaf4d pcibios.c:385
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfaf50
+ xor dh, dh ; 30 f6 ; 0xfaf53
+ and dl, 002h ; 80 e2 02 ; 0xfaf55
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfaf58
+ out DX, ax ; ef ; 0xfaf5c
+ jmp near 0afe6h ; e9 86 00 ; 0xfaf5d pcibios.c:386
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfaf60 pcibios.c:388
+ mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xfaf63
+ mov dx, 00cfch ; ba fc 0c ; 0xfaf66
+ xchg cx, ax ; 91 ; 0xfaf69
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfaf6a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfaf6e
+ out DX, eax ; 66 ef ; 0xfaf70
+ jmp short 0afe6h ; eb 72 ; 0xfaf72 pcibios.c:392
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfaf74 pcibios.c:394
+ mov es, [bp+026h] ; 8e 46 26 ; 0xfaf77
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xfaf7a
+ mov [bp-006h], es ; 8c 46 fa ; 0xfaf7d
+ mov cx, word [0f370h] ; 8b 0e 70 f3 ; 0xfaf80 pcibios.c:398
+ cmp cx, word [es:bx] ; 26 3b 0f ; 0xfaf84
+ jbe short 0af9ah ; 76 11 ; 0xfaf87
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfaf89 pcibios.c:399
+ xor ah, ah ; 30 e4 ; 0xfaf8c
+ or ah, 089h ; 80 cc 89 ; 0xfaf8e
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfaf91
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfaf94 pcibios.c:400
+ jmp short 0afaeh ; eb 14 ; 0xfaf98 pcibios.c:401
+ les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xfaf9a pcibios.c:402
+ mov si, 0f190h ; be 90 f1 ; 0xfaf9e
+ mov dx, ds ; 8c da ; 0xfafa1
+ push DS ; 1e ; 0xfafa3
+ mov ds, dx ; 8e da ; 0xfafa4
+ rep movsb ; f3 a4 ; 0xfafa6
+ pop DS ; 1f ; 0xfafa8
+ mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xfafa9 pcibios.c:404
+ mov ax, word [0f370h] ; a1 70 f3 ; 0xfafae pcibios.c:406
+ les bx, [bp-008h] ; c4 5e f8 ; 0xfafb1
+ mov word [es:bx], ax ; 26 89 07 ; 0xfafb4
+ jmp short 0afe6h ; eb 2d ; 0xfafb7 pcibios.c:407
+ mov bx, 00f24h ; bb 24 0f ; 0xfafb9 pcibios.c:409
+ mov cx, ds ; 8c d9 ; 0xfafbc
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfafbe
+ call 019e2h ; e8 1e 6a ; 0xfafc1
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfafc4
+ push ax ; 50 ; 0xfafc7
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfafc8
+ push ax ; 50 ; 0xfafcb
+ push 00ee0h ; 68 e0 0e ; 0xfafcc
+ push strict byte 00004h ; 6a 04 ; 0xfafcf
+ call 01a23h ; e8 4f 6a ; 0xfafd1
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfafd4
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfafd7 pcibios.c:410
+ xor ah, ah ; 30 e4 ; 0xfafda
+ or ah, 081h ; 80 cc 81 ; 0xfafdc
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfafdf
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfafe2 pcibios.c:411
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfafe6 pcibios.c:413
+ pop di ; 5f ; 0xfafe9
+ pop si ; 5e ; 0xfafea
+ pop bp ; 5d ; 0xfafeb
+ retn ; c3 ; 0xfafec
+ ; disGetNextSymbol 0xfafed LB 0x35f -> off=0x0 cb=000000000000002b uValue=00000000000f99ed 'pci_find_classcode'
+pci_find_classcode: ; 0xfafed LB 0x2b
+ push bp ; 55 ; 0xfafed pciutil.c:125
+ mov bp, sp ; 89 e5 ; 0xfafee
+ push bx ; 53 ; 0xfaff0
+ push cx ; 51 ; 0xfaff1
+ push si ; 56 ; 0xfaff2
+ mov cx, dx ; 89 d1 ; 0xfaff3
+ xor si, si ; 31 f6 ; 0xfaff5 pciutil.c:128
+ mov dx, ax ; 89 c2 ; 0xfaff7
+ mov ax, 0b103h ; b8 03 b1 ; 0xfaff9
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xfaffc
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xfb000
+ int 01ah ; cd 1a ; 0xfb002
+ cmp ah, 000h ; 80 fc 00 ; 0xfb004
+ je near 0b00eh ; 0f 84 03 00 ; 0xfb007
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xfb00b
+ mov ax, bx ; 89 d8 ; 0xfb00e
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfb010 pciutil.c:132
+ pop si ; 5e ; 0xfb013
+ pop cx ; 59 ; 0xfb014
+ pop bx ; 5b ; 0xfb015
+ pop bp ; 5d ; 0xfb016
+ retn ; c3 ; 0xfb017
+ ; disGetNextSymbol 0xfb018 LB 0x334 -> off=0x0 cb=000000000000001a uValue=00000000000f9a18 'pci_find_class_noif'
+pci_find_class_noif: ; 0xfb018 LB 0x1a
+ push bp ; 55 ; 0xfb018 pciutil.c:145
+ mov bp, sp ; 89 e5 ; 0xfb019
+ push bx ; 53 ; 0xfb01b
+ push cx ; 51 ; 0xfb01c
+ push dx ; 52 ; 0xfb01d
+ push strict byte 00001h ; 6a 01 ; 0xfb01e pciutil.c:149
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfb020
+ xor bx, bx ; 31 db ; 0xfb023
+ xor dx, dx ; 31 d2 ; 0xfb025
+ call 0ad13h ; e8 e9 fc ; 0xfb027
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfb02a pciutil.c:153
+ pop dx ; 5a ; 0xfb02d
+ pop cx ; 59 ; 0xfb02e
+ pop bx ; 5b ; 0xfb02f
+ pop bp ; 5d ; 0xfb030
+ retn ; c3 ; 0xfb031
+ ; disGetNextSymbol 0xfb032 LB 0x31a -> off=0x0 cb=0000000000000025 uValue=00000000000f9a32 'pci_find_device'
+pci_find_device: ; 0xfb032 LB 0x25
+ push bp ; 55 ; 0xfb032 pciutil.c:166
+ mov bp, sp ; 89 e5 ; 0xfb033
+ push bx ; 53 ; 0xfb035
+ push cx ; 51 ; 0xfb036
+ push si ; 56 ; 0xfb037
+ mov cx, dx ; 89 d1 ; 0xfb038
+ xor si, si ; 31 f6 ; 0xfb03a pciutil.c:168
+ mov dx, ax ; 89 c2 ; 0xfb03c
+ mov ax, 0b102h ; b8 02 b1 ; 0xfb03e
+ int 01ah ; cd 1a ; 0xfb041
+ cmp ah, 000h ; 80 fc 00 ; 0xfb043
+ je near 0b04dh ; 0f 84 03 00 ; 0xfb046
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xfb04a
+ mov ax, bx ; 89 d8 ; 0xfb04d
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfb04f pciutil.c:169
+ pop si ; 5e ; 0xfb052
+ pop cx ; 59 ; 0xfb053
+ pop bx ; 5b ; 0xfb054
+ pop bp ; 5d ; 0xfb055
+ retn ; c3 ; 0xfb056
+ ; disGetNextSymbol 0xfb057 LB 0x2f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f9a57 'pci_read_config_byte'
+pci_read_config_byte: ; 0xfb057 LB 0x24
+ push bp ; 55 ; 0xfb057 pciutil.c:171
+ mov bp, sp ; 89 e5 ; 0xfb058
+ push cx ; 51 ; 0xfb05a
+ push di ; 57 ; 0xfb05b
+ movzx di, bl ; 0f b6 fb ; 0xfb05c pciutil.c:173
+ movzx bx, al ; 0f b6 d8 ; 0xfb05f
+ sal bx, 008h ; c1 e3 08 ; 0xfb062
+ movzx ax, dl ; 0f b6 c2 ; 0xfb065
+ or bx, ax ; 09 c3 ; 0xfb068
+ mov ax, 0b108h ; b8 08 b1 ; 0xfb06a
+ int 01ah ; cd 1a ; 0xfb06d
+ movzx ax, cl ; 0f b6 c1 ; 0xfb06f
+ xor dx, dx ; 31 d2 ; 0xfb072 pciutil.c:174
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfb074
+ pop di ; 5f ; 0xfb077
+ pop cx ; 59 ; 0xfb078
+ pop bp ; 5d ; 0xfb079
+ retn ; c3 ; 0xfb07a
+ ; disGetNextSymbol 0xfb07b LB 0x2d1 -> off=0x0 cb=0000000000000022 uValue=00000000000f9a7b 'pci_read_config_word'
+pci_read_config_word: ; 0xfb07b LB 0x22
+ push bp ; 55 ; 0xfb07b pciutil.c:176
+ mov bp, sp ; 89 e5 ; 0xfb07c
+ push cx ; 51 ; 0xfb07e
+ push di ; 57 ; 0xfb07f
+ movzx di, bl ; 0f b6 fb ; 0xfb080 pciutil.c:178
+ xor ah, ah ; 30 e4 ; 0xfb083
+ sal ax, 008h ; c1 e0 08 ; 0xfb085
+ movzx bx, dl ; 0f b6 da ; 0xfb088
+ or bx, ax ; 09 c3 ; 0xfb08b
+ mov ax, 0b109h ; b8 09 b1 ; 0xfb08d
+ int 01ah ; cd 1a ; 0xfb090
+ mov ax, cx ; 89 c8 ; 0xfb092
+ xor dx, dx ; 31 d2 ; 0xfb094 pciutil.c:179
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfb096
+ pop di ; 5f ; 0xfb099
+ pop cx ; 59 ; 0xfb09a
+ pop bp ; 5d ; 0xfb09b
+ retn ; c3 ; 0xfb09c
+ ; disGetNextSymbol 0xfb09d LB 0x2af -> off=0x0 cb=0000000000000027 uValue=00000000000f9a9d 'pci_read_config_dword'
+pci_read_config_dword: ; 0xfb09d LB 0x27
+ push bp ; 55 ; 0xfb09d pciutil.c:181
+ mov bp, sp ; 89 e5 ; 0xfb09e
+ push cx ; 51 ; 0xfb0a0
+ push di ; 57 ; 0xfb0a1
+ movzx di, bl ; 0f b6 fb ; 0xfb0a2 pciutil.c:184
+ movzx bx, al ; 0f b6 d8 ; 0xfb0a5
+ sal bx, 008h ; c1 e3 08 ; 0xfb0a8
+ movzx ax, dl ; 0f b6 c2 ; 0xfb0ab
+ or bx, ax ; 09 c3 ; 0xfb0ae
+ mov ax, 0b10ah ; b8 0a b1 ; 0xfb0b0
+ int 01ah ; cd 1a ; 0xfb0b3
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfb0b5
+ shr ecx, 010h ; 66 c1 e9 10 ; 0xfb0b7
+ mov dx, cx ; 89 ca ; 0xfb0bb
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfb0bd pciutil.c:189
+ pop di ; 5f ; 0xfb0c0
+ pop cx ; 59 ; 0xfb0c1
+ pop bp ; 5d ; 0xfb0c2
+ retn ; c3 ; 0xfb0c3
+ ; disGetNextSymbol 0xfb0c4 LB 0x288 -> off=0x0 cb=000000000000001c uValue=00000000000f9ac4 'pci_write_config_word'
+pci_write_config_word: ; 0xfb0c4 LB 0x1c
+ push bp ; 55 ; 0xfb0c4 pciutil.c:191
+ mov bp, sp ; 89 e5 ; 0xfb0c5
+ push di ; 57 ; 0xfb0c7
+ movzx di, bl ; 0f b6 fb ; 0xfb0c8 pciutil.c:193
+ xor ah, ah ; 30 e4 ; 0xfb0cb
+ sal ax, 008h ; c1 e0 08 ; 0xfb0cd
+ movzx bx, dl ; 0f b6 da ; 0xfb0d0
+ or bx, ax ; 09 c3 ; 0xfb0d3
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfb0d5
+ int 01ah ; cd 1a ; 0xfb0d8
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfb0da pciutil.c:194
+ pop di ; 5f ; 0xfb0dd
+ pop bp ; 5d ; 0xfb0de
+ retn ; c3 ; 0xfb0df
+ ; disGetNextSymbol 0xfb0e0 LB 0x26c -> off=0x0 cb=000000000000001c uValue=00000000000f9ae0 'pci_write_config_byte'
+pci_write_config_byte: ; 0xfb0e0 LB 0x1c
+ push bp ; 55 ; 0xfb0e0 pciutil.c:196
+ mov bp, sp ; 89 e5 ; 0xfb0e1
+ push di ; 57 ; 0xfb0e3
+ movzx di, bl ; 0f b6 fb ; 0xfb0e4 pciutil.c:198
+ xor ah, ah ; 30 e4 ; 0xfb0e7
+ sal ax, 008h ; c1 e0 08 ; 0xfb0e9
+ movzx bx, dl ; 0f b6 da ; 0xfb0ec
+ or bx, ax ; 09 c3 ; 0xfb0ef
+ mov ax, 0b10bh ; b8 0b b1 ; 0xfb0f1
+ int 01ah ; cd 1a ; 0xfb0f4
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfb0f6 pciutil.c:199
+ pop di ; 5f ; 0xfb0f9
+ pop bp ; 5d ; 0xfb0fa
+ retn ; c3 ; 0xfb0fb
+ ; disGetNextSymbol 0xfb0fc LB 0x250 -> off=0x0 cb=000000000000002f uValue=00000000000f9afc 'pci_write_config_dword'
+pci_write_config_dword: ; 0xfb0fc LB 0x2f
+ push bp ; 55 ; 0xfb0fc pciutil.c:201
+ mov bp, sp ; 89 e5 ; 0xfb0fd
+ push cx ; 51 ; 0xfb0ff
+ push di ; 57 ; 0xfb100
+ movzx di, bl ; 0f b6 fb ; 0xfb101 pciutil.c:204
+ movzx bx, al ; 0f b6 d8 ; 0xfb104
+ mov ax, bx ; 89 d8 ; 0xfb107
+ sal ax, 008h ; c1 e0 08 ; 0xfb109
+ movzx bx, dl ; 0f b6 da ; 0xfb10c
+ or bx, ax ; 09 c3 ; 0xfb10f
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfb111
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xfb114
+ mov ax, 0b10dh ; b8 0d b1 ; 0xfb117
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xfb11a
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xfb11e
+ int 01ah ; cd 1a ; 0xfb120
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfb122 pciutil.c:209
+ pop di ; 5f ; 0xfb125
+ pop cx ; 59 ; 0xfb126
+ pop bp ; 5d ; 0xfb127
+ retn 00004h ; c2 04 00 ; 0xfb128
+ ; disGetNextSymbol 0xfb12b LB 0x221 -> off=0x0 cb=000000000000001d uValue=00000000000f9b2b 'vds_is_present'
+vds_is_present: ; 0xfb12b LB 0x1d
+ push bx ; 53 ; 0xfb12b vds.c:32
+ push bp ; 55 ; 0xfb12c
+ mov bp, sp ; 89 e5 ; 0xfb12d
+ mov bx, strict word 0007bh ; bb 7b 00 ; 0xfb12f vds.c:36
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfb132
+ mov es, ax ; 8e c0 ; 0xfb135
+ test byte [es:bx], 020h ; 26 f6 07 20 ; 0xfb137 vds.c:37
+ je short 0b143h ; 74 06 ; 0xfb13b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfb13d
+ pop bp ; 5d ; 0xfb140
+ pop bx ; 5b ; 0xfb141
+ retn ; c3 ; 0xfb142
+ xor ax, ax ; 31 c0 ; 0xfb143
+ pop bp ; 5d ; 0xfb145 vds.c:38
+ pop bx ; 5b ; 0xfb146
+ retn ; c3 ; 0xfb147
+ ; disGetNextSymbol 0xfb148 LB 0x204 -> off=0x0 cb=000000000000001e uValue=00000000000f9b48 'vds_real_to_lin'
+vds_real_to_lin: ; 0xfb148 LB 0x1e
+ push bx ; 53 ; 0xfb148 vds.c:67
+ push cx ; 51 ; 0xfb149
+ push bp ; 55 ; 0xfb14a
+ mov bp, sp ; 89 e5 ; 0xfb14b
+ mov bx, ax ; 89 c3 ; 0xfb14d
+ mov ax, dx ; 89 d0 ; 0xfb14f
+ xor dx, dx ; 31 d2 ; 0xfb151 vds.c:69
+ mov cx, strict word 00004h ; b9 04 00 ; 0xfb153
+ sal ax, 1 ; d1 e0 ; 0xfb156
+ rcl dx, 1 ; d1 d2 ; 0xfb158
+ loop 0b156h ; e2 fa ; 0xfb15a
+ xor cx, cx ; 31 c9 ; 0xfb15c
+ add ax, bx ; 01 d8 ; 0xfb15e
+ adc dx, cx ; 11 ca ; 0xfb160
+ pop bp ; 5d ; 0xfb162 vds.c:70
+ pop cx ; 59 ; 0xfb163
+ pop bx ; 5b ; 0xfb164
+ retn ; c3 ; 0xfb165
+ ; disGetNextSymbol 0xfb166 LB 0x1e6 -> off=0x0 cb=0000000000000079 uValue=00000000000f9b66 'vds_build_sg_list'
+vds_build_sg_list: ; 0xfb166 LB 0x79
+ push bp ; 55 ; 0xfb166 vds.c:77
+ mov bp, sp ; 89 e5 ; 0xfb167
+ push si ; 56 ; 0xfb169
+ push di ; 57 ; 0xfb16a
+ mov di, ax ; 89 c7 ; 0xfb16b
+ mov si, dx ; 89 d6 ; 0xfb16d
+ mov ax, bx ; 89 d8 ; 0xfb16f
+ mov dx, cx ; 89 ca ; 0xfb171
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfb173 vds.c:82
+ mov es, si ; 8e c6 ; 0xfb176
+ mov word [es:di], bx ; 26 89 1d ; 0xfb178
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xfb17b
+ mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xfb17e
+ call 0b148h ; e8 c3 ff ; 0xfb182 vds.c:83
+ mov es, si ; 8e c6 ; 0xfb185
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfb187
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfb18b
+ mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xfb18f vds.c:84
+ call 0b12bh ; e8 93 ff ; 0xfb195 vds.c:85
+ test ax, ax ; 85 c0 ; 0xfb198
+ je short 0b1afh ; 74 13 ; 0xfb19a
+ mov es, si ; 8e c6 ; 0xfb19c vds.c:87
+ mov ax, 08105h ; b8 05 81 ; 0xfb19e
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfb1a1
+ int 04bh ; cd 4b ; 0xfb1a4
+ jc near 0b1ach ; 0f 82 02 00 ; 0xfb1a6
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfb1aa
+ cbw ; 98 ; 0xfb1ac
+ jmp short 0b1d6h ; eb 27 ; 0xfb1ad vds.c:88
+ mov es, si ; 8e c6 ; 0xfb1af vds.c:90
+ mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xfb1b1
+ mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xfb1b7 vds.c:91
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xfb1bb
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xfb1bf
+ mov word [es:di+012h], ax ; 26 89 45 12 ; 0xfb1c3
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xfb1c7 vds.c:92
+ mov word [es:di+014h], ax ; 26 89 45 14 ; 0xfb1ca
+ mov ax, bx ; 89 d8 ; 0xfb1ce
+ mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xfb1d0
+ xor ax, bx ; 31 d8 ; 0xfb1d4 vds.c:93
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfb1d6 vds.c:96
+ pop di ; 5f ; 0xfb1d9
+ pop si ; 5e ; 0xfb1da
+ pop bp ; 5d ; 0xfb1db
+ retn 00004h ; c2 04 00 ; 0xfb1dc
+ ; disGetNextSymbol 0xfb1df LB 0x16d -> off=0x0 cb=0000000000000030 uValue=00000000000f9bdf 'vds_free_sg_list'
+vds_free_sg_list: ; 0xfb1df LB 0x30
+ push bp ; 55 ; 0xfb1df vds.c:102
+ mov bp, sp ; 89 e5 ; 0xfb1e0
+ push bx ; 53 ; 0xfb1e2
+ push di ; 57 ; 0xfb1e3
+ mov bx, ax ; 89 c3 ; 0xfb1e4
+ call 0b12bh ; e8 42 ff ; 0xfb1e6 vds.c:106
+ test ax, ax ; 85 c0 ; 0xfb1e9
+ je short 0b200h ; 74 13 ; 0xfb1eb
+ mov di, bx ; 89 df ; 0xfb1ed vds.c:108
+ mov es, dx ; 8e c2 ; 0xfb1ef
+ mov ax, 08106h ; b8 06 81 ; 0xfb1f1
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfb1f4
+ int 04bh ; cd 4b ; 0xfb1f7
+ jc near 0b1ffh ; 0f 82 02 00 ; 0xfb1f9
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfb1fd
+ cbw ; 98 ; 0xfb1ff
+ mov es, dx ; 8e c2 ; 0xfb200 vds.c:116
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xfb202
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfb208 vds.c:118
+ pop di ; 5f ; 0xfb20b
+ pop bx ; 5b ; 0xfb20c
+ pop bp ; 5d ; 0xfb20d
+ retn ; c3 ; 0xfb20e
+ ; disGetNextSymbol 0xfb20f LB 0x13d -> off=0x1 cb=0000000000000040 uValue=00000000000f9c10 '__U4M'
+ db 000h
+__U4M: ; 0xfb210 LB 0x40
+ pushfw ; 9c ; 0xfb210 __U4M.asm:37
+ push eax ; 66 50 ; 0xfb211 __U4M.asm:40
+ push edx ; 66 52 ; 0xfb213 __U4M.asm:41
+ push ecx ; 66 51 ; 0xfb215 __U4M.asm:42
+ rol eax, 010h ; 66 c1 c0 10 ; 0xfb217 __U4M.asm:44
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xfb21b __U4M.asm:45
+ ror eax, 010h ; 66 c1 c8 10 ; 0xfb21d __U4M.asm:46
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfb221 __U4M.asm:47
+ shr ecx, 010h ; 66 c1 e9 10 ; 0xfb224 __U4M.asm:49
+ db 08bh, 0cbh
+ ; mov cx, bx ; 8b cb ; 0xfb228 __U4M.asm:50
+ mul ecx ; 66 f7 e1 ; 0xfb22a __U4M.asm:52
+ pop ecx ; 66 59 ; 0xfb22d __U4M.asm:54
+ pop edx ; 66 5a ; 0xfb22f __U4M.asm:56
+ ror eax, 010h ; 66 c1 c8 10 ; 0xfb231 __U4M.asm:57
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfb235 __U4M.asm:58
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfb237 __U4M.asm:59
+ pop ax ; 58 ; 0xfb23a __U4M.asm:60
+ rol eax, 010h ; 66 c1 c0 10 ; 0xfb23b __U4M.asm:61
+ popfw ; 9d ; 0xfb23f __U4M.asm:103
+ retn ; c3 ; 0xfb240 __U4M.asm:104
+ times 0xf db 0
+ ; disGetNextSymbol 0xfb250 LB 0xfc -> off=0x0 cb=0000000000000040 uValue=00000000000f9c50 '__U4D'
+__U4D: ; 0xfb250 LB 0x40
+ pushfw ; 9c ; 0xfb250 __U4D.asm:44
+ push eax ; 66 50 ; 0xfb251 __U4D.asm:47
+ push edx ; 66 52 ; 0xfb253 __U4D.asm:48
+ push ecx ; 66 51 ; 0xfb255 __U4D.asm:49
+ rol eax, 010h ; 66 c1 c0 10 ; 0xfb257 __U4D.asm:51
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xfb25b __U4D.asm:52
+ ror eax, 010h ; 66 c1 c8 10 ; 0xfb25d __U4D.asm:53
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfb261 __U4D.asm:54
+ shr ecx, 010h ; 66 c1 e9 10 ; 0xfb264 __U4D.asm:56
+ db 08bh, 0cbh
+ ; mov cx, bx ; 8b cb ; 0xfb268 __U4D.asm:57
+ div ecx ; 66 f7 f1 ; 0xfb26a __U4D.asm:59
+ db 08bh, 0dah
+ ; mov bx, dx ; 8b da ; 0xfb26d __U4D.asm:61
+ pop ecx ; 66 59 ; 0xfb26f __U4D.asm:62
+ shr edx, 010h ; 66 c1 ea 10 ; 0xfb271 __U4D.asm:63
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xfb275 __U4D.asm:64
+ pop edx ; 66 5a ; 0xfb277 __U4D.asm:66
+ ror eax, 010h ; 66 c1 c8 10 ; 0xfb279 __U4D.asm:67
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfb27d __U4D.asm:68
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfb27f __U4D.asm:69
+ pop ax ; 58 ; 0xfb282 __U4D.asm:70
+ rol eax, 010h ; 66 c1 c0 10 ; 0xfb283 __U4D.asm:71
+ popfw ; 9d ; 0xfb287 __U4D.asm:129
+ retn ; c3 ; 0xfb288 __U4D.asm:130
+ times 0x7 db 0
+ ; disGetNextSymbol 0xfb290 LB 0xbc -> off=0x0 cb=0000000000000010 uValue=00000000000f9c90 '__U8RS'
+__U8RS: ; 0xfb290 LB 0x10
+ test si, si ; 85 f6 ; 0xfb290 __U8RS.asm:40
+ je short 0b29fh ; 74 0b ; 0xfb292 __U8RS.asm:41
+ shr ax, 1 ; d1 e8 ; 0xfb294 __U8RS.asm:43
+ rcr bx, 1 ; d1 db ; 0xfb296 __U8RS.asm:44
+ rcr cx, 1 ; d1 d9 ; 0xfb298 __U8RS.asm:45
+ rcr dx, 1 ; d1 da ; 0xfb29a __U8RS.asm:46
+ dec si ; 4e ; 0xfb29c __U8RS.asm:47
+ jne short 0b294h ; 75 f5 ; 0xfb29d __U8RS.asm:48
+ retn ; c3 ; 0xfb29f __U8RS.asm:50
+ ; disGetNextSymbol 0xfb2a0 LB 0xac -> off=0x0 cb=0000000000000010 uValue=00000000000f9ca0 '__U8LS'
+__U8LS: ; 0xfb2a0 LB 0x10
+ test si, si ; 85 f6 ; 0xfb2a0 __U8LS.asm:40
+ je short 0b2afh ; 74 0b ; 0xfb2a2 __U8LS.asm:41
+ sal dx, 1 ; d1 e2 ; 0xfb2a4 __U8LS.asm:43
+ rcl cx, 1 ; d1 d1 ; 0xfb2a6 __U8LS.asm:44
+ rcl bx, 1 ; d1 d3 ; 0xfb2a8 __U8LS.asm:45
+ rcl ax, 1 ; d1 d0 ; 0xfb2aa __U8LS.asm:46
+ dec si ; 4e ; 0xfb2ac __U8LS.asm:47
+ jne short 0b2a4h ; 75 f5 ; 0xfb2ad __U8LS.asm:48
+ retn ; c3 ; 0xfb2af __U8LS.asm:50
+ ; disGetNextSymbol 0xfb2b0 LB 0x9c -> off=0x0 cb=0000000000000010 uValue=00000000000f9cb0 '_fmemset_'
+_fmemset_: ; 0xfb2b0 LB 0x10
+ push di ; 57 ; 0xfb2b0 fmemset.asm:42
+ mov es, dx ; 8e c2 ; 0xfb2b1 fmemset.asm:44
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfb2b3 fmemset.asm:45
+ xchg al, bl ; 86 d8 ; 0xfb2b5 fmemset.asm:46
+ rep stosb ; f3 aa ; 0xfb2b7 fmemset.asm:47
+ xchg al, bl ; 86 d8 ; 0xfb2b9 fmemset.asm:48
+ pop di ; 5f ; 0xfb2bb fmemset.asm:50
+ retn ; c3 ; 0xfb2bc fmemset.asm:51
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfb2c0 LB 0x8c -> off=0x0 cb=000000000000003a uValue=00000000000f9cc0 '_fmemcpy_'
+_fmemcpy_: ; 0xfb2c0 LB 0x3a
+ push bp ; 55 ; 0xfb2c0 fmemcpy.asm:42
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfb2c1 fmemcpy.asm:43
+ push di ; 57 ; 0xfb2c3 fmemcpy.asm:44
+ push DS ; 1e ; 0xfb2c4 fmemcpy.asm:45
+ push si ; 56 ; 0xfb2c5 fmemcpy.asm:46
+ mov es, dx ; 8e c2 ; 0xfb2c6 fmemcpy.asm:48
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfb2c8 fmemcpy.asm:49
+ mov ds, cx ; 8e d9 ; 0xfb2ca fmemcpy.asm:50
+ db 08bh, 0f3h
+ ; mov si, bx ; 8b f3 ; 0xfb2cc fmemcpy.asm:51
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfb2ce fmemcpy.asm:52
+ rep movsb ; f3 a4 ; 0xfb2d1 fmemcpy.asm:53
+ pop si ; 5e ; 0xfb2d3 fmemcpy.asm:55
+ pop DS ; 1f ; 0xfb2d4 fmemcpy.asm:56
+ pop di ; 5f ; 0xfb2d5 fmemcpy.asm:57
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xfb2d6 fmemcpy.asm:58
+ pop bp ; 5d ; 0xfb2d8 fmemcpy.asm:59
+ retn ; c3 ; 0xfb2d9 fmemcpy.asm:60
+ add byte [bx+si], al ; 00 00 ; 0xfb2da
+ add byte [bx+si], al ; 00 00 ; 0xfb2dc
+ add byte [bx+si], al ; 00 00 ; 0xfb2de
+ adc byte [bp+di-04ceeh], dh ; 10 b3 12 b3 ; 0xfb2e0
+ sbb ax, 01db3h ; 1d b3 1d ; 0xfb2e4
+ mov BL, strict byte 01dh ; b3 1d ; 0xfb2e7
+ mov BL, strict byte 01fh ; b3 1f ; 0xfb2e9
+ mov BL, strict byte 01fh ; b3 1f ; 0xfb2eb
+ mov BL, strict byte 021h ; b3 21 ; 0xfb2ed
+ mov BL, strict byte 025h ; b3 25 ; 0xfb2ef
+ mov BL, strict byte 025h ; b3 25 ; 0xfb2f1
+ mov BL, strict byte 027h ; b3 27 ; 0xfb2f3
+ mov BL, strict byte 02ch ; b3 2c ; 0xfb2f5
+ mov BL, strict byte 02eh ; b3 2e ; 0xfb2f7
+ db 0b3h
+ ; disGetNextSymbol 0xfb2fa LB 0x52 -> off=0x0 cb=0000000000000041 uValue=0000000000009cfa 'apm_worker'
+apm_worker: ; 0xfb2fa LB 0x41
+ sti ; fb ; 0xfb2fa apm_pm.asm:56
+ push ax ; 50 ; 0xfb2fb apm_pm.asm:58
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfb2fc apm_pm.asm:59
+ sub AL, strict byte 004h ; 2c 04 ; 0xfb2fe apm_pm.asm:60
+ db 08bh, 0e8h
+ ; mov bp, ax ; 8b e8 ; 0xfb300 apm_pm.asm:61
+ sal bp, 1 ; d1 e5 ; 0xfb302 apm_pm.asm:62
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfb304 apm_pm.asm:63
+ pop ax ; 58 ; 0xfb306 apm_pm.asm:64
+ mov AH, strict byte 053h ; b4 53 ; 0xfb307 apm_pm.asm:65
+ jnc short 0b337h ; 73 2c ; 0xfb309 apm_pm.asm:66
+ jmp word [cs:bp-04d20h] ; 2e ff a6 e0 b2 ; 0xfb30b apm_pm.asm:68
+ jmp short 0b335h ; eb 23 ; 0xfb310 apm_pm.asm:71
+ push CS ; 0e ; 0xfb312 apm_pm.asm:80
+ pop ax ; 58 ; 0xfb313 apm_pm.asm:81
+ test ax, strict word 00003h ; a9 03 00 ; 0xfb314 apm_pm.asm:82
+ jne short 0b335h ; 75 1c ; 0xfb317 apm_pm.asm:83
+ sti ; fb ; 0xfb319 apm_pm.asm:84
+ hlt ; f4 ; 0xfb31a apm_pm.asm:85
+ jmp short 0b335h ; eb 18 ; 0xfb31b apm_pm.asm:86
+ jmp short 0b335h ; eb 16 ; 0xfb31d apm_pm.asm:95
+ jmp short 0b337h ; eb 16 ; 0xfb31f apm_pm.asm:101
+ mov AH, strict byte 080h ; b4 80 ; 0xfb321 apm_pm.asm:104
+ jmp short 0b339h ; eb 14 ; 0xfb323 apm_pm.asm:105
+ jmp short 0b337h ; eb 10 ; 0xfb325 apm_pm.asm:110
+ mov ax, 00102h ; b8 02 01 ; 0xfb327 apm_pm.asm:113
+ jmp short 0b335h ; eb 09 ; 0xfb32a apm_pm.asm:114
+ jmp short 0b335h ; eb 07 ; 0xfb32c apm_pm.asm:118
+ mov BL, strict byte 000h ; b3 00 ; 0xfb32e apm_pm.asm:121
+ mov cx, strict word 00000h ; b9 00 00 ; 0xfb330 apm_pm.asm:122
+ jmp short 0b335h ; eb 00 ; 0xfb333 apm_pm.asm:123
+ clc ; f8 ; 0xfb335 apm_pm.asm:126
+ retn ; c3 ; 0xfb336 apm_pm.asm:127
+ mov AH, strict byte 009h ; b4 09 ; 0xfb337 apm_pm.asm:130
+ stc ; f9 ; 0xfb339 apm_pm.asm:133
+ retn ; c3 ; 0xfb33a apm_pm.asm:134
+ ; disGetNextSymbol 0xfb33b LB 0x11 -> off=0x0 cb=0000000000000011 uValue=00000000000f9d3b 'apm_pm16_entry'
+apm_pm16_entry: ; 0xfb33b LB 0x11
+ mov AH, strict byte 002h ; b4 02 ; 0xfb33b apm_pm.asm:146
+ push DS ; 1e ; 0xfb33d apm_pm.asm:152
+ push bp ; 55 ; 0xfb33e apm_pm.asm:153
+ push CS ; 0e ; 0xfb33f apm_pm.asm:155
+ pop bp ; 5d ; 0xfb340 apm_pm.asm:156
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xfb341 apm_pm.asm:157
+ mov ds, bp ; 8e dd ; 0xfb344 apm_pm.asm:158
+ call 0b2fah ; e8 b1 ff ; 0xfb346 apm_pm.asm:160
+ pop bp ; 5d ; 0xfb349 apm_pm.asm:162
+ pop DS ; 1f ; 0xfb34a apm_pm.asm:163
+ retf ; cb ; 0xfb34b apm_pm.asm:165
+
+ ; Padding 0x26b4 bytes at 0xfb34c
+ times 9908 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:52
+ cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:54
+ jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:55
+ cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:57
+ inc bx ; 43 ; 0xfda09
+ dec cx ; 49 ; 0xfda0a
+ mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:58
+ jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:59
+ mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:61
+ db 00fh
+ add byte [bx+di-01000h], bh ; 00 b9 00 f0 ; 0xfda13
+ add byte [bx+si], al ; 00 00 ; 0xfda17
+ mov dx, 0da26h ; ba 26 da ; 0xfda19 pcibio32.asm:63
+ add byte [bx+si], al ; 00 00 ; 0xfda1c
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:64
+ popfw ; 9d ; 0xfda20 pcibio32.asm:66
+ retf ; cb ; 0xfda21 pcibio32.asm:67
+ mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:70
+ jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:71
+ ; disGetNextSymbol 0xfda26 LB 0x3ae -> off=0x0 cb=000000000000001a uValue=00000000000f0026 'pcibios32_entry'
+pcibios32_entry: ; 0xfda26 LB 0x1a
+ pushfw ; 9c ; 0xfda26 pcibio32.asm:80
+ cld ; fc ; 0xfda27 pcibio32.asm:81
+ push ES ; 06 ; 0xfda28 pcibio32.asm:83
+ pushaw ; 60 ; 0xfda29 pcibio32.asm:84
+ call 0db80h ; e8 53 01 ; 0xfda2a pcibio32.asm:85
+ add byte [bx+si], al ; 00 00 ; 0xfda2d
+ popaw ; 61 ; 0xfda2f pcibio32.asm:86
+ pop ES ; 07 ; 0xfda30 pcibio32.asm:87
+ popfw ; 9d ; 0xfda31 pcibio32.asm:89
+ retf ; cb ; 0xfda32 pcibio32.asm:90
+ times 0xd db 0
+ ; disGetNextSymbol 0xfda40 LB 0x394 -> off=0x0 cb=0000000000000021 uValue=00000000000f0040 'apm_pm32_entry'
+apm_pm32_entry: ; 0xfda40 LB 0x21
+ push bp ; 55 ; 0xfda40 apm_pm.asm:190
+ mov ebp, cs ; 66 8c cd ; 0xfda41 apm_pm.asm:192
+ push ebp ; 66 55 ; 0xfda44 apm_pm.asm:193
+ mov bp, 0da5fh ; bd 5f da ; 0xfda46 apm_pm.asm:194
+ add byte [bx+si], al ; 00 00 ; 0xfda49
+ push ebp ; 66 55 ; 0xfda4b apm_pm.asm:195
+ push CS ; 0e ; 0xfda4d apm_pm.asm:197
+ pop bp ; 5d ; 0xfda4e apm_pm.asm:198
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xfda4f apm_pm.asm:199
+ push ebp ; 66 55 ; 0xfda52 apm_pm.asm:200
+ mov bp, 0b33dh ; bd 3d b3 ; 0xfda54 apm_pm.asm:202
+ add byte [bx+si], al ; 00 00 ; 0xfda57
+ push ebp ; 66 55 ; 0xfda59 apm_pm.asm:203
+ mov AH, strict byte 003h ; b4 03 ; 0xfda5b apm_pm.asm:205
+ db 066h, 0cbh
+ ; retf ; 66 cb ; 0xfda5d
+ pop bp ; 5d ; 0xfda5f apm_pm.asm:212
+ retf ; cb ; 0xfda60 apm_pm.asm:213
+ ; 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:188
+ mov bp, sp ; 89 e5 ; 0xfda62
+ push bx ; 53 ; 0xfda64
+ and dl, 0fch ; 80 e2 fc ; 0xfda65 pci32.c:190
+ mov bx, dx ; 89 d3 ; 0xfda68
+ mov dx, 00cf8h ; ba f8 0c ; 0xfda6a
+ add byte [bx+si], al ; 00 00 ; 0xfda6d
+ db 00fh, 0b7h, 0c0h
+ ; movzx ax, ax ; 0f b7 c0 ; 0xfda6f
+ sal ax, 008h ; c1 e0 08 ; 0xfda72
+ or ax, strict word 00000h ; 0d 00 00 ; 0xfda75
+ add byte [bx+si-03c76h], al ; 00 80 8a c3 ; 0xfda78
+ out DX, ax ; ef ; 0xfda7c
+ lea sp, [di-004h] ; 8d 65 fc ; 0xfda7d pci32.c:191
+ pop bx ; 5b ; 0xfda80
+ pop bp ; 5d ; 0xfda81
+ retn ; c3 ; 0xfda82
+ ; disGetNextSymbol 0xfda83 LB 0x351 -> off=0x0 cb=00000000000000ff uValue=00000000000f0083 'pci32_find_device_'
+pci32_find_device_: ; 0xfda83 LB 0xff
+ push bp ; 55 ; 0xfda83 pci32.c:223
+ 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:233
+ xor bx, bx ; 31 db ; 0xfda95 pci32.c:240
+ xor cl, cl ; 30 c9 ; 0xfda97 pci32.c:241
+ test bl, 007h ; f6 c3 07 ; 0xfda99 pci32.c:251
+ jne short 0dad8h ; 75 3a ; 0xfda9c
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfda9e pci32.c:252
+ 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:253
+ 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:254
+ jne short 0dac2h ; 75 08 ; 0xfdab8
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfdaba pci32.c:255
+ jmp near 0db58h ; e9 98 00 ; 0xfdabd pci32.c:256
+ add byte [bx+si], al ; 00 00 ; 0xfdac0
+ test byte [di-00ch], 080h ; f6 45 f4 80 ; 0xfdac2 pci32.c:258
+ je short 0dad1h ; 74 09 ; 0xfdac6
+ mov word [di-010h], strict word 00001h ; c7 45 f0 01 00 ; 0xfdac8 pci32.c:259
+ add byte [bx+si], al ; 00 00 ; 0xfdacd
+ jmp short 0dad8h ; eb 07 ; 0xfdacf pci32.c:260
+ mov word [di-010h], strict word 00008h ; c7 45 f0 08 00 ; 0xfdad1 pci32.c:261
+ add byte [bx+si], al ; 00 00 ; 0xfdad6
+ mov al, byte [di-00ch] ; 8a 45 f4 ; 0xfdad8 pci32.c:272
+ 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:274
+ 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:275
+ 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:276
+ jbe short 0db05h ; 76 02 ; 0xfdb01
+ mov cl, al ; 88 c1 ; 0xfdb03 pci32.c:277
+ test di, di ; 85 ff ; 0xfdb05 pci32.c:281
+ 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:282
+ 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:283
+ add byte [bx+si], al ; 00 00 ; 0xfdb2b
+ test di, di ; 85 ff ; 0xfdb2d pci32.c:286
+ je short 0db42h ; 74 11 ; 0xfdb2f
+ cmp word [di-01ch], strict byte 00000h ; 83 7d e4 00 ; 0xfdb31 pci32.c:287
+ je short 0db3ch ; 74 05 ; 0xfdb35
+ shr ax, 010h ; c1 e8 10 ; 0xfdb37 pci32.c:288
+ jmp short 0db3fh ; eb 03 ; 0xfdb3a pci32.c:289
+ shr ax, 008h ; c1 e8 08 ; 0xfdb3c pci32.c:290
+ mov word [di-014h], ax ; 89 45 ec ; 0xfdb3f
+ mov ax, word [di-014h] ; 8b 45 ec ; 0xfdb42 pci32.c:297
+ 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:298
+ 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:306
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb5a pci32.c:307
+ 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:314
+ 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:316
+ 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:323
+ 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:328
+ 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:338
+ jne short 0dc0ch ; 75 0d ; 0xfdbfd
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbff pci32.c:339
+ xor ah, ah ; 30 e4 ; 0xfdc02
+ or ah, 083h ; 80 cc 83 ; 0xfdc04
+ jmp near 0ddc2h ; e9 b8 01 ; 0xfdc07 pci32.c:340
+ add byte [bx+si], al ; 00 00 ; 0xfdc0a
+ xor cx, cx ; 31 c9 ; 0xfdc0c pci32.c:342
+ 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:344
+ 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:345
+ jmp near 0ddcah ; e9 8a 01 ; 0xfdc3d pci32.c:350
+ add byte [bx+si], al ; 00 00 ; 0xfdc40
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc42 pci32.c:352
+ 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:354
+ xor ah, ah ; 30 e4 ; 0xfdc5e
+ or ah, 086h ; 80 cc 86 ; 0xfdc60
+ jmp near 0ddc2h ; e9 5c 01 ; 0xfdc63 pci32.c:355
+ add byte [bx+si], al ; 00 00 ; 0xfdc66
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc68 pci32.c:357
+ jmp near 0ddcah ; e9 5b 01 ; 0xfdc6c pci32.c:359
+ 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:366
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc79 pci32.c:367
+ xor ah, ah ; 30 e4 ; 0xfdc7c
+ or ah, 087h ; 80 cc 87 ; 0xfdc7e
+ jmp near 0ddc2h ; e9 3e 01 ; 0xfdc81 pci32.c:368
+ add byte [bx+si], al ; 00 00 ; 0xfdc84
+ db 00fh, 0b7h, 055h, 008h
+ ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc86 pci32.c:370
+ 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:374
+ add byte [bx+si], al ; 00 00 ; 0xfdcf0
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcf2 pci32.c:376
+ 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:377
+ add byte [bx+si], al ; 00 00 ; 0xfdd0d
+ mov dx, 00cfch ; ba fc 0c ; 0xfdd0f pci32.c:379
+ 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:380
+ add byte [bx+si], al ; 00 00 ; 0xfdd1b
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd1d pci32.c:382
+ 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:383
+ add byte [bx+si], al ; 00 00 ; 0xfdd35
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd37 pci32.c:385
+ 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:386
+ add byte [bx+si], al ; 00 00 ; 0xfdd51
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd53 pci32.c:388
+ 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:392
+ db 00fh, 0b7h, 045h, 008h
+ ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd5e pci32.c:394
+ 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:398
+ jo short 0dd62h ; 70 f3 ; 0xfdd6d
+ add byte [bx+si], al ; 00 00 ; 0xfdd6f
+ 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:399
+ 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:400
+ jmp short 0ddadh ; eb 24 ; 0xfdd87 pci32.c:401
+ db 00fh, 0b7h, 0cah
+ ; movzx cx, dx ; 0f b7 ca ; 0xfdd89 pci32.c:402
+ 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, 0f190h ; be 90 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:404
+ jo short 0dda4h ; 70 f3 ; 0xfddaf
+ add byte [bx+si], al ; 00 00 ; 0xfddb1
+ 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:407
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfddbc pci32.c:410
+ 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:411
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfddcc pci32.c:413
+ 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:241
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:242
+ ; 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:244
+ out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:245
+ retn ; c3 ; 0xfe038 orgs.asm:246
+ ; 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:253
+ mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:254
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:255
+ loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:256
+ retn ; c3 ; 0xfe043 orgs.asm:257
+ ; 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:265
+ mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:266
+ out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:267
+ ; 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:270
+ mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:271
+ jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:272
+ ; 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:281
+ smsw ax ; 0f 01 e0 ; 0xfe05c orgs.asm:287
+ test ax, strict word 00001h ; a9 01 00 ; 0xfe05f orgs.asm:288
+ je short 0e06ah ; 74 06 ; 0xfe062 orgs.asm:289
+ mov AL, strict byte 001h ; b0 01 ; 0xfe064 orgs.asm:298
+ out strict byte 092h, AL ; e6 92 ; 0xfe066 orgs.asm:299
+ jmp short 0e068h ; eb fe ; 0xfe068 orgs.asm:300
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe06a orgs.asm:305
+ out strict byte 070h, AL ; e6 70 ; 0xfe06c orgs.asm:306
+ in AL, strict byte 071h ; e4 71 ; 0xfe06e orgs.asm:307
+ xchg ah, al ; 86 c4 ; 0xfe070 orgs.asm:310
+ in AL, strict byte 064h ; e4 64 ; 0xfe072 orgs.asm:314
+ test AL, strict byte 004h ; a8 04 ; 0xfe074 orgs.asm:315
+ je short 0e08bh ; 74 13 ; 0xfe076 orgs.asm:316
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe078 orgs.asm:319
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfe07a orgs.asm:320
+ jne short 0e08bh ; 75 0d ; 0xfe07c orgs.asm:321
+ mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe07e orgs.asm:327
+ cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe083 orgs.asm:328
+ jne short 0e064h ; 75 d9 ; 0xfe089 orgs.asm:329
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe08b orgs.asm:333
+ out strict byte 070h, AL ; e6 70 ; 0xfe08d orgs.asm:334
+ mov AL, strict byte 000h ; b0 00 ; 0xfe08f orgs.asm:335
+ out strict byte 071h, AL ; e6 71 ; 0xfe091 orgs.asm:336
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe093 orgs.asm:340
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe095 orgs.asm:341
+ je short 0e0abh ; 74 12 ; 0xfe097 orgs.asm:342
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe099 orgs.asm:343
+ je short 0e0abh ; 74 0e ; 0xfe09b orgs.asm:344
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfe09d orgs.asm:346
+ out strict byte 00dh, AL ; e6 0d ; 0xfe09f orgs.asm:349
+ out strict byte 0dah, AL ; e6 da ; 0xfe0a1 orgs.asm:350
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe0a3 orgs.asm:353
+ out strict byte 0d6h, AL ; e6 d6 ; 0xfe0a5 orgs.asm:354
+ mov AL, strict byte 000h ; b0 00 ; 0xfe0a7 orgs.asm:355
+ out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a9 orgs.asm:356
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe0ab orgs.asm:360
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfe0ad orgs.asm:361
+ je short 0e0c9h ; 74 18 ; 0xfe0af orgs.asm:362
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0b1 orgs.asm:364
+ jnc short 0e0c9h ; 73 14 ; 0xfe0b3 orgs.asm:365
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe0b5 orgs.asm:366
+ jne short 0e0bch ; 75 03 ; 0xfe0b7 orgs.asm:367
+ jmp near 0e366h ; e9 aa 02 ; 0xfe0b9 orgs.asm:368
+ mov sp, 00400h ; bc 00 04 ; 0xfe0bc orgs.asm:371
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfe0bf orgs.asm:373
+ je short 0e044h ; 74 81 ; 0xfe0c1 orgs.asm:374
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0c3 orgs.asm:376
+ je short 0e04ah ; 74 83 ; 0xfe0c5 orgs.asm:377
+ jmp short 0e0c9h ; eb 00 ; 0xfe0c7 orgs.asm:381
+ ; disGetNextSymbol 0xfe0c9 LB 0x1f37 -> off=0x0 cb=00000000000001f6 uValue=00000000000f00c9 'normal_post'
+normal_post: ; 0xfe0c9 LB 0x1f6
+ mov ax, 07800h ; b8 00 78 ; 0xfe0c9 orgs.asm:390
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xfe0cc orgs.asm:391
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe0ce orgs.asm:392
+ mov ds, ax ; 8e d8 ; 0xfe0d0 orgs.asm:393
+ mov ss, ax ; 8e d0 ; 0xfe0d2 orgs.asm:394
+ mov es, ax ; 8e c0 ; 0xfe0d4 orgs.asm:398
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0d6 orgs.asm:399
+ cld ; fc ; 0xfe0d8 orgs.asm:400
+ mov cx, 00239h ; b9 39 02 ; 0xfe0d9 orgs.asm:401
+ rep stosw ; f3 ab ; 0xfe0dc orgs.asm:402
+ inc di ; 47 ; 0xfe0de orgs.asm:403
+ inc di ; 47 ; 0xfe0df orgs.asm:404
+ mov cx, 005c6h ; b9 c6 05 ; 0xfe0e0 orgs.asm:405
+ rep stosw ; f3 ab ; 0xfe0e3 orgs.asm:406
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0e5 orgs.asm:410
+ add bx, 01000h ; 81 c3 00 10 ; 0xfe0e7 orgs.asm:412
+ cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0eb orgs.asm:413
+ jnc short 0e0fch ; 73 0b ; 0xfe0ef orgs.asm:414
+ mov es, bx ; 8e c3 ; 0xfe0f1 orgs.asm:415
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0f3 orgs.asm:416
+ mov cx, 08000h ; b9 00 80 ; 0xfe0f5 orgs.asm:417
+ rep stosw ; f3 ab ; 0xfe0f8 orgs.asm:418
+ jmp short 0e0e7h ; eb eb ; 0xfe0fa orgs.asm:419
+ mov es, bx ; 8e c3 ; 0xfe0fc orgs.asm:421
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0fe orgs.asm:422
+ mov cx, 07ff8h ; b9 f8 7f ; 0xfe100 orgs.asm:423
+ rep stosw ; f3 ab ; 0xfe103 orgs.asm:424
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe105 orgs.asm:425
+ push CS ; 0e ; 0xfe107 orgs.asm:104
+ pop DS ; 1f ; 0xfe108 orgs.asm:105
+ cld ; fc ; 0xfe109 orgs.asm:106
+ call 0182fh ; e8 22 37 ; 0xfe10a orgs.asm:429
+ call 0e8e7h ; e8 d7 07 ; 0xfe10d orgs.asm:432
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe110 orgs.asm:436
+ mov ds, bx ; 8e db ; 0xfe112 orgs.asm:437
+ mov cx, strict word 00060h ; b9 60 00 ; 0xfe114 orgs.asm:438
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe117 orgs.asm:439
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe11a orgs.asm:440
+ call 0e039h ; e8 19 ff ; 0xfe11d orgs.asm:441
+ mov bx, 001a0h ; bb a0 01 ; 0xfe120 orgs.asm:446
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfe123 orgs.asm:447
+ call 0e039h ; e8 10 ff ; 0xfe126 orgs.asm:448
+ mov ax, 0027fh ; b8 7f 02 ; 0xfe129 orgs.asm:451
+ mov word [00413h], ax ; a3 13 04 ; 0xfe12c orgs.asm:452
+ mov ax, 0e9cch ; b8 cc e9 ; 0xfe12f orgs.asm:95
+ mov word [00018h], ax ; a3 18 00 ; 0xfe132 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe135 orgs.asm:97
+ mov word [0001ah], ax ; a3 1a 00 ; 0xfe138 orgs.asm:98
+ mov ax, 0f84dh ; b8 4d f8 ; 0xfe13b orgs.asm:95
+ mov word [00044h], ax ; a3 44 00 ; 0xfe13e orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe141 orgs.asm:97
+ mov word [00046h], ax ; a3 46 00 ; 0xfe144 orgs.asm:98
+ mov ax, 0f841h ; b8 41 f8 ; 0xfe147 orgs.asm:95
+ mov word [00048h], ax ; a3 48 00 ; 0xfe14a orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe14d orgs.asm:97
+ mov word [0004ah], ax ; a3 4a 00 ; 0xfe150 orgs.asm:98
+ mov ax, 0f859h ; b8 59 f8 ; 0xfe153 orgs.asm:95
+ mov word [00054h], ax ; a3 54 00 ; 0xfe156 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe159 orgs.asm:97
+ mov word [00056h], ax ; a3 56 00 ; 0xfe15c orgs.asm:98
+ mov ax, 0efd4h ; b8 d4 ef ; 0xfe15f orgs.asm:95
+ mov word [0005ch], ax ; a3 5c 00 ; 0xfe162 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe165 orgs.asm:97
+ mov word [0005eh], ax ; a3 5e 00 ; 0xfe168 orgs.asm:98
+ mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe16b orgs.asm:95
+ mov word [00060h], ax ; a3 60 00 ; 0xfe16e orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe171 orgs.asm:97
+ mov word [00062h], ax ; a3 62 00 ; 0xfe174 orgs.asm:98
+ mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe177 orgs.asm:95
+ mov word [00064h], ax ; a3 64 00 ; 0xfe17a orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe17d orgs.asm:97
+ mov word [00066h], ax ; a3 66 00 ; 0xfe180 orgs.asm:98
+ mov ax, 0efedh ; b8 ed ef ; 0xfe183 orgs.asm:95
+ mov word [00070h], ax ; a3 70 00 ; 0xfe186 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe189 orgs.asm:97
+ mov word [00072h], ax ; a3 72 00 ; 0xfe18c orgs.asm:98
+ call 0e778h ; e8 e6 05 ; 0xfe18f orgs.asm:468
+ call 0f13bh ; e8 a6 0f ; 0xfe192 orgs.asm:472
+ call 0f166h ; e8 ce 0f ; 0xfe195 orgs.asm:473
+ mov ax, 0fe6eh ; b8 6e fe ; 0xfe198 orgs.asm:95
+ mov word [00068h], ax ; a3 68 00 ; 0xfe19b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe19e orgs.asm:97
+ mov word [0006ah], ax ; a3 6a 00 ; 0xfe1a1 orgs.asm:98
+ mov ax, 0fea5h ; b8 a5 fe ; 0xfe1a4 orgs.asm:95
+ mov word [00020h], ax ; a3 20 00 ; 0xfe1a7 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1aa orgs.asm:97
+ mov word [00022h], ax ; a3 22 00 ; 0xfe1ad orgs.asm:98
+ mov AL, strict byte 034h ; b0 34 ; 0xfe1b0 orgs.asm:479
+ out strict byte 043h, AL ; e6 43 ; 0xfe1b2 orgs.asm:480
+ mov AL, strict byte 000h ; b0 00 ; 0xfe1b4 orgs.asm:481
+ out strict byte 040h, AL ; e6 40 ; 0xfe1b6 orgs.asm:482
+ out strict byte 040h, AL ; e6 40 ; 0xfe1b8 orgs.asm:483
+ mov ax, 0f065h ; b8 65 f0 ; 0xfe1ba orgs.asm:95
+ mov word [00040h], ax ; a3 40 00 ; 0xfe1bd orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1c0 orgs.asm:97
+ mov word [00042h], ax ; a3 42 00 ; 0xfe1c3 orgs.asm:98
+ mov ax, 0e987h ; b8 87 e9 ; 0xfe1c6 orgs.asm:95
+ mov word [00024h], ax ; a3 24 00 ; 0xfe1c9 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1cc orgs.asm:97
+ mov word [00026h], ax ; a3 26 00 ; 0xfe1cf orgs.asm:98
+ mov ax, 0e82eh ; b8 2e e8 ; 0xfe1d2 orgs.asm:95
+ mov word [00058h], ax ; a3 58 00 ; 0xfe1d5 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1d8 orgs.asm:97
+ mov word [0005ah], ax ; a3 5a 00 ; 0xfe1db orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe1de orgs.asm:492
+ mov ds, ax ; 8e d8 ; 0xfe1e0 orgs.asm:493
+ mov byte [00417h], AL ; a2 17 04 ; 0xfe1e2 orgs.asm:495
+ mov byte [00418h], AL ; a2 18 04 ; 0xfe1e5 orgs.asm:496
+ mov byte [00419h], AL ; a2 19 04 ; 0xfe1e8 orgs.asm:497
+ mov byte [00471h], AL ; a2 71 04 ; 0xfe1eb orgs.asm:498
+ mov byte [00497h], AL ; a2 97 04 ; 0xfe1ee orgs.asm:499
+ mov AL, strict byte 010h ; b0 10 ; 0xfe1f1 orgs.asm:500
+ mov byte [00496h], AL ; a2 96 04 ; 0xfe1f3 orgs.asm:501
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1f6 orgs.asm:503
+ mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1f9 orgs.asm:504
+ mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1fd orgs.asm:505
+ mov word [00480h], bx ; 89 1e 80 04 ; 0xfe201 orgs.asm:506
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe205 orgs.asm:507
+ mov word [00482h], bx ; 89 1e 82 04 ; 0xfe208 orgs.asm:508
+ mov AL, strict byte 014h ; b0 14 ; 0xfe20c orgs.asm:511
+ out strict byte 070h, AL ; e6 70 ; 0xfe20e orgs.asm:512
+ in AL, strict byte 071h ; e4 71 ; 0xfe210 orgs.asm:513
+ mov byte [00410h], AL ; a2 10 04 ; 0xfe212 orgs.asm:514
+ push DS ; 1e ; 0xfe215 orgs.asm:516
+ push CS ; 0e ; 0xfe216 orgs.asm:104
+ pop DS ; 1f ; 0xfe217 orgs.asm:105
+ cld ; fc ; 0xfe218 orgs.asm:106
+ mov ax, 0c000h ; b8 00 c0 ; 0xfe219 orgs.asm:521
+ mov dx, 0c800h ; ba 00 c8 ; 0xfe21c orgs.asm:522
+ call 01600h ; e8 de 33 ; 0xfe21f orgs.asm:523
+ call 04fadh ; e8 88 6d ; 0xfe222 orgs.asm:526
+ pop DS ; 1f ; 0xfe225 orgs.asm:527
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe226 orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe229 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe22c orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe22f orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe232 orgs.asm:531
+ mov ds, ax ; 8e d8 ; 0xfe234 orgs.asm:532
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe236 orgs.asm:533
+ mov CL, strict byte 014h ; b1 14 ; 0xfe238 orgs.asm:534
+ mov dx, 00378h ; ba 78 03 ; 0xfe23a orgs.asm:535
+ call 0ecedh ; e8 ad 0a ; 0xfe23d orgs.asm:536
+ mov dx, 00278h ; ba 78 02 ; 0xfe240 orgs.asm:537
+ call 0ecedh ; e8 a7 0a ; 0xfe243 orgs.asm:538
+ sal bx, 00eh ; c1 e3 0e ; 0xfe246 orgs.asm:200
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe249 orgs.asm:540
+ and ax, 03fffh ; 25 ff 3f ; 0xfe24c orgs.asm:541
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe24f orgs.asm:542
+ mov word [00410h], ax ; a3 10 04 ; 0xfe251 orgs.asm:543
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe254 orgs.asm:95
+ mov word [0002ch], ax ; a3 2c 00 ; 0xfe257 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe25a orgs.asm:97
+ mov word [0002eh], ax ; a3 2e 00 ; 0xfe25d orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe260 orgs.asm:95
+ mov word [00030h], ax ; a3 30 00 ; 0xfe263 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe266 orgs.asm:97
+ mov word [00032h], ax ; a3 32 00 ; 0xfe269 orgs.asm:98
+ mov ax, 0e739h ; b8 39 e7 ; 0xfe26c orgs.asm:95
+ mov word [00050h], ax ; a3 50 00 ; 0xfe26f orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe272 orgs.asm:97
+ mov word [00052h], ax ; a3 52 00 ; 0xfe275 orgs.asm:98
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe278 orgs.asm:549
+ mov CL, strict byte 00ah ; b1 0a ; 0xfe27a orgs.asm:550
+ mov dx, 003f8h ; ba f8 03 ; 0xfe27c orgs.asm:551
+ call 0ed0bh ; e8 89 0a ; 0xfe27f orgs.asm:552
+ mov dx, 002f8h ; ba f8 02 ; 0xfe282 orgs.asm:553
+ call 0ed0bh ; e8 83 0a ; 0xfe285 orgs.asm:554
+ mov dx, 003e8h ; ba e8 03 ; 0xfe288 orgs.asm:555
+ call 0ed0bh ; e8 7d 0a ; 0xfe28b orgs.asm:556
+ mov dx, 002e8h ; ba e8 02 ; 0xfe28e orgs.asm:557
+ call 0ed0bh ; e8 77 0a ; 0xfe291 orgs.asm:558
+ sal bx, 009h ; c1 e3 09 ; 0xfe294 orgs.asm:200
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe297 orgs.asm:560
+ and ax, 0f1ffh ; 25 ff f1 ; 0xfe29a orgs.asm:561
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe29d orgs.asm:562
+ mov word [00410h], ax ; a3 10 04 ; 0xfe29f orgs.asm:563
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe2a2 orgs.asm:95
+ mov word [00128h], ax ; a3 28 01 ; 0xfe2a5 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2a8 orgs.asm:97
+ mov word [0012ah], ax ; a3 2a 01 ; 0xfe2ab orgs.asm:98
+ mov ax, 0f8f9h ; b8 f9 f8 ; 0xfe2ae orgs.asm:95
+ mov word [001c0h], ax ; a3 c0 01 ; 0xfe2b1 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2b4 orgs.asm:97
+ mov word [001c2h], ax ; a3 c2 01 ; 0xfe2b7 orgs.asm:98
+ call 0edbfh ; e8 02 0b ; 0xfe2ba orgs.asm:569
+ jmp short 0e303h ; eb 44 ; 0xfe2bd orgs.asm:571
+ ; disGetNextSymbol 0xfe2bf LB 0x1d41 -> off=0x0 cb=0000000000000004 uValue=00000000000f02bf 'biosorg_check_before_or_at_0E2C1h'
+biosorg_check_before_or_at_0E2C1h: ; 0xfe2bf LB 0x4
+ add byte [bx+si], al ; 00 00 ; 0xfe2bf
+ pop ax ; 58 ; 0xfe2c1
+ dec bp ; 4d ; 0xfe2c2
+ ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi'
+nmi: ; 0xfe2c3 LB 0x7
+ push CS ; 0e ; 0xfe2c3 orgs.asm:104
+ pop DS ; 1f ; 0xfe2c4 orgs.asm:105
+ cld ; fc ; 0xfe2c5 orgs.asm:106
+ call 0180bh ; e8 42 35 ; 0xfe2c6 orgs.asm:580
+ iret ; cf ; 0xfe2c9 orgs.asm:581
+ ; 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:584
+ call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:585
+ int 002h ; cd 02 ; 0xfe2cf orgs.asm:586
+ iret ; cf ; 0xfe2d1 orgs.asm:587
+ ; disGetNextSymbol 0xfe2d2 LB 0x1d2e -> off=0x0 cb=00000000000000bd uValue=00000000000f02d2 'hard_drive_post'
+hard_drive_post: ; 0xfe2d2 LB 0xbd
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe2d2 orgs.asm:592
+ mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:593
+ mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:595
+ mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:596
+ mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:597
+ mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:598
+ mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:599
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:600
+ mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:601
+ mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:95
+ mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:97
+ mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:98
+ mov ax, 0f8e7h ; b8 e7 f8 ; 0xfe2f6 orgs.asm:95
+ mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:97
+ mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:98
+ retn ; c3 ; 0xfe302 orgs.asm:606
+ mov ax, 0f8bch ; b8 bc f8 ; 0xfe303 orgs.asm:95
+ mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:97
+ mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:98
+ mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:95
+ mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:97
+ mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:98
+ call 0e753h ; e8 35 04 ; 0xfe31b orgs.asm:618
+ push CS ; 0e ; 0xfe31e orgs.asm:104
+ pop DS ; 1f ; 0xfe31f orgs.asm:105
+ cld ; fc ; 0xfe320 orgs.asm:106
+ pushad ; 66 60 ; 0xfe321 orgs.asm:625
+ call 016a1h ; e8 7b 33 ; 0xfe323 orgs.asm:626
+ popad ; 66 61 ; 0xfe326 orgs.asm:627
+ call 01d60h ; e8 35 3a ; 0xfe328 orgs.asm:632
+ call 0227fh ; e8 51 3f ; 0xfe32b orgs.asm:633
+ sti ; fb ; 0xfe32e orgs.asm:640
+ call 0985eh ; e8 2c b5 ; 0xfe32f orgs.asm:641
+ cli ; fa ; 0xfe332 orgs.asm:642
+ call 08711h ; e8 db a3 ; 0xfe333 orgs.asm:647
+ call 0aaeah ; e8 b1 c7 ; 0xfe336 orgs.asm:652
+ call 0ed2fh ; e8 f3 09 ; 0xfe339 orgs.asm:656
+ call 0e2d2h ; e8 93 ff ; 0xfe33c orgs.asm:659
+ push CS ; 0e ; 0xfe33f orgs.asm:104
+ pop DS ; 1f ; 0xfe340 orgs.asm:105
+ cld ; fc ; 0xfe341 orgs.asm:106
+ mov ax, 0c800h ; b8 00 c8 ; 0xfe342 orgs.asm:663
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe345 orgs.asm:664
+ call 01600h ; e8 b5 32 ; 0xfe348 orgs.asm:665
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xfe34b orgs.asm:672
+ db 066h, 033h, 0dbh
+ ; xor ebx, ebx ; 66 33 db ; 0xfe34e orgs.asm:673
+ db 066h, 033h, 0c9h
+ ; xor ecx, ecx ; 66 33 c9 ; 0xfe351 orgs.asm:674
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfe354 orgs.asm:675
+ call 0184fh ; e8 f5 34 ; 0xfe357 orgs.asm:679
+ call 03ccah ; e8 6d 59 ; 0xfe35a orgs.asm:682
+ sti ; fb ; 0xfe35d orgs.asm:685
+ int 019h ; cd 19 ; 0xfe35e orgs.asm:686
+ sti ; fb ; 0xfe360 orgs.asm:688
+ hlt ; f4 ; 0xfe361 orgs.asm:690
+ jmp short 0e361h ; eb fd ; 0xfe362 orgs.asm:691
+ cli ; fa ; 0xfe364 orgs.asm:692
+ hlt ; f4 ; 0xfe365 orgs.asm:693
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe366 orgs.asm:702
+ mov ds, ax ; 8e d8 ; 0xfe369 orgs.asm:703
+ mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe36b orgs.asm:705
+ mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe36f orgs.asm:706
+ in AL, strict byte 092h ; e4 92 ; 0xfe373 orgs.asm:708
+ and AL, strict byte 0fdh ; 24 fd ; 0xfe375 orgs.asm:709
+ out strict byte 092h, AL ; e6 92 ; 0xfe377 orgs.asm:710
+ lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xfe379 orgs.asm:712
+ pop DS ; 1f ; 0xfe37f orgs.asm:714
+ pop ES ; 07 ; 0xfe380 orgs.asm:715
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfe381 orgs.asm:717
+ in AL, strict byte 080h ; e4 80 ; 0xfe383 orgs.asm:719
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xfe385 orgs.asm:720
+ db 03ah, 0e0h
+ ; cmp ah, al ; 3a e0 ; 0xfe388 orgs.asm:722
+ popaw ; 61 ; 0xfe38a orgs.asm:724
+ sti ; fb ; 0xfe38b orgs.asm:725
+ retf 00002h ; ca 02 00 ; 0xfe38c orgs.asm:726
+ ; disGetNextSymbol 0xfe38f LB 0x1c71 -> off=0x0 cb=000000000000006f uValue=00000000000f038f 'biosorg_check_before_or_at_0E3FCh'
+biosorg_check_before_or_at_0E3FCh: ; 0xfe38f LB 0x6f
+ times 0x6d 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:736
+ ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=00000000000002f1 uValue=00000000000f0401 'rom_fdpt'
+rom_fdpt: ; 0xfe401 LB 0x2f1
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h
+ db 04dh
+ ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler'
+int19_handler: ; 0xfe6f2 LB 0x3
+ jmp near 0f0ach ; e9 b7 09 ; 0xfe6f2 orgs.asm:752
+ ; disGetNextSymbol 0xfe6f5 LB 0x190b -> off=0x0 cb=000000000000000a uValue=00000000000f06f5 'biosorg_check_at_0E6F5h'
+biosorg_check_at_0E6F5h: ; 0xfe6f5 LB 0xa
+ or word [bx+si], ax ; 09 00 ; 0xfe6f5
+ cld ; fc ; 0xfe6f7
+ add byte [bx+di], al ; 00 01 ; 0xfe6f8
+ je short 0e73ch ; 74 40 ; 0xfe6fa
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfe6ff LB 0x1901 -> off=0x0 cb=000000000000002a uValue=00000000000f06ff 'biosorg_check_before_or_at_0E727h'
+biosorg_check_before_or_at_0E727h: ; 0xfe6ff LB 0x2a
+ times 0x28 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe729 LB 0x18d7 -> off=0x0 cb=0000000000000010 uValue=00000000000f0729 'biosorg_check_at_0E729h'
+biosorg_check_at_0E729h: ; 0xfe729 LB 0x10
+ times 0xe db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe739 LB 0x18c7 -> off=0x0 cb=000000000000001a uValue=00000000000f0739 'biosorg_check_at_0E739h'
+biosorg_check_at_0E739h: ; 0xfe739 LB 0x1a
+ push DS ; 1e ; 0xfe739 orgs.asm:825
+ push ES ; 06 ; 0xfe73a orgs.asm:826
+ pushaw ; 60 ; 0xfe73b orgs.asm:97
+ push CS ; 0e ; 0xfe73c orgs.asm:104
+ pop DS ; 1f ; 0xfe73d orgs.asm:105
+ cld ; fc ; 0xfe73e orgs.asm:106
+ call 064a1h ; e8 5f 7d ; 0xfe73f orgs.asm:829
+ popaw ; 61 ; 0xfe742 orgs.asm:114
+ pop ES ; 07 ; 0xfe743 orgs.asm:831
+ pop DS ; 1f ; 0xfe744 orgs.asm:832
+ iret ; cf ; 0xfe745 orgs.asm:833
+ push DS ; 1e ; 0xfe746 orgs.asm:841
+ push ES ; 06 ; 0xfe747 orgs.asm:842
+ pushaw ; 60 ; 0xfe748 orgs.asm:97
+ push CS ; 0e ; 0xfe749 orgs.asm:104
+ pop DS ; 1f ; 0xfe74a orgs.asm:105
+ cld ; fc ; 0xfe74b orgs.asm:106
+ call 017a1h ; e8 52 30 ; 0xfe74c orgs.asm:845
+ popaw ; 61 ; 0xfe74f orgs.asm:114
+ pop ES ; 07 ; 0xfe750 orgs.asm:847
+ pop DS ; 1f ; 0xfe751 orgs.asm:848
+ iret ; cf ; 0xfe752 orgs.asm:849
+ ; 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:854
+ out strict byte 020h, AL ; e6 20 ; 0xfe755 orgs.asm:855
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe757 orgs.asm:856
+ mov AL, strict byte 008h ; b0 08 ; 0xfe759 orgs.asm:857
+ out strict byte 021h, AL ; e6 21 ; 0xfe75b orgs.asm:858
+ mov AL, strict byte 070h ; b0 70 ; 0xfe75d orgs.asm:859
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe75f orgs.asm:860
+ mov AL, strict byte 004h ; b0 04 ; 0xfe761 orgs.asm:861
+ out strict byte 021h, AL ; e6 21 ; 0xfe763 orgs.asm:862
+ mov AL, strict byte 002h ; b0 02 ; 0xfe765 orgs.asm:863
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe767 orgs.asm:864
+ mov AL, strict byte 001h ; b0 01 ; 0xfe769 orgs.asm:865
+ out strict byte 021h, AL ; e6 21 ; 0xfe76b orgs.asm:866
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe76d orgs.asm:867
+ mov AL, strict byte 0b8h ; b0 b8 ; 0xfe76f orgs.asm:868
+ out strict byte 021h, AL ; e6 21 ; 0xfe771 orgs.asm:869
+ mov AL, strict byte 08fh ; b0 8f ; 0xfe773 orgs.asm:870
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe775 orgs.asm:871
+ retn ; c3 ; 0xfe777 orgs.asm:872
+ ; disGetNextSymbol 0xfe778 LB 0x1888 -> off=0x0 cb=0000000000000051 uValue=00000000000f0778 'ebda_post'
+ebda_post: ; 0xfe778 LB 0x51
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe778 orgs.asm:95
+ mov word [00034h], ax ; a3 34 00 ; 0xfe77b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe77e orgs.asm:97
+ mov word [00036h], ax ; a3 36 00 ; 0xfe781 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe784 orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe787 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe78a orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe78d orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe790 orgs.asm:95
+ mov word [001c8h], ax ; a3 c8 01 ; 0xfe793 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe796 orgs.asm:97
+ mov word [001cah], ax ; a3 ca 01 ; 0xfe799 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe79c orgs.asm:95
+ mov word [001cch], ax ; a3 cc 01 ; 0xfe79f orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7a2 orgs.asm:97
+ mov word [001ceh], ax ; a3 ce 01 ; 0xfe7a5 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe7a8 orgs.asm:95
+ mov word [001dch], ax ; a3 dc 01 ; 0xfe7ab orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7ae orgs.asm:97
+ mov word [001deh], ax ; a3 de 01 ; 0xfe7b1 orgs.asm:98
+ mov ax, 09fc0h ; b8 c0 9f ; 0xfe7b4 orgs.asm:884
+ mov ds, ax ; 8e d8 ; 0xfe7b7 orgs.asm:885
+ mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7b9 orgs.asm:886
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7be orgs.asm:888
+ mov ds, ax ; 8e d8 ; 0xfe7c0 orgs.asm:889
+ mov word [0040eh], 09fc0h ; c7 06 0e 04 c0 9f ; 0xfe7c2 orgs.asm:890
+ retn ; c3 ; 0xfe7c8 orgs.asm:891
+ ; disGetNextSymbol 0xfe7c9 LB 0x1837 -> off=0x0 cb=0000000000000065 uValue=00000000000f07c9 'biosorg_check_before_or_at_0E82Ch'
+biosorg_check_before_or_at_0E82Ch: ; 0xfe7c9 LB 0x65
+ times 0x63 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe82e LB 0x17d2 -> off=0x0 cb=000000000000003d uValue=00000000000f082e 'biosorg_check_at_0E82Eh'
+biosorg_check_at_0E82Eh: ; 0xfe82e LB 0x3d
+ sti ; fb ; 0xfe82e orgs.asm:902
+ pushfw ; 9c ; 0xfe82f orgs.asm:905
+ push ES ; 06 ; 0xfe830 orgs.asm:906
+ push DS ; 1e ; 0xfe831 orgs.asm:907
+ pushaw ; 60 ; 0xfe832 orgs.asm:97
+ cmp ah, 000h ; 80 fc 00 ; 0xfe833 orgs.asm:910
+ je short 0e84ah ; 74 12 ; 0xfe836 orgs.asm:911
+ cmp ah, 010h ; 80 fc 10 ; 0xfe838 orgs.asm:913
+ je short 0e84ah ; 74 0d ; 0xfe83b orgs.asm:914
+ push CS ; 0e ; 0xfe83d orgs.asm:104
+ pop DS ; 1f ; 0xfe83e orgs.asm:105
+ cld ; fc ; 0xfe83f orgs.asm:106
+ call 056fbh ; e8 b8 6e ; 0xfe840 orgs.asm:917
+ popaw ; 61 ; 0xfe843 orgs.asm:114
+ pop DS ; 1f ; 0xfe844 orgs.asm:919
+ pop ES ; 07 ; 0xfe845 orgs.asm:920
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe846 orgs.asm:921
+ iret ; cf ; 0xfe849 orgs.asm:922
+ mov bx, strict word 00040h ; bb 40 00 ; 0xfe84a orgs.asm:925
+ mov ds, bx ; 8e db ; 0xfe84d orgs.asm:926
+ cli ; fa ; 0xfe84f orgs.asm:928
+ mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe850 orgs.asm:929
+ cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe854 orgs.asm:930
+ jne short 0e85eh ; 75 04 ; 0xfe858 orgs.asm:931
+ sti ; fb ; 0xfe85a orgs.asm:932
+ nop ; 90 ; 0xfe85b orgs.asm:933
+ jmp short 0e84fh ; eb f1 ; 0xfe85c orgs.asm:941
+ push CS ; 0e ; 0xfe85e orgs.asm:104
+ pop DS ; 1f ; 0xfe85f orgs.asm:105
+ cld ; fc ; 0xfe860 orgs.asm:106
+ call 056fbh ; e8 97 6e ; 0xfe861 orgs.asm:945
+ popaw ; 61 ; 0xfe864 orgs.asm:114
+ pop DS ; 1f ; 0xfe865 orgs.asm:947
+ pop ES ; 07 ; 0xfe866 orgs.asm:948
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe867 orgs.asm:949
+ iret ; cf ; 0xfe86a orgs.asm:957
+ ; disGetNextSymbol 0xfe86b LB 0x1795 -> off=0x0 cb=000000000000001b uValue=00000000000f086b 'pmode_enter'
+pmode_enter: ; 0xfe86b LB 0x1b
+ push CS ; 0e ; 0xfe86b orgs.asm:30
+ pop DS ; 1f ; 0xfe86c orgs.asm:31
+ lgdt [cs:0e899h] ; 2e 0f 01 16 99 e8 ; 0xfe86d orgs.asm:33
+ mov eax, cr0 ; 0f 20 c0 ; 0xfe873 orgs.asm:34
+ or AL, strict byte 001h ; 0c 01 ; 0xfe876 orgs.asm:35
+ mov cr0, eax ; 0f 22 c0 ; 0xfe878 orgs.asm:36
+ jmp far 00020h:0e880h ; ea 80 e8 20 00 ; 0xfe87b
+ mov ax, strict word 00018h ; b8 18 00 ; 0xfe880 orgs.asm:42
+ mov ds, ax ; 8e d8 ; 0xfe883 orgs.asm:43
+ retn ; c3 ; 0xfe885 orgs.asm:44
+ ; disGetNextSymbol 0xfe886 LB 0x177a -> off=0x0 cb=0000000000000013 uValue=00000000000f0886 'pmode_exit'
+pmode_exit: ; 0xfe886 LB 0x13
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe886 orgs.asm:51
+ mov ds, ax ; 8e d8 ; 0xfe889 orgs.asm:52
+ mov eax, cr0 ; 0f 20 c0 ; 0xfe88b orgs.asm:54
+ and AL, strict byte 0feh ; 24 fe ; 0xfe88e orgs.asm:55
+ mov cr0, eax ; 0f 22 c0 ; 0xfe890 orgs.asm:56
+ jmp far 0f000h:0e898h ; ea 98 e8 00 f0 ; 0xfe893 orgs.asm:58
+ retn ; c3 ; 0xfe898 orgs.asm:60
+ ; disGetNextSymbol 0xfe899 LB 0x1767 -> off=0x0 cb=0000000000000006 uValue=00000000000f0899 'pmbios_gdt_desc'
+pmbios_gdt_desc: ; 0xfe899 LB 0x6
+ db 047h, 000h, 09fh, 0e8h, 00fh, 000h
+ ; disGetNextSymbol 0xfe89f LB 0x1761 -> off=0x0 cb=0000000000000048 uValue=00000000000f089f 'pmbios_gdt'
+pmbios_gdt: ; 0xfe89f LB 0x48
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 0ffh, 0ffh, 000h, 000h, 000h, 09bh, 0cfh, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 093h, 0cfh, 000h
+ db 0ffh, 0ffh, 000h, 000h, 00fh, 09bh, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 093h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 0ffh, 0ffh, 000h, 004h, 000h, 093h, 000h, 000h
+ ; disGetNextSymbol 0xfe8e7 LB 0x1719 -> off=0x0 cb=000000000000005c uValue=00000000000f08e7 'pmode_setup'
+pmode_setup: ; 0xfe8e7 LB 0x5c
+ push eax ; 66 50 ; 0xfe8e7 orgs.asm:31
+ push esi ; 66 56 ; 0xfe8e9 orgs.asm:32
+ pushfw ; 9c ; 0xfe8eb orgs.asm:33
+ cli ; fa ; 0xfe8ec orgs.asm:34
+ call 0e86bh ; e8 7b ff ; 0xfe8ed orgs.asm:35
+ mov eax, cr0 ; 0f 20 c0 ; 0xfe8f0 orgs.asm:37
+ and eax, strict dword 09fffffffh ; 66 25 ff ff ff 9f ; 0xfe8f3 orgs.asm:38
+ mov cr0, eax ; 0f 22 c0 ; 0xfe8f9 orgs.asm:39
+ mov esi, strict dword 0fee000f0h ; 66 be f0 00 e0 fe ; 0xfe8fc orgs.asm:41
+ mov eax, strict dword 00000010fh ; 66 b8 0f 01 00 00 ; 0xfe902 orgs.asm:42
+ mov dword [esi], eax ; 67 66 89 06 ; 0xfe908 orgs.asm:43
+ mov esi, strict dword 0fee00350h ; 66 be 50 03 e0 fe ; 0xfe90c orgs.asm:45
+ mov eax, dword [esi] ; 67 66 8b 06 ; 0xfe912 orgs.asm:46
+ and eax, strict dword 0fffe00ffh ; 66 25 ff 00 fe ff ; 0xfe916 orgs.asm:47
+ or ah, 007h ; 80 cc 07 ; 0xfe91c orgs.asm:48
+ mov dword [esi], eax ; 67 66 89 06 ; 0xfe91f orgs.asm:49
+ mov esi, strict dword 0fee00360h ; 66 be 60 03 e0 fe ; 0xfe923 orgs.asm:51
+ mov eax, dword [esi] ; 67 66 8b 06 ; 0xfe929 orgs.asm:52
+ and eax, strict dword 0fffe00ffh ; 66 25 ff 00 fe ff ; 0xfe92d orgs.asm:53
+ or ah, 004h ; 80 cc 04 ; 0xfe933 orgs.asm:54
+ mov dword [esi], eax ; 67 66 89 06 ; 0xfe936 orgs.asm:55
+ call 0e886h ; e8 49 ff ; 0xfe93a orgs.asm:57
+ popfw ; 9d ; 0xfe93d orgs.asm:58
+ pop esi ; 66 5e ; 0xfe93e orgs.asm:59
+ pop eax ; 66 58 ; 0xfe940 orgs.asm:60
+ retn ; c3 ; 0xfe942 orgs.asm:62
+ ; disGetNextSymbol 0xfe943 LB 0x16bd -> off=0x0 cb=0000000000000044 uValue=00000000000f0943 'biosorg_check_before_or_at_0E985h'
+biosorg_check_before_or_at_0E985h: ; 0xfe943 LB 0x44
+ times 0x42 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe987 LB 0x1679 -> off=0x0 cb=0000000000000052 uValue=00000000000f0987 'biosorg_check_at_0E987h'
+biosorg_check_at_0E987h: ; 0xfe987 LB 0x52
+ cli ; fa ; 0xfe987 orgs.asm:974
+ push ax ; 50 ; 0xfe988 orgs.asm:975
+ mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:976
+ out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:977
+ in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:979
+ push DS ; 1e ; 0xfe98f orgs.asm:980
+ pushaw ; 60 ; 0xfe990 orgs.asm:97
+ cld ; fc ; 0xfe991 orgs.asm:982
+ mov AH, strict byte 04fh ; b4 4f ; 0xfe992 orgs.asm:984
+ stc ; f9 ; 0xfe994 orgs.asm:985
+ int 015h ; cd 15 ; 0xfe995 orgs.asm:986
+ jnc short 0e9c0h ; 73 27 ; 0xfe997 orgs.asm:987
+ sti ; fb ; 0xfe999 orgs.asm:989
+ cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe99a orgs.asm:992
+ jne short 0e9a9h ; 75 0b ; 0xfe99c orgs.asm:993
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe99e orgs.asm:994
+ mov ds, ax ; 8e d8 ; 0xfe9a0 orgs.asm:995
+ or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a2 orgs.asm:996
+ jmp short 0e9c0h ; eb 17 ; 0xfe9a7 orgs.asm:997
+ cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9a9 orgs.asm:1000
+ jne short 0e9b8h ; 75 0b ; 0xfe9ab orgs.asm:1001
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9ad orgs.asm:1002
+ mov ds, ax ; 8e d8 ; 0xfe9af orgs.asm:1003
+ or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b1 orgs.asm:1004
+ jmp short 0e9c0h ; eb 08 ; 0xfe9b6 orgs.asm:1005
+ push ES ; 06 ; 0xfe9b8 orgs.asm:1008
+ push CS ; 0e ; 0xfe9b9 orgs.asm:104
+ pop DS ; 1f ; 0xfe9ba orgs.asm:105
+ cld ; fc ; 0xfe9bb orgs.asm:106
+ call 0529fh ; e8 e0 68 ; 0xfe9bc orgs.asm:1010
+ pop ES ; 07 ; 0xfe9bf orgs.asm:1011
+ popaw ; 61 ; 0xfe9c0 orgs.asm:114
+ pop DS ; 1f ; 0xfe9c1 orgs.asm:1015
+ cli ; fa ; 0xfe9c2 orgs.asm:1016
+ call 0e034h ; e8 6e f6 ; 0xfe9c3 orgs.asm:1017
+ mov AL, strict byte 0aeh ; b0 ae ; 0xfe9c6 orgs.asm:1019
+ out strict byte 064h, AL ; e6 64 ; 0xfe9c8 orgs.asm:1020
+ pop ax ; 58 ; 0xfe9ca orgs.asm:1021
+ iret ; cf ; 0xfe9cb orgs.asm:1022
+ pushaw ; 60 ; 0xfe9cc orgs.asm:97
+ push ES ; 06 ; 0xfe9cd orgs.asm:1031
+ push DS ; 1e ; 0xfe9ce orgs.asm:1032
+ push CS ; 0e ; 0xfe9cf orgs.asm:104
+ pop DS ; 1f ; 0xfe9d0 orgs.asm:105
+ cld ; fc ; 0xfe9d1 orgs.asm:106
+ call 06ed5h ; e8 00 85 ; 0xfe9d2 orgs.asm:1034
+ pop DS ; 1f ; 0xfe9d5 orgs.asm:1035
+ pop ES ; 07 ; 0xfe9d6 orgs.asm:1036
+ popaw ; 61 ; 0xfe9d7 orgs.asm:114
+ iret ; cf ; 0xfe9d8 orgs.asm:1038
+ ; 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:1045
+ ; 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:1054
+ jc short 0ec71h ; 72 11 ; 0xfec5e orgs.asm:1055
+ cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1057
+ jnbe short 0ec71h ; 77 0c ; 0xfec63 orgs.asm:1058
+ pushaw ; 60 ; 0xfec65 orgs.asm:97
+ push ES ; 06 ; 0xfec66 orgs.asm:1061
+ push DS ; 1e ; 0xfec67 orgs.asm:1062
+ push CS ; 0e ; 0xfec68 orgs.asm:104
+ pop DS ; 1f ; 0xfec69 orgs.asm:105
+ cld ; fc ; 0xfec6a orgs.asm:106
+ push 0ece9h ; 68 e9 ec ; 0xfec6b orgs.asm:83
+ jmp near 03d0dh ; e9 9c 50 ; 0xfec6e orgs.asm:84
+ push ES ; 06 ; 0xfec71 orgs.asm:1070
+ push ax ; 50 ; 0xfec72 orgs.asm:1071
+ push bx ; 53 ; 0xfec73 orgs.asm:1072
+ push cx ; 51 ; 0xfec74 orgs.asm:1073
+ push dx ; 52 ; 0xfec75 orgs.asm:1074
+ call 03ce1h ; e8 68 50 ; 0xfec76 orgs.asm:1077
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfec79 orgs.asm:1078
+ je short 0ecabh ; 74 2e ; 0xfec7b orgs.asm:1079
+ call 03cf7h ; e8 77 50 ; 0xfec7d orgs.asm:1082
+ pop dx ; 5a ; 0xfec80 orgs.asm:1083
+ push dx ; 52 ; 0xfec81 orgs.asm:1084
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec82 orgs.asm:1085
+ jne short 0ec97h ; 75 11 ; 0xfec84 orgs.asm:1086
+ pop dx ; 5a ; 0xfec86 orgs.asm:1088
+ pop cx ; 59 ; 0xfec87 orgs.asm:1089
+ pop bx ; 5b ; 0xfec88 orgs.asm:1090
+ pop ax ; 58 ; 0xfec89 orgs.asm:1091
+ pop ES ; 07 ; 0xfec8a orgs.asm:1092
+ pushaw ; 60 ; 0xfec8b orgs.asm:97
+ push ES ; 06 ; 0xfec8c orgs.asm:1095
+ push DS ; 1e ; 0xfec8d orgs.asm:1096
+ push CS ; 0e ; 0xfec8e orgs.asm:104
+ pop DS ; 1f ; 0xfec8f orgs.asm:105
+ cld ; fc ; 0xfec90 orgs.asm:106
+ push 0ece9h ; 68 e9 ec ; 0xfec91 orgs.asm:83
+ jmp near 042bdh ; e9 26 56 ; 0xfec94 orgs.asm:84
+ and dl, 0e0h ; 80 e2 e0 ; 0xfec97 orgs.asm:1102
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec9a orgs.asm:1103
+ jne short 0ecabh ; 75 0d ; 0xfec9c orgs.asm:1104
+ pop dx ; 5a ; 0xfec9e orgs.asm:1106
+ pop cx ; 59 ; 0xfec9f orgs.asm:1107
+ pop bx ; 5b ; 0xfeca0 orgs.asm:1108
+ pop ax ; 58 ; 0xfeca1 orgs.asm:1109
+ pop ES ; 07 ; 0xfeca2 orgs.asm:1110
+ push ax ; 50 ; 0xfeca3 orgs.asm:1112
+ push cx ; 51 ; 0xfeca4 orgs.asm:1113
+ push dx ; 52 ; 0xfeca5 orgs.asm:1114
+ push bx ; 53 ; 0xfeca6 orgs.asm:1115
+ db 0feh, 0cah
+ ; dec dl ; fe ca ; 0xfeca7 orgs.asm:1117
+ jmp short 0ecb4h ; eb 09 ; 0xfeca9 orgs.asm:1118
+ pop dx ; 5a ; 0xfecab orgs.asm:1121
+ pop cx ; 59 ; 0xfecac orgs.asm:1122
+ pop bx ; 5b ; 0xfecad orgs.asm:1123
+ pop ax ; 58 ; 0xfecae orgs.asm:1124
+ pop ES ; 07 ; 0xfecaf orgs.asm:1125
+ ; disGetNextSymbol 0xfecb0 LB 0x1350 -> off=0x0 cb=0000000000000004 uValue=00000000000f0cb0 'int13_noeltorito'
+int13_noeltorito: ; 0xfecb0 LB 0x4
+ push ax ; 50 ; 0xfecb0 orgs.asm:1128
+ push cx ; 51 ; 0xfecb1 orgs.asm:1129
+ push dx ; 52 ; 0xfecb2 orgs.asm:1130
+ push bx ; 53 ; 0xfecb3 orgs.asm:1131
+ ; disGetNextSymbol 0xfecb4 LB 0x134c -> off=0x0 cb=0000000000000014 uValue=00000000000f0cb4 'int13_legacy'
+int13_legacy: ; 0xfecb4 LB 0x14
+ push dx ; 52 ; 0xfecb4 orgs.asm:1133
+ push bp ; 55 ; 0xfecb5 orgs.asm:1134
+ push si ; 56 ; 0xfecb6 orgs.asm:1135
+ push di ; 57 ; 0xfecb7 orgs.asm:1136
+ push ES ; 06 ; 0xfecb8 orgs.asm:1137
+ push DS ; 1e ; 0xfecb9 orgs.asm:1138
+ push CS ; 0e ; 0xfecba orgs.asm:104
+ pop DS ; 1f ; 0xfecbb orgs.asm:105
+ cld ; fc ; 0xfecbc orgs.asm:106
+ test dl, 080h ; f6 c2 80 ; 0xfecbd orgs.asm:1143
+ jne short 0ecc8h ; 75 06 ; 0xfecc0 orgs.asm:1144
+ push 0ece9h ; 68 e9 ec ; 0xfecc2 orgs.asm:83
+ jmp near 03310h ; e9 48 46 ; 0xfecc5 orgs.asm:84
+ ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000014 uValue=00000000000f0cc8 'int13_notfloppy'
+int13_notfloppy: ; 0xfecc8 LB 0x14
+ cmp dl, 0e0h ; 80 fa e0 ; 0xfecc8 orgs.asm:1149
+ jc short 0ecdch ; 72 0f ; 0xfeccb orgs.asm:1150
+ shr ebx, 010h ; 66 c1 eb 10 ; 0xfeccd orgs.asm:1156
+ push bx ; 53 ; 0xfecd1 orgs.asm:1157
+ call 048eeh ; e8 19 5c ; 0xfecd2 orgs.asm:1158
+ pop bx ; 5b ; 0xfecd5 orgs.asm:1159
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfecd6 orgs.asm:1160
+ jmp short 0ece9h ; eb 0d ; 0xfecda orgs.asm:1162
+ ; 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:1166
+ jnbe short 0ece6h ; 77 05 ; 0xfecdf orgs.asm:1167
+ call 05db4h ; e8 d0 70 ; 0xfece1 orgs.asm:1168
+ jmp short 0ece9h ; eb 03 ; 0xfece4 orgs.asm:1169
+ call 06203h ; e8 1a 75 ; 0xfece6 orgs.asm:1172
+ ; disGetNextSymbol 0xfece9 LB 0x1317 -> off=0x0 cb=0000000000000004 uValue=00000000000f0ce9 'int13_out'
+int13_out: ; 0xfece9 LB 0x4
+ pop DS ; 1f ; 0xfece9 orgs.asm:1175
+ pop ES ; 07 ; 0xfecea orgs.asm:1176
+ popaw ; 61 ; 0xfeceb orgs.asm:114
+ iret ; cf ; 0xfecec orgs.asm:1178
+ ; disGetNextSymbol 0xfeced LB 0x1313 -> off=0x0 cb=000000000000001e uValue=00000000000f0ced 'detect_parport'
+detect_parport: ; 0xfeced LB 0x1e
+ push dx ; 52 ; 0xfeced orgs.asm:1185
+ inc dx ; 42 ; 0xfecee orgs.asm:1186
+ inc dx ; 42 ; 0xfecef orgs.asm:1187
+ in AL, DX ; ec ; 0xfecf0 orgs.asm:1188
+ and AL, strict byte 0dfh ; 24 df ; 0xfecf1 orgs.asm:1189
+ out DX, AL ; ee ; 0xfecf3 orgs.asm:1190
+ pop dx ; 5a ; 0xfecf4 orgs.asm:1191
+ mov AL, strict byte 0aah ; b0 aa ; 0xfecf5 orgs.asm:1192
+ out DX, AL ; ee ; 0xfecf7 orgs.asm:1193
+ in AL, DX ; ec ; 0xfecf8 orgs.asm:1194
+ cmp AL, strict byte 0aah ; 3c aa ; 0xfecf9 orgs.asm:1195
+ jne short 0ed0ah ; 75 0d ; 0xfecfb orgs.asm:1196
+ push bx ; 53 ; 0xfecfd orgs.asm:1198
+ sal bx, 1 ; d1 e3 ; 0xfecfe orgs.asm:1199
+ mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed00 orgs.asm:1200
+ pop bx ; 5b ; 0xfed04 orgs.asm:1201
+ mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed05 orgs.asm:1202
+ inc bx ; 43 ; 0xfed09 orgs.asm:1203
+ retn ; c3 ; 0xfed0a orgs.asm:1205
+ ; disGetNextSymbol 0xfed0b LB 0x12f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d0b 'detect_serial'
+detect_serial: ; 0xfed0b LB 0x24
+ push dx ; 52 ; 0xfed0b orgs.asm:1212
+ inc dx ; 42 ; 0xfed0c orgs.asm:1213
+ mov AL, strict byte 002h ; b0 02 ; 0xfed0d orgs.asm:1214
+ out DX, AL ; ee ; 0xfed0f orgs.asm:1215
+ in AL, DX ; ec ; 0xfed10 orgs.asm:1216
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed11 orgs.asm:1217
+ jne short 0ed2dh ; 75 18 ; 0xfed13 orgs.asm:1218
+ inc dx ; 42 ; 0xfed15 orgs.asm:1220
+ in AL, DX ; ec ; 0xfed16 orgs.asm:1221
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed17 orgs.asm:1222
+ jne short 0ed2dh ; 75 12 ; 0xfed19 orgs.asm:1223
+ dec dx ; 4a ; 0xfed1b orgs.asm:1225
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfed1c orgs.asm:1226
+ pop dx ; 5a ; 0xfed1e orgs.asm:1227
+ push bx ; 53 ; 0xfed1f orgs.asm:1228
+ sal bx, 1 ; d1 e3 ; 0xfed20 orgs.asm:1229
+ mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed22 orgs.asm:1230
+ pop bx ; 5b ; 0xfed26 orgs.asm:1231
+ mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed27 orgs.asm:1232
+ inc bx ; 43 ; 0xfed2b orgs.asm:1233
+ retn ; c3 ; 0xfed2c orgs.asm:1234
+ pop dx ; 5a ; 0xfed2d orgs.asm:1237
+ retn ; c3 ; 0xfed2e orgs.asm:1238
+ ; 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:1248
+ mov ds, ax ; 8e d8 ; 0xfed31 orgs.asm:1249
+ mov AL, strict byte 000h ; b0 00 ; 0xfed33 orgs.asm:1253
+ mov byte [0043eh], AL ; a2 3e 04 ; 0xfed35 orgs.asm:1254
+ mov byte [0043fh], AL ; a2 3f 04 ; 0xfed38 orgs.asm:1255
+ mov byte [00440h], AL ; a2 40 04 ; 0xfed3b orgs.asm:1256
+ mov byte [00441h], AL ; a2 41 04 ; 0xfed3e orgs.asm:1257
+ mov byte [00442h], AL ; a2 42 04 ; 0xfed41 orgs.asm:1258
+ mov byte [00443h], AL ; a2 43 04 ; 0xfed44 orgs.asm:1259
+ mov byte [00444h], AL ; a2 44 04 ; 0xfed47 orgs.asm:1260
+ mov byte [00445h], AL ; a2 45 04 ; 0xfed4a orgs.asm:1261
+ mov byte [00446h], AL ; a2 46 04 ; 0xfed4d orgs.asm:1262
+ mov byte [00447h], AL ; a2 47 04 ; 0xfed50 orgs.asm:1263
+ mov byte [00448h], AL ; a2 48 04 ; 0xfed53 orgs.asm:1264
+ mov byte [0048bh], AL ; a2 8b 04 ; 0xfed56 orgs.asm:1266
+ mov AL, strict byte 010h ; b0 10 ; 0xfed59 orgs.asm:1268
+ out strict byte 070h, AL ; e6 70 ; 0xfed5b orgs.asm:1269
+ in AL, strict byte 071h ; e4 71 ; 0xfed5d orgs.asm:1270
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfed5f orgs.asm:1271
+ shr al, 004h ; c0 e8 04 ; 0xfed61 orgs.asm:169
+ je short 0ed6ah ; 74 04 ; 0xfed64 orgs.asm:1276
+ mov BL, strict byte 007h ; b3 07 ; 0xfed66 orgs.asm:1277
+ jmp short 0ed6ch ; eb 02 ; 0xfed68 orgs.asm:1278
+ mov BL, strict byte 000h ; b3 00 ; 0xfed6a orgs.asm:1281
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfed6c orgs.asm:1284
+ and AL, strict byte 00fh ; 24 0f ; 0xfed6e orgs.asm:1285
+ je short 0ed75h ; 74 03 ; 0xfed70 orgs.asm:1286
+ or bl, 070h ; 80 cb 70 ; 0xfed72 orgs.asm:1287
+ mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed75 orgs.asm:1289
+ mov AL, strict byte 000h ; b0 00 ; 0xfed79 orgs.asm:1292
+ mov byte [00490h], AL ; a2 90 04 ; 0xfed7b orgs.asm:1293
+ mov byte [00491h], AL ; a2 91 04 ; 0xfed7e orgs.asm:1294
+ mov byte [00492h], AL ; a2 92 04 ; 0xfed81 orgs.asm:1295
+ mov byte [00493h], AL ; a2 93 04 ; 0xfed84 orgs.asm:1296
+ mov byte [00494h], AL ; a2 94 04 ; 0xfed87 orgs.asm:1297
+ mov byte [00495h], AL ; a2 95 04 ; 0xfed8a orgs.asm:1298
+ mov AL, strict byte 002h ; b0 02 ; 0xfed8d orgs.asm:1300
+ out strict byte 00ah, AL ; e6 0a ; 0xfed8f orgs.asm:1301
+ mov ax, 0efc7h ; b8 c7 ef ; 0xfed91 orgs.asm:95
+ mov word [00078h], ax ; a3 78 00 ; 0xfed94 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfed97 orgs.asm:97
+ mov word [0007ah], ax ; a3 7a 00 ; 0xfed9a orgs.asm:98
+ mov ax, 0ec59h ; b8 59 ec ; 0xfed9d orgs.asm:95
+ mov word [00100h], ax ; a3 00 01 ; 0xfeda0 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfeda3 orgs.asm:97
+ mov word [00102h], ax ; a3 02 01 ; 0xfeda6 orgs.asm:98
+ mov ax, 0ef57h ; b8 57 ef ; 0xfeda9 orgs.asm:95
+ mov word [00038h], ax ; a3 38 00 ; 0xfedac orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedaf orgs.asm:97
+ mov word [0003ah], ax ; a3 3a 00 ; 0xfedb2 orgs.asm:98
+ retn ; c3 ; 0xfedb5 orgs.asm:1307
+ ; 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:1317
+ shr al, 004h ; c0 e8 04 ; 0xfedb9 orgs.asm:1318
+ aad 00ah ; d5 0a ; 0xfedbc orgs.asm:1326
+ retn ; c3 ; 0xfedbe orgs.asm:1327
+ ; 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:1384
+ mov AL, strict byte 000h ; b0 00 ; 0xfedc2 orgs.asm:1385
+ out strict byte 070h, AL ; e6 70 ; 0xfedc4 orgs.asm:1386
+ in AL, strict byte 071h ; e4 71 ; 0xfedc6 orgs.asm:1387
+ call 0edb6h ; e8 eb ff ; 0xfedc8 orgs.asm:1388
+ mov edx, strict dword 00115cf2bh ; 66 ba 2b cf 15 01 ; 0xfedcb orgs.asm:1389
+ mul edx ; 66 f7 e2 ; 0xfedd1 orgs.asm:1390
+ mov ebx, strict dword 0000f4240h ; 66 bb 40 42 0f 00 ; 0xfedd4 orgs.asm:1391
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfedda orgs.asm:1392
+ div ebx ; 66 f7 f3 ; 0xfeddd orgs.asm:1393
+ db 066h, 08bh, 0c8h
+ ; mov ecx, eax ; 66 8b c8 ; 0xfede0 orgs.asm:1394
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xfede3 orgs.asm:1397
+ mov AL, strict byte 002h ; b0 02 ; 0xfede6 orgs.asm:1398
+ out strict byte 070h, AL ; e6 70 ; 0xfede8 orgs.asm:1399
+ in AL, strict byte 071h ; e4 71 ; 0xfedea orgs.asm:1400
+ call 0edb6h ; e8 c7 ff ; 0xfedec orgs.asm:1401
+ mov edx, strict dword 000a6af80h ; 66 ba 80 af a6 00 ; 0xfedef orgs.asm:1402
+ mul edx ; 66 f7 e2 ; 0xfedf5 orgs.asm:1403
+ mov ebx, strict dword 000002710h ; 66 bb 10 27 00 00 ; 0xfedf8 orgs.asm:1404
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfedfe orgs.asm:1405
+ div ebx ; 66 f7 f3 ; 0xfee01 orgs.asm:1406
+ db 066h, 003h, 0c8h
+ ; add ecx, eax ; 66 03 c8 ; 0xfee04 orgs.asm:1407
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xfee07 orgs.asm:1410
+ mov AL, strict byte 004h ; b0 04 ; 0xfee0a orgs.asm:1411
+ out strict byte 070h, AL ; e6 70 ; 0xfee0c orgs.asm:1412
+ in AL, strict byte 071h ; e4 71 ; 0xfee0e orgs.asm:1413
+ call 0edb6h ; e8 a3 ff ; 0xfee10 orgs.asm:1414
+ mov edx, strict dword 003e81d03h ; 66 ba 03 1d e8 03 ; 0xfee13 orgs.asm:1415
+ mul edx ; 66 f7 e2 ; 0xfee19 orgs.asm:1416
+ mov ebx, strict dword 0000003e8h ; 66 bb e8 03 00 00 ; 0xfee1c orgs.asm:1417
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfee22 orgs.asm:1418
+ div ebx ; 66 f7 f3 ; 0xfee25 orgs.asm:1419
+ db 066h, 003h, 0c8h
+ ; add ecx, eax ; 66 03 c8 ; 0xfee28 orgs.asm:1420
+ mov dword [0046ch], ecx ; 66 89 0e 6c 04 ; 0xfee2b orgs.asm:1422
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfee30 orgs.asm:1423
+ mov byte [00470h], AL ; a2 70 04 ; 0xfee32 orgs.asm:1424
+ retn ; c3 ; 0xfee35 orgs.asm:1427
+ ; 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:1438
+ push dx ; 52 ; 0xfef58 orgs.asm:1439
+ mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1440
+ in AL, DX ; ec ; 0xfef5c orgs.asm:1441
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1442
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1443
+ je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1444
+ mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1445
+ mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1446
+ out DX, AL ; ee ; 0xfef68 orgs.asm:1447
+ mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1449
+ in AL, DX ; ec ; 0xfef6c orgs.asm:1450
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1451
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1452
+ jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1453
+ mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1456
+ in AL, DX ; ec ; 0xfef76 orgs.asm:1457
+ mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1458
+ in AL, DX ; ec ; 0xfef7a orgs.asm:1459
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1460
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1461
+ je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1462
+ push DS ; 1e ; 0xfef81 orgs.asm:1465
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1466
+ mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1467
+ call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1468
+ or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1470
+ pop DS ; 1f ; 0xfef8e orgs.asm:1471
+ pop dx ; 5a ; 0xfef8f orgs.asm:1472
+ pop ax ; 58 ; 0xfef90 orgs.asm:1473
+ iret ; cf ; 0xfef91 orgs.asm:1474
+ ; 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:1501
+ ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000000d uValue=00000000000f0fd4 'int17_handler'
+int17_handler: ; 0xfefd4 LB 0xd
+ push DS ; 1e ; 0xfefd4 orgs.asm:1504
+ push ES ; 06 ; 0xfefd5 orgs.asm:1505
+ pushaw ; 60 ; 0xfefd6 orgs.asm:97
+ push CS ; 0e ; 0xfefd7 orgs.asm:104
+ pop DS ; 1f ; 0xfefd8 orgs.asm:105
+ cld ; fc ; 0xfefd9 orgs.asm:106
+ call 077f2h ; e8 15 88 ; 0xfefda orgs.asm:1508
+ popaw ; 61 ; 0xfefdd orgs.asm:114
+ pop ES ; 07 ; 0xfefde orgs.asm:1510
+ pop DS ; 1f ; 0xfefdf orgs.asm:1511
+ iret ; cf ; 0xfefe0 orgs.asm:1512
+ ; 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:1547
+ ; 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:1556
+ ; 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:1565
+ ; disGetNextSymbol 0xff066 LB 0xf9a -> off=0x0 cb=000000000000003e uValue=00000000000f1066 'biosorg_check_before_or_at_0F0A2h'
+biosorg_check_before_or_at_0F0A2h: ; 0xff066 LB 0x3e
+ times 0x3c db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff0a4 LB 0xf5c -> off=0x0 cb=0000000000000008 uValue=00000000000f10a4 'biosorg_check_at_0F0A4h'
+biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0x8
+ push CS ; 0e ; 0xff0a4 orgs.asm:104
+ pop DS ; 1f ; 0xff0a5 orgs.asm:105
+ cld ; fc ; 0xff0a6 orgs.asm:106
+ call 0181dh ; e8 73 27 ; 0xff0a7 orgs.asm:1580
+ hlt ; f4 ; 0xff0aa orgs.asm:1582
+ iret ; cf ; 0xff0ab orgs.asm:1583
+ ; disGetNextSymbol 0xff0ac LB 0xf54 -> off=0x0 cb=000000000000008f uValue=00000000000f10ac 'int19_relocated'
+int19_relocated: ; 0xff0ac LB 0x8f
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0ac orgs.asm:1594
+ mov ax, word [bp+002h] ; 8b 46 02 ; 0xff0ae orgs.asm:1595
+ cmp ax, 0f000h ; 3d 00 f0 ; 0xff0b1 orgs.asm:1596
+ je short 0f0c3h ; 74 0d ; 0xff0b4 orgs.asm:1597
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff0b6 orgs.asm:1599
+ mov ds, ax ; 8e d8 ; 0xff0b8 orgs.asm:1600
+ mov ax, 01234h ; b8 34 12 ; 0xff0ba orgs.asm:1601
+ mov word [001d8h], ax ; a3 d8 01 ; 0xff0bd orgs.asm:1602
+ jmp near 0e05bh ; e9 98 ef ; 0xff0c0 orgs.asm:1603
+ push CS ; 0e ; 0xff0c3 orgs.asm:104
+ pop DS ; 1f ; 0xff0c4 orgs.asm:105
+ cld ; fc ; 0xff0c5 orgs.asm:106
+ push bp ; 55 ; 0xff0c6 orgs.asm:1610
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0c7 orgs.asm:1611
+ mov ax, strict word 00001h ; b8 01 00 ; 0xff0c9 orgs.asm:1614
+ push ax ; 50 ; 0xff0cc orgs.asm:1615
+ call 04d55h ; e8 85 5c ; 0xff0cd orgs.asm:1616
+ inc sp ; 44 ; 0xff0d0 orgs.asm:1617
+ inc sp ; 44 ; 0xff0d1 orgs.asm:1618
+ test ax, ax ; 85 c0 ; 0xff0d2 orgs.asm:1619
+ jne short 0f0fdh ; 75 27 ; 0xff0d4 orgs.asm:1620
+ mov ax, strict word 00002h ; b8 02 00 ; 0xff0d6 orgs.asm:1623
+ push ax ; 50 ; 0xff0d9 orgs.asm:1624
+ call 04d55h ; e8 78 5c ; 0xff0da orgs.asm:1625
+ inc sp ; 44 ; 0xff0dd orgs.asm:1626
+ inc sp ; 44 ; 0xff0de orgs.asm:1627
+ test ax, ax ; 85 c0 ; 0xff0df orgs.asm:1628
+ jne short 0f0fdh ; 75 1a ; 0xff0e1 orgs.asm:1629
+ mov ax, strict word 00003h ; b8 03 00 ; 0xff0e3 orgs.asm:1632
+ push ax ; 50 ; 0xff0e6 orgs.asm:1633
+ call 04d55h ; e8 6b 5c ; 0xff0e7 orgs.asm:1634
+ inc sp ; 44 ; 0xff0ea orgs.asm:1635
+ inc sp ; 44 ; 0xff0eb orgs.asm:1636
+ test ax, ax ; 85 c0 ; 0xff0ec orgs.asm:1637
+ jne short 0f0fdh ; 75 0d ; 0xff0ee orgs.asm:1638
+ mov ax, strict word 00004h ; b8 04 00 ; 0xff0f0 orgs.asm:1641
+ push ax ; 50 ; 0xff0f3 orgs.asm:1642
+ call 04d55h ; e8 5e 5c ; 0xff0f4 orgs.asm:1643
+ inc sp ; 44 ; 0xff0f7 orgs.asm:1644
+ inc sp ; 44 ; 0xff0f8 orgs.asm:1645
+ test ax, ax ; 85 c0 ; 0xff0f9 orgs.asm:1646
+ je short 0f0a4h ; 74 a7 ; 0xff0fb orgs.asm:1647
+ sal eax, 004h ; 66 c1 e0 04 ; 0xff0fd orgs.asm:1659
+ mov word [bp+002h], ax ; 89 46 02 ; 0xff101 orgs.asm:1660
+ shr eax, 004h ; 66 c1 e8 04 ; 0xff104 orgs.asm:1662
+ and ax, 0f000h ; 25 00 f0 ; 0xff108 orgs.asm:1665
+ mov word [bp+004h], ax ; 89 46 04 ; 0xff10b orgs.asm:1666
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff10e orgs.asm:1667
+ mov ds, ax ; 8e d8 ; 0xff110 orgs.asm:1668
+ mov es, ax ; 8e c0 ; 0xff112 orgs.asm:1669
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff114 orgs.asm:1670
+ mov ax, 0aa55h ; b8 55 aa ; 0xff117 orgs.asm:1671
+ pop bp ; 5d ; 0xff11a orgs.asm:1673
+ iret ; cf ; 0xff11b orgs.asm:1674
+ or cx, word [bp+si] ; 0b 0a ; 0xff11c
+ or word [bp+di], cx ; 09 0b ; 0xff11e
+ push eax ; 66 50 ; 0xff120 orgs.asm:88
+ mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff122 orgs.asm:89
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xff128 orgs.asm:90
+ sal eax, 008h ; 66 c1 e0 08 ; 0xff12a orgs.asm:91
+ and dl, 0fch ; 80 e2 fc ; 0xff12e orgs.asm:92
+ db 00ah, 0c2h
+ ; or al, dl ; 0a c2 ; 0xff131 orgs.asm:93
+ mov dx, 00cf8h ; ba f8 0c ; 0xff133 orgs.asm:94
+ out DX, eax ; 66 ef ; 0xff136 orgs.asm:95
+ pop eax ; 66 58 ; 0xff138 orgs.asm:96
+ retn ; c3 ; 0xff13a orgs.asm:97
+ ; disGetNextSymbol 0xff13b LB 0xec5 -> off=0x0 cb=0000000000000012 uValue=00000000000f113b 'pcibios_init_iomem_bases'
+pcibios_init_iomem_bases: ; 0xff13b LB 0x12
+ push bp ; 55 ; 0xff13b orgs.asm:100
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff13c orgs.asm:101
+ mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff13e orgs.asm:103
+ mov dx, 00410h ; ba 10 04 ; 0xff144 orgs.asm:104
+ out DX, eax ; 66 ef ; 0xff147 orgs.asm:105
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xff149 orgs.asm:218
+ pop bp ; 5d ; 0xff14b orgs.asm:219
+ retn ; c3 ; 0xff14c orgs.asm:220
+ ; disGetNextSymbol 0xff14d LB 0xeb3 -> off=0x0 cb=000000000000000c uValue=00000000000f114d 'pcibios_init_set_elcr'
+pcibios_init_set_elcr: ; 0xff14d LB 0xc
+ push ax ; 50 ; 0xff14d orgs.asm:223
+ push cx ; 51 ; 0xff14e orgs.asm:224
+ mov dx, 004d0h ; ba d0 04 ; 0xff14f orgs.asm:225
+ test AL, strict byte 008h ; a8 08 ; 0xff152 orgs.asm:226
+ je short 0f159h ; 74 03 ; 0xff154 orgs.asm:227
+ inc dx ; 42 ; 0xff156 orgs.asm:229
+ and AL, strict byte 007h ; 24 07 ; 0xff157 orgs.asm:230
+ ; disGetNextSymbol 0xff159 LB 0xea7 -> off=0x0 cb=000000000000000d uValue=00000000000f1159 'is_master_pic'
+is_master_pic: ; 0xff159 LB 0xd
+ db 08ah, 0c8h
+ ; mov cl, al ; 8a c8 ; 0xff159 orgs.asm:232
+ mov BL, strict byte 001h ; b3 01 ; 0xff15b orgs.asm:233
+ sal bl, CL ; d2 e3 ; 0xff15d orgs.asm:234
+ in AL, DX ; ec ; 0xff15f orgs.asm:235
+ db 00ah, 0c3h
+ ; or al, bl ; 0a c3 ; 0xff160 orgs.asm:236
+ out DX, AL ; ee ; 0xff162 orgs.asm:237
+ pop cx ; 59 ; 0xff163 orgs.asm:238
+ pop ax ; 58 ; 0xff164 orgs.asm:239
+ retn ; c3 ; 0xff165 orgs.asm:240
+ ; disGetNextSymbol 0xff166 LB 0xe9a -> off=0x0 cb=000000000000002a uValue=00000000000f1166 'pcibios_init_irqs'
+pcibios_init_irqs: ; 0xff166 LB 0x2a
+ push DS ; 1e ; 0xff166 orgs.asm:243
+ push bp ; 55 ; 0xff167 orgs.asm:244
+ mov ax, 0f000h ; b8 00 f0 ; 0xff168 orgs.asm:245
+ mov ds, ax ; 8e d8 ; 0xff16b orgs.asm:246
+ pop bp ; 5d ; 0xff16d orgs.asm:353
+ pop DS ; 1f ; 0xff16e orgs.asm:354
+ retn ; c3 ; 0xff16f orgs.asm:355
+ and AL, strict byte 050h ; 24 50 ; 0xff170
+ dec cx ; 49 ; 0xff172
+ push dx ; 52 ; 0xff173
+ add byte [bx+di], al ; 00 01 ; 0xff174
+ add byte [bp+si], al ; 00 02 ; 0xff176
+ add byte [bx+si], cl ; 00 08 ; 0xff178
+ add byte [bx+si], al ; 00 00 ; 0xff17a
+ xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff17c
+ times 0xf db 0
+ db 031h
+ ; disGetNextSymbol 0xff190 LB 0xe70 -> off=0x0 cb=00000000000001e0 uValue=00000000000f1190 '_pci_routing_table'
+_pci_routing_table: ; 0xff190 LB 0x1e0
+ db 000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h
+ db 000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h
+ db 000h, 018h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 002h, 000h
+ db 000h, 020h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 003h, 000h
+ db 000h, 028h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 004h, 000h
+ db 000h, 030h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 005h, 000h
+ db 000h, 038h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 006h, 000h
+ db 000h, 040h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 007h, 000h
+ db 000h, 048h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 008h, 000h
+ db 000h, 050h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 009h, 000h
+ db 000h, 058h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00ah, 000h
+ db 000h, 060h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00bh, 000h
+ db 000h, 068h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 00ch, 000h
+ db 000h, 070h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 00dh, 000h
+ db 000h, 078h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00eh, 000h
+ db 000h, 080h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00fh, 000h
+ db 000h, 088h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 010h, 000h
+ db 000h, 090h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 011h, 000h
+ db 000h, 098h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 012h, 000h
+ db 000h, 0a0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 013h, 000h
+ db 000h, 0a8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 014h, 000h
+ db 000h, 0b0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 015h, 000h
+ db 000h, 0b8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 016h, 000h
+ db 000h, 0c0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 017h, 000h
+ db 000h, 0c8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 018h, 000h
+ db 000h, 0d0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 019h, 000h
+ db 000h, 0d8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 01ah, 000h
+ db 000h, 0e0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 01bh, 000h
+ db 000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h
+ db 000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h
+ ; disGetNextSymbol 0xff370 LB 0xc90 -> off=0x0 cb=0000000000000002 uValue=00000000000f1370 '_pci_routing_table_size'
+_pci_routing_table_size: ; 0xff370 LB 0x2
+ loopne 0f373h ; e0 01 ; 0xff370
+ ; disGetNextSymbol 0xff372 LB 0xc8e -> off=0x0 cb=00000000000004cf uValue=00000000000f1372 'biosorg_check_before_or_at_0F83Fh'
+biosorg_check_before_or_at_0F83Fh: ; 0xff372 LB 0x4cf
+ times 0x4cd db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff841 LB 0x7bf -> off=0x0 cb=000000000000000c uValue=00000000000f1841 'int12_handler'
+int12_handler: ; 0xff841 LB 0xc
+ sti ; fb ; 0xff841 orgs.asm:1688
+ push DS ; 1e ; 0xff842 orgs.asm:1689
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1690
+ mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1691
+ mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1692
+ pop DS ; 1f ; 0xff84b orgs.asm:1693
+ iret ; cf ; 0xff84c orgs.asm:1694
+ ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler'
+int11_handler: ; 0xff84d LB 0xc
+ sti ; fb ; 0xff84d orgs.asm:1703
+ push DS ; 1e ; 0xff84e orgs.asm:1704
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1705
+ mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1706
+ mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1707
+ pop DS ; 1f ; 0xff857 orgs.asm:1708
+ iret ; cf ; 0xff858 orgs.asm:1709
+ ; 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:1719
+ jne short 0f86bh ; 75 0d ; 0xff85c orgs.asm:1720
+ pushaw ; 60 ; 0xff85e orgs.asm:1725
+ push ES ; 06 ; 0xff85f orgs.asm:1726
+ push DS ; 1e ; 0xff860 orgs.asm:1727
+ push CS ; 0e ; 0xff861 orgs.asm:104
+ pop DS ; 1f ; 0xff862 orgs.asm:105
+ cld ; fc ; 0xff863 orgs.asm:106
+ call 06d7fh ; e8 18 75 ; 0xff864 orgs.asm:1729
+ pop DS ; 1f ; 0xff867 orgs.asm:1730
+ pop ES ; 07 ; 0xff868 orgs.asm:1731
+ popaw ; 61 ; 0xff869 orgs.asm:1732
+ iret ; cf ; 0xff86a orgs.asm:1733
+ pushfw ; 9c ; 0xff86b orgs.asm:1738
+ push DS ; 1e ; 0xff86c orgs.asm:1739
+ push ES ; 06 ; 0xff86d orgs.asm:1740
+ push CS ; 0e ; 0xff86e orgs.asm:104
+ pop DS ; 1f ; 0xff86f orgs.asm:105
+ cld ; fc ; 0xff870 orgs.asm:106
+ cmp ah, 0e8h ; 80 fc e8 ; 0xff871 orgs.asm:1745
+ je short 0f899h ; 74 23 ; 0xff874 orgs.asm:1746
+ cmp ah, 0d0h ; 80 fc d0 ; 0xff876 orgs.asm:1747
+ je short 0f899h ; 74 1e ; 0xff879 orgs.asm:1748
+ pushaw ; 60 ; 0xff87b orgs.asm:97
+ cmp ah, 053h ; 80 fc 53 ; 0xff87c orgs.asm:1751
+ je short 0f88fh ; 74 0e ; 0xff87f orgs.asm:1752
+ cmp ah, 0c2h ; 80 fc c2 ; 0xff881 orgs.asm:1753
+ je short 0f894h ; 74 0e ; 0xff884 orgs.asm:1754
+ call 0669ch ; e8 13 6e ; 0xff886 orgs.asm:1756
+ popaw ; 61 ; 0xff889 orgs.asm:114
+ pop ES ; 07 ; 0xff88a orgs.asm:1762
+ pop DS ; 1f ; 0xff88b orgs.asm:1763
+ popfw ; 9d ; 0xff88c orgs.asm:1764
+ jmp short 0f8a2h ; eb 13 ; 0xff88d orgs.asm:1765
+ call 0abfah ; e8 68 b3 ; 0xff88f orgs.asm:1768
+ jmp short 0f889h ; eb f5 ; 0xff892 orgs.asm:1769
+ ; disGetNextSymbol 0xff894 LB 0x76c -> off=0x0 cb=0000000000000005 uValue=00000000000f1894 'int15_handler_mouse'
+int15_handler_mouse: ; 0xff894 LB 0x5
+ call 07482h ; e8 eb 7b ; 0xff894 orgs.asm:1772
+ jmp short 0f889h ; eb f0 ; 0xff897 orgs.asm:1773
+ ; disGetNextSymbol 0xff899 LB 0x767 -> off=0x0 cb=0000000000000009 uValue=00000000000f1899 'int15_handler32'
+int15_handler32: ; 0xff899 LB 0x9
+ pushad ; 66 60 ; 0xff899 orgs.asm:1779
+ call 069feh ; e8 60 71 ; 0xff89b orgs.asm:1780
+ popad ; 66 61 ; 0xff89e orgs.asm:1781
+ jmp short 0f88ah ; eb e8 ; 0xff8a0 orgs.asm:1783
+ ; 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:1790
+ push bp ; 55 ; 0xff8a4 orgs.asm:1791
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff8a5 orgs.asm:1792
+ and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff8a7 orgs.asm:1793
+ or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff8ab orgs.asm:1794
+ pop bp ; 5d ; 0xff8b0 orgs.asm:1795
+ iret ; cf ; 0xff8b1 orgs.asm:1796
+ push bp ; 55 ; 0xff8b2 orgs.asm:1798
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff8b3 orgs.asm:1799
+ or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff8b5 orgs.asm:1800
+ pop bp ; 5d ; 0xff8ba orgs.asm:1801
+ iret ; cf ; 0xff8bb orgs.asm:1802
+ ; disGetNextSymbol 0xff8bc LB 0x744 -> off=0x0 cb=000000000000002b uValue=00000000000f18bc 'int74_handler'
+int74_handler: ; 0xff8bc LB 0x2b
+ sti ; fb ; 0xff8bc orgs.asm:1809
+ pushaw ; 60 ; 0xff8bd orgs.asm:97
+ push ES ; 06 ; 0xff8be orgs.asm:1811
+ push DS ; 1e ; 0xff8bf orgs.asm:1812
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8c0 orgs.asm:1813
+ push ax ; 50 ; 0xff8c2 orgs.asm:1814
+ push ax ; 50 ; 0xff8c3 orgs.asm:1815
+ push ax ; 50 ; 0xff8c4 orgs.asm:1816
+ push ax ; 50 ; 0xff8c5 orgs.asm:1817
+ push ax ; 50 ; 0xff8c6 orgs.asm:1818
+ push CS ; 0e ; 0xff8c7 orgs.asm:104
+ pop DS ; 1f ; 0xff8c8 orgs.asm:105
+ cld ; fc ; 0xff8c9 orgs.asm:106
+ call 073deh ; e8 11 7b ; 0xff8ca orgs.asm:1820
+ pop cx ; 59 ; 0xff8cd orgs.asm:1821
+ jcxz 0f8dch ; e3 0c ; 0xff8ce orgs.asm:1822
+ push strict byte 00000h ; 6a 00 ; 0xff8d0 orgs.asm:1826
+ pop DS ; 1f ; 0xff8d2 orgs.asm:1831
+ push word [0040eh] ; ff 36 0e 04 ; 0xff8d3 orgs.asm:1832
+ pop DS ; 1f ; 0xff8d7 orgs.asm:1833
+ call far [word 00022h] ; ff 1e 22 00 ; 0xff8d8 orgs.asm:1834
+ cli ; fa ; 0xff8dc orgs.asm:1836
+ call 0e030h ; e8 50 e7 ; 0xff8dd orgs.asm:1837
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xff8e0 orgs.asm:1838
+ pop DS ; 1f ; 0xff8e3 orgs.asm:1839
+ pop ES ; 07 ; 0xff8e4 orgs.asm:1840
+ popaw ; 61 ; 0xff8e5 orgs.asm:114
+ iret ; cf ; 0xff8e6 orgs.asm:1842
+ ; disGetNextSymbol 0xff8e7 LB 0x719 -> off=0x0 cb=0000000000000012 uValue=00000000000f18e7 'int76_handler'
+int76_handler: ; 0xff8e7 LB 0x12
+ push ax ; 50 ; 0xff8e7 orgs.asm:1849
+ push DS ; 1e ; 0xff8e8 orgs.asm:1850
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff8e9 orgs.asm:1851
+ mov ds, ax ; 8e d8 ; 0xff8ec orgs.asm:1852
+ mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8ee orgs.asm:1853
+ call 0e030h ; e8 3a e7 ; 0xff8f3 orgs.asm:1854
+ pop DS ; 1f ; 0xff8f6 orgs.asm:1855
+ pop ax ; 58 ; 0xff8f7 orgs.asm:1856
+ iret ; cf ; 0xff8f8 orgs.asm:1857
+ ; disGetNextSymbol 0xff8f9 LB 0x707 -> off=0x0 cb=000000000000000d uValue=00000000000f18f9 'int70_handler'
+int70_handler: ; 0xff8f9 LB 0xd
+ push ES ; 06 ; 0xff8f9 orgs.asm:1866
+ push DS ; 1e ; 0xff8fa orgs.asm:1867
+ pushaw ; 60 ; 0xff8fb orgs.asm:97
+ push CS ; 0e ; 0xff8fc orgs.asm:104
+ pop DS ; 1f ; 0xff8fd orgs.asm:105
+ cld ; fc ; 0xff8fe orgs.asm:106
+ call 070b3h ; e8 b1 77 ; 0xff8ff orgs.asm:1870
+ popaw ; 61 ; 0xff902 orgs.asm:114
+ pop DS ; 1f ; 0xff903 orgs.asm:1872
+ pop ES ; 07 ; 0xff904 orgs.asm:1873
+ iret ; cf ; 0xff905 orgs.asm:1874
+ ; 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:1911
+ jne short 0fe82h ; 75 0f ; 0xffe71 orgs.asm:1912
+ push ES ; 06 ; 0xffe73 orgs.asm:1914
+ push DS ; 1e ; 0xffe74 orgs.asm:1915
+ push CS ; 0e ; 0xffe75 orgs.asm:104
+ pop DS ; 1f ; 0xffe76 orgs.asm:105
+ cld ; fc ; 0xffe77 orgs.asm:106
+ pushad ; 66 60 ; 0xffe78 orgs.asm:1918
+ call 0ae12h ; e8 95 af ; 0xffe7a orgs.asm:1919
+ popad ; 66 61 ; 0xffe7d orgs.asm:1920
+ pop DS ; 1f ; 0xffe7f orgs.asm:1922
+ pop ES ; 07 ; 0xffe80 orgs.asm:1923
+ iret ; cf ; 0xffe81 orgs.asm:1924
+ push ES ; 06 ; 0xffe82 orgs.asm:1928
+ push DS ; 1e ; 0xffe83 orgs.asm:1929
+ pushaw ; 60 ; 0xffe84 orgs.asm:97
+ push CS ; 0e ; 0xffe85 orgs.asm:104
+ pop DS ; 1f ; 0xffe86 orgs.asm:105
+ cld ; fc ; 0xffe87 orgs.asm:106
+ call 07154h ; e8 c9 72 ; 0xffe88 orgs.asm:1933
+ popaw ; 61 ; 0xffe8b orgs.asm:114
+ pop DS ; 1f ; 0xffe8c orgs.asm:1935
+ pop ES ; 07 ; 0xffe8d orgs.asm:1936
+ iret ; cf ; 0xffe8e orgs.asm:1937
+ ; 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:1947
+ push eax ; 66 50 ; 0xffea6 orgs.asm:1948
+ push DS ; 1e ; 0xffea8 orgs.asm:1953
+ push dx ; 52 ; 0xffea9 orgs.asm:1954
+ mov ax, strict word 00040h ; b8 40 00 ; 0xffeaa orgs.asm:1955
+ mov ds, ax ; 8e d8 ; 0xffead orgs.asm:1956
+ mov eax, dword [0006ch] ; 66 a1 6c 00 ; 0xffeaf orgs.asm:1959
+ inc eax ; 66 40 ; 0xffeb3 orgs.asm:1960
+ cmp eax, strict dword 0001800b0h ; 66 3d b0 00 18 00 ; 0xffeb5 orgs.asm:1972
+ jc short 0fec4h ; 72 07 ; 0xffebb orgs.asm:1973
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xffebd orgs.asm:1982
+ inc byte [word 00070h] ; fe 06 70 00 ; 0xffec0 orgs.asm:1983
+ mov dword [0006ch], eax ; 66 a3 6c 00 ; 0xffec4 orgs.asm:1986
+ mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:1994
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xffecb orgs.asm:1995
+ je short 0feddh ; 74 0e ; 0xffecd orgs.asm:1996
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xffecf orgs.asm:1997
+ mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:1998
+ jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:1999
+ mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:2001
+ in AL, DX ; ec ; 0xffed9 orgs.asm:2002
+ and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:2003
+ out DX, AL ; ee ; 0xffedc orgs.asm:2004
+ int 01ch ; cd 1c ; 0xffedd orgs.asm:2007
+ cli ; fa ; 0xffedf orgs.asm:2009
+ call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2010
+ pop dx ; 5a ; 0xffee3 orgs.asm:2011
+ pop DS ; 1f ; 0xffee4 orgs.asm:2012
+ pop eax ; 66 58 ; 0xffee5 orgs.asm:2014
+ iret ; cf ; 0xffee7 orgs.asm:2019
+ ; 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:2044
+ ; 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:2053
+ 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:2063
+ ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
+ db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0e8h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
new file mode 100644
index 00000000..c69f697b
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
@@ -0,0 +1 @@
+5c3b0795972e3dcc2752edebf04fa270 *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..bf19ff3f
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
@@ -0,0 +1,19902 @@
+; $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-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: bios.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: print.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ata.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ATA disk support.
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppy.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppyt.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Floppy drive tables.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: eltorito.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: boot.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: keyboard.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: disk.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: serial.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: system.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: invop.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Real mode invalid opcode handler.
+;
+;
+;
+; Copyright (C) 2013-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: timepci.c
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ps2mouse.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: parallel.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: logo.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Stuff for drawing the BIOS logo.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: scsi.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; SCSI host adapter driver to boot from SCSI disks
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: ahci.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: virtio.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; VirtIO-SCSI host adapter driver to boot from disks.
+;
+;
+;
+; Copyright (C) 2019-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: apm.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; APM BIOS support. Implements APM version 1.2.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pcibios.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PCI BIOS support.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pciutil.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Utility routines for calling the PCI BIOS.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: vds.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Utility routines for calling the Virtual DMA Services.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: __U4M.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U4D.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8RS.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8LS.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemset.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemcpy.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: pcibio32.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+
+;
+; Source file: apm_pm.asm
+;
+; $Id:
+; Protected-mode APM implementation.
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: orgs.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; ???
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: DoUInt32Div.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: ASMBitLastSetU16.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; BiosCommonCode - ASMBitLastSetU16() - borrowed from IPRT.
+;
+;
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: pci32.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; 32-bit PCI BIOS wrapper.
+;
+;
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+
+
+
+section _DATA progbits vstart=0x0 align=1 ; size=0xc0 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0000 LB 0xc0 -> 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 0x65 -> 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 0x56 -> off=0x0 cb=000000000000000e uValue=00000000000f006a '_pktacc'
+_pktacc: ; 0xf006a LB 0xe
+ db 000h, 000h, 000h, 000h, 000h, 000h, 079h, 02bh, 0deh, 07ch, 0c4h, 08ch, 09dh, 09fh
+ ; disGetNextSymbol 0xf0078 LB 0x48 -> off=0x0 cb=000000000000000e uValue=00000000000f0078 '_softrst'
+_softrst: ; 0xf0078 LB 0xe
+ db 000h, 000h, 000h, 000h, 000h, 000h, 00eh, 02eh, 00eh, 03ch, 00eh, 03ch, 000h, 000h
+ ; disGetNextSymbol 0xf0086 LB 0x3a -> off=0x0 cb=000000000000003a uValue=00000000000f0086 '_dskacc'
+_dskacc: ; 0xf0086 LB 0x3a
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05dh, 02ah, 01eh, 02bh, 000h, 000h, 000h, 000h
+ db 00ch, 07bh, 0f5h, 07bh, 092h, 08bh, 03ch, 08ch, 079h, 09dh, 08ch, 09eh, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h, 032h, 05fh, 000h, 0dah
+ db 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
+
+section CONST progbits vstart=0xc0 align=1 ; size=0xe18 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf00c0 LB 0xe18 -> off=0xe18 cb=0000000000000000 uValue=00000000000f0ed8 'bios_cvs_version_string'
+ db 'NMI Handler called', 00ah, 000h
+ db 'INT18: BOOT FAILURE', 00ah, 000h
+ db '%s', 00ah, 000h, 000h
+ db 'FATAL: ', 000h
+ db 'bios_printf: unknown %ll format', 00ah, 000h
+ db 'bios_printf: unknown format', 00ah, 000h
+ db 'ata-detect: Failed to detect ATA device', 00ah, 000h
+ db 'ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u', 00ah, 000h
+ db 'ata-detect: Failed to detect ATAPI device', 00ah, 000h
+ db ' slave', 000h
+ db 'master', 000h
+ db 'ata%d %s: ', 000h
+ db '%c', 000h
+ db ' ATA-%d Hard-Disk (%lu MBytes)', 00ah, 000h
+ db ' ATAPI-%d CD-ROM/DVD-ROM', 00ah, 000h
+ db ' ATAPI-%d Device', 00ah, 000h
+ db 'ata%d %s: Unknown device', 00ah, 000h
+ db 'ata_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'set_diskette_current_cyl: drive > 1', 00ah, 000h
+ db 'int13_diskette_function', 000h
+ db '%s: drive>1 || head>1 ...', 00ah, 000h
+ db '%s: ctrl not ready', 00ah, 000h
+ db '%s: write error', 00ah, 000h
+ db '%s: bad floppy type', 00ah, 000h
+ db '%s: unsupported AH=%02x', 00ah, 000h, 000h
+ db 'int13_eltorito', 000h
+ db '%s: call with AX=%04x not implemented.', 00ah, 000h
+ db '%s: unsupported AH=%02x', 00ah, 000h
+ db 'int13_cdemu', 000h
+ db '%s: function %02x, emulation not active for DL= %02x', 00ah, 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db '%s: function %02x. Can', 027h, 't use 64bits lba', 00ah, 000h
+ db '%s: function %02x, status %02x !', 00ah, 000h
+ db '%s: function AH=%02x unsupported, returns fail', 00ah, 000h
+ db 'int13_cdrom', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h, 000h
+ db 'Booting from %s...', 00ah, 000h
+ db 'Boot from %s failed', 00ah, 000h
+ db 'Boot from %s %d failed', 00ah, 000h
+ db 'No bootable medium found! System halted.', 00ah, 000h
+ db 'Could not read from the boot medium! System halted.', 00ah, 000h
+ db 'CDROM boot failure code : %04x', 00ah, 000h
+ db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 000h, 000h
+ db 'Keyboard error:%u', 00ah, 000h
+ db 'KBD: int09 handler: AL=0', 00ah, 000h
+ db 'KBD: int09h_handler(): unknown scancode read: 0x%02x!', 00ah, 000h
+ db 'KBD: int09h_handler(): scancode & asciicode are zero?', 00ah, 000h
+ db 'KBD: int16h: out of keyboard input', 00ah, 000h
+ db 'KBD: unsupported int 16h function %02x', 00ah, 000h
+ db 'AX=%04x BX=%04x CX=%04x DX=%04x ', 00ah, 000h, 000h
+ db 'int13_harddisk', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h
+ db '%s: function %02x, count out of range!', 00ah, 000h
+ db '%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!', 00ah
+ db 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db 'format disk track called', 00ah, 000h
+ db '%s: function %02xh unimplemented, returns success', 00ah, 000h
+ db '%s: function %02xh unsupported, returns fail', 00ah, 000h
+ db 'int13_harddisk_ext', 000h
+ db '%s: function %02x. LBA out of range', 00ah, 000h, 000h
+ db 'int15: Func 24h, subfunc %02xh, A20 gate control not supported', 00ah, 000h
+ db '*** int 15h function AH=bf not yet supported!', 00ah, 000h
+ db 'EISA BIOS not present', 00ah, 000h
+ db '*** int 15h function AX=%04x, BX=%04x not yet supported!', 00ah, 000h
+ db 'sendmouse', 000h
+ db 'setkbdcomm', 000h
+ db 'Mouse reset returned %02x (should be ack)', 00ah, 000h
+ db 'Mouse status returned %02x (should be ack)', 00ah, 000h
+ db 'INT 15h C2 AL=6, BH=%02x', 00ah, 000h
+ db 'INT 15h C2 default case entered', 00ah, 000h, 000h
+ db 'Key pressed: %x', 00ah, 000h
+ db 00ah, 00ah, ' AHCI controller:', 000h
+ db 00ah, ' %d) Hard disk', 000h
+ db 00ah, 00ah, ' SCSI controller:', 000h
+ db ' IDE controller:', 000h
+ db 00ah, 00ah, 'AHCI controller:', 00ah, 000h
+ db 00ah, ' %d) ', 000h
+ db 'Secondary ', 000h
+ db 'Primary ', 000h
+ db 'Slave', 000h
+ db 'Master', 000h
+ db 'No hard disks found', 000h
+ db 00ah, 000h
+ db 'Press F12 to select boot device.', 00ah, 000h
+ db 00ah, 'VirtualBox temporary boot device selection', 00ah, 00ah, 'Detected H'
+ db 'ard disks:', 00ah, 00ah, 000h
+ db 00ah, 'Other boot devices:', 00ah, ' f) Floppy', 00ah, ' c) CD-ROM', 00ah
+ db ' l) LAN', 00ah, 00ah, ' b) Continue booting', 00ah, 000h
+ db 'Delaying boot for %d seconds:', 000h
+ db ' %d', 000h, 000h
+ db 'scsi_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'scsi_write_sectors', 000h
+ db 'scsi_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'scsi_enumerate_attached_devices', 000h
+ db '%s: SCSI_INQUIRY failed', 00ah, 000h
+ db '%s: SCSI_READ_CAPACITY failed', 00ah, 000h
+ db 'Disk %d has an unsupported sector size of %u', 00ah, 000h
+ db 'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
+ db 'ahci_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'ahci_write_sectors', 000h
+ db 'ahci_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'virtio_scsi_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'virtio_scsi_write_sectors', 000h
+ db 'virtio_scsi_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'virtio_scsi_detect_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 '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=0xed8 align=1 ; size=0x3fa class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0ed8 LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0ed8 'bios_cvs_version_string'
+bios_cvs_version_string: ; 0xf0ed8 LB 0x12
+ db 'VirtualBox 6.1.19', 000h
+ ; disGetNextSymbol 0xf0eea LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0eea '_bios_prefix_string'
+_bios_prefix_string: ; 0xf0eea LB 0x8
+ db 'BIOS: ', 000h, 000h
+ ; disGetNextSymbol 0xf0ef2 LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0ef2 'isotag'
+isotag: ; 0xf0ef2 LB 0x6
+ db 'CD001', 000h
+ ; disGetNextSymbol 0xf0ef8 LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0ef8 'eltorito'
+eltorito: ; 0xf0ef8 LB 0x18
+ db 'EL TORITO SPECIFICATION', 000h
+ ; disGetNextSymbol 0xf0f10 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0f10 'drivetypes'
+drivetypes: ; 0xf0f10 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 0xf0f38 LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0f38 'scan_to_scanascii'
+scan_to_scanascii: ; 0xf0f38 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 0xf12b2 LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f12b2 'panic_msg_keyb_buffer_full'
+panic_msg_keyb_buffer_full: ; 0xf12b2 LB 0x20
+ db '%s: keyboard input buffer full', 00ah, 000h
+
+ ; Padding 0x32e bytes at 0xf12d2
+ times 814 db 0
+
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x9db8 class=CODE group=AUTO
+ ; disGetNextSymbol 0xf1600 LB 0x9db8 -> off=0x0 cb=000000000000005f uValue=00000000000f0000 'rom_scan'
+rom_scan: ; 0xf1600 LB 0x5f
+ push bp ; 55 ; 0xf1600 post.c:77
+ 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:84
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf160f
+ jnc short 01656h ; 73 42 ; 0xf1612
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf1614 post.c:85
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1619
+ mov es, ax ; 8e c0 ; 0xf161c post.c:87
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf161e
+ cmp word [es:bx], 0aa55h ; 26 81 3f 55 aa ; 0xf1621
+ jne short 0164fh ; 75 27 ; 0xf1626
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1628 post.c:93
+ mov word [bp-010h], strict word 00003h ; c7 46 f0 03 00 ; 0xf162b
+ call far [bp-010h] ; ff 5e f0 ; 0xf1630 post.c:94
+ cli ; fa ; 0xf1633 post.c:95
+ les bx, [bp-00ch] ; c4 5e f4 ; 0xf1634 post.c:99
+ mov al, byte [es:bx+002h] ; 26 8a 47 02 ; 0xf1637
+ add AL, strict byte 003h ; 04 03 ; 0xf163b
+ and AL, strict byte 0fch ; 24 fc ; 0xf163d
+ xor ah, ah ; 30 e4 ; 0xf163f post.c:100
+ cwd ; 99 ; 0xf1641
+ mov CL, strict byte 002h ; b1 02 ; 0xf1642
+ sal dx, CL ; d3 e2 ; 0xf1644
+ db 01bh, 0c2h
+ ; sbb ax, dx ; 1b c2 ; 0xf1646
+ sar ax, CL ; d3 f8 ; 0xf1648
+ add word [bp-012h], ax ; 01 46 ee ; 0xf164a
+ jmp short 0160ch ; eb bd ; 0xf164d post.c:102
+ add word [bp-012h], 00080h ; 81 46 ee 80 00 ; 0xf164f post.c:104
+ jmp short 0160ch ; eb b6 ; 0xf1654 post.c:106
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf1656 post.c:107
+ pop di ; 5f ; 0xf1659
+ pop si ; 5e ; 0xf165a
+ pop cx ; 59 ; 0xf165b
+ pop bx ; 5b ; 0xf165c
+ pop bp ; 5d ; 0xf165d
+ retn ; c3 ; 0xf165e
+ ; disGetNextSymbol 0xf165f LB 0x9d59 -> off=0x0 cb=000000000000001b uValue=00000000000f005f 'inb_cmos'
+inb_cmos: ; 0xf165f LB 0x1b
+ push bp ; 55 ; 0xf165f bios.c:65
+ mov bp, sp ; 89 e5 ; 0xf1660
+ push dx ; 52 ; 0xf1662
+ mov AH, strict byte 070h ; b4 70 ; 0xf1663 bios.c:67
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1665 bios.c:69
+ jc short 0166bh ; 72 02 ; 0xf1667
+ mov AH, strict byte 072h ; b4 72 ; 0xf1669 bios.c:70
+ mov dl, ah ; 88 e2 ; 0xf166b bios.c:71
+ xor dh, dh ; 30 f6 ; 0xf166d
+ out DX, AL ; ee ; 0xf166f
+ inc dx ; 42 ; 0xf1670 bios.c:72
+ in AL, DX ; ec ; 0xf1671
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1672
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1674 bios.c:73
+ pop dx ; 5a ; 0xf1677
+ pop bp ; 5d ; 0xf1678
+ retn ; c3 ; 0xf1679
+ ; disGetNextSymbol 0xf167a LB 0x9d3e -> off=0x0 cb=000000000000001d uValue=00000000000f007a 'outb_cmos'
+outb_cmos: ; 0xf167a LB 0x1d
+ push bp ; 55 ; 0xf167a bios.c:75
+ mov bp, sp ; 89 e5 ; 0xf167b
+ push bx ; 53 ; 0xf167d
+ mov bl, dl ; 88 d3 ; 0xf167e
+ mov AH, strict byte 070h ; b4 70 ; 0xf1680 bios.c:77
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1682 bios.c:79
+ jc short 01688h ; 72 02 ; 0xf1684
+ mov AH, strict byte 072h ; b4 72 ; 0xf1686 bios.c:80
+ mov dl, ah ; 88 e2 ; 0xf1688 bios.c:81
+ xor dh, dh ; 30 f6 ; 0xf168a
+ out DX, AL ; ee ; 0xf168c
+ inc dx ; 42 ; 0xf168d bios.c:82
+ mov al, bl ; 88 d8 ; 0xf168e
+ out DX, AL ; ee ; 0xf1690
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1691 bios.c:83
+ pop bx ; 5b ; 0xf1694
+ pop bp ; 5d ; 0xf1695
+ retn ; c3 ; 0xf1696
+ ; disGetNextSymbol 0xf1697 LB 0x9d21 -> off=0x0 cb=0000000000000061 uValue=00000000000f0097 'dummy_isr_function'
+dummy_isr_function: ; 0xf1697 LB 0x61
+ push bp ; 55 ; 0xf1697 bios.c:85
+ mov bp, sp ; 89 e5 ; 0xf1698
+ push ax ; 50 ; 0xf169a
+ mov CL, strict byte 0ffh ; b1 ff ; 0xf169b bios.c:93
+ mov AL, strict byte 00bh ; b0 0b ; 0xf169d bios.c:95
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf169f
+ out DX, AL ; ee ; 0xf16a2
+ in AL, DX ; ec ; 0xf16a3 bios.c:96
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16a4
+ mov bx, ax ; 89 c3 ; 0xf16a6
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf16a8
+ test al, al ; 84 c0 ; 0xf16ab bios.c:97
+ je short 016e9h ; 74 3a ; 0xf16ad
+ mov AL, strict byte 00bh ; b0 0b ; 0xf16af bios.c:98
+ mov dx, 000a0h ; ba a0 00 ; 0xf16b1
+ out DX, AL ; ee ; 0xf16b4
+ in AL, DX ; ec ; 0xf16b5 bios.c:99
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16b6
+ mov cx, ax ; 89 c1 ; 0xf16b8
+ test al, al ; 84 c0 ; 0xf16ba bios.c:100
+ je short 016d1h ; 74 13 ; 0xf16bc
+ mov dx, 000a1h ; ba a1 00 ; 0xf16be bios.c:101
+ in AL, DX ; ec ; 0xf16c1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16c2
+ mov bl, cl ; 88 cb ; 0xf16c4 bios.c:102
+ or al, bl ; 08 d8 ; 0xf16c6
+ out DX, AL ; ee ; 0xf16c8
+ mov AL, strict byte 020h ; b0 20 ; 0xf16c9 bios.c:103
+ mov dx, 000a0h ; ba a0 00 ; 0xf16cb
+ out DX, AL ; ee ; 0xf16ce
+ jmp short 016e0h ; eb 0f ; 0xf16cf bios.c:104
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf16d1 bios.c:105
+ in AL, DX ; ec ; 0xf16d4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16d5
+ and bl, 0fbh ; 80 e3 fb ; 0xf16d7 bios.c:106
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf16da
+ or al, bl ; 08 d8 ; 0xf16dd bios.c:107
+ out DX, AL ; ee ; 0xf16df
+ mov AL, strict byte 020h ; b0 20 ; 0xf16e0 bios.c:109
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf16e2
+ out DX, AL ; ee ; 0xf16e5
+ mov cl, byte [bp-002h] ; 8a 4e fe ; 0xf16e6 bios.c:110
+ mov bx, strict word 0006bh ; bb 6b 00 ; 0xf16e9 bios.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf16ec
+ mov es, ax ; 8e c0 ; 0xf16ef
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf16f1
+ mov sp, bp ; 89 ec ; 0xf16f4 bios.c:113
+ pop bp ; 5d ; 0xf16f6
+ retn ; c3 ; 0xf16f7
+ ; disGetNextSymbol 0xf16f8 LB 0x9cc0 -> off=0x0 cb=0000000000000015 uValue=00000000000f00f8 'nmi_handler_msg'
+nmi_handler_msg: ; 0xf16f8 LB 0x15
+ push bp ; 55 ; 0xf16f8 bios.c:116
+ mov bp, sp ; 89 e5 ; 0xf16f9
+ mov ax, 000c0h ; b8 c0 00 ; 0xf16fb bios.c:118
+ push ax ; 50 ; 0xf16fe
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf16ff
+ push ax ; 50 ; 0xf1702
+ call 0191ch ; e8 16 02 ; 0xf1703
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1706
+ mov sp, bp ; 89 ec ; 0xf1709 bios.c:119
+ pop bp ; 5d ; 0xf170b
+ retn ; c3 ; 0xf170c
+ ; disGetNextSymbol 0xf170d LB 0x9cab -> off=0x0 cb=0000000000000015 uValue=00000000000f010d 'int18_panic_msg'
+int18_panic_msg: ; 0xf170d LB 0x15
+ push bp ; 55 ; 0xf170d bios.c:121
+ mov bp, sp ; 89 e5 ; 0xf170e
+ mov ax, 000d4h ; b8 d4 00 ; 0xf1710 bios.c:123
+ push ax ; 50 ; 0xf1713
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf1714
+ push ax ; 50 ; 0xf1717
+ call 0191ch ; e8 01 02 ; 0xf1718
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf171b
+ mov sp, bp ; 89 ec ; 0xf171e bios.c:124
+ pop bp ; 5d ; 0xf1720
+ retn ; c3 ; 0xf1721
+ ; disGetNextSymbol 0xf1722 LB 0x9c96 -> off=0x0 cb=0000000000000024 uValue=00000000000f0122 'log_bios_start'
+log_bios_start: ; 0xf1722 LB 0x24
+ push bp ; 55 ; 0xf1722 bios.c:126
+ mov bp, sp ; 89 e5 ; 0xf1723
+ mov bx, 00eeah ; bb ea 0e ; 0xf1725 bios.c:131
+ mov cx, ds ; 8c d9 ; 0xf1728
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf172a
+ call 018d9h ; e8 a9 01 ; 0xf172d
+ mov ax, 00ed8h ; b8 d8 0e ; 0xf1730
+ push ax ; 50 ; 0xf1733
+ mov ax, 000e9h ; b8 e9 00 ; 0xf1734
+ push ax ; 50 ; 0xf1737
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf1738
+ push ax ; 50 ; 0xf173b
+ call 0191ch ; e8 dd 01 ; 0xf173c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf173f
+ mov sp, bp ; 89 ec ; 0xf1742 bios.c:132
+ pop bp ; 5d ; 0xf1744
+ retn ; c3 ; 0xf1745
+ ; disGetNextSymbol 0xf1746 LB 0x9c72 -> off=0x0 cb=0000000000000027 uValue=00000000000f0146 'print_bios_banner'
+print_bios_banner: ; 0xf1746 LB 0x27
+ push bp ; 55 ; 0xf1746 bios.c:151
+ mov bp, sp ; 89 e5 ; 0xf1747
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf1749 bios.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf174c
+ mov es, ax ; 8e c0 ; 0xf174f
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1751
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf1754 bios.c:53
+ cmp ax, 01234h ; 3d 34 12 ; 0xf1759 bios.c:157
+ jne short 01766h ; 75 08 ; 0xf175c
+ mov AL, strict byte 003h ; b0 03 ; 0xf175e bios.c:160
+ mov AH, strict byte 000h ; b4 00 ; 0xf1760
+ int 010h ; cd 10 ; 0xf1762
+ jmp short 01769h ; eb 03 ; 0xf1764 bios.c:161
+ call 07694h ; e8 2b 5f ; 0xf1766 bios.c:164
+ mov sp, bp ; 89 ec ; 0xf1769 bios.c:191
+ pop bp ; 5d ; 0xf176b
+ retn ; c3 ; 0xf176c
+ ; disGetNextSymbol 0xf176d LB 0x9c4b -> off=0x0 cb=000000000000003b uValue=00000000000f016d 'send'
+send: ; 0xf176d LB 0x3b
+ push bp ; 55 ; 0xf176d print.c:72
+ mov bp, sp ; 89 e5 ; 0xf176e
+ push bx ; 53 ; 0xf1770
+ push cx ; 51 ; 0xf1771
+ mov bx, ax ; 89 c3 ; 0xf1772
+ mov cl, dl ; 88 d1 ; 0xf1774
+ test AL, strict byte 008h ; a8 08 ; 0xf1776 print.c:80
+ je short 01780h ; 74 06 ; 0xf1778
+ mov al, dl ; 88 d0 ; 0xf177a print.c:81
+ mov dx, 00403h ; ba 03 04 ; 0xf177c
+ out DX, AL ; ee ; 0xf177f
+ test bl, 004h ; f6 c3 04 ; 0xf1780 print.c:82
+ je short 0178bh ; 74 06 ; 0xf1783
+ mov al, cl ; 88 c8 ; 0xf1785 print.c:83
+ mov dx, 00504h ; ba 04 05 ; 0xf1787
+ out DX, AL ; ee ; 0xf178a
+ test bl, 002h ; f6 c3 02 ; 0xf178b print.c:85
+ je short 017a1h ; 74 11 ; 0xf178e
+ cmp cl, 00ah ; 80 f9 0a ; 0xf1790 print.c:86
+ jne short 0179bh ; 75 06 ; 0xf1793
+ mov AL, strict byte 00dh ; b0 0d ; 0xf1795 print.c:87
+ mov AH, strict byte 00eh ; b4 0e ; 0xf1797
+ int 010h ; cd 10 ; 0xf1799
+ mov al, cl ; 88 c8 ; 0xf179b print.c:88
+ mov AH, strict byte 00eh ; b4 0e ; 0xf179d
+ int 010h ; cd 10 ; 0xf179f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf17a1 print.c:90
+ pop cx ; 59 ; 0xf17a4
+ pop bx ; 5b ; 0xf17a5
+ pop bp ; 5d ; 0xf17a6
+ retn ; c3 ; 0xf17a7
+ ; disGetNextSymbol 0xf17a8 LB 0x9c10 -> off=0x0 cb=0000000000000063 uValue=00000000000f01a8 'put_int'
+put_int: ; 0xf17a8 LB 0x63
+ push bp ; 55 ; 0xf17a8 print.c:92
+ mov bp, sp ; 89 e5 ; 0xf17a9
+ push si ; 56 ; 0xf17ab
+ push di ; 57 ; 0xf17ac
+ push ax ; 50 ; 0xf17ad
+ push ax ; 50 ; 0xf17ae
+ mov si, ax ; 89 c6 ; 0xf17af
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf17b1
+ mov di, bx ; 89 df ; 0xf17b4
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf17b6 print.c:94
+ mov ax, dx ; 89 d0 ; 0xf17b9
+ cwd ; 99 ; 0xf17bb
+ idiv bx ; f7 fb ; 0xf17bc
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf17be
+ test ax, ax ; 85 c0 ; 0xf17c1 print.c:95
+ je short 017d1h ; 74 0c ; 0xf17c3
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf17c5 print.c:96
+ mov dx, ax ; 89 c2 ; 0xf17c8
+ mov ax, si ; 89 f0 ; 0xf17ca
+ call 017a8h ; e8 d9 ff ; 0xf17cc
+ jmp short 017ech ; eb 1b ; 0xf17cf print.c:97
+ dec di ; 4f ; 0xf17d1 print.c:98
+ test di, di ; 85 ff ; 0xf17d2
+ jle short 017e0h ; 7e 0a ; 0xf17d4
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf17d6 print.c:99
+ mov ax, si ; 89 f0 ; 0xf17d9
+ call 0176dh ; e8 8f ff ; 0xf17db
+ jmp short 017d1h ; eb f1 ; 0xf17de
+ test cx, cx ; 85 c9 ; 0xf17e0 print.c:100
+ je short 017ech ; 74 08 ; 0xf17e2
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf17e4 print.c:101
+ mov ax, si ; 89 f0 ; 0xf17e7
+ call 0176dh ; e8 81 ff ; 0xf17e9
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf17ec print.c:103
+ mov BL, strict byte 00ah ; b3 0a ; 0xf17ef
+ mul bl ; f6 e3 ; 0xf17f1
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf17f3
+ sub bl, al ; 28 c3 ; 0xf17f6
+ add bl, 030h ; 80 c3 30 ; 0xf17f8
+ xor bh, bh ; 30 ff ; 0xf17fb
+ mov dx, bx ; 89 da ; 0xf17fd
+ mov ax, si ; 89 f0 ; 0xf17ff
+ call 0176dh ; e8 69 ff ; 0xf1801
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1804 print.c:104
+ pop di ; 5f ; 0xf1807
+ pop si ; 5e ; 0xf1808
+ pop bp ; 5d ; 0xf1809
+ retn ; c3 ; 0xf180a
+ ; disGetNextSymbol 0xf180b LB 0x9bad -> off=0x0 cb=000000000000005e uValue=00000000000f020b 'put_uint'
+put_uint: ; 0xf180b LB 0x5e
+ push bp ; 55 ; 0xf180b print.c:106
+ mov bp, sp ; 89 e5 ; 0xf180c
+ push si ; 56 ; 0xf180e
+ push di ; 57 ; 0xf180f
+ push ax ; 50 ; 0xf1810
+ push ax ; 50 ; 0xf1811
+ mov si, ax ; 89 c6 ; 0xf1812
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf1814
+ mov ax, dx ; 89 d0 ; 0xf1817 print.c:108
+ xor dx, dx ; 31 d2 ; 0xf1819
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf181b
+ div di ; f7 f7 ; 0xf181e
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf1820
+ test ax, ax ; 85 c0 ; 0xf1823 print.c:109
+ je short 01831h ; 74 0a ; 0xf1825
+ dec bx ; 4b ; 0xf1827 print.c:110
+ mov dx, ax ; 89 c2 ; 0xf1828
+ mov ax, si ; 89 f0 ; 0xf182a
+ call 0180bh ; e8 dc ff ; 0xf182c
+ jmp short 0184ch ; eb 1b ; 0xf182f print.c:111
+ dec bx ; 4b ; 0xf1831 print.c:112
+ test bx, bx ; 85 db ; 0xf1832
+ jle short 01840h ; 7e 0a ; 0xf1834
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1836 print.c:113
+ mov ax, si ; 89 f0 ; 0xf1839
+ call 0176dh ; e8 2f ff ; 0xf183b
+ jmp short 01831h ; eb f1 ; 0xf183e
+ test cx, cx ; 85 c9 ; 0xf1840 print.c:114
+ je short 0184ch ; 74 08 ; 0xf1842
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1844 print.c:115
+ mov ax, si ; 89 f0 ; 0xf1847
+ call 0176dh ; e8 21 ff ; 0xf1849
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf184c print.c:117
+ mov DL, strict byte 00ah ; b2 0a ; 0xf184f
+ mul dl ; f6 e2 ; 0xf1851
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1853
+ sub dl, al ; 28 c2 ; 0xf1856
+ add dl, 030h ; 80 c2 30 ; 0xf1858
+ xor dh, dh ; 30 f6 ; 0xf185b
+ mov ax, si ; 89 f0 ; 0xf185d
+ call 0176dh ; e8 0b ff ; 0xf185f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1862 print.c:118
+ pop di ; 5f ; 0xf1865
+ pop si ; 5e ; 0xf1866
+ pop bp ; 5d ; 0xf1867
+ retn ; c3 ; 0xf1868
+ ; disGetNextSymbol 0xf1869 LB 0x9b4f -> off=0x0 cb=0000000000000070 uValue=00000000000f0269 'put_luint'
+put_luint: ; 0xf1869 LB 0x70
+ push bp ; 55 ; 0xf1869 print.c:120
+ mov bp, sp ; 89 e5 ; 0xf186a
+ push si ; 56 ; 0xf186c
+ push di ; 57 ; 0xf186d
+ push ax ; 50 ; 0xf186e
+ push ax ; 50 ; 0xf186f
+ mov si, ax ; 89 c6 ; 0xf1870
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf1872
+ mov di, dx ; 89 d7 ; 0xf1875
+ mov ax, bx ; 89 d8 ; 0xf1877 print.c:122
+ mov dx, cx ; 89 ca ; 0xf1879
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf187b
+ xor cx, cx ; 31 c9 ; 0xf187e
+ call 0b040h ; e8 bd 97 ; 0xf1880
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf1883
+ mov cx, dx ; 89 d1 ; 0xf1886
+ mov dx, ax ; 89 c2 ; 0xf1888 print.c:123
+ or dx, cx ; 09 ca ; 0xf188a
+ je short 0189dh ; 74 0f ; 0xf188c
+ push word [bp+004h] ; ff 76 04 ; 0xf188e print.c:124
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf1891
+ mov bx, ax ; 89 c3 ; 0xf1894
+ mov ax, si ; 89 f0 ; 0xf1896
+ call 01869h ; e8 ce ff ; 0xf1898
+ jmp short 018bah ; eb 1d ; 0xf189b print.c:125
+ dec di ; 4f ; 0xf189d print.c:126
+ test di, di ; 85 ff ; 0xf189e
+ jle short 018ach ; 7e 0a ; 0xf18a0
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf18a2 print.c:127
+ mov ax, si ; 89 f0 ; 0xf18a5
+ call 0176dh ; e8 c3 fe ; 0xf18a7
+ jmp short 0189dh ; eb f1 ; 0xf18aa
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf18ac print.c:128
+ je short 018bah ; 74 08 ; 0xf18b0
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18b2 print.c:129
+ mov ax, si ; 89 f0 ; 0xf18b5
+ call 0176dh ; e8 b3 fe ; 0xf18b7
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf18ba print.c:131
+ mov DL, strict byte 00ah ; b2 0a ; 0xf18bd
+ mul dl ; f6 e2 ; 0xf18bf
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf18c1
+ sub dl, al ; 28 c2 ; 0xf18c4
+ add dl, 030h ; 80 c2 30 ; 0xf18c6
+ xor dh, dh ; 30 f6 ; 0xf18c9
+ mov ax, si ; 89 f0 ; 0xf18cb
+ call 0176dh ; e8 9d fe ; 0xf18cd
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18d0 print.c:132
+ pop di ; 5f ; 0xf18d3
+ pop si ; 5e ; 0xf18d4
+ pop bp ; 5d ; 0xf18d5
+ retn 00002h ; c2 02 00 ; 0xf18d6
+ ; disGetNextSymbol 0xf18d9 LB 0x9adf -> off=0x0 cb=0000000000000021 uValue=00000000000f02d9 'put_str'
+put_str: ; 0xf18d9 LB 0x21
+ push bp ; 55 ; 0xf18d9 print.c:134
+ mov bp, sp ; 89 e5 ; 0xf18da
+ push dx ; 52 ; 0xf18dc
+ push si ; 56 ; 0xf18dd
+ mov si, ax ; 89 c6 ; 0xf18de
+ mov es, cx ; 8e c1 ; 0xf18e0 print.c:138
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf18e2
+ test dl, dl ; 84 d2 ; 0xf18e5
+ je short 018f3h ; 74 0a ; 0xf18e7
+ xor dh, dh ; 30 f6 ; 0xf18e9 print.c:139
+ mov ax, si ; 89 f0 ; 0xf18eb
+ call 0176dh ; e8 7d fe ; 0xf18ed
+ inc bx ; 43 ; 0xf18f0 print.c:140
+ jmp short 018e0h ; eb ed ; 0xf18f1 print.c:141
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18f3 print.c:142
+ pop si ; 5e ; 0xf18f6
+ pop dx ; 5a ; 0xf18f7
+ pop bp ; 5d ; 0xf18f8
+ retn ; c3 ; 0xf18f9
+ ; disGetNextSymbol 0xf18fa LB 0x9abe -> off=0x0 cb=0000000000000022 uValue=00000000000f02fa 'put_str_near'
+put_str_near: ; 0xf18fa LB 0x22
+ push bp ; 55 ; 0xf18fa print.c:144
+ mov bp, sp ; 89 e5 ; 0xf18fb
+ push bx ; 53 ; 0xf18fd
+ push cx ; 51 ; 0xf18fe
+ mov cx, ax ; 89 c1 ; 0xf18ff
+ mov bx, dx ; 89 d3 ; 0xf1901
+ mov al, byte [bx] ; 8a 07 ; 0xf1903 print.c:148
+ test al, al ; 84 c0 ; 0xf1905
+ je short 01915h ; 74 0c ; 0xf1907
+ xor ah, ah ; 30 e4 ; 0xf1909 print.c:149
+ mov dx, ax ; 89 c2 ; 0xf190b
+ mov ax, cx ; 89 c8 ; 0xf190d
+ call 0176dh ; e8 5b fe ; 0xf190f
+ inc bx ; 43 ; 0xf1912 print.c:150
+ jmp short 01903h ; eb ee ; 0xf1913 print.c:151
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1915 print.c:152
+ pop cx ; 59 ; 0xf1918
+ pop bx ; 5b ; 0xf1919
+ pop bp ; 5d ; 0xf191a
+ retn ; c3 ; 0xf191b
+ ; disGetNextSymbol 0xf191c LB 0x9a9c -> off=0x0 cb=000000000000034f uValue=00000000000f031c 'bios_printf'
+bios_printf: ; 0xf191c LB 0x34f
+ push bp ; 55 ; 0xf191c print.c:165
+ mov bp, sp ; 89 e5 ; 0xf191d
+ push bx ; 53 ; 0xf191f
+ push cx ; 51 ; 0xf1920
+ push dx ; 52 ; 0xf1921
+ push si ; 56 ; 0xf1922
+ push di ; 57 ; 0xf1923
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1924
+ lea bx, [bp+008h] ; 8d 5e 08 ; 0xf1927 print.c:173
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf192a
+ mov [bp-014h], ss ; 8c 56 ec ; 0xf192d
+ xor cx, cx ; 31 c9 ; 0xf1930 print.c:175
+ xor di, di ; 31 ff ; 0xf1932 print.c:176
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1934 print.c:178
+ and ax, strict word 00007h ; 25 07 00 ; 0xf1937
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf193a
+ jne short 0194dh ; 75 0e ; 0xf193d
+ mov ax, 000eeh ; b8 ee 00 ; 0xf193f print.c:179
+ push ax ; 50 ; 0xf1942
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf1943
+ push ax ; 50 ; 0xf1946
+ call 0191ch ; e8 d2 ff ; 0xf1947
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf194a
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf194d print.c:182
+ mov dl, byte [bx] ; 8a 17 ; 0xf1950
+ test dl, dl ; 84 d2 ; 0xf1952
+ je short 019b7h ; 74 61 ; 0xf1954
+ cmp dl, 025h ; 80 fa 25 ; 0xf1956 print.c:183
+ jne short 01963h ; 75 08 ; 0xf1959
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf195b print.c:184
+ xor di, di ; 31 ff ; 0xf195e print.c:185
+ jmp near 01c49h ; e9 e6 02 ; 0xf1960 print.c:187
+ test cx, cx ; 85 c9 ; 0xf1963
+ je short 019bah ; 74 53 ; 0xf1965
+ cmp dl, 030h ; 80 fa 30 ; 0xf1967 print.c:188
+ jc short 01986h ; 72 1a ; 0xf196a
+ cmp dl, 039h ; 80 fa 39 ; 0xf196c
+ jnbe short 01986h ; 77 15 ; 0xf196f
+ mov bl, dl ; 88 d3 ; 0xf1971 print.c:189
+ xor bh, bh ; 30 ff ; 0xf1973
+ mov ax, di ; 89 f8 ; 0xf1975
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf1977
+ mul dx ; f7 e2 ; 0xf197a
+ sub bx, strict byte 00030h ; 83 eb 30 ; 0xf197c
+ mov di, ax ; 89 c7 ; 0xf197f
+ add di, bx ; 01 df ; 0xf1981
+ jmp near 01c49h ; e9 c3 02 ; 0xf1983 print.c:191
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1986 print.c:192
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1989
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf198c
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1990
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1993
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1997
+ cmp dl, 078h ; 80 fa 78 ; 0xf199a print.c:193
+ je short 019a4h ; 74 05 ; 0xf199d
+ cmp dl, 058h ; 80 fa 58 ; 0xf199f
+ jne short 019ffh ; 75 5b ; 0xf19a2
+ test di, di ; 85 ff ; 0xf19a4 print.c:194
+ jne short 019abh ; 75 03 ; 0xf19a6
+ mov di, strict word 00004h ; bf 04 00 ; 0xf19a8 print.c:195
+ cmp dl, 078h ; 80 fa 78 ; 0xf19ab print.c:196
+ jne short 019bdh ; 75 0d ; 0xf19ae
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf19b0 print.c:197
+ jmp short 019c2h ; eb 0b ; 0xf19b5 print.c:198
+ jmp near 01c4fh ; e9 95 02 ; 0xf19b7
+ jmp near 01c41h ; e9 84 02 ; 0xf19ba
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf19bd print.c:199
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf19c2 print.c:200
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf19c5
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf19c8
+ test ax, ax ; 85 c0 ; 0xf19cb
+ jl short 01a10h ; 7c 41 ; 0xf19cd
+ mov cx, ax ; 89 c1 ; 0xf19cf print.c:201
+ sal cx, 1 ; d1 e1 ; 0xf19d1
+ sal cx, 1 ; d1 e1 ; 0xf19d3
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf19d5
+ shr ax, CL ; d3 e8 ; 0xf19d8
+ xor ah, ah ; 30 e4 ; 0xf19da
+ and AL, strict byte 00fh ; 24 0f ; 0xf19dc
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf19de print.c:202
+ jnbe short 019eah ; 77 07 ; 0xf19e1
+ mov dx, ax ; 89 c2 ; 0xf19e3
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf19e5
+ jmp short 019f2h ; eb 08 ; 0xf19e8
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf19ea
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf19ed
+ add dx, ax ; 01 c2 ; 0xf19f0
+ xor dh, dh ; 30 f6 ; 0xf19f2
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19f4
+ call 0176dh ; e8 73 fd ; 0xf19f7
+ dec word [bp-012h] ; ff 4e ee ; 0xf19fa print.c:203
+ jmp short 019c8h ; eb c9 ; 0xf19fd
+ cmp dl, 075h ; 80 fa 75 ; 0xf19ff print.c:205
+ jne short 01a13h ; 75 0f ; 0xf1a02
+ xor cx, cx ; 31 c9 ; 0xf1a04 print.c:206
+ mov bx, di ; 89 fb ; 0xf1a06
+ mov dx, ax ; 89 c2 ; 0xf1a08
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a0a
+ call 0180bh ; e8 fb fd ; 0xf1a0d
+ jmp near 01c3dh ; e9 2a 02 ; 0xf1a10 print.c:208
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1a13
+ jne short 01a20h ; 75 08 ; 0xf1a16
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a18
+ cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1a1b
+ je short 01a23h ; 74 03 ; 0xf1a1e
+ jmp near 01af8h ; e9 d5 00 ; 0xf1a20
+ add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1a23 print.c:212
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a27 print.c:213
+ mov dl, byte [bx] ; 8a 17 ; 0xf1a2a
+ mov word [bp-026h], ax ; 89 46 da ; 0xf1a2c print.c:215
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a2f print.c:216
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a32
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a35
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a39
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a3c
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf1a40
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a43 print.c:217
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a46
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a49
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a4d
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a50
+ mov word [bp-022h], ax ; 89 46 de ; 0xf1a54
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a57 print.c:218
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a5a
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a5d
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a61
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a64
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf1a68
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a6b print.c:219
+ je short 01a75h ; 74 05 ; 0xf1a6e
+ cmp dl, 058h ; 80 fa 58 ; 0xf1a70
+ jne short 01ad0h ; 75 5b ; 0xf1a73
+ test di, di ; 85 ff ; 0xf1a75 print.c:220
+ jne short 01a7ch ; 75 03 ; 0xf1a77
+ mov di, strict word 00010h ; bf 10 00 ; 0xf1a79 print.c:221
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a7c print.c:222
+ jne short 01a88h ; 75 07 ; 0xf1a7f
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1a81 print.c:223
+ jmp short 01a8dh ; eb 05 ; 0xf1a86 print.c:224
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1a88 print.c:225
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1a8d print.c:226
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1a90
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1a93
+ test ax, ax ; 85 c0 ; 0xf1a96
+ jl short 01af5h ; 7c 5b ; 0xf1a98
+ sal ax, 1 ; d1 e0 ; 0xf1a9a print.c:227
+ sal ax, 1 ; d1 e0 ; 0xf1a9c
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1a9e
+ xor ax, ax ; 31 c0 ; 0xf1aa1
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1aa3
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1aa6
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf1aa9
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1aac
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf1aaf
+ mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1ab2
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf1ab5
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1ab8
+ call 0b070h ; e8 b2 95 ; 0xf1abb
+ mov ax, dx ; 89 d0 ; 0xf1abe
+ xor ah, dh ; 30 f4 ; 0xf1ac0
+ and AL, strict byte 00fh ; 24 0f ; 0xf1ac2
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1ac4 print.c:228
+ jnbe short 01ad2h ; 77 09 ; 0xf1ac7
+ mov dx, ax ; 89 c2 ; 0xf1ac9
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1acb
+ jmp short 01adah ; eb 0a ; 0xf1ace
+ jmp short 01ae7h ; eb 15 ; 0xf1ad0
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1ad2
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ad5
+ add dx, ax ; 01 c2 ; 0xf1ad8
+ xor dh, dh ; 30 f6 ; 0xf1ada
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1adc
+ call 0176dh ; e8 8b fc ; 0xf1adf
+ dec word [bp-012h] ; ff 4e ee ; 0xf1ae2 print.c:229
+ jmp short 01a93h ; eb ac ; 0xf1ae5
+ mov ax, 000f6h ; b8 f6 00 ; 0xf1ae7 print.c:231
+ push ax ; 50 ; 0xf1aea
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf1aeb
+ push ax ; 50 ; 0xf1aee
+ call 0191ch ; e8 2a fe ; 0xf1aef
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1af2
+ jmp near 01c3dh ; e9 45 01 ; 0xf1af5 print.c:234
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf1af8
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1afb
+ jne short 01b58h ; 75 58 ; 0xf1afe
+ inc word [bp+006h] ; ff 46 06 ; 0xf1b00 print.c:235
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1b03 print.c:236
+ mov dl, byte [si] ; 8a 14 ; 0xf1b06
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b08 print.c:237
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b0b
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b0e
+ les si, [bp-016h] ; c4 76 ea ; 0xf1b12
+ mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1b15
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1b19
+ cmp dl, 064h ; 80 fa 64 ; 0xf1b1c print.c:238
+ jne short 01b51h ; 75 30 ; 0xf1b1f
+ test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1b21 print.c:239
+ je short 01b3eh ; 74 17 ; 0xf1b25
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1b27 print.c:240
+ push ax ; 50 ; 0xf1b2a
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b2b
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1b2e
+ neg cx ; f7 d9 ; 0xf1b31
+ neg ax ; f7 d8 ; 0xf1b33
+ sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1b35
+ mov dx, bx ; 89 da ; 0xf1b38
+ mov bx, ax ; 89 c3 ; 0xf1b3a
+ jmp short 01b49h ; eb 0b ; 0xf1b3c print.c:241
+ xor ax, ax ; 31 c0 ; 0xf1b3e print.c:242
+ push ax ; 50 ; 0xf1b40
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf1b41
+ mov dx, di ; 89 fa ; 0xf1b44
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1b46
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b49
+ call 01869h ; e8 1a fd ; 0xf1b4c
+ jmp short 01af5h ; eb a4 ; 0xf1b4f print.c:244
+ cmp dl, 075h ; 80 fa 75 ; 0xf1b51
+ jne short 01b5ah ; 75 04 ; 0xf1b54
+ jmp short 01b3eh ; eb e6 ; 0xf1b56
+ jmp short 01bc1h ; eb 67 ; 0xf1b58
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b5a print.c:247
+ je short 01b64h ; 74 05 ; 0xf1b5d
+ cmp dl, 058h ; 80 fa 58 ; 0xf1b5f
+ jne short 01af5h ; 75 91 ; 0xf1b62
+ test di, di ; 85 ff ; 0xf1b64 print.c:249
+ jne short 01b6bh ; 75 03 ; 0xf1b66
+ mov di, strict word 00008h ; bf 08 00 ; 0xf1b68 print.c:250
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b6b print.c:251
+ jne short 01b77h ; 75 07 ; 0xf1b6e
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1b70 print.c:252
+ jmp short 01b7ch ; eb 05 ; 0xf1b75 print.c:253
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1b77 print.c:254
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1b7c print.c:255
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1b7f
+ cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xf1b82
+ jl short 01be3h ; 7c 5b ; 0xf1b86
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b88 print.c:256
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf1b8b
+ sal cx, 1 ; d1 e1 ; 0xf1b8e
+ sal cx, 1 ; d1 e1 ; 0xf1b90
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1b92
+ jcxz 01b9dh ; e3 06 ; 0xf1b95
+ shr dx, 1 ; d1 ea ; 0xf1b97
+ rcr ax, 1 ; d1 d8 ; 0xf1b99
+ loop 01b97h ; e2 fa ; 0xf1b9b
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf1b9d
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1ba0 print.c:257
+ jnbe short 01bach ; 77 07 ; 0xf1ba3
+ mov dx, ax ; 89 c2 ; 0xf1ba5
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1ba7
+ jmp short 01bb4h ; eb 08 ; 0xf1baa
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1bac
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1baf
+ add dx, ax ; 01 c2 ; 0xf1bb2
+ xor dh, dh ; 30 f6 ; 0xf1bb4
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bb6
+ call 0176dh ; e8 b1 fb ; 0xf1bb9
+ dec word [bp-012h] ; ff 4e ee ; 0xf1bbc print.c:258
+ jmp short 01b82h ; eb c1 ; 0xf1bbf
+ cmp dl, 064h ; 80 fa 64 ; 0xf1bc1 print.c:261
+ jne short 01be5h ; 75 1f ; 0xf1bc4
+ test byte [bp-00bh], 080h ; f6 46 f5 80 ; 0xf1bc6 print.c:262
+ je short 01bd6h ; 74 0a ; 0xf1bca
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1bcc print.c:263
+ neg dx ; f7 da ; 0xf1bcf
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf1bd1
+ jmp short 01bddh ; eb 07 ; 0xf1bd4 print.c:264
+ xor cx, cx ; 31 c9 ; 0xf1bd6 print.c:265
+ mov bx, di ; 89 fb ; 0xf1bd8
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1bda
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bdd
+ call 017a8h ; e8 c5 fb ; 0xf1be0
+ jmp short 01c3dh ; eb 58 ; 0xf1be3 print.c:267
+ cmp dl, 073h ; 80 fa 73 ; 0xf1be5
+ jne short 01bf7h ; 75 0d ; 0xf1be8
+ mov cx, ds ; 8c d9 ; 0xf1bea print.c:268
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf1bec
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bef
+ call 018d9h ; e8 e4 fc ; 0xf1bf2
+ jmp short 01c3dh ; eb 46 ; 0xf1bf5 print.c:270
+ cmp dl, 053h ; 80 fa 53 ; 0xf1bf7
+ jne short 01c1dh ; 75 21 ; 0xf1bfa
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1bfc print.c:271
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1bff
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1c02 print.c:272
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c05
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1c08
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1c0c
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1c0f
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1c13
+ mov bx, ax ; 89 c3 ; 0xf1c16 print.c:273
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1c18
+ jmp short 01befh ; eb d2 ; 0xf1c1b
+ cmp dl, 063h ; 80 fa 63 ; 0xf1c1d print.c:275
+ jne short 01c2fh ; 75 0d ; 0xf1c20
+ mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf1c22 print.c:276
+ xor dh, dh ; 30 f6 ; 0xf1c25
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c27
+ call 0176dh ; e8 40 fb ; 0xf1c2a
+ jmp short 01c3dh ; eb 0e ; 0xf1c2d print.c:278
+ mov ax, 00117h ; b8 17 01 ; 0xf1c2f print.c:279
+ push ax ; 50 ; 0xf1c32
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf1c33
+ push ax ; 50 ; 0xf1c36
+ call 0191ch ; e8 e2 fc ; 0xf1c37
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c3a
+ xor cx, cx ; 31 c9 ; 0xf1c3d print.c:280
+ jmp short 01c49h ; eb 08 ; 0xf1c3f print.c:283
+ xor dh, dh ; 30 f6 ; 0xf1c41 print.c:284
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c43
+ call 0176dh ; e8 24 fb ; 0xf1c46
+ inc word [bp+006h] ; ff 46 06 ; 0xf1c49 print.c:286
+ jmp near 0194dh ; e9 fe fc ; 0xf1c4c print.c:287
+ xor ax, ax ; 31 c0 ; 0xf1c4f print.c:288
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1c51
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c54
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1c57 print.c:289
+ je short 01c61h ; 74 04 ; 0xf1c5b
+ cli ; fa ; 0xf1c5d print.c:291
+ hlt ; f4 ; 0xf1c5e print.c:292
+ jmp short 01c5eh ; eb fd ; 0xf1c5f
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1c61 print.c:294
+ pop di ; 5f ; 0xf1c64
+ pop si ; 5e ; 0xf1c65
+ pop dx ; 5a ; 0xf1c66
+ pop cx ; 59 ; 0xf1c67
+ pop bx ; 5b ; 0xf1c68
+ pop bp ; 5d ; 0xf1c69
+ retn ; c3 ; 0xf1c6a
+ ; disGetNextSymbol 0xf1c6b LB 0x974d -> off=0x0 cb=00000000000000f0 uValue=00000000000f066b 'ata_init'
+ata_init: ; 0xf1c6b LB 0xf0
+ push si ; 56 ; 0xf1c6b ata.c:99
+ push di ; 57 ; 0xf1c6c
+ push bp ; 55 ; 0xf1c6d
+ mov bp, sp ; 89 e5 ; 0xf1c6e
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1c70 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1c73
+ mov es, ax ; 8e c0 ; 0xf1c76
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf1c78
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf1c7b ata.c:49
+ xor cl, cl ; 30 c9 ; 0xf1c7e ata.c:107
+ jmp short 01c87h ; eb 05 ; 0xf1c80
+ cmp cl, 004h ; 80 f9 04 ; 0xf1c82
+ jnc short 01cb4h ; 73 2d ; 0xf1c85
+ mov al, cl ; 88 c8 ; 0xf1c87 ata.c:108
+ xor ah, ah ; 30 e4 ; 0xf1c89
+ mov bx, strict word 00006h ; bb 06 00 ; 0xf1c8b
+ imul bx ; f7 eb ; 0xf1c8e
+ mov es, di ; 8e c7 ; 0xf1c90
+ mov bx, si ; 89 f3 ; 0xf1c92
+ add bx, ax ; 01 c3 ; 0xf1c94
+ mov byte [es:bx+0027ch], 000h ; 26 c6 87 7c 02 00 ; 0xf1c96
+ mov word [es:bx+0027eh], strict word 00000h ; 26 c7 87 7e 02 00 00 ; 0xf1c9c ata.c:109
+ mov word [es:bx+00280h], strict word 00000h ; 26 c7 87 80 02 00 00 ; 0xf1ca3 ata.c:110
+ mov byte [es:bx+0027dh], 000h ; 26 c6 87 7d 02 00 ; 0xf1caa ata.c:111
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf1cb0 ata.c:112
+ jmp short 01c82h ; eb ce ; 0xf1cb2
+ xor cl, cl ; 30 c9 ; 0xf1cb4 ata.c:115
+ jmp short 01cbdh ; eb 05 ; 0xf1cb6
+ cmp cl, 008h ; 80 f9 08 ; 0xf1cb8
+ jnc short 01d28h ; 73 6b ; 0xf1cbb
+ mov al, cl ; 88 c8 ; 0xf1cbd ata.c:116
+ xor ah, ah ; 30 e4 ; 0xf1cbf
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf1cc1
+ imul bx ; f7 eb ; 0xf1cc4
+ mov es, di ; 8e c7 ; 0xf1cc6
+ mov bx, si ; 89 f3 ; 0xf1cc8
+ add bx, ax ; 01 c3 ; 0xf1cca
+ mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00 ; 0xf1ccc
+ mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf1cd2 ata.c:118
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf1cd8 ata.c:120
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf1cdd ata.c:121
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf1ce3 ata.c:122
+ mov word [es:bx+02ah], strict word 00000h ; 26 c7 47 2a 00 00 ; 0xf1ce8 ata.c:123
+ mov word [es:bx+02ch], strict word 00000h ; 26 c7 47 2c 00 00 ; 0xf1cee ata.c:124
+ mov word [es:bx+02eh], strict word 00000h ; 26 c7 47 2e 00 00 ; 0xf1cf4 ata.c:125
+ mov word [es:bx+030h], strict word 00000h ; 26 c7 47 30 00 00 ; 0xf1cfa ata.c:126
+ mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00 ; 0xf1d00 ata.c:127
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf1d06 ata.c:128
+ mov word [es:bx+03ch], strict word 00000h ; 26 c7 47 3c 00 00 ; 0xf1d0c ata.c:129
+ mov word [es:bx+03ah], strict word 00000h ; 26 c7 47 3a 00 00 ; 0xf1d12
+ mov word [es:bx+038h], strict word 00000h ; 26 c7 47 38 00 00 ; 0xf1d18
+ mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00 ; 0xf1d1e
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf1d24 ata.c:130
+ jmp short 01cb8h ; eb 90 ; 0xf1d26
+ xor cl, cl ; 30 c9 ; 0xf1d28 ata.c:133
+ jmp short 01d31h ; eb 05 ; 0xf1d2a
+ cmp cl, 014h ; 80 f9 14 ; 0xf1d2c
+ jnc short 01d49h ; 73 18 ; 0xf1d2f
+ mov bl, cl ; 88 cb ; 0xf1d31 ata.c:134
+ xor bh, bh ; 30 ff ; 0xf1d33
+ mov es, di ; 8e c7 ; 0xf1d35
+ add bx, si ; 01 f3 ; 0xf1d37
+ mov byte [es:bx+00253h], 014h ; 26 c6 87 53 02 14 ; 0xf1d39
+ mov byte [es:bx+00268h], 014h ; 26 c6 87 68 02 14 ; 0xf1d3f ata.c:135
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf1d45 ata.c:136
+ jmp short 01d2ch ; eb e3 ; 0xf1d47
+ mov es, di ; 8e c7 ; 0xf1d49 ata.c:138
+ mov byte [es:si+00252h], 000h ; 26 c6 84 52 02 00 ; 0xf1d4b
+ mov byte [es:si+00267h], 000h ; 26 c6 84 67 02 00 ; 0xf1d51 ata.c:139
+ pop bp ; 5d ; 0xf1d57 ata.c:140
+ pop di ; 5f ; 0xf1d58
+ pop si ; 5e ; 0xf1d59
+ retn ; c3 ; 0xf1d5a
+ ; disGetNextSymbol 0xf1d5b LB 0x965d -> off=0x0 cb=00000000000000e9 uValue=00000000000f075b 'ata_reset'
+ata_reset: ; 0xf1d5b LB 0xe9
+ push bp ; 55 ; 0xf1d5b ata.c:148
+ mov bp, sp ; 89 e5 ; 0xf1d5c
+ push bx ; 53 ; 0xf1d5e
+ push cx ; 51 ; 0xf1d5f
+ push dx ; 52 ; 0xf1d60
+ push si ; 56 ; 0xf1d61
+ push di ; 57 ; 0xf1d62
+ push ax ; 50 ; 0xf1d63
+ push ax ; 50 ; 0xf1d64
+ push ax ; 50 ; 0xf1d65
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d66 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1d69
+ mov es, ax ; 8e c0 ; 0xf1d6c
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf1d6e
+ mov word [bp-00eh], strict word 0005eh ; c7 46 f2 5e 00 ; 0xf1d71 ata.c:49
+ mov di, bx ; 89 df ; 0xf1d76
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1d78 ata.c:157
+ shr ax, 1 ; d1 e8 ; 0xf1d7b
+ mov ah, byte [bp-010h] ; 8a 66 f0 ; 0xf1d7d ata.c:158
+ and ah, 001h ; 80 e4 01 ; 0xf1d80
+ mov byte [bp-00ch], ah ; 88 66 f4 ; 0xf1d83
+ xor ah, ah ; 30 e4 ; 0xf1d86 ata.c:160
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf1d88
+ imul dx ; f7 ea ; 0xf1d8b
+ mov es, bx ; 8e c3 ; 0xf1d8d
+ mov bx, ax ; 89 c3 ; 0xf1d8f
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf1d91
+ mov cx, word [es:bx+0027eh] ; 26 8b 8f 7e 02 ; 0xf1d94
+ mov si, word [es:bx+00280h] ; 26 8b b7 80 02 ; 0xf1d99 ata.c:161
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1d9e ata.c:166
+ mov AL, strict byte 00eh ; b0 0e ; 0xf1da1
+ out DX, AL ; ee ; 0xf1da3
+ mov bx, 000ffh ; bb ff 00 ; 0xf1da4 ata.c:169
+ dec bx ; 4b ; 0xf1da7 ata.c:170
+ test bx, bx ; 85 db ; 0xf1da8
+ jbe short 01db8h ; 76 0c ; 0xf1daa
+ mov dx, cx ; 89 ca ; 0xf1dac ata.c:171
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1dae
+ in AL, DX ; ec ; 0xf1db1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1db2
+ test AL, strict byte 080h ; a8 80 ; 0xf1db4 ata.c:172
+ je short 01da7h ; 74 ef ; 0xf1db6
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1db8 ata.c:177
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1dbb
+ out DX, AL ; ee ; 0xf1dbd
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf1dbe ata.c:180
+ dec bx ; 4b ; 0xf1dc1 ata.c:181
+ test bx, bx ; 85 db ; 0xf1dc2
+ jbe short 01ddch ; 76 16 ; 0xf1dc4
+ mov dx, cx ; 89 ca ; 0xf1dc6 ata.c:182
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1dc8
+ in AL, DX ; ec ; 0xf1dcb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1dcc
+ test AL, strict byte 080h ; a8 80 ; 0xf1dce ata.c:183
+ je short 01ddch ; 74 0a ; 0xf1dd0
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1dd2 ata.c:185
+ dec ax ; 48 ; 0xf1dd5 ata.c:186
+ test ax, ax ; 85 c0 ; 0xf1dd6
+ jnbe short 01dd5h ; 77 fb ; 0xf1dd8
+ jmp short 01dc1h ; eb e5 ; 0xf1dda ata.c:189
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1ddc ata.c:191
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf1ddf
+ imul dx ; f7 ea ; 0xf1de2
+ mov es, di ; 8e c7 ; 0xf1de4
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf1de6
+ add bx, ax ; 01 c3 ; 0xf1de9
+ cmp byte [es:bx+022h], 000h ; 26 80 7f 22 00 ; 0xf1deb
+ je short 01e34h ; 74 42 ; 0xf1df0
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1df2 ata.c:194
+ je short 01dfdh ; 74 05 ; 0xf1df6
+ mov ax, 000b0h ; b8 b0 00 ; 0xf1df8
+ jmp short 01e00h ; eb 03 ; 0xf1dfb
+ mov ax, 000a0h ; b8 a0 00 ; 0xf1dfd
+ mov dx, cx ; 89 ca ; 0xf1e00
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1e02
+ out DX, AL ; ee ; 0xf1e05
+ mov dx, cx ; 89 ca ; 0xf1e06 ata.c:195
+ inc dx ; 42 ; 0xf1e08
+ inc dx ; 42 ; 0xf1e09
+ in AL, DX ; ec ; 0xf1e0a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e0b
+ mov bx, ax ; 89 c3 ; 0xf1e0d
+ mov dx, cx ; 89 ca ; 0xf1e0f ata.c:196
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1e11
+ in AL, DX ; ec ; 0xf1e14
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e15
+ cmp bl, 001h ; 80 fb 01 ; 0xf1e17 ata.c:198
+ jne short 01e34h ; 75 18 ; 0xf1e1a
+ cmp al, bl ; 38 d8 ; 0xf1e1c
+ jne short 01e34h ; 75 14 ; 0xf1e1e
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf1e20 ata.c:200
+ dec bx ; 4b ; 0xf1e23 ata.c:201
+ test bx, bx ; 85 db ; 0xf1e24
+ jbe short 01e34h ; 76 0c ; 0xf1e26
+ mov dx, cx ; 89 ca ; 0xf1e28 ata.c:202
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e2a
+ in AL, DX ; ec ; 0xf1e2d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e2e
+ test AL, strict byte 040h ; a8 40 ; 0xf1e30 ata.c:203
+ je short 01e23h ; 74 ef ; 0xf1e32
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1e34 ata.c:210
+ mov AL, strict byte 008h ; b0 08 ; 0xf1e37
+ out DX, AL ; ee ; 0xf1e39
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1e3a ata.c:211
+ pop di ; 5f ; 0xf1e3d
+ pop si ; 5e ; 0xf1e3e
+ pop dx ; 5a ; 0xf1e3f
+ pop cx ; 59 ; 0xf1e40
+ pop bx ; 5b ; 0xf1e41
+ pop bp ; 5d ; 0xf1e42
+ retn ; c3 ; 0xf1e43
+ ; disGetNextSymbol 0xf1e44 LB 0x9574 -> off=0x0 cb=00000000000002b7 uValue=00000000000f0844 'ata_cmd_data_in'
+ata_cmd_data_in: ; 0xf1e44 LB 0x2b7
+ push bp ; 55 ; 0xf1e44 ata.c:225
+ mov bp, sp ; 89 e5 ; 0xf1e45
+ push si ; 56 ; 0xf1e47
+ push di ; 57 ; 0xf1e48
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf1e49
+ push ax ; 50 ; 0xf1e4c
+ push dx ; 52 ; 0xf1e4d
+ push bx ; 53 ; 0xf1e4e
+ push cx ; 51 ; 0xf1e4f
+ mov es, dx ; 8e c2 ; 0xf1e50 ata.c:235
+ mov bx, ax ; 89 c3 ; 0xf1e52
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1e54
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf1e58
+ mov bl, al ; 88 c3 ; 0xf1e5b ata.c:237
+ xor bh, ah ; 30 e7 ; 0xf1e5d
+ mov ax, bx ; 89 d8 ; 0xf1e5f
+ cwd ; 99 ; 0xf1e61
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf1e62
+ sar ax, 1 ; d1 f8 ; 0xf1e64
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf1e66
+ imul dx ; f7 ea ; 0xf1e69
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e6b
+ add di, ax ; 01 c7 ; 0xf1e6e
+ mov ax, word [es:di+0027eh] ; 26 8b 85 7e 02 ; 0xf1e70
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1e75
+ mov ax, word [es:di+00280h] ; 26 8b 85 80 02 ; 0xf1e78 ata.c:238
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1e7d
+ mov ax, bx ; 89 d8 ; 0xf1e80 ata.c:240
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf1e82
+ imul dx ; f7 ea ; 0xf1e85
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1e87
+ add bx, ax ; 01 c3 ; 0xf1e8a
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf1e8c
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e90
+ test ax, ax ; 85 c0 ; 0xf1e93 ata.c:241
+ jne short 01e9eh ; 75 07 ; 0xf1e95
+ mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1e97 ata.c:247
+ jmp short 01ea1h ; eb 03 ; 0xf1e9c ata.c:248
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1e9e ata.c:254
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ea1 ata.c:257
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ea4
+ in AL, DX ; ec ; 0xf1ea7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1ea8
+ test AL, strict byte 080h ; a8 80 ; 0xf1eaa ata.c:258
+ je short 01ebdh ; 74 0f ; 0xf1eac
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1eae ata.c:262
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1eb1
+ mov AL, strict byte 008h ; b0 08 ; 0xf1eb4
+ out DX, AL ; ee ; 0xf1eb6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1eb7 ata.c:263
+ jmp near 020f4h ; e9 37 02 ; 0xf1eba
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1ebd ata.c:266
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1ec0
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1ec3
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1ec7
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1eca
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1ece
+ mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1ed1 ata.c:267
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1ed5
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1ed8 ata.c:268
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1edc
+ mov bl, byte [es:bx+014h] ; 26 8a 5f 14 ; 0xf1edf ata.c:269
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1ee3 ata.c:272
+ test al, al ; 84 c0 ; 0xf1ee6
+ je short 01eedh ; 74 03 ; 0xf1ee8
+ jmp near 01fd2h ; e9 e5 00 ; 0xf1eea
+ xor ah, ah ; 30 e4 ; 0xf1eed ata.c:273
+ xor bx, bx ; 31 db ; 0xf1eef
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf1ef1
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ef4
+ mov cx, word [es:si] ; 26 8b 0c ; 0xf1ef7
+ add cx, word [bp-01ch] ; 03 4e e4 ; 0xf1efa
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf1efd
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf1f01
+ mov dx, word [es:si+006h] ; 26 8b 54 06 ; 0xf1f05
+ adc dx, word [bp-014h] ; 13 56 ec ; 0xf1f09
+ test dx, dx ; 85 d2 ; 0xf1f0c
+ jnbe short 01f22h ; 77 12 ; 0xf1f0e
+ je short 01f15h ; 74 03 ; 0xf1f10
+ jmp near 01f88h ; e9 73 00 ; 0xf1f12
+ test bx, bx ; 85 db ; 0xf1f15
+ jnbe short 01f22h ; 77 09 ; 0xf1f17
+ jne short 01f88h ; 75 6d ; 0xf1f19
+ cmp ax, 01000h ; 3d 00 10 ; 0xf1f1b
+ jnbe short 01f22h ; 77 02 ; 0xf1f1e
+ jne short 01f88h ; 75 66 ; 0xf1f20
+ mov bx, si ; 89 f3 ; 0xf1f22 ata.c:275
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f24
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f28
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f2c
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f30
+ mov si, strict word 00018h ; be 18 00 ; 0xf1f33
+ call 0b070h ; e8 37 91 ; 0xf1f36
+ xor dh, dh ; 30 f6 ; 0xf1f39
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf1f3b
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f3e ata.c:276
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f41
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f45
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f49
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f4c
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f50
+ mov si, strict word 00020h ; be 20 00 ; 0xf1f53
+ call 0b070h ; e8 17 91 ; 0xf1f56
+ mov bx, dx ; 89 d3 ; 0xf1f59
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf1f5b
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf1f5e ata.c:277
+ mov al, ah ; 88 e0 ; 0xf1f61
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f63
+ inc dx ; 42 ; 0xf1f66
+ inc dx ; 42 ; 0xf1f67
+ out DX, AL ; ee ; 0xf1f68
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f69 ata.c:278
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f6c
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf1f6f
+ out DX, AL ; ee ; 0xf1f72
+ xor bh, bh ; 30 ff ; 0xf1f73 ata.c:279
+ mov ax, bx ; 89 d8 ; 0xf1f75
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f77
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1f7a
+ out DX, AL ; ee ; 0xf1f7d
+ mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf1f7e ata.c:280
+ 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:284
+ 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:285
+ 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 0b070h ; e8 c4 90 ; 0xf1fa9
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf1fac
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1faf ata.c:286
+ 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 0b070h ; e8 a6 90 ; 0xf1fc7
+ mov bl, dl ; 88 d3 ; 0xf1fca
+ and bl, 00fh ; 80 e3 0f ; 0xf1fcc
+ or bl, 040h ; 80 cb 40 ; 0xf1fcf
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1fd2 ata.c:289
+ 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:290
+ 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:291
+ 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:292
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1fee
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1ff1
+ out DX, AL ; ee ; 0xf1ff4
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1ff5 ata.c:293
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ff8
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1ffb
+ out DX, AL ; ee ; 0xf1ffe
+ mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf1fff ata.c:294
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2002
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2005
+ out DX, AL ; ee ; 0xf2008
+ test byte [bp-008h], 001h ; f6 46 f8 01 ; 0xf2009 ata.c:295
+ je short 02014h ; 74 05 ; 0xf200d
+ mov ax, 000b0h ; b8 b0 00 ; 0xf200f
+ jmp short 02017h ; eb 03 ; 0xf2012
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2014
+ mov dl, bl ; 88 da ; 0xf2017
+ xor dh, dh ; 30 f6 ; 0xf2019
+ or ax, dx ; 09 d0 ; 0xf201b
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf201d
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2020
+ out DX, AL ; ee ; 0xf2023
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2024 ata.c:296
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2027
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf202a
+ out DX, AL ; ee ; 0xf202d
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf202e ata.c:298
+ cmp ax, 000c4h ; 3d c4 00 ; 0xf2031
+ je short 0203bh ; 74 05 ; 0xf2034
+ cmp ax, strict word 00029h ; 3d 29 00 ; 0xf2036
+ jne short 02045h ; 75 0a ; 0xf2039
+ mov si, word [bp-01ch] ; 8b 76 e4 ; 0xf203b ata.c:299
+ mov word [bp-01ch], strict word 00001h ; c7 46 e4 01 00 ; 0xf203e ata.c:300
+ jmp short 02048h ; eb 03 ; 0xf2043 ata.c:301
+ mov si, strict word 00001h ; be 01 00 ; 0xf2045 ata.c:302
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2048 ata.c:306
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf204b
+ in AL, DX ; ec ; 0xf204e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf204f
+ mov bl, al ; 88 c3 ; 0xf2051
+ test AL, strict byte 080h ; a8 80 ; 0xf2053 ata.c:307
+ jne short 02048h ; 75 f1 ; 0xf2055
+ test AL, strict byte 001h ; a8 01 ; 0xf2057 ata.c:311
+ je short 0206ah ; 74 0f ; 0xf2059
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf205b ata.c:314
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf205e
+ mov AL, strict byte 008h ; b0 08 ; 0xf2061
+ out DX, AL ; ee ; 0xf2063
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2064 ata.c:315
+ jmp near 020f4h ; e9 8a 00 ; 0xf2067
+ test bl, 008h ; f6 c3 08 ; 0xf206a ata.c:316
+ jne short 0207eh ; 75 0f ; 0xf206d
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf206f ata.c:319
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2072
+ mov AL, strict byte 008h ; b0 08 ; 0xf2075
+ out DX, AL ; ee ; 0xf2077
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2078 ata.c:320
+ jmp near 020f4h ; e9 76 00 ; 0xf207b
+ sti ; fb ; 0xf207e ata.c:325
+ cmp di, 0f800h ; 81 ff 00 f8 ; 0xf207f ata.c:330
+ jc short 02092h ; 72 0d ; 0xf2083
+ sub di, 00800h ; 81 ef 00 08 ; 0xf2085 ata.c:331
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2089
+ add ax, 00080h ; 05 80 00 ; 0xf208c
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf208f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2092 ata.c:338
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2095
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf2098
+ rep insw ; f3 6d ; 0xf209b
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf209d ata.c:339
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf20a0
+ add word [es:bx+018h], si ; 26 01 77 18 ; 0xf20a3
+ dec word [bp-01ch] ; ff 4e e4 ; 0xf20a7 ata.c:340
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf20aa ata.c:342
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf20ad
+ in AL, DX ; ec ; 0xf20b0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf20b1
+ mov bl, al ; 88 c3 ; 0xf20b3
+ test AL, strict byte 080h ; a8 80 ; 0xf20b5 ata.c:343
+ jne short 020aah ; 75 f1 ; 0xf20b7
+ cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf20b9 ata.c:346
+ jne short 020d3h ; 75 14 ; 0xf20bd
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf20bf ata.c:347
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf20c1
+ je short 020e9h ; 74 24 ; 0xf20c3
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20c5 ata.c:351
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20c8
+ mov AL, strict byte 008h ; b0 08 ; 0xf20cb
+ out DX, AL ; ee ; 0xf20cd
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf20ce ata.c:352
+ jmp short 020f4h ; eb 21 ; 0xf20d1
+ mov al, bl ; 88 d8 ; 0xf20d3 ata.c:357
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf20d5
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf20d7
+ je short 0207fh ; 74 a4 ; 0xf20d9
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20db ata.c:361
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20de
+ mov AL, strict byte 008h ; b0 08 ; 0xf20e1
+ out DX, AL ; ee ; 0xf20e3
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf20e4 ata.c:362
+ jmp short 020f4h ; eb 0b ; 0xf20e7
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20e9 ata.c:368
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20ec
+ mov AL, strict byte 008h ; b0 08 ; 0xf20ef
+ out DX, AL ; ee ; 0xf20f1
+ xor ax, ax ; 31 c0 ; 0xf20f2 ata.c:369
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf20f4 ata.c:370
+ pop di ; 5f ; 0xf20f7
+ pop si ; 5e ; 0xf20f8
+ pop bp ; 5d ; 0xf20f9
+ retn ; c3 ; 0xf20fa
+ ; disGetNextSymbol 0xf20fb LB 0x92bd -> off=0x0 cb=0000000000000094 uValue=00000000000f0afb 'ata_signature'
+ata_signature: ; 0xf20fb LB 0x94
+ push bp ; 55 ; 0xf20fb ata.c:376
+ mov bp, sp ; 89 e5 ; 0xf20fc
+ push cx ; 51 ; 0xf20fe
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf20ff
+ mov cx, ax ; 89 c1 ; 0xf2102
+ mov al, bl ; 88 d8 ; 0xf2104
+ xor bx, bx ; 31 db ; 0xf2106 ata.c:378
+ test al, al ; 84 c0 ; 0xf2108 ata.c:386
+ je short 02111h ; 74 05 ; 0xf210a
+ mov ax, 000b0h ; b8 b0 00 ; 0xf210c
+ jmp short 02114h ; eb 03 ; 0xf210f
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2111
+ mov dx, cx ; 89 ca ; 0xf2114
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2116
+ out DX, AL ; ee ; 0xf2119
+ mov dx, cx ; 89 ca ; 0xf211a ata.c:388
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf211c
+ in AL, DX ; ec ; 0xf211f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2120
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf2122
+ test AL, strict byte 080h ; a8 80 ; 0xf2125 ata.c:389
+ jne short 0211ah ; 75 f1 ; 0xf2127
+ mov dx, cx ; 89 ca ; 0xf2129 ata.c:397
+ inc dx ; 42 ; 0xf212b
+ inc dx ; 42 ; 0xf212c
+ in AL, DX ; ec ; 0xf212d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf212e
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2130
+ mov dx, cx ; 89 ca ; 0xf2133 ata.c:398
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2135
+ in AL, DX ; ec ; 0xf2138
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2139
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf213b ata.c:399
+ jne short 02187h ; 75 46 ; 0xf213f
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2141
+ jne short 02187h ; 75 42 ; 0xf2143
+ mov dx, cx ; 89 ca ; 0xf2145 ata.c:400
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2147
+ in AL, DX ; ec ; 0xf214a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf214b
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf214d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2150
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf2153
+ mov dx, cx ; 89 ca ; 0xf2156 ata.c:401
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2158
+ in AL, DX ; ec ; 0xf215b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf215c
+ mov dl, al ; 88 c2 ; 0xf215e
+ cmp byte [bp-008h], 014h ; 80 7e f8 14 ; 0xf2160 ata.c:408
+ jne short 0216fh ; 75 09 ; 0xf2164
+ cmp AL, strict byte 0ebh ; 3c eb ; 0xf2166
+ jne short 0216fh ; 75 05 ; 0xf2168
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf216a ata.c:409
+ jmp short 02187h ; eb 18 ; 0xf216d ata.c:411
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf216f
+ jne short 02184h ; 75 0f ; 0xf2173
+ test dl, dl ; 84 d2 ; 0xf2175
+ jne short 02184h ; 75 0b ; 0xf2177
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2179 ata.c:412
+ je short 02187h ; 74 08 ; 0xf217d
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf217f ata.c:413
+ jmp short 02187h ; eb 03 ; 0xf2182 ata.c:418
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2184 ata.c:419
+ mov ax, bx ; 89 d8 ; 0xf2187 ata.c:426
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2189
+ pop cx ; 59 ; 0xf218c
+ pop bp ; 5d ; 0xf218d
+ retn ; c3 ; 0xf218e
+ ; disGetNextSymbol 0xf218f LB 0x9229 -> off=0x0 cb=0000000000000640 uValue=00000000000f0b8f 'ata_detect'
+ata_detect: ; 0xf218f LB 0x640
+ push bp ; 55 ; 0xf218f ata.c:428
+ mov bp, sp ; 89 e5 ; 0xf2190
+ push si ; 56 ; 0xf2192
+ push di ; 57 ; 0xf2193
+ sub sp, 00260h ; 81 ec 60 02 ; 0xf2194
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2198 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf219b
+ mov es, ax ; 8e c0 ; 0xf219e
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf21a0
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf21a3 ata.c:49
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf21a6 ata.c:451
+ mov es, ax ; 8e c0 ; 0xf21a9
+ mov word [bp-02ah], bx ; 89 5e d6 ; 0xf21ab
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf21ae
+ mov byte [es:bx+0027ch], 000h ; 26 c6 87 7c 02 00 ; 0xf21b1 ata.c:454
+ mov word [es:bx+0027eh], 001f0h ; 26 c7 87 7e 02 f0 01 ; 0xf21b7 ata.c:455
+ mov word [es:bx+00280h], 003f0h ; 26 c7 87 80 02 f0 03 ; 0xf21be ata.c:456
+ mov byte [es:bx+0027dh], 00eh ; 26 c6 87 7d 02 0e ; 0xf21c5 ata.c:457
+ mov byte [es:bx+00282h], 000h ; 26 c6 87 82 02 00 ; 0xf21cb ata.c:460
+ mov word [es:bx+00284h], 00170h ; 26 c7 87 84 02 70 01 ; 0xf21d1 ata.c:461
+ mov word [es:bx+00286h], 00370h ; 26 c7 87 86 02 70 03 ; 0xf21d8 ata.c:462
+ mov byte [es:bx+00283h], 00fh ; 26 c6 87 83 02 0f ; 0xf21df ata.c:463
+ mov byte [es:bx+00288h], 000h ; 26 c6 87 88 02 00 ; 0xf21e5 ata.c:466
+ mov word [es:bx+0028ah], 001e8h ; 26 c7 87 8a 02 e8 01 ; 0xf21eb ata.c:467
+ mov word [es:bx+0028ch], 003e0h ; 26 c7 87 8c 02 e0 03 ; 0xf21f2 ata.c:468
+ mov byte [es:bx+00289h], 00ch ; 26 c6 87 89 02 0c ; 0xf21f9 ata.c:469
+ mov byte [es:bx+0028eh], 000h ; 26 c6 87 8e 02 00 ; 0xf21ff ata.c:472
+ mov word [es:bx+00290h], 00168h ; 26 c7 87 90 02 68 01 ; 0xf2205 ata.c:473
+ mov word [es:bx+00292h], 00360h ; 26 c7 87 92 02 60 03 ; 0xf220c ata.c:474
+ mov byte [es:bx+0028fh], 00bh ; 26 c6 87 8f 02 0b ; 0xf2213 ata.c:475
+ xor al, al ; 30 c0 ; 0xf2219 ata.c:482
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf221b
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf221e
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf2221 ata.c:484
+ jmp near 0275dh ; e9 36 05 ; 0xf2224
+ test cl, cl ; 84 c9 ; 0xf2227 ata.c:529
+ jne short 02295h ; 75 6a ; 0xf2229
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf222b ata.c:530
+ mov AL, strict byte 00eh ; b0 0e ; 0xf222e
+ out DX, AL ; ee ; 0xf2230
+ mov bx, strict word 00020h ; bb 20 00 ; 0xf2231 ata.c:536
+ dec bx ; 4b ; 0xf2234 ata.c:537
+ test bx, bx ; 85 db ; 0xf2235
+ jbe short 02243h ; 76 0a ; 0xf2237
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf2239 ata.c:538
+ in AL, DX ; ec ; 0xf223c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf223d
+ test AL, strict byte 080h ; a8 80 ; 0xf223f ata.c:539
+ je short 02234h ; 74 f1 ; 0xf2241
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf2243 ata.c:543
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2246
+ out DX, AL ; ee ; 0xf2248
+ mov cl, byte [bp-012h] ; 8a 4e ee ; 0xf2249 ata.c:550
+ xor ch, ch ; 30 ed ; 0xf224c
+ xor bx, bx ; 31 db ; 0xf224e
+ mov dx, cx ; 89 ca ; 0xf2250
+ mov ax, si ; 89 f0 ; 0xf2252
+ call 020fbh ; e8 a4 fe ; 0xf2254
+ mov word [bp-034h], ax ; 89 46 cc ; 0xf2257
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf225a
+ mov byte [bp-030h], al ; 88 46 d0 ; 0xf225d
+ mov byte [bp-02fh], ch ; 88 6e d1 ; 0xf2260
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf2263
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2266
+ imul dx ; f7 ea ; 0xf2269
+ les bx, [bp-02ah] ; c4 5e d6 ; 0xf226b
+ add bx, ax ; 01 c3 ; 0xf226e
+ mov al, byte [bp-034h] ; 8a 46 cc ; 0xf2270
+ mov byte [es:bx+022h], al ; 26 88 47 22 ; 0xf2273
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2277 ata.c:551
+ mov dx, cx ; 89 ca ; 0xf227a
+ mov ax, si ; 89 f0 ; 0xf227c
+ call 020fbh ; e8 7a fe ; 0xf227e
+ mov cx, ax ; 89 c1 ; 0xf2281
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf2283
+ inc ax ; 40 ; 0xf2286
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2287
+ imul dx ; f7 ea ; 0xf228a
+ les bx, [bp-02ah] ; c4 5e d6 ; 0xf228c
+ add bx, ax ; 01 c3 ; 0xf228f
+ mov byte [es:bx+022h], cl ; 26 88 4f 22 ; 0xf2291
+ lea dx, [di+006h] ; 8d 55 06 ; 0xf2295 ata.c:555
+ mov AL, strict byte 008h ; b0 08 ; 0xf2298
+ out DX, AL ; ee ; 0xf229a
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf229b ata.c:557
+ xor ah, ah ; 30 e4 ; 0xf229e
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf22a0
+ imul dx ; f7 ea ; 0xf22a3
+ les bx, [bp-02ah] ; c4 5e d6 ; 0xf22a5
+ add bx, ax ; 01 c3 ; 0xf22a8
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf22aa
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf22ae
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf22b1 ata.c:560
+ jne short 02301h ; 75 4c ; 0xf22b3
+ mov byte [es:bx+023h], 0ffh ; 26 c6 47 23 ff ; 0xf22b5 ata.c:568
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf22ba ata.c:569
+ lea dx, [bp-00264h] ; 8d 96 9c fd ; 0xf22bf ata.c:570
+ mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xf22c3
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf22c6
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf22ca
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf22ce ata.c:571
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf22d1
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf22d5 ata.c:573
+ mov bx, 000ech ; bb ec 00 ; 0xf22d8
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf22db
+ mov dx, es ; 8c c2 ; 0xf22de
+ call 01e44h ; e8 61 fb ; 0xf22e0
+ test ax, ax ; 85 c0 ; 0xf22e3
+ je short 022f5h ; 74 0e ; 0xf22e5
+ mov ax, 00134h ; b8 34 01 ; 0xf22e7 ata.c:574
+ push ax ; 50 ; 0xf22ea
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf22eb
+ push ax ; 50 ; 0xf22ee
+ call 0191ch ; e8 2a f6 ; 0xf22ef
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf22f2
+ test byte [bp-00264h], 080h ; f6 86 9c fd 80 ; 0xf22f5 ata.c:576
+ je short 02304h ; 74 08 ; 0xf22fa
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf22fc
+ jmp short 02306h ; eb 05 ; 0xf22ff
+ jmp near 02512h ; e9 0e 02 ; 0xf2301
+ xor ax, ax ; 31 c0 ; 0xf2304
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf2306
+ mov byte [bp-018h], 000h ; c6 46 e8 00 ; 0xf2309 ata.c:580
+ mov word [bp-01eh], 00200h ; c7 46 e2 00 02 ; 0xf230d ata.c:582
+ mov ax, word [bp-00262h] ; 8b 86 9e fd ; 0xf2312 ata.c:584
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2316
+ mov ax, word [bp-0025eh] ; 8b 86 a2 fd ; 0xf2319 ata.c:585
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf231d
+ mov ax, word [bp-00258h] ; 8b 86 a8 fd ; 0xf2320 ata.c:586
+ mov word [bp-022h], ax ; 89 46 de ; 0xf2324
+ mov ax, word [bp-001ech] ; 8b 86 14 fe ; 0xf2327 ata.c:588
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf232b
+ mov si, word [bp-001eah] ; 8b b6 16 fe ; 0xf232e
+ xor ax, ax ; 31 c0 ; 0xf2332
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf2334
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf2337
+ cmp si, 00fffh ; 81 fe ff 0f ; 0xf233a ata.c:589
+ jne short 0235fh ; 75 1f ; 0xf233e
+ cmp word [bp-01ah], strict byte 0ffffh ; 83 7e e6 ff ; 0xf2340
+ jne short 0235fh ; 75 19 ; 0xf2344
+ mov ax, word [bp-00196h] ; 8b 86 6a fe ; 0xf2346 ata.c:590
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf234a
+ mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf234d
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf2351
+ mov si, word [bp-0019ah] ; 8b b6 66 fe ; 0xf2354
+ mov ax, word [bp-0019ch] ; 8b 86 64 fe ; 0xf2358
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf235c
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf235f ata.c:591
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2362
+ jc short 02372h ; 72 0c ; 0xf2364
+ jbe short 0237ah ; 76 12 ; 0xf2366
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2368
+ je short 02382h ; 74 16 ; 0xf236a
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf236c
+ je short 0237eh ; 74 0e ; 0xf236e
+ jmp short 023b7h ; eb 45 ; 0xf2370
+ test al, al ; 84 c0 ; 0xf2372
+ jne short 023b7h ; 75 41 ; 0xf2374
+ mov BL, strict byte 01eh ; b3 1e ; 0xf2376 ata.c:594
+ jmp short 02384h ; eb 0a ; 0xf2378 ata.c:595
+ mov BL, strict byte 026h ; b3 26 ; 0xf237a ata.c:597
+ jmp short 02384h ; eb 06 ; 0xf237c ata.c:598
+ mov BL, strict byte 067h ; b3 67 ; 0xf237e ata.c:600
+ jmp short 02384h ; eb 02 ; 0xf2380 ata.c:601
+ mov BL, strict byte 070h ; b3 70 ; 0xf2382 ata.c:603
+ mov al, bl ; 88 d8 ; 0xf2384 ata.c:610
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf2386
+ xor ah, ah ; 30 e4 ; 0xf2388
+ call 0165fh ; e8 d2 f2 ; 0xf238a
+ mov dh, al ; 88 c6 ; 0xf238d
+ mov al, bl ; 88 d8 ; 0xf238f
+ xor ah, ah ; 30 e4 ; 0xf2391
+ call 0165fh ; e8 c9 f2 ; 0xf2393
+ mov ah, dh ; 88 f4 ; 0xf2396
+ mov word [bp-038h], ax ; 89 46 c8 ; 0xf2398
+ mov al, bl ; 88 d8 ; 0xf239b ata.c:611
+ add AL, strict byte 002h ; 04 02 ; 0xf239d
+ xor ah, ah ; 30 e4 ; 0xf239f
+ call 0165fh ; e8 bb f2 ; 0xf23a1
+ xor ah, ah ; 30 e4 ; 0xf23a4
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf23a6
+ mov al, bl ; 88 d8 ; 0xf23a9 ata.c:612
+ add AL, strict byte 007h ; 04 07 ; 0xf23ab
+ call 0165fh ; e8 af f2 ; 0xf23ad
+ xor ah, ah ; 30 e4 ; 0xf23b0
+ mov word [bp-036h], ax ; 89 46 ca ; 0xf23b2
+ jmp short 023c9h ; eb 12 ; 0xf23b5 ata.c:614
+ push word [bp-020h] ; ff 76 e0 ; 0xf23b7 ata.c:615
+ push word [bp-02eh] ; ff 76 d2 ; 0xf23ba
+ push si ; 56 ; 0xf23bd
+ push word [bp-01ah] ; ff 76 e6 ; 0xf23be
+ mov dx, ss ; 8c d2 ; 0xf23c1
+ lea ax, [bp-03ah] ; 8d 46 c6 ; 0xf23c3
+ call 05a0fh ; e8 46 36 ; 0xf23c6
+ mov bx, 00eeah ; bb ea 0e ; 0xf23c9 ata.c:618
+ mov cx, ds ; 8c d9 ; 0xf23cc
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf23ce
+ call 018d9h ; e8 05 f5 ; 0xf23d1
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf23d4
+ push ax ; 50 ; 0xf23d7
+ mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf23d8
+ push ax ; 50 ; 0xf23db
+ mov ax, word [bp-038h] ; 8b 46 c8 ; 0xf23dc
+ push ax ; 50 ; 0xf23df
+ push word [bp-022h] ; ff 76 de ; 0xf23e0
+ push word [bp-02ch] ; ff 76 d4 ; 0xf23e3
+ push word [bp-01ch] ; ff 76 e4 ; 0xf23e6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf23e9
+ xor ah, ah ; 30 e4 ; 0xf23ec
+ push ax ; 50 ; 0xf23ee
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf23ef
+ push ax ; 50 ; 0xf23f2
+ mov ax, 0015dh ; b8 5d 01 ; 0xf23f3
+ push ax ; 50 ; 0xf23f6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf23f7
+ push ax ; 50 ; 0xf23fa
+ call 0191ch ; e8 1e f5 ; 0xf23fb
+ add sp, strict byte 00014h ; 83 c4 14 ; 0xf23fe
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2401 ata.c:620
+ xor ah, ah ; 30 e4 ; 0xf2404
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2406
+ imul dx ; f7 ea ; 0xf2409
+ les di, [bp-02ah] ; c4 7e d6 ; 0xf240b
+ add di, ax ; 01 c7 ; 0xf240e
+ mov byte [es:di+023h], 0ffh ; 26 c6 45 23 ff ; 0xf2410
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2415 ata.c:621
+ mov byte [es:di+024h], al ; 26 88 45 24 ; 0xf2418
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf241c ata.c:622
+ mov byte [es:di+026h], al ; 26 88 45 26 ; 0xf241f
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2423 ata.c:623
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xf2426
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf242a ata.c:624
+ mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf242d
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf2431 ata.c:625
+ mov word [es:di+032h], ax ; 26 89 45 32 ; 0xf2434
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf2438 ata.c:626
+ mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf243b
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf243f ata.c:627
+ mov word [es:di+03ch], ax ; 26 89 45 3c ; 0xf2442
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf2446
+ mov word [es:di+03ah], ax ; 26 89 45 3a ; 0xf2449
+ mov word [es:di+038h], si ; 26 89 75 38 ; 0xf244d
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf2451
+ mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf2454
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf2458 ata.c:628
+ push DS ; 1e ; 0xf245b
+ push SS ; 16 ; 0xf245c
+ pop DS ; 1f ; 0xf245d
+ lea si, [bp-03ah] ; 8d 76 c6 ; 0xf245e
+ movsw ; a5 ; 0xf2461
+ movsw ; a5 ; 0xf2462
+ movsw ; a5 ; 0xf2463
+ pop DS ; 1f ; 0xf2464
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2465 ata.c:629
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2468
+ jnc short 024dch ; 73 70 ; 0xf246a
+ test al, al ; 84 c0 ; 0xf246c ata.c:635
+ jne short 02475h ; 75 05 ; 0xf246e
+ mov si, strict word 0003dh ; be 3d 00 ; 0xf2470 ata.c:636
+ jmp short 02478h ; eb 03 ; 0xf2473 ata.c:637
+ mov si, strict word 0004dh ; be 4d 00 ; 0xf2475 ata.c:638
+ mov cx, word [bp-024h] ; 8b 4e dc ; 0xf2478
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf247b ata.c:650
+ xor ah, ah ; 30 e4 ; 0xf247e
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf2480
+ imul dx ; f7 ea ; 0xf2483
+ mov bx, ax ; 89 c3 ; 0xf2485
+ sal bx, 1 ; d1 e3 ; 0xf2487
+ sal bx, 1 ; d1 e3 ; 0xf2489
+ add bx, 00104h ; 81 c3 04 01 ; 0xf248b
+ xor ax, ax ; 31 c0 ; 0xf248f
+ mov es, ax ; 8e c0 ; 0xf2491
+ mov word [es:bx], si ; 26 89 37 ; 0xf2493 ata.c:651
+ mov word [es:bx+002h], cx ; 26 89 4f 02 ; 0xf2496
+ mov es, cx ; 8e c1 ; 0xf249a ata.c:657
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf249c
+ mov word [es:si+005h], ax ; 26 89 44 05 ; 0xf24a0
+ mov word [es:si+007h], ax ; 26 89 44 07 ; 0xf24a4
+ mov bx, word [bp-038h] ; 8b 5e c8 ; 0xf24a8 ata.c:659
+ mov word [es:si], bx ; 26 89 1c ; 0xf24ab
+ mov bl, byte [bp-03ah] ; 8a 5e c6 ; 0xf24ae ata.c:660
+ mov byte [es:si+002h], bl ; 26 88 5c 02 ; 0xf24b1
+ mov byte [es:si+003h], 0a0h ; 26 c6 44 03 a0 ; 0xf24b5 ata.c:661
+ mov al, byte [bp-022h] ; 8a 46 de ; 0xf24ba ata.c:662
+ mov byte [es:si+004h], al ; 26 88 44 04 ; 0xf24bd
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf24c1 ata.c:663
+ mov word [es:si+009h], ax ; 26 89 44 09 ; 0xf24c4
+ mov al, byte [bp-02ch] ; 8a 46 d4 ; 0xf24c8 ata.c:664
+ mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf24cb
+ mov bl, byte [bp-036h] ; 8a 5e ca ; 0xf24cf ata.c:665
+ mov byte [es:si+00eh], bl ; 26 88 5c 0e ; 0xf24d2
+ xor bl, bl ; 30 db ; 0xf24d6 ata.c:666
+ xor bh, bh ; 30 ff ; 0xf24d8 ata.c:667
+ jmp short 024e3h ; eb 07 ; 0xf24da
+ jmp short 024fch ; eb 1e ; 0xf24dc
+ cmp bh, 00fh ; 80 ff 0f ; 0xf24de
+ jnc short 024f4h ; 73 11 ; 0xf24e1
+ mov al, bh ; 88 f8 ; 0xf24e3 ata.c:668
+ xor ah, ah ; 30 e4 ; 0xf24e5
+ mov es, cx ; 8e c1 ; 0xf24e7
+ mov di, si ; 89 f7 ; 0xf24e9
+ add di, ax ; 01 c7 ; 0xf24eb
+ add bl, byte [es:di] ; 26 02 1d ; 0xf24ed
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf24f0
+ jmp short 024deh ; eb ea ; 0xf24f2
+ neg bl ; f6 db ; 0xf24f4 ata.c:669
+ mov es, cx ; 8e c1 ; 0xf24f6 ata.c:670
+ mov byte [es:si+00fh], bl ; 26 88 5c 0f ; 0xf24f8
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf24fc ata.c:674
+ xor bh, bh ; 30 ff ; 0xf24ff
+ mov es, [bp-028h] ; 8e 46 d8 ; 0xf2501
+ add bx, word [bp-02ah] ; 03 5e d6 ; 0xf2504
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2507
+ mov byte [es:bx+00253h], al ; 26 88 87 53 02 ; 0xf250a
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf250f ata.c:675
+ cmp byte [bp-016h], 003h ; 80 7e ea 03 ; 0xf2512 ata.c:679
+ jne short 0257ch ; 75 64 ; 0xf2516
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2518 ata.c:684
+ xor ah, ah ; 30 e4 ; 0xf251b
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf251d
+ imul dx ; f7 ea ; 0xf2520
+ les bx, [bp-02ah] ; c4 5e d6 ; 0xf2522
+ add bx, ax ; 01 c3 ; 0xf2525
+ mov byte [es:bx+023h], 005h ; 26 c6 47 23 05 ; 0xf2527
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf252c ata.c:685
+ lea dx, [bp-00264h] ; 8d 96 9c fd ; 0xf2531 ata.c:686
+ mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xf2535
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf2538
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf253c
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2540 ata.c:687
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2543
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf2547 ata.c:689
+ mov bx, 000a1h ; bb a1 00 ; 0xf254a
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf254d
+ mov dx, es ; 8c c2 ; 0xf2550
+ call 01e44h ; e8 ef f8 ; 0xf2552
+ test ax, ax ; 85 c0 ; 0xf2555
+ je short 02567h ; 74 0e ; 0xf2557
+ mov ax, 00184h ; b8 84 01 ; 0xf2559 ata.c:690
+ push ax ; 50 ; 0xf255c
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf255d
+ push ax ; 50 ; 0xf2560
+ call 0191ch ; e8 b8 f3 ; 0xf2561
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2564
+ mov al, byte [bp-00263h] ; 8a 86 9d fd ; 0xf2567 ata.c:692
+ and AL, strict byte 01fh ; 24 1f ; 0xf256b
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf256d
+ test byte [bp-00264h], 080h ; f6 86 9c fd 80 ; 0xf2570 ata.c:693
+ je short 0257eh ; 74 07 ; 0xf2575
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf2577
+ jmp short 02580h ; eb 04 ; 0xf257a
+ jmp short 025b8h ; eb 3a ; 0xf257c
+ xor cx, cx ; 31 c9 ; 0xf257e
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2580 ata.c:701
+ xor ah, ah ; 30 e4 ; 0xf2583
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2585
+ imul dx ; f7 ea ; 0xf2588
+ les bx, [bp-02ah] ; c4 5e d6 ; 0xf258a
+ add bx, ax ; 01 c3 ; 0xf258d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf258f
+ mov byte [es:bx+023h], al ; 26 88 47 23 ; 0xf2592
+ mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf2596 ata.c:702
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf259a ata.c:703
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf259f ata.c:704
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf25a5 ata.c:707
+ xor bh, bh ; 30 ff ; 0xf25a8
+ add bx, word [bp-02ah] ; 03 5e d6 ; 0xf25aa
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf25ad
+ mov byte [es:bx+00268h], al ; 26 88 87 68 02 ; 0xf25b0
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf25b5 ata.c:708
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf25b8 ata.c:717
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf25bb
+ je short 025eeh ; 74 2f ; 0xf25bd
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf25bf
+ jne short 02615h ; 75 52 ; 0xf25c1
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf25c3 ata.c:719
+ xor ah, ah ; 30 e4 ; 0xf25c6
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf25c8
+ imul dx ; f7 ea ; 0xf25cb
+ les si, [bp-02ah] ; c4 76 d6 ; 0xf25cd
+ add si, ax ; 01 c6 ; 0xf25d0
+ mov ax, word [es:si+03ch] ; 26 8b 44 3c ; 0xf25d2
+ mov bx, word [es:si+03ah] ; 26 8b 5c 3a ; 0xf25d6
+ mov cx, word [es:si+038h] ; 26 8b 4c 38 ; 0xf25da
+ mov dx, word [es:si+036h] ; 26 8b 54 36 ; 0xf25de
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf25e2
+ call 0b070h ; e8 88 8a ; 0xf25e5
+ mov word [bp-026h], dx ; 89 56 da ; 0xf25e8
+ mov word [bp-032h], cx ; 89 4e ce ; 0xf25eb
+ mov dh, byte [bp-001c3h] ; 8a b6 3d fe ; 0xf25ee ata.c:722
+ mov dl, byte [bp-001c4h] ; 8a 96 3c fe ; 0xf25f2
+ mov byte [bp-010h], 00fh ; c6 46 f0 0f ; 0xf25f6 ata.c:723
+ jmp short 02605h ; eb 09 ; 0xf25fa
+ dec byte [bp-010h] ; fe 4e f0 ; 0xf25fc ata.c:726
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf25ff
+ jbe short 02611h ; 76 0c ; 0xf2603
+ mov cl, byte [bp-010h] ; 8a 4e f0 ; 0xf2605
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2608
+ sal ax, CL ; d3 e0 ; 0xf260b
+ test dx, ax ; 85 c2 ; 0xf260d
+ je short 025fch ; 74 eb ; 0xf260f
+ xor si, si ; 31 f6 ; 0xf2611 ata.c:729
+ jmp short 0261ch ; eb 07 ; 0xf2613
+ jmp short 0264bh ; eb 34 ; 0xf2615
+ cmp si, strict byte 00014h ; 83 fe 14 ; 0xf2617
+ jnl short 02631h ; 7d 15 ; 0xf261a
+ mov di, si ; 89 f7 ; 0xf261c ata.c:730
+ sal di, 1 ; d1 e7 ; 0xf261e
+ mov al, byte [bp+di-0022dh] ; 8a 83 d3 fd ; 0xf2620
+ mov byte [bp+di-064h], al ; 88 43 9c ; 0xf2624
+ mov al, byte [bp+di-0022eh] ; 8a 83 d2 fd ; 0xf2627 ata.c:731
+ mov byte [bp+di-063h], al ; 88 43 9d ; 0xf262b
+ inc si ; 46 ; 0xf262e ata.c:732
+ jmp short 02617h ; eb e6 ; 0xf262f
+ mov byte [bp-03ch], 000h ; c6 46 c4 00 ; 0xf2631 ata.c:735
+ mov si, strict word 00027h ; be 27 00 ; 0xf2635 ata.c:736
+ jmp short 0263fh ; eb 05 ; 0xf2638
+ dec si ; 4e ; 0xf263a ata.c:741
+ test si, si ; 85 f6 ; 0xf263b
+ jle short 0264bh ; 7e 0c ; 0xf263d
+ cmp byte [bp+si-064h], 020h ; 80 7a 9c 20 ; 0xf263f
+ jne short 0264bh ; 75 06 ; 0xf2643
+ mov byte [bp+si-064h], 000h ; c6 42 9c 00 ; 0xf2645
+ jmp short 0263ah ; eb ef ; 0xf2649
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf264b ata.c:748
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf264e
+ je short 026b8h ; 74 66 ; 0xf2650
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2652
+ je short 0265dh ; 74 07 ; 0xf2654
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2656
+ je short 026c3h ; 74 69 ; 0xf2658
+ jmp near 02754h ; e9 f7 00 ; 0xf265a
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf265d ata.c:751
+ je short 02668h ; 74 05 ; 0xf2661
+ mov ax, 001afh ; b8 af 01 ; 0xf2663
+ jmp short 0266bh ; eb 03 ; 0xf2666
+ mov ax, 001b6h ; b8 b6 01 ; 0xf2668
+ push ax ; 50 ; 0xf266b
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf266c
+ xor ah, ah ; 30 e4 ; 0xf266f
+ push ax ; 50 ; 0xf2671
+ mov ax, 001bdh ; b8 bd 01 ; 0xf2672
+ push ax ; 50 ; 0xf2675
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2676
+ push ax ; 50 ; 0xf2679
+ call 0191ch ; e8 9f f2 ; 0xf267a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf267d
+ xor si, si ; 31 f6 ; 0xf2680 ata.c:752
+ mov al, byte [bp+si-064h] ; 8a 42 9c ; 0xf2682 ata.c:753
+ xor ah, ah ; 30 e4 ; 0xf2685
+ inc si ; 46 ; 0xf2687
+ test ax, ax ; 85 c0 ; 0xf2688
+ je short 0269dh ; 74 11 ; 0xf268a
+ push ax ; 50 ; 0xf268c ata.c:754
+ mov ax, 001c8h ; b8 c8 01 ; 0xf268d
+ push ax ; 50 ; 0xf2690
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2691
+ push ax ; 50 ; 0xf2694
+ call 0191ch ; e8 84 f2 ; 0xf2695
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2698
+ jmp short 02682h ; eb e5 ; 0xf269b
+ push word [bp-032h] ; ff 76 ce ; 0xf269d ata.c:755
+ push word [bp-026h] ; ff 76 da ; 0xf26a0
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf26a3
+ push ax ; 50 ; 0xf26a6
+ mov ax, 001cbh ; b8 cb 01 ; 0xf26a7
+ push ax ; 50 ; 0xf26aa
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf26ab
+ push ax ; 50 ; 0xf26ae
+ call 0191ch ; e8 6a f2 ; 0xf26af
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf26b2
+ jmp near 02754h ; e9 9c 00 ; 0xf26b5 ata.c:756
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf26b8 ata.c:758
+ je short 026c5h ; 74 07 ; 0xf26bc
+ mov ax, 001afh ; b8 af 01 ; 0xf26be
+ jmp short 026c8h ; eb 05 ; 0xf26c1
+ jmp short 02731h ; eb 6c ; 0xf26c3
+ mov ax, 001b6h ; b8 b6 01 ; 0xf26c5
+ push ax ; 50 ; 0xf26c8
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf26c9
+ xor ah, ah ; 30 e4 ; 0xf26cc
+ push ax ; 50 ; 0xf26ce
+ mov ax, 001bdh ; b8 bd 01 ; 0xf26cf
+ push ax ; 50 ; 0xf26d2
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf26d3
+ push ax ; 50 ; 0xf26d6
+ call 0191ch ; e8 42 f2 ; 0xf26d7
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf26da
+ xor si, si ; 31 f6 ; 0xf26dd ata.c:759
+ mov bl, byte [bp+si-064h] ; 8a 5a 9c ; 0xf26df ata.c:760
+ xor bh, bh ; 30 ff ; 0xf26e2
+ inc si ; 46 ; 0xf26e4
+ test bx, bx ; 85 db ; 0xf26e5
+ je short 026fah ; 74 11 ; 0xf26e7
+ push bx ; 53 ; 0xf26e9 ata.c:761
+ mov ax, 001c8h ; b8 c8 01 ; 0xf26ea
+ push ax ; 50 ; 0xf26ed
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf26ee
+ push ax ; 50 ; 0xf26f1
+ call 0191ch ; e8 27 f2 ; 0xf26f2
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf26f5
+ jmp short 026dfh ; eb e5 ; 0xf26f8
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf26fa ata.c:762
+ xor ah, ah ; 30 e4 ; 0xf26fd
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf26ff
+ imul dx ; f7 ea ; 0xf2702
+ les bx, [bp-02ah] ; c4 5e d6 ; 0xf2704
+ add bx, ax ; 01 c3 ; 0xf2707
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf2709
+ jne short 0271bh ; 75 0b ; 0xf270e
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2710 ata.c:763
+ xor ah, ah ; 30 e4 ; 0xf2713
+ push ax ; 50 ; 0xf2715
+ mov ax, 001ebh ; b8 eb 01 ; 0xf2716
+ jmp short 02724h ; eb 09 ; 0xf2719 ata.c:764
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf271b ata.c:765
+ xor ah, ah ; 30 e4 ; 0xf271e
+ push ax ; 50 ; 0xf2720
+ mov ax, 00205h ; b8 05 02 ; 0xf2721
+ push ax ; 50 ; 0xf2724
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2725
+ push ax ; 50 ; 0xf2728
+ call 0191ch ; e8 f0 f1 ; 0xf2729
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf272c
+ jmp short 02754h ; eb 23 ; 0xf272f ata.c:766
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2731 ata.c:768
+ je short 0273ch ; 74 05 ; 0xf2735
+ mov ax, 001afh ; b8 af 01 ; 0xf2737
+ jmp short 0273fh ; eb 03 ; 0xf273a
+ mov ax, 001b6h ; b8 b6 01 ; 0xf273c
+ push ax ; 50 ; 0xf273f
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf2740
+ xor ah, ah ; 30 e4 ; 0xf2743
+ push ax ; 50 ; 0xf2745
+ mov ax, 00217h ; b8 17 02 ; 0xf2746
+ push ax ; 50 ; 0xf2749
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf274a
+ push ax ; 50 ; 0xf274d
+ call 0191ch ; e8 cb f1 ; 0xf274e
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf2751
+ inc byte [bp-014h] ; fe 46 ec ; 0xf2754 ata.c:773
+ cmp byte [bp-014h], 008h ; 80 7e ec 08 ; 0xf2757
+ jnc short 027a7h ; 73 4a ; 0xf275b
+ mov bl, byte [bp-014h] ; 8a 5e ec ; 0xf275d
+ xor bh, bh ; 30 ff ; 0xf2760
+ mov ax, bx ; 89 d8 ; 0xf2762
+ cwd ; 99 ; 0xf2764
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf2765
+ sar ax, 1 ; d1 f8 ; 0xf2767
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf2769
+ mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf276c
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf276f
+ mov ax, bx ; 89 d8 ; 0xf2772
+ cwd ; 99 ; 0xf2774
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf2775
+ idiv bx ; f7 fb ; 0xf2778
+ mov cx, dx ; 89 d1 ; 0xf277a
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf277c
+ mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf277f
+ xor ah, ah ; 30 e4 ; 0xf2782
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2784
+ imul dx ; f7 ea ; 0xf2787
+ les bx, [bp-02ah] ; c4 5e d6 ; 0xf2789
+ add bx, ax ; 01 c3 ; 0xf278c
+ mov si, word [es:bx+0027eh] ; 26 8b b7 7e 02 ; 0xf278e
+ mov di, word [es:bx+00280h] ; 26 8b bf 80 02 ; 0xf2793
+ lea dx, [si+007h] ; 8d 54 07 ; 0xf2798
+ in AL, DX ; ec ; 0xf279b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf279c
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf279e
+ je short 027a5h ; 74 03 ; 0xf27a0
+ jmp near 02227h ; e9 82 fa ; 0xf27a2
+ jmp short 02754h ; eb ad ; 0xf27a5
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf27a7 ata.c:776
+ les bx, [bp-02ah] ; c4 5e d6 ; 0xf27aa
+ mov byte [es:bx+00252h], al ; 26 88 87 52 02 ; 0xf27ad
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf27b2 ata.c:777
+ mov byte [es:bx+00267h], al ; 26 88 87 67 02 ; 0xf27b5
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf27ba ata.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf27bd
+ mov es, ax ; 8e c0 ; 0xf27c0
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf27c2
+ mov byte [es:bx], al ; 26 88 07 ; 0xf27c5
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf27c8 ata.c:790
+ pop di ; 5f ; 0xf27cb
+ pop si ; 5e ; 0xf27cc
+ pop bp ; 5d ; 0xf27cd
+ retn ; c3 ; 0xf27ce
+ ; disGetNextSymbol 0xf27cf LB 0x8be9 -> off=0x0 cb=000000000000028e uValue=00000000000f11cf 'ata_cmd_data_out'
+ata_cmd_data_out: ; 0xf27cf LB 0x28e
+ push bp ; 55 ; 0xf27cf ata.c:804
+ mov bp, sp ; 89 e5 ; 0xf27d0
+ push si ; 56 ; 0xf27d2
+ push di ; 57 ; 0xf27d3
+ sub sp, strict byte 00020h ; 83 ec 20 ; 0xf27d4
+ mov di, ax ; 89 c7 ; 0xf27d7
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf27d9
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf27dc
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf27df
+ mov es, dx ; 8e c2 ; 0xf27e2 ata.c:816
+ mov al, byte [es:di+00ch] ; 26 8a 45 0c ; 0xf27e4
+ xor ah, ah ; 30 e4 ; 0xf27e8
+ mov dx, ax ; 89 c2 ; 0xf27ea
+ shr ax, 1 ; d1 e8 ; 0xf27ec ata.c:817
+ and dl, 001h ; 80 e2 01 ; 0xf27ee ata.c:818
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf27f1
+ xor ah, ah ; 30 e4 ; 0xf27f4 ata.c:820
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf27f6
+ imul dx ; f7 ea ; 0xf27f9
+ mov bx, di ; 89 fb ; 0xf27fb
+ add bx, ax ; 01 c3 ; 0xf27fd
+ mov ax, word [es:bx+0027eh] ; 26 8b 87 7e 02 ; 0xf27ff
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2804
+ mov ax, word [es:bx+00280h] ; 26 8b 87 80 02 ; 0xf2807 ata.c:821
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf280c
+ mov word [bp-01ch], 00100h ; c7 46 e4 00 01 ; 0xf280f ata.c:829
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2814 ata.c:831
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2817
+ in AL, DX ; ec ; 0xf281a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf281b
+ test AL, strict byte 080h ; a8 80 ; 0xf281d ata.c:832
+ je short 02830h ; 74 0f ; 0xf281f
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2821 ata.c:835
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2824
+ mov AL, strict byte 008h ; b0 08 ; 0xf2827
+ out DX, AL ; ee ; 0xf2829
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf282a ata.c:836
+ jmp near 02a56h ; e9 26 02 ; 0xf282d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2830 ata.c:839
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf2833
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2837
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf283a
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf283e
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf2841
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf2845
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf2848
+ mov word [bp-022h], ax ; 89 46 de ; 0xf284b
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf284e ata.c:840
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf2852
+ mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf2855
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2859
+ mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf285c ata.c:841
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2860
+ mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf2863 ata.c:842
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf2867
+ mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf286a ata.c:843
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf286e
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2871 ata.c:846
+ test ax, ax ; 85 c0 ; 0xf2874
+ je short 0287bh ; 74 03 ; 0xf2876
+ jmp near 02942h ; e9 c7 00 ; 0xf2878
+ xor bx, bx ; 31 db ; 0xf287b ata.c:847
+ xor dx, dx ; 31 d2 ; 0xf287d
+ mov si, word [bp-022h] ; 8b 76 de ; 0xf287f
+ add si, word [bp-01ah] ; 03 76 e6 ; 0xf2882
+ adc bx, word [bp-010h] ; 13 5e f0 ; 0xf2885
+ adc dx, word [bp-020h] ; 13 56 e0 ; 0xf2888
+ adc ax, word [bp-00ch] ; 13 46 f4 ; 0xf288b
+ test ax, ax ; 85 c0 ; 0xf288e
+ jnbe short 028a2h ; 77 10 ; 0xf2890
+ jne short 02905h ; 75 71 ; 0xf2892
+ test dx, dx ; 85 d2 ; 0xf2894
+ jnbe short 028a2h ; 77 0a ; 0xf2896
+ jne short 02905h ; 75 6b ; 0xf2898
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf289a
+ jnbe short 028a2h ; 77 02 ; 0xf289e
+ jne short 02905h ; 75 63 ; 0xf28a0
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28a2 ata.c:849
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf28a5
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28a8
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf28ab
+ mov si, strict word 00018h ; be 18 00 ; 0xf28ae
+ call 0b070h ; e8 bc 87 ; 0xf28b1
+ xor dh, dh ; 30 f6 ; 0xf28b4
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf28b6
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28b9 ata.c:850
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf28bc
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28bf
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf28c2
+ mov si, strict word 00020h ; be 20 00 ; 0xf28c5
+ call 0b070h ; e8 a5 87 ; 0xf28c8
+ mov bx, dx ; 89 d3 ; 0xf28cb
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf28cd
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf28d0 ata.c:851
+ mov al, ah ; 88 e0 ; 0xf28d3
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28d5
+ inc dx ; 42 ; 0xf28d8
+ inc dx ; 42 ; 0xf28d9
+ out DX, AL ; ee ; 0xf28da
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28db ata.c:852
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf28de
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf28e1
+ out DX, AL ; ee ; 0xf28e4
+ xor bh, bh ; 30 ff ; 0xf28e5 ata.c:853
+ mov ax, bx ; 89 d8 ; 0xf28e7
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28e9
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf28ec
+ out DX, AL ; ee ; 0xf28ef
+ mov al, byte [bp-023h] ; 8a 46 dd ; 0xf28f0 ata.c:854
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28f3
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf28f6
+ out DX, AL ; ee ; 0xf28f9
+ xor al, al ; 30 c0 ; 0xf28fa ata.c:857
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf28fc
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf28ff
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2902
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf2905 ata.c:859
+ xor ah, ah ; 30 e4 ; 0xf2908
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf290a
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf290d ata.c:860
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf2910
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2913
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf2916
+ mov si, strict word 00008h ; be 08 00 ; 0xf2919
+ call 0b070h ; e8 51 87 ; 0xf291c
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf291f
+ mov word [bp-020h], bx ; 89 5e e0 ; 0xf2922
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf2925
+ mov word [bp-022h], dx ; 89 56 de ; 0xf2928
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf292b ata.c:861
+ mov si, strict word 00010h ; be 10 00 ; 0xf292e ata.c:862
+ call 0b070h ; e8 3c 87 ; 0xf2931
+ mov word [bp-022h], dx ; 89 56 de ; 0xf2934
+ mov ax, dx ; 89 d0 ; 0xf2937 ata.c:863
+ xor ah, dh ; 30 f4 ; 0xf2939
+ and AL, strict byte 00fh ; 24 0f ; 0xf293b
+ or AL, strict byte 040h ; 0c 40 ; 0xf293d
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf293f
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2942 ata.c:866
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2945
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2948
+ out DX, AL ; ee ; 0xf294a
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf294b ata.c:867
+ inc dx ; 42 ; 0xf294e
+ xor al, al ; 30 c0 ; 0xf294f
+ out DX, AL ; ee ; 0xf2951
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2952 ata.c:868
+ inc dx ; 42 ; 0xf2955
+ inc dx ; 42 ; 0xf2956
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2957
+ out DX, AL ; ee ; 0xf295a
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf295b ata.c:869
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf295e
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2961
+ out DX, AL ; ee ; 0xf2964
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2965 ata.c:870
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2968
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf296b
+ out DX, AL ; ee ; 0xf296e
+ mov al, byte [bp-023h] ; 8a 46 dd ; 0xf296f ata.c:871
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2972
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2975
+ out DX, AL ; ee ; 0xf2978
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2979 ata.c:872
+ je short 02984h ; 74 05 ; 0xf297d
+ mov ax, 000b0h ; b8 b0 00 ; 0xf297f
+ jmp short 02987h ; eb 03 ; 0xf2982
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2984
+ mov dl, byte [bp-018h] ; 8a 56 e8 ; 0xf2987
+ xor dh, dh ; 30 f6 ; 0xf298a
+ or ax, dx ; 09 d0 ; 0xf298c
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf298e
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2991
+ out DX, AL ; ee ; 0xf2994
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2995 ata.c:873
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2998
+ mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf299b
+ out DX, AL ; ee ; 0xf299e
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf299f ata.c:876
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf29a2
+ in AL, DX ; ec ; 0xf29a5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf29a6
+ mov bl, al ; 88 c3 ; 0xf29a8
+ test AL, strict byte 080h ; a8 80 ; 0xf29aa ata.c:877
+ jne short 0299fh ; 75 f1 ; 0xf29ac
+ test AL, strict byte 001h ; a8 01 ; 0xf29ae ata.c:881
+ je short 029c1h ; 74 0f ; 0xf29b0
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf29b2 ata.c:884
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29b5
+ mov AL, strict byte 008h ; b0 08 ; 0xf29b8
+ out DX, AL ; ee ; 0xf29ba
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf29bb ata.c:885
+ jmp near 02a56h ; e9 95 00 ; 0xf29be
+ test bl, 008h ; f6 c3 08 ; 0xf29c1 ata.c:886
+ jne short 029d5h ; 75 0f ; 0xf29c4
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf29c6 ata.c:889
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29c9
+ mov AL, strict byte 008h ; b0 08 ; 0xf29cc
+ out DX, AL ; ee ; 0xf29ce
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf29cf ata.c:890
+ jmp near 02a56h ; e9 81 00 ; 0xf29d2
+ sti ; fb ; 0xf29d5 ata.c:895
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf29d6 ata.c:900
+ cmp ax, 0f800h ; 3d 00 f8 ; 0xf29d9
+ jc short 029f0h ; 72 12 ; 0xf29dc
+ mov dx, ax ; 89 c2 ; 0xf29de ata.c:901
+ sub dx, 00800h ; 81 ea 00 08 ; 0xf29e0
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf29e4
+ add ax, 00080h ; 05 80 00 ; 0xf29e7
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf29ea
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf29ed
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29f0 ata.c:908
+ mov cx, word [bp-01ch] ; 8b 4e e4 ; 0xf29f3
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf29f6
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf29f9
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf29fc
+ mov word [bp-016h], si ; 89 76 ea ; 0xf29ff
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2a02 ata.c:910
+ inc word [es:di+018h] ; 26 ff 45 18 ; 0xf2a05
+ dec word [bp-01ah] ; ff 4e e6 ; 0xf2a09 ata.c:911
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2a0c ata.c:913
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2a0f
+ in AL, DX ; ec ; 0xf2a12
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2a13
+ mov bl, al ; 88 c3 ; 0xf2a15
+ test AL, strict byte 080h ; a8 80 ; 0xf2a17 ata.c:914
+ jne short 02a0ch ; 75 f1 ; 0xf2a19
+ cmp word [bp-01ah], strict byte 00000h ; 83 7e e6 00 ; 0xf2a1b ata.c:917
+ jne short 02a35h ; 75 14 ; 0xf2a1f
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2a21 ata.c:918
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2a23
+ je short 02a4bh ; 74 24 ; 0xf2a25
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a27 ata.c:922
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a2a
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a2d
+ out DX, AL ; ee ; 0xf2a2f
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf2a30 ata.c:923
+ jmp short 02a56h ; eb 21 ; 0xf2a33
+ mov al, bl ; 88 d8 ; 0xf2a35 ata.c:928
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2a37
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2a39
+ je short 029d6h ; 74 99 ; 0xf2a3b
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a3d ata.c:932
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a40
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a43
+ out DX, AL ; ee ; 0xf2a45
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf2a46 ata.c:933
+ jmp short 02a56h ; eb 0b ; 0xf2a49
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a4b ata.c:939
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a4e
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a51
+ out DX, AL ; ee ; 0xf2a53
+ xor ax, ax ; 31 c0 ; 0xf2a54 ata.c:940
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2a56 ata.c:941
+ pop di ; 5f ; 0xf2a59
+ pop si ; 5e ; 0xf2a5a
+ pop bp ; 5d ; 0xf2a5b
+ retn ; c3 ; 0xf2a5c
+ ; disGetNextSymbol 0xf2a5d LB 0x895b -> off=0x0 cb=00000000000000c1 uValue=00000000000f145d 'ata_read_sectors'
+ata_read_sectors: ; 0xf2a5d LB 0xc1
+ push bp ; 55 ; 0xf2a5d ata.c:951
+ mov bp, sp ; 89 e5 ; 0xf2a5e
+ push si ; 56 ; 0xf2a60
+ push di ; 57 ; 0xf2a61
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf2a62
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf2a65
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf2a68 ata.c:957
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2a6b
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf2a6f ata.c:958
+ mov CL, strict byte 009h ; b1 09 ; 0xf2a73
+ mov dx, bx ; 89 da ; 0xf2a75
+ sal dx, CL ; d3 e2 ; 0xf2a77
+ mov cx, dx ; 89 d1 ; 0xf2a79
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2a7b ata.c:960
+ je short 02aa5h ; 74 23 ; 0xf2a80
+ xor ah, ah ; 30 e4 ; 0xf2a82 ata.c:962
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf2a84
+ imul di ; f7 ef ; 0xf2a87
+ mov dx, es ; 8c c2 ; 0xf2a89
+ mov [bp-00ah], es ; 8c 46 f6 ; 0xf2a8b
+ mov di, si ; 89 f7 ; 0xf2a8e
+ add di, ax ; 01 c7 ; 0xf2a90
+ mov word [es:di+028h], cx ; 26 89 4d 28 ; 0xf2a92
+ mov cx, bx ; 89 d9 ; 0xf2a96 ata.c:964
+ mov bx, 000c4h ; bb c4 00 ; 0xf2a98
+ mov ax, si ; 89 f0 ; 0xf2a9b
+ call 01e44h ; e8 a4 f3 ; 0xf2a9d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2aa0 ata.c:965
+ jmp short 02b0fh ; eb 6a ; 0xf2aa3 ata.c:966
+ xor di, di ; 31 ff ; 0xf2aa5 ata.c:968
+ mov word [bp-008h], di ; 89 7e f8 ; 0xf2aa7
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf2aaa
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf2aad
+ add dx, bx ; 01 da ; 0xf2ab0
+ mov word [bp-006h], dx ; 89 56 fa ; 0xf2ab2
+ adc di, word [es:si+002h] ; 26 13 7c 02 ; 0xf2ab5
+ mov dx, word [es:si+004h] ; 26 8b 54 04 ; 0xf2ab9
+ adc dx, word [bp-008h] ; 13 56 f8 ; 0xf2abd
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf2ac0
+ mov dx, word [es:si+006h] ; 26 8b 54 06 ; 0xf2ac3
+ adc dx, word [bp-00ah] ; 13 56 f6 ; 0xf2ac7
+ test dx, dx ; 85 d2 ; 0xf2aca
+ jnbe short 02ae0h ; 77 12 ; 0xf2acc
+ jne short 02aeeh ; 75 1e ; 0xf2ace
+ cmp word [bp-008h], strict byte 00000h ; 83 7e f8 00 ; 0xf2ad0
+ jnbe short 02ae0h ; 77 0a ; 0xf2ad4
+ jne short 02aeeh ; 75 16 ; 0xf2ad6
+ cmp di, 01000h ; 81 ff 00 10 ; 0xf2ad8
+ jnbe short 02ae0h ; 77 02 ; 0xf2adc
+ jne short 02aeeh ; 75 0e ; 0xf2ade
+ mov cx, bx ; 89 d9 ; 0xf2ae0 ata.c:970
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf2ae2
+ mov ax, si ; 89 f0 ; 0xf2ae5
+ mov dx, es ; 8c c2 ; 0xf2ae7
+ call 01e44h ; e8 58 f3 ; 0xf2ae9
+ jmp short 02b15h ; eb 27 ; 0xf2aec ata.c:971
+ xor ah, ah ; 30 e4 ; 0xf2aee ata.c:972
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf2af0
+ imul di ; f7 ef ; 0xf2af3
+ mov dx, es ; 8c c2 ; 0xf2af5
+ mov [bp-006h], es ; 8c 46 fa ; 0xf2af7
+ mov di, si ; 89 f7 ; 0xf2afa
+ add di, ax ; 01 c7 ; 0xf2afc
+ mov word [es:di+028h], cx ; 26 89 4d 28 ; 0xf2afe
+ mov cx, bx ; 89 d9 ; 0xf2b02 ata.c:974
+ mov bx, 000c4h ; bb c4 00 ; 0xf2b04
+ mov ax, si ; 89 f0 ; 0xf2b07
+ call 01e44h ; e8 38 f3 ; 0xf2b09
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf2b0c ata.c:975
+ mov word [es:di+028h], 00200h ; 26 c7 45 28 00 02 ; 0xf2b0f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b15 ata.c:979
+ pop di ; 5f ; 0xf2b18
+ pop si ; 5e ; 0xf2b19
+ pop bp ; 5d ; 0xf2b1a
+ retn 00004h ; c2 04 00 ; 0xf2b1b
+ ; disGetNextSymbol 0xf2b1e LB 0x889a -> off=0x0 cb=000000000000005b uValue=00000000000f151e 'ata_write_sectors'
+ata_write_sectors: ; 0xf2b1e LB 0x5b
+ push bp ; 55 ; 0xf2b1e ata.c:988
+ mov bp, sp ; 89 e5 ; 0xf2b1f
+ push si ; 56 ; 0xf2b21
+ push di ; 57 ; 0xf2b22
+ push ax ; 50 ; 0xf2b23
+ les si, [bp+004h] ; c4 76 04 ; 0xf2b24
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2b27 ata.c:992
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2b2b ata.c:994
+ je short 02b3eh ; 74 0c ; 0xf2b30
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf2b32 ata.c:996
+ mov ax, si ; 89 f0 ; 0xf2b35
+ mov dx, es ; 8c c2 ; 0xf2b37
+ call 027cfh ; e8 93 fc ; 0xf2b39
+ jmp short 02b70h ; eb 32 ; 0xf2b3c
+ xor ax, ax ; 31 c0 ; 0xf2b3e ata.c:999
+ xor bx, bx ; 31 db ; 0xf2b40
+ xor dx, dx ; 31 d2 ; 0xf2b42
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2b44
+ add di, cx ; 01 cf ; 0xf2b47
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2b49
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2b4c
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2b50
+ adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2b54
+ test dx, dx ; 85 d2 ; 0xf2b58
+ jnbe short 02b6bh ; 77 0f ; 0xf2b5a
+ jne short 02b32h ; 75 d4 ; 0xf2b5c
+ test bx, bx ; 85 db ; 0xf2b5e
+ jnbe short 02b6bh ; 77 09 ; 0xf2b60
+ jne short 02b32h ; 75 ce ; 0xf2b62
+ cmp ax, 01000h ; 3d 00 10 ; 0xf2b64
+ jnbe short 02b6bh ; 77 02 ; 0xf2b67
+ jne short 02b32h ; 75 c7 ; 0xf2b69
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf2b6b ata.c:1000
+ jmp short 02b35h ; eb c5 ; 0xf2b6e
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b70 ata.c:1004
+ pop di ; 5f ; 0xf2b73
+ pop si ; 5e ; 0xf2b74
+ pop bp ; 5d ; 0xf2b75
+ retn 00004h ; c2 04 00 ; 0xf2b76
+ ; disGetNextSymbol 0xf2b79 LB 0x883f -> off=0x0 cb=0000000000000295 uValue=00000000000f1579 'ata_cmd_packet'
+ata_cmd_packet: ; 0xf2b79 LB 0x295
+ push bp ; 55 ; 0xf2b79 ata.c:1016
+ mov bp, sp ; 89 e5 ; 0xf2b7a
+ push si ; 56 ; 0xf2b7c
+ push di ; 57 ; 0xf2b7d
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf2b7e
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2b81
+ mov si, bx ; 89 de ; 0xf2b84
+ mov di, cx ; 89 cf ; 0xf2b86
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2b88 ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2b8b
+ mov es, dx ; 8e c2 ; 0xf2b8e
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf2b90
+ mov word [bp-00ah], strict word 0005eh ; c7 46 f6 5e 00 ; 0xf2b93 ata.c:49
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf2b98
+ mov dx, ax ; 89 c2 ; 0xf2b9b ata.c:1028
+ shr dx, 1 ; d1 ea ; 0xf2b9d
+ mov ah, dl ; 88 d4 ; 0xf2b9f
+ mov cl, al ; 88 c1 ; 0xf2ba1 ata.c:1029
+ and cl, 001h ; 80 e1 01 ; 0xf2ba3
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf2ba6 ata.c:1032
+ jne short 02bcfh ; 75 23 ; 0xf2baa
+ mov bx, 00eeah ; bb ea 0e ; 0xf2bac ata.c:1033
+ mov cx, ds ; 8c d9 ; 0xf2baf
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2bb1
+ call 018d9h ; e8 22 ed ; 0xf2bb4
+ mov ax, 00231h ; b8 31 02 ; 0xf2bb7
+ push ax ; 50 ; 0xf2bba
+ mov ax, 00240h ; b8 40 02 ; 0xf2bbb
+ push ax ; 50 ; 0xf2bbe
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2bbf
+ push ax ; 50 ; 0xf2bc2
+ call 0191ch ; e8 56 ed ; 0xf2bc3
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2bc6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2bc9 ata.c:1034
+ jmp near 02e05h ; e9 36 02 ; 0xf2bcc
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf2bcf ata.c:1038
+ jne short 02bc9h ; 75 f4 ; 0xf2bd3
+ mov al, ah ; 88 e0 ; 0xf2bd5 ata.c:1043
+ xor ah, ah ; 30 e4 ; 0xf2bd7
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2bd9
+ imul dx ; f7 ea ; 0xf2bdc
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf2bde
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2be1
+ add bx, ax ; 01 c3 ; 0xf2be4
+ mov ax, word [es:bx+0027eh] ; 26 8b 87 7e 02 ; 0xf2be6
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2beb
+ mov ax, word [es:bx+00280h] ; 26 8b 87 80 02 ; 0xf2bee ata.c:1044
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2bf3
+ xor ax, ax ; 31 c0 ; 0xf2bf6 ata.c:1046
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2bf8
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2bfb
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2bfe ata.c:1048
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf2c01
+ jnc short 02c0bh ; 73 06 ; 0xf2c03
+ mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2c05 ata.c:1049
+ jmp short 02c11h ; eb 06 ; 0xf2c09
+ jbe short 02c11h ; 76 04 ; 0xf2c0b ata.c:1050
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2c0d ata.c:1051
+ shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2c11 ata.c:1052
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf2c14 ata.c:1056
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2c17
+ mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00 ; 0xf2c1a
+ mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00 ; 0xf2c20 ata.c:1057
+ mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2c26
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c2c ata.c:1059
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c2f
+ in AL, DX ; ec ; 0xf2c32
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c33
+ test AL, strict byte 080h ; a8 80 ; 0xf2c35 ata.c:1060
+ je short 02c3fh ; 74 06 ; 0xf2c37
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2c39 ata.c:1061
+ jmp near 02e05h ; e9 c6 01 ; 0xf2c3c
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c3f ata.c:1063
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c42
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2c45
+ out DX, AL ; ee ; 0xf2c47
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c48 ata.c:1067
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2c4b
+ mov AL, strict byte 0f0h ; b0 f0 ; 0xf2c4e
+ out DX, AL ; ee ; 0xf2c50
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c51 ata.c:1068
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2c54
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf2c57
+ out DX, AL ; ee ; 0xf2c59
+ test cl, cl ; 84 c9 ; 0xf2c5a ata.c:1069
+ je short 02c63h ; 74 05 ; 0xf2c5c
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2c5e
+ jmp short 02c66h ; eb 03 ; 0xf2c61
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2c63
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c66
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c69
+ out DX, AL ; ee ; 0xf2c6c
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c6d ata.c:1070
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c70
+ mov AL, strict byte 0a0h ; b0 a0 ; 0xf2c73
+ out DX, AL ; ee ; 0xf2c75
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c76 ata.c:1074
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c79
+ in AL, DX ; ec ; 0xf2c7c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c7d
+ mov bl, al ; 88 c3 ; 0xf2c7f
+ test AL, strict byte 080h ; a8 80 ; 0xf2c81 ata.c:1075
+ jne short 02c76h ; 75 f1 ; 0xf2c83
+ test AL, strict byte 001h ; a8 01 ; 0xf2c85 ata.c:1078
+ je short 02c98h ; 74 0f ; 0xf2c87
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c89 ata.c:1081
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c8c
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c8f
+ out DX, AL ; ee ; 0xf2c91
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2c92 ata.c:1082
+ jmp near 02e05h ; e9 6d 01 ; 0xf2c95
+ test bl, 008h ; f6 c3 08 ; 0xf2c98 ata.c:1083
+ jne short 02cach ; 75 0f ; 0xf2c9b
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c9d ata.c:1086
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ca0
+ mov AL, strict byte 008h ; b0 08 ; 0xf2ca3
+ out DX, AL ; ee ; 0xf2ca5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2ca6 ata.c:1087
+ jmp near 02e05h ; e9 59 01 ; 0xf2ca9
+ sti ; fb ; 0xf2cac ata.c:1090
+ mov CL, strict byte 004h ; b1 04 ; 0xf2cad ata.c:1094
+ mov ax, si ; 89 f0 ; 0xf2caf
+ shr ax, CL ; d3 e8 ; 0xf2cb1
+ add di, ax ; 01 c7 ; 0xf2cb3
+ and si, strict byte 0000fh ; 83 e6 0f ; 0xf2cb5
+ mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2cb8 ata.c:1099
+ xor ch, ch ; 30 ed ; 0xf2cbb
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2cbd
+ mov es, di ; 8e c7 ; 0xf2cc0
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2cc2
+ cmp byte [bp+00ah], 000h ; 80 7e 0a 00 ; 0xf2cc5 ata.c:1101
+ jne short 02cd6h ; 75 0b ; 0xf2cc9
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2ccb ata.c:1102
+ in AL, DX ; ec ; 0xf2cce
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ccf
+ mov bl, al ; 88 c3 ; 0xf2cd1
+ jmp near 02de6h ; e9 10 01 ; 0xf2cd3 ata.c:1104
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2cd6 ata.c:1108
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2cd9
+ in AL, DX ; ec ; 0xf2cdc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2cdd
+ mov bl, al ; 88 c3 ; 0xf2cdf
+ test AL, strict byte 080h ; a8 80 ; 0xf2ce1 ata.c:1109
+ jne short 02cd6h ; 75 f1 ; 0xf2ce3
+ test AL, strict byte 088h ; a8 88 ; 0xf2ce5 ata.c:1114
+ je short 02d49h ; 74 60 ; 0xf2ce7
+ test AL, strict byte 001h ; a8 01 ; 0xf2ce9 ata.c:1117
+ je short 02cf8h ; 74 0b ; 0xf2ceb
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2ced ata.c:1120
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cf0
+ mov AL, strict byte 008h ; b0 08 ; 0xf2cf3
+ out DX, AL ; ee ; 0xf2cf5
+ jmp short 02c92h ; eb 9a ; 0xf2cf6
+ mov al, bl ; 88 d8 ; 0xf2cf8 ata.c:1125
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2cfa
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2cfc
+ je short 02d0bh ; 74 0b ; 0xf2cfe
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2d00 ata.c:1129
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d03
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d06
+ out DX, AL ; ee ; 0xf2d08
+ jmp short 02ca6h ; eb 9b ; 0xf2d09
+ mov CL, strict byte 004h ; b1 04 ; 0xf2d0b ata.c:1135
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2d0d
+ shr ax, CL ; d3 e8 ; 0xf2d10
+ add ax, word [bp+00eh] ; 03 46 0e ; 0xf2d12
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf2d15
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf2d18
+ mov word [bp+00ch], dx ; 89 56 0c ; 0xf2d1b
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf2d1e
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2d21 ata.c:1140
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2d24
+ in AL, DX ; ec ; 0xf2d27
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d28
+ mov bh, al ; 88 c7 ; 0xf2d2a
+ xor bl, bl ; 30 db ; 0xf2d2c
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2d2e
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2d31
+ in AL, DX ; ec ; 0xf2d34
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d35
+ add bx, ax ; 01 c3 ; 0xf2d37
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf2d39 ata.c:1143
+ cmp bx, ax ; 39 c3 ; 0xf2d3c
+ jnc short 02d4ch ; 73 0c ; 0xf2d3e
+ mov cx, bx ; 89 d9 ; 0xf2d40 ata.c:1144
+ sub word [bp+004h], bx ; 29 5e 04 ; 0xf2d42 ata.c:1145
+ xor bx, bx ; 31 db ; 0xf2d45 ata.c:1146
+ jmp short 02d55h ; eb 0c ; 0xf2d47 ata.c:1148
+ jmp near 02de6h ; e9 9a 00 ; 0xf2d49
+ mov cx, ax ; 89 c1 ; 0xf2d4c ata.c:1149
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf2d4e ata.c:1150
+ sub bx, ax ; 29 c3 ; 0xf2d53 ata.c:1151
+ xor ax, ax ; 31 c0 ; 0xf2d55 ata.c:1154
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf2d57
+ jne short 02d73h ; 75 16 ; 0xf2d5b
+ cmp bx, word [bp+006h] ; 3b 5e 06 ; 0xf2d5d
+ jbe short 02d73h ; 76 11 ; 0xf2d60
+ sub bx, word [bp+006h] ; 2b 5e 06 ; 0xf2d62 ata.c:1155
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf2d65
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf2d68 ata.c:1156
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf2d6b ata.c:1157
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf2d6e
+ jmp short 02d7ch ; eb 09 ; 0xf2d71 ata.c:1159
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2d73 ata.c:1160
+ sub word [bp+006h], bx ; 29 5e 06 ; 0xf2d76 ata.c:1161
+ sbb word [bp+008h], ax ; 19 46 08 ; 0xf2d79
+ mov si, bx ; 89 de ; 0xf2d7c ata.c:1165
+ test cl, 003h ; f6 c1 03 ; 0xf2d7e ata.c:1172
+ test bl, 003h ; f6 c3 03 ; 0xf2d81 ata.c:1174
+ test byte [bp-012h], 003h ; f6 46 ee 03 ; 0xf2d84 ata.c:1176
+ test bl, 001h ; f6 c3 01 ; 0xf2d88 ata.c:1180
+ je short 02d9dh ; 74 10 ; 0xf2d8b
+ inc bx ; 43 ; 0xf2d8d ata.c:1181
+ cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xf2d8e ata.c:1182
+ jbe short 02d9dh ; 76 09 ; 0xf2d92
+ test byte [bp-012h], 001h ; f6 46 ee 01 ; 0xf2d94
+ je short 02d9dh ; 74 03 ; 0xf2d98
+ dec word [bp-012h] ; ff 4e ee ; 0xf2d9a ata.c:1183
+ shr bx, 1 ; d1 eb ; 0xf2d9d ata.c:1195
+ shr cx, 1 ; d1 e9 ; 0xf2d9f ata.c:1196
+ shr word [bp-012h], 1 ; d1 6e ee ; 0xf2da1 ata.c:1197
+ test cx, cx ; 85 c9 ; 0xf2da4 ata.c:1210
+ je short 02daeh ; 74 06 ; 0xf2da6
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2da8 ata.c:1211
+ in ax, DX ; ed ; 0xf2dab
+ loop 02dabh ; e2 fd ; 0xf2dac
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2dae ata.c:1212
+ mov cx, bx ; 89 d9 ; 0xf2db1
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf2db3
+ rep insw ; f3 6d ; 0xf2db6
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2db8 ata.c:1213
+ test ax, ax ; 85 c0 ; 0xf2dbb
+ je short 02dc4h ; 74 05 ; 0xf2dbd
+ mov cx, ax ; 89 c1 ; 0xf2dbf ata.c:1214
+ in ax, DX ; ed ; 0xf2dc1
+ loop 02dc1h ; e2 fd ; 0xf2dc2
+ add word [bp+00ch], si ; 01 76 0c ; 0xf2dc4 ata.c:1219
+ xor ax, ax ; 31 c0 ; 0xf2dc7 ata.c:1222
+ add word [bp-00eh], si ; 01 76 f2 ; 0xf2dc9
+ adc word [bp-00ch], ax ; 11 46 f4 ; 0xf2dcc
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2dcf ata.c:1223
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf2dd2
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2dd5
+ mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2dd8
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2ddc
+ mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2ddf
+ jmp near 02cd6h ; e9 f0 fe ; 0xf2de3 ata.c:1224
+ mov al, bl ; 88 d8 ; 0xf2de6 ata.c:1228
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2de8
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2dea
+ je short 02dfah ; 74 0c ; 0xf2dec
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2dee ata.c:1232
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2df1
+ mov AL, strict byte 008h ; b0 08 ; 0xf2df4
+ out DX, AL ; ee ; 0xf2df6
+ jmp near 02ca6h ; e9 ac fe ; 0xf2df7
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2dfa ata.c:1237
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dfd
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e00
+ out DX, AL ; ee ; 0xf2e02
+ xor ax, ax ; 31 c0 ; 0xf2e03 ata.c:1238
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2e05 ata.c:1239
+ pop di ; 5f ; 0xf2e08
+ pop si ; 5e ; 0xf2e09
+ pop bp ; 5d ; 0xf2e0a
+ retn 0000ch ; c2 0c 00 ; 0xf2e0b
+ ; disGetNextSymbol 0xf2e0e LB 0x85aa -> off=0x0 cb=0000000000000082 uValue=00000000000f180e 'ata_soft_reset'
+ata_soft_reset: ; 0xf2e0e LB 0x82
+ push bp ; 55 ; 0xf2e0e ata.c:1247
+ mov bp, sp ; 89 e5 ; 0xf2e0f
+ push bx ; 53 ; 0xf2e11
+ push cx ; 51 ; 0xf2e12
+ push dx ; 52 ; 0xf2e13
+ push ax ; 50 ; 0xf2e14
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2e15 ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2e18
+ mov es, dx ; 8e c2 ; 0xf2e1b
+ mov es, [es:bx] ; 26 8e 07 ; 0xf2e1d
+ mov dx, ax ; 89 c2 ; 0xf2e20 ata.c:1256
+ shr dx, 1 ; d1 ea ; 0xf2e22
+ and AL, strict byte 001h ; 24 01 ; 0xf2e24 ata.c:1257
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2e26
+ mov al, dl ; 88 d0 ; 0xf2e29 ata.c:1259
+ xor ah, ah ; 30 e4 ; 0xf2e2b
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2e2d
+ imul dx ; f7 ea ; 0xf2e30
+ mov bx, ax ; 89 c3 ; 0xf2e32
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf2e34
+ mov cx, word [es:bx+0027eh] ; 26 8b 8f 7e 02 ; 0xf2e37
+ mov bx, word [es:bx+00280h] ; 26 8b 9f 80 02 ; 0xf2e3c ata.c:1260
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e41 ata.c:1263
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2e44
+ out DX, AL ; ee ; 0xf2e46
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2e47 ata.c:1264
+ je short 02e52h ; 74 05 ; 0xf2e4b
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2e4d
+ jmp short 02e55h ; eb 03 ; 0xf2e50
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2e52
+ mov dx, cx ; 89 ca ; 0xf2e55
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2e57
+ out DX, AL ; ee ; 0xf2e5a
+ mov dx, cx ; 89 ca ; 0xf2e5b ata.c:1265
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e5d
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e60
+ out DX, AL ; ee ; 0xf2e62
+ mov dx, cx ; 89 ca ; 0xf2e63 ata.c:1269
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e65
+ in AL, DX ; ec ; 0xf2e68
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e69
+ test AL, strict byte 080h ; a8 80 ; 0xf2e6b ata.c:1270
+ jne short 02e63h ; 75 f4 ; 0xf2e6d
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2e6f ata.c:1274
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2e71
+ je short 02e80h ; 74 0b ; 0xf2e73
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e75 ata.c:1278
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e78
+ out DX, AL ; ee ; 0xf2e7a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2e7b ata.c:1279
+ jmp short 02e88h ; eb 08 ; 0xf2e7e
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e80 ata.c:1283
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e83
+ out DX, AL ; ee ; 0xf2e85
+ xor ax, ax ; 31 c0 ; 0xf2e86 ata.c:1284
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2e88 ata.c:1285
+ pop dx ; 5a ; 0xf2e8b
+ pop cx ; 59 ; 0xf2e8c
+ pop bx ; 5b ; 0xf2e8d
+ pop bp ; 5d ; 0xf2e8e
+ retn ; c3 ; 0xf2e8f
+ ; disGetNextSymbol 0xf2e90 LB 0x8528 -> off=0x0 cb=000000000000002c uValue=00000000000f1890 'set_diskette_current_cyl'
+set_diskette_current_cyl: ; 0xf2e90 LB 0x2c
+ push bp ; 55 ; 0xf2e90 floppy.c:71
+ mov bp, sp ; 89 e5 ; 0xf2e91
+ push bx ; 53 ; 0xf2e93
+ mov bl, al ; 88 c3 ; 0xf2e94
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2e96 floppy.c:73
+ jbe short 02ea8h ; 76 0e ; 0xf2e98
+ mov ax, 00260h ; b8 60 02 ; 0xf2e9a floppy.c:74
+ push ax ; 50 ; 0xf2e9d
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf2e9e
+ push ax ; 50 ; 0xf2ea1
+ call 0191ch ; e8 77 ea ; 0xf2ea2
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2ea5
+ xor bh, bh ; 30 ff ; 0xf2ea8 floppy.c:75
+ add bx, 00094h ; 81 c3 94 00 ; 0xf2eaa
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2eae floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf2eb1
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf2eb3
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2eb6 floppy.c:76
+ pop bx ; 5b ; 0xf2eb9
+ pop bp ; 5d ; 0xf2eba
+ retn ; c3 ; 0xf2ebb
+ ; disGetNextSymbol 0xf2ebc LB 0x84fc -> off=0x0 cb=0000000000000023 uValue=00000000000f18bc 'floppy_wait_for_interrupt'
+floppy_wait_for_interrupt: ; 0xf2ebc LB 0x23
+ push bp ; 55 ; 0xf2ebc floppy.c:96
+ mov bp, sp ; 89 e5 ; 0xf2ebd
+ push bx ; 53 ; 0xf2ebf
+ cli ; fa ; 0xf2ec0 floppy.c:98
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ec1 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2ec4
+ mov es, ax ; 8e c0 ; 0xf2ec7
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ec9
+ test AL, strict byte 080h ; a8 80 ; 0xf2ecc floppy.c:102
+ je short 02ed4h ; 74 04 ; 0xf2ece
+ and AL, strict byte 080h ; 24 80 ; 0xf2ed0 floppy.c:103
+ jmp short 02ed9h ; eb 05 ; 0xf2ed2
+ sti ; fb ; 0xf2ed4 floppy.c:104
+ hlt ; f4 ; 0xf2ed5
+ cli ; fa ; 0xf2ed6
+ jmp short 02ec1h ; eb e8 ; 0xf2ed7 floppy.c:105
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2ed9 floppy.c:106
+ pop bx ; 5b ; 0xf2edc
+ pop bp ; 5d ; 0xf2edd
+ retn ; c3 ; 0xf2ede
+ ; disGetNextSymbol 0xf2edf LB 0x84d9 -> off=0x0 cb=0000000000000038 uValue=00000000000f18df 'floppy_wait_for_interrupt_or_timeout'
+floppy_wait_for_interrupt_or_timeout: ; 0xf2edf LB 0x38
+ push bp ; 55 ; 0xf2edf floppy.c:116
+ mov bp, sp ; 89 e5 ; 0xf2ee0
+ push bx ; 53 ; 0xf2ee2
+ cli ; fa ; 0xf2ee3 floppy.c:118
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2ee4 floppy.c:38
+ mov es, bx ; 8e c3 ; 0xf2ee7
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ee9
+ test al, al ; 84 c0 ; 0xf2eec floppy.c:122
+ jne short 02ef3h ; 75 03 ; 0xf2eee
+ sti ; fb ; 0xf2ef0 floppy.c:123
+ jmp short 02f11h ; eb 1e ; 0xf2ef1 floppy.c:124
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ef3 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2ef6
+ mov es, ax ; 8e c0 ; 0xf2ef9
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2efb
+ test AL, strict byte 080h ; a8 80 ; 0xf2efe floppy.c:128
+ je short 02f0ch ; 74 0a ; 0xf2f00
+ mov ah, al ; 88 c4 ; 0xf2f02 floppy.c:129
+ and ah, 07fh ; 80 e4 7f ; 0xf2f04
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf2f07 floppy.c:43
+ jmp short 02f11h ; eb 05 ; 0xf2f0a floppy.c:130
+ sti ; fb ; 0xf2f0c floppy.c:132
+ hlt ; f4 ; 0xf2f0d
+ cli ; fa ; 0xf2f0e
+ jmp short 02ee4h ; eb d3 ; 0xf2f0f floppy.c:133
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2f11 floppy.c:134
+ pop bx ; 5b ; 0xf2f14
+ pop bp ; 5d ; 0xf2f15
+ retn ; c3 ; 0xf2f16
+ ; disGetNextSymbol 0xf2f17 LB 0x84a1 -> off=0x0 cb=000000000000003f uValue=00000000000f1917 'floppy_reset_controller'
+floppy_reset_controller: ; 0xf2f17 LB 0x3f
+ push bp ; 55 ; 0xf2f17 floppy.c:138
+ mov bp, sp ; 89 e5 ; 0xf2f18
+ push bx ; 53 ; 0xf2f1a
+ push cx ; 51 ; 0xf2f1b
+ push dx ; 52 ; 0xf2f1c
+ mov cx, ax ; 89 c1 ; 0xf2f1d
+ mov dx, 003f2h ; ba f2 03 ; 0xf2f1f floppy.c:143
+ in AL, DX ; ec ; 0xf2f22
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f23
+ mov bx, ax ; 89 c3 ; 0xf2f25
+ and AL, strict byte 0fbh ; 24 fb ; 0xf2f27 floppy.c:144
+ out DX, AL ; ee ; 0xf2f29
+ mov al, bl ; 88 d8 ; 0xf2f2a floppy.c:145
+ or AL, strict byte 004h ; 0c 04 ; 0xf2f2c
+ out DX, AL ; ee ; 0xf2f2e
+ mov dx, 003f4h ; ba f4 03 ; 0xf2f2f floppy.c:149
+ in AL, DX ; ec ; 0xf2f32
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f33
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2f35 floppy.c:150
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2f37
+ jne short 02f2fh ; 75 f4 ; 0xf2f39
+ mov bx, cx ; 89 cb ; 0xf2f3b floppy.c:153
+ add bx, 00090h ; 81 c3 90 00 ; 0xf2f3d
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f41 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf2f44
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f46
+ and AL, strict byte 0efh ; 24 ef ; 0xf2f49 floppy.c:154
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2f4b floppy.c:43
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f4e floppy.c:157
+ pop dx ; 5a ; 0xf2f51
+ pop cx ; 59 ; 0xf2f52
+ pop bx ; 5b ; 0xf2f53
+ pop bp ; 5d ; 0xf2f54
+ retn ; c3 ; 0xf2f55
+ ; disGetNextSymbol 0xf2f56 LB 0x8462 -> off=0x0 cb=0000000000000075 uValue=00000000000f1956 'floppy_prepare_controller'
+floppy_prepare_controller: ; 0xf2f56 LB 0x75
+ push bp ; 55 ; 0xf2f56 floppy.c:159
+ mov bp, sp ; 89 e5 ; 0xf2f57
+ push bx ; 53 ; 0xf2f59
+ push cx ; 51 ; 0xf2f5a
+ push dx ; 52 ; 0xf2f5b
+ push ax ; 50 ; 0xf2f5c
+ mov cx, ax ; 89 c1 ; 0xf2f5d
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f5f floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f62
+ mov es, ax ; 8e c0 ; 0xf2f65
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f67
+ and AL, strict byte 07fh ; 24 7f ; 0xf2f6a floppy.c:165
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2f6c floppy.c:43
+ mov dx, 003f2h ; ba f2 03 ; 0xf2f6f floppy.c:169
+ in AL, DX ; ec ; 0xf2f72
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f73
+ and AL, strict byte 004h ; 24 04 ; 0xf2f75
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2f77
+ test cx, cx ; 85 c9 ; 0xf2f7a floppy.c:170
+ je short 02f82h ; 74 04 ; 0xf2f7c
+ mov AL, strict byte 020h ; b0 20 ; 0xf2f7e floppy.c:171
+ jmp short 02f84h ; eb 02 ; 0xf2f80 floppy.c:172
+ mov AL, strict byte 010h ; b0 10 ; 0xf2f82 floppy.c:173
+ or AL, strict byte 00ch ; 0c 0c ; 0xf2f84 floppy.c:174
+ or al, cl ; 08 c8 ; 0xf2f86 floppy.c:175
+ mov dx, 003f2h ; ba f2 03 ; 0xf2f88 floppy.c:176
+ out DX, AL ; ee ; 0xf2f8b
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2f8c floppy.c:43
+ mov es, bx ; 8e c3 ; 0xf2f8f
+ mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf2f91
+ mov bx, 0008bh ; bb 8b 00 ; 0xf2f95 floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f98
+ mov CL, strict byte 006h ; b1 06 ; 0xf2f9b floppy.c:183
+ shr al, CL ; d2 e8 ; 0xf2f9d
+ mov dx, 003f7h ; ba f7 03 ; 0xf2f9f floppy.c:184
+ out DX, AL ; ee ; 0xf2fa2
+ mov dx, 003f4h ; ba f4 03 ; 0xf2fa3 floppy.c:188
+ in AL, DX ; ec ; 0xf2fa6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2fa7
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2fa9 floppy.c:189
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2fab
+ jne short 02fa3h ; 75 f4 ; 0xf2fad
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2faf floppy.c:191
+ jne short 02fc3h ; 75 0e ; 0xf2fb3
+ call 02ebch ; e8 04 ff ; 0xf2fb5 floppy.c:202
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2fb8 floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2fbb
+ mov es, dx ; 8e c2 ; 0xf2fbe
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2fc0
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2fc3 floppy.c:206
+ pop dx ; 5a ; 0xf2fc6
+ pop cx ; 59 ; 0xf2fc7
+ pop bx ; 5b ; 0xf2fc8
+ pop bp ; 5d ; 0xf2fc9
+ retn ; c3 ; 0xf2fca
+ ; disGetNextSymbol 0xf2fcb LB 0x83ed -> off=0x0 cb=000000000000004c uValue=00000000000f19cb 'floppy_media_known'
+floppy_media_known: ; 0xf2fcb LB 0x4c
+ push bx ; 53 ; 0xf2fcb floppy.c:208
+ push cx ; 51 ; 0xf2fcc
+ push dx ; 52 ; 0xf2fcd
+ push bp ; 55 ; 0xf2fce
+ mov bp, sp ; 89 e5 ; 0xf2fcf
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2fd1 floppy.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2fd4
+ mov es, dx ; 8e c2 ; 0xf2fd7
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf2fd9
+ mov bl, bh ; 88 fb ; 0xf2fdc floppy.c:39
+ test ax, ax ; 85 c0 ; 0xf2fde floppy.c:214
+ je short 02fe4h ; 74 02 ; 0xf2fe0
+ shr bl, 1 ; d0 eb ; 0xf2fe2 floppy.c:215
+ and bl, 001h ; 80 e3 01 ; 0xf2fe4 floppy.c:216
+ jne short 02fedh ; 75 04 ; 0xf2fe7 floppy.c:217
+ xor bh, bh ; 30 ff ; 0xf2fe9 floppy.c:218
+ jmp short 03010h ; eb 23 ; 0xf2feb
+ mov bx, 00090h ; bb 90 00 ; 0xf2fed floppy.c:220
+ test ax, ax ; 85 c0 ; 0xf2ff0 floppy.c:221
+ je short 02ff7h ; 74 03 ; 0xf2ff2
+ mov bx, 00091h ; bb 91 00 ; 0xf2ff4 floppy.c:222
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2ff7 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf2ffa
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ffc
+ xor ah, ah ; 30 e4 ; 0xf2fff floppy.c:225
+ mov CL, strict byte 004h ; b1 04 ; 0xf3001
+ sar ax, CL ; d3 f8 ; 0xf3003
+ and AL, strict byte 001h ; 24 01 ; 0xf3005
+ jne short 0300dh ; 75 04 ; 0xf3007 floppy.c:226
+ xor bx, bx ; 31 db ; 0xf3009 floppy.c:227
+ jmp short 03010h ; eb 03 ; 0xf300b
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf300d floppy.c:230
+ mov ax, bx ; 89 d8 ; 0xf3010 floppy.c:231
+ pop bp ; 5d ; 0xf3012
+ pop dx ; 5a ; 0xf3013
+ pop cx ; 59 ; 0xf3014
+ pop bx ; 5b ; 0xf3015
+ retn ; c3 ; 0xf3016
+ ; disGetNextSymbol 0xf3017 LB 0x83a1 -> off=0x0 cb=0000000000000052 uValue=00000000000f1a17 'floppy_read_id'
+floppy_read_id: ; 0xf3017 LB 0x52
+ push bp ; 55 ; 0xf3017 floppy.c:233
+ mov bp, sp ; 89 e5 ; 0xf3018
+ push bx ; 53 ; 0xf301a
+ push dx ; 52 ; 0xf301b
+ push si ; 56 ; 0xf301c
+ mov bx, ax ; 89 c3 ; 0xf301d
+ call 02f56h ; e8 34 ff ; 0xf301f floppy.c:240
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3022 floppy.c:243
+ mov dx, 003f5h ; ba f5 03 ; 0xf3024
+ out DX, AL ; ee ; 0xf3027
+ mov al, bl ; 88 d8 ; 0xf3028 floppy.c:244
+ out DX, AL ; ee ; 0xf302a
+ call 02ebch ; e8 8e fe ; 0xf302b floppy.c:259
+ xor bx, bx ; 31 db ; 0xf302e floppy.c:263
+ jmp short 03037h ; eb 05 ; 0xf3030
+ cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf3032
+ jnl short 0304bh ; 7d 14 ; 0xf3035
+ mov dx, 003f5h ; ba f5 03 ; 0xf3037 floppy.c:264
+ in AL, DX ; ec ; 0xf303a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf303b
+ lea si, [bx+042h] ; 8d 77 42 ; 0xf303d
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3040 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf3043
+ mov byte [es:si], al ; 26 88 04 ; 0xf3045
+ inc bx ; 43 ; 0xf3048 floppy.c:264
+ jmp short 03032h ; eb e7 ; 0xf3049
+ mov bx, strict word 00042h ; bb 42 00 ; 0xf304b floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf304e
+ mov es, ax ; 8e c0 ; 0xf3051
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3053
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3056 floppy.c:39
+ je short 0305eh ; 74 04 ; 0xf3058
+ xor ax, ax ; 31 c0 ; 0xf305a floppy.c:267
+ jmp short 03061h ; eb 03 ; 0xf305c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf305e floppy.c:269
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf3061 floppy.c:270
+ pop si ; 5e ; 0xf3064
+ pop dx ; 5a ; 0xf3065
+ pop bx ; 5b ; 0xf3066
+ pop bp ; 5d ; 0xf3067
+ retn ; c3 ; 0xf3068
+ ; disGetNextSymbol 0xf3069 LB 0x834f -> off=0x0 cb=0000000000000041 uValue=00000000000f1a69 'floppy_drive_recal'
+floppy_drive_recal: ; 0xf3069 LB 0x41
+ push bp ; 55 ; 0xf3069 floppy.c:272
+ mov bp, sp ; 89 e5 ; 0xf306a
+ push bx ; 53 ; 0xf306c
+ push dx ; 52 ; 0xf306d
+ push si ; 56 ; 0xf306e
+ mov bx, ax ; 89 c3 ; 0xf306f
+ call 02f56h ; e8 e2 fe ; 0xf3071 floppy.c:277
+ mov AL, strict byte 007h ; b0 07 ; 0xf3074 floppy.c:280
+ mov dx, 003f5h ; ba f5 03 ; 0xf3076
+ out DX, AL ; ee ; 0xf3079
+ mov al, bl ; 88 d8 ; 0xf307a floppy.c:281
+ out DX, AL ; ee ; 0xf307c
+ call 02ebch ; e8 3c fe ; 0xf307d floppy.c:300
+ test bx, bx ; 85 db ; 0xf3080 floppy.c:304
+ je short 0308bh ; 74 07 ; 0xf3082
+ or AL, strict byte 002h ; 0c 02 ; 0xf3084 floppy.c:305
+ mov bx, 00095h ; bb 95 00 ; 0xf3086 floppy.c:306
+ jmp short 03090h ; eb 05 ; 0xf3089 floppy.c:307
+ or AL, strict byte 001h ; 0c 01 ; 0xf308b floppy.c:308
+ mov bx, 00094h ; bb 94 00 ; 0xf308d floppy.c:309
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf3090 floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3093
+ mov es, dx ; 8e c2 ; 0xf3096
+ mov byte [es:si], al ; 26 88 04 ; 0xf3098
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf309b floppy.c:43
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf309f floppy.c:315
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf30a2
+ pop si ; 5e ; 0xf30a5
+ pop dx ; 5a ; 0xf30a6
+ pop bx ; 5b ; 0xf30a7
+ pop bp ; 5d ; 0xf30a8
+ retn ; c3 ; 0xf30a9
+ ; disGetNextSymbol 0xf30aa LB 0x830e -> off=0x0 cb=00000000000000e7 uValue=00000000000f1aaa 'floppy_media_sense'
+floppy_media_sense: ; 0xf30aa LB 0xe7
+ push bp ; 55 ; 0xf30aa floppy.c:318
+ mov bp, sp ; 89 e5 ; 0xf30ab
+ push bx ; 53 ; 0xf30ad
+ push cx ; 51 ; 0xf30ae
+ push dx ; 52 ; 0xf30af
+ push si ; 56 ; 0xf30b0
+ push di ; 57 ; 0xf30b1
+ mov si, ax ; 89 c6 ; 0xf30b2
+ call 03069h ; e8 b2 ff ; 0xf30b4 floppy.c:324
+ test ax, ax ; 85 c0 ; 0xf30b7
+ jne short 030c0h ; 75 05 ; 0xf30b9
+ xor dx, dx ; 31 d2 ; 0xf30bb floppy.c:325
+ jmp near 03185h ; e9 c5 00 ; 0xf30bd
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf30c0 floppy.c:360
+ call 0165fh ; e8 99 e5 ; 0xf30c3
+ test si, si ; 85 f6 ; 0xf30c6 floppy.c:361
+ jne short 030d2h ; 75 08 ; 0xf30c8
+ mov CL, strict byte 004h ; b1 04 ; 0xf30ca floppy.c:362
+ mov dl, al ; 88 c2 ; 0xf30cc
+ shr dl, CL ; d2 ea ; 0xf30ce
+ jmp short 030d7h ; eb 05 ; 0xf30d0 floppy.c:363
+ mov dl, al ; 88 c2 ; 0xf30d2 floppy.c:364
+ and dl, 00fh ; 80 e2 0f ; 0xf30d4
+ cmp dl, 001h ; 80 fa 01 ; 0xf30d7 floppy.c:365
+ jne short 030e5h ; 75 09 ; 0xf30da
+ xor dl, dl ; 30 d2 ; 0xf30dc floppy.c:367
+ mov DH, strict byte 015h ; b6 15 ; 0xf30de floppy.c:368
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf30e0 floppy.c:369
+ jmp short 03123h ; eb 3e ; 0xf30e3 floppy.c:371
+ cmp dl, 002h ; 80 fa 02 ; 0xf30e5
+ jne short 030f0h ; 75 06 ; 0xf30e8
+ xor dl, dl ; 30 d2 ; 0xf30ea floppy.c:373
+ mov DH, strict byte 035h ; b6 35 ; 0xf30ec floppy.c:374
+ jmp short 030e0h ; eb f0 ; 0xf30ee
+ cmp dl, 003h ; 80 fa 03 ; 0xf30f0 floppy.c:377
+ jne short 030fbh ; 75 06 ; 0xf30f3
+ xor dl, dl ; 30 d2 ; 0xf30f5 floppy.c:379
+ mov DH, strict byte 017h ; b6 17 ; 0xf30f7 floppy.c:380
+ jmp short 030e0h ; eb e5 ; 0xf30f9
+ cmp dl, 004h ; 80 fa 04 ; 0xf30fb floppy.c:383
+ jne short 03106h ; 75 06 ; 0xf30fe
+ xor dl, dl ; 30 d2 ; 0xf3100 floppy.c:385
+ mov DH, strict byte 017h ; b6 17 ; 0xf3102 floppy.c:386
+ jmp short 030e0h ; eb da ; 0xf3104
+ cmp dl, 005h ; 80 fa 05 ; 0xf3106 floppy.c:389
+ jne short 03111h ; 75 06 ; 0xf3109
+ mov DL, strict byte 0cch ; b2 cc ; 0xf310b floppy.c:391
+ mov DH, strict byte 0d7h ; b6 d7 ; 0xf310d floppy.c:392
+ jmp short 030e0h ; eb cf ; 0xf310f
+ cmp dl, 00eh ; 80 fa 0e ; 0xf3111 floppy.c:396
+ je short 0311bh ; 74 05 ; 0xf3114
+ cmp dl, 00fh ; 80 fa 0f ; 0xf3116
+ jne short 0311dh ; 75 02 ; 0xf3119
+ jmp short 0310bh ; eb ee ; 0xf311b
+ xor dl, dl ; 30 d2 ; 0xf311d floppy.c:404
+ xor dh, dh ; 30 f6 ; 0xf311f floppy.c:405
+ xor bx, bx ; 31 db ; 0xf3121 floppy.c:406
+ mov di, 0008bh ; bf 8b 00 ; 0xf3123 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3126
+ mov es, ax ; 8e c0 ; 0xf3129
+ mov byte [es:di], dl ; 26 88 15 ; 0xf312b
+ mov ax, si ; 89 f0 ; 0xf312e floppy.c:410
+ call 03017h ; e8 e4 fe ; 0xf3130
+ test ax, ax ; 85 c0 ; 0xf3133
+ jne short 03169h ; 75 32 ; 0xf3135
+ mov al, dl ; 88 d0 ; 0xf3137 floppy.c:411
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3139
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf313b
+ je short 03169h ; 74 2a ; 0xf313d
+ mov al, dl ; 88 d0 ; 0xf313f floppy.c:415
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3141
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3143
+ je short 03156h ; 74 0f ; 0xf3145
+ mov ah, dl ; 88 d4 ; 0xf3147
+ and ah, 03fh ; 80 e4 3f ; 0xf3149
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf314c
+ je short 03162h ; 74 12 ; 0xf314e
+ test al, al ; 84 c0 ; 0xf3150
+ je short 0315bh ; 74 07 ; 0xf3152
+ jmp short 03123h ; eb cd ; 0xf3154
+ and dl, 03fh ; 80 e2 3f ; 0xf3156 floppy.c:417
+ jmp short 03123h ; eb c8 ; 0xf3159 floppy.c:418
+ mov dl, ah ; 88 e2 ; 0xf315b floppy.c:420
+ or dl, 040h ; 80 ca 40 ; 0xf315d
+ jmp short 03123h ; eb c1 ; 0xf3160 floppy.c:421
+ mov dl, ah ; 88 e2 ; 0xf3162 floppy.c:423
+ or dl, 080h ; 80 ca 80 ; 0xf3164
+ jmp short 03123h ; eb ba ; 0xf3167 floppy.c:427
+ test si, si ; 85 f6 ; 0xf3169 floppy.c:429
+ jne short 03172h ; 75 05 ; 0xf316b
+ mov si, 00090h ; be 90 00 ; 0xf316d floppy.c:430
+ jmp short 03175h ; eb 03 ; 0xf3170 floppy.c:431
+ mov si, 00091h ; be 91 00 ; 0xf3172 floppy.c:432
+ mov di, 0008bh ; bf 8b 00 ; 0xf3175 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3178
+ mov es, ax ; 8e c0 ; 0xf317b
+ mov byte [es:di], dl ; 26 88 15 ; 0xf317d
+ mov byte [es:si], dh ; 26 88 34 ; 0xf3180 floppy.c:43
+ mov dx, bx ; 89 da ; 0xf3183 floppy.c:436
+ mov ax, dx ; 89 d0 ; 0xf3185 floppy.c:437
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf3187
+ pop di ; 5f ; 0xf318a
+ pop si ; 5e ; 0xf318b
+ pop dx ; 5a ; 0xf318c
+ pop cx ; 59 ; 0xf318d
+ pop bx ; 5b ; 0xf318e
+ pop bp ; 5d ; 0xf318f
+ retn ; c3 ; 0xf3190
+ ; disGetNextSymbol 0xf3191 LB 0x8227 -> off=0x0 cb=000000000000002b uValue=00000000000f1b91 'floppy_drive_exists'
+floppy_drive_exists: ; 0xf3191 LB 0x2b
+ push bp ; 55 ; 0xf3191 floppy.c:440
+ mov bp, sp ; 89 e5 ; 0xf3192
+ push cx ; 51 ; 0xf3194
+ push dx ; 52 ; 0xf3195
+ mov dx, ax ; 89 c2 ; 0xf3196
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3198 floppy.c:446
+ call 0165fh ; e8 c1 e4 ; 0xf319b
+ test dx, dx ; 85 d2 ; 0xf319e floppy.c:447
+ jne short 031a8h ; 75 06 ; 0xf31a0
+ mov CL, strict byte 004h ; b1 04 ; 0xf31a2 floppy.c:448
+ shr al, CL ; d2 e8 ; 0xf31a4
+ jmp short 031aah ; eb 02 ; 0xf31a6 floppy.c:449
+ and AL, strict byte 00fh ; 24 0f ; 0xf31a8 floppy.c:450
+ test al, al ; 84 c0 ; 0xf31aa floppy.c:451
+ je short 031b3h ; 74 05 ; 0xf31ac
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf31ae
+ jmp short 031b5h ; eb 02 ; 0xf31b1
+ xor ah, ah ; 30 e4 ; 0xf31b3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf31b5 floppy.c:452
+ pop dx ; 5a ; 0xf31b8
+ pop cx ; 59 ; 0xf31b9
+ pop bp ; 5d ; 0xf31ba
+ retn ; c3 ; 0xf31bb
+ ; disGetNextSymbol 0xf31bc LB 0x81fc -> off=0x23 cb=00000000000009fd uValue=00000000000f1bdf 'int13_diskette_function'
+ db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0b6h, 03bh, 01dh, 032h, 09fh
+ db 032h, 0b9h, 032h, 0b9h, 032h, 0b9h, 032h, 06ah, 036h, 04eh, 038h, 049h, 039h, 08ch, 039h, 0c0h
+ db 039h, 034h, 03ah
+int13_diskette_function: ; 0xf31df LB 0x9fd
+ push bp ; 55 ; 0xf31df floppy.c:467
+ mov bp, sp ; 89 e5 ; 0xf31e0
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf31e2
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf31e5 floppy.c:478
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf31e9 floppy.c:480
+ xor ah, ah ; 30 e4 ; 0xf31ec
+ mov dx, ax ; 89 c2 ; 0xf31ee
+ cmp ax, strict word 00018h ; 3d 18 00 ; 0xf31f0
+ jnbe short 03251h ; 77 5c ; 0xf31f3
+ push CS ; 0e ; 0xf31f5
+ pop ES ; 07 ; 0xf31f6
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf31f7
+ mov di, 031bch ; bf bc 31 ; 0xf31fa
+ repne scasb ; f2 ae ; 0xf31fd
+ sal cx, 1 ; d1 e1 ; 0xf31ff
+ mov di, cx ; 89 cf ; 0xf3201
+ mov di, word [cs:di+031c7h] ; 2e 8b bd c7 31 ; 0xf3203
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf3208
+ xor ch, ch ; 30 ed ; 0xf320b
+ mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf320d
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf3210
+ or AL, strict byte 001h ; 0c 01 ; 0xf3213
+ mov si, cx ; 89 ce ; 0xf3215
+ or si, 00100h ; 81 ce 00 01 ; 0xf3217
+ jmp di ; ff e7 ; 0xf321b
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf321d floppy.c:483
+ cmp bl, 001h ; 80 fb 01 ; 0xf3220 floppy.c:484
+ jbe short 0323fh ; 76 1a ; 0xf3223
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3225 floppy.c:485
+ xor ah, ah ; 30 e4 ; 0xf3228
+ or ah, 001h ; 80 cc 01 ; 0xf322a
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf322d
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3230 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3233
+ mov es, ax ; 8e c0 ; 0xf3236
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3238
+ jmp near 03aa1h ; e9 62 08 ; 0xf323c
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf323f floppy.c:491
+ call 0165fh ; e8 1a e4 ; 0xf3242
+ test bl, bl ; 84 db ; 0xf3245 floppy.c:492
+ jne short 03254h ; 75 0b ; 0xf3247
+ mov CL, strict byte 004h ; b1 04 ; 0xf3249 floppy.c:493
+ mov dl, al ; 88 c2 ; 0xf324b
+ shr dl, CL ; d2 ea ; 0xf324d
+ jmp short 03259h ; eb 08 ; 0xf324f floppy.c:494
+ jmp near 03bb6h ; e9 62 09 ; 0xf3251
+ mov dl, al ; 88 c2 ; 0xf3254 floppy.c:495
+ and dl, 00fh ; 80 e2 0f ; 0xf3256
+ test dl, dl ; 84 d2 ; 0xf3259 floppy.c:496
+ jne short 03277h ; 75 1a ; 0xf325b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf325d floppy.c:497
+ xor ah, ah ; 30 e4 ; 0xf3260
+ or ah, 080h ; 80 cc 80 ; 0xf3262
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3265
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3268 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf326b
+ mov es, ax ; 8e c0 ; 0xf326e
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3270
+ jmp near 03aa1h ; e9 2a 08 ; 0xf3274
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf3277 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf327a
+ mov es, ax ; 8e c0 ; 0xf327d
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf327f
+ xor al, al ; 30 c0 ; 0xf3283 floppy.c:506
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf3285
+ mov si, strict word 00041h ; be 41 00 ; 0xf3288 floppy.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf328b
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf328e floppy.c:508
+ mov al, bl ; 88 d8 ; 0xf3292 floppy.c:509
+ xor ah, ah ; 30 e4 ; 0xf3294
+ xor dx, dx ; 31 d2 ; 0xf3296
+ call 02e90h ; e8 f5 fb ; 0xf3298
+ mov sp, bp ; 89 ec ; 0xf329b floppy.c:510
+ pop bp ; 5d ; 0xf329d
+ retn ; c3 ; 0xf329e
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf329f floppy.c:513
+ mov bx, 00441h ; bb 41 04 ; 0xf32a3 floppy.c:38
+ xor ax, ax ; 31 c0 ; 0xf32a6
+ mov es, ax ; 8e c0 ; 0xf32a8
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf32aa
+ mov ch, dl ; 88 d5 ; 0xf32ad floppy.c:515
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf32af
+ test dl, dl ; 84 d2 ; 0xf32b2 floppy.c:516
+ je short 0329bh ; 74 e5 ; 0xf32b4
+ jmp near 03aa1h ; e9 e8 07 ; 0xf32b6
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf32b9 floppy.c:524
+ mov al, byte [bp+015h] ; 8a 46 15 ; 0xf32bc floppy.c:525
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf32bf
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf32c2 floppy.c:526
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf32c5
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf32c8 floppy.c:527
+ xor ah, ah ; 30 e4 ; 0xf32cb
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf32cd
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf32d0 floppy.c:528
+ cmp bl, 001h ; 80 fb 01 ; 0xf32d3 floppy.c:530
+ jnbe short 032e5h ; 77 0d ; 0xf32d6
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf32d8
+ jnbe short 032e5h ; 77 09 ; 0xf32da
+ test bh, bh ; 84 ff ; 0xf32dc
+ je short 032e5h ; 74 05 ; 0xf32de
+ cmp bh, 048h ; 80 ff 48 ; 0xf32e0
+ jbe short 0331ch ; 76 37 ; 0xf32e3
+ mov bx, 00eeah ; bb ea 0e ; 0xf32e5 floppy.c:532
+ mov cx, ds ; 8c d9 ; 0xf32e8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf32ea
+ call 018d9h ; e8 e9 e5 ; 0xf32ed
+ mov ax, 00285h ; b8 85 02 ; 0xf32f0
+ push ax ; 50 ; 0xf32f3
+ mov ax, 0029dh ; b8 9d 02 ; 0xf32f4
+ push ax ; 50 ; 0xf32f7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf32f8
+ push ax ; 50 ; 0xf32fb
+ call 0191ch ; e8 1d e6 ; 0xf32fc
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf32ff
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3302 floppy.c:533
+ xor ah, ah ; 30 e4 ; 0xf3305
+ or ah, 001h ; 80 cc 01 ; 0xf3307
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf330a
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf330d floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3310
+ mov es, ax ; 8e c0 ; 0xf3313
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3315
+ jmp near 033c6h ; e9 aa 00 ; 0xf3319
+ mov al, bl ; 88 d8 ; 0xf331c floppy.c:535
+ xor ah, ah ; 30 e4 ; 0xf331e
+ call 03191h ; e8 6e fe ; 0xf3320
+ test ax, ax ; 85 c0 ; 0xf3323
+ jne short 03341h ; 75 1a ; 0xf3325
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3327 floppy.c:543
+ xor ah, ah ; 30 e4 ; 0xf332a
+ or ah, 080h ; 80 cc 80 ; 0xf332c
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf332f
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3332 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3335
+ mov es, ax ; 8e c0 ; 0xf3338
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf333a
+ jmp near 033c6h ; e9 85 00 ; 0xf333e
+ mov cl, bl ; 88 d9 ; 0xf3341 floppy.c:551
+ xor ch, ch ; 30 ed ; 0xf3343
+ mov ax, cx ; 89 c8 ; 0xf3345
+ call 02fcbh ; e8 81 fc ; 0xf3347
+ test ax, ax ; 85 c0 ; 0xf334a
+ jne short 03374h ; 75 26 ; 0xf334c
+ mov ax, cx ; 89 c8 ; 0xf334e floppy.c:552
+ call 030aah ; e8 57 fd ; 0xf3350
+ test ax, ax ; 85 c0 ; 0xf3353
+ jne short 03374h ; 75 1d ; 0xf3355
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3357 floppy.c:554
+ xor ah, ah ; 30 e4 ; 0xf335a
+ or ah, 00ch ; 80 cc 0c ; 0xf335c
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf335f
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3362 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3365
+ mov es, ax ; 8e c0 ; 0xf3368
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf336a
+ mov byte [bp+016h], ch ; 88 6e 16 ; 0xf336e
+ jmp near 03aa1h ; e9 2d 07 ; 0xf3371
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3374 floppy.c:556
+ xor ah, ah ; 30 e4 ; 0xf3377
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf3379
+ jne short 033cdh ; 75 4f ; 0xf337c
+ mov CL, strict byte 00ch ; b1 0c ; 0xf337e floppy.c:573
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf3380
+ shr ax, CL ; d3 e8 ; 0xf3383
+ mov ch, al ; 88 c5 ; 0xf3385
+ mov CL, strict byte 004h ; b1 04 ; 0xf3387 floppy.c:574
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3389
+ sal dx, CL ; d3 e2 ; 0xf338c
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf338e floppy.c:575
+ add si, dx ; 01 d6 ; 0xf3391
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf3393
+ cmp dx, si ; 39 f2 ; 0xf3396 floppy.c:577
+ jbe short 0339ch ; 76 02 ; 0xf3398
+ db 0feh, 0c5h
+ ; inc ch ; fe c5 ; 0xf339a floppy.c:579
+ mov al, bh ; 88 f8 ; 0xf339c floppy.c:581
+ xor ah, ah ; 30 e4 ; 0xf339e
+ mov CL, strict byte 009h ; b1 09 ; 0xf33a0
+ sal ax, CL ; d3 e0 ; 0xf33a2
+ dec ax ; 48 ; 0xf33a4
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf33a5
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf33a8 floppy.c:584
+ add ax, word [bp-00eh] ; 03 46 f2 ; 0xf33ab
+ cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf33ae floppy.c:585
+ jnc short 033d0h ; 73 1d ; 0xf33b1
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf33b3 floppy.c:586
+ mov ah, cl ; 88 cc ; 0xf33b6
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf33b8
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf33bb floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf33be
+ mov es, ax ; 8e c0 ; 0xf33c1
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf33c3
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf33c6
+ jmp near 03aa1h ; e9 d4 06 ; 0xf33ca
+ jmp near 0351ah ; e9 4a 01 ; 0xf33cd
+ mov AL, strict byte 006h ; b0 06 ; 0xf33d0 floppy.c:594
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf33d2
+ out DX, AL ; ee ; 0xf33d5
+ xor al, al ; 30 c0 ; 0xf33d6 floppy.c:597
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf33d8
+ out DX, AL ; ee ; 0xf33db
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf33dc floppy.c:598
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf33df
+ out DX, AL ; ee ; 0xf33e2
+ mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf33e3 floppy.c:599
+ out DX, AL ; ee ; 0xf33e6
+ xor al, al ; 30 c0 ; 0xf33e7 floppy.c:601
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf33e9
+ out DX, AL ; ee ; 0xf33ec
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf33ed floppy.c:602
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf33f0
+ out DX, AL ; ee ; 0xf33f3
+ mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf33f4 floppy.c:603
+ out DX, AL ; ee ; 0xf33f7
+ mov AL, strict byte 046h ; b0 46 ; 0xf33f8 floppy.c:611
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf33fa
+ out DX, AL ; ee ; 0xf33fd
+ mov al, ch ; 88 e8 ; 0xf33fe floppy.c:615
+ mov dx, 00081h ; ba 81 00 ; 0xf3400
+ out DX, AL ; ee ; 0xf3403
+ mov AL, strict byte 002h ; b0 02 ; 0xf3404 floppy.c:618
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3406
+ out DX, AL ; ee ; 0xf3409
+ mov cl, bl ; 88 d9 ; 0xf340a floppy.c:623
+ xor ch, ch ; 30 ed ; 0xf340c
+ mov ax, cx ; 89 c8 ; 0xf340e
+ call 02f56h ; e8 43 fb ; 0xf3410
+ mov AL, strict byte 0e6h ; b0 e6 ; 0xf3413 floppy.c:626
+ mov dx, 003f5h ; ba f5 03 ; 0xf3415
+ out DX, AL ; ee ; 0xf3418
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3419 floppy.c:627
+ xor ah, ah ; 30 e4 ; 0xf341c
+ mov dx, ax ; 89 c2 ; 0xf341e
+ sal dx, 1 ; d1 e2 ; 0xf3420
+ sal dx, 1 ; d1 e2 ; 0xf3422
+ mov al, bl ; 88 d8 ; 0xf3424
+ or ax, dx ; 09 d0 ; 0xf3426
+ mov dx, 003f5h ; ba f5 03 ; 0xf3428
+ out DX, AL ; ee ; 0xf342b
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf342c floppy.c:628
+ out DX, AL ; ee ; 0xf342f
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3430 floppy.c:629
+ out DX, AL ; ee ; 0xf3433
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3434 floppy.c:630
+ out DX, AL ; ee ; 0xf3437
+ mov AL, strict byte 002h ; b0 02 ; 0xf3438 floppy.c:631
+ out DX, AL ; ee ; 0xf343a
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf343b floppy.c:632
+ xor ah, ah ; 30 e4 ; 0xf343e
+ mov dl, bh ; 88 fa ; 0xf3440
+ xor dh, dh ; 30 f6 ; 0xf3442
+ add ax, dx ; 01 d0 ; 0xf3444
+ dec ax ; 48 ; 0xf3446
+ mov dx, 003f5h ; ba f5 03 ; 0xf3447
+ out DX, AL ; ee ; 0xf344a
+ xor al, al ; 30 c0 ; 0xf344b floppy.c:633
+ out DX, AL ; ee ; 0xf344d
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf344e floppy.c:634
+ out DX, AL ; ee ; 0xf3450
+ call 02edfh ; e8 8b fa ; 0xf3451 floppy.c:666
+ test al, al ; 84 c0 ; 0xf3454 floppy.c:667
+ jne short 03477h ; 75 1f ; 0xf3456
+ mov ax, cx ; 89 c8 ; 0xf3458 floppy.c:669
+ call 02f17h ; e8 ba fa ; 0xf345a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf345d floppy.c:670
+ xor ah, ah ; 30 e4 ; 0xf3460
+ or ah, 080h ; 80 cc 80 ; 0xf3462
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3465
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3468 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf346b
+ mov es, ax ; 8e c0 ; 0xf346e
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3470
+ jmp near 0336eh ; e9 f7 fe ; 0xf3474
+ mov dx, 003f4h ; ba f4 03 ; 0xf3477 floppy.c:679
+ in AL, DX ; ec ; 0xf347a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf347b
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf347d floppy.c:680
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf347f
+ je short 03495h ; 74 12 ; 0xf3481
+ mov ax, 00285h ; b8 85 02 ; 0xf3483 floppy.c:681
+ push ax ; 50 ; 0xf3486
+ mov ax, 002b8h ; b8 b8 02 ; 0xf3487
+ push ax ; 50 ; 0xf348a
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf348b
+ push ax ; 50 ; 0xf348e
+ call 0191ch ; e8 8a e4 ; 0xf348f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3492
+ xor cx, cx ; 31 c9 ; 0xf3495 floppy.c:684
+ jmp short 0349eh ; eb 05 ; 0xf3497
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3499
+ jnl short 034b4h ; 7d 16 ; 0xf349c
+ mov dx, 003f5h ; ba f5 03 ; 0xf349e floppy.c:685
+ in AL, DX ; ec ; 0xf34a1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf34a2
+ mov si, cx ; 89 ce ; 0xf34a4
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf34a6
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf34a9 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf34ac
+ mov byte [es:si], al ; 26 88 04 ; 0xf34ae
+ inc cx ; 41 ; 0xf34b1 floppy.c:685
+ jmp short 03499h ; eb e5 ; 0xf34b2
+ mov si, strict word 00042h ; be 42 00 ; 0xf34b4 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf34b7
+ mov es, ax ; 8e c0 ; 0xf34ba
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf34bc
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf34bf floppy.c:39
+ je short 034e4h ; 74 21 ; 0xf34c1
+ mov al, bl ; 88 d8 ; 0xf34c3 floppy.c:689
+ xor ah, ah ; 30 e4 ; 0xf34c5
+ call 02f17h ; e8 4d fa ; 0xf34c7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf34ca floppy.c:690
+ xor ah, ah ; 30 e4 ; 0xf34cd
+ or ah, 020h ; 80 cc 20 ; 0xf34cf
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf34d2
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf34d5 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf34d8
+ mov es, ax ; 8e c0 ; 0xf34db
+ mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf34dd
+ jmp near 033c6h ; e9 e2 fe ; 0xf34e1
+ mov al, bh ; 88 f8 ; 0xf34e4 floppy.c:698
+ xor ah, ah ; 30 e4 ; 0xf34e6
+ mov CL, strict byte 009h ; b1 09 ; 0xf34e8
+ sal ax, CL ; d3 e0 ; 0xf34ea
+ cwd ; 99 ; 0xf34ec
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf34ed
+ sar ax, 1 ; d1 f8 ; 0xf34ef
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf34f1
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf34f4
+ mov di, si ; 89 f7 ; 0xf34f7
+ mov cx, ax ; 89 c1 ; 0xf34f9
+ mov es, dx ; 8e c2 ; 0xf34fb
+ push DS ; 1e ; 0xf34fd
+ mov ds, dx ; 8e da ; 0xf34fe
+ rep movsw ; f3 a5 ; 0xf3500
+ pop DS ; 1f ; 0xf3502
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf3503 floppy.c:702
+ xor dh, dh ; 30 f6 ; 0xf3506
+ mov al, bl ; 88 d8 ; 0xf3508
+ xor ah, ah ; 30 e4 ; 0xf350a
+ call 02e90h ; e8 81 f9 ; 0xf350c
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf350f floppy.c:704
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3513 floppy.c:705
+ jmp near 0329bh ; e9 81 fd ; 0xf3517 floppy.c:706
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf351a floppy.c:707
+ xor ah, ah ; 30 e4 ; 0xf351d
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf351f
+ je short 03527h ; 74 03 ; 0xf3522
+ jmp near 03653h ; e9 2c 01 ; 0xf3524
+ mov CL, strict byte 00ch ; b1 0c ; 0xf3527 floppy.c:718
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3529
+ shr dx, CL ; d3 ea ; 0xf352c
+ mov ch, dl ; 88 d5 ; 0xf352e
+ mov CL, strict byte 004h ; b1 04 ; 0xf3530 floppy.c:719
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf3532
+ sal ax, CL ; d3 e0 ; 0xf3535
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3537 floppy.c:720
+ add si, ax ; 01 c6 ; 0xf353a
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf353c
+ cmp ax, si ; 39 f0 ; 0xf353f floppy.c:722
+ jbe short 03545h ; 76 02 ; 0xf3541
+ db 0feh, 0c5h
+ ; inc ch ; fe c5 ; 0xf3543 floppy.c:724
+ mov al, bh ; 88 f8 ; 0xf3545 floppy.c:726
+ xor ah, ah ; 30 e4 ; 0xf3547
+ mov CL, strict byte 009h ; b1 09 ; 0xf3549
+ sal ax, CL ; d3 e0 ; 0xf354b
+ dec ax ; 48 ; 0xf354d
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf354e
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf3551 floppy.c:729
+ add ax, word [bp-00eh] ; 03 46 f2 ; 0xf3554
+ cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf3557 floppy.c:730
+ jnc short 0355fh ; 73 03 ; 0xf355a
+ jmp near 033b3h ; e9 54 fe ; 0xf355c
+ mov AL, strict byte 006h ; b0 06 ; 0xf355f floppy.c:739
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3561
+ out DX, AL ; ee ; 0xf3564
+ xor al, al ; 30 c0 ; 0xf3565 floppy.c:741
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3567
+ out DX, AL ; ee ; 0xf356a
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf356b floppy.c:742
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf356e
+ out DX, AL ; ee ; 0xf3571
+ mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf3572 floppy.c:743
+ out DX, AL ; ee ; 0xf3575
+ xor al, al ; 30 c0 ; 0xf3576 floppy.c:744
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3578
+ out DX, AL ; ee ; 0xf357b
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf357c floppy.c:745
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf357f
+ out DX, AL ; ee ; 0xf3582
+ mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf3583 floppy.c:746
+ out DX, AL ; ee ; 0xf3586
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3587 floppy.c:753
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3589
+ out DX, AL ; ee ; 0xf358c
+ mov al, ch ; 88 e8 ; 0xf358d floppy.c:756
+ mov dx, 00081h ; ba 81 00 ; 0xf358f
+ out DX, AL ; ee ; 0xf3592
+ mov AL, strict byte 002h ; b0 02 ; 0xf3593 floppy.c:759
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3595
+ out DX, AL ; ee ; 0xf3598
+ mov cl, bl ; 88 d9 ; 0xf3599 floppy.c:764
+ xor ch, ch ; 30 ed ; 0xf359b
+ mov ax, cx ; 89 c8 ; 0xf359d
+ call 02f56h ; e8 b4 f9 ; 0xf359f
+ mov AL, strict byte 0c5h ; b0 c5 ; 0xf35a2 floppy.c:767
+ mov dx, 003f5h ; ba f5 03 ; 0xf35a4
+ out DX, AL ; ee ; 0xf35a7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf35a8 floppy.c:768
+ xor ah, ah ; 30 e4 ; 0xf35ab
+ mov dx, ax ; 89 c2 ; 0xf35ad
+ sal dx, 1 ; d1 e2 ; 0xf35af
+ sal dx, 1 ; d1 e2 ; 0xf35b1
+ mov al, bl ; 88 d8 ; 0xf35b3
+ or ax, dx ; 09 d0 ; 0xf35b5
+ mov dx, 003f5h ; ba f5 03 ; 0xf35b7
+ out DX, AL ; ee ; 0xf35ba
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf35bb floppy.c:769
+ out DX, AL ; ee ; 0xf35be
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf35bf floppy.c:770
+ out DX, AL ; ee ; 0xf35c2
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf35c3 floppy.c:771
+ out DX, AL ; ee ; 0xf35c6
+ mov AL, strict byte 002h ; b0 02 ; 0xf35c7 floppy.c:772
+ out DX, AL ; ee ; 0xf35c9
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf35ca floppy.c:773
+ xor dh, dh ; 30 f6 ; 0xf35cd
+ mov al, bh ; 88 f8 ; 0xf35cf
+ xor ah, ah ; 30 e4 ; 0xf35d1
+ add ax, dx ; 01 d0 ; 0xf35d3
+ dec ax ; 48 ; 0xf35d5
+ mov dx, 003f5h ; ba f5 03 ; 0xf35d6
+ out DX, AL ; ee ; 0xf35d9
+ xor al, al ; 30 c0 ; 0xf35da floppy.c:774
+ out DX, AL ; ee ; 0xf35dc
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf35dd floppy.c:775
+ out DX, AL ; ee ; 0xf35df
+ call 02edfh ; e8 fc f8 ; 0xf35e0 floppy.c:804
+ test al, al ; 84 c0 ; 0xf35e3 floppy.c:805
+ jne short 035eah ; 75 03 ; 0xf35e5
+ jmp near 03458h ; e9 6e fe ; 0xf35e7
+ mov dx, 003f4h ; ba f4 03 ; 0xf35ea floppy.c:816
+ in AL, DX ; ec ; 0xf35ed
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf35ee
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf35f0 floppy.c:817
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf35f2
+ je short 03608h ; 74 12 ; 0xf35f4
+ mov ax, 00285h ; b8 85 02 ; 0xf35f6 floppy.c:818
+ push ax ; 50 ; 0xf35f9
+ mov ax, 002b8h ; b8 b8 02 ; 0xf35fa
+ push ax ; 50 ; 0xf35fd
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf35fe
+ push ax ; 50 ; 0xf3601
+ call 0191ch ; e8 17 e3 ; 0xf3602
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3605
+ xor cx, cx ; 31 c9 ; 0xf3608 floppy.c:821
+ jmp short 03611h ; eb 05 ; 0xf360a
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf360c
+ jnl short 03627h ; 7d 16 ; 0xf360f
+ mov dx, 003f5h ; ba f5 03 ; 0xf3611 floppy.c:822
+ in AL, DX ; ec ; 0xf3614
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3615
+ mov si, cx ; 89 ce ; 0xf3617
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf3619
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf361c floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf361f
+ mov byte [es:si], al ; 26 88 04 ; 0xf3621
+ inc cx ; 41 ; 0xf3624 floppy.c:822
+ jmp short 0360ch ; eb e5 ; 0xf3625
+ mov si, strict word 00042h ; be 42 00 ; 0xf3627 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf362a
+ mov es, ax ; 8e c0 ; 0xf362d
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf362f
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3632 floppy.c:39
+ jne short 03639h ; 75 03 ; 0xf3634
+ jmp near 03503h ; e9 ca fe ; 0xf3636
+ mov bx, strict word 00043h ; bb 43 00 ; 0xf3639 floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf363c
+ test AL, strict byte 002h ; a8 02 ; 0xf363f floppy.c:39
+ je short 0364bh ; 74 08 ; 0xf3641
+ mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf3643 floppy.c:829
+ jmp near 03aa1h ; e9 56 04 ; 0xf3648
+ mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf364b floppy.c:832
+ jmp near 03aa1h ; e9 4e 04 ; 0xf3650 floppy.c:833
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf3653 floppy.c:848
+ xor dh, dh ; 30 f6 ; 0xf3656
+ mov al, bl ; 88 d8 ; 0xf3658
+ xor ah, ah ; 30 e4 ; 0xf365a
+ call 02e90h ; e8 31 f8 ; 0xf365c
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf365f floppy.c:850
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3663 floppy.c:851
+ jmp near 0329bh ; e9 31 fc ; 0xf3667 floppy.c:852
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf366a floppy.c:859
+ mov dl, byte [bp+015h] ; 8a 56 15 ; 0xf366d floppy.c:860
+ xor dh, dh ; 30 f6 ; 0xf3670
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf3672
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf3675 floppy.c:861
+ xor ah, ah ; 30 e4 ; 0xf3678
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf367a
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf367d floppy.c:862
+ cmp bl, 001h ; 80 fb 01 ; 0xf3680 floppy.c:864
+ jnbe short 03697h ; 77 12 ; 0xf3683
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf3685
+ jnbe short 03697h ; 77 0e ; 0xf3687
+ cmp dl, 04fh ; 80 fa 4f ; 0xf3689
+ jnbe short 03697h ; 77 09 ; 0xf368c
+ test bh, bh ; 84 ff ; 0xf368e
+ je short 03697h ; 74 05 ; 0xf3690
+ cmp bh, 012h ; 80 ff 12 ; 0xf3692
+ jbe short 036b2h ; 76 1b ; 0xf3695
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3697 floppy.c:866
+ xor ah, ah ; 30 e4 ; 0xf369a
+ or ah, 001h ; 80 cc 01 ; 0xf369c
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf369f
+ mov si, strict word 00041h ; be 41 00 ; 0xf36a2 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf36a5
+ mov es, ax ; 8e c0 ; 0xf36a8
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf36aa
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf36ae floppy.c:868
+ mov al, bl ; 88 d8 ; 0xf36b2 floppy.c:872
+ xor ah, ah ; 30 e4 ; 0xf36b4
+ call 03191h ; e8 d8 fa ; 0xf36b6
+ test ax, ax ; 85 c0 ; 0xf36b9
+ jne short 036d7h ; 75 1a ; 0xf36bb
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf36bd floppy.c:873
+ xor ah, ah ; 30 e4 ; 0xf36c0
+ or ah, 080h ; 80 cc 80 ; 0xf36c2
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf36c5
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf36c8 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf36cb
+ mov es, ax ; 8e c0 ; 0xf36ce
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf36d0
+ jmp near 03aa1h ; e9 ca 03 ; 0xf36d4
+ mov cl, bl ; 88 d9 ; 0xf36d7 floppy.c:880
+ xor ch, ch ; 30 ed ; 0xf36d9
+ mov ax, cx ; 89 c8 ; 0xf36db
+ call 02fcbh ; e8 eb f8 ; 0xf36dd
+ test ax, ax ; 85 c0 ; 0xf36e0
+ jne short 036f0h ; 75 0c ; 0xf36e2
+ mov ax, cx ; 89 c8 ; 0xf36e4 floppy.c:881
+ call 030aah ; e8 c1 f9 ; 0xf36e6
+ test ax, ax ; 85 c0 ; 0xf36e9
+ jne short 036f0h ; 75 03 ; 0xf36eb
+ jmp near 03357h ; e9 67 fc ; 0xf36ed
+ mov CL, strict byte 00ch ; b1 0c ; 0xf36f0 floppy.c:892
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf36f2
+ shr ax, CL ; d3 e8 ; 0xf36f5
+ mov ch, al ; 88 c5 ; 0xf36f7
+ mov CL, strict byte 004h ; b1 04 ; 0xf36f9 floppy.c:893
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf36fb
+ sal dx, CL ; d3 e2 ; 0xf36fe
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3700 floppy.c:894
+ add si, dx ; 01 d6 ; 0xf3703
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf3705
+ cmp dx, si ; 39 f2 ; 0xf3708 floppy.c:896
+ jbe short 0370eh ; 76 02 ; 0xf370a
+ db 0feh, 0c5h
+ ; inc ch ; fe c5 ; 0xf370c floppy.c:898
+ mov al, bh ; 88 f8 ; 0xf370e floppy.c:900
+ xor ah, ah ; 30 e4 ; 0xf3710
+ sal ax, 1 ; d1 e0 ; 0xf3712
+ sal ax, 1 ; d1 e0 ; 0xf3714
+ dec ax ; 48 ; 0xf3716
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3717
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf371a floppy.c:903
+ add ax, word [bp-00eh] ; 03 46 f2 ; 0xf371d
+ cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf3720 floppy.c:904
+ jnc short 0373fh ; 73 1a ; 0xf3723
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3725 floppy.c:905
+ xor ah, ah ; 30 e4 ; 0xf3728
+ or ah, 009h ; 80 cc 09 ; 0xf372a
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf372d
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3730 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3733
+ mov es, ax ; 8e c0 ; 0xf3736
+ mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf3738
+ jmp near 033c6h ; e9 87 fc ; 0xf373c
+ mov AL, strict byte 006h ; b0 06 ; 0xf373f floppy.c:912
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3741
+ out DX, AL ; ee ; 0xf3744
+ xor al, al ; 30 c0 ; 0xf3745 floppy.c:913
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3747
+ out DX, AL ; ee ; 0xf374a
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf374b floppy.c:914
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf374e
+ out DX, AL ; ee ; 0xf3751
+ mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf3752 floppy.c:915
+ out DX, AL ; ee ; 0xf3755
+ xor al, al ; 30 c0 ; 0xf3756 floppy.c:916
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3758
+ out DX, AL ; ee ; 0xf375b
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf375c floppy.c:917
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf375f
+ out DX, AL ; ee ; 0xf3762
+ mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf3763 floppy.c:918
+ out DX, AL ; ee ; 0xf3766
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3767 floppy.c:921
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3769
+ out DX, AL ; ee ; 0xf376c
+ mov al, ch ; 88 e8 ; 0xf376d floppy.c:923
+ mov dx, 00081h ; ba 81 00 ; 0xf376f
+ out DX, AL ; ee ; 0xf3772
+ mov AL, strict byte 002h ; b0 02 ; 0xf3773 floppy.c:924
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3775
+ out DX, AL ; ee ; 0xf3778
+ mov cl, bl ; 88 d9 ; 0xf3779 floppy.c:927
+ xor ch, ch ; 30 ed ; 0xf377b
+ mov ax, cx ; 89 c8 ; 0xf377d
+ call 02f56h ; e8 d4 f7 ; 0xf377f
+ mov AL, strict byte 00fh ; b0 0f ; 0xf3782 floppy.c:930
+ mov dx, 003f5h ; ba f5 03 ; 0xf3784
+ out DX, AL ; ee ; 0xf3787
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3788 floppy.c:931
+ xor ah, ah ; 30 e4 ; 0xf378b
+ mov dx, ax ; 89 c2 ; 0xf378d
+ sal dx, 1 ; d1 e2 ; 0xf378f
+ sal dx, 1 ; d1 e2 ; 0xf3791
+ mov al, bl ; 88 d8 ; 0xf3793
+ or dx, ax ; 09 c2 ; 0xf3795
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf3797
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf379a
+ mov dx, 003f5h ; ba f5 03 ; 0xf379d
+ out DX, AL ; ee ; 0xf37a0
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf37a1 floppy.c:932
+ out DX, AL ; ee ; 0xf37a4
+ mov AL, strict byte 04dh ; b0 4d ; 0xf37a5 floppy.c:935
+ out DX, AL ; ee ; 0xf37a7
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf37a8 floppy.c:936
+ out DX, AL ; ee ; 0xf37ab
+ mov AL, strict byte 002h ; b0 02 ; 0xf37ac floppy.c:937
+ out DX, AL ; ee ; 0xf37ae
+ mov al, bh ; 88 f8 ; 0xf37af floppy.c:938
+ out DX, AL ; ee ; 0xf37b1
+ xor al, bh ; 30 f8 ; 0xf37b2 floppy.c:939
+ out DX, AL ; ee ; 0xf37b4
+ mov AL, strict byte 0f6h ; b0 f6 ; 0xf37b5 floppy.c:940
+ out DX, AL ; ee ; 0xf37b7
+ call 02edfh ; e8 24 f7 ; 0xf37b8 floppy.c:968
+ test al, al ; 84 c0 ; 0xf37bb floppy.c:969
+ jne short 037c7h ; 75 08 ; 0xf37bd
+ mov ax, cx ; 89 c8 ; 0xf37bf floppy.c:970
+ call 02f17h ; e8 53 f7 ; 0xf37c1
+ jmp near 036bdh ; e9 f6 fe ; 0xf37c4 floppy.c:68
+ mov dx, 003f4h ; ba f4 03 ; 0xf37c7 floppy.c:979
+ in AL, DX ; ec ; 0xf37ca
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf37cb
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf37cd floppy.c:980
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf37cf
+ je short 037e5h ; 74 12 ; 0xf37d1
+ mov ax, 00285h ; b8 85 02 ; 0xf37d3 floppy.c:981
+ push ax ; 50 ; 0xf37d6
+ mov ax, 002b8h ; b8 b8 02 ; 0xf37d7
+ push ax ; 50 ; 0xf37da
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf37db
+ push ax ; 50 ; 0xf37de
+ call 0191ch ; e8 3a e1 ; 0xf37df
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf37e2
+ xor cx, cx ; 31 c9 ; 0xf37e5 floppy.c:984
+ jmp short 037eeh ; eb 05 ; 0xf37e7
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf37e9
+ jnl short 03804h ; 7d 16 ; 0xf37ec
+ mov dx, 003f5h ; ba f5 03 ; 0xf37ee floppy.c:985
+ in AL, DX ; ec ; 0xf37f1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf37f2
+ mov si, cx ; 89 ce ; 0xf37f4
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf37f6
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf37f9 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf37fc
+ mov byte [es:si], al ; 26 88 04 ; 0xf37fe
+ inc cx ; 41 ; 0xf3801 floppy.c:985
+ jmp short 037e9h ; eb e5 ; 0xf3802
+ mov si, strict word 00042h ; be 42 00 ; 0xf3804 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3807
+ mov es, ax ; 8e c0 ; 0xf380a
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf380c
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf380f floppy.c:39
+ je short 03832h ; 74 1f ; 0xf3811
+ mov si, strict word 00043h ; be 43 00 ; 0xf3813 floppy.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3816
+ test AL, strict byte 002h ; a8 02 ; 0xf3819 floppy.c:39
+ je short 03820h ; 74 03 ; 0xf381b
+ jmp near 03643h ; e9 23 fe ; 0xf381d
+ mov ax, 00285h ; b8 85 02 ; 0xf3820 floppy.c:996
+ push ax ; 50 ; 0xf3823
+ mov ax, 002cch ; b8 cc 02 ; 0xf3824
+ push ax ; 50 ; 0xf3827
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf3828
+ push ax ; 50 ; 0xf382b
+ call 0191ch ; e8 ed e0 ; 0xf382c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf382f
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3832 floppy.c:1000
+ mov si, strict word 00041h ; be 41 00 ; 0xf3836 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3839
+ mov es, ax ; 8e c0 ; 0xf383c
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf383e
+ mov al, bl ; 88 d8 ; 0xf3842 floppy.c:1002
+ xor ah, ah ; 30 e4 ; 0xf3844
+ xor dx, dx ; 31 d2 ; 0xf3846
+ call 02e90h ; e8 45 f6 ; 0xf3848
+ jmp near 03513h ; e9 c5 fc ; 0xf384b
+ mov bl, dl ; 88 d3 ; 0xf384e floppy.c:1009
+ cmp dl, 001h ; 80 fa 01 ; 0xf3850 floppy.c:1011
+ jbe short 0387bh ; 76 26 ; 0xf3853
+ mov word [bp+016h], strict word 00000h ; c7 46 16 00 00 ; 0xf3855 floppy.c:1012
+ mov word [bp+010h], strict word 00000h ; c7 46 10 00 00 ; 0xf385a floppy.c:1013
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf385f floppy.c:1014
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf3864 floppy.c:1015
+ mov word [bp+006h], strict word 00000h ; c7 46 06 00 00 ; 0xf3869 floppy.c:1016
+ mov word [bp+008h], strict word 00000h ; c7 46 08 00 00 ; 0xf386e floppy.c:1017
+ mov dl, bh ; 88 fa ; 0xf3873 floppy.c:1018
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf3875
+ jmp near 039a0h ; e9 25 01 ; 0xf3878
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf387b floppy.c:1019
+ call 0165fh ; e8 de dd ; 0xf387e
+ mov dl, al ; 88 c2 ; 0xf3881
+ xor bh, bh ; 30 ff ; 0xf3883 floppy.c:1025
+ test AL, strict byte 0f0h ; a8 f0 ; 0xf3885 floppy.c:1026
+ je short 0388bh ; 74 02 ; 0xf3887
+ mov BH, strict byte 001h ; b7 01 ; 0xf3889 floppy.c:1027
+ test dl, 00fh ; f6 c2 0f ; 0xf388b floppy.c:1028
+ je short 03892h ; 74 02 ; 0xf388e
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf3890 floppy.c:1029
+ test bl, bl ; 84 db ; 0xf3892 floppy.c:1031
+ jne short 0389ch ; 75 06 ; 0xf3894
+ mov CL, strict byte 004h ; b1 04 ; 0xf3896 floppy.c:1032
+ shr dl, CL ; d2 ea ; 0xf3898
+ jmp short 0389fh ; eb 03 ; 0xf389a floppy.c:1033
+ and dl, 00fh ; 80 e2 0f ; 0xf389c floppy.c:1034
+ mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf389f floppy.c:1037
+ mov al, dl ; 88 d0 ; 0xf38a3
+ xor ah, ah ; 30 e4 ; 0xf38a5
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf38a7
+ xor al, dl ; 30 d0 ; 0xf38aa floppy.c:1038
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf38ac
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf38af floppy.c:1040
+ mov cl, bh ; 88 f9 ; 0xf38b2
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf38b4
+ mov ax, cx ; 89 c8 ; 0xf38b7 floppy.c:1041
+ xor ah, ch ; 30 ec ; 0xf38b9
+ or ah, 001h ; 80 cc 01 ; 0xf38bb
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf38be
+ cmp dl, 003h ; 80 fa 03 ; 0xf38c1 floppy.c:1043
+ jc short 038dbh ; 72 15 ; 0xf38c4
+ jbe short 03902h ; 76 3a ; 0xf38c6
+ cmp dl, 005h ; 80 fa 05 ; 0xf38c8
+ jc short 03909h ; 72 3c ; 0xf38cb
+ jbe short 03910h ; 76 41 ; 0xf38cd
+ cmp dl, 00fh ; 80 fa 0f ; 0xf38cf
+ je short 0391eh ; 74 4a ; 0xf38d2
+ cmp dl, 00eh ; 80 fa 0e ; 0xf38d4
+ je short 03917h ; 74 3e ; 0xf38d7
+ jmp short 03925h ; eb 4a ; 0xf38d9
+ cmp dl, 002h ; 80 fa 02 ; 0xf38db
+ je short 038fbh ; 74 1b ; 0xf38de
+ cmp dl, 001h ; 80 fa 01 ; 0xf38e0
+ je short 038f4h ; 74 0f ; 0xf38e3
+ test dl, dl ; 84 d2 ; 0xf38e5
+ jne short 03925h ; 75 3c ; 0xf38e7
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf38e9 floppy.c:1045
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf38ee floppy.c:1046
+ jmp short 03937h ; eb 43 ; 0xf38f2 floppy.c:1047
+ mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf38f4 floppy.c:1050
+ jmp short 03937h ; eb 3c ; 0xf38f9 floppy.c:1051
+ mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf38fb floppy.c:1054
+ jmp short 03937h ; eb 35 ; 0xf3900 floppy.c:1055
+ mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf3902 floppy.c:1058
+ jmp short 03937h ; eb 2e ; 0xf3907 floppy.c:1059
+ mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf3909 floppy.c:1062
+ jmp short 03937h ; eb 27 ; 0xf390e floppy.c:1063
+ mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf3910 floppy.c:1066
+ jmp short 03937h ; eb 20 ; 0xf3915 floppy.c:1067
+ mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf3917 floppy.c:1070
+ jmp short 03937h ; eb 19 ; 0xf391c floppy.c:1071
+ mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf391e floppy.c:1074
+ jmp short 03937h ; eb 12 ; 0xf3923 floppy.c:1075
+ mov ax, 00285h ; b8 85 02 ; 0xf3925 floppy.c:1079
+ push ax ; 50 ; 0xf3928
+ mov ax, 002ddh ; b8 dd 02 ; 0xf3929
+ push ax ; 50 ; 0xf392c
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf392d
+ push ax ; 50 ; 0xf3930
+ call 0191ch ; e8 e8 df ; 0xf3931
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3934
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3937 floppy.c:1083
+ mov al, dl ; 88 d0 ; 0xf393c floppy.c:1084
+ xor ah, ah ; 30 e4 ; 0xf393e
+ call 03bdch ; e8 99 02 ; 0xf3940
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3943
+ jmp near 03513h ; e9 ca fb ; 0xf3946
+ mov bl, dl ; 88 d3 ; 0xf3949 floppy.c:1091
+ cmp dl, 001h ; 80 fa 01 ; 0xf394b floppy.c:1092
+ jbe short 03955h ; 76 05 ; 0xf394e
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf3950 floppy.c:1093
+ jmp short 039a0h ; eb 4b ; 0xf3953
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3955 floppy.c:1099
+ call 0165fh ; e8 04 dd ; 0xf3958
+ test bl, bl ; 84 db ; 0xf395b floppy.c:1100
+ jne short 03967h ; 75 08 ; 0xf395d
+ mov CL, strict byte 004h ; b1 04 ; 0xf395f floppy.c:1101
+ mov dl, al ; 88 c2 ; 0xf3961
+ shr dl, CL ; d2 ea ; 0xf3963
+ jmp short 0396ch ; eb 05 ; 0xf3965 floppy.c:1102
+ mov dl, al ; 88 c2 ; 0xf3967 floppy.c:1103
+ and dl, 00fh ; 80 e2 0f ; 0xf3969
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf396c floppy.c:1104
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3970
+ xor ah, ah ; 30 e4 ; 0xf3973
+ test dl, dl ; 84 d2 ; 0xf3975 floppy.c:1105
+ je short 03986h ; 74 0d ; 0xf3977
+ cmp dl, 001h ; 80 fa 01 ; 0xf3979 floppy.c:1106
+ jbe short 03983h ; 76 05 ; 0xf397c
+ or ah, 002h ; 80 cc 02 ; 0xf397e floppy.c:1108
+ jmp short 03986h ; eb 03 ; 0xf3981 floppy.c:1109
+ or ah, 001h ; 80 cc 01 ; 0xf3983 floppy.c:1110
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3986
+ jmp near 0329bh ; e9 0f f9 ; 0xf3989 floppy.c:1113
+ cmp dl, 001h ; 80 fa 01 ; 0xf398c floppy.c:1118
+ jbe short 039a6h ; 76 15 ; 0xf398f
+ mov word [bp+016h], si ; 89 76 16 ; 0xf3991 floppy.c:1119
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3994 floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3997
+ mov es, dx ; 8e c2 ; 0xf399a
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf399c
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xf39a0
+ jmp near 0329bh ; e9 f5 f8 ; 0xf39a3
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf39a6 floppy.c:1125
+ xor ah, ah ; 30 e4 ; 0xf39a9
+ or ah, 006h ; 80 cc 06 ; 0xf39ab
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf39ae
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf39b1 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf39b4
+ mov es, ax ; 8e c0 ; 0xf39b7
+ mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf39b9
+ jmp near 03aa1h ; e9 e1 00 ; 0xf39bd
+ mov bl, dl ; 88 d3 ; 0xf39c0 floppy.c:1134
+ mov cl, byte [bp+016h] ; 8a 4e 16 ; 0xf39c2 floppy.c:1142
+ cmp dl, 001h ; 80 fa 01 ; 0xf39c5 floppy.c:1146
+ jnbe short 03991h ; 77 c7 ; 0xf39c8
+ mov al, bl ; 88 d8 ; 0xf39ca floppy.c:1154
+ xor ah, ah ; 30 e4 ; 0xf39cc
+ call 03191h ; e8 c0 f7 ; 0xf39ce
+ test ax, ax ; 85 c0 ; 0xf39d1
+ jne short 039d8h ; 75 03 ; 0xf39d3
+ jmp near 036bdh ; e9 e5 fc ; 0xf39d5
+ test bl, bl ; 84 db ; 0xf39d8 floppy.c:1162
+ je short 039e1h ; 74 05 ; 0xf39da
+ mov bx, 00091h ; bb 91 00 ; 0xf39dc
+ jmp short 039e4h ; eb 03 ; 0xf39df
+ mov bx, 00090h ; bb 90 00 ; 0xf39e1
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf39e4
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf39e7 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf39ea
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf39ec
+ and bl, 00fh ; 80 e3 0f ; 0xf39ef floppy.c:1166
+ cmp cl, 002h ; 80 f9 02 ; 0xf39f2 floppy.c:1168
+ jc short 03a06h ; 72 0f ; 0xf39f5
+ jbe short 03a13h ; 76 1a ; 0xf39f7
+ cmp cl, 004h ; 80 f9 04 ; 0xf39f9
+ je short 03a0eh ; 74 10 ; 0xf39fc
+ cmp cl, 003h ; 80 f9 03 ; 0xf39fe
+ je short 03a18h ; 74 15 ; 0xf3a01
+ jmp near 03225h ; e9 1f f8 ; 0xf3a03
+ cmp cl, 001h ; 80 f9 01 ; 0xf3a06
+ je short 03a0eh ; 74 03 ; 0xf3a09
+ jmp near 03225h ; e9 17 f8 ; 0xf3a0b
+ or bl, 090h ; 80 cb 90 ; 0xf3a0e floppy.c:1171
+ jmp short 03a1bh ; eb 08 ; 0xf3a11 floppy.c:1172
+ or bl, 070h ; 80 cb 70 ; 0xf3a13 floppy.c:1175
+ jmp short 03a1bh ; eb 03 ; 0xf3a16 floppy.c:1176
+ or bl, 010h ; 80 cb 10 ; 0xf3a18 floppy.c:1179
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a1b floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf3a1e
+ mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf3a20
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3a23
+ xor al, al ; 30 c0 ; 0xf3a26 floppy.c:1198
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf3a28
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a2b floppy.c:43
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3a2e
+ jmp near 03513h ; e9 df fa ; 0xf3a31
+ mov bl, dl ; 88 d3 ; 0xf3a34 floppy.c:1208
+ mov cl, byte [bp+014h] ; 8a 4e 14 ; 0xf3a36 floppy.c:1210
+ mov bh, cl ; 88 cf ; 0xf3a39 floppy.c:1211
+ and bh, 03fh ; 80 e7 3f ; 0xf3a3b
+ mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf3a3e floppy.c:1212
+ mov byte [bp-009h], dh ; 88 76 f7 ; 0xf3a41
+ mov CL, strict byte 006h ; b1 06 ; 0xf3a44
+ mov di, word [bp-00ah] ; 8b 7e f6 ; 0xf3a46
+ sar di, CL ; d3 ff ; 0xf3a49
+ mov cx, di ; 89 f9 ; 0xf3a4b
+ mov byte [bp-009h], cl ; 88 4e f7 ; 0xf3a4d
+ mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf3a50
+ mov cl, byte [bp+015h] ; 8a 4e 15 ; 0xf3a53
+ xor ch, ch ; 30 ed ; 0xf3a56
+ add cx, word [bp-00ah] ; 03 4e f6 ; 0xf3a58
+ mov byte [bp-004h], cl ; 88 4e fc ; 0xf3a5b
+ cmp dl, 001h ; 80 fa 01 ; 0xf3a5e floppy.c:1217
+ jbe short 03a66h ; 76 03 ; 0xf3a61
+ jmp near 03991h ; e9 2b ff ; 0xf3a63
+ mov al, bl ; 88 d8 ; 0xf3a66 floppy.c:1225
+ xor ah, ah ; 30 e4 ; 0xf3a68
+ call 03191h ; e8 24 f7 ; 0xf3a6a
+ test ax, ax ; 85 c0 ; 0xf3a6d
+ jne short 03a74h ; 75 03 ; 0xf3a6f
+ jmp near 036bdh ; e9 49 fc ; 0xf3a71
+ mov cl, bl ; 88 d9 ; 0xf3a74 floppy.c:1233
+ xor ch, ch ; 30 ed ; 0xf3a76
+ mov ax, cx ; 89 c8 ; 0xf3a78
+ call 02fcbh ; e8 4e f5 ; 0xf3a7a
+ test ax, ax ; 85 c0 ; 0xf3a7d
+ jne short 03aa8h ; 75 27 ; 0xf3a7f
+ mov ax, cx ; 89 c8 ; 0xf3a81 floppy.c:1234
+ call 030aah ; e8 24 f6 ; 0xf3a83
+ test ax, ax ; 85 c0 ; 0xf3a86
+ jne short 03aa8h ; 75 1e ; 0xf3a88
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a8a floppy.c:1235
+ xor ah, ah ; 30 e4 ; 0xf3a8d
+ or ah, 00ch ; 80 cc 0c ; 0xf3a8f
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3a92
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a95 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a98
+ mov es, ax ; 8e c0 ; 0xf3a9b
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3a9d
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3aa1
+ jmp near 0329bh ; e9 f3 f7 ; 0xf3aa5
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3aa8 floppy.c:1243
+ call 0165fh ; e8 b1 db ; 0xf3aab
+ test bl, bl ; 84 db ; 0xf3aae floppy.c:1244
+ jne short 03abah ; 75 08 ; 0xf3ab0
+ mov CL, strict byte 004h ; b1 04 ; 0xf3ab2 floppy.c:1245
+ mov dl, al ; 88 c2 ; 0xf3ab4
+ shr dl, CL ; d2 ea ; 0xf3ab6
+ jmp short 03abfh ; eb 05 ; 0xf3ab8 floppy.c:1246
+ mov dl, al ; 88 c2 ; 0xf3aba floppy.c:1247
+ and dl, 00fh ; 80 e2 0f ; 0xf3abc
+ test bl, bl ; 84 db ; 0xf3abf floppy.c:1250
+ je short 03ac8h ; 74 05 ; 0xf3ac1
+ mov si, 00091h ; be 91 00 ; 0xf3ac3
+ jmp short 03acbh ; eb 03 ; 0xf3ac6
+ mov si, 00090h ; be 90 00 ; 0xf3ac8
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf3acb
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3ace floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3ad1
+ mov bl, byte [es:si] ; 26 8a 1c ; 0xf3ad3
+ and bl, 00fh ; 80 e3 0f ; 0xf3ad6 floppy.c:39
+ cmp dl, 003h ; 80 fa 03 ; 0xf3ad9 floppy.c:1256
+ jc short 03af9h ; 72 1b ; 0xf3adc
+ mov al, bl ; 88 d8 ; 0xf3ade
+ or AL, strict byte 090h ; 0c 90 ; 0xf3ae0
+ cmp dl, 003h ; 80 fa 03 ; 0xf3ae2
+ jbe short 03b35h ; 76 4e ; 0xf3ae5
+ mov ah, bl ; 88 dc ; 0xf3ae7
+ or ah, 010h ; 80 cc 10 ; 0xf3ae9
+ cmp dl, 005h ; 80 fa 05 ; 0xf3aec
+ je short 03b33h ; 74 42 ; 0xf3aef
+ cmp dl, 004h ; 80 fa 04 ; 0xf3af1
+ je short 03b42h ; 74 4c ; 0xf3af4
+ jmp near 03b7ah ; e9 81 00 ; 0xf3af6
+ cmp dl, 002h ; 80 fa 02 ; 0xf3af9
+ je short 03b13h ; 74 15 ; 0xf3afc
+ cmp dl, 001h ; 80 fa 01 ; 0xf3afe
+ jne short 03b46h ; 75 43 ; 0xf3b01
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3b03 floppy.c:1258
+ jne short 03b46h ; 75 3d ; 0xf3b07
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b09
+ jne short 03b5ch ; 75 4e ; 0xf3b0c
+ or bl, 090h ; 80 cb 90 ; 0xf3b0e floppy.c:1259
+ jmp short 03b5ch ; eb 49 ; 0xf3b11 floppy.c:1261
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3b13 floppy.c:1263
+ jne short 03b23h ; 75 0a ; 0xf3b17
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b19
+ jne short 03b23h ; 75 05 ; 0xf3b1c
+ or bl, 070h ; 80 cb 70 ; 0xf3b1e floppy.c:1264
+ jmp short 03b5ch ; eb 39 ; 0xf3b21 floppy.c:1265
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b23
+ jne short 03b7ah ; 75 51 ; 0xf3b27
+ cmp bh, 00fh ; 80 ff 0f ; 0xf3b29
+ jne short 03b7ah ; 75 4c ; 0xf3b2c
+ or bl, 010h ; 80 cb 10 ; 0xf3b2e floppy.c:1266
+ jmp short 03b7ah ; eb 47 ; 0xf3b31 floppy.c:1268
+ jmp short 03b5eh ; eb 29 ; 0xf3b33
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b35 floppy.c:1270
+ jne short 03b7ah ; 75 3f ; 0xf3b39
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b3b
+ je short 03b44h ; 74 04 ; 0xf3b3e
+ jmp short 03b7ah ; eb 38 ; 0xf3b40
+ jmp short 03b48h ; eb 04 ; 0xf3b42
+ mov bl, al ; 88 c3 ; 0xf3b44 floppy.c:1271
+ jmp short 03b7ah ; eb 32 ; 0xf3b46 floppy.c:1273
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b48 floppy.c:1275
+ jne short 03b7ah ; 75 2c ; 0xf3b4c
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b4e floppy.c:1276
+ jne short 03b55h ; 75 02 ; 0xf3b51
+ jmp short 03b44h ; eb ef ; 0xf3b53
+ cmp bh, 012h ; 80 ff 12 ; 0xf3b55 floppy.c:1277
+ jne short 03b7ah ; 75 20 ; 0xf3b58
+ mov bl, ah ; 88 e3 ; 0xf3b5a floppy.c:1279
+ jmp short 03b7ah ; eb 1c ; 0xf3b5c floppy.c:1282
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b5e floppy.c:1284
+ jne short 03b7ah ; 75 16 ; 0xf3b62
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b64 floppy.c:1285
+ jne short 03b6bh ; 75 02 ; 0xf3b67
+ jmp short 03b44h ; eb d9 ; 0xf3b69
+ cmp bh, 012h ; 80 ff 12 ; 0xf3b6b floppy.c:1286
+ jne short 03b72h ; 75 02 ; 0xf3b6e
+ jmp short 03b5ah ; eb e8 ; 0xf3b70
+ cmp bh, 024h ; 80 ff 24 ; 0xf3b72 floppy.c:1288
+ jne short 03b7ah ; 75 03 ; 0xf3b75
+ or bl, 0d0h ; 80 cb d0 ; 0xf3b77 floppy.c:1290
+ mov al, bl ; 88 d8 ; 0xf3b7a floppy.c:1299
+ xor ah, ah ; 30 e4 ; 0xf3b7c
+ mov CL, strict byte 004h ; b1 04 ; 0xf3b7e
+ sar ax, CL ; d3 f8 ; 0xf3b80
+ test AL, strict byte 001h ; a8 01 ; 0xf3b82
+ jne short 03b89h ; 75 03 ; 0xf3b84
+ jmp near 03a8ah ; e9 01 ff ; 0xf3b86
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b89 floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf3b8c
+ mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf3b8e
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3b91
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3b94 floppy.c:1312
+ mov al, dl ; 88 d0 ; 0xf3b99 floppy.c:1313
+ xor ah, ah ; 30 e4 ; 0xf3b9b
+ call 03bdch ; e8 3c 00 ; 0xf3b9d
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3ba0
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3ba3 floppy.c:1316
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3ba7 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3baa
+ mov es, ax ; 8e c0 ; 0xf3bad
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3baf
+ jmp near 03513h ; e9 5d f9 ; 0xf3bb3
+ mov bx, 00eeah ; bb ea 0e ; 0xf3bb6 floppy.c:1322
+ mov cx, ds ; 8c d9 ; 0xf3bb9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3bbb
+ call 018d9h ; e8 18 dd ; 0xf3bbe
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3bc1
+ xor ah, ah ; 30 e4 ; 0xf3bc4
+ push ax ; 50 ; 0xf3bc6
+ mov ax, 00285h ; b8 85 02 ; 0xf3bc7
+ push ax ; 50 ; 0xf3bca
+ mov ax, 002f2h ; b8 f2 02 ; 0xf3bcb
+ push ax ; 50 ; 0xf3bce
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3bcf
+ push ax ; 50 ; 0xf3bd2
+ call 0191ch ; e8 46 dd ; 0xf3bd3
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3bd6
+ jmp near 03225h ; e9 49 f6 ; 0xf3bd9 floppy.c:68
+ ; disGetNextSymbol 0xf3bdc LB 0x77dc -> off=0x0 cb=0000000000000032 uValue=00000000000f25dc 'get_floppy_dpt'
+get_floppy_dpt: ; 0xf3bdc LB 0x32
+ push bx ; 53 ; 0xf3bdc floppyt.c:94
+ push dx ; 52 ; 0xf3bdd
+ push bp ; 55 ; 0xf3bde
+ mov bp, sp ; 89 e5 ; 0xf3bdf
+ mov dl, al ; 88 c2 ; 0xf3be1
+ xor ax, ax ; 31 c0 ; 0xf3be3 floppyt.c:98
+ jmp short 03bedh ; eb 06 ; 0xf3be5
+ inc ax ; 40 ; 0xf3be7 floppyt.c:100
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3be8
+ jnc short 03c07h ; 73 1a ; 0xf3beb
+ mov bx, ax ; 89 c3 ; 0xf3bed
+ sal bx, 1 ; d1 e3 ; 0xf3bef
+ cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3bf1
+ jne short 03be7h ; 75 f0 ; 0xf3bf5
+ mov al, byte [word bx+0005ch] ; 8a 87 5c 00 ; 0xf3bf7
+ xor ah, ah ; 30 e4 ; 0xf3bfb
+ mov bx, strict word 0000dh ; bb 0d 00 ; 0xf3bfd
+ imul bx ; f7 eb ; 0xf3c00
+ add ax, strict word 00000h ; 05 00 00 ; 0xf3c02
+ jmp short 03c0ah ; eb 03 ; 0xf3c05
+ mov ax, strict word 00041h ; b8 41 00 ; 0xf3c07 floppyt.c:103
+ pop bp ; 5d ; 0xf3c0a floppyt.c:104
+ pop dx ; 5a ; 0xf3c0b
+ pop bx ; 5b ; 0xf3c0c
+ retn ; c3 ; 0xf3c0d
+ ; disGetNextSymbol 0xf3c0e LB 0x77aa -> off=0x0 cb=0000000000000007 uValue=00000000000f260e 'dummy_soft_reset'
+dummy_soft_reset: ; 0xf3c0e LB 0x7
+ push bp ; 55 ; 0xf3c0e eltorito.c:129
+ mov bp, sp ; 89 e5 ; 0xf3c0f
+ xor ax, ax ; 31 c0 ; 0xf3c11 eltorito.c:132
+ pop bp ; 5d ; 0xf3c13
+ retn ; c3 ; 0xf3c14
+ ; disGetNextSymbol 0xf3c15 LB 0x77a3 -> off=0x0 cb=0000000000000017 uValue=00000000000f2615 'cdemu_init'
+cdemu_init: ; 0xf3c15 LB 0x17
+ push bp ; 55 ; 0xf3c15 eltorito.c:158
+ mov bp, sp ; 89 e5 ; 0xf3c16
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c18 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c1b
+ mov es, ax ; 8e c0 ; 0xf3c1e
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3c20
+ mov bx, 0031eh ; bb 1e 03 ; 0xf3c23 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3c26
+ pop bp ; 5d ; 0xf3c2a eltorito.c:165
+ retn ; c3 ; 0xf3c2b
+ ; disGetNextSymbol 0xf3c2c LB 0x778c -> off=0x0 cb=0000000000000016 uValue=00000000000f262c 'cdemu_isactive'
+cdemu_isactive: ; 0xf3c2c LB 0x16
+ push bp ; 55 ; 0xf3c2c eltorito.c:167
+ mov bp, sp ; 89 e5 ; 0xf3c2d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c2f eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c32
+ mov es, ax ; 8e c0 ; 0xf3c35
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3c37
+ mov bx, 0031eh ; bb 1e 03 ; 0xf3c3a eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3c3d
+ pop bp ; 5d ; 0xf3c40 eltorito.c:173
+ retn ; c3 ; 0xf3c41
+ ; disGetNextSymbol 0xf3c42 LB 0x7776 -> off=0x0 cb=0000000000000016 uValue=00000000000f2642 'cdemu_emulated_drive'
+cdemu_emulated_drive: ; 0xf3c42 LB 0x16
+ push bp ; 55 ; 0xf3c42 eltorito.c:175
+ mov bp, sp ; 89 e5 ; 0xf3c43
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c45 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c48
+ mov es, ax ; 8e c0 ; 0xf3c4b
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3c4d
+ mov bx, 00320h ; bb 20 03 ; 0xf3c50 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3c53
+ pop bp ; 5d ; 0xf3c56 eltorito.c:181
+ retn ; c3 ; 0xf3c57
+ ; disGetNextSymbol 0xf3c58 LB 0x7760 -> off=0x0 cb=0000000000000180 uValue=00000000000f2658 'int13_eltorito'
+int13_eltorito: ; 0xf3c58 LB 0x180
+ push bp ; 55 ; 0xf3c58 eltorito.c:187
+ mov bp, sp ; 89 e5 ; 0xf3c59
+ push si ; 56 ; 0xf3c5b
+ push di ; 57 ; 0xf3c5c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c5d eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c60
+ mov es, ax ; 8e c0 ; 0xf3c63
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf3c65
+ mov bx, 0031eh ; bb 1e 03 ; 0xf3c68 eltorito.c:193
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3c6b eltorito.c:199
+ xor ah, ah ; 30 e4 ; 0xf3c6e
+ cmp ax, strict word 0004bh ; 3d 4b 00 ; 0xf3c70
+ jc short 03c7fh ; 72 0a ; 0xf3c73
+ jbe short 03caah ; 76 33 ; 0xf3c75
+ cmp ax, strict word 0004dh ; 3d 4d 00 ; 0xf3c77
+ jbe short 03c84h ; 76 08 ; 0xf3c7a
+ jmp near 03d9ch ; e9 1d 01 ; 0xf3c7c
+ cmp ax, strict word 0004ah ; 3d 4a 00 ; 0xf3c7f
+ jne short 03ca7h ; 75 23 ; 0xf3c82
+ mov bx, 00eeah ; bb ea 0e ; 0xf3c84 eltorito.c:205
+ mov cx, ds ; 8c d9 ; 0xf3c87
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3c89
+ call 018d9h ; e8 4a dc ; 0xf3c8c
+ push word [bp+016h] ; ff 76 16 ; 0xf3c8f
+ mov ax, 0030ch ; b8 0c 03 ; 0xf3c92
+ push ax ; 50 ; 0xf3c95
+ mov ax, 0031bh ; b8 1b 03 ; 0xf3c96
+ push ax ; 50 ; 0xf3c99
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3c9a
+ push ax ; 50 ; 0xf3c9d
+ call 0191ch ; e8 7b dc ; 0xf3c9e
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3ca1
+ jmp near 03db7h ; e9 10 01 ; 0xf3ca4 eltorito.c:206
+ jmp near 03d9ch ; e9 f2 00 ; 0xf3ca7
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf3caa eltorito.c:41
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cad
+ mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3cb0
+ inc si ; 46 ; 0xf3cb4 eltorito.c:213
+ mov ax, es ; 8c c0 ; 0xf3cb5 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3cb7
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3cb9
+ mov es, ax ; 8e c0 ; 0xf3cbd eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3cbf
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cc2 eltorito.c:214
+ inc si ; 46 ; 0xf3cc5
+ inc si ; 46 ; 0xf3cc6
+ mov es, di ; 8e c7 ; 0xf3cc7 eltorito.c:41
+ mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3cc9
+ mov es, ax ; 8e c0 ; 0xf3ccd eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3ccf
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cd2 eltorito.c:215
+ add si, strict byte 00003h ; 83 c6 03 ; 0xf3cd5
+ mov es, di ; 8e c7 ; 0xf3cd8 eltorito.c:41
+ mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3cda
+ mov es, ax ; 8e c0 ; 0xf3cde eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3ce0
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3ce3 eltorito.c:216
+ add si, strict byte 00004h ; 83 c6 04 ; 0xf3ce6
+ mov es, di ; 8e c7 ; 0xf3ce9 eltorito.c:61
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3ceb
+ mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3cef
+ mov es, ax ; 8e c0 ; 0xf3cf3 eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3cf5
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3cf8
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cfc eltorito.c:217
+ add si, strict byte 00008h ; 83 c6 08 ; 0xf3cff
+ mov es, di ; 8e c7 ; 0xf3d02 eltorito.c:51
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3d04
+ mov es, ax ; 8e c0 ; 0xf3d08 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d0a
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d0d eltorito.c:218
+ add si, strict byte 0000ah ; 83 c6 0a ; 0xf3d10
+ mov es, di ; 8e c7 ; 0xf3d13 eltorito.c:51
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3d15
+ mov es, ax ; 8e c0 ; 0xf3d19 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d1b
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d1e eltorito.c:219
+ add si, strict byte 0000ch ; 83 c6 0c ; 0xf3d21
+ mov es, di ; 8e c7 ; 0xf3d24 eltorito.c:51
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3d26
+ mov es, ax ; 8e c0 ; 0xf3d2a eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d2c
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d2f eltorito.c:220
+ add si, strict byte 0000eh ; 83 c6 0e ; 0xf3d32
+ mov es, di ; 8e c7 ; 0xf3d35 eltorito.c:51
+ mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3d37
+ mov es, ax ; 8e c0 ; 0xf3d3b eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d3d
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d40 eltorito.c:221
+ add si, strict byte 00010h ; 83 c6 10 ; 0xf3d43
+ mov es, di ; 8e c7 ; 0xf3d46 eltorito.c:41
+ mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3d48
+ mov es, ax ; 8e c0 ; 0xf3d4c eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d4e
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d51 eltorito.c:222
+ add si, strict byte 00011h ; 83 c6 11 ; 0xf3d54
+ mov dx, ax ; 89 c2 ; 0xf3d57 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3d59
+ mov al, byte [es:bx+014h] ; 26 8a 47 14 ; 0xf3d5b
+ mov es, dx ; 8e c2 ; 0xf3d5f eltorito.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf3d61
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d64 eltorito.c:223
+ add si, strict byte 00012h ; 83 c6 12 ; 0xf3d67
+ mov es, di ; 8e c7 ; 0xf3d6a eltorito.c:41
+ mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3d6c
+ mov es, dx ; 8e c2 ; 0xf3d70 eltorito.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf3d72
+ test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3d75 eltorito.c:226
+ jne short 03d81h ; 75 06 ; 0xf3d79
+ mov es, di ; 8e c7 ; 0xf3d7b eltorito.c:228
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3d7d
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3d81 eltorito.c:231
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3d85
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3d88
+ mov es, ax ; 8e c0 ; 0xf3d8b
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3d8d
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3d91
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3d95
+ pop di ; 5f ; 0xf3d98
+ pop si ; 5e ; 0xf3d99
+ pop bp ; 5d ; 0xf3d9a
+ retn ; c3 ; 0xf3d9b
+ mov bx, 00eeah ; bb ea 0e ; 0xf3d9c eltorito.c:235
+ mov cx, ds ; 8c d9 ; 0xf3d9f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3da1
+ call 018d9h ; e8 32 db ; 0xf3da4
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3da7
+ xor ah, ah ; 30 e4 ; 0xf3daa
+ push ax ; 50 ; 0xf3dac
+ mov ax, 0030ch ; b8 0c 03 ; 0xf3dad
+ push ax ; 50 ; 0xf3db0
+ mov ax, 00343h ; b8 43 03 ; 0xf3db1
+ jmp near 03c99h ; e9 e2 fe ; 0xf3db4
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3db7 eltorito.c:241
+ xor ah, ah ; 30 e4 ; 0xf3dba
+ or ah, 001h ; 80 cc 01 ; 0xf3dbc
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3dbf
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3dc2 eltorito.c:242
+ xor ah, ah ; 30 e4 ; 0xf3dc5
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3dc7 eltorito.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3dca
+ mov es, dx ; 8e c2 ; 0xf3dcd
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3dcf
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3dd2 eltorito.c:243
+ jmp short 03d95h ; eb bd ; 0xf3dd6 eltorito.c:244
+ ; disGetNextSymbol 0xf3dd8 LB 0x75e0 -> off=0x0 cb=0000000000000034 uValue=00000000000f27d8 'device_is_cdrom'
+device_is_cdrom: ; 0xf3dd8 LB 0x34
+ push bx ; 53 ; 0xf3dd8 eltorito.c:259
+ push dx ; 52 ; 0xf3dd9
+ push bp ; 55 ; 0xf3dda
+ mov bp, sp ; 89 e5 ; 0xf3ddb
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3ddd eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3de0
+ mov es, dx ; 8e c2 ; 0xf3de3
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf3de5
+ cmp AL, strict byte 014h ; 3c 14 ; 0xf3de8 eltorito.c:265
+ jc short 03df0h ; 72 04 ; 0xf3dea
+ xor ax, ax ; 31 c0 ; 0xf3dec eltorito.c:266
+ jmp short 03e08h ; eb 18 ; 0xf3dee
+ xor ah, ah ; 30 e4 ; 0xf3df0 eltorito.c:271
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3df2
+ imul dx ; f7 ea ; 0xf3df5
+ mov es, bx ; 8e c3 ; 0xf3df7
+ mov bx, ax ; 89 c3 ; 0xf3df9
+ add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3dfb
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf3dfe
+ jne short 03dech ; 75 e7 ; 0xf3e03
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3e05 eltorito.c:272
+ pop bp ; 5d ; 0xf3e08 eltorito.c:275
+ pop dx ; 5a ; 0xf3e09
+ pop bx ; 5b ; 0xf3e0a
+ retn ; c3 ; 0xf3e0b
+ ; disGetNextSymbol 0xf3e0c LB 0x75ac -> off=0x0 cb=00000000000003ca uValue=00000000000f280c 'cdrom_boot'
+cdrom_boot: ; 0xf3e0c LB 0x3ca
+ push bp ; 55 ; 0xf3e0c eltorito.c:285
+ mov bp, sp ; 89 e5 ; 0xf3e0d
+ push bx ; 53 ; 0xf3e0f
+ push cx ; 51 ; 0xf3e10
+ push dx ; 52 ; 0xf3e11
+ push si ; 56 ; 0xf3e12
+ push di ; 57 ; 0xf3e13
+ sub sp, 0081ch ; 81 ec 1c 08 ; 0xf3e14
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e18 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3e1b
+ mov es, ax ; 8e c0 ; 0xf3e1e
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf3e20
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf3e23 eltorito.c:49
+ mov si, 0031eh ; be 1e 03 ; 0xf3e26 eltorito.c:298
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf3e29
+ mov word [bp-018h], strict word 0005eh ; c7 46 e8 5e 00 ; 0xf3e2c eltorito.c:299
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf3e31
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3e34 eltorito.c:302
+ jmp short 03e43h ; eb 09 ; 0xf3e38
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf3e3a eltorito.c:305
+ cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf3e3d
+ jnc short 03e4fh ; 73 0c ; 0xf3e41
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e43
+ xor ah, ah ; 30 e4 ; 0xf3e46
+ call 03dd8h ; e8 8d ff ; 0xf3e48
+ test ax, ax ; 85 c0 ; 0xf3e4b
+ je short 03e3ah ; 74 eb ; 0xf3e4d
+ cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf3e4f eltorito.c:308
+ jc short 03e5bh ; 72 06 ; 0xf3e53
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf3e55 eltorito.c:309
+ jmp near 041cch ; e9 71 03 ; 0xf3e58
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3e5b eltorito.c:312
+ xor bx, bx ; 31 db ; 0xf3e5e
+ mov dx, ss ; 8c d2 ; 0xf3e60
+ lea ax, [bp-026h] ; 8d 46 da ; 0xf3e62
+ call 0b090h ; e8 28 72 ; 0xf3e65
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3e68 eltorito.c:313
+ mov ax, strict word 00011h ; b8 11 00 ; 0xf3e6d eltorito.c:314
+ xor dx, dx ; 31 d2 ; 0xf3e70
+ xchg ah, al ; 86 c4 ; 0xf3e72
+ xchg dh, dl ; 86 d6 ; 0xf3e74
+ xchg dx, ax ; 92 ; 0xf3e76
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3e77
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3e7a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3e7d eltorito.c:315
+ xchg ah, al ; 86 c4 ; 0xf3e80
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3e82
+ les bx, [bp-018h] ; c4 5e e8 ; 0xf3e85 eltorito.c:317
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf3e88
+ mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3e8e eltorito.c:318
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3e94 eltorito.c:320
+ jmp short 03ea3h ; eb 09 ; 0xf3e98
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf3e9a eltorito.c:325
+ cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf3e9d
+ jnbe short 03ee5h ; 77 42 ; 0xf3ea1
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3ea3
+ xor ah, ah ; 30 e4 ; 0xf3ea6
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3ea8
+ imul dx ; f7 ea ; 0xf3eab
+ les bx, [bp-018h] ; c4 5e e8 ; 0xf3ead
+ add bx, ax ; 01 c3 ; 0xf3eb0
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3eb2
+ xor ah, ah ; 30 e4 ; 0xf3eb6
+ mov di, ax ; 89 c7 ; 0xf3eb8
+ sal di, 1 ; d1 e7 ; 0xf3eba
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3ebc
+ push SS ; 16 ; 0xf3ec0
+ push dx ; 52 ; 0xf3ec1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3ec2
+ push ax ; 50 ; 0xf3ec5
+ xor ax, ax ; 31 c0 ; 0xf3ec6
+ push ax ; 50 ; 0xf3ec8
+ mov ax, 00800h ; b8 00 08 ; 0xf3ec9
+ push ax ; 50 ; 0xf3ecc
+ xor ax, ax ; 31 c0 ; 0xf3ecd
+ push ax ; 50 ; 0xf3ecf
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3ed0
+ xor ah, ah ; 30 e4 ; 0xf3ed3
+ mov cx, ss ; 8c d1 ; 0xf3ed5
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3ed7
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3eda
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3edd
+ test ax, ax ; 85 c0 ; 0xf3ee1
+ jne short 03e9ah ; 75 b5 ; 0xf3ee3
+ test ax, ax ; 85 c0 ; 0xf3ee5 eltorito.c:326
+ je short 03eefh ; 74 06 ; 0xf3ee7
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf3ee9 eltorito.c:327
+ jmp near 041cch ; e9 dd 02 ; 0xf3eec
+ cmp byte [bp-00826h], 000h ; 80 be da f7 00 ; 0xf3eef eltorito.c:330
+ je short 03efch ; 74 06 ; 0xf3ef4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3ef6 eltorito.c:331
+ jmp near 041cch ; e9 d0 02 ; 0xf3ef9
+ xor di, di ; 31 ff ; 0xf3efc eltorito.c:333
+ jmp short 03f06h ; eb 06 ; 0xf3efe
+ inc di ; 47 ; 0xf3f00 eltorito.c:335
+ cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3f01
+ jnc short 03f16h ; 73 10 ; 0xf3f04
+ mov al, byte [bp+di-00825h] ; 8a 83 db f7 ; 0xf3f06
+ cmp al, byte [di+00ef2h] ; 3a 85 f2 0e ; 0xf3f0a
+ je short 03f00h ; 74 f0 ; 0xf3f0e
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf3f10
+ jmp near 041cch ; e9 b6 02 ; 0xf3f13
+ xor di, di ; 31 ff ; 0xf3f16 eltorito.c:337
+ jmp short 03f20h ; eb 06 ; 0xf3f18
+ inc di ; 47 ; 0xf3f1a eltorito.c:339
+ cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3f1b
+ jnc short 03f30h ; 73 10 ; 0xf3f1e
+ mov al, byte [bp+di-0081fh] ; 8a 83 e1 f7 ; 0xf3f20
+ cmp al, byte [di+00ef8h] ; 3a 85 f8 0e ; 0xf3f24
+ je short 03f1ah ; 74 f0 ; 0xf3f28
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf3f2a
+ jmp near 041cch ; e9 9c 02 ; 0xf3f2d
+ mov ax, word [bp-007dfh] ; 8b 86 21 f8 ; 0xf3f30 eltorito.c:342
+ mov dx, word [bp-007ddh] ; 8b 96 23 f8 ; 0xf3f34
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3f38 eltorito.c:346
+ xchg ah, al ; 86 c4 ; 0xf3f3d eltorito.c:347
+ xchg dh, dl ; 86 d6 ; 0xf3f3f
+ xchg dx, ax ; 92 ; 0xf3f41
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3f42
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3f45
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3f48 eltorito.c:348
+ xchg ah, al ; 86 c4 ; 0xf3f4b
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3f4d
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3f50 eltorito.c:355
+ xor ah, ah ; 30 e4 ; 0xf3f53
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3f55
+ imul dx ; f7 ea ; 0xf3f58
+ les bx, [bp-018h] ; c4 5e e8 ; 0xf3f5a
+ add bx, ax ; 01 c3 ; 0xf3f5d
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3f5f
+ xor ah, ah ; 30 e4 ; 0xf3f63
+ mov di, ax ; 89 c7 ; 0xf3f65
+ sal di, 1 ; d1 e7 ; 0xf3f67
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3f69
+ push SS ; 16 ; 0xf3f6d
+ push dx ; 52 ; 0xf3f6e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3f6f
+ push ax ; 50 ; 0xf3f72
+ xor ax, ax ; 31 c0 ; 0xf3f73
+ push ax ; 50 ; 0xf3f75
+ mov ax, 00800h ; b8 00 08 ; 0xf3f76
+ push ax ; 50 ; 0xf3f79
+ xor ax, ax ; 31 c0 ; 0xf3f7a
+ push ax ; 50 ; 0xf3f7c
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3f7d
+ xor ah, ah ; 30 e4 ; 0xf3f80
+ mov cx, ss ; 8c d1 ; 0xf3f82
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3f84
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3f87
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3f8a
+ test ax, ax ; 85 c0 ; 0xf3f8e eltorito.c:356
+ je short 03f98h ; 74 06 ; 0xf3f90
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf3f92 eltorito.c:357
+ jmp near 041cch ; e9 34 02 ; 0xf3f95
+ cmp byte [bp-00826h], 001h ; 80 be da f7 01 ; 0xf3f98 eltorito.c:362
+ je short 03fa5h ; 74 06 ; 0xf3f9d
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf3f9f eltorito.c:363
+ jmp near 041cch ; e9 27 02 ; 0xf3fa2
+ cmp byte [bp-00825h], 000h ; 80 be db f7 00 ; 0xf3fa5 eltorito.c:364
+ je short 03fb2h ; 74 06 ; 0xf3faa
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf3fac eltorito.c:365
+ jmp near 041cch ; e9 1a 02 ; 0xf3faf
+ cmp byte [bp-00808h], 055h ; 80 be f8 f7 55 ; 0xf3fb2 eltorito.c:366
+ je short 03fbfh ; 74 06 ; 0xf3fb7
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf3fb9 eltorito.c:367
+ jmp near 041cch ; e9 0d 02 ; 0xf3fbc
+ cmp byte [bp-00807h], 0aah ; 80 be f9 f7 aa ; 0xf3fbf eltorito.c:368
+ jne short 03fb9h ; 75 f3 ; 0xf3fc4
+ cmp byte [bp-00806h], 088h ; 80 be fa f7 88 ; 0xf3fc6 eltorito.c:369
+ je short 03fd3h ; 74 06 ; 0xf3fcb
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf3fcd eltorito.c:373
+ jmp near 041cch ; e9 f9 01 ; 0xf3fd0
+ mov al, byte [bp-00805h] ; 8a 86 fb f7 ; 0xf3fd3 eltorito.c:375
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf3fd7
+ mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf3fda
+ cmp byte [bp-00805h], 000h ; 80 be fb f7 00 ; 0xf3fde eltorito.c:376
+ jne short 03fech ; 75 07 ; 0xf3fe3
+ mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf3fe5 eltorito.c:379
+ jmp short 03fffh ; eb 13 ; 0xf3fea eltorito.c:381
+ cmp byte [bp-00805h], 004h ; 80 be fb f7 04 ; 0xf3fec
+ jnc short 03ffah ; 73 07 ; 0xf3ff1
+ mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf3ff3 eltorito.c:382
+ jmp short 03fffh ; eb 05 ; 0xf3ff8 eltorito.c:383
+ mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf3ffa eltorito.c:384
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf3fff eltorito.c:386
+ xor bh, bh ; 30 ff ; 0xf4002
+ mov ax, bx ; 89 d8 ; 0xf4004
+ cwd ; 99 ; 0xf4006
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf4007
+ sar ax, 1 ; d1 f8 ; 0xf4009
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf400b
+ mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf400e
+ mov ax, bx ; 89 d8 ; 0xf4012 eltorito.c:387
+ cwd ; 99 ; 0xf4014
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf4015
+ idiv bx ; f7 fb ; 0xf4018
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf401a
+ mov ax, word [bp-00804h] ; 8b 86 fc f7 ; 0xf401e eltorito.c:389
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf4022
+ test ax, ax ; 85 c0 ; 0xf4025 eltorito.c:390
+ jne short 0402eh ; 75 05 ; 0xf4027
+ mov word [bp-010h], 007c0h ; c7 46 f0 c0 07 ; 0xf4029 eltorito.c:391
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf402e eltorito.c:393
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4031
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf4034
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf4038 eltorito.c:394
+ mov bx, word [bp-00800h] ; 8b 9e 00 f8 ; 0xf403e eltorito.c:396
+ mov word [es:si+00eh], bx ; 26 89 5c 0e ; 0xf4042 eltorito.c:397
+ test bx, bx ; 85 db ; 0xf4046 eltorito.c:402
+ je short 04050h ; 74 06 ; 0xf4048
+ cmp bx, 00400h ; 81 fb 00 04 ; 0xf404a
+ jbe short 04056h ; 76 06 ; 0xf404e
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf4050 eltorito.c:403
+ jmp near 041cch ; e9 76 01 ; 0xf4053
+ mov ax, word [bp-007feh] ; 8b 86 02 f8 ; 0xf4056 eltorito.c:405
+ mov dx, word [bp-007fch] ; 8b 96 04 f8 ; 0xf405a
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf405e eltorito.c:406
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf4062
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf4066 eltorito.c:412
+ xchg ah, al ; 86 c4 ; 0xf406b eltorito.c:413
+ xchg dh, dl ; 86 d6 ; 0xf406d
+ xchg dx, ax ; 92 ; 0xf406f
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf4070
+ mov word [bp-022h], dx ; 89 56 de ; 0xf4073
+ lea dx, [bx-001h] ; 8d 57 ff ; 0xf4076 eltorito.c:414
+ shr dx, 1 ; d1 ea ; 0xf4079
+ shr dx, 1 ; d1 ea ; 0xf407b
+ inc dx ; 42 ; 0xf407d
+ mov ax, dx ; 89 d0 ; 0xf407e
+ xchg ah, al ; 86 c4 ; 0xf4080
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf4082
+ les di, [bp-018h] ; c4 7e e8 ; 0xf4085 eltorito.c:416
+ mov word [es:di+00eh], dx ; 26 89 55 0e ; 0xf4088
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf408c eltorito.c:417
+ mov CL, strict byte 009h ; b1 09 ; 0xf4092 eltorito.c:419
+ mov ax, bx ; 89 d8 ; 0xf4094
+ sal ax, CL ; d3 e0 ; 0xf4096
+ mov dx, 00800h ; ba 00 08 ; 0xf4098
+ sub dx, ax ; 29 c2 ; 0xf409b
+ mov ax, dx ; 89 d0 ; 0xf409d
+ and ah, 007h ; 80 e4 07 ; 0xf409f
+ mov word [es:di+020h], ax ; 26 89 45 20 ; 0xf40a2
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf40a6 eltorito.c:421
+ xor ah, ah ; 30 e4 ; 0xf40a9
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf40ab
+ imul dx ; f7 ea ; 0xf40ae
+ add di, ax ; 01 c7 ; 0xf40b0
+ mov al, byte [es:di+022h] ; 26 8a 45 22 ; 0xf40b2
+ xor ah, ah ; 30 e4 ; 0xf40b6
+ sal ax, 1 ; d1 e0 ; 0xf40b8
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf40ba
+ push word [bp-010h] ; ff 76 f0 ; 0xf40bd
+ xor ax, ax ; 31 c0 ; 0xf40c0
+ push ax ; 50 ; 0xf40c2
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf40c3
+ push ax ; 50 ; 0xf40c6
+ mov ax, bx ; 89 d8 ; 0xf40c7
+ xor di, di ; 31 ff ; 0xf40c9
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf40cb
+ sal ax, 1 ; d1 e0 ; 0xf40ce
+ rcl di, 1 ; d1 d7 ; 0xf40d0
+ loop 040ceh ; e2 fa ; 0xf40d2
+ push di ; 57 ; 0xf40d4
+ push ax ; 50 ; 0xf40d5
+ xor ax, ax ; 31 c0 ; 0xf40d6
+ push ax ; 50 ; 0xf40d8
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf40d9
+ xor ah, ah ; 30 e4 ; 0xf40dc
+ mov cx, ss ; 8c d1 ; 0xf40de
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf40e0
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf40e3
+ mov di, word [bp-01ah] ; 8b 7e e6 ; 0xf40e6
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf40e9
+ les bx, [bp-018h] ; c4 5e e8 ; 0xf40ed eltorito.c:423
+ mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf40f0
+ test ax, ax ; 85 c0 ; 0xf40f6 eltorito.c:425
+ je short 04100h ; 74 06 ; 0xf40f8
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf40fa eltorito.c:426
+ jmp near 041cch ; e9 cc 00 ; 0xf40fd
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4100 eltorito.c:431
+ mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf4103
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf4107
+ jc short 04117h ; 72 0c ; 0xf4109
+ jbe short 04132h ; 76 25 ; 0xf410b
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf410d
+ je short 04142h ; 74 31 ; 0xf410f
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf4111
+ je short 0413ah ; 74 25 ; 0xf4113
+ jmp short 04187h ; eb 70 ; 0xf4115
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf4117
+ jne short 04187h ; 75 6c ; 0xf4119
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf411b eltorito.c:433
+ mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00 ; 0xf411e
+ mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00 ; 0xf4124 eltorito.c:434
+ mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf412a eltorito.c:435
+ jmp short 04187h ; eb 55 ; 0xf4130 eltorito.c:436
+ mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00 ; 0xf4132 eltorito.c:438
+ jmp short 04124h ; eb ea ; 0xf4138
+ mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00 ; 0xf413a eltorito.c:443
+ jmp short 04124h ; eb e2 ; 0xf4140
+ mov bx, 001c4h ; bb c4 01 ; 0xf4142 eltorito.c:38
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4145
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4148
+ and AL, strict byte 03fh ; 24 3f ; 0xf414b eltorito.c:39
+ xor ah, ah ; 30 e4 ; 0xf414d
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf414f
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf4152
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4156 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4159
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf415c eltorito.c:39
+ mov dx, ax ; 89 c2 ; 0xf415e
+ sal dx, 1 ; d1 e2 ; 0xf4160
+ sal dx, 1 ; d1 e2 ; 0xf4162
+ mov bx, 001c5h ; bb c5 01 ; 0xf4164 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4167
+ add ax, dx ; 01 d0 ; 0xf416a eltorito.c:39
+ inc ax ; 40 ; 0xf416c
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf416d
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf4170
+ mov bx, 001c3h ; bb c3 01 ; 0xf4174 eltorito.c:38
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4177
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf417a
+ xor ah, ah ; 30 e4 ; 0xf417d eltorito.c:39
+ inc ax ; 40 ; 0xf417f
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4180
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf4183
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4187 eltorito.c:456
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf418a
+ je short 041b5h ; 74 24 ; 0xf418f
+ cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf4191 eltorito.c:458
+ jne short 041a7h ; 75 0f ; 0xf4196
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf4198 eltorito.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf419b
+ mov es, ax ; 8e c0 ; 0xf419e
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf41a0
+ or AL, strict byte 041h ; 0c 41 ; 0xf41a3 eltorito.c:39
+ jmp short 041b2h ; eb 0b ; 0xf41a5 eltorito.c:460
+ mov bx, 002b0h ; bb b0 02 ; 0xf41a7 eltorito.c:38
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf41aa
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf41ad
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf41b0 eltorito.c:39
+ mov byte [es:bx], al ; 26 88 07 ; 0xf41b2 eltorito.c:43
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf41b5 eltorito.c:465
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf41b8
+ je short 041c3h ; 74 04 ; 0xf41bd
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf41bf eltorito.c:466
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf41c3 eltorito.c:469
+ mov ah, byte [es:si+002h] ; 26 8a 64 02 ; 0xf41c6
+ xor al, al ; 30 c0 ; 0xf41ca
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf41cc eltorito.c:470
+ pop di ; 5f ; 0xf41cf
+ pop si ; 5e ; 0xf41d0
+ pop dx ; 5a ; 0xf41d1
+ pop cx ; 59 ; 0xf41d2
+ pop bx ; 5b ; 0xf41d3
+ pop bp ; 5d ; 0xf41d4
+ retn ; c3 ; 0xf41d5
+ ; disGetNextSymbol 0xf41d6 LB 0x71e2 -> off=0x59 cb=00000000000005ff uValue=00000000000f2c2f '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, 00fh, 048h, 0dbh
+ db 042h, 010h, 043h, 02eh, 043h, 005h, 043h, 02eh, 043h, 005h, 043h, 047h, 045h, 02ch, 045h, 00fh
+ db 048h, 00fh, 048h, 02ch, 045h, 02ch, 045h, 02ch, 045h, 02ch, 045h, 02ch, 045h, 0f5h, 045h, 02ch
+ db 045h, 00fh, 048h, 0feh, 045h, 011h, 046h, 00fh, 048h, 011h, 046h, 00fh, 048h, 00fh, 048h, 011h
+ db 046h, 0d7h, 047h, 00fh, 048h, 00fh, 048h, 00fh, 048h
+int13_cdemu: ; 0xf422f LB 0x5ff
+ push bp ; 55 ; 0xf422f eltorito.c:480
+ mov bp, sp ; 89 e5 ; 0xf4230
+ push si ; 56 ; 0xf4232
+ push di ; 57 ; 0xf4233
+ sub sp, strict byte 0003ah ; 83 ec 3a ; 0xf4234
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4237 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf423a
+ mov es, ax ; 8e c0 ; 0xf423d
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf423f
+ mov dx, 0031eh ; ba 1e 03 ; 0xf4242 eltorito.c:496
+ mov cx, ax ; 89 c1 ; 0xf4245
+ mov bx, dx ; 89 d3 ; 0xf4247
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4249
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf424c eltorito.c:497
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf424f
+ mov es, ax ; 8e c0 ; 0xf4252 eltorito.c:504
+ mov di, dx ; 89 d7 ; 0xf4254
+ mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf4256
+ sal al, 1 ; d0 e0 ; 0xf425a
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf425c
+ mov al, byte [es:di+004h] ; 26 8a 45 04 ; 0xf425f eltorito.c:505
+ add byte [bp-006h], al ; 00 46 fa ; 0xf4263
+ mov di, strict word 00074h ; bf 74 00 ; 0xf4266 eltorito.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4269
+ mov es, ax ; 8e c0 ; 0xf426c
+ mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf426e
+ mov es, cx ; 8e c1 ; 0xf4272 eltorito.c:510
+ mov di, dx ; 89 d7 ; 0xf4274
+ cmp byte [es:di], 000h ; 26 80 3d 00 ; 0xf4276
+ je short 0428bh ; 74 0f ; 0xf427a
+ mov al, byte [es:di+002h] ; 26 8a 45 02 ; 0xf427c
+ xor ah, ah ; 30 e4 ; 0xf4280
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf4282
+ xor dh, dh ; 30 f6 ; 0xf4285
+ cmp ax, dx ; 39 d0 ; 0xf4287
+ je short 042b5h ; 74 2a ; 0xf4289
+ mov bx, 00eeah ; bb ea 0e ; 0xf428b eltorito.c:511
+ mov cx, ds ; 8c d9 ; 0xf428e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4290
+ call 018d9h ; e8 43 d6 ; 0xf4293
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf4296
+ xor ah, ah ; 30 e4 ; 0xf4299
+ push ax ; 50 ; 0xf429b
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf429c
+ push ax ; 50 ; 0xf429f
+ mov ax, 0035ch ; b8 5c 03 ; 0xf42a0
+ push ax ; 50 ; 0xf42a3
+ mov ax, 00368h ; b8 68 03 ; 0xf42a4
+ push ax ; 50 ; 0xf42a7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf42a8
+ push ax ; 50 ; 0xf42ab
+ call 0191ch ; e8 6d d6 ; 0xf42ac
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf42af
+ jmp near 047edh ; e9 38 05 ; 0xf42b2 eltorito.c:512
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf42b5 eltorito.c:515
+ xor ah, ah ; 30 e4 ; 0xf42b8
+ mov dx, ax ; 89 c2 ; 0xf42ba
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf42bc
+ jnbe short 0432bh ; 77 6a ; 0xf42bf
+ push CS ; 0e ; 0xf42c1
+ pop ES ; 07 ; 0xf42c2
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf42c3
+ mov di, 041d6h ; bf d6 41 ; 0xf42c6
+ repne scasb ; f2 ae ; 0xf42c9
+ sal cx, 1 ; d1 e1 ; 0xf42cb
+ mov di, cx ; 89 cf ; 0xf42cd
+ mov dx, word [cs:di+041f3h] ; 2e 8b 95 f3 41 ; 0xf42cf
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42d4
+ xor ah, ah ; 30 e4 ; 0xf42d7
+ jmp dx ; ff e2 ; 0xf42d9
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf42db eltorito.c:518
+ xor ah, ah ; 30 e4 ; 0xf42de
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf42e0
+ imul dx ; f7 ea ; 0xf42e3
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf42e5
+ add si, ax ; 01 c6 ; 0xf42e8
+ mov bl, byte [es:si+022h] ; 26 8a 5c 22 ; 0xf42ea
+ xor bh, bh ; 30 ff ; 0xf42ee
+ sal bx, 1 ; d1 e3 ; 0xf42f0
+ cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf42f2
+ je short 04302h ; 74 09 ; 0xf42f7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf42f9 eltorito.c:520
+ xor ah, ah ; 30 e4 ; 0xf42fc
+ call word [word bx+00078h] ; ff 97 78 00 ; 0xf42fe
+ jmp near 0452ch ; e9 27 02 ; 0xf4302 eltorito.c:522
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4305 eltorito.c:538
+ xor ah, ah ; 30 e4 ; 0xf4308
+ or ah, 003h ; 80 cc 03 ; 0xf430a
+ jmp near 047f5h ; e9 e5 04 ; 0xf430d eltorito.c:539
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4310 eltorito.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4313
+ mov es, dx ; 8e c2 ; 0xf4316
+ mov cl, byte [es:bx] ; 26 8a 0f ; 0xf4318
+ mov ah, cl ; 88 cc ; 0xf431b eltorito.c:544
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf431d
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4320 eltorito.c:43
+ test cl, cl ; 84 c9 ; 0xf4324 eltorito.c:548
+ je short 0438fh ; 74 67 ; 0xf4326
+ jmp near 04808h ; e9 dd 04 ; 0xf4328 eltorito.c:549
+ jmp near 0480fh ; e9 e1 04 ; 0xf432b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf432e eltorito.c:556
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4331
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf4335
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf4338 eltorito.c:557
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf433c eltorito.c:558
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4340
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf4343 eltorito.c:559
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf4347
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf434a
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf434e
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf4351 eltorito.c:561
+ and ax, strict word 0003fh ; 25 3f 00 ; 0xf4354
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf4357
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf435a eltorito.c:562
+ and bx, 000c0h ; 81 e3 c0 00 ; 0xf435d
+ sal bx, 1 ; d1 e3 ; 0xf4361
+ sal bx, 1 ; d1 e3 ; 0xf4363
+ mov al, byte [bp+015h] ; 8a 46 15 ; 0xf4365
+ or ax, bx ; 09 d8 ; 0xf4368
+ mov bl, byte [bp+013h] ; 8a 5e 13 ; 0xf436a eltorito.c:563
+ xor bh, bh ; 30 ff ; 0xf436d
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf436f
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf4372 eltorito.c:564
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf4375
+ je short 0439ch ; 74 21 ; 0xf4379 eltorito.c:572
+ mov cx, word [bp-01ch] ; 8b 4e e4 ; 0xf437b eltorito.c:576
+ cmp cx, word [bp-028h] ; 3b 4e d8 ; 0xf437e
+ jnbe short 0438ch ; 77 09 ; 0xf4381
+ cmp ax, dx ; 39 d0 ; 0xf4383
+ jnc short 0438ch ; 73 05 ; 0xf4385
+ cmp bx, word [bp-00ch] ; 3b 5e f4 ; 0xf4387
+ jc short 04392h ; 72 06 ; 0xf438a
+ jmp near 047edh ; e9 5e 04 ; 0xf438c eltorito.c:579
+ jmp near 04530h ; e9 9e 01 ; 0xf438f
+ mov dl, byte [bp+017h] ; 8a 56 17 ; 0xf4392 eltorito.c:583
+ xor dh, dh ; 30 f6 ; 0xf4395
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4397
+ jne short 0439fh ; 75 03 ; 0xf439a
+ jmp near 0452ch ; e9 8d 01 ; 0xf439c eltorito.c:584
+ mov CL, strict byte 004h ; b1 04 ; 0xf439f eltorito.c:586
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf43a1
+ shr dx, CL ; d3 ea ; 0xf43a4
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf43a6
+ add bx, dx ; 01 d3 ; 0xf43a9
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf43ab
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf43ae eltorito.c:587
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf43b1
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf43b4
+ xor dl, dl ; 30 d2 ; 0xf43b7 eltorito.c:590
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf43b9
+ xor cx, cx ; 31 c9 ; 0xf43bc
+ call 0b020h ; e8 5f 6c ; 0xf43be
+ xor bx, bx ; 31 db ; 0xf43c1
+ add ax, word [bp-014h] ; 03 46 ec ; 0xf43c3
+ adc dx, bx ; 11 da ; 0xf43c6
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf43c8
+ xor cx, cx ; 31 c9 ; 0xf43cb
+ call 0b020h ; e8 50 6c ; 0xf43cd
+ mov bx, dx ; 89 d3 ; 0xf43d0
+ mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf43d2
+ dec dx ; 4a ; 0xf43d5
+ mov word [bp-026h], strict word 00000h ; c7 46 da 00 00 ; 0xf43d6
+ add dx, ax ; 01 c2 ; 0xf43db
+ adc bx, word [bp-026h] ; 13 5e da ; 0xf43dd
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43e0 eltorito.c:593
+ xor al, al ; 30 c0 ; 0xf43e3
+ or ax, di ; 09 f8 ; 0xf43e5
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf43e7
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf43ea eltorito.c:596
+ mov word [bp-02ch], bx ; 89 5e d4 ; 0xf43ed
+ shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf43f0
+ rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf43f3
+ shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf43f6
+ rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf43f9
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf43fc
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf43ff
+ mov ax, dx ; 89 d0 ; 0xf4402 eltorito.c:597
+ xor ah, dh ; 30 f4 ; 0xf4404
+ and AL, strict byte 003h ; 24 03 ; 0xf4406
+ mov word [bp-022h], ax ; 89 46 de ; 0xf4408
+ xor cx, cx ; 31 c9 ; 0xf440b eltorito.c:600
+ mov ax, dx ; 89 d0 ; 0xf440d
+ add ax, di ; 01 f8 ; 0xf440f
+ mov dx, bx ; 89 da ; 0xf4411
+ adc dx, cx ; 11 ca ; 0xf4413
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf4415
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf4418
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf441b
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf441e
+ shr word [bp-030h], 1 ; d1 6e d0 ; 0xf4421
+ rcr word [bp-032h], 1 ; d1 5e ce ; 0xf4424
+ shr word [bp-030h], 1 ; d1 6e d0 ; 0xf4427
+ rcr word [bp-032h], 1 ; d1 5e ce ; 0xf442a
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf442d eltorito.c:602
+ xor bx, bx ; 31 db ; 0xf4430
+ mov dx, ss ; 8c d2 ; 0xf4432
+ lea ax, [bp-03eh] ; 8d 46 c2 ; 0xf4434
+ call 0b090h ; e8 56 6c ; 0xf4437
+ mov word [bp-03eh], strict word 00028h ; c7 46 c2 28 00 ; 0xf443a eltorito.c:603
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf443f eltorito.c:604
+ add ax, word [bp-02eh] ; 03 46 d2 ; 0xf4442
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf4445
+ adc dx, word [bp-02ah] ; 13 56 d6 ; 0xf4448
+ xchg ah, al ; 86 c4 ; 0xf444b
+ xchg dh, dl ; 86 d6 ; 0xf444d
+ xchg dx, ax ; 92 ; 0xf444f
+ mov word [bp-03ch], ax ; 89 46 c4 ; 0xf4450
+ mov word [bp-03ah], dx ; 89 56 c6 ; 0xf4453
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf4456 eltorito.c:605
+ sub ax, word [bp-02eh] ; 2b 46 d2 ; 0xf4459
+ inc ax ; 40 ; 0xf445c
+ xchg ah, al ; 86 c4 ; 0xf445d
+ mov word [bp-037h], ax ; 89 46 c9 ; 0xf445f
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4462 eltorito.c:607
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf4465
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf4469 eltorito.c:608
+ mov CL, strict byte 009h ; b1 09 ; 0xf446f eltorito.c:610
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf4471
+ sal ax, CL ; d3 e0 ; 0xf4474
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf4476
+ mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf4479
+ mov ax, di ; 89 f8 ; 0xf447d eltorito.c:611
+ xor ah, ah ; 30 e4 ; 0xf447f
+ and AL, strict byte 003h ; 24 03 ; 0xf4481
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf4483
+ sub dx, ax ; 29 c2 ; 0xf4486
+ mov ax, dx ; 89 d0 ; 0xf4488
+ sub ax, word [bp-022h] ; 2b 46 de ; 0xf448a
+ sal ax, CL ; d3 e0 ; 0xf448d
+ and ah, 007h ; 80 e4 07 ; 0xf448f
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf4492
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4496 eltorito.c:613
+ xor ah, ah ; 30 e4 ; 0xf4499
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf449b
+ imul dx ; f7 ea ; 0xf449e
+ mov bx, si ; 89 f3 ; 0xf44a0
+ add bx, ax ; 01 c3 ; 0xf44a2
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf44a4
+ xor ah, ah ; 30 e4 ; 0xf44a8
+ sal ax, 1 ; d1 e0 ; 0xf44aa
+ mov word [bp-026h], ax ; 89 46 da ; 0xf44ac
+ push word [bp-012h] ; ff 76 ee ; 0xf44af
+ push word [bp-010h] ; ff 76 f0 ; 0xf44b2
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf44b5
+ push ax ; 50 ; 0xf44b8
+ mov bx, di ; 89 fb ; 0xf44b9
+ xor di, di ; 31 ff ; 0xf44bb
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf44bd
+ sal bx, 1 ; d1 e3 ; 0xf44c0
+ rcl di, 1 ; d1 d7 ; 0xf44c2
+ loop 044c0h ; e2 fa ; 0xf44c4
+ push di ; 57 ; 0xf44c6
+ push bx ; 53 ; 0xf44c7
+ push word [bp-024h] ; ff 76 dc ; 0xf44c8
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf44cb
+ xor ah, ah ; 30 e4 ; 0xf44ce
+ mov cx, ss ; 8c d1 ; 0xf44d0
+ lea bx, [bp-03eh] ; 8d 5e c2 ; 0xf44d2
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf44d5
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf44d8
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf44db
+ mov dx, ax ; 89 c2 ; 0xf44df
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf44e1 eltorito.c:615
+ mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf44e4
+ mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf44ea eltorito.c:616
+ test al, al ; 84 c0 ; 0xf44f0 eltorito.c:618
+ je short 0452ch ; 74 38 ; 0xf44f2
+ mov bx, 00eeah ; bb ea 0e ; 0xf44f4 eltorito.c:619
+ mov cx, ds ; 8c d9 ; 0xf44f7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf44f9
+ call 018d9h ; e8 da d3 ; 0xf44fc
+ mov al, dl ; 88 d0 ; 0xf44ff
+ xor ah, ah ; 30 e4 ; 0xf4501
+ push ax ; 50 ; 0xf4503
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf4504
+ push ax ; 50 ; 0xf4507
+ mov ax, 0035ch ; b8 5c 03 ; 0xf4508
+ push ax ; 50 ; 0xf450b
+ mov ax, 0039eh ; b8 9e 03 ; 0xf450c
+ push ax ; 50 ; 0xf450f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4510
+ push ax ; 50 ; 0xf4513
+ call 0191ch ; e8 05 d4 ; 0xf4514
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4517
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf451a eltorito.c:620
+ xor ah, ah ; 30 e4 ; 0xf451d
+ or ah, 002h ; 80 cc 02 ; 0xf451f
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4522
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4525 eltorito.c:621
+ jmp near 047f8h ; e9 cc 02 ; 0xf4529 eltorito.c:622
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf452c
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4530
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4533
+ mov es, ax ; 8e c0 ; 0xf4536
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4538
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf453c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4540
+ pop di ; 5f ; 0xf4543
+ pop si ; 5e ; 0xf4544
+ pop bp ; 5d ; 0xf4545
+ retn ; c3 ; 0xf4546
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4547 eltorito.c:629
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf454a
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf454e
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf4551 eltorito.c:630
+ dec dx ; 4a ; 0xf4555
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf4556 eltorito.c:631
+ dec ax ; 48 ; 0xf455a
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf455b
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf455e eltorito.c:633
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4562 eltorito.c:634
+ xor al, al ; 30 c0 ; 0xf4565
+ mov si, word [bp+014h] ; 8b 76 14 ; 0xf4567 eltorito.c:635
+ and si, 000ffh ; 81 e6 ff 00 ; 0xf456a
+ mov cx, dx ; 89 d1 ; 0xf456e
+ xor ch, dh ; 30 f5 ; 0xf4570
+ mov word [bp-026h], cx ; 89 4e da ; 0xf4572
+ mov cl, byte [bp-026h] ; 8a 4e da ; 0xf4575
+ mov byte [bp-025h], cl ; 88 4e db ; 0xf4578
+ mov byte [bp-026h], al ; 88 46 da ; 0xf457b
+ mov cx, word [bp-026h] ; 8b 4e da ; 0xf457e
+ or cx, si ; 09 f1 ; 0xf4581
+ mov word [bp+014h], cx ; 89 4e 14 ; 0xf4583
+ mov cx, dx ; 89 d1 ; 0xf4586 eltorito.c:636
+ shr cx, 1 ; d1 e9 ; 0xf4588
+ shr cx, 1 ; d1 e9 ; 0xf458a
+ and cl, 0c0h ; 80 e1 c0 ; 0xf458c
+ mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf458f
+ and dl, 03fh ; 80 e2 3f ; 0xf4592
+ or dl, cl ; 08 ca ; 0xf4595
+ mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf4597
+ mov cl, dl ; 88 d1 ; 0xf459a
+ mov word [bp+014h], cx ; 89 4e 14 ; 0xf459c
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf459f eltorito.c:637
+ mov ch, byte [bp-00ch] ; 8a 6e f4 ; 0xf45a2
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf45a5
+ mov dx, cx ; 89 ca ; 0xf45a8 eltorito.c:638
+ xor dl, cl ; 30 ca ; 0xf45aa
+ or dl, 002h ; 80 ca 02 ; 0xf45ac
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf45af
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf45b2 eltorito.c:641
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf45b6
+ cmp dl, 003h ; 80 fa 03 ; 0xf45b9
+ je short 045d8h ; 74 1a ; 0xf45bc
+ cmp dl, 002h ; 80 fa 02 ; 0xf45be
+ je short 045d4h ; 74 11 ; 0xf45c1
+ cmp dl, 001h ; 80 fa 01 ; 0xf45c3
+ jne short 045dch ; 75 14 ; 0xf45c6
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf45c8 eltorito.c:642
+ xor al, al ; 30 c0 ; 0xf45cb
+ or AL, strict byte 002h ; 0c 02 ; 0xf45cd
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf45cf
+ jmp short 045dch ; eb 08 ; 0xf45d2
+ or AL, strict byte 004h ; 0c 04 ; 0xf45d4 eltorito.c:643
+ jmp short 045cfh ; eb f7 ; 0xf45d6
+ or AL, strict byte 005h ; 0c 05 ; 0xf45d8 eltorito.c:644
+ jmp short 045cfh ; eb f3 ; 0xf45da
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf45dc eltorito.c:648
+ cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf45df
+ jc short 045e9h ; 72 03 ; 0xf45e4
+ jmp near 0452ch ; e9 43 ff ; 0xf45e6
+ mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf45e9 eltorito.c:649
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf45ee eltorito.c:650
+ jmp short 045e6h ; eb f1 ; 0xf45f3 eltorito.c:652
+ or ah, 003h ; 80 cc 03 ; 0xf45f5 eltorito.c:657
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf45f8
+ jmp near 04530h ; e9 32 ff ; 0xf45fb eltorito.c:658
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf45fe eltorito.c:662
+ or ah, 030h ; 80 cc 30 ; 0xf4603 eltorito.c:663
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4606
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf4609 eltorito.c:664
+ jmp near 04530h ; e9 1f ff ; 0xf460e eltorito.c:665
+ mov di, word [bp+00ah] ; 8b 7e 0a ; 0xf4611 eltorito.c:673
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf4614
+ mov word [bp-020h], di ; 89 7e e0 ; 0xf4617
+ mov [bp-016h], es ; 8c 46 ea ; 0xf461a
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf461d eltorito.c:675
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf4621
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf4624 eltorito.c:676
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf4628
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf462b eltorito.c:677
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf462f
+ mov ax, word [es:di+00ch] ; 26 8b 45 0c ; 0xf4632 eltorito.c:680
+ mov dx, word [es:di+00eh] ; 26 8b 55 0e ; 0xf4636
+ or ax, dx ; 09 d0 ; 0xf463a eltorito.c:681
+ je short 04659h ; 74 1b ; 0xf463c
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf463e eltorito.c:682
+ xor ah, ah ; 30 e4 ; 0xf4641
+ push ax ; 50 ; 0xf4643
+ mov ax, 0035ch ; b8 5c 03 ; 0xf4644
+ push ax ; 50 ; 0xf4647
+ mov ax, 003bfh ; b8 bf 03 ; 0xf4648
+ push ax ; 50 ; 0xf464b
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf464c
+ push ax ; 50 ; 0xf464f
+ call 0191ch ; e8 c9 d2 ; 0xf4650
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4653
+ jmp near 047edh ; e9 94 01 ; 0xf4656 eltorito.c:683
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf4659 eltorito.c:687
+ mov di, word [bp-020h] ; 8b 7e e0 ; 0xf465c
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf465f
+ mov dx, word [es:di+00ah] ; 26 8b 55 0a ; 0xf4663
+ mov cl, byte [bp+017h] ; 8a 4e 17 ; 0xf4667 eltorito.c:690
+ mov byte [bp-00eh], cl ; 88 4e f2 ; 0xf466a
+ mov byte [bp-00dh], 000h ; c6 46 f3 00 ; 0xf466d
+ cmp word [bp-00eh], strict byte 00044h ; 83 7e f2 44 ; 0xf4671
+ jne short 0467ah ; 75 03 ; 0xf4675
+ jmp near 0452ch ; e9 b2 fe ; 0xf4677
+ cmp word [bp-00eh], strict byte 00047h ; 83 7e f2 47 ; 0xf467a
+ jne short 04682h ; 75 02 ; 0xf467e
+ jmp short 04677h ; eb f5 ; 0xf4680 eltorito.c:691
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4682 eltorito.c:698
+ mov cx, word [es:bx+008h] ; 26 8b 4f 08 ; 0xf4685
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf4689
+ mov bx, word [es:bx+00ah] ; 26 8b 5f 0a ; 0xf468c
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf4690
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf4693 eltorito.c:701
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf4696
+ shr word [bp-030h], 1 ; d1 6e d0 ; 0xf4699
+ rcr word [bp-032h], 1 ; d1 5e ce ; 0xf469c
+ shr word [bp-030h], 1 ; d1 6e d0 ; 0xf469f
+ rcr word [bp-032h], 1 ; d1 5e ce ; 0xf46a2
+ mov bx, word [bp-030h] ; 8b 5e d0 ; 0xf46a5
+ mov word [bp-02ah], bx ; 89 5e d6 ; 0xf46a8
+ mov di, ax ; 89 c7 ; 0xf46ab eltorito.c:702
+ and di, strict byte 00003h ; 83 e7 03 ; 0xf46ad
+ xor bx, bx ; 31 db ; 0xf46b0 eltorito.c:705
+ add ax, word [bp-01eh] ; 03 46 e2 ; 0xf46b2
+ adc dx, bx ; 11 da ; 0xf46b5
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf46b7
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf46ba
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf46bd
+ mov word [bp-02ch], dx ; 89 56 d4 ; 0xf46c0
+ shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf46c3
+ rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf46c6
+ shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf46c9
+ rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf46cc
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf46cf eltorito.c:707
+ mov dx, ss ; 8c d2 ; 0xf46d2
+ lea ax, [bp-03eh] ; 8d 46 c2 ; 0xf46d4
+ call 0b090h ; e8 b6 69 ; 0xf46d7
+ mov word [bp-03eh], strict word 00028h ; c7 46 c2 28 00 ; 0xf46da eltorito.c:708
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf46df eltorito.c:709
+ add ax, word [bp-032h] ; 03 46 ce ; 0xf46e2
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf46e5
+ adc dx, word [bp-02ah] ; 13 56 d6 ; 0xf46e8
+ xchg ah, al ; 86 c4 ; 0xf46eb
+ xchg dh, dl ; 86 d6 ; 0xf46ed
+ xchg dx, ax ; 92 ; 0xf46ef
+ mov word [bp-03ch], ax ; 89 46 c4 ; 0xf46f0
+ mov word [bp-03ah], dx ; 89 56 c6 ; 0xf46f3
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf46f6 eltorito.c:710
+ sub ax, word [bp-032h] ; 2b 46 ce ; 0xf46f9
+ inc ax ; 40 ; 0xf46fc
+ xchg ah, al ; 86 c4 ; 0xf46fd
+ mov word [bp-037h], ax ; 89 46 c9 ; 0xf46ff
+ mov CL, strict byte 009h ; b1 09 ; 0xf4702 eltorito.c:712
+ mov ax, di ; 89 f8 ; 0xf4704
+ sal ax, CL ; d3 e0 ; 0xf4706
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf4708
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf470b
+ mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf470e
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf4712 eltorito.c:713
+ xor ah, ah ; 30 e4 ; 0xf4715
+ and AL, strict byte 003h ; 24 03 ; 0xf4717
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf4719
+ sub dx, ax ; 29 c2 ; 0xf471c
+ mov ax, dx ; 89 d0 ; 0xf471e
+ sub ax, di ; 29 f8 ; 0xf4720
+ sal ax, CL ; d3 e0 ; 0xf4722
+ and ah, 007h ; 80 e4 07 ; 0xf4724
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf4727
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf472b eltorito.c:715
+ xor ah, ah ; 30 e4 ; 0xf472e
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4730
+ imul dx ; f7 ea ; 0xf4733
+ mov bx, si ; 89 f3 ; 0xf4735
+ add bx, ax ; 01 c3 ; 0xf4737
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4739
+ xor ah, ah ; 30 e4 ; 0xf473d
+ sal ax, 1 ; d1 e0 ; 0xf473f
+ mov word [bp-026h], ax ; 89 46 da ; 0xf4741
+ push word [bp-012h] ; ff 76 ee ; 0xf4744
+ push word [bp-010h] ; ff 76 f0 ; 0xf4747
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf474a
+ push ax ; 50 ; 0xf474d
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf474e
+ xor di, di ; 31 ff ; 0xf4751
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4753
+ sal bx, 1 ; d1 e3 ; 0xf4756
+ rcl di, 1 ; d1 d7 ; 0xf4758
+ loop 04756h ; e2 fa ; 0xf475a
+ push di ; 57 ; 0xf475c
+ push bx ; 53 ; 0xf475d
+ push word [bp-024h] ; ff 76 dc ; 0xf475e
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4761
+ xor ah, ah ; 30 e4 ; 0xf4764
+ mov cx, ss ; 8c d1 ; 0xf4766
+ lea bx, [bp-03eh] ; 8d 5e c2 ; 0xf4768
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf476b
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf476e
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4771
+ mov dx, ax ; 89 c2 ; 0xf4775
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4777 eltorito.c:717
+ mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf477a
+ mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf4780 eltorito.c:718
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf4786 eltorito.c:720
+ mov di, word [es:si+01ch] ; 26 8b 7c 1c ; 0xf478a
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf478e
+ shr di, 1 ; d1 ef ; 0xf4791
+ rcr bx, 1 ; d1 db ; 0xf4793
+ loop 04791h ; e2 fa ; 0xf4795
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf4797 eltorito.c:721
+ mov si, word [bp-020h] ; 8b 76 e0 ; 0xf479a
+ mov word [es:si+002h], bx ; 26 89 5c 02 ; 0xf479d
+ test al, al ; 84 c0 ; 0xf47a1 eltorito.c:723
+ jne short 047a8h ; 75 03 ; 0xf47a3
+ jmp near 0452ch ; e9 84 fd ; 0xf47a5
+ mov bx, 00eeah ; bb ea 0e ; 0xf47a8 eltorito.c:724
+ mov cx, ds ; 8c d9 ; 0xf47ab
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf47ad
+ call 018d9h ; e8 26 d1 ; 0xf47b0
+ mov al, dl ; 88 d0 ; 0xf47b3
+ xor ah, ah ; 30 e4 ; 0xf47b5
+ push ax ; 50 ; 0xf47b7
+ push word [bp-00eh] ; ff 76 f2 ; 0xf47b8
+ mov ax, 0035ch ; b8 5c 03 ; 0xf47bb
+ push ax ; 50 ; 0xf47be
+ mov ax, 003e8h ; b8 e8 03 ; 0xf47bf
+ push ax ; 50 ; 0xf47c2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf47c3
+ push ax ; 50 ; 0xf47c6
+ call 0191ch ; e8 52 d1 ; 0xf47c7
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf47ca
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf47cd eltorito.c:725
+ xor ah, ah ; 30 e4 ; 0xf47d0
+ or ah, 00ch ; 80 cc 0c ; 0xf47d2
+ jmp short 047f5h ; eb 1e ; 0xf47d5
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf47d7 eltorito.c:733
+ push ax ; 50 ; 0xf47da
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf47db
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf47de
+ mov bx, si ; 89 f3 ; 0xf47e1
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf47e3
+ call 05ac8h ; e8 df 12 ; 0xf47e6
+ test ax, ax ; 85 c0 ; 0xf47e9
+ je short 047a5h ; 74 b8 ; 0xf47eb
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf47ed eltorito.c:734
+ xor ah, ah ; 30 e4 ; 0xf47f0
+ or ah, 001h ; 80 cc 01 ; 0xf47f2
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf47f5
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf47f8
+ xor ah, ah ; 30 e4 ; 0xf47fb
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf47fd
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4800
+ mov es, dx ; 8e c2 ; 0xf4803
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4805
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf4808
+ jmp near 04540h ; e9 31 fd ; 0xf480c
+ mov bx, 00eeah ; bb ea 0e ; 0xf480f eltorito.c:750
+ mov cx, ds ; 8c d9 ; 0xf4812
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4814
+ call 018d9h ; e8 bf d0 ; 0xf4817
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf481a
+ xor ah, ah ; 30 e4 ; 0xf481d
+ push ax ; 50 ; 0xf481f
+ mov ax, 0035ch ; b8 5c 03 ; 0xf4820
+ push ax ; 50 ; 0xf4823
+ mov ax, 0040ah ; b8 0a 04 ; 0xf4824
+ push ax ; 50 ; 0xf4827
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4828
+ jmp near 0464fh ; e9 21 fe ; 0xf482b
+ ; disGetNextSymbol 0xf482e LB 0x6b8a -> off=0x59 cb=000000000000038c uValue=00000000000f3287 '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, 065h, 049h, 0f8h
+ db 04bh, 02dh, 049h, 065h, 049h, 022h, 049h, 065h, 049h, 022h, 049h, 065h, 049h, 0f8h, 04bh, 065h
+ db 049h, 065h, 049h, 0f8h, 04bh, 0f8h, 04bh, 0f8h, 04bh, 0f8h, 04bh, 0f8h, 04bh, 049h, 049h, 0f8h
+ db 04bh, 065h, 049h, 052h, 049h, 083h, 049h, 022h, 049h, 083h, 049h, 0d3h, 04ah, 076h, 04bh, 083h
+ db 049h, 09fh, 04bh, 0b9h, 04bh, 0c1h, 04bh, 065h, 049h
+int13_cdrom: ; 0xf4887 LB 0x38c
+ push bp ; 55 ; 0xf4887 eltorito.c:775
+ mov bp, sp ; 89 e5 ; 0xf4888
+ push si ; 56 ; 0xf488a
+ push di ; 57 ; 0xf488b
+ sub sp, strict byte 00020h ; 83 ec 20 ; 0xf488c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf488f eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4892
+ mov es, ax ; 8e c0 ; 0xf4895
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4897
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf489a eltorito.c:785
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf489d
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf48a0 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf48a3
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48a7 eltorito.c:792
+ xor ah, ah ; 30 e4 ; 0xf48aa
+ cmp ax, 000e0h ; 3d e0 00 ; 0xf48ac
+ jc short 048b6h ; 72 05 ; 0xf48af
+ cmp ax, 000f4h ; 3d f4 00 ; 0xf48b1
+ jc short 048d5h ; 72 1f ; 0xf48b4
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48b6 eltorito.c:793
+ xor ah, ah ; 30 e4 ; 0xf48b9
+ push ax ; 50 ; 0xf48bb
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf48bc
+ push ax ; 50 ; 0xf48bf
+ mov ax, 0043ah ; b8 3a 04 ; 0xf48c0
+ push ax ; 50 ; 0xf48c3
+ mov ax, 00446h ; b8 46 04 ; 0xf48c4
+ push ax ; 50 ; 0xf48c7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf48c8
+ push ax ; 50 ; 0xf48cb
+ call 0191ch ; e8 4d d0 ; 0xf48cc
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf48cf
+ jmp near 04bd7h ; e9 02 03 ; 0xf48d2 eltorito.c:794
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48d5 eltorito.c:798
+ xor ah, ah ; 30 e4 ; 0xf48d8
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf48da
+ mov bx, si ; 89 f3 ; 0xf48dd
+ add bx, ax ; 01 c3 ; 0xf48df
+ mov dl, byte [es:bx+00188h] ; 26 8a 97 88 01 ; 0xf48e1
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf48e6
+ cmp dl, 014h ; 80 fa 14 ; 0xf48e9 eltorito.c:801
+ jc short 048fch ; 72 0e ; 0xf48ec
+ push ax ; 50 ; 0xf48ee eltorito.c:802
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf48ef
+ push ax ; 50 ; 0xf48f2
+ mov ax, 0043ah ; b8 3a 04 ; 0xf48f3
+ push ax ; 50 ; 0xf48f6
+ mov ax, 00471h ; b8 71 04 ; 0xf48f7
+ jmp short 048c7h ; eb cb ; 0xf48fa
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf48fc eltorito.c:806
+ xor ah, ah ; 30 e4 ; 0xf48ff
+ mov dx, ax ; 89 c2 ; 0xf4901
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf4903
+ jnbe short 04965h ; 77 5d ; 0xf4906
+ push CS ; 0e ; 0xf4908
+ pop ES ; 07 ; 0xf4909
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf490a
+ mov di, 0482eh ; bf 2e 48 ; 0xf490d
+ repne scasb ; f2 ae ; 0xf4910
+ sal cx, 1 ; d1 e1 ; 0xf4912
+ mov di, cx ; 89 cf ; 0xf4914
+ mov ax, word [cs:di+0484bh] ; 2e 8b 85 4b 48 ; 0xf4916
+ mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf491b
+ xor bh, bh ; 30 ff ; 0xf491e
+ jmp ax ; ff e0 ; 0xf4920
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4922 eltorito.c:824
+ xor ah, ah ; 30 e4 ; 0xf4925
+ or ah, 003h ; 80 cc 03 ; 0xf4927
+ jmp near 04bdfh ; e9 b2 02 ; 0xf492a eltorito.c:825
+ mov si, strict word 00074h ; be 74 00 ; 0xf492d eltorito.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4930
+ mov es, ax ; 8e c0 ; 0xf4933
+ mov dl, byte [es:si] ; 26 8a 14 ; 0xf4935
+ mov bh, dl ; 88 d7 ; 0xf4938 eltorito.c:830
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf493a
+ mov bx, si ; 89 f3 ; 0xf493d eltorito.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf493f
+ test dl, dl ; 84 d2 ; 0xf4942 eltorito.c:834
+ je short 04962h ; 74 1c ; 0xf4944
+ jmp near 04bf2h ; e9 a9 02 ; 0xf4946 eltorito.c:835
+ or bh, 002h ; 80 cf 02 ; 0xf4949 eltorito.c:841
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf494c
+ jmp near 04be2h ; e9 90 02 ; 0xf494f eltorito.c:842
+ mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf4952 eltorito.c:846
+ or bh, 030h ; 80 cf 30 ; 0xf4957 eltorito.c:847
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf495a
+ mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf495d eltorito.c:848
+ jmp near 04bfch ; e9 97 02 ; 0xf4962 eltorito.c:849
+ mov bx, 00eeah ; bb ea 0e ; 0xf4965
+ mov cx, ds ; 8c d9 ; 0xf4968
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf496a
+ call 018d9h ; e8 69 cf ; 0xf496d
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4970
+ xor ah, ah ; 30 e4 ; 0xf4973
+ push ax ; 50 ; 0xf4975
+ mov ax, 0043ah ; b8 3a 04 ; 0xf4976
+ push ax ; 50 ; 0xf4979
+ mov ax, 00343h ; b8 43 03 ; 0xf497a
+ push ax ; 50 ; 0xf497d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf497e
+ jmp short 049c4h ; eb 41 ; 0xf4981
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf4983 eltorito.c:857
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf4986
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf4989
+ mov [bp-018h], es ; 8c 46 e8 ; 0xf498c
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf498f eltorito.c:859
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf4993
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf4996 eltorito.c:860
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf499a
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf499d eltorito.c:861
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf49a1
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf49a4 eltorito.c:864
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf49a8
+ mov di, word [es:bx+00eh] ; 26 8b 7f 0e ; 0xf49ab
+ or di, ax ; 09 c7 ; 0xf49af eltorito.c:865
+ je short 049ceh ; 74 1b ; 0xf49b1
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf49b3 eltorito.c:866
+ xor ah, ah ; 30 e4 ; 0xf49b6
+ push ax ; 50 ; 0xf49b8
+ mov ax, 0043ah ; b8 3a 04 ; 0xf49b9
+ push ax ; 50 ; 0xf49bc
+ mov ax, 003bfh ; b8 bf 03 ; 0xf49bd
+ push ax ; 50 ; 0xf49c0
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf49c1
+ push ax ; 50 ; 0xf49c4
+ call 0191ch ; e8 54 cf ; 0xf49c5
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf49c8
+ jmp near 04bd7h ; e9 09 02 ; 0xf49cb eltorito.c:867
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf49ce eltorito.c:871
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf49d1
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf49d4
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf49d8
+ mov di, bx ; 89 df ; 0xf49db
+ mov di, word [es:di+00ah] ; 26 8b 7d 0a ; 0xf49dd
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf49e1 eltorito.c:874
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf49e4
+ mov byte [bp-015h], 000h ; c6 46 eb 00 ; 0xf49e7
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf49eb
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf49ee
+ je short 049f8h ; 74 05 ; 0xf49f1
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf49f3
+ jne short 049fbh ; 75 03 ; 0xf49f6
+ jmp near 04bf8h ; e9 fd 01 ; 0xf49f8 eltorito.c:875
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf49fb eltorito.c:880
+ xor bx, bx ; 31 db ; 0xf49fe
+ mov dx, ss ; 8c d2 ; 0xf4a00
+ lea ax, [bp-024h] ; 8d 46 dc ; 0xf4a02
+ call 0b090h ; e8 88 66 ; 0xf4a05
+ mov word [bp-024h], strict word 00028h ; c7 46 dc 28 00 ; 0xf4a08 eltorito.c:881
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf4a0d eltorito.c:882
+ mov dx, di ; 89 fa ; 0xf4a10
+ xchg ah, al ; 86 c4 ; 0xf4a12
+ xchg dh, dl ; 86 d6 ; 0xf4a14
+ xchg dx, ax ; 92 ; 0xf4a16
+ mov word [bp-022h], ax ; 89 46 de ; 0xf4a17
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf4a1a
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf4a1d eltorito.c:883
+ xchg ah, al ; 86 c4 ; 0xf4a20
+ mov word [bp-01dh], ax ; 89 46 e3 ; 0xf4a22
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf4a25 eltorito.c:885
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4a28
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf4a2b
+ mov word [es:si+010h], 00800h ; 26 c7 44 10 00 08 ; 0xf4a2f eltorito.c:886
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a35 eltorito.c:888
+ xor ah, ah ; 30 e4 ; 0xf4a38
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4a3a
+ imul dx ; f7 ea ; 0xf4a3d
+ mov bx, si ; 89 f3 ; 0xf4a3f
+ add bx, ax ; 01 c3 ; 0xf4a41
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4a43
+ xor ah, ah ; 30 e4 ; 0xf4a47
+ mov di, ax ; 89 c7 ; 0xf4a49
+ sal di, 1 ; d1 e7 ; 0xf4a4b
+ push word [bp-00eh] ; ff 76 f2 ; 0xf4a4d
+ push word [bp-012h] ; ff 76 ee ; 0xf4a50
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4a53
+ push ax ; 50 ; 0xf4a56
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf4a57
+ xor dx, dx ; 31 d2 ; 0xf4a5a
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a5c
+ sal ax, 1 ; d1 e0 ; 0xf4a5f
+ rcl dx, 1 ; d1 d2 ; 0xf4a61
+ loop 04a5fh ; e2 fa ; 0xf4a63
+ push dx ; 52 ; 0xf4a65
+ push ax ; 50 ; 0xf4a66
+ xor ax, ax ; 31 c0 ; 0xf4a67
+ push ax ; 50 ; 0xf4a69
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a6a
+ xor ah, ah ; 30 e4 ; 0xf4a6d
+ mov cx, ss ; 8c d1 ; 0xf4a6f
+ lea bx, [bp-024h] ; 8d 5e dc ; 0xf4a71
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4a74
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4a77
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4a7b
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4a7e eltorito.c:890
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4a81
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf4a85
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a89
+ shr dx, 1 ; d1 ea ; 0xf4a8c
+ rcr ax, 1 ; d1 d8 ; 0xf4a8e
+ loop 04a8ch ; e2 fa ; 0xf4a90
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf4a92 eltorito.c:891
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf4a95
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf4a98
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf4a9c eltorito.c:893
+ je short 04adbh ; 74 39 ; 0xf4aa0
+ mov bx, 00eeah ; bb ea 0e ; 0xf4aa2 eltorito.c:894
+ mov cx, ds ; 8c d9 ; 0xf4aa5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4aa7
+ call 018d9h ; e8 2c ce ; 0xf4aaa
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4aad
+ xor ah, ah ; 30 e4 ; 0xf4ab0
+ push ax ; 50 ; 0xf4ab2
+ push word [bp-016h] ; ff 76 ea ; 0xf4ab3
+ mov ax, 0043ah ; b8 3a 04 ; 0xf4ab6
+ push ax ; 50 ; 0xf4ab9
+ mov ax, 003e8h ; b8 e8 03 ; 0xf4aba
+ push ax ; 50 ; 0xf4abd
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4abe
+ push ax ; 50 ; 0xf4ac1
+ call 0191ch ; e8 57 ce ; 0xf4ac2
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4ac5
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ac8 eltorito.c:895
+ xor ah, ah ; 30 e4 ; 0xf4acb
+ or ah, 00ch ; 80 cc 0c ; 0xf4acd
+ jmp near 04bdfh ; e9 0c 01 ; 0xf4ad0
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf4ad3 eltorito.c:903
+ jbe short 04adeh ; 76 06 ; 0xf4ad6
+ jmp near 04bd7h ; e9 fc 00 ; 0xf4ad8 eltorito.c:904
+ jmp near 04bf8h ; e9 1a 01 ; 0xf4adb
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4ade eltorito.c:906
+ xor ah, ah ; 30 e4 ; 0xf4ae1
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4ae3
+ imul dx ; f7 ea ; 0xf4ae6
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4ae8
+ mov di, si ; 89 f7 ; 0xf4aeb
+ add di, ax ; 01 c7 ; 0xf4aed
+ mov cl, byte [es:di+025h] ; 26 8a 4d 25 ; 0xf4aef
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf4af3 eltorito.c:908
+ je short 04b5eh ; 74 66 ; 0xf4af6
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf4af8
+ je short 04b39h ; 74 3c ; 0xf4afb
+ test bx, bx ; 85 db ; 0xf4afd
+ jne short 04b6eh ; 75 6d ; 0xf4aff
+ cmp cl, 0ffh ; 80 f9 ff ; 0xf4b01 eltorito.c:910
+ jne short 04b18h ; 75 12 ; 0xf4b04
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b06 eltorito.c:911
+ xor ah, ah ; 30 e4 ; 0xf4b09
+ or ah, 0b4h ; 80 cc b4 ; 0xf4b0b
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4b0e
+ xor al, al ; 30 c0 ; 0xf4b11 eltorito.c:912
+ or AL, strict byte 001h ; 0c 01 ; 0xf4b13
+ jmp near 04bdfh ; e9 c7 00 ; 0xf4b15
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4b18 eltorito.c:914
+ xor ah, ah ; 30 e4 ; 0xf4b1b
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4b1d
+ imul dx ; f7 ea ; 0xf4b20
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf4b22 eltorito.c:915
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4b24
+ add si, ax ; 01 c6 ; 0xf4b27
+ mov byte [es:si+025h], cl ; 26 88 4c 25 ; 0xf4b29
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b2d eltorito.c:916
+ xor al, al ; 30 c0 ; 0xf4b30
+ or AL, strict byte 001h ; 0c 01 ; 0xf4b32
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4b34
+ jmp short 04b6eh ; eb 35 ; 0xf4b37 eltorito.c:917
+ test cl, cl ; 84 c9 ; 0xf4b39 eltorito.c:919
+ jne short 04b49h ; 75 0c ; 0xf4b3b
+ or bh, 0b0h ; 80 cf b0 ; 0xf4b3d eltorito.c:920
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf4b40
+ mov byte [bp+018h], cl ; 88 4e 18 ; 0xf4b43 eltorito.c:921
+ jmp near 04be2h ; e9 99 00 ; 0xf4b46 eltorito.c:922
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4b49 eltorito.c:923
+ xor ah, ah ; 30 e4 ; 0xf4b4c
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4b4e
+ imul dx ; f7 ea ; 0xf4b51
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf4b53 eltorito.c:924
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4b55
+ add si, ax ; 01 c6 ; 0xf4b58
+ mov byte [es:si+025h], cl ; 26 88 4c 25 ; 0xf4b5a
+ test cl, cl ; 84 c9 ; 0xf4b5e eltorito.c:925
+ jne short 04b71h ; 75 0f ; 0xf4b60
+ xor ax, ax ; 31 c0 ; 0xf4b62
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf4b64
+ xor dl, dl ; 30 d2 ; 0xf4b67
+ or dx, ax ; 09 c2 ; 0xf4b69
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf4b6b
+ jmp near 04bf8h ; e9 87 00 ; 0xf4b6e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4b71
+ jmp short 04b64h ; eb ee ; 0xf4b74
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4b76 eltorito.c:935
+ xor ah, ah ; 30 e4 ; 0xf4b79
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4b7b
+ imul dx ; f7 ea ; 0xf4b7e
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4b80
+ add si, ax ; 01 c6 ; 0xf4b83
+ mov cl, byte [es:si+025h] ; 26 8a 4c 25 ; 0xf4b85
+ test cl, cl ; 84 c9 ; 0xf4b89 eltorito.c:937
+ je short 04b93h ; 74 06 ; 0xf4b8b
+ or bh, 0b1h ; 80 cf b1 ; 0xf4b8d eltorito.c:938
+ jmp near 0494ch ; e9 b9 fd ; 0xf4b90
+ je short 04bf8h ; 74 63 ; 0xf4b93 eltorito.c:960
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b95 eltorito.c:961
+ xor ah, ah ; 30 e4 ; 0xf4b98
+ or ah, 0b1h ; 80 cc b1 ; 0xf4b9a
+ jmp short 04bdfh ; eb 40 ; 0xf4b9d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4b9f eltorito.c:969
+ xor ah, ah ; 30 e4 ; 0xf4ba2
+ push ax ; 50 ; 0xf4ba4
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4ba5
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4ba8
+ mov bx, si ; 89 f3 ; 0xf4bab
+ mov cx, word [bp-014h] ; 8b 4e ec ; 0xf4bad
+ call 05ac8h ; e8 15 0f ; 0xf4bb0
+ test ax, ax ; 85 c0 ; 0xf4bb3
+ je short 04bf8h ; 74 41 ; 0xf4bb5
+ jmp short 04bd7h ; eb 1e ; 0xf4bb7 eltorito.c:970
+ or bh, 006h ; 80 cf 06 ; 0xf4bb9 eltorito.c:977
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf4bbc
+ jmp short 04bf2h ; eb 31 ; 0xf4bbf eltorito.c:978
+ cmp bx, strict byte 00006h ; 83 fb 06 ; 0xf4bc1 eltorito.c:983
+ je short 04bf8h ; 74 32 ; 0xf4bc4
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf4bc6
+ jc short 04bd7h ; 72 0c ; 0xf4bc9
+ jbe short 04bf8h ; 76 2b ; 0xf4bcb
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf4bcd
+ jc short 04bd7h ; 72 05 ; 0xf4bd0
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf4bd2
+ jbe short 04bf8h ; 76 21 ; 0xf4bd5
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4bd7 eltorito.c:1010
+ xor ah, ah ; 30 e4 ; 0xf4bda
+ or ah, 001h ; 80 cc 01 ; 0xf4bdc
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4bdf
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4be2 eltorito.c:1012
+ xor ah, ah ; 30 e4 ; 0xf4be5
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4be7 eltorito.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4bea
+ mov es, dx ; 8e c2 ; 0xf4bed
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4bef
+ or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4bf2 eltorito.c:1014
+ jmp short 04c0ch ; eb 14 ; 0xf4bf6 eltorito.c:1015
+ mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4bf8 eltorito.c:1018
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4bfc eltorito.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4bff
+ mov es, ax ; 8e c0 ; 0xf4c02
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4c04
+ and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4c08 eltorito.c:1021
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4c0c eltorito.c:1023
+ pop di ; 5f ; 0xf4c0f
+ pop si ; 5e ; 0xf4c10
+ pop bp ; 5d ; 0xf4c11
+ retn ; c3 ; 0xf4c12
+ ; disGetNextSymbol 0xf4c13 LB 0x67a5 -> off=0x0 cb=0000000000000051 uValue=00000000000f3613 'print_boot_device'
+print_boot_device: ; 0xf4c13 LB 0x51
+ push bp ; 55 ; 0xf4c13 boot.c:109
+ mov bp, sp ; 89 e5 ; 0xf4c14
+ push cx ; 51 ; 0xf4c16
+ test al, al ; 84 c0 ; 0xf4c17 boot.c:117
+ je short 04c20h ; 74 05 ; 0xf4c19
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf4c1b
+ jmp short 04c3ah ; eb 1a ; 0xf4c1e boot.c:118
+ test dl, dl ; 84 d2 ; 0xf4c20
+ je short 04c29h ; 74 05 ; 0xf4c22
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf4c24
+ jmp short 04c3ah ; eb 11 ; 0xf4c27 boot.c:119
+ test bl, 080h ; f6 c3 80 ; 0xf4c29
+ jne short 04c32h ; 75 04 ; 0xf4c2c
+ xor dh, dh ; 30 f6 ; 0xf4c2e
+ jmp short 04c3ah ; eb 08 ; 0xf4c30 boot.c:120
+ test bl, 080h ; f6 c3 80 ; 0xf4c32
+ je short 04c5eh ; 74 27 ; 0xf4c35
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4c37
+ mov bx, 00eeah ; bb ea 0e ; 0xf4c3a boot.c:123
+ mov cx, ds ; 8c d9 ; 0xf4c3d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c3f
+ call 018d9h ; e8 94 cc ; 0xf4c42
+ mov ax, dx ; 89 d0 ; 0xf4c45
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf4c47
+ imul dx ; f7 ea ; 0xf4c4a
+ add ax, 00f10h ; 05 10 0f ; 0xf4c4c
+ push ax ; 50 ; 0xf4c4f
+ mov ax, 004a4h ; b8 a4 04 ; 0xf4c50
+ push ax ; 50 ; 0xf4c53
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c54
+ push ax ; 50 ; 0xf4c57
+ call 0191ch ; e8 c1 cc ; 0xf4c58
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c5b
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4c5e boot.c:124
+ pop cx ; 59 ; 0xf4c61
+ pop bp ; 5d ; 0xf4c62
+ retn ; c3 ; 0xf4c63
+ ; disGetNextSymbol 0xf4c64 LB 0x6754 -> off=0x0 cb=000000000000009f uValue=00000000000f3664 'print_boot_failure'
+print_boot_failure: ; 0xf4c64 LB 0x9f
+ push bp ; 55 ; 0xf4c64 boot.c:131
+ mov bp, sp ; 89 e5 ; 0xf4c65
+ push si ; 56 ; 0xf4c67
+ mov dh, cl ; 88 ce ; 0xf4c68
+ mov cl, bl ; 88 d9 ; 0xf4c6a boot.c:134
+ and cl, 07fh ; 80 e1 7f ; 0xf4c6c
+ xor ch, ch ; 30 ed ; 0xf4c6f
+ mov si, cx ; 89 ce ; 0xf4c71
+ test al, al ; 84 c0 ; 0xf4c73 boot.c:142
+ je short 04c96h ; 74 1f ; 0xf4c75
+ mov bx, 00eeah ; bb ea 0e ; 0xf4c77 boot.c:143
+ mov cx, ds ; 8c d9 ; 0xf4c7a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c7c
+ call 018d9h ; e8 57 cc ; 0xf4c7f
+ mov cx, 00f24h ; b9 24 0f ; 0xf4c82
+ push cx ; 51 ; 0xf4c85
+ mov cx, 004b8h ; b9 b8 04 ; 0xf4c86
+ push cx ; 51 ; 0xf4c89
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf4c8a
+ push cx ; 51 ; 0xf4c8d
+ call 0191ch ; e8 8b cc ; 0xf4c8e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c91
+ jmp short 04cdeh ; eb 48 ; 0xf4c94 boot.c:144
+ test dl, dl ; 84 d2 ; 0xf4c96
+ je short 04caah ; 74 10 ; 0xf4c98
+ mov bx, 00eeah ; bb ea 0e ; 0xf4c9a boot.c:145
+ mov cx, ds ; 8c d9 ; 0xf4c9d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c9f
+ call 018d9h ; e8 34 cc ; 0xf4ca2
+ mov cx, 00f2eh ; b9 2e 0f ; 0xf4ca5
+ jmp short 04c85h ; eb db ; 0xf4ca8
+ test bl, 080h ; f6 c3 80 ; 0xf4caa boot.c:146
+ je short 04cc0h ; 74 11 ; 0xf4cad
+ mov bx, 00eeah ; bb ea 0e ; 0xf4caf boot.c:147
+ mov cx, ds ; 8c d9 ; 0xf4cb2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4cb4
+ call 018d9h ; e8 1f cc ; 0xf4cb7
+ push si ; 56 ; 0xf4cba
+ mov cx, 00f1ah ; b9 1a 0f ; 0xf4cbb
+ jmp short 04ccfh ; eb 0f ; 0xf4cbe boot.c:148
+ mov bx, 00eeah ; bb ea 0e ; 0xf4cc0 boot.c:149
+ mov cx, ds ; 8c d9 ; 0xf4cc3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4cc5
+ call 018d9h ; e8 0e cc ; 0xf4cc8
+ push si ; 56 ; 0xf4ccb
+ mov cx, 00f10h ; b9 10 0f ; 0xf4ccc
+ push cx ; 51 ; 0xf4ccf
+ mov cx, 004cdh ; b9 cd 04 ; 0xf4cd0
+ push cx ; 51 ; 0xf4cd3
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf4cd4
+ push cx ; 51 ; 0xf4cd7
+ call 0191ch ; e8 41 cc ; 0xf4cd8
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4cdb
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4cde boot.c:151
+ jne short 04cfbh ; 75 17 ; 0xf4ce2
+ test dh, dh ; 84 f6 ; 0xf4ce4 boot.c:152
+ jne short 04cedh ; 75 05 ; 0xf4ce6
+ mov dx, 004e5h ; ba e5 04 ; 0xf4ce8 boot.c:153
+ jmp short 04cf0h ; eb 03 ; 0xf4ceb boot.c:154
+ mov dx, 0050fh ; ba 0f 05 ; 0xf4ced boot.c:155
+ push dx ; 52 ; 0xf4cf0
+ mov dx, strict word 00007h ; ba 07 00 ; 0xf4cf1
+ push dx ; 52 ; 0xf4cf4
+ call 0191ch ; e8 24 cc ; 0xf4cf5
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4cf8
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4cfb boot.c:157
+ pop si ; 5e ; 0xf4cfe
+ pop bp ; 5d ; 0xf4cff
+ retn 00002h ; c2 02 00 ; 0xf4d00
+ ; disGetNextSymbol 0xf4d03 LB 0x66b5 -> off=0x0 cb=000000000000002a uValue=00000000000f3703 'print_cdromboot_failure'
+print_cdromboot_failure: ; 0xf4d03 LB 0x2a
+ push bp ; 55 ; 0xf4d03 boot.c:163
+ mov bp, sp ; 89 e5 ; 0xf4d04
+ push bx ; 53 ; 0xf4d06
+ push cx ; 51 ; 0xf4d07
+ push dx ; 52 ; 0xf4d08
+ mov dx, ax ; 89 c2 ; 0xf4d09
+ mov bx, 00eeah ; bb ea 0e ; 0xf4d0b boot.c:165
+ mov cx, ds ; 8c d9 ; 0xf4d0e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4d10
+ call 018d9h ; e8 c3 cb ; 0xf4d13
+ push dx ; 52 ; 0xf4d16
+ mov dx, 00544h ; ba 44 05 ; 0xf4d17
+ push dx ; 52 ; 0xf4d1a
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf4d1b
+ push dx ; 52 ; 0xf4d1e
+ call 0191ch ; e8 fa cb ; 0xf4d1f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4d22
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf4d25 boot.c:167
+ pop dx ; 5a ; 0xf4d28
+ pop cx ; 59 ; 0xf4d29
+ pop bx ; 5b ; 0xf4d2a
+ pop bp ; 5d ; 0xf4d2b
+ retn ; c3 ; 0xf4d2c
+ ; disGetNextSymbol 0xf4d2d LB 0x668b -> off=0x0 cb=0000000000000266 uValue=00000000000f372d 'int19_function'
+int19_function: ; 0xf4d2d LB 0x266
+ push bp ; 55 ; 0xf4d2d boot.c:170
+ mov bp, sp ; 89 e5 ; 0xf4d2e
+ push si ; 56 ; 0xf4d30
+ push di ; 57 ; 0xf4d31
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf4d32
+ mov di, strict word 0000eh ; bf 0e 00 ; 0xf4d35 boot.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4d38
+ mov es, ax ; 8e c0 ; 0xf4d3b
+ mov di, word [es:di] ; 26 8b 3d ; 0xf4d3d
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf4d40 boot.c:49
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4d43 boot.c:181
+ mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4d47 boot.c:204
+ call 0165fh ; e8 12 c9 ; 0xf4d4a
+ mov bl, al ; 88 c3 ; 0xf4d4d
+ xor bh, bh ; 30 ff ; 0xf4d4f
+ mov ax, strict word 00038h ; b8 38 00 ; 0xf4d51 boot.c:205
+ call 0165fh ; e8 08 c9 ; 0xf4d54
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4d57
+ xor ah, ah ; 30 e4 ; 0xf4d59
+ mov CL, strict byte 004h ; b1 04 ; 0xf4d5b
+ sal ax, CL ; d3 e0 ; 0xf4d5d
+ mov dx, bx ; 89 da ; 0xf4d5f
+ or dx, ax ; 09 c2 ; 0xf4d61
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d63 boot.c:206
+ call 0165fh ; e8 f6 c8 ; 0xf4d66
+ and AL, strict byte 00fh ; 24 0f ; 0xf4d69
+ xor ah, ah ; 30 e4 ; 0xf4d6b
+ mov CL, strict byte 00ch ; b1 0c ; 0xf4d6d
+ sal ax, CL ; d3 e0 ; 0xf4d6f
+ or dx, ax ; 09 c2 ; 0xf4d71
+ mov bx, 00335h ; bb 35 03 ; 0xf4d73 boot.c:38
+ mov es, di ; 8e c7 ; 0xf4d76
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4d78
+ test al, al ; 84 c0 ; 0xf4d7b boot.c:39
+ je short 04d83h ; 74 04 ; 0xf4d7d
+ mov dl, al ; 88 c2 ; 0xf4d7f boot.c:38
+ xor dh, dh ; 30 f6 ; 0xf4d81 boot.c:39
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4d83 boot.c:210
+ jne short 04d9ah ; 75 11 ; 0xf4d87
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d89 boot.c:211
+ call 0165fh ; e8 d0 c8 ; 0xf4d8c
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4d8f
+ xor ah, ah ; 30 e4 ; 0xf4d91
+ mov CL, strict byte 004h ; b1 04 ; 0xf4d93
+ sar ax, CL ; d3 f8 ; 0xf4d95
+ call 078f0h ; e8 56 2b ; 0xf4d97
+ cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4d9a boot.c:213
+ jne short 04da4h ; 75 04 ; 0xf4d9e
+ mov CL, strict byte 004h ; b1 04 ; 0xf4da0
+ shr dx, CL ; d3 ea ; 0xf4da2
+ cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4da4 boot.c:214
+ jne short 04daeh ; 75 04 ; 0xf4da8
+ mov dl, dh ; 88 f2 ; 0xf4daa
+ xor dh, dh ; 30 f6 ; 0xf4dac
+ cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4dae boot.c:215
+ jne short 04db8h ; 75 04 ; 0xf4db2
+ mov CL, strict byte 00ch ; b1 0c ; 0xf4db4
+ shr dx, CL ; d3 ea ; 0xf4db6
+ cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4db8 boot.c:216
+ jnc short 04dc1h ; 73 04 ; 0xf4dbb
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4dbd
+ xor al, al ; 30 c0 ; 0xf4dc1 boot.c:217
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4dc3
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4dc6
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4dc9 boot.c:218
+ mov bx, 00eeah ; bb ea 0e ; 0xf4dcc boot.c:219
+ mov cx, ds ; 8c d9 ; 0xf4dcf
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4dd1
+ call 018d9h ; e8 02 cb ; 0xf4dd4
+ push dx ; 52 ; 0xf4dd7
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf4dd8
+ xor ah, ah ; 30 e4 ; 0xf4ddb
+ push ax ; 50 ; 0xf4ddd
+ mov ax, 00564h ; b8 64 05 ; 0xf4dde
+ push ax ; 50 ; 0xf4de1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4de2
+ push ax ; 50 ; 0xf4de5
+ call 0191ch ; e8 33 cb ; 0xf4de6
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4de9
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4dec boot.c:221
+ cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4def
+ jc short 04e02h ; 72 0e ; 0xf4df2
+ jbe short 04e11h ; 76 1b ; 0xf4df4
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4df6
+ je short 04e2eh ; 74 33 ; 0xf4df9
+ cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4dfb
+ je short 04e24h ; 74 24 ; 0xf4dfe
+ jmp short 04e5dh ; eb 5b ; 0xf4e00
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4e02
+ jne short 04e5dh ; 75 56 ; 0xf4e05
+ xor al, al ; 30 c0 ; 0xf4e07 boot.c:223
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4e09
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4e0c boot.c:224
+ jmp short 04e70h ; eb 5f ; 0xf4e0f boot.c:225
+ mov bx, 00334h ; bb 34 03 ; 0xf4e11 boot.c:38
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4e14
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4e17
+ add AL, strict byte 080h ; 04 80 ; 0xf4e1a boot.c:231
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4e1c
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf4e1f boot.c:232
+ jmp short 04e70h ; eb 4c ; 0xf4e22 boot.c:233
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4e24 boot.c:236
+ mov byte [bp-008h], 001h ; c6 46 f8 01 ; 0xf4e28 boot.c:237
+ jmp short 04e38h ; eb 0a ; 0xf4e2c boot.c:238
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4e2e boot.c:239
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4e32 boot.c:255
+ je short 04e70h ; 74 38 ; 0xf4e36
+ call 03e0ch ; e8 d1 ef ; 0xf4e38 boot.c:256
+ mov dx, ax ; 89 c2 ; 0xf4e3b
+ test AL, strict byte 0ffh ; a8 ff ; 0xf4e3d boot.c:259
+ je short 04e64h ; 74 23 ; 0xf4e3f
+ call 04d03h ; e8 bf fe ; 0xf4e41 boot.c:260
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4e44 boot.c:261
+ xor ah, ah ; 30 e4 ; 0xf4e47
+ push ax ; 50 ; 0xf4e49
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e4a
+ xor bh, bh ; 30 ff ; 0xf4e4d
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e4f
+ xor dh, dh ; 30 f6 ; 0xf4e52
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e54
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4e57
+ call 04c64h ; e8 07 fe ; 0xf4e5a
+ xor ax, ax ; 31 c0 ; 0xf4e5d
+ xor dx, dx ; 31 d2 ; 0xf4e5f
+ jmp near 04f8ch ; e9 28 01 ; 0xf4e61
+ mov bx, 0032ah ; bb 2a 03 ; 0xf4e64 boot.c:48
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4e67
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf4e6a
+ mov byte [bp-006h], dh ; 88 76 fa ; 0xf4e6d boot.c:266
+ cmp byte [bp-00ah], 001h ; 80 7e f6 01 ; 0xf4e70 boot.c:272
+ jne short 04ecbh ; 75 55 ; 0xf4e74
+ xor si, si ; 31 f6 ; 0xf4e76 boot.c:275
+ mov ax, 0e200h ; b8 00 e2 ; 0xf4e78
+ mov es, ax ; 8e c0 ; 0xf4e7b
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4e7d boot.c:276
+ jne short 04e44h ; 75 c0 ; 0xf4e82
+ mov di, ax ; 89 c7 ; 0xf4e84 boot.c:282
+ mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4e86
+ cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4e8a boot.c:283
+ jne short 04e44h ; 75 b2 ; 0xf4e90
+ cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4e92
+ jne short 04e44h ; 75 ab ; 0xf4e97
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4e99 boot.c:285
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4e9d
+ mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf4ea0
+ cmp dx, 06568h ; 81 fa 68 65 ; 0xf4ea4 boot.c:286
+ jne short 04ecdh ; 75 23 ; 0xf4ea8
+ cmp ax, 07445h ; 3d 45 74 ; 0xf4eaa
+ jne short 04ecdh ; 75 1e ; 0xf4ead
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4eaf boot.c:288
+ xor bh, bh ; 30 ff ; 0xf4eb2
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4eb4
+ xor dh, dh ; 30 f6 ; 0xf4eb7
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4eb9
+ xor ah, ah ; 30 e4 ; 0xf4ebc
+ call 04c13h ; e8 52 fd ; 0xf4ebe
+ mov word [bp-012h], strict word 00006h ; c7 46 ee 06 00 ; 0xf4ec1 boot.c:289
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4ec6
+ jmp short 04eech ; eb 21 ; 0xf4ec9 boot.c:292
+ jmp short 04ef2h ; eb 25 ; 0xf4ecb
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4ecd boot.c:295
+ xor bh, bh ; 30 ff ; 0xf4ed0
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4ed2
+ xor dh, dh ; 30 f6 ; 0xf4ed5
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4ed7
+ xor ah, ah ; 30 e4 ; 0xf4eda
+ call 04c13h ; e8 34 fd ; 0xf4edc
+ sti ; fb ; 0xf4edf boot.c:296
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4ee0 boot.c:297
+ mov es, di ; 8e c7 ; 0xf4ee3
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4ee5
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf4ee9
+ call far [bp-012h] ; ff 5e ee ; 0xf4eec boot.c:298
+ jmp near 04e44h ; e9 52 ff ; 0xf4eef boot.c:301
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4ef2 boot.c:309
+ jne short 04f1fh ; 75 27 ; 0xf4ef6
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4ef8
+ jne short 04f1fh ; 75 21 ; 0xf4efc
+ mov si, 007c0h ; be c0 07 ; 0xf4efe boot.c:310
+ mov es, si ; 8e c6 ; 0xf4f01 boot.c:312
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4f03
+ mov ax, 00201h ; b8 01 02 ; 0xf4f06
+ mov DH, strict byte 000h ; b6 00 ; 0xf4f09
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4f0b
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf4f0e
+ int 013h ; cd 13 ; 0xf4f10
+ mov ax, strict word 00000h ; b8 00 00 ; 0xf4f12
+ sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4f15
+ test ax, ax ; 85 c0 ; 0xf4f18 boot.c:313
+ je short 04f1fh ; 74 03 ; 0xf4f1a
+ jmp near 04e44h ; e9 25 ff ; 0xf4f1c
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf4f1f boot.c:328
+ je short 04f29h ; 74 04 ; 0xf4f23
+ xor al, al ; 30 c0 ; 0xf4f25
+ jmp short 04f2bh ; eb 02 ; 0xf4f27 boot.c:329
+ mov AL, strict byte 001h ; b0 01 ; 0xf4f29
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4f2b boot.c:333
+ je short 04f33h ; 74 02 ; 0xf4f2f
+ mov AL, strict byte 001h ; b0 01 ; 0xf4f31 boot.c:334
+ xor bx, bx ; 31 db ; 0xf4f33 boot.c:48
+ mov es, si ; 8e c6 ; 0xf4f35
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf4f37
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4f3a boot.c:48
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4f3d
+ cmp di, dx ; 39 d7 ; 0xf4f40 boot.c:49
+ je short 04f53h ; 74 0f ; 0xf4f42
+ test al, al ; 84 c0 ; 0xf4f44
+ jne short 04f6bh ; 75 23 ; 0xf4f46
+ mov bx, 001feh ; bb fe 01 ; 0xf4f48 boot.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4f4b
+ cmp ax, 0aa55h ; 3d 55 aa ; 0xf4f4e boot.c:49
+ je short 04f6bh ; 74 18 ; 0xf4f51
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4f53 boot.c:340
+ xor ah, ah ; 30 e4 ; 0xf4f56
+ push ax ; 50 ; 0xf4f58
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4f59
+ xor bh, bh ; 30 ff ; 0xf4f5c
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4f5e
+ xor dh, dh ; 30 f6 ; 0xf4f61
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4f63
+ xor cx, cx ; 31 c9 ; 0xf4f66
+ jmp near 04e5ah ; e9 ef fe ; 0xf4f68
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4f6b boot.c:346
+ xor bh, bh ; 30 ff ; 0xf4f6e
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4f70
+ xor dh, dh ; 30 f6 ; 0xf4f73
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4f75
+ xor ah, ah ; 30 e4 ; 0xf4f78
+ call 04c13h ; e8 96 fc ; 0xf4f7a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4f7d boot.c:352
+ xor ah, ah ; 30 e4 ; 0xf4f80
+ mov bx, ax ; 89 c3 ; 0xf4f82
+ xor dx, dx ; 31 d2 ; 0xf4f84
+ xor al, al ; 30 c0 ; 0xf4f86
+ add ax, si ; 01 f0 ; 0xf4f88
+ adc dx, bx ; 11 da ; 0xf4f8a
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4f8c boot.c:353
+ pop di ; 5f ; 0xf4f8f
+ pop si ; 5e ; 0xf4f90
+ pop bp ; 5d ; 0xf4f91
+ retn ; c3 ; 0xf4f92
+ ; disGetNextSymbol 0xf4f93 LB 0x6425 -> off=0x0 cb=0000000000000016 uValue=00000000000f3993 'keyboard_panic'
+keyboard_panic: ; 0xf4f93 LB 0x16
+ push bp ; 55 ; 0xf4f93 keyboard.c:194
+ mov bp, sp ; 89 e5 ; 0xf4f94
+ push ax ; 50 ; 0xf4f96 keyboard.c:199
+ mov ax, 00584h ; b8 84 05 ; 0xf4f97
+ push ax ; 50 ; 0xf4f9a
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf4f9b
+ push ax ; 50 ; 0xf4f9e
+ call 0191ch ; e8 7a c9 ; 0xf4f9f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4fa2
+ mov sp, bp ; 89 ec ; 0xf4fa5 keyboard.c:200
+ pop bp ; 5d ; 0xf4fa7
+ retn ; c3 ; 0xf4fa8
+ ; disGetNextSymbol 0xf4fa9 LB 0x640f -> off=0x0 cb=000000000000026a uValue=00000000000f39a9 'keyboard_init'
+keyboard_init: ; 0xf4fa9 LB 0x26a
+ push bp ; 55 ; 0xf4fa9 keyboard.c:208
+ mov bp, sp ; 89 e5 ; 0xf4faa
+ mov AL, strict byte 0aah ; b0 aa ; 0xf4fac keyboard.c:214
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fae
+ out DX, AL ; ee ; 0xf4fb1
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fb2 keyboard.c:217
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fb5 keyboard.c:218
+ in AL, DX ; ec ; 0xf4fb8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fb9
+ test AL, strict byte 002h ; a8 02 ; 0xf4fbb
+ je short 04fcch ; 74 0d ; 0xf4fbd
+ dec bx ; 4b ; 0xf4fbf
+ test bx, bx ; 85 db ; 0xf4fc0
+ jbe short 04fcch ; 76 08 ; 0xf4fc2
+ xor al, al ; 30 c0 ; 0xf4fc4
+ mov dx, 00080h ; ba 80 00 ; 0xf4fc6
+ out DX, AL ; ee ; 0xf4fc9
+ jmp short 04fb5h ; eb e9 ; 0xf4fca
+ test bx, bx ; 85 db ; 0xf4fcc keyboard.c:219
+ jne short 04fd5h ; 75 05 ; 0xf4fce
+ xor ax, ax ; 31 c0 ; 0xf4fd0
+ call 04f93h ; e8 be ff ; 0xf4fd2
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fd5 keyboard.c:222
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fd8 keyboard.c:223
+ in AL, DX ; ec ; 0xf4fdb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fdc
+ test AL, strict byte 001h ; a8 01 ; 0xf4fde
+ jne short 04fefh ; 75 0d ; 0xf4fe0
+ dec bx ; 4b ; 0xf4fe2
+ test bx, bx ; 85 db ; 0xf4fe3
+ jbe short 04fefh ; 76 08 ; 0xf4fe5
+ mov AL, strict byte 001h ; b0 01 ; 0xf4fe7
+ mov dx, 00080h ; ba 80 00 ; 0xf4fe9
+ out DX, AL ; ee ; 0xf4fec
+ jmp short 04fd8h ; eb e9 ; 0xf4fed
+ test bx, bx ; 85 db ; 0xf4fef keyboard.c:224
+ jne short 04ff9h ; 75 06 ; 0xf4ff1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4ff3
+ call 04f93h ; e8 9a ff ; 0xf4ff6
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4ff9 keyboard.c:227
+ in AL, DX ; ec ; 0xf4ffc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ffd
+ cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4fff
+ je short 0500ah ; 74 06 ; 0xf5002
+ mov ax, 003dfh ; b8 df 03 ; 0xf5004 keyboard.c:228
+ call 04f93h ; e8 89 ff ; 0xf5007
+ mov AL, strict byte 0abh ; b0 ab ; 0xf500a keyboard.c:232
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf500c
+ out DX, AL ; ee ; 0xf500f
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5010 keyboard.c:235
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5013 keyboard.c:236
+ in AL, DX ; ec ; 0xf5016
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5017
+ test AL, strict byte 002h ; a8 02 ; 0xf5019
+ je short 0502ah ; 74 0d ; 0xf501b
+ dec bx ; 4b ; 0xf501d
+ test bx, bx ; 85 db ; 0xf501e
+ jbe short 0502ah ; 76 08 ; 0xf5020
+ mov AL, strict byte 010h ; b0 10 ; 0xf5022
+ mov dx, 00080h ; ba 80 00 ; 0xf5024
+ out DX, AL ; ee ; 0xf5027
+ jmp short 05013h ; eb e9 ; 0xf5028
+ test bx, bx ; 85 db ; 0xf502a keyboard.c:237
+ jne short 05034h ; 75 06 ; 0xf502c
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf502e
+ call 04f93h ; e8 5f ff ; 0xf5031
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5034 keyboard.c:240
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5037 keyboard.c:241
+ in AL, DX ; ec ; 0xf503a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf503b
+ test AL, strict byte 001h ; a8 01 ; 0xf503d
+ jne short 0504eh ; 75 0d ; 0xf503f
+ dec bx ; 4b ; 0xf5041
+ test bx, bx ; 85 db ; 0xf5042
+ jbe short 0504eh ; 76 08 ; 0xf5044
+ mov AL, strict byte 011h ; b0 11 ; 0xf5046
+ mov dx, 00080h ; ba 80 00 ; 0xf5048
+ out DX, AL ; ee ; 0xf504b
+ jmp short 05037h ; eb e9 ; 0xf504c
+ test bx, bx ; 85 db ; 0xf504e keyboard.c:242
+ jne short 05058h ; 75 06 ; 0xf5050
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf5052
+ call 04f93h ; e8 3b ff ; 0xf5055
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5058 keyboard.c:246
+ in AL, DX ; ec ; 0xf505b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf505c
+ test ax, ax ; 85 c0 ; 0xf505e
+ je short 05068h ; 74 06 ; 0xf5060
+ mov ax, 003e0h ; b8 e0 03 ; 0xf5062 keyboard.c:247
+ call 04f93h ; e8 2b ff ; 0xf5065
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf5068 keyboard.c:253
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf506a
+ out DX, AL ; ee ; 0xf506d
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf506e keyboard.c:256
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5071 keyboard.c:257
+ in AL, DX ; ec ; 0xf5074
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5075
+ test AL, strict byte 002h ; a8 02 ; 0xf5077
+ je short 05088h ; 74 0d ; 0xf5079
+ dec bx ; 4b ; 0xf507b
+ test bx, bx ; 85 db ; 0xf507c
+ jbe short 05088h ; 76 08 ; 0xf507e
+ mov AL, strict byte 020h ; b0 20 ; 0xf5080
+ mov dx, 00080h ; ba 80 00 ; 0xf5082
+ out DX, AL ; ee ; 0xf5085
+ jmp short 05071h ; eb e9 ; 0xf5086
+ test bx, bx ; 85 db ; 0xf5088 keyboard.c:258
+ jne short 05092h ; 75 06 ; 0xf508a
+ mov ax, strict word 00014h ; b8 14 00 ; 0xf508c
+ call 04f93h ; e8 01 ff ; 0xf508f
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5092 keyboard.c:261
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5095 keyboard.c:262
+ in AL, DX ; ec ; 0xf5098
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5099
+ test AL, strict byte 001h ; a8 01 ; 0xf509b
+ jne short 050ach ; 75 0d ; 0xf509d
+ dec bx ; 4b ; 0xf509f
+ test bx, bx ; 85 db ; 0xf50a0
+ jbe short 050ach ; 76 08 ; 0xf50a2
+ mov AL, strict byte 021h ; b0 21 ; 0xf50a4
+ mov dx, 00080h ; ba 80 00 ; 0xf50a6
+ out DX, AL ; ee ; 0xf50a9
+ jmp short 05095h ; eb e9 ; 0xf50aa
+ test bx, bx ; 85 db ; 0xf50ac keyboard.c:263
+ jne short 050b6h ; 75 06 ; 0xf50ae
+ mov ax, strict word 00015h ; b8 15 00 ; 0xf50b0
+ call 04f93h ; e8 dd fe ; 0xf50b3
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50b6 keyboard.c:266
+ in AL, DX ; ec ; 0xf50b9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50ba
+ cmp ax, 000fah ; 3d fa 00 ; 0xf50bc
+ je short 050c7h ; 74 06 ; 0xf50bf
+ mov ax, 003e1h ; b8 e1 03 ; 0xf50c1 keyboard.c:267
+ call 04f93h ; e8 cc fe ; 0xf50c4
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50c7 keyboard.c:271
+ in AL, DX ; ec ; 0xf50ca
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50cb
+ test AL, strict byte 001h ; a8 01 ; 0xf50cd
+ jne short 050d9h ; 75 08 ; 0xf50cf
+ mov AL, strict byte 031h ; b0 31 ; 0xf50d1
+ mov dx, 00080h ; ba 80 00 ; 0xf50d3
+ out DX, AL ; ee ; 0xf50d6
+ jmp short 050c7h ; eb ee ; 0xf50d7
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50d9 keyboard.c:273
+ in AL, DX ; ec ; 0xf50dc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50dd
+ cmp ax, 000aah ; 3d aa 00 ; 0xf50df
+ je short 050f2h ; 74 0e ; 0xf50e2
+ in AL, DX ; ec ; 0xf50e4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50e5
+ cmp ax, 000aah ; 3d aa 00 ; 0xf50e7
+ je short 050f2h ; 74 06 ; 0xf50ea
+ mov ax, 003e2h ; b8 e2 03 ; 0xf50ec keyboard.c:274
+ call 04f93h ; e8 a1 fe ; 0xf50ef
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf50f2 keyboard.c:278
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50f4
+ out DX, AL ; ee ; 0xf50f7
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf50f8 keyboard.c:281
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50fb keyboard.c:282
+ in AL, DX ; ec ; 0xf50fe
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50ff
+ test AL, strict byte 002h ; a8 02 ; 0xf5101
+ je short 05112h ; 74 0d ; 0xf5103
+ dec bx ; 4b ; 0xf5105
+ test bx, bx ; 85 db ; 0xf5106
+ jbe short 05112h ; 76 08 ; 0xf5108
+ mov AL, strict byte 040h ; b0 40 ; 0xf510a
+ mov dx, 00080h ; ba 80 00 ; 0xf510c
+ out DX, AL ; ee ; 0xf510f
+ jmp short 050fbh ; eb e9 ; 0xf5110
+ test bx, bx ; 85 db ; 0xf5112 keyboard.c:283
+ jne short 0511ch ; 75 06 ; 0xf5114
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf5116
+ call 04f93h ; e8 77 fe ; 0xf5119
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf511c keyboard.c:286
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf511f keyboard.c:287
+ in AL, DX ; ec ; 0xf5122
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5123
+ test AL, strict byte 001h ; a8 01 ; 0xf5125
+ jne short 05136h ; 75 0d ; 0xf5127
+ dec bx ; 4b ; 0xf5129
+ test bx, bx ; 85 db ; 0xf512a
+ jbe short 05136h ; 76 08 ; 0xf512c
+ mov AL, strict byte 041h ; b0 41 ; 0xf512e
+ mov dx, 00080h ; ba 80 00 ; 0xf5130
+ out DX, AL ; ee ; 0xf5133
+ jmp short 0511fh ; eb e9 ; 0xf5134
+ test bx, bx ; 85 db ; 0xf5136 keyboard.c:288
+ jne short 05140h ; 75 06 ; 0xf5138
+ mov ax, strict word 00029h ; b8 29 00 ; 0xf513a
+ call 04f93h ; e8 53 fe ; 0xf513d
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5140 keyboard.c:291
+ in AL, DX ; ec ; 0xf5143
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5144
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5146
+ je short 05151h ; 74 06 ; 0xf5149
+ mov ax, 003e3h ; b8 e3 03 ; 0xf514b keyboard.c:292
+ call 04f93h ; e8 42 fe ; 0xf514e
+ mov AL, strict byte 060h ; b0 60 ; 0xf5151 keyboard.c:296
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5153
+ out DX, AL ; ee ; 0xf5156
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5157 keyboard.c:299
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf515a keyboard.c:300
+ in AL, DX ; ec ; 0xf515d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf515e
+ test AL, strict byte 002h ; a8 02 ; 0xf5160
+ je short 05171h ; 74 0d ; 0xf5162
+ dec bx ; 4b ; 0xf5164
+ test bx, bx ; 85 db ; 0xf5165
+ jbe short 05171h ; 76 08 ; 0xf5167
+ mov AL, strict byte 050h ; b0 50 ; 0xf5169
+ mov dx, 00080h ; ba 80 00 ; 0xf516b
+ out DX, AL ; ee ; 0xf516e
+ jmp short 0515ah ; eb e9 ; 0xf516f
+ test bx, bx ; 85 db ; 0xf5171 keyboard.c:301
+ jne short 0517bh ; 75 06 ; 0xf5173
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf5175
+ call 04f93h ; e8 18 fe ; 0xf5178
+ mov AL, strict byte 065h ; b0 65 ; 0xf517b keyboard.c:304
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf517d
+ out DX, AL ; ee ; 0xf5180
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5181 keyboard.c:307
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5184 keyboard.c:308
+ in AL, DX ; ec ; 0xf5187
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5188
+ test AL, strict byte 002h ; a8 02 ; 0xf518a
+ je short 0519bh ; 74 0d ; 0xf518c
+ dec bx ; 4b ; 0xf518e
+ test bx, bx ; 85 db ; 0xf518f
+ jbe short 0519bh ; 76 08 ; 0xf5191
+ mov AL, strict byte 060h ; b0 60 ; 0xf5193
+ mov dx, 00080h ; ba 80 00 ; 0xf5195
+ out DX, AL ; ee ; 0xf5198
+ jmp short 05184h ; eb e9 ; 0xf5199
+ test bx, bx ; 85 db ; 0xf519b keyboard.c:309
+ jne short 051a5h ; 75 06 ; 0xf519d
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf519f
+ call 04f93h ; e8 ee fd ; 0xf51a2
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf51a5 keyboard.c:312
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf51a7
+ out DX, AL ; ee ; 0xf51aa
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf51ab keyboard.c:315
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf51ae keyboard.c:316
+ in AL, DX ; ec ; 0xf51b1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf51b2
+ test AL, strict byte 002h ; a8 02 ; 0xf51b4
+ je short 051c5h ; 74 0d ; 0xf51b6
+ dec bx ; 4b ; 0xf51b8
+ test bx, bx ; 85 db ; 0xf51b9
+ jbe short 051c5h ; 76 08 ; 0xf51bb
+ mov AL, strict byte 070h ; b0 70 ; 0xf51bd
+ mov dx, 00080h ; ba 80 00 ; 0xf51bf
+ out DX, AL ; ee ; 0xf51c2
+ jmp short 051aeh ; eb e9 ; 0xf51c3
+ test bx, bx ; 85 db ; 0xf51c5 keyboard.c:317
+ jne short 051cfh ; 75 06 ; 0xf51c7
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf51c9
+ call 04f93h ; e8 c4 fd ; 0xf51cc
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf51cf keyboard.c:320
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf51d2 keyboard.c:321
+ in AL, DX ; ec ; 0xf51d5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf51d6
+ test AL, strict byte 001h ; a8 01 ; 0xf51d8
+ jne short 051e9h ; 75 0d ; 0xf51da
+ dec bx ; 4b ; 0xf51dc
+ test bx, bx ; 85 db ; 0xf51dd
+ jbe short 051e9h ; 76 08 ; 0xf51df
+ mov AL, strict byte 071h ; b0 71 ; 0xf51e1
+ mov dx, 00080h ; ba 80 00 ; 0xf51e3
+ out DX, AL ; ee ; 0xf51e6
+ jmp short 051d2h ; eb e9 ; 0xf51e7
+ test bx, bx ; 85 db ; 0xf51e9 keyboard.c:322
+ jne short 051f3h ; 75 06 ; 0xf51eb
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf51ed
+ call 04f93h ; e8 a0 fd ; 0xf51f0
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf51f3 keyboard.c:325
+ in AL, DX ; ec ; 0xf51f6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf51f7
+ cmp ax, 000fah ; 3d fa 00 ; 0xf51f9
+ je short 05204h ; 74 06 ; 0xf51fc
+ mov ax, 003e4h ; b8 e4 03 ; 0xf51fe keyboard.c:326
+ call 04f93h ; e8 8f fd ; 0xf5201
+ mov AL, strict byte 0a8h ; b0 a8 ; 0xf5204 keyboard.c:330
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5206
+ out DX, AL ; ee ; 0xf5209
+ xor ax, ax ; 31 c0 ; 0xf520a keyboard.c:335
+ call 066ach ; e8 9d 14 ; 0xf520c
+ mov sp, bp ; 89 ec ; 0xf520f keyboard.c:336
+ pop bp ; 5d ; 0xf5211
+ retn ; c3 ; 0xf5212
+ ; disGetNextSymbol 0xf5213 LB 0x61a5 -> off=0x0 cb=0000000000000045 uValue=00000000000f3c13 'enqueue_key'
+enqueue_key: ; 0xf5213 LB 0x45
+ push bx ; 53 ; 0xf5213 keyboard.c:339
+ push cx ; 51 ; 0xf5214
+ push bp ; 55 ; 0xf5215
+ mov bp, sp ; 89 e5 ; 0xf5216
+ mov dh, al ; 88 c6 ; 0xf5218
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf521a keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf521d
+ mov es, ax ; 8e c0 ; 0xf5220
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf5222
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5225 keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5228
+ mov bx, ax ; 89 c3 ; 0xf522b keyboard.c:354
+ inc ax ; 40 ; 0xf522d keyboard.c:355
+ inc ax ; 40 ; 0xf522e
+ cmp ax, strict word 0003eh ; 3d 3e 00 ; 0xf522f keyboard.c:356
+ jc short 05237h ; 72 03 ; 0xf5232
+ mov ax, strict word 0001eh ; b8 1e 00 ; 0xf5234 keyboard.c:357
+ cmp ax, cx ; 39 c8 ; 0xf5237 keyboard.c:359
+ jne short 0523fh ; 75 04 ; 0xf5239
+ xor ax, cx ; 31 c8 ; 0xf523b keyboard.c:360
+ jmp short 05254h ; eb 15 ; 0xf523d
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf523f keyboard.c:43
+ mov es, cx ; 8e c1 ; 0xf5242
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5244
+ inc bx ; 43 ; 0xf5247 keyboard.c:363
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5248 keyboard.c:43
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf524b keyboard.c:53
+ mov word [es:bx], ax ; 26 89 07 ; 0xf524e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5251 keyboard.c:365
+ pop bp ; 5d ; 0xf5254 keyboard.c:366
+ pop cx ; 59 ; 0xf5255
+ pop bx ; 5b ; 0xf5256
+ retn ; c3 ; 0xf5257
+ ; disGetNextSymbol 0xf5258 LB 0x6160 -> off=0x35 cb=000000000000040a uValue=00000000000f3c8d 'int09_function'
+ db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
+ db 01dh, 01ch, 055h, 048h, 053h, 016h, 053h, 016h, 053h, 0adh, 053h, 0f1h, 052h, 027h, 054h, 082h
+ db 054h, 001h, 055h, 0e6h, 054h, 07ch, 053h, 016h, 053h, 016h, 053h, 000h, 054h, 008h, 053h, 06ah
+ db 054h, 0d1h, 054h, 0fch, 054h
+int09_function: ; 0xf528d LB 0x40a
+ push bp ; 55 ; 0xf528d keyboard.c:371
+ mov bp, sp ; 89 e5 ; 0xf528e
+ push si ; 56 ; 0xf5290
+ push di ; 57 ; 0xf5291
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf5292
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5295 keyboard.c:382
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf5298
+ test al, al ; 84 c0 ; 0xf529b keyboard.c:384
+ jne short 052bbh ; 75 1c ; 0xf529d
+ mov bx, 00eeah ; bb ea 0e ; 0xf529f keyboard.c:385
+ mov cx, ds ; 8c d9 ; 0xf52a2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf52a4
+ call 018d9h ; e8 2f c6 ; 0xf52a7
+ mov ax, 00597h ; b8 97 05 ; 0xf52aa
+ push ax ; 50 ; 0xf52ad
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf52ae
+ push ax ; 50 ; 0xf52b1
+ call 0191ch ; e8 67 c6 ; 0xf52b2
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf52b5
+ jmp near 053f9h ; e9 3e 01 ; 0xf52b8 keyboard.c:386
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52bb keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52be
+ mov es, ax ; 8e c0 ; 0xf52c1
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf52c3
+ mov dl, ah ; 88 e2 ; 0xf52c6 keyboard.c:39
+ mov bx, 00096h ; bb 96 00 ; 0xf52c8 keyboard.c:38
+ mov dh, byte [es:bx] ; 26 8a 37 ; 0xf52cb
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf52ce keyboard.c:39
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf52d1 keyboard.c:38
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf52d4
+ mov bl, bh ; 88 fb ; 0xf52d7 keyboard.c:39
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52d9 keyboard.c:394
+ push CS ; 0e ; 0xf52dc
+ pop ES ; 07 ; 0xf52dd
+ mov cx, strict word 00012h ; b9 12 00 ; 0xf52de
+ mov di, 05258h ; bf 58 52 ; 0xf52e1
+ repne scasb ; f2 ae ; 0xf52e4
+ sal cx, 1 ; d1 e1 ; 0xf52e6
+ mov di, cx ; 89 cf ; 0xf52e8
+ mov cx, word [cs:di+05269h] ; 2e 8b 8d 69 52 ; 0xf52ea
+ jmp cx ; ff e1 ; 0xf52ef
+ xor bl, 040h ; 80 f3 40 ; 0xf52f1 keyboard.c:396
+ mov si, strict word 00017h ; be 17 00 ; 0xf52f4 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52f7
+ mov es, ax ; 8e c0 ; 0xf52fa
+ mov byte [es:si], bl ; 26 88 1c ; 0xf52fc
+ or dl, 040h ; 80 ca 40 ; 0xf52ff keyboard.c:398
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5302 keyboard.c:43
+ jmp near 054f6h ; e9 ee 01 ; 0xf5305
+ and dl, 0bfh ; 80 e2 bf ; 0xf5308 keyboard.c:402
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf530b keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf530e
+ mov es, ax ; 8e c0 ; 0xf5311
+ jmp near 054f6h ; e9 e0 01 ; 0xf5313
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf5316 keyboard.c:411
+ jne short 0537ah ; 75 5e ; 0xf531a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf531c keyboard.c:412
+ and AL, strict byte 07fh ; 24 7f ; 0xf531f
+ cmp AL, strict byte 02ah ; 3c 2a ; 0xf5321
+ jne short 0532ah ; 75 05 ; 0xf5323
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf5325
+ jmp short 0532dh ; eb 03 ; 0xf5328
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf532a
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf532d keyboard.c:413
+ je short 05339h ; 74 06 ; 0xf5331
+ not al ; f6 d0 ; 0xf5333 keyboard.c:414
+ and bl, al ; 20 c3 ; 0xf5335
+ jmp short 0533bh ; eb 02 ; 0xf5337 keyboard.c:415
+ or bl, al ; 08 c3 ; 0xf5339 keyboard.c:416
+ mov si, strict word 00017h ; be 17 00 ; 0xf533b keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf533e
+ mov es, ax ; 8e c0 ; 0xf5341
+ mov byte [es:si], bl ; 26 88 1c ; 0xf5343
+ jmp short 0537ah ; eb 32 ; 0xf5346 keyboard.c:419
+ test dh, 001h ; f6 c6 01 ; 0xf5348 keyboard.c:422
+ jne short 053abh ; 75 5e ; 0xf534b
+ or bl, 004h ; 80 cb 04 ; 0xf534d keyboard.c:423
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf5350 keyboard.c:41
+ mov ax, strict word 00017h ; b8 17 00 ; 0xf5353
+ mov dh, bl ; 88 de ; 0xf5356
+ mov bx, ax ; 89 c3 ; 0xf5358 keyboard.c:43
+ mov es, cx ; 8e c1 ; 0xf535a
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf535c
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf535f keyboard.c:425
+ je short 05371h ; 74 0c ; 0xf5363
+ or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xf5365 keyboard.c:426
+ mov bx, 00096h ; bb 96 00 ; 0xf5369 keyboard.c:41
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf536c
+ jmp short 05377h ; eb 06 ; 0xf536f keyboard.c:428
+ or dl, 001h ; 80 ca 01 ; 0xf5371 keyboard.c:429
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5374 keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5377 keyboard.c:43
+ jmp short 053abh ; eb 2f ; 0xf537a keyboard.c:433
+ test dh, 001h ; f6 c6 01 ; 0xf537c keyboard.c:435
+ jne short 053dah ; 75 59 ; 0xf537f
+ and bl, 0fbh ; 80 e3 fb ; 0xf5381 keyboard.c:436
+ mov si, strict word 00017h ; be 17 00 ; 0xf5384 keyboard.c:43
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf5387
+ mov es, cx ; 8e c1 ; 0xf538a
+ mov byte [es:si], bl ; 26 88 1c ; 0xf538c
+ test dh, 002h ; f6 c6 02 ; 0xf538f keyboard.c:438
+ je short 053a2h ; 74 0e ; 0xf5392
+ and dh, 0fbh ; 80 e6 fb ; 0xf5394 keyboard.c:439
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf5397
+ mov bx, 00096h ; bb 96 00 ; 0xf539a keyboard.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf539d
+ jmp short 053dah ; eb 38 ; 0xf53a0 keyboard.c:441
+ and dl, 0feh ; 80 e2 fe ; 0xf53a2 keyboard.c:442
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53a5 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53a8
+ jmp short 053dah ; eb 2d ; 0xf53ab keyboard.c:446
+ or bl, 008h ; 80 cb 08 ; 0xf53ad keyboard.c:449
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53b0 keyboard.c:41
+ mov cx, strict word 00017h ; b9 17 00 ; 0xf53b3
+ mov dh, bl ; 88 de ; 0xf53b6
+ mov bx, cx ; 89 cb ; 0xf53b8 keyboard.c:43
+ mov es, ax ; 8e c0 ; 0xf53ba
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf53bc
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf53bf keyboard.c:451
+ je short 053d1h ; 74 0c ; 0xf53c3
+ or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xf53c5 keyboard.c:452
+ mov bx, 00096h ; bb 96 00 ; 0xf53c9 keyboard.c:41
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf53cc
+ jmp short 053d7h ; eb 06 ; 0xf53cf keyboard.c:454
+ or dl, 002h ; 80 ca 02 ; 0xf53d1 keyboard.c:455
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53d4 keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53d7 keyboard.c:43
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf53da keyboard.c:458
+ and AL, strict byte 07fh ; 24 7f ; 0xf53dd
+ cmp AL, strict byte 01dh ; 3c 1d ; 0xf53df
+ je short 053e7h ; 74 04 ; 0xf53e1
+ and byte [bp-008h], 0feh ; 80 66 f8 fe ; 0xf53e3
+ and byte [bp-008h], 0fdh ; 80 66 f8 fd ; 0xf53e7
+ mov bx, 00096h ; bb 96 00 ; 0xf53eb
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53ee
+ mov es, ax ; 8e c0 ; 0xf53f1
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf53f3
+ mov byte [es:bx], al ; 26 88 07 ; 0xf53f6
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf53f9
+ pop di ; 5f ; 0xf53fc
+ pop si ; 5e ; 0xf53fd
+ pop bp ; 5d ; 0xf53fe
+ retn ; c3 ; 0xf53ff
+ and bl, 0f7h ; 80 e3 f7 ; 0xf5400 keyboard.c:460
+ mov si, strict word 00017h ; be 17 00 ; 0xf5403 keyboard.c:43
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf5406
+ mov es, cx ; 8e c1 ; 0xf5409
+ mov byte [es:si], bl ; 26 88 1c ; 0xf540b
+ test dh, 002h ; f6 c6 02 ; 0xf540e keyboard.c:462
+ je short 0541ch ; 74 09 ; 0xf5411
+ and dh, 0f7h ; 80 e6 f7 ; 0xf5413 keyboard.c:463
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf5416
+ jmp near 0539ah ; e9 7e ff ; 0xf5419 keyboard.c:464
+ and dl, 0fdh ; 80 e2 fd ; 0xf541c keyboard.c:466
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf541f keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5422
+ jmp short 053dah ; eb b3 ; 0xf5425 keyboard.c:469
+ test dh, 003h ; f6 c6 03 ; 0xf5427 keyboard.c:472
+ jne short 05440h ; 75 14 ; 0xf542a
+ or dl, 020h ; 80 ca 20 ; 0xf542c keyboard.c:474
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf542f keyboard.c:41
+ mov si, strict word 00018h ; be 18 00 ; 0xf5432
+ mov es, ax ; 8e c0 ; 0xf5435 keyboard.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf5437
+ xor bl, 020h ; 80 f3 20 ; 0xf543a keyboard.c:476
+ jmp near 054c5h ; e9 85 00 ; 0xf543d keyboard.c:477
+ or dl, 008h ; 80 ca 08 ; 0xf5440 keyboard.c:480
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5443 keyboard.c:41
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5446
+ mov es, ax ; 8e c0 ; 0xf5449 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf544b
+ mov ax, 000aeh ; b8 ae 00 ; 0xf544e keyboard.c:484
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5451
+ out DX, AL ; ee ; 0xf5454
+ call 0e034h ; e8 dc 8b ; 0xf5455 keyboard.c:485
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5458 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf545b
+ mov es, ax ; 8e c0 ; 0xf545e
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5460
+ test AL, strict byte 008h ; a8 08 ; 0xf5463 keyboard.c:39
+ jne short 05458h ; 75 f1 ; 0xf5465
+ jmp near 053dah ; e9 70 ff ; 0xf5467 keyboard.c:492
+ test dh, 003h ; f6 c6 03 ; 0xf546a keyboard.c:494
+ je short 05472h ; 74 03 ; 0xf546d
+ jmp near 053dah ; e9 68 ff ; 0xf546f
+ and dl, 0dfh ; 80 e2 df ; 0xf5472 keyboard.c:495
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5475 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5478
+ mov es, ax ; 8e c0 ; 0xf547b
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf547d
+ jmp short 0546fh ; eb ed ; 0xf5480 keyboard.c:498
+ test dh, 002h ; f6 c6 02 ; 0xf5482 keyboard.c:501
+ je short 054b4h ; 74 2d ; 0xf5485
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5487 keyboard.c:46
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf548a
+ mov es, ax ; 8e c0 ; 0xf548d keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf548f
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5492 keyboard.c:51
+ mov word [es:bx], ax ; 26 89 07 ; 0xf5495 keyboard.c:53
+ mov bx, strict word 00071h ; bb 71 00 ; 0xf5498 keyboard.c:41
+ mov AL, strict byte 080h ; b0 80 ; 0xf549b
+ mov byte [es:bx], al ; 26 88 07 ; 0xf549d keyboard.c:43
+ mov ax, 000aeh ; b8 ae 00 ; 0xf54a0 keyboard.c:506
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf54a3
+ out DX, AL ; ee ; 0xf54a6
+ push bp ; 55 ; 0xf54a7 keyboard.c:507
+ int 01bh ; cd 1b ; 0xf54a8
+ pop bp ; 5d ; 0xf54aa
+ xor dx, dx ; 31 d2 ; 0xf54ab keyboard.c:508
+ xor ax, ax ; 31 c0 ; 0xf54ad
+ call 05213h ; e8 61 fd ; 0xf54af
+ jmp short 0546fh ; eb bb ; 0xf54b2 keyboard.c:509
+ or dl, 010h ; 80 ca 10 ; 0xf54b4 keyboard.c:510
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54b7 keyboard.c:41
+ mov es, ax ; 8e c0 ; 0xf54ba
+ mov si, strict word 00018h ; be 18 00 ; 0xf54bc
+ mov byte [es:si], dl ; 26 88 14 ; 0xf54bf keyboard.c:43
+ xor bl, 010h ; 80 f3 10 ; 0xf54c2 keyboard.c:512
+ mov ax, strict word 00017h ; b8 17 00 ; 0xf54c5 keyboard.c:41
+ mov dl, bl ; 88 da ; 0xf54c8
+ mov bx, ax ; 89 c3 ; 0xf54ca keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54cc
+ jmp short 0546fh ; eb 9e ; 0xf54cf keyboard.c:515
+ test dh, 002h ; f6 c6 02 ; 0xf54d1 keyboard.c:518
+ jne short 0546fh ; 75 99 ; 0xf54d4
+ and dl, 0efh ; 80 e2 ef ; 0xf54d6 keyboard.c:519
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54d9 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54dc
+ mov es, ax ; 8e c0 ; 0xf54df
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54e1
+ jmp short 0546fh ; eb 89 ; 0xf54e4 keyboard.c:522
+ test ah, 004h ; f6 c4 04 ; 0xf54e6 keyboard.c:525
+ jne short 0546fh ; 75 84 ; 0xf54e9
+ or dl, 004h ; 80 ca 04 ; 0xf54eb keyboard.c:526
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54ee keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54f1
+ mov es, ax ; 8e c0 ; 0xf54f4
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54f6
+ jmp near 053dah ; e9 de fe ; 0xf54f9 keyboard.c:530
+ and dl, 0fbh ; 80 e2 fb ; 0xf54fc keyboard.c:533
+ jmp short 054eeh ; eb ed ; 0xf54ff keyboard.c:534
+ mov al, bh ; 88 f8 ; 0xf5501 keyboard.c:539
+ and AL, strict byte 00ch ; 24 0c ; 0xf5503
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf5505
+ jne short 0551ch ; 75 13 ; 0xf5507
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5509 keyboard.c:51
+ mov si, strict word 00072h ; be 72 00 ; 0xf550c
+ mov cx, 01234h ; b9 34 12 ; 0xf550f
+ mov es, ax ; 8e c0 ; 0xf5512 keyboard.c:53
+ mov word [es:si], cx ; 26 89 0c ; 0xf5514
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf5517 keyboard.c:542
+ test dl, 008h ; f6 c2 08 ; 0xf551c keyboard.c:548
+ je short 05532h ; 74 11 ; 0xf551f
+ and dl, 0f7h ; 80 e2 f7 ; 0xf5521 keyboard.c:550
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5524 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5527
+ mov es, ax ; 8e c0 ; 0xf552a
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf552c
+ jmp near 053f9h ; e9 c7 fe ; 0xf552f keyboard.c:552
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5532 keyboard.c:555
+ test AL, strict byte 080h ; a8 80 ; 0xf5535
+ je short 05567h ; 74 2e ; 0xf5537
+ cmp AL, strict byte 0fah ; 3c fa ; 0xf5539 keyboard.c:557
+ jne short 0554dh ; 75 10 ; 0xf553b
+ mov bx, 00097h ; bb 97 00 ; 0xf553d keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5540
+ mov es, ax ; 8e c0 ; 0xf5543
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5545
+ or ah, 010h ; 80 cc 10 ; 0xf5548 keyboard.c:39
+ jmp short 05562h ; eb 15 ; 0xf554b keyboard.c:560
+ cmp AL, strict byte 0feh ; 3c fe ; 0xf554d
+ je short 05554h ; 74 03 ; 0xf554f
+ jmp near 053dah ; e9 86 fe ; 0xf5551
+ mov bx, 00097h ; bb 97 00 ; 0xf5554 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5557
+ mov es, ax ; 8e c0 ; 0xf555a
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf555c
+ or ah, 020h ; 80 cc 20 ; 0xf555f keyboard.c:39
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf5562 keyboard.c:43
+ jmp short 05551h ; eb ea ; 0xf5565 keyboard.c:564
+ cmp byte [bp-006h], 058h ; 80 7e fa 58 ; 0xf5567 keyboard.c:566
+ jbe short 0558fh ; 76 22 ; 0xf556b
+ mov bx, 00eeah ; bb ea 0e ; 0xf556d keyboard.c:567
+ mov cx, ds ; 8c d9 ; 0xf5570
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5572
+ call 018d9h ; e8 61 c3 ; 0xf5575
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5578
+ xor ah, ah ; 30 e4 ; 0xf557b
+ push ax ; 50 ; 0xf557d
+ mov ax, 005b1h ; b8 b1 05 ; 0xf557e
+ push ax ; 50 ; 0xf5581
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5582
+ push ax ; 50 ; 0xf5585
+ call 0191ch ; e8 93 c3 ; 0xf5586
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf5589
+ jmp near 053f9h ; e9 6a fe ; 0xf558c keyboard.c:568
+ test bl, 008h ; f6 c3 08 ; 0xf558f keyboard.c:570
+ je short 055aeh ; 74 1a ; 0xf5592
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5594 keyboard.c:571
+ xor ah, ah ; 30 e4 ; 0xf5597
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5599
+ imul dx ; f7 ea ; 0xf559c
+ mov si, ax ; 89 c6 ; 0xf559e
+ mov al, byte [si+00f3eh] ; 8a 84 3e 0f ; 0xf55a0
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf55a4
+ mov al, byte [si+00f3fh] ; 8a 84 3f 0f ; 0xf55a7 keyboard.c:572
+ jmp near 05662h ; e9 b4 00 ; 0xf55ab keyboard.c:573
+ test bl, 004h ; f6 c3 04 ; 0xf55ae
+ je short 055cdh ; 74 1a ; 0xf55b1
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55b3 keyboard.c:574
+ xor ah, ah ; 30 e4 ; 0xf55b6
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf55b8
+ imul dx ; f7 ea ; 0xf55bb
+ mov si, ax ; 89 c6 ; 0xf55bd
+ mov al, byte [si+00f3ch] ; 8a 84 3c 0f ; 0xf55bf
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf55c3
+ mov al, byte [si+00f3dh] ; 8a 84 3d 0f ; 0xf55c6 keyboard.c:575
+ jmp near 05662h ; e9 95 00 ; 0xf55ca keyboard.c:576
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf55cd
+ and AL, strict byte 002h ; 24 02 ; 0xf55d0
+ test al, al ; 84 c0 ; 0xf55d2
+ jbe short 055f4h ; 76 1e ; 0xf55d4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55d6
+ cmp AL, strict byte 047h ; 3c 47 ; 0xf55d9
+ jc short 055f4h ; 72 17 ; 0xf55db
+ cmp AL, strict byte 053h ; 3c 53 ; 0xf55dd
+ jnbe short 055f4h ; 77 13 ; 0xf55df
+ mov byte [bp-00ah], 0e0h ; c6 46 f6 e0 ; 0xf55e1 keyboard.c:578
+ xor ah, ah ; 30 e4 ; 0xf55e5 keyboard.c:579
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf55e7
+ imul dx ; f7 ea ; 0xf55ea
+ mov bx, ax ; 89 c3 ; 0xf55ec
+ mov al, byte [bx+00f39h] ; 8a 87 39 0f ; 0xf55ee
+ jmp short 05662h ; eb 6e ; 0xf55f2 keyboard.c:580
+ test bl, 003h ; f6 c3 03 ; 0xf55f4
+ je short 05630h ; 74 37 ; 0xf55f7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55f9 keyboard.c:584
+ xor ah, ah ; 30 e4 ; 0xf55fc
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf55fe
+ imul dx ; f7 ea ; 0xf5601
+ mov si, ax ; 89 c6 ; 0xf5603
+ mov al, byte [si+00f40h] ; 8a 84 40 0f ; 0xf5605
+ xor ah, ah ; 30 e4 ; 0xf5609
+ mov dl, bl ; 88 da ; 0xf560b
+ xor dh, dh ; 30 f6 ; 0xf560d
+ test dx, ax ; 85 c2 ; 0xf560f
+ je short 05620h ; 74 0d ; 0xf5611
+ mov al, byte [si+00f38h] ; 8a 84 38 0f ; 0xf5613 keyboard.c:585
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5617
+ mov al, byte [si+00f39h] ; 8a 84 39 0f ; 0xf561a keyboard.c:586
+ jmp short 0562bh ; eb 0b ; 0xf561e keyboard.c:587
+ mov al, byte [si+00f3ah] ; 8a 84 3a 0f ; 0xf5620 keyboard.c:588
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5624
+ mov al, byte [si+00f3bh] ; 8a 84 3b 0f ; 0xf5627 keyboard.c:589
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf562b
+ jmp short 05665h ; eb 35 ; 0xf562e keyboard.c:591
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5630 keyboard.c:593
+ xor ah, ah ; 30 e4 ; 0xf5633
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5635
+ imul dx ; f7 ea ; 0xf5638
+ mov si, ax ; 89 c6 ; 0xf563a
+ mov dl, byte [si+00f40h] ; 8a 94 40 0f ; 0xf563c
+ xor dh, dh ; 30 f6 ; 0xf5640
+ mov al, bl ; 88 d8 ; 0xf5642
+ xor ah, ah ; 30 e4 ; 0xf5644
+ test ax, dx ; 85 d0 ; 0xf5646
+ je short 05657h ; 74 0d ; 0xf5648
+ mov al, byte [si+00f3ah] ; 8a 84 3a 0f ; 0xf564a keyboard.c:594
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf564e
+ mov al, byte [si+00f3bh] ; 8a 84 3b 0f ; 0xf5651 keyboard.c:595
+ jmp short 05662h ; eb 0b ; 0xf5655 keyboard.c:596
+ mov al, byte [si+00f38h] ; 8a 84 38 0f ; 0xf5657 keyboard.c:597
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf565b
+ mov al, byte [si+00f39h] ; 8a 84 39 0f ; 0xf565e keyboard.c:598
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf5662
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5665 keyboard.c:601
+ jne short 0568ah ; 75 1f ; 0xf5669
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf566b
+ jne short 0568ah ; 75 19 ; 0xf566f
+ mov bx, 00eeah ; bb ea 0e ; 0xf5671 keyboard.c:602
+ mov cx, ds ; 8c d9 ; 0xf5674
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5676
+ call 018d9h ; e8 5d c2 ; 0xf5679
+ mov ax, 005e8h ; b8 e8 05 ; 0xf567c
+ push ax ; 50 ; 0xf567f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5680
+ push ax ; 50 ; 0xf5683
+ call 0191ch ; e8 95 c2 ; 0xf5684
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5687
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf568a keyboard.c:604
+ xor dh, dh ; 30 f6 ; 0xf568d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf568f
+ xor ah, ah ; 30 e4 ; 0xf5692
+ jmp near 054afh ; e9 18 fe ; 0xf5694
+ ; disGetNextSymbol 0xf5697 LB 0x5d21 -> off=0x0 cb=0000000000000061 uValue=00000000000f4097 'dequeue_key'
+dequeue_key: ; 0xf5697 LB 0x61
+ push si ; 56 ; 0xf5697 keyboard.c:614
+ push di ; 57 ; 0xf5698
+ push bp ; 55 ; 0xf5699
+ mov bp, sp ; 89 e5 ; 0xf569a
+ push ax ; 50 ; 0xf569c
+ mov si, ax ; 89 c6 ; 0xf569d
+ mov word [bp-002h], bx ; 89 5e fe ; 0xf569f
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf56a2 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf56a5
+ mov es, ax ; 8e c0 ; 0xf56a8
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf56aa
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf56ad keyboard.c:48
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf56b0
+ cmp bx, ax ; 39 c3 ; 0xf56b3 keyboard.c:630
+ je short 056eeh ; 74 37 ; 0xf56b5
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf56b7 keyboard.c:38
+ lea di, [bx+001h] ; 8d 7f 01 ; 0xf56ba keyboard.c:632
+ mov ah, byte [es:di] ; 26 8a 25 ; 0xf56bd keyboard.c:38
+ mov es, cx ; 8e c1 ; 0xf56c0 keyboard.c:633
+ mov di, word [bp-002h] ; 8b 7e fe ; 0xf56c2
+ mov byte [es:di], al ; 26 88 05 ; 0xf56c5
+ mov es, dx ; 8e c2 ; 0xf56c8 keyboard.c:634
+ mov byte [es:si], ah ; 26 88 24 ; 0xf56ca
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf56cd keyboard.c:637
+ je short 056e9h ; 74 16 ; 0xf56d1
+ lea si, [bx+002h] ; 8d 77 02 ; 0xf56d3 keyboard.c:638
+ cmp si, strict byte 0003eh ; 83 fe 3e ; 0xf56d6 keyboard.c:639
+ jc short 056deh ; 72 03 ; 0xf56d9
+ mov si, strict word 0001eh ; be 1e 00 ; 0xf56db keyboard.c:640
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf56de keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf56e1
+ mov es, ax ; 8e c0 ; 0xf56e4
+ mov word [es:bx], si ; 26 89 37 ; 0xf56e6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf56e9 keyboard.c:643
+ jmp short 056f0h ; eb 02 ; 0xf56ec
+ xor ax, ax ; 31 c0 ; 0xf56ee keyboard.c:646
+ mov sp, bp ; 89 ec ; 0xf56f0 keyboard.c:648
+ pop bp ; 5d ; 0xf56f2
+ pop di ; 5f ; 0xf56f3
+ pop si ; 5e ; 0xf56f4
+ retn 00002h ; c2 02 00 ; 0xf56f5
+ ; disGetNextSymbol 0xf56f8 LB 0x5cc0 -> off=0x23 cb=00000000000002f4 uValue=00000000000f411b 'int16_function'
+ db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 01dh, 058h, 0d8h, 057h, 06eh
+ db 058h, 0b3h, 058h, 0c8h, 058h, 0efh, 058h, 0f9h, 058h, 068h, 059h, 0a4h, 059h, 0d5h, 059h, 004h
+ db 05ah, 067h, 058h
+int16_function: ; 0xf571b LB 0x2f4
+ push bp ; 55 ; 0xf571b keyboard.c:665
+ mov bp, sp ; 89 e5 ; 0xf571c
+ push si ; 56 ; 0xf571e
+ push di ; 57 ; 0xf571f
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf5720
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5723 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5726
+ mov es, ax ; 8e c0 ; 0xf5729
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf572b
+ mov bh, dl ; 88 d7 ; 0xf572e keyboard.c:39
+ mov si, 00097h ; be 97 00 ; 0xf5730 keyboard.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5733
+ mov bl, al ; 88 c3 ; 0xf5736 keyboard.c:39
+ xor dh, dh ; 30 f6 ; 0xf5738 keyboard.c:674
+ mov CL, strict byte 004h ; b1 04 ; 0xf573a
+ sar dx, CL ; d3 fa ; 0xf573c
+ and dl, 007h ; 80 e2 07 ; 0xf573e
+ and AL, strict byte 007h ; 24 07 ; 0xf5741
+ xor ah, ah ; 30 e4 ; 0xf5743
+ xor al, dl ; 30 d0 ; 0xf5745
+ test ax, ax ; 85 c0 ; 0xf5747
+ je short 057b7h ; 74 6c ; 0xf5749
+ cli ; fa ; 0xf574b keyboard.c:675
+ mov AL, strict byte 0edh ; b0 ed ; 0xf574c keyboard.c:676
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf574e
+ out DX, AL ; ee ; 0xf5751
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5752 keyboard.c:677
+ in AL, DX ; ec ; 0xf5755
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5756
+ test AL, strict byte 001h ; a8 01 ; 0xf5758
+ jne short 05764h ; 75 08 ; 0xf575a
+ mov AL, strict byte 021h ; b0 21 ; 0xf575c
+ mov dx, 00080h ; ba 80 00 ; 0xf575e
+ out DX, AL ; ee ; 0xf5761
+ jmp short 05752h ; eb ee ; 0xf5762
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5764 keyboard.c:678
+ in AL, DX ; ec ; 0xf5767
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5768
+ cmp ax, 000fah ; 3d fa 00 ; 0xf576a
+ jne short 057b6h ; 75 47 ; 0xf576d
+ and bl, 0c8h ; 80 e3 c8 ; 0xf576f keyboard.c:679
+ mov al, bh ; 88 f8 ; 0xf5772 keyboard.c:680
+ xor ah, ah ; 30 e4 ; 0xf5774
+ mov CL, strict byte 004h ; b1 04 ; 0xf5776
+ sar ax, CL ; d3 f8 ; 0xf5778
+ mov cx, ax ; 89 c1 ; 0xf577a
+ xor ch, ah ; 30 e5 ; 0xf577c
+ and cl, 007h ; 80 e1 07 ; 0xf577e
+ mov al, bl ; 88 d8 ; 0xf5781
+ xor ah, ah ; 30 e4 ; 0xf5783
+ mov dx, ax ; 89 c2 ; 0xf5785
+ or dx, cx ; 09 ca ; 0xf5787
+ mov bl, dl ; 88 d3 ; 0xf5789
+ mov al, dl ; 88 d0 ; 0xf578b keyboard.c:681
+ and AL, strict byte 007h ; 24 07 ; 0xf578d
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf578f
+ out DX, AL ; ee ; 0xf5792
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5793 keyboard.c:682
+ in AL, DX ; ec ; 0xf5796
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5797
+ test AL, strict byte 001h ; a8 01 ; 0xf5799
+ jne short 057a5h ; 75 08 ; 0xf579b
+ mov AL, strict byte 021h ; b0 21 ; 0xf579d keyboard.c:683
+ mov dx, 00080h ; ba 80 00 ; 0xf579f
+ out DX, AL ; ee ; 0xf57a2
+ jmp short 05793h ; eb ee ; 0xf57a3
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf57a5 keyboard.c:684
+ in AL, DX ; ec ; 0xf57a8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57a9
+ mov si, 00097h ; be 97 00 ; 0xf57ab keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf57ae
+ mov es, ax ; 8e c0 ; 0xf57b1
+ mov byte [es:si], bl ; 26 88 1c ; 0xf57b3
+ sti ; fb ; 0xf57b6 keyboard.c:687
+ mov CL, strict byte 008h ; b1 08 ; 0xf57b7 keyboard.c:690
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf57b9
+ shr ax, CL ; d3 e8 ; 0xf57bc
+ cmp ax, 000a2h ; 3d a2 00 ; 0xf57be
+ jnbe short 0581dh ; 77 5a ; 0xf57c1
+ push CS ; 0e ; 0xf57c3
+ pop ES ; 07 ; 0xf57c4
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf57c5
+ mov di, 056f8h ; bf f8 56 ; 0xf57c8
+ repne scasb ; f2 ae ; 0xf57cb
+ sal cx, 1 ; d1 e1 ; 0xf57cd
+ mov di, cx ; 89 cf ; 0xf57cf
+ mov ax, word [cs:di+05703h] ; 2e 8b 85 03 57 ; 0xf57d1
+ jmp ax ; ff e0 ; 0xf57d6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf57d8 keyboard.c:692
+ push ax ; 50 ; 0xf57db
+ mov cx, ss ; 8c d1 ; 0xf57dc
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf57de
+ mov dx, ss ; 8c d2 ; 0xf57e1
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf57e3
+ call 05697h ; e8 ae fe ; 0xf57e6
+ test ax, ax ; 85 c0 ; 0xf57e9
+ jne short 057fbh ; 75 0e ; 0xf57eb
+ mov ax, 0061fh ; b8 1f 06 ; 0xf57ed keyboard.c:693
+ push ax ; 50 ; 0xf57f0
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf57f1
+ push ax ; 50 ; 0xf57f4
+ call 0191ch ; e8 24 c1 ; 0xf57f5
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf57f8
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf57fb keyboard.c:695
+ je short 05807h ; 74 06 ; 0xf57ff
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5801
+ je short 0580dh ; 74 06 ; 0xf5805
+ cmp byte [bp-008h], 0e0h ; 80 7e f8 e0 ; 0xf5807 keyboard.c:697
+ jne short 05811h ; 75 04 ; 0xf580b
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf580d keyboard.c:698
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xf5811 keyboard.c:699
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5814
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf5817
+ jmp near 05867h ; e9 4a 00 ; 0xf581a keyboard.c:700
+ mov bx, 00eeah ; bb ea 0e ; 0xf581d
+ mov cx, ds ; 8c d9 ; 0xf5820
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5822
+ call 018d9h ; e8 b1 c0 ; 0xf5825
+ mov CL, strict byte 008h ; b1 08 ; 0xf5828
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf582a
+ shr ax, CL ; d3 e8 ; 0xf582d
+ push ax ; 50 ; 0xf582f
+ mov ax, 00643h ; b8 43 06 ; 0xf5830
+ push ax ; 50 ; 0xf5833
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5834
+ push ax ; 50 ; 0xf5837
+ call 0191ch ; e8 e1 c0 ; 0xf5838
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf583b
+ mov bx, 00eeah ; bb ea 0e ; 0xf583e
+ mov cx, ds ; 8c d9 ; 0xf5841
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5843
+ call 018d9h ; e8 90 c0 ; 0xf5846
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5849
+ push ax ; 50 ; 0xf584c
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf584d
+ push ax ; 50 ; 0xf5850
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf5851
+ push ax ; 50 ; 0xf5854
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5855
+ push ax ; 50 ; 0xf5858
+ mov ax, 0066bh ; b8 6b 06 ; 0xf5859
+ push ax ; 50 ; 0xf585c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf585d
+ push ax ; 50 ; 0xf5860
+ call 0191ch ; e8 b8 c0 ; 0xf5861
+ add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5864
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf5867
+ pop di ; 5f ; 0xf586a
+ pop si ; 5e ; 0xf586b
+ pop bp ; 5d ; 0xf586c
+ retn ; c3 ; 0xf586d
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf586e keyboard.c:704
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf5871
+ xor ax, ax ; 31 c0 ; 0xf5874 keyboard.c:705
+ push ax ; 50 ; 0xf5876
+ mov cx, ss ; 8c d1 ; 0xf5877
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf5879
+ mov dx, ss ; 8c d2 ; 0xf587c
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf587e
+ call 05697h ; e8 13 fe ; 0xf5881
+ test ax, ax ; 85 c0 ; 0xf5884
+ jne short 0588eh ; 75 06 ; 0xf5886
+ or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf5888 keyboard.c:706
+ jmp short 05867h ; eb d9 ; 0xf588c keyboard.c:707
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf588e keyboard.c:709
+ je short 0589ah ; 74 06 ; 0xf5892
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5894
+ je short 058a0h ; 74 06 ; 0xf5898
+ cmp byte [bp-008h], 0e0h ; 80 7e f8 e0 ; 0xf589a keyboard.c:711
+ jne short 058a4h ; 75 04 ; 0xf589e
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf58a0 keyboard.c:712
+ mov dh, byte [bp-00ah] ; 8a 76 f6 ; 0xf58a4 keyboard.c:713
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf58a7
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf58aa
+ and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf58ad keyboard.c:714
+ jmp short 05867h ; eb b4 ; 0xf58b1 keyboard.c:715
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf58b3 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf58b6
+ mov es, ax ; 8e c0 ; 0xf58b9
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf58bb
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf58be keyboard.c:719
+ mov dl, al ; 88 c2 ; 0xf58c1
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf58c3
+ jmp short 05867h ; eb 9f ; 0xf58c6 keyboard.c:720
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf58c8 keyboard.c:723
+ xor dh, dh ; 30 f6 ; 0xf58cb
+ mov CL, strict byte 008h ; b1 08 ; 0xf58cd
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf58cf
+ shr ax, CL ; d3 e8 ; 0xf58d2
+ xor ah, ah ; 30 e4 ; 0xf58d4
+ call 05213h ; e8 3a f9 ; 0xf58d6
+ test ax, ax ; 85 c0 ; 0xf58d9
+ jne short 058e7h ; 75 0a ; 0xf58db
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58dd keyboard.c:724
+ xor al, al ; 30 c0 ; 0xf58e0
+ or AL, strict byte 001h ; 0c 01 ; 0xf58e2
+ jmp near 05817h ; e9 30 ff ; 0xf58e4
+ and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf58e7 keyboard.c:727
+ jmp near 05867h ; e9 78 ff ; 0xf58ec keyboard.c:729
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58ef keyboard.c:742
+ xor al, al ; 30 c0 ; 0xf58f2
+ or AL, strict byte 030h ; 0c 30 ; 0xf58f4
+ jmp near 05817h ; e9 1e ff ; 0xf58f6
+ mov byte [bp-006h], 002h ; c6 46 fa 02 ; 0xf58f9 keyboard.c:746
+ xor cx, cx ; 31 c9 ; 0xf58fd keyboard.c:747
+ cli ; fa ; 0xf58ff keyboard.c:749
+ mov AL, strict byte 0f2h ; b0 f2 ; 0xf5900 keyboard.c:750
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5902
+ out DX, AL ; ee ; 0xf5905
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5906 keyboard.c:752
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5909 keyboard.c:753
+ in AL, DX ; ec ; 0xf590c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf590d
+ test AL, strict byte 001h ; a8 01 ; 0xf590f
+ jne short 05920h ; 75 0d ; 0xf5911
+ dec bx ; 4b ; 0xf5913
+ test bx, bx ; 85 db ; 0xf5914
+ jbe short 05920h ; 76 08 ; 0xf5916
+ mov dx, 00080h ; ba 80 00 ; 0xf5918 keyboard.c:754
+ in AL, DX ; ec ; 0xf591b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf591c
+ jmp short 05909h ; eb e9 ; 0xf591e
+ test bx, bx ; 85 db ; 0xf5920 keyboard.c:755
+ jbe short 05962h ; 76 3e ; 0xf5922
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5924 keyboard.c:756
+ in AL, DX ; ec ; 0xf5927
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5928
+ cmp ax, 000fah ; 3d fa 00 ; 0xf592a
+ jne short 05962h ; 75 33 ; 0xf592d
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf592f keyboard.c:758
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5932 keyboard.c:759
+ in AL, DX ; ec ; 0xf5935
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5936
+ test AL, strict byte 001h ; a8 01 ; 0xf5938
+ jne short 05949h ; 75 0d ; 0xf593a
+ dec bx ; 4b ; 0xf593c
+ test bx, bx ; 85 db ; 0xf593d
+ jbe short 05949h ; 76 08 ; 0xf593f
+ mov dx, 00080h ; ba 80 00 ; 0xf5941 keyboard.c:760
+ in AL, DX ; ec ; 0xf5944
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5945
+ jmp short 05932h ; eb e9 ; 0xf5947
+ test bx, bx ; 85 db ; 0xf5949 keyboard.c:761
+ jbe short 05959h ; 76 0c ; 0xf594b
+ mov bl, ch ; 88 eb ; 0xf594d keyboard.c:762
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf594f keyboard.c:763
+ in AL, DX ; ec ; 0xf5952
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5953
+ mov ch, al ; 88 c5 ; 0xf5955
+ mov cl, bl ; 88 d9 ; 0xf5957
+ dec byte [bp-006h] ; fe 4e fa ; 0xf5959 keyboard.c:765
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf595c
+ jnbe short 0592fh ; 77 cd ; 0xf5960
+ mov word [bp+00ch], cx ; 89 4e 0c ; 0xf5962 keyboard.c:768
+ jmp near 05867h ; e9 ff fe ; 0xf5965 keyboard.c:769
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5968 keyboard.c:772
+ push ax ; 50 ; 0xf596b
+ mov cx, ss ; 8c d1 ; 0xf596c
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf596e
+ mov dx, ss ; 8c d2 ; 0xf5971
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5973
+ call 05697h ; e8 1e fd ; 0xf5976
+ test ax, ax ; 85 c0 ; 0xf5979
+ jne short 0598bh ; 75 0e ; 0xf597b
+ mov ax, 0061fh ; b8 1f 06 ; 0xf597d keyboard.c:773
+ push ax ; 50 ; 0xf5980
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf5981
+ push ax ; 50 ; 0xf5984
+ call 0191ch ; e8 94 bf ; 0xf5985
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5988
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf598b keyboard.c:775
+ je short 0599bh ; 74 0a ; 0xf598f
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5991
+ jne short 0599bh ; 75 04 ; 0xf5995
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf5997 keyboard.c:776
+ mov dh, byte [bp-00ah] ; 8a 76 f6 ; 0xf599b keyboard.c:777
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf599e
+ jmp near 058c3h ; e9 1f ff ; 0xf59a1
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf59a4 keyboard.c:782
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf59a7
+ xor ax, ax ; 31 c0 ; 0xf59aa keyboard.c:783
+ push ax ; 50 ; 0xf59ac
+ mov cx, ss ; 8c d1 ; 0xf59ad
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf59af
+ mov dx, ss ; 8c d2 ; 0xf59b2
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf59b4
+ call 05697h ; e8 dd fc ; 0xf59b7
+ test ax, ax ; 85 c0 ; 0xf59ba
+ jne short 059c1h ; 75 03 ; 0xf59bc
+ jmp near 05888h ; e9 c7 fe ; 0xf59be
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf59c1 keyboard.c:787
+ jne short 059cah ; 75 03 ; 0xf59c5
+ jmp near 058a4h ; e9 da fe ; 0xf59c7
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf59ca
+ jne short 059d3h ; 75 03 ; 0xf59ce
+ jmp near 058a0h ; e9 cd fe ; 0xf59d0
+ jmp short 059c7h ; eb f2 ; 0xf59d3
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf59d5 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf59d8
+ mov es, ax ; 8e c0 ; 0xf59db
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf59dd
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf59e0 keyboard.c:795
+ mov dl, al ; 88 c2 ; 0xf59e3
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf59e5
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf59e8 keyboard.c:38
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf59eb
+ and bh, 073h ; 80 e7 73 ; 0xf59ee keyboard.c:39
+ mov si, 00096h ; be 96 00 ; 0xf59f1 keyboard.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf59f4
+ and ah, 00ch ; 80 e4 0c ; 0xf59f7 keyboard.c:39
+ or ah, bh ; 08 fc ; 0xf59fa
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf59fc keyboard.c:798
+ mov dh, ah ; 88 e6 ; 0xf59ff
+ jmp near 058c3h ; e9 bf fe ; 0xf5a01
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5a04 keyboard.c:803
+ xor ah, ah ; 30 e4 ; 0xf5a07
+ or ah, 080h ; 80 cc 80 ; 0xf5a09
+ jmp near 05817h ; e9 08 fe ; 0xf5a0c
+ ; disGetNextSymbol 0xf5a0f LB 0x59a9 -> off=0x0 cb=00000000000000b9 uValue=00000000000f440f 'set_geom_lba'
+set_geom_lba: ; 0xf5a0f LB 0xb9
+ push bx ; 53 ; 0xf5a0f disk.c:118
+ push cx ; 51 ; 0xf5a10
+ push si ; 56 ; 0xf5a11
+ push di ; 57 ; 0xf5a12
+ push bp ; 55 ; 0xf5a13
+ mov bp, sp ; 89 e5 ; 0xf5a14
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf5a16
+ mov di, ax ; 89 c7 ; 0xf5a19
+ mov es, dx ; 8e c2 ; 0xf5a1b
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf5a1d disk.c:120
+ mov word [bp-006h], strict word 0007eh ; c7 46 fa 7e 00 ; 0xf5a22
+ mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf5a27 disk.c:122
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5a2c disk.c:125
+ mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf5a2f
+ mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf5a32
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf5a35
+ mov si, strict word 00020h ; be 20 00 ; 0xf5a38
+ call 0b070h ; e8 32 56 ; 0xf5a3b
+ test ax, ax ; 85 c0 ; 0xf5a3e
+ jne short 05a4eh ; 75 0c ; 0xf5a40
+ test bx, bx ; 85 db ; 0xf5a42
+ jne short 05a4eh ; 75 08 ; 0xf5a44
+ test cx, cx ; 85 c9 ; 0xf5a46
+ jne short 05a4eh ; 75 04 ; 0xf5a48
+ test dx, dx ; 85 d2 ; 0xf5a4a
+ je short 05a55h ; 74 07 ; 0xf5a4c
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5a4e
+ mov si, bx ; 89 de ; 0xf5a51
+ jmp short 05a5bh ; eb 06 ; 0xf5a53
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf5a55
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf5a58
+ mov word [bp-004h], bx ; 89 5e fc ; 0xf5a5b
+ xor bx, bx ; 31 db ; 0xf5a5e disk.c:127
+ jmp short 05a67h ; eb 05 ; 0xf5a60
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf5a62
+ jnl short 05a8ah ; 7d 23 ; 0xf5a65
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5a67 disk.c:128
+ cmp si, ax ; 39 c6 ; 0xf5a6a
+ jc short 05a78h ; 72 0a ; 0xf5a6c
+ jne short 05a81h ; 75 11 ; 0xf5a6e
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5a70
+ cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf5a73
+ jnbe short 05a81h ; 77 09 ; 0xf5a76
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a78 disk.c:129
+ inc ax ; 40 ; 0xf5a7b
+ shr ax, 1 ; d1 e8 ; 0xf5a7c
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf5a7e
+ shr word [bp-006h], 1 ; d1 6e fa ; 0xf5a81 disk.c:130
+ rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5a84
+ inc bx ; 43 ; 0xf5a87 disk.c:131
+ jmp short 05a62h ; eb d8 ; 0xf5a88
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a8a disk.c:133
+ xor dx, dx ; 31 d2 ; 0xf5a8d
+ mov bx, strict word 0003fh ; bb 3f 00 ; 0xf5a8f
+ xor cx, cx ; 31 c9 ; 0xf5a92
+ call 0b020h ; e8 89 55 ; 0xf5a94
+ mov bx, ax ; 89 c3 ; 0xf5a97
+ mov cx, dx ; 89 d1 ; 0xf5a99
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5a9b
+ mov dx, si ; 89 f2 ; 0xf5a9e
+ call 0b040h ; e8 9d 55 ; 0xf5aa0
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5aa3
+ cmp ax, 00400h ; 3d 00 04 ; 0xf5aa7 disk.c:134
+ jbe short 05ab2h ; 76 06 ; 0xf5aaa
+ mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf5aac disk.c:135
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5ab2 disk.c:136
+ mov word [es:di], ax ; 26 89 05 ; 0xf5ab5
+ mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5ab8 disk.c:137
+ mov sp, bp ; 89 ec ; 0xf5abe disk.c:138
+ pop bp ; 5d ; 0xf5ac0
+ pop di ; 5f ; 0xf5ac1
+ pop si ; 5e ; 0xf5ac2
+ pop cx ; 59 ; 0xf5ac3
+ pop bx ; 5b ; 0xf5ac4
+ retn 00008h ; c2 08 00 ; 0xf5ac5
+ ; disGetNextSymbol 0xf5ac8 LB 0x58f0 -> off=0x0 cb=000000000000031e uValue=00000000000f44c8 'edd_fill_dpt'
+edd_fill_dpt: ; 0xf5ac8 LB 0x31e
+ push si ; 56 ; 0xf5ac8 disk.c:140
+ push di ; 57 ; 0xf5ac9
+ push bp ; 55 ; 0xf5aca
+ mov bp, sp ; 89 e5 ; 0xf5acb
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf5acd
+ mov di, ax ; 89 c7 ; 0xf5ad0
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5ad2
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf5ad5
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf5ad8
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5adb disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5ade
+ mov es, ax ; 8e c0 ; 0xf5ae1
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5ae3
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf5ae6 disk.c:49
+ mov es, dx ; 8e c2 ; 0xf5ae9 disk.c:145
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf5aeb
+ cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5aee
+ jnc short 05af9h ; 73 06 ; 0xf5af1
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf5af3 disk.c:146
+ jmp near 05ddeh ; e9 e5 02 ; 0xf5af6
+ jc short 05b6ch ; 72 71 ; 0xf5af9 disk.c:149
+ mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf5afb disk.c:152
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5b00 disk.c:153
+ xor ah, ah ; 30 e4 ; 0xf5b03
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5b05
+ imul dx ; f7 ea ; 0xf5b08
+ mov dx, cx ; 89 ca ; 0xf5b0a
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5b0c
+ add bx, ax ; 01 c3 ; 0xf5b0f
+ mov es, cx ; 8e c1 ; 0xf5b11
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf5b13
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b17
+ mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf5b1a
+ mov es, cx ; 8e c1 ; 0xf5b1e disk.c:155
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf5b20
+ jne short 05b6eh ; 75 47 ; 0xf5b25
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b27 disk.c:156
+ mov word [es:di+002h], strict word 00074h ; 26 c7 45 02 74 00 ; 0xf5b2a
+ mov word [es:di+004h], strict word 0ffffh ; 26 c7 45 04 ff ff ; 0xf5b30 disk.c:157
+ mov word [es:di+006h], strict word 0ffffh ; 26 c7 45 06 ff ff ; 0xf5b36
+ mov word [es:di+008h], strict word 0ffffh ; 26 c7 45 08 ff ff ; 0xf5b3c disk.c:158
+ mov word [es:di+00ah], strict word 0ffffh ; 26 c7 45 0a ff ff ; 0xf5b42
+ mov word [es:di+00ch], strict word 0ffffh ; 26 c7 45 0c ff ff ; 0xf5b48 disk.c:159
+ mov word [es:di+00eh], strict word 0ffffh ; 26 c7 45 0e ff ff ; 0xf5b4e
+ mov word [es:di+010h], strict word 0ffffh ; 26 c7 45 10 ff ff ; 0xf5b54 disk.c:160
+ mov word [es:di+012h], strict word 0ffffh ; 26 c7 45 12 ff ff ; 0xf5b5a
+ mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff ; 0xf5b60 disk.c:161
+ mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf5b66
+ jmp short 05bddh ; eb 6f ; 0xf5b6c disk.c:162
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b6e disk.c:163
+ mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf5b71
+ mov es, cx ; 8e c1 ; 0xf5b77 disk.c:164
+ mov ax, word [es:bx+032h] ; 26 8b 47 32 ; 0xf5b79
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b7d
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5b80
+ mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5b84
+ mov es, cx ; 8e c1 ; 0xf5b8a disk.c:165
+ mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5b8c
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b90
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5b93
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5b97
+ mov es, cx ; 8e c1 ; 0xf5b9d disk.c:166
+ mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5b9f
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ba3
+ mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5ba6
+ mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5baa
+ mov es, cx ; 8e c1 ; 0xf5bb0 disk.c:167
+ mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf5bb2
+ mov si, word [es:bx+03ah] ; 26 8b 77 3a ; 0xf5bb6
+ mov cx, word [es:bx+038h] ; 26 8b 4f 38 ; 0xf5bba
+ mov dx, word [es:bx+036h] ; 26 8b 57 36 ; 0xf5bbe
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5bc2 disk.c:168
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5bc5
+ mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5bc9
+ mov bx, si ; 89 f3 ; 0xf5bcd disk.c:169
+ mov si, strict word 00020h ; be 20 00 ; 0xf5bcf
+ call 0b070h ; e8 9b 54 ; 0xf5bd2
+ mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5bd5
+ mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5bd9
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5bdd disk.c:174
+ cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5be0
+ jc short 05c40h ; 72 5a ; 0xf5be4
+ mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5be6 disk.c:178
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5beb disk.c:179
+ mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5bee
+ mov word [es:di+01ah], 0030eh ; 26 c7 45 1a 0e 03 ; 0xf5bf2 disk.c:180
+ mov cl, byte [bp+008h] ; 8a 4e 08 ; 0xf5bf8 disk.c:183
+ xor ch, ch ; 30 ed ; 0xf5bfb
+ mov ax, cx ; 89 c8 ; 0xf5bfd
+ cwd ; 99 ; 0xf5bff
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5c00
+ sar ax, 1 ; d1 f8 ; 0xf5c02
+ xor ah, ah ; 30 e4 ; 0xf5c04 disk.c:184
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf5c06
+ imul dx ; f7 ea ; 0xf5c09
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5c0b
+ add bx, ax ; 01 c3 ; 0xf5c0e
+ mov ax, word [es:bx+0027eh] ; 26 8b 87 7e 02 ; 0xf5c10
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf5c15
+ mov ax, word [es:bx+00280h] ; 26 8b 87 80 02 ; 0xf5c18 disk.c:185
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5c1d
+ mov al, byte [es:bx+0027dh] ; 26 8a 87 7d 02 ; 0xf5c20 disk.c:186
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf5c25
+ mov ax, cx ; 89 c8 ; 0xf5c28 disk.c:188
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5c2a
+ imul dx ; f7 ea ; 0xf5c2d
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5c2f
+ add bx, ax ; 01 c3 ; 0xf5c32
+ mov bl, byte [es:bx+027h] ; 26 8a 5f 27 ; 0xf5c34
+ test bl, bl ; 84 db ; 0xf5c38 disk.c:190
+ jne short 05c43h ; 75 07 ; 0xf5c3a
+ xor ax, ax ; 31 c0 ; 0xf5c3c
+ jmp short 05c46h ; eb 06 ; 0xf5c3e
+ jmp near 05d0bh ; e9 c8 00 ; 0xf5c40
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf5c43
+ or AL, strict byte 010h ; 0c 10 ; 0xf5c46 disk.c:191
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5c48
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c4b disk.c:192
+ xor ah, ah ; 30 e4 ; 0xf5c4e
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5c50
+ imul dx ; f7 ea ; 0xf5c53
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5c55
+ add si, ax ; 01 c6 ; 0xf5c58
+ cmp byte [es:si+023h], 005h ; 26 80 7c 23 05 ; 0xf5c5a
+ jne short 05c65h ; 75 04 ; 0xf5c5f
+ or byte [bp-00ah], 060h ; 80 4e f6 60 ; 0xf5c61 disk.c:193
+ cmp bl, 001h ; 80 fb 01 ; 0xf5c65 disk.c:199
+ jne short 05c6fh ; 75 05 ; 0xf5c68
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5c6a
+ jmp short 05c71h ; eb 02 ; 0xf5c6d
+ xor ax, ax ; 31 c0 ; 0xf5c6f
+ or word [bp-00ah], ax ; 09 46 f6 ; 0xf5c71
+ cmp bl, 003h ; 80 fb 03 ; 0xf5c74 disk.c:200
+ jne short 05c7eh ; 75 05 ; 0xf5c77
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf5c79
+ jmp short 05c80h ; eb 02 ; 0xf5c7c
+ xor ax, ax ; 31 c0 ; 0xf5c7e
+ or word [bp-00ah], ax ; 09 46 f6 ; 0xf5c80
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf5c83 disk.c:202
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5c86
+ mov word [es:bx+002b0h], ax ; 26 89 87 b0 02 ; 0xf5c89
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5c8e disk.c:203
+ mov word [es:bx+002b2h], ax ; 26 89 87 b2 02 ; 0xf5c91
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c96 disk.c:204
+ xor ah, ah ; 30 e4 ; 0xf5c99
+ cwd ; 99 ; 0xf5c9b
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf5c9c
+ idiv bx ; f7 fb ; 0xf5c9f
+ or dl, 00eh ; 80 ca 0e ; 0xf5ca1
+ mov CL, strict byte 004h ; b1 04 ; 0xf5ca4
+ sal dx, CL ; d3 e2 ; 0xf5ca6
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5ca8
+ mov byte [es:bx+002b4h], dl ; 26 88 97 b4 02 ; 0xf5cab
+ mov byte [es:bx+002b5h], 0cbh ; 26 c6 87 b5 02 cb ; 0xf5cb0 disk.c:205
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5cb6 disk.c:206
+ mov byte [es:bx+002b6h], al ; 26 88 87 b6 02 ; 0xf5cb9
+ mov word [es:bx+002b7h], strict word 00001h ; 26 c7 87 b7 02 01 00 ; 0xf5cbe disk.c:207
+ mov byte [es:bx+002b9h], 000h ; 26 c6 87 b9 02 00 ; 0xf5cc5 disk.c:209
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5ccb disk.c:210
+ mov word [es:bx+002bah], ax ; 26 89 87 ba 02 ; 0xf5cce
+ mov word [es:bx+002bch], strict word 00000h ; 26 c7 87 bc 02 00 00 ; 0xf5cd3 disk.c:211
+ mov byte [es:bx+002beh], 011h ; 26 c6 87 be 02 11 ; 0xf5cda disk.c:212
+ xor bl, bl ; 30 db ; 0xf5ce0 disk.c:214
+ xor bh, bh ; 30 ff ; 0xf5ce2 disk.c:215
+ jmp short 05cebh ; eb 05 ; 0xf5ce4
+ cmp bh, 00fh ; 80 ff 0f ; 0xf5ce6
+ jnc short 05d01h ; 73 16 ; 0xf5ce9
+ mov al, bh ; 88 f8 ; 0xf5ceb disk.c:216
+ xor ah, ah ; 30 e4 ; 0xf5ced
+ mov si, ax ; 89 c6 ; 0xf5cef
+ add si, 0030eh ; 81 c6 0e 03 ; 0xf5cf1
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf5cf5 disk.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5cf8
+ add bl, al ; 00 c3 ; 0xf5cfb disk.c:39
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5cfd disk.c:216
+ jmp short 05ce6h ; eb e5 ; 0xf5cff
+ neg bl ; f6 db ; 0xf5d01 disk.c:217
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5d03 disk.c:218
+ mov byte [es:si+002bfh], bl ; 26 88 9c bf 02 ; 0xf5d06
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d0b disk.c:222
+ cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5d0e
+ jnc short 05d17h ; 73 03 ; 0xf5d12
+ jmp near 05ddch ; e9 c5 00 ; 0xf5d14
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5d17 disk.c:226
+ xor ah, ah ; 30 e4 ; 0xf5d1a
+ cwd ; 99 ; 0xf5d1c
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5d1d
+ sar ax, 1 ; d1 f8 ; 0xf5d1f
+ xor ah, ah ; 30 e4 ; 0xf5d21 disk.c:227
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf5d23
+ imul dx ; f7 ea ; 0xf5d26
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5d28
+ add bx, ax ; 01 c3 ; 0xf5d2b
+ mov al, byte [es:bx+0027ch] ; 26 8a 87 7c 02 ; 0xf5d2d
+ mov dx, word [es:bx+0027eh] ; 26 8b 97 7e 02 ; 0xf5d32 disk.c:228
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d37 disk.c:230
+ mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5d3a
+ mov word [es:di+01eh], 0beddh ; 26 c7 45 1e dd be ; 0xf5d3f disk.c:231
+ mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00 ; 0xf5d45 disk.c:232
+ mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5d4b disk.c:234
+ test al, al ; 84 c0 ; 0xf5d51 disk.c:236
+ jne short 05d61h ; 75 0c ; 0xf5d53
+ mov word [es:di+024h], 05349h ; 26 c7 45 24 49 53 ; 0xf5d55 disk.c:237
+ mov word [es:di+026h], 02041h ; 26 c7 45 26 41 20 ; 0xf5d5b disk.c:239
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d61 disk.c:245
+ mov word [es:di+028h], 05441h ; 26 c7 45 28 41 54 ; 0xf5d64
+ mov word [es:di+02ah], 02041h ; 26 c7 45 2a 41 20 ; 0xf5d6a disk.c:247
+ mov word [es:di+02ch], 02020h ; 26 c7 45 2c 20 20 ; 0xf5d70 disk.c:249
+ mov word [es:di+02eh], 02020h ; 26 c7 45 2e 20 20 ; 0xf5d76 disk.c:251
+ test al, al ; 84 c0 ; 0xf5d7c disk.c:254
+ jne short 05d96h ; 75 16 ; 0xf5d7e
+ mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5d80 disk.c:255
+ mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00 ; 0xf5d84 disk.c:256
+ mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00 ; 0xf5d8a disk.c:257
+ mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5d90
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5d96 disk.c:262
+ and AL, strict byte 001h ; 24 01 ; 0xf5d99
+ xor ah, ah ; 30 e4 ; 0xf5d9b
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d9d
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5da0
+ mov word [es:di+03ah], strict word 00000h ; 26 c7 45 3a 00 00 ; 0xf5da4 disk.c:263
+ mov word [es:di+03ch], strict word 00000h ; 26 c7 45 3c 00 00 ; 0xf5daa disk.c:264
+ mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5db0
+ xor bl, bl ; 30 db ; 0xf5db6 disk.c:266
+ mov BH, strict byte 01eh ; b7 1e ; 0xf5db8 disk.c:267
+ jmp short 05dc1h ; eb 05 ; 0xf5dba
+ cmp bh, 040h ; 80 ff 40 ; 0xf5dbc
+ jnc short 05dd3h ; 73 12 ; 0xf5dbf
+ mov al, bh ; 88 f8 ; 0xf5dc1 disk.c:268
+ xor ah, ah ; 30 e4 ; 0xf5dc3
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5dc5
+ mov si, di ; 89 fe ; 0xf5dc8
+ add si, ax ; 01 c6 ; 0xf5dca
+ add bl, byte [es:si] ; 26 02 1c ; 0xf5dcc
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5dcf
+ jmp short 05dbch ; eb e9 ; 0xf5dd1
+ neg bl ; f6 db ; 0xf5dd3 disk.c:269
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5dd5 disk.c:270
+ mov byte [es:di+041h], bl ; 26 88 5d 41 ; 0xf5dd8
+ xor ax, ax ; 31 c0 ; 0xf5ddc disk.c:272
+ mov sp, bp ; 89 ec ; 0xf5dde disk.c:273
+ pop bp ; 5d ; 0xf5de0
+ pop di ; 5f ; 0xf5de1
+ pop si ; 5e ; 0xf5de2
+ retn 00002h ; c2 02 00 ; 0xf5de3
+ ; disGetNextSymbol 0xf5de6 LB 0x55d2 -> off=0x32 cb=0000000000000436 uValue=00000000000f4818 'int13_harddisk'
+ db 0a8h, 05eh, 0b9h, 05eh, 0e0h, 05eh, 0e0h, 05eh, 0e0h, 05eh, 0ceh, 060h, 011h, 062h, 011h, 062h
+ db 0ffh, 060h, 0ebh, 061h, 011h, 062h, 011h, 062h, 0ebh, 061h, 0ebh, 061h, 011h, 062h, 011h, 062h
+ db 065h, 061h, 0ebh, 061h, 011h, 062h, 011h, 062h, 0ebh, 061h, 0a0h, 061h, 011h, 062h, 011h, 062h
+ db 011h, 062h
+int13_harddisk: ; 0xf5e18 LB 0x436
+ push bp ; 55 ; 0xf5e18 disk.c:275
+ mov bp, sp ; 89 e5 ; 0xf5e19
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf5e1b
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5e1e disk.c:286
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5e22 disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5e25
+ mov es, ax ; 8e c0 ; 0xf5e28
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5e2a
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf5e2d disk.c:49
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf5e30
+ mov bx, 0008eh ; bb 8e 00 ; 0xf5e33 disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e36
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5e3a disk.c:292
+ xor ah, ah ; 30 e4 ; 0xf5e3d
+ cmp ax, 00080h ; 3d 80 00 ; 0xf5e3f
+ jc short 05e49h ; 72 05 ; 0xf5e42
+ cmp ax, 00094h ; 3d 94 00 ; 0xf5e44
+ jc short 05e68h ; 72 1f ; 0xf5e47
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5e49 disk.c:293
+ xor ah, ah ; 30 e4 ; 0xf5e4c
+ push ax ; 50 ; 0xf5e4e
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5e4f
+ push ax ; 50 ; 0xf5e52
+ mov ax, 0068eh ; b8 8e 06 ; 0xf5e53
+ push ax ; 50 ; 0xf5e56
+ mov ax, 0069dh ; b8 9d 06 ; 0xf5e57
+ push ax ; 50 ; 0xf5e5a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5e5b
+ push ax ; 50 ; 0xf5e5e
+ call 0191ch ; e8 ba ba ; 0xf5e5f
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5e62
+ jmp near 0622ch ; e9 c4 03 ; 0xf5e65 disk.c:294
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5e68 disk.c:298
+ xor ah, ah ; 30 e4 ; 0xf5e6b
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5e6d
+ mov bx, si ; 89 f3 ; 0xf5e70
+ add bx, ax ; 01 c3 ; 0xf5e72
+ mov dl, byte [es:bx+001d3h] ; 26 8a 97 d3 01 ; 0xf5e74
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf5e79
+ cmp dl, 014h ; 80 fa 14 ; 0xf5e7c disk.c:301
+ jc short 05e8fh ; 72 0e ; 0xf5e7f
+ push ax ; 50 ; 0xf5e81 disk.c:302
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5e82
+ push ax ; 50 ; 0xf5e85
+ mov ax, 0068eh ; b8 8e 06 ; 0xf5e86
+ push ax ; 50 ; 0xf5e89
+ mov ax, 006c8h ; b8 c8 06 ; 0xf5e8a
+ jmp short 05e5ah ; eb cb ; 0xf5e8d
+ mov bl, byte [bp+017h] ; 8a 5e 17 ; 0xf5e8f disk.c:306
+ xor bh, bh ; 30 ff ; 0xf5e92
+ cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5e94
+ jnbe short 05eddh ; 77 44 ; 0xf5e97
+ sal bx, 1 ; d1 e3 ; 0xf5e99
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5e9b
+ xor ah, ah ; 30 e4 ; 0xf5e9e
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf5ea0
+ jmp word [cs:bx+05de6h] ; 2e ff a7 e6 5d ; 0xf5ea3
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5ea8 disk.c:311
+ jnc short 05eb6h ; 73 08 ; 0xf5eac
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5eae disk.c:313
+ xor ah, ah ; 30 e4 ; 0xf5eb1
+ call 01d5bh ; e8 a5 be ; 0xf5eb3
+ jmp near 060e7h ; e9 2e 02 ; 0xf5eb6 disk.c:314
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5eb9 disk.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5ebc
+ mov es, ax ; 8e c0 ; 0xf5ebf
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5ec1
+ mov ah, dl ; 88 d4 ; 0xf5ec4 disk.c:319
+ xor al, al ; 30 c0 ; 0xf5ec6
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5ec8
+ or bx, ax ; 09 c3 ; 0xf5ecb
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5ecd
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5ed0 disk.c:43
+ mov byte [es:bx], al ; 26 88 07 ; 0xf5ed3
+ test dl, dl ; 84 d2 ; 0xf5ed6 disk.c:322
+ je short 05f3ch ; 74 62 ; 0xf5ed8
+ jmp near 06247h ; e9 6a 03 ; 0xf5eda
+ jmp near 06211h ; e9 31 03 ; 0xf5edd
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ee0 disk.c:330
+ xor ah, ah ; 30 e4 ; 0xf5ee3
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf5ee5
+ mov al, byte [bp+015h] ; 8a 46 15 ; 0xf5ee8 disk.c:331
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5eeb disk.c:332
+ xor dh, dh ; 30 f6 ; 0xf5eee
+ sal dx, 1 ; d1 e2 ; 0xf5ef0
+ sal dx, 1 ; d1 e2 ; 0xf5ef2
+ and dh, 003h ; 80 e6 03 ; 0xf5ef4
+ mov ah, dh ; 88 f4 ; 0xf5ef7
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5ef9
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5efc disk.c:333
+ and di, strict byte 0003fh ; 83 e7 3f ; 0xf5eff
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf5f02 disk.c:334
+ xor ah, dh ; 30 f4 ; 0xf5f05
+ mov word [bp-004h], ax ; 89 46 fc ; 0xf5f07
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf5f0a disk.c:337
+ cmp ax, 00080h ; 3d 80 00 ; 0xf5f0d
+ jnbe short 05f16h ; 77 04 ; 0xf5f10
+ test ax, ax ; 85 c0 ; 0xf5f12
+ jne short 05f3fh ; 75 29 ; 0xf5f14
+ mov bx, 00eeah ; bb ea 0e ; 0xf5f16 disk.c:338
+ mov cx, ds ; 8c d9 ; 0xf5f19
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f1b
+ call 018d9h ; e8 b8 b9 ; 0xf5f1e
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5f21
+ xor ah, ah ; 30 e4 ; 0xf5f24
+ push ax ; 50 ; 0xf5f26
+ mov ax, 0068eh ; b8 8e 06 ; 0xf5f27
+ push ax ; 50 ; 0xf5f2a
+ mov ax, 006fah ; b8 fa 06 ; 0xf5f2b
+ push ax ; 50 ; 0xf5f2e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f2f
+ push ax ; 50 ; 0xf5f32
+ call 0191ch ; e8 e6 b9 ; 0xf5f33
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf5f36
+ jmp near 0622ch ; e9 f0 02 ; 0xf5f39 disk.c:339
+ jmp near 060ebh ; e9 ac 01 ; 0xf5f3c
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5f3f disk.c:343
+ xor ah, ah ; 30 e4 ; 0xf5f42
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5f44
+ imul dx ; f7 ea ; 0xf5f47
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5f49
+ mov bx, si ; 89 f3 ; 0xf5f4c
+ add bx, ax ; 01 c3 ; 0xf5f4e
+ mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf5f50
+ mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf5f54 disk.c:344
+ mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf5f58 disk.c:345
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf5f5c
+ cmp ax, word [bp-00ah] ; 3b 46 f6 ; 0xf5f5f disk.c:348
+ jbe short 05f6dh ; 76 09 ; 0xf5f62
+ cmp cx, word [bp-004h] ; 3b 4e fc ; 0xf5f64
+ jbe short 05f6dh ; 76 04 ; 0xf5f67
+ cmp di, dx ; 39 d7 ; 0xf5f69
+ jbe short 05f9eh ; 76 31 ; 0xf5f6b
+ mov bx, 00eeah ; bb ea 0e ; 0xf5f6d disk.c:349
+ mov cx, ds ; 8c d9 ; 0xf5f70
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f72
+ call 018d9h ; e8 61 b9 ; 0xf5f75
+ push di ; 57 ; 0xf5f78
+ push word [bp-004h] ; ff 76 fc ; 0xf5f79
+ push word [bp-00ah] ; ff 76 f6 ; 0xf5f7c
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5f7f
+ xor ah, ah ; 30 e4 ; 0xf5f82
+ push ax ; 50 ; 0xf5f84
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5f85
+ push ax ; 50 ; 0xf5f88
+ mov ax, 0068eh ; b8 8e 06 ; 0xf5f89
+ push ax ; 50 ; 0xf5f8c
+ mov ax, 00722h ; b8 22 07 ; 0xf5f8d
+ push ax ; 50 ; 0xf5f90
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f91
+ push ax ; 50 ; 0xf5f94
+ call 0191ch ; e8 84 b9 ; 0xf5f95
+ add sp, strict byte 00010h ; 83 c4 10 ; 0xf5f98
+ jmp near 0622ch ; e9 8e 02 ; 0xf5f9b disk.c:350
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5f9e disk.c:354
+ xor ah, ah ; 30 e4 ; 0xf5fa1
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf5fa3
+ je short 05fc8h ; 74 20 ; 0xf5fa6
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5fa8 disk.c:359
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5fab
+ imul dx ; f7 ea ; 0xf5fae
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5fb0
+ mov bx, si ; 89 f3 ; 0xf5fb3
+ add bx, ax ; 01 c3 ; 0xf5fb5
+ cmp cx, word [es:bx+030h] ; 26 3b 4f 30 ; 0xf5fb7
+ jne short 05fd1h ; 75 14 ; 0xf5fbb
+ mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5fbd
+ cmp ax, word [bp-010h] ; 3b 46 f0 ; 0xf5fc1
+ je short 05fcbh ; 74 05 ; 0xf5fc4
+ jmp short 05fd1h ; eb 09 ; 0xf5fc6
+ jmp near 060e7h ; e9 1c 01 ; 0xf5fc8
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5fcb
+ jc short 06000h ; 72 2f ; 0xf5fcf
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5fd1 disk.c:360
+ xor dx, dx ; 31 d2 ; 0xf5fd4
+ mov bx, cx ; 89 cb ; 0xf5fd6
+ xor cx, cx ; 31 c9 ; 0xf5fd8
+ call 0b020h ; e8 43 50 ; 0xf5fda
+ xor bx, bx ; 31 db ; 0xf5fdd
+ add ax, word [bp-004h] ; 03 46 fc ; 0xf5fdf
+ adc dx, bx ; 11 da ; 0xf5fe2
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf5fe4
+ xor cx, cx ; 31 c9 ; 0xf5fe7
+ call 0b020h ; e8 34 50 ; 0xf5fe9
+ xor bx, bx ; 31 db ; 0xf5fec
+ add ax, di ; 01 f8 ; 0xf5fee
+ adc dx, bx ; 11 da ; 0xf5ff0
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf5ff2
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf5ff5
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf5ff8
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5ffb
+ xor di, di ; 31 ff ; 0xf5ffe disk.c:361
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf6000 disk.c:371
+ mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf6003
+ mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf6009 disk.c:372
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf600f
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf6015 disk.c:375
+ mov word [es:si], ax ; 26 89 04 ; 0xf6018
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf601b
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf601e
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf6022
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf6028
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf602e disk.c:376
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf6031
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6034
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf6038
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf603c disk.c:377
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf603f
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf6043 disk.c:378
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf6049 disk.c:379
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf604c
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf6050 disk.c:380
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf6053
+ mov word [es:si+016h], di ; 26 89 7c 16 ; 0xf6057 disk.c:381
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf605b disk.c:382
+ mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf605e
+ xor ah, ah ; 30 e4 ; 0xf6062 disk.c:384
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6064
+ imul dx ; f7 ea ; 0xf6067
+ mov bx, si ; 89 f3 ; 0xf6069
+ add bx, ax ; 01 c3 ; 0xf606b
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf606d
+ xor ah, ah ; 30 e4 ; 0xf6071
+ mov bx, ax ; 89 c3 ; 0xf6073
+ sal bx, 1 ; d1 e3 ; 0xf6075
+ sal bx, 1 ; d1 e3 ; 0xf6077
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6079
+ sal ax, 1 ; d1 e0 ; 0xf607c
+ add bx, ax ; 01 c3 ; 0xf607e
+ push ES ; 06 ; 0xf6080
+ push si ; 56 ; 0xf6081
+ call word [bx+00082h] ; ff 97 82 00 ; 0xf6082
+ mov dx, ax ; 89 c2 ; 0xf6086
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6088 disk.c:387
+ xor al, al ; 30 c0 ; 0xf608b
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf608d
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf6090
+ or bx, ax ; 09 c3 ; 0xf6094
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf6096
+ test dl, dl ; 84 d2 ; 0xf6099 disk.c:389
+ je short 060e7h ; 74 4a ; 0xf609b
+ mov bx, 00eeah ; bb ea 0e ; 0xf609d disk.c:390
+ mov cx, ds ; 8c d9 ; 0xf60a0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf60a2
+ call 018d9h ; e8 31 b8 ; 0xf60a5
+ mov al, dl ; 88 d0 ; 0xf60a8
+ xor ah, ah ; 30 e4 ; 0xf60aa
+ push ax ; 50 ; 0xf60ac
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf60ad
+ push ax ; 50 ; 0xf60b0
+ mov ax, 0068eh ; b8 8e 06 ; 0xf60b1
+ push ax ; 50 ; 0xf60b4
+ mov ax, 00769h ; b8 69 07 ; 0xf60b5
+ push ax ; 50 ; 0xf60b8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf60b9
+ push ax ; 50 ; 0xf60bc
+ call 0191ch ; e8 5c b8 ; 0xf60bd
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf60c0
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60c3 disk.c:391
+ xor ah, ah ; 30 e4 ; 0xf60c6
+ or ah, 00ch ; 80 cc 0c ; 0xf60c8
+ jmp near 06234h ; e9 66 01 ; 0xf60cb disk.c:392
+ mov bx, 00eeah ; bb ea 0e ; 0xf60ce disk.c:399
+ mov cx, ds ; 8c d9 ; 0xf60d1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf60d3
+ call 018d9h ; e8 00 b8 ; 0xf60d6
+ mov ax, 0078ah ; b8 8a 07 ; 0xf60d9
+ push ax ; 50 ; 0xf60dc
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf60dd
+ push ax ; 50 ; 0xf60e0
+ call 0191ch ; e8 38 b8 ; 0xf60e1
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf60e4
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf60e7 disk.c:400
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf60eb
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf60ee
+ mov es, ax ; 8e c0 ; 0xf60f1
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf60f3
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf60f7
+ mov sp, bp ; 89 ec ; 0xf60fb
+ pop bp ; 5d ; 0xf60fd
+ retn ; c3 ; 0xf60fe
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf60ff disk.c:406
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6102
+ imul dx ; f7 ea ; 0xf6105
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf6107
+ mov bx, si ; 89 f3 ; 0xf610a
+ add bx, ax ; 01 c3 ; 0xf610c
+ mov di, word [es:bx+02ch] ; 26 8b 7f 2c ; 0xf610e
+ mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf6112 disk.c:407
+ mov ax, word [es:bx+02eh] ; 26 8b 47 2e ; 0xf6116 disk.c:408
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf611a
+ mov dl, byte [es:si+00252h] ; 26 8a 94 52 02 ; 0xf611d disk.c:410
+ xor dh, dh ; 30 f6 ; 0xf6122
+ mov byte [bp+016h], dh ; 88 76 16 ; 0xf6124 disk.c:413
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf6127 disk.c:414
+ dec di ; 4f ; 0xf612a disk.c:412
+ mov ax, di ; 89 f8 ; 0xf612b
+ mov bh, al ; 88 c7 ; 0xf612d
+ mov word [bp+014h], bx ; 89 5e 14 ; 0xf612f
+ shr di, 1 ; d1 ef ; 0xf6132 disk.c:415
+ shr di, 1 ; d1 ef ; 0xf6134
+ and di, 000c0h ; 81 e7 c0 00 ; 0xf6136
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf613a
+ and ax, strict word 0003fh ; 25 3f 00 ; 0xf613d
+ or ax, di ; 09 f8 ; 0xf6140
+ xor bl, bl ; 30 db ; 0xf6142
+ or bx, ax ; 09 c3 ; 0xf6144
+ mov word [bp+014h], bx ; 89 5e 14 ; 0xf6146
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf6149 disk.c:416
+ xor bh, bh ; 30 ff ; 0xf614c
+ mov ah, cl ; 88 cc ; 0xf614e
+ xor al, al ; 30 c0 ; 0xf6150
+ sub ax, 00100h ; 2d 00 01 ; 0xf6152
+ or bx, ax ; 09 c3 ; 0xf6155
+ mov word [bp+012h], bx ; 89 5e 12 ; 0xf6157
+ mov ax, bx ; 89 d8 ; 0xf615a disk.c:417
+ xor al, bl ; 30 d8 ; 0xf615c
+ or ax, dx ; 09 d0 ; 0xf615e
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6160
+ jmp short 060e7h ; eb 82 ; 0xf6163 disk.c:422
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf6165 disk.c:430
+ jc short 0616eh ; 72 03 ; 0xf6169
+ jmp near 060e7h ; e9 79 ff ; 0xf616b
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf616e disk.c:433
+ xor ah, ah ; 30 e4 ; 0xf6171
+ cwd ; 99 ; 0xf6173
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf6174
+ sar ax, 1 ; d1 f8 ; 0xf6176
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf6178
+ imul dx ; f7 ea ; 0xf617b
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf617d
+ add si, ax ; 01 c6 ; 0xf6180
+ mov dx, word [es:si+0027eh] ; 26 8b 94 7e 02 ; 0xf6182
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf6187
+ in AL, DX ; ec ; 0xf618a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf618b
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf618d disk.c:434
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf618f
+ jne short 06195h ; 75 02 ; 0xf6191
+ jmp short 0616bh ; eb d6 ; 0xf6193 disk.c:435
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6195 disk.c:437
+ xor ah, ah ; 30 e4 ; 0xf6198
+ or ah, 0aah ; 80 cc aa ; 0xf619a
+ jmp near 06234h ; e9 94 00 ; 0xf619d
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf61a0 disk.c:449
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf61a3
+ imul dx ; f7 ea ; 0xf61a6
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf61a8
+ add si, ax ; 01 c6 ; 0xf61ab
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf61ad
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf61b1
+ mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf61b4 disk.c:450
+ mov word [bp-004h], ax ; 89 46 fc ; 0xf61b8
+ mov di, word [es:si+034h] ; 26 8b 7c 34 ; 0xf61bb disk.c:451
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf61bf disk.c:454
+ xor dx, dx ; 31 d2 ; 0xf61c2
+ mov bx, word [bp-004h] ; 8b 5e fc ; 0xf61c4
+ xor cx, cx ; 31 c9 ; 0xf61c7
+ call 0b020h ; e8 54 4e ; 0xf61c9
+ mov bx, di ; 89 fb ; 0xf61cc
+ xor cx, cx ; 31 c9 ; 0xf61ce
+ call 0b020h ; e8 4d 4e ; 0xf61d0
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf61d3
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf61d6
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf61d9 disk.c:455
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf61dc disk.c:456
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf61df disk.c:458
+ or ah, 003h ; 80 cc 03 ; 0xf61e2
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf61e5
+ jmp near 060ebh ; e9 00 ff ; 0xf61e8 disk.c:459
+ mov bx, 00eeah ; bb ea 0e ; 0xf61eb disk.c:467
+ mov cx, ds ; 8c d9 ; 0xf61ee
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf61f0
+ call 018d9h ; e8 e3 b6 ; 0xf61f3
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf61f6
+ xor ah, ah ; 30 e4 ; 0xf61f9
+ push ax ; 50 ; 0xf61fb
+ mov ax, 0068eh ; b8 8e 06 ; 0xf61fc
+ push ax ; 50 ; 0xf61ff
+ mov ax, 007a4h ; b8 a4 07 ; 0xf6200
+ push ax ; 50 ; 0xf6203
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6204
+ push ax ; 50 ; 0xf6207
+ call 0191ch ; e8 11 b7 ; 0xf6208
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf620b
+ jmp near 060e7h ; e9 d6 fe ; 0xf620e disk.c:468
+ mov bx, 00eeah ; bb ea 0e ; 0xf6211 disk.c:475
+ mov cx, ds ; 8c d9 ; 0xf6214
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6216
+ call 018d9h ; e8 bd b6 ; 0xf6219
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf621c
+ xor ah, ah ; 30 e4 ; 0xf621f
+ push ax ; 50 ; 0xf6221
+ mov ax, 0068eh ; b8 8e 06 ; 0xf6222
+ push ax ; 50 ; 0xf6225
+ mov ax, 007d7h ; b8 d7 07 ; 0xf6226
+ jmp near 05f2eh ; e9 02 fd ; 0xf6229
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf622c disk.c:481
+ xor ah, ah ; 30 e4 ; 0xf622f
+ or ah, 001h ; 80 cc 01 ; 0xf6231
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6234
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6237 disk.c:483
+ xor ah, ah ; 30 e4 ; 0xf623a
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf623c disk.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf623f
+ mov es, dx ; 8e c2 ; 0xf6242
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6244
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6247 disk.c:485
+ jmp near 060fbh ; e9 ad fe ; 0xf624b disk.c:486
+ ; disGetNextSymbol 0xf624e LB 0x516a -> off=0x20 cb=00000000000002a8 uValue=00000000000f4c6e 'int13_harddisk_ext'
+ db 0fch, 062h, 02fh, 063h, 02fh, 063h, 02fh, 063h, 0feh, 064h, 0aah, 064h, 02fh, 063h, 0afh, 064h
+ db 0feh, 064h, 014h, 063h, 014h, 063h, 014h, 063h, 014h, 063h, 0c7h, 064h, 014h, 063h, 014h, 063h
+int13_harddisk_ext: ; 0xf626e LB 0x2a8
+ push bp ; 55 ; 0xf626e disk.c:496
+ mov bp, sp ; 89 e5 ; 0xf626f
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf6271
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6274 disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6277
+ mov es, ax ; 8e c0 ; 0xf627a
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf627c
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf627f disk.c:49
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf6282
+ mov bx, 0008eh ; bb 8e 00 ; 0xf6285 disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6288
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf628c disk.c:520
+ xor ah, ah ; 30 e4 ; 0xf628f
+ cmp ax, 00080h ; 3d 80 00 ; 0xf6291
+ jc short 0629bh ; 72 05 ; 0xf6294
+ cmp ax, 00094h ; 3d 94 00 ; 0xf6296
+ jc short 062bah ; 72 1f ; 0xf6299
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf629b disk.c:521
+ xor ah, ah ; 30 e4 ; 0xf629e
+ push ax ; 50 ; 0xf62a0
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf62a1
+ push ax ; 50 ; 0xf62a4
+ mov ax, 00805h ; b8 05 08 ; 0xf62a5
+ push ax ; 50 ; 0xf62a8
+ mov ax, 0069dh ; b8 9d 06 ; 0xf62a9
+ push ax ; 50 ; 0xf62ac
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf62ad
+ push ax ; 50 ; 0xf62b0
+ call 0191ch ; e8 68 b6 ; 0xf62b1
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf62b4
+ jmp near 064ddh ; e9 23 02 ; 0xf62b7 disk.c:522
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf62ba disk.c:526
+ xor ah, ah ; 30 e4 ; 0xf62bd
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf62bf
+ mov bx, di ; 89 fb ; 0xf62c2
+ add bx, ax ; 01 c3 ; 0xf62c4
+ mov dl, byte [es:bx+001d3h] ; 26 8a 97 d3 01 ; 0xf62c6
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf62cb
+ cmp dl, 014h ; 80 fa 14 ; 0xf62ce disk.c:529
+ jc short 062e1h ; 72 0e ; 0xf62d1
+ push ax ; 50 ; 0xf62d3 disk.c:530
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf62d4
+ push ax ; 50 ; 0xf62d7
+ mov ax, 00805h ; b8 05 08 ; 0xf62d8
+ push ax ; 50 ; 0xf62db
+ mov ax, 006c8h ; b8 c8 06 ; 0xf62dc
+ jmp short 062ach ; eb cb ; 0xf62df
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf62e1 disk.c:534
+ xor ah, ah ; 30 e4 ; 0xf62e4
+ sub ax, strict word 00041h ; 2d 41 00 ; 0xf62e6
+ cmp ax, strict word 0000fh ; 3d 0f 00 ; 0xf62e9
+ jnbe short 06314h ; 77 26 ; 0xf62ec
+ mov bx, ax ; 89 c3 ; 0xf62ee
+ sal bx, 1 ; d1 e3 ; 0xf62f0
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62f2
+ xor ah, ah ; 30 e4 ; 0xf62f5
+ jmp word [cs:bx+0624eh] ; 2e ff a7 4e 62 ; 0xf62f7
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf62fc disk.c:536
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6301 disk.c:537
+ xor ah, ah ; 30 e4 ; 0xf6304
+ or ah, 030h ; 80 cc 30 ; 0xf6306
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6309
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf630c disk.c:538
+ jmp near 06502h ; e9 ee 01 ; 0xf6311 disk.c:539
+ mov bx, 00eeah ; bb ea 0e ; 0xf6314
+ mov cx, ds ; 8c d9 ; 0xf6317
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6319
+ call 018d9h ; e8 ba b5 ; 0xf631c
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf631f
+ xor ah, ah ; 30 e4 ; 0xf6322
+ push ax ; 50 ; 0xf6324
+ mov ax, 00805h ; b8 05 08 ; 0xf6325
+ push ax ; 50 ; 0xf6328
+ mov ax, 007d7h ; b8 d7 07 ; 0xf6329
+ jmp near 063d8h ; e9 a9 00 ; 0xf632c
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf632f disk.c:548
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf6332
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf6335
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf6338
+ mov [bp-010h], es ; 8c 46 f0 ; 0xf633b
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf633e disk.c:550
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6342
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf6345 disk.c:551
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf6349
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf634c disk.c:552
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf6350
+ mov si, bx ; 89 de ; 0xf6353 disk.c:555
+ mov si, word [es:si+00ch] ; 26 8b 74 0c ; 0xf6355
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf6359
+ xor ax, ax ; 31 c0 ; 0xf635d disk.c:556
+ xor bx, bx ; 31 db ; 0xf635f
+ mov dx, si ; 89 f2 ; 0xf6361
+ mov si, strict word 00020h ; be 20 00 ; 0xf6363
+ call 0b080h ; e8 17 4d ; 0xf6366
+ mov word [bp-004h], ax ; 89 46 fc ; 0xf6369
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf636c
+ mov si, dx ; 89 d6 ; 0xf636f
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf6371 disk.c:557
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf6374
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf6378
+ or si, dx ; 09 d6 ; 0xf637c
+ or cx, ax ; 09 c1 ; 0xf637e
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6380 disk.c:562
+ xor ah, ah ; 30 e4 ; 0xf6383
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6385
+ imul dx ; f7 ea ; 0xf6388
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf638a
+ mov bx, di ; 89 fb ; 0xf638d
+ add bx, ax ; 01 c3 ; 0xf638f
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf6391
+ mov dx, word [bp-004h] ; 8b 56 fc ; 0xf6395 disk.c:563
+ cmp dx, word [es:bx+03ch] ; 26 3b 57 3c ; 0xf6398
+ jnbe short 063c0h ; 77 22 ; 0xf639c
+ jne short 063e6h ; 75 46 ; 0xf639e
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf63a0
+ cmp dx, word [es:bx+03ah] ; 26 3b 57 3a ; 0xf63a3
+ jnbe short 063c0h ; 77 17 ; 0xf63a7
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf63a9
+ cmp dx, word [es:bx+03ah] ; 26 3b 57 3a ; 0xf63ac
+ jne short 063e6h ; 75 34 ; 0xf63b0
+ cmp cx, word [es:bx+038h] ; 26 3b 4f 38 ; 0xf63b2
+ jnbe short 063c0h ; 77 08 ; 0xf63b6
+ jne short 063e6h ; 75 2c ; 0xf63b8
+ cmp si, word [es:bx+036h] ; 26 3b 77 36 ; 0xf63ba
+ jc short 063e6h ; 72 26 ; 0xf63be
+ mov bx, 00eeah ; bb ea 0e ; 0xf63c0 disk.c:564
+ mov cx, ds ; 8c d9 ; 0xf63c3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf63c5
+ call 018d9h ; e8 0e b5 ; 0xf63c8
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf63cb
+ xor ah, ah ; 30 e4 ; 0xf63ce
+ push ax ; 50 ; 0xf63d0
+ mov ax, 00805h ; b8 05 08 ; 0xf63d1
+ push ax ; 50 ; 0xf63d4
+ mov ax, 00818h ; b8 18 08 ; 0xf63d5
+ push ax ; 50 ; 0xf63d8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf63d9
+ push ax ; 50 ; 0xf63dc
+ call 0191ch ; e8 3c b5 ; 0xf63dd
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf63e0
+ jmp near 064ddh ; e9 f7 00 ; 0xf63e3 disk.c:565
+ mov ah, byte [bp+017h] ; 8a 66 17 ; 0xf63e6 disk.c:569
+ mov byte [bp-008h], ah ; 88 66 f8 ; 0xf63e9
+ mov byte [bp-007h], 000h ; c6 46 f9 00 ; 0xf63ec
+ cmp word [bp-008h], strict byte 00044h ; 83 7e f8 44 ; 0xf63f0
+ je short 063fch ; 74 06 ; 0xf63f4
+ cmp word [bp-008h], strict byte 00047h ; 83 7e f8 47 ; 0xf63f6
+ jne short 063ffh ; 75 03 ; 0xf63fa
+ jmp near 064feh ; e9 ff 00 ; 0xf63fc disk.c:570
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf63ff disk.c:573
+ mov word [es:di+018h], strict word 00000h ; 26 c7 45 18 00 00 ; 0xf6402
+ mov word [es:di+01ah], strict word 00000h ; 26 c7 45 1a 00 00 ; 0xf6408 disk.c:574
+ mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf640e
+ mov dx, word [bp-004h] ; 8b 56 fc ; 0xf6414 disk.c:577
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf6417
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf641b
+ mov word [es:di+004h], dx ; 26 89 55 04 ; 0xf641e
+ mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf6422
+ mov word [es:di], si ; 26 89 35 ; 0xf6426
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf6429 disk.c:578
+ mov word [es:di+008h], dx ; 26 89 55 08 ; 0xf642c
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf6430
+ mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf6433
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf6437 disk.c:579
+ mov word [es:di+00eh], dx ; 26 89 55 0e ; 0xf643a
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf643e disk.c:580
+ mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf6444 disk.c:581
+ mov ah, byte [bp-002h] ; 8a 66 fe ; 0xf644a disk.c:582
+ mov byte [es:di+00ch], ah ; 26 88 65 0c ; 0xf644d
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6451 disk.c:585
+ sal bx, 1 ; d1 e3 ; 0xf6454
+ xor ah, ah ; 30 e4 ; 0xf6456
+ sal ax, 1 ; d1 e0 ; 0xf6458
+ sal ax, 1 ; d1 e0 ; 0xf645a
+ add bx, ax ; 01 c3 ; 0xf645c
+ push ES ; 06 ; 0xf645e
+ push di ; 57 ; 0xf645f
+ call word [word bx+00002h] ; ff 97 02 00 ; 0xf6460
+ mov dx, ax ; 89 c2 ; 0xf6464
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf6466 disk.c:586
+ mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf6469
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf646d
+ les bx, [bp-012h] ; c4 5e ee ; 0xf6470 disk.c:587
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6473
+ test dl, dl ; 84 d2 ; 0xf6477 disk.c:589
+ je short 063fch ; 74 81 ; 0xf6479
+ mov bx, 00eeah ; bb ea 0e ; 0xf647b disk.c:590
+ mov cx, ds ; 8c d9 ; 0xf647e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6480
+ call 018d9h ; e8 53 b4 ; 0xf6483
+ mov al, dl ; 88 d0 ; 0xf6486
+ xor ah, ah ; 30 e4 ; 0xf6488
+ push ax ; 50 ; 0xf648a
+ push word [bp-008h] ; ff 76 f8 ; 0xf648b
+ mov ax, 00805h ; b8 05 08 ; 0xf648e
+ push ax ; 50 ; 0xf6491
+ mov ax, 00769h ; b8 69 07 ; 0xf6492
+ push ax ; 50 ; 0xf6495
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6496
+ push ax ; 50 ; 0xf6499
+ call 0191ch ; e8 7f b4 ; 0xf649a
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf649d
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf64a0 disk.c:591
+ xor ah, ah ; 30 e4 ; 0xf64a3
+ or ah, 00ch ; 80 cc 0c ; 0xf64a5
+ jmp short 064e5h ; eb 3b ; 0xf64a8 disk.c:592
+ or ah, 0b2h ; 80 cc b2 ; 0xf64aa disk.c:604
+ jmp short 064e5h ; eb 36 ; 0xf64ad
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf64af disk.c:609
+ push ax ; 50 ; 0xf64b2
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf64b3
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf64b6
+ mov bx, di ; 89 fb ; 0xf64b9
+ mov cx, word [bp-014h] ; 8b 4e ec ; 0xf64bb
+ call 05ac8h ; e8 07 f6 ; 0xf64be
+ test ax, ax ; 85 c0 ; 0xf64c1
+ je short 064feh ; 74 39 ; 0xf64c3
+ jmp short 064ddh ; eb 16 ; 0xf64c5 disk.c:610
+ cmp ax, strict word 00006h ; 3d 06 00 ; 0xf64c7 disk.c:617
+ je short 064feh ; 74 32 ; 0xf64ca
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf64cc
+ jc short 064ddh ; 72 0c ; 0xf64cf
+ jbe short 064feh ; 76 2b ; 0xf64d1
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf64d3
+ jc short 064ddh ; 72 05 ; 0xf64d6
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf64d8
+ jbe short 064feh ; 76 21 ; 0xf64db
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf64dd disk.c:637
+ xor ah, ah ; 30 e4 ; 0xf64e0
+ or ah, 001h ; 80 cc 01 ; 0xf64e2
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf64e5
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf64e8 disk.c:639
+ xor ah, ah ; 30 e4 ; 0xf64eb
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf64ed disk.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf64f0
+ mov es, dx ; 8e c2 ; 0xf64f3
+ mov byte [es:bx], al ; 26 88 07 ; 0xf64f5
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64f8 disk.c:640
+ jmp short 06512h ; eb 14 ; 0xf64fc disk.c:641
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf64fe disk.c:644
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf6502 disk.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6505
+ mov es, ax ; 8e c0 ; 0xf6508
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf650a
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf650e disk.c:647
+ mov sp, bp ; 89 ec ; 0xf6512 disk.c:649
+ pop bp ; 5d ; 0xf6514
+ retn ; c3 ; 0xf6515
+ ; disGetNextSymbol 0xf6516 LB 0x4ea2 -> off=0x0 cb=0000000000000153 uValue=00000000000f4f16 'int14_function'
+int14_function: ; 0xf6516 LB 0x153
+ push bp ; 55 ; 0xf6516 serial.c:60
+ mov bp, sp ; 89 e5 ; 0xf6517
+ push si ; 56 ; 0xf6519
+ push di ; 57 ; 0xf651a
+ sti ; fb ; 0xf651b serial.c:65
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf651c serial.c:67
+ sal si, 1 ; d1 e6 ; 0xf651f
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6521 serial.c:48
+ mov es, ax ; 8e c0 ; 0xf6524
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6526
+ mov bx, si ; 89 f3 ; 0xf6529 serial.c:49
+ mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf652b serial.c:68
+ add di, strict byte 0007ch ; 83 c7 7c ; 0xf652e
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf6531 serial.c:38
+ cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf6534 serial.c:69
+ jnc short 0653eh ; 73 04 ; 0xf6538
+ test si, si ; 85 f6 ; 0xf653a
+ jnbe short 06541h ; 77 03 ; 0xf653c
+ jmp near 0665eh ; e9 1d 01 ; 0xf653e
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6541 serial.c:70
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf6544
+ jc short 06555h ; 72 0d ; 0xf6546
+ jbe short 065b5h ; 76 6b ; 0xf6548
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf654a
+ je short 065adh ; 74 5f ; 0xf654c
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf654e
+ je short 065b0h ; 74 5e ; 0xf6550
+ jmp near 06658h ; e9 03 01 ; 0xf6552
+ test al, al ; 84 c0 ; 0xf6555
+ jne short 065b2h ; 75 59 ; 0xf6557
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf6559 serial.c:72
+ in AL, DX ; ec ; 0xf655c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf655d
+ or AL, strict byte 080h ; 0c 80 ; 0xf655f
+ out DX, AL ; ee ; 0xf6561
+ lea si, [bx+001h] ; 8d 77 01 ; 0xf6562
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6565 serial.c:73
+ test AL, strict byte 0e0h ; a8 e0 ; 0xf6568
+ jne short 06578h ; 75 0c ; 0xf656a
+ mov AL, strict byte 017h ; b0 17 ; 0xf656c serial.c:74
+ mov dx, bx ; 89 da ; 0xf656e
+ out DX, AL ; ee ; 0xf6570
+ mov AL, strict byte 004h ; b0 04 ; 0xf6571 serial.c:75
+ mov dx, si ; 89 f2 ; 0xf6573
+ out DX, AL ; ee ; 0xf6575
+ jmp short 0658fh ; eb 17 ; 0xf6576 serial.c:76
+ and AL, strict byte 0e0h ; 24 e0 ; 0xf6578 serial.c:77
+ xor ah, ah ; 30 e4 ; 0xf657a
+ mov CL, strict byte 005h ; b1 05 ; 0xf657c
+ sar ax, CL ; d3 f8 ; 0xf657e
+ mov cl, al ; 88 c1 ; 0xf6580
+ mov ax, 00600h ; b8 00 06 ; 0xf6582
+ sar ax, CL ; d3 f8 ; 0xf6585
+ mov dx, bx ; 89 da ; 0xf6587 serial.c:78
+ out DX, AL ; ee ; 0xf6589
+ mov al, ah ; 88 e0 ; 0xf658a serial.c:79
+ mov dx, si ; 89 f2 ; 0xf658c
+ out DX, AL ; ee ; 0xf658e
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf658f serial.c:81
+ and AL, strict byte 01fh ; 24 1f ; 0xf6592
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf6594
+ out DX, AL ; ee ; 0xf6597
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6598 serial.c:82
+ in AL, DX ; ec ; 0xf659b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf659c
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf659e
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf65a1 serial.c:83
+ in AL, DX ; ec ; 0xf65a4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65a5
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf65a7
+ jmp near 06639h ; e9 8c 00 ; 0xf65aa
+ jmp near 06647h ; e9 97 00 ; 0xf65ad
+ jmp short 06600h ; eb 4e ; 0xf65b0
+ jmp near 06658h ; e9 a3 00 ; 0xf65b2
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf65b5 serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf65b8
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf65bb serial.c:88
+ in AL, DX ; ec ; 0xf65be
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65bf
+ and ax, strict word 00060h ; 25 60 00 ; 0xf65c1
+ cmp ax, strict word 00060h ; 3d 60 00 ; 0xf65c4
+ je short 065e2h ; 74 19 ; 0xf65c7
+ test cl, cl ; 84 c9 ; 0xf65c9
+ je short 065e2h ; 74 15 ; 0xf65cb
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf65cd serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf65d0
+ mov es, ax ; 8e c0 ; 0xf65d3
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf65d5
+ cmp ax, si ; 39 f0 ; 0xf65d8 serial.c:90
+ je short 065bbh ; 74 df ; 0xf65da
+ mov si, ax ; 89 c6 ; 0xf65dc serial.c:91
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf65de serial.c:92
+ jmp short 065bbh ; eb d9 ; 0xf65e0 serial.c:94
+ test cl, cl ; 84 c9 ; 0xf65e2 serial.c:95
+ je short 065ech ; 74 06 ; 0xf65e4
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf65e6
+ mov dx, bx ; 89 da ; 0xf65e9
+ out DX, AL ; ee ; 0xf65eb
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf65ec serial.c:96
+ in AL, DX ; ec ; 0xf65ef
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65f0
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf65f2
+ test cl, cl ; 84 c9 ; 0xf65f5 serial.c:97
+ jne short 06639h ; 75 40 ; 0xf65f7
+ or AL, strict byte 080h ; 0c 80 ; 0xf65f9
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf65fb
+ jmp short 06639h ; eb 39 ; 0xf65fe
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf6600 serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6603
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6606 serial.c:102
+ in AL, DX ; ec ; 0xf6609
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf660a
+ test AL, strict byte 001h ; a8 01 ; 0xf660c
+ jne short 06629h ; 75 19 ; 0xf660e
+ test cl, cl ; 84 c9 ; 0xf6610
+ je short 06629h ; 74 15 ; 0xf6612
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf6614 serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6617
+ mov es, ax ; 8e c0 ; 0xf661a
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf661c
+ cmp ax, si ; 39 f0 ; 0xf661f serial.c:104
+ je short 06606h ; 74 e3 ; 0xf6621
+ mov si, ax ; 89 c6 ; 0xf6623 serial.c:105
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf6625 serial.c:106
+ jmp short 06606h ; eb dd ; 0xf6627 serial.c:108
+ test cl, cl ; 84 c9 ; 0xf6629 serial.c:109
+ je short 0663fh ; 74 12 ; 0xf662b
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf662d serial.c:110
+ mov dx, bx ; 89 da ; 0xf6631 serial.c:111
+ in AL, DX ; ec ; 0xf6633
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6634
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6636
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6639 serial.c:112
+ jmp short 06662h ; eb 23 ; 0xf663d
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf663f serial.c:113
+ in AL, DX ; ec ; 0xf6642
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6643
+ jmp short 065fbh ; eb b4 ; 0xf6645
+ lea dx, [si+005h] ; 8d 54 05 ; 0xf6647 serial.c:118
+ in AL, DX ; ec ; 0xf664a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf664b
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf664d
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf6650 serial.c:119
+ in AL, DX ; ec ; 0xf6653
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6654
+ jmp short 06636h ; eb de ; 0xf6656
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6658 serial.c:123
+ jmp short 06662h ; eb 04 ; 0xf665c serial.c:125
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf665e serial.c:126
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6662 serial.c:128
+ pop di ; 5f ; 0xf6665
+ pop si ; 5e ; 0xf6666
+ pop bp ; 5d ; 0xf6667
+ retn ; c3 ; 0xf6668
+ ; disGetNextSymbol 0xf6669 LB 0x4d4f -> off=0x0 cb=0000000000000043 uValue=00000000000f5069 'timer_wait'
+timer_wait: ; 0xf6669 LB 0x43
+ push bp ; 55 ; 0xf6669 system.c:289
+ mov bp, sp ; 89 e5 ; 0xf666a
+ push bx ; 53 ; 0xf666c
+ push cx ; 51 ; 0xf666d
+ push ax ; 50 ; 0xf666e
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf666f system.c:296
+ xor cx, cx ; 31 c9 ; 0xf6672
+ call 0b040h ; e8 c9 49 ; 0xf6674
+ mov cx, ax ; 89 c1 ; 0xf6677
+ mov bx, dx ; 89 d3 ; 0xf6679
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf667b system.c:298
+ in AL, DX ; ec ; 0xf667e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf667f
+ and AL, strict byte 010h ; 24 10 ; 0xf6681
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6683
+ add cx, strict byte 0ffffh ; 83 c1 ff ; 0xf6686 system.c:299
+ adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf6689
+ cmp bx, strict byte 0ffffh ; 83 fb ff ; 0xf668c
+ jne short 06696h ; 75 05 ; 0xf668f
+ cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf6691
+ je short 066a5h ; 74 0f ; 0xf6694
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6696 system.c:302
+ in AL, DX ; ec ; 0xf6699
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf669a
+ and AL, strict byte 010h ; 24 10 ; 0xf669c
+ cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf669e system.c:303
+ jne short 06696h ; 75 f3 ; 0xf66a1
+ jmp short 06686h ; eb e1 ; 0xf66a3 system.c:305
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf66a5 system.c:306
+ pop cx ; 59 ; 0xf66a8
+ pop bx ; 5b ; 0xf66a9
+ pop bp ; 5d ; 0xf66aa
+ retn ; c3 ; 0xf66ab
+ ; disGetNextSymbol 0xf66ac LB 0x4d0c -> off=0x0 cb=0000000000000030 uValue=00000000000f50ac 'set_enable_a20'
+set_enable_a20: ; 0xf66ac LB 0x30
+ push bp ; 55 ; 0xf66ac system.c:308
+ mov bp, sp ; 89 e5 ; 0xf66ad
+ push bx ; 53 ; 0xf66af
+ push cx ; 51 ; 0xf66b0
+ push dx ; 52 ; 0xf66b1
+ mov bx, ax ; 89 c3 ; 0xf66b2
+ mov dx, 00092h ; ba 92 00 ; 0xf66b4 system.c:315
+ in AL, DX ; ec ; 0xf66b7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf66b8
+ mov cl, al ; 88 c1 ; 0xf66ba
+ test bx, bx ; 85 db ; 0xf66bc system.c:318
+ je short 066c5h ; 74 05 ; 0xf66be
+ or AL, strict byte 002h ; 0c 02 ; 0xf66c0 system.c:319
+ out DX, AL ; ee ; 0xf66c2
+ jmp short 066c8h ; eb 03 ; 0xf66c3 system.c:320
+ and AL, strict byte 0fdh ; 24 fd ; 0xf66c5 system.c:321
+ out DX, AL ; ee ; 0xf66c7
+ test cl, 002h ; f6 c1 02 ; 0xf66c8 system.c:323
+ je short 066d2h ; 74 05 ; 0xf66cb
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf66cd
+ jmp short 066d4h ; eb 02 ; 0xf66d0
+ xor ax, ax ; 31 c0 ; 0xf66d2
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf66d4 system.c:324
+ pop dx ; 5a ; 0xf66d7
+ pop cx ; 59 ; 0xf66d8
+ pop bx ; 5b ; 0xf66d9
+ pop bp ; 5d ; 0xf66da
+ retn ; c3 ; 0xf66db
+ ; disGetNextSymbol 0xf66dc LB 0x4cdc -> off=0x3b cb=000000000000030d uValue=00000000000f5117 'int15_function'
+ db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h
+ db 024h, 022h, 000h, 002h, 06ah, 053h, 067h, 0a1h, 069h, 067h, 067h, 0a1h, 069h, 0efh, 067h, 0fdh
+ db 067h, 00dh, 068h, 0adh, 068h, 0bah, 068h, 0c3h, 068h, 006h, 068h, 006h, 068h, 088h, 069h, 0b3h
+ db 069h, 0c6h, 069h, 0a1h, 069h, 0dah, 069h, 071h, 068h, 0e3h, 069h
+int15_function: ; 0xf6717 LB 0x30d
+ push bp ; 55 ; 0xf6717 system.c:345
+ mov bp, sp ; 89 e5 ; 0xf6718
+ push si ; 56 ; 0xf671a
+ push di ; 57 ; 0xf671b
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf671c system.c:352
+ xor ah, ah ; 30 e4 ; 0xf671f
+ mov dx, ax ; 89 c2 ; 0xf6721
+ cmp ax, 000ech ; 3d ec 00 ; 0xf6723
+ jnbe short 0675dh ; 77 35 ; 0xf6726
+ push CS ; 0e ; 0xf6728
+ pop ES ; 07 ; 0xf6729
+ mov cx, strict word 00014h ; b9 14 00 ; 0xf672a
+ mov di, 066dch ; bf dc 66 ; 0xf672d
+ repne scasb ; f2 ae ; 0xf6730
+ sal cx, 1 ; d1 e1 ; 0xf6732
+ mov di, cx ; 89 cf ; 0xf6734
+ mov cx, word [cs:di+066efh] ; 2e 8b 8d ef 66 ; 0xf6736
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf673b
+ xor bh, bh ; 30 ff ; 0xf673e
+ mov si, word [bp+018h] ; 8b 76 18 ; 0xf6740
+ and si, strict byte 0fffeh ; 83 e6 fe ; 0xf6743
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf6746
+ or dl, 001h ; 80 ca 01 ; 0xf6749
+ mov ax, bx ; 89 d8 ; 0xf674c
+ or ah, 086h ; 80 cc 86 ; 0xf674e
+ jmp cx ; ff e1 ; 0xf6751
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6753 system.c:354
+ xor ah, ah ; 30 e4 ; 0xf6756
+ cmp ax, 000c0h ; 3d c0 00 ; 0xf6758
+ je short 06760h ; 74 03 ; 0xf675b
+ jmp near 06a02h ; e9 a2 02 ; 0xf675d system.c:355
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6760 system.c:361
+ jmp near 069aah ; e9 43 02 ; 0xf6764
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6767 system.c:365
+ xor ah, ah ; 30 e4 ; 0xf676a
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf676c
+ jc short 0677fh ; 72 0e ; 0xf676f
+ jbe short 06793h ; 76 20 ; 0xf6771
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6773
+ je short 067c0h ; 74 48 ; 0xf6776
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf6778
+ je short 067a3h ; 74 26 ; 0xf677b
+ jmp short 067cdh ; eb 4e ; 0xf677d
+ test ax, ax ; 85 c0 ; 0xf677f
+ jne short 067cdh ; 75 4a ; 0xf6781
+ xor ax, ax ; 31 c0 ; 0xf6783 system.c:367
+ call 066ach ; e8 24 ff ; 0xf6785
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6788 system.c:368
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf678c system.c:369
+ jmp near 06806h ; e9 73 00 ; 0xf6790 system.c:370
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6793 system.c:372
+ call 066ach ; e8 13 ff ; 0xf6796
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6799 system.c:373
+ mov byte [bp+013h], bh ; 88 7e 13 ; 0xf679d system.c:374
+ jmp near 06806h ; e9 63 00 ; 0xf67a0 system.c:375
+ mov dx, 00092h ; ba 92 00 ; 0xf67a3 system.c:377
+ in AL, DX ; ec ; 0xf67a6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf67a7
+ shr ax, 1 ; d1 e8 ; 0xf67a9
+ and ax, strict word 00001h ; 25 01 00 ; 0xf67ab
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf67ae
+ mov dl, al ; 88 c2 ; 0xf67b1
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf67b3
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf67b6 system.c:378
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf67ba system.c:379
+ jmp near 06806h ; e9 46 00 ; 0xf67bd system.c:380
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf67c0 system.c:382
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf67c4 system.c:383
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf67c7 system.c:384
+ jmp near 06806h ; e9 39 00 ; 0xf67ca system.c:385
+ mov bx, 00eeah ; bb ea 0e ; 0xf67cd system.c:387
+ mov cx, ds ; 8c d9 ; 0xf67d0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf67d2
+ call 018d9h ; e8 01 b1 ; 0xf67d5
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf67d8
+ xor ah, ah ; 30 e4 ; 0xf67db
+ push ax ; 50 ; 0xf67dd
+ mov ax, 0083eh ; b8 3e 08 ; 0xf67de
+ push ax ; 50 ; 0xf67e1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf67e2
+ push ax ; 50 ; 0xf67e5
+ call 0191ch ; e8 33 b1 ; 0xf67e6
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf67e9
+ jmp near 069a1h ; e9 b2 01 ; 0xf67ec
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf67ef system.c:408
+ xor ah, ah ; 30 e4 ; 0xf67f2
+ or ah, 086h ; 80 cc 86 ; 0xf67f4
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf67f7
+ jmp near 069fbh ; e9 fe 01 ; 0xf67fa
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf67fd system.c:414
+ xor al, bl ; 30 d8 ; 0xf6801 system.c:415
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6803
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6806 system.c:416
+ pop di ; 5f ; 0xf6809
+ pop si ; 5e ; 0xf680a
+ pop bp ; 5d ; 0xf680b
+ retn ; c3 ; 0xf680c
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf680d system.c:419
+ jne short 06879h ; 75 66 ; 0xf6811
+ mov bx, 000a0h ; bb a0 00 ; 0xf6813 system.c:38
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf6816
+ mov es, cx ; 8e c1 ; 0xf6819
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf681b
+ test bl, 001h ; f6 c3 01 ; 0xf681e system.c:39
+ jne short 06871h ; 75 4e ; 0xf6821
+ mov bx, 000a0h ; bb a0 00 ; 0xf6823 system.c:41
+ mov DL, strict byte 001h ; b2 01 ; 0xf6826
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf6828 system.c:43
+ mov bx, 00098h ; bb 98 00 ; 0xf682b system.c:51
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf682e
+ mov word [es:bx], dx ; 26 89 17 ; 0xf6831 system.c:53
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6834 system.c:51
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6837
+ mov word [es:bx], ax ; 26 89 07 ; 0xf683a system.c:53
+ mov bx, 0009ch ; bb 9c 00 ; 0xf683d system.c:51
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf6840
+ mov word [es:bx], dx ; 26 89 17 ; 0xf6843 system.c:53
+ mov bx, 0009eh ; bb 9e 00 ; 0xf6846 system.c:51
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf6849
+ mov word [es:bx], dx ; 26 89 17 ; 0xf684c system.c:53
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf684f system.c:428
+ mov dx, 000a1h ; ba a1 00 ; 0xf6853 system.c:429
+ in AL, DX ; ec ; 0xf6856
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6857
+ and AL, strict byte 0feh ; 24 fe ; 0xf6859 system.c:430
+ out DX, AL ; ee ; 0xf685b
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf685c system.c:431
+ call 0165fh ; e8 fd ad ; 0xf685f
+ mov dl, al ; 88 c2 ; 0xf6862 system.c:432
+ or dl, 040h ; 80 ca 40 ; 0xf6864
+ xor dh, dh ; 30 f6 ; 0xf6867
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6869
+ call 0167ah ; e8 0b ae ; 0xf686c
+ jmp short 06806h ; eb 95 ; 0xf686f system.c:433
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf6871 system.c:436
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6874 system.c:437
+ jmp short 06806h ; eb 8d ; 0xf6877 system.c:439
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf6879
+ jne short 0689bh ; 75 1d ; 0xf687c
+ mov bx, 000a0h ; bb a0 00 ; 0xf687e system.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6881
+ mov es, ax ; 8e c0 ; 0xf6884
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6886
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf688a system.c:442
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf688e system.c:443
+ call 0165fh ; e8 cb ad ; 0xf6891
+ mov dl, al ; 88 c2 ; 0xf6894 system.c:444
+ and dl, 0bfh ; 80 e2 bf ; 0xf6896
+ jmp short 06867h ; eb cc ; 0xf6899
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf689b system.c:447
+ mov dx, ax ; 89 c2 ; 0xf689e system.c:449
+ xor dh, ah ; 30 e6 ; 0xf68a0
+ xor al, bl ; 30 d8 ; 0xf68a2
+ dec dx ; 4a ; 0xf68a4
+ or ax, dx ; 09 d0 ; 0xf68a5
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf68a7
+ jmp near 06806h ; e9 59 ff ; 0xf68aa system.c:452
+ sti ; fb ; 0xf68ad system.c:458
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf68ae system.c:459
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf68b1
+ call 06669h ; e8 b2 fd ; 0xf68b4
+ jmp near 06806h ; e9 4c ff ; 0xf68b7 system.c:460
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf68ba system.c:482
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf68bd system.c:483
+ jmp near 06806h ; e9 43 ff ; 0xf68c0 system.c:485
+ cli ; fa ; 0xf68c3 system.c:494
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf68c4 system.c:496
+ call 066ach ; e8 e2 fd ; 0xf68c7
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68ca system.c:499
+ add bx, strict byte 00038h ; 83 c3 38 ; 0xf68cd
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf68d0 system.c:51
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf68d3 system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68d8 system.c:500
+ add bx, strict byte 0003ah ; 83 c3 3a ; 0xf68db
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf68de system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf68e1 system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68e6 system.c:501
+ add bx, strict byte 0003ch ; 83 c3 3c ; 0xf68e9
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf68ec system.c:41
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf68ef system.c:43
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68f3 system.c:502
+ add bx, strict byte 0003dh ; 83 c3 3d ; 0xf68f6
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf68f9 system.c:41
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf68fc
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6900 system.c:503
+ add bx, strict byte 0003eh ; 83 c3 3e ; 0xf6903
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6906 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6909
+ mov AL, strict byte 011h ; b0 11 ; 0xf690e system.c:506
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf6910
+ out DX, AL ; ee ; 0xf6913
+ mov dx, 000a0h ; ba a0 00 ; 0xf6914 system.c:507
+ out DX, AL ; ee ; 0xf6917
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf6918 system.c:508
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf691b
+ out DX, AL ; ee ; 0xf691e
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf691f system.c:509
+ mov dx, 000a1h ; ba a1 00 ; 0xf6922
+ out DX, AL ; ee ; 0xf6925
+ mov AL, strict byte 004h ; b0 04 ; 0xf6926 system.c:510
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6928
+ out DX, AL ; ee ; 0xf692b
+ mov AL, strict byte 002h ; b0 02 ; 0xf692c system.c:511
+ mov dx, 000a1h ; ba a1 00 ; 0xf692e
+ out DX, AL ; ee ; 0xf6931
+ mov AL, strict byte 001h ; b0 01 ; 0xf6932 system.c:512
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6934
+ out DX, AL ; ee ; 0xf6937
+ mov dx, 000a1h ; ba a1 00 ; 0xf6938 system.c:513
+ out DX, AL ; ee ; 0xf693b
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf693c system.c:515
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf693e
+ out DX, AL ; ee ; 0xf6941
+ mov dx, 000a1h ; ba a1 00 ; 0xf6942 system.c:516
+ out DX, AL ; ee ; 0xf6945
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf6946 system.c:518
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6949
+ lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf694e
+ push strict byte 00038h ; 6a 38 ; 0xf6953
+ call 06958h ; e8 00 00 ; 0xf6955
+ pop ax ; 58 ; 0xf6958
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6959
+ push ax ; 50 ; 0xf695c
+ smsw ax ; 0f 01 e0 ; 0xf695d
+ or AL, strict byte 001h ; 0c 01 ; 0xf6960
+ lmsw ax ; 0f 01 f0 ; 0xf6962
+ retf ; cb ; 0xf6965
+ mov ax, strict word 00018h ; b8 18 00 ; 0xf6966
+ mov ds, ax ; 8e d8 ; 0xf6969
+ add AL, strict byte 008h ; 04 08 ; 0xf696b
+ mov es, ax ; 8e c0 ; 0xf696d
+ add AL, strict byte 008h ; 04 08 ; 0xf696f
+ mov ss, ax ; 8e d0 ; 0xf6971
+ lea ax, [bp+004h] ; 8d 46 04 ; 0xf6973 system.c:519
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xf6976
+ popaw ; 61 ; 0xf6978
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6979
+ pop cx ; 59 ; 0xf697c
+ pop ax ; 58 ; 0xf697d
+ pop ax ; 58 ; 0xf697e
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf697f
+ push ax ; 50 ; 0xf6982
+ push cx ; 51 ; 0xf6983
+ retf ; cb ; 0xf6984
+ jmp near 06806h ; e9 7e fe ; 0xf6985 system.c:525
+ mov bx, 00eeah ; bb ea 0e ; 0xf6988 system.c:532
+ mov cx, ds ; 8c d9 ; 0xf698b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf698d
+ call 018d9h ; e8 46 af ; 0xf6990
+ mov ax, 0087eh ; b8 7e 08 ; 0xf6993
+ push ax ; 50 ; 0xf6996
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6997
+ push ax ; 50 ; 0xf699a
+ call 0191ch ; e8 7e af ; 0xf699b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf699e
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf69a1
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf69a5
+ xor ah, ah ; 30 e4 ; 0xf69a8
+ or ah, 086h ; 80 cc 86 ; 0xf69aa
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf69ad
+ jmp near 06806h ; e9 53 fe ; 0xf69b0
+ mov word [bp+018h], si ; 89 76 18 ; 0xf69b3 system.c:538
+ mov word [bp+012h], bx ; 89 5e 12 ; 0xf69b6 system.c:539
+ mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf69b9 system.c:540
+ mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf69be system.c:541
+ jmp near 06806h ; e9 40 fe ; 0xf69c3 system.c:542
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf69c6 system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf69c9
+ mov es, ax ; 8e c0 ; 0xf69cc
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf69ce
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf69d1 system.c:49
+ mov word [bp+018h], si ; 89 76 18 ; 0xf69d4 system.c:546
+ jmp near 06806h ; e9 2c fe ; 0xf69d7 system.c:547
+ mov ax, 008adh ; b8 ad 08 ; 0xf69da system.c:550
+ push ax ; 50 ; 0xf69dd
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf69de
+ jmp short 0699ah ; eb b7 ; 0xf69e1
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf69e3 system.c:562
+ jne short 06a02h ; 75 19 ; 0xf69e7
+ mov word [bp+012h], bx ; 89 5e 12 ; 0xf69e9 system.c:564
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf69ec system.c:565
+ xor ah, ah ; 30 e4 ; 0xf69ef
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf69f1
+ jc short 069fbh ; 72 05 ; 0xf69f4
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf69f6
+ jbe short 069d4h ; 76 d9 ; 0xf69f9
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf69fb system.c:568
+ jmp near 06806h ; e9 04 fe ; 0xf69ff system.c:569
+ mov bx, 00eeah ; bb ea 0e ; 0xf6a02 system.c:573
+ mov cx, ds ; 8c d9 ; 0xf6a05
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6a07
+ call 018d9h ; e8 cc ae ; 0xf6a0a
+ push word [bp+00ch] ; ff 76 0c ; 0xf6a0d
+ push word [bp+012h] ; ff 76 12 ; 0xf6a10
+ mov ax, 008c4h ; b8 c4 08 ; 0xf6a13
+ push ax ; 50 ; 0xf6a16
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6a17
+ push ax ; 50 ; 0xf6a1a
+ call 0191ch ; e8 fe ae ; 0xf6a1b
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6a1e
+ jmp near 069a1h ; e9 7d ff ; 0xf6a21
+ ; disGetNextSymbol 0xf6a24 LB 0x4994 -> off=0x0 cb=000000000000018f uValue=00000000000f5424 'inv_op_handler'
+inv_op_handler: ; 0xf6a24 LB 0x18f
+ push bp ; 55 ; 0xf6a24 invop.c:237
+ mov bp, sp ; 89 e5 ; 0xf6a25
+ push si ; 56 ; 0xf6a27
+ push di ; 57 ; 0xf6a28
+ push ax ; 50 ; 0xf6a29
+ push ax ; 50 ; 0xf6a2a
+ les bx, [bp+018h] ; c4 5e 18 ; 0xf6a2b invop.c:239
+ cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6a2e invop.c:241
+ jne short 06a3ah ; 75 06 ; 0xf6a32
+ inc word [bp+018h] ; ff 46 18 ; 0xf6a34 invop.c:243
+ jmp near 06bach ; e9 72 01 ; 0xf6a37 invop.c:244
+ cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf6a3a
+ je short 06a44h ; 74 03 ; 0xf6a3f
+ jmp near 06ba8h ; e9 64 01 ; 0xf6a41
+ mov si, 00800h ; be 00 08 ; 0xf6a44 invop.c:246
+ xor ax, ax ; 31 c0 ; 0xf6a47
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6a49
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6a4c invop.c:249
+ mov es, ax ; 8e c0 ; 0xf6a4f invop.c:257
+ mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6a51
+ sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6a55
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6a58
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6a5c invop.c:258
+ mov es, dx ; 8e c2 ; 0xf6a60
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6a62
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a65 invop.c:259
+ mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6a68
+ mov es, dx ; 8e c2 ; 0xf6a6c
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6a6e
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a72 invop.c:260
+ mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6a75
+ mov es, dx ; 8e c2 ; 0xf6a79
+ mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6a7b
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a7f invop.c:263
+ mov bl, byte [es:si+038h] ; 26 8a 5c 38 ; 0xf6a82
+ xor bh, bh ; 30 ff ; 0xf6a86
+ mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6a88
+ mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6a8c invop.c:264
+ xor dx, dx ; 31 d2 ; 0xf6a90
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6a92
+ sal ax, 1 ; d1 e0 ; 0xf6a95
+ rcl dx, 1 ; d1 d2 ; 0xf6a97
+ loop 06a95h ; e2 fa ; 0xf6a99
+ cmp bx, dx ; 39 d3 ; 0xf6a9b
+ jne short 06aa3h ; 75 04 ; 0xf6a9d
+ cmp di, ax ; 39 c7 ; 0xf6a9f
+ je short 06aa8h ; 74 05 ; 0xf6aa1
+ mov word [bp-006h], strict word 00001h ; c7 46 fa 01 00 ; 0xf6aa3 invop.c:265
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6aa8 invop.c:266
+ mov bl, byte [es:si+04ah] ; 26 8a 5c 4a ; 0xf6aab
+ xor bh, bh ; 30 ff ; 0xf6aaf
+ mov di, word [es:si+048h] ; 26 8b 7c 48 ; 0xf6ab1
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6ab5 invop.c:267
+ xor dx, dx ; 31 d2 ; 0xf6ab9
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6abb
+ sal ax, 1 ; d1 e0 ; 0xf6abe
+ rcl dx, 1 ; d1 d2 ; 0xf6ac0
+ loop 06abeh ; e2 fa ; 0xf6ac2
+ cmp bx, dx ; 39 d3 ; 0xf6ac4
+ jne short 06acch ; 75 04 ; 0xf6ac6
+ cmp di, ax ; 39 c7 ; 0xf6ac8
+ je short 06ad0h ; 74 04 ; 0xf6aca
+ or byte [bp-006h], 002h ; 80 4e fa 02 ; 0xf6acc invop.c:268
+ xor ax, ax ; 31 c0 ; 0xf6ad0 invop.c:271
+ push ax ; 50 ; 0xf6ad2
+ mov ax, 00800h ; b8 00 08 ; 0xf6ad3
+ push ax ; 50 ; 0xf6ad6
+ mov ax, strict word 0001fh ; b8 1f 00 ; 0xf6ad7
+ push ax ; 50 ; 0xf6ada
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6adb
+ lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6add
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6ae1
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6ae4 invop.c:274
+ mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6ae7
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6aeb
+ mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6aef invop.c:275
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6af3
+ mov dh, byte [es:si+039h] ; 26 8a 74 39 ; 0xf6af7 invop.c:276
+ mov dl, byte [es:si+038h] ; 26 8a 54 38 ; 0xf6afb
+ mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6aff
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6b03 invop.c:277
+ mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6b09 invop.c:280
+ mov word [es:si], ax ; 26 89 04 ; 0xf6b0d
+ mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6b10 invop.c:281
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6b14
+ mov dh, byte [es:si+04bh] ; 26 8a 74 4b ; 0xf6b18 invop.c:282
+ mov dl, byte [es:si+04ah] ; 26 8a 54 4a ; 0xf6b1c
+ xor ah, ah ; 30 e4 ; 0xf6b20
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6b22
+ mov al, byte [es:si+05ch] ; 26 8a 44 5c ; 0xf6b26 invop.c:285
+ mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6b2a
+ push ax ; 50 ; 0xf6b2e invop.c:286
+ push dx ; 52 ; 0xf6b2f
+ push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6b30
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6b34
+ lidt [ss:bx] ; 36 0f 01 1f ; 0xf6b36
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6b3a
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf6b3d invop.c:289
+ mov ax, 00080h ; b8 80 00 ; 0xf6b40
+ mov ss, ax ; 8e d0 ; 0xf6b43
+ mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6b45
+ mov ds, ax ; 8e d8 ; 0xf6b49
+ mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf6b4b
+ mov es, ax ; 8e c0 ; 0xf6b4f
+ smsw ax ; 0f 01 e0 ; 0xf6b51 invop.c:290
+ inc ax ; 40 ; 0xf6b54
+ lmsw ax ; 0f 01 f0 ; 0xf6b55
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6b58
+ test cx, strict word 00001h ; f7 c1 01 00 ; 0xf6b5b
+ je near 06b65h ; 0f 84 02 00 ; 0xf6b5f
+ mov es, ax ; 8e c0 ; 0xf6b63
+ test cx, strict word 00002h ; f7 c1 02 00 ; 0xf6b65
+ je near 06b8dh ; 0f 84 20 00 ; 0xf6b69
+ mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6b6d
+ mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6b72
+ mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6b77
+ mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6b7c
+ mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6b81
+ mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6b86
+ mov ds, ax ; 8e d8 ; 0xf6b8b
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6b8d
+ dec ax ; 48 ; 0xf6b90
+ mov cr0, eax ; 0f 22 c0 ; 0xf6b91
+ mov sp, strict word 00026h ; bc 26 00 ; 0xf6b94 invop.c:291
+ popaw ; 61 ; 0xf6b97
+ mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6b98
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6b9d
+ mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6ba0
+ iret ; cf ; 0xf6ba5
+ jmp short 06bach ; eb 04 ; 0xf6ba6 invop.c:343
+ sti ; fb ; 0xf6ba8 invop.c:347
+ hlt ; f4 ; 0xf6ba9 invop.c:348
+ jmp short 06ba9h ; eb fd ; 0xf6baa
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6bac invop.c:350
+ pop di ; 5f ; 0xf6baf
+ pop si ; 5e ; 0xf6bb0
+ pop bp ; 5d ; 0xf6bb1
+ retn ; c3 ; 0xf6bb2
+ ; disGetNextSymbol 0xf6bb3 LB 0x4805 -> off=0x0 cb=0000000000000028 uValue=00000000000f55b3 'init_rtc'
+init_rtc: ; 0xf6bb3 LB 0x28
+ push bp ; 55 ; 0xf6bb3 timepci.c:74
+ mov bp, sp ; 89 e5 ; 0xf6bb4
+ push dx ; 52 ; 0xf6bb6
+ mov dx, strict word 00026h ; ba 26 00 ; 0xf6bb7 timepci.c:76
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6bba
+ call 0167ah ; e8 ba aa ; 0xf6bbd
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf6bc0 timepci.c:77
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6bc3
+ call 0167ah ; e8 b1 aa ; 0xf6bc6
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6bc9 timepci.c:78
+ call 0165fh ; e8 90 aa ; 0xf6bcc
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6bcf timepci.c:79
+ call 0165fh ; e8 8a aa ; 0xf6bd2
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6bd5 timepci.c:80
+ pop dx ; 5a ; 0xf6bd8
+ pop bp ; 5d ; 0xf6bd9
+ retn ; c3 ; 0xf6bda
+ ; disGetNextSymbol 0xf6bdb LB 0x47dd -> off=0x0 cb=0000000000000021 uValue=00000000000f55db 'rtc_updating'
+rtc_updating: ; 0xf6bdb LB 0x21
+ push bp ; 55 ; 0xf6bdb timepci.c:82
+ mov bp, sp ; 89 e5 ; 0xf6bdc
+ push dx ; 52 ; 0xf6bde
+ mov dx, 061a8h ; ba a8 61 ; 0xf6bdf timepci.c:95
+ dec dx ; 4a ; 0xf6be2 timepci.c:96
+ je short 06bf3h ; 74 0e ; 0xf6be3
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6be5 timepci.c:97
+ call 0165fh ; e8 74 aa ; 0xf6be8
+ test AL, strict byte 080h ; a8 80 ; 0xf6beb
+ jne short 06be2h ; 75 f3 ; 0xf6bed
+ xor ax, ax ; 31 c0 ; 0xf6bef timepci.c:98
+ jmp short 06bf6h ; eb 03 ; 0xf6bf1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6bf3 timepci.c:100
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6bf6 timepci.c:101
+ pop dx ; 5a ; 0xf6bf9
+ pop bp ; 5d ; 0xf6bfa
+ retn ; c3 ; 0xf6bfb
+ ; disGetNextSymbol 0xf6bfc LB 0x47bc -> off=0x0 cb=0000000000000098 uValue=00000000000f55fc 'int70_function'
+int70_function: ; 0xf6bfc LB 0x98
+ push bp ; 55 ; 0xf6bfc timepci.c:110
+ mov bp, sp ; 89 e5 ; 0xf6bfd
+ push si ; 56 ; 0xf6bff
+ push ax ; 50 ; 0xf6c00
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c01 timepci.c:116
+ call 0165fh ; e8 58 aa ; 0xf6c04
+ mov bl, al ; 88 c3 ; 0xf6c07
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6c09
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6c0c timepci.c:117
+ call 0165fh ; e8 4d aa ; 0xf6c0f
+ mov dl, al ; 88 c2 ; 0xf6c12
+ test bl, 060h ; f6 c3 60 ; 0xf6c14 timepci.c:119
+ je short 06c74h ; 74 5b ; 0xf6c17
+ test AL, strict byte 020h ; a8 20 ; 0xf6c19 timepci.c:120
+ je short 06c21h ; 74 04 ; 0xf6c1b
+ sti ; fb ; 0xf6c1d timepci.c:122
+ int 04ah ; cd 4a ; 0xf6c1e timepci.c:123
+ cli ; fa ; 0xf6c20 timepci.c:124
+ test dl, 040h ; f6 c2 40 ; 0xf6c21 timepci.c:126
+ je short 06c8bh ; 74 65 ; 0xf6c24
+ mov bx, 000a0h ; bb a0 00 ; 0xf6c26 timepci.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6c29
+ mov es, dx ; 8e c2 ; 0xf6c2c
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c2e
+ test al, al ; 84 c0 ; 0xf6c31 timepci.c:39
+ je short 06c8bh ; 74 56 ; 0xf6c33
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6c35 timepci.c:58
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf6c38
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6c3b
+ test bx, bx ; 85 db ; 0xf6c3f timepci.c:134
+ jne short 06c76h ; 75 33 ; 0xf6c41
+ cmp dx, 003d1h ; 81 fa d1 03 ; 0xf6c43
+ jnc short 06c76h ; 73 2d ; 0xf6c47
+ mov bx, 00098h ; bb 98 00 ; 0xf6c49 timepci.c:48
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf6c4c
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6c4f timepci.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6c52
+ mov si, 000a0h ; be a0 00 ; 0xf6c55 timepci.c:43
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6c58
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6c5c timepci.c:141
+ and dl, 037h ; 80 e2 37 ; 0xf6c5f
+ xor dh, dh ; 30 f6 ; 0xf6c62
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c64
+ call 0167ah ; e8 10 aa ; 0xf6c67
+ mov es, cx ; 8e c1 ; 0xf6c6a timepci.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c6c
+ or AL, strict byte 080h ; 0c 80 ; 0xf6c6f timepci.c:39
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6c71 timepci.c:43
+ jmp short 06c8bh ; eb 15 ; 0xf6c74 timepci.c:143
+ mov cx, dx ; 89 d1 ; 0xf6c76 timepci.c:145
+ add cx, 0fc2fh ; 81 c1 2f fc ; 0xf6c78
+ mov dx, bx ; 89 da ; 0xf6c7c
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6c7e
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6c81 timepci.c:63
+ mov word [es:bx], cx ; 26 89 0f ; 0xf6c84
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6c87
+ call 0e030h ; e8 a2 73 ; 0xf6c8b timepci.c:151
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6c8e timepci.c:152
+ pop si ; 5e ; 0xf6c91
+ pop bp ; 5d ; 0xf6c92
+ retn ; c3 ; 0xf6c93
+ ; disGetNextSymbol 0xf6c94 LB 0x4724 -> off=0x10 cb=00000000000001d9 uValue=00000000000f56a4 'int1a_function'
+ db 0bah, 06ch, 0e1h, 06ch, 006h, 06dh, 042h, 06dh, 094h, 06dh, 0cbh, 06dh, 012h, 06eh, 06dh, 06eh
+int1a_function: ; 0xf6ca4 LB 0x1d9
+ push bp ; 55 ; 0xf6ca4 timepci.c:157
+ mov bp, sp ; 89 e5 ; 0xf6ca5
+ sti ; fb ; 0xf6ca7 timepci.c:163
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6ca8 timepci.c:165
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf6cab
+ jnbe short 06d0dh ; 77 5e ; 0xf6cad
+ mov bl, al ; 88 c3 ; 0xf6caf
+ xor bh, bh ; 30 ff ; 0xf6cb1
+ sal bx, 1 ; d1 e3 ; 0xf6cb3
+ jmp word [cs:bx+06c94h] ; 2e ff a7 94 6c ; 0xf6cb5
+ cli ; fa ; 0xf6cba timepci.c:167
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6cbb timepci.c:168
+ xor ax, ax ; 31 c0 ; 0xf6cbe
+ mov es, ax ; 8e c0 ; 0xf6cc0
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6cc2
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf6cc5
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6cc8 timepci.c:169
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6ccb
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf6cce
+ mov bx, 00470h ; bb 70 04 ; 0xf6cd1 timepci.c:170
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6cd4
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6cd7
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6cda timepci.c:171
+ sti ; fb ; 0xf6cde timepci.c:172
+ jmp short 06d0dh ; eb 2c ; 0xf6cdf timepci.c:175
+ cli ; fa ; 0xf6ce1 timepci.c:178
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6ce2 timepci.c:179
+ xor ax, ax ; 31 c0 ; 0xf6ce5
+ mov es, ax ; 8e c0 ; 0xf6ce7
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6ce9
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6cec
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6cef timepci.c:180
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6cf2
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6cf5
+ mov bx, 00470h ; bb 70 04 ; 0xf6cf8 timepci.c:181
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6cfb
+ sti ; fb ; 0xf6cff timepci.c:182
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d00 timepci.c:183
+ jmp short 06d0dh ; eb 07 ; 0xf6d04 timepci.c:185
+ call 06bdbh ; e8 d2 fe ; 0xf6d06 timepci.c:188
+ test ax, ax ; 85 c0 ; 0xf6d09
+ je short 06d10h ; 74 03 ; 0xf6d0b
+ jmp near 06d3eh ; e9 2e 00 ; 0xf6d0d timepci.c:190
+ xor ax, ax ; 31 c0 ; 0xf6d10 timepci.c:193
+ call 0165fh ; e8 4a a9 ; 0xf6d12
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6d15
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6d18 timepci.c:194
+ call 0165fh ; e8 41 a9 ; 0xf6d1b
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6d1e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6d21 timepci.c:195
+ call 0165fh ; e8 38 a9 ; 0xf6d24
+ mov dl, al ; 88 c2 ; 0xf6d27
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6d29
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d2c timepci.c:196
+ call 0165fh ; e8 2d a9 ; 0xf6d2f
+ and AL, strict byte 001h ; 24 01 ; 0xf6d32
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6d34
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d37 timepci.c:197
+ mov byte [bp+012h], dl ; 88 56 12 ; 0xf6d3b timepci.c:198
+ mov sp, bp ; 89 ec ; 0xf6d3e timepci.c:200
+ pop bp ; 5d ; 0xf6d40
+ retn ; c3 ; 0xf6d41
+ call 06bdbh ; e8 96 fe ; 0xf6d42 timepci.c:213
+ test ax, ax ; 85 c0 ; 0xf6d45
+ je short 06d4ch ; 74 03 ; 0xf6d47
+ call 06bb3h ; e8 67 fe ; 0xf6d49 timepci.c:214
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6d4c timepci.c:217
+ xor dh, dh ; 30 f6 ; 0xf6d4f
+ xor ax, ax ; 31 c0 ; 0xf6d51
+ call 0167ah ; e8 24 a9 ; 0xf6d53
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6d56 timepci.c:218
+ xor dh, dh ; 30 f6 ; 0xf6d59
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6d5b
+ call 0167ah ; e8 19 a9 ; 0xf6d5e
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6d61 timepci.c:219
+ xor dh, dh ; 30 f6 ; 0xf6d64
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6d66
+ call 0167ah ; e8 0e a9 ; 0xf6d69
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d6c timepci.c:221
+ call 0165fh ; e8 ed a8 ; 0xf6d6f
+ mov bl, al ; 88 c3 ; 0xf6d72
+ and bl, 060h ; 80 e3 60 ; 0xf6d74
+ or bl, 002h ; 80 cb 02 ; 0xf6d77
+ mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf6d7a
+ and AL, strict byte 001h ; 24 01 ; 0xf6d7d
+ or bl, al ; 08 c3 ; 0xf6d7f
+ mov dl, bl ; 88 da ; 0xf6d81 timepci.c:223
+ xor dh, dh ; 30 f6 ; 0xf6d83
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d85
+ call 0167ah ; e8 ef a8 ; 0xf6d88
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d8b timepci.c:224
+ mov byte [bp+012h], bl ; 88 5e 12 ; 0xf6d8f timepci.c:225
+ jmp short 06d3eh ; eb aa ; 0xf6d92 timepci.c:227
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d94 timepci.c:230
+ call 06bdbh ; e8 40 fe ; 0xf6d98 timepci.c:231
+ test ax, ax ; 85 c0 ; 0xf6d9b
+ je short 06da1h ; 74 02 ; 0xf6d9d
+ jmp short 06d3eh ; eb 9d ; 0xf6d9f timepci.c:233
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6da1 timepci.c:235
+ call 0165fh ; e8 b8 a8 ; 0xf6da4
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6da7
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6daa timepci.c:236
+ call 0165fh ; e8 af a8 ; 0xf6dad
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6db0
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6db3 timepci.c:237
+ call 0165fh ; e8 a6 a8 ; 0xf6db6
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6db9
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6dbc timepci.c:238
+ call 0165fh ; e8 9d a8 ; 0xf6dbf
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6dc2
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6dc5 timepci.c:239
+ jmp near 06d3eh ; e9 73 ff ; 0xf6dc8 timepci.c:241
+ call 06bdbh ; e8 0d fe ; 0xf6dcb timepci.c:254
+ test ax, ax ; 85 c0 ; 0xf6dce
+ je short 06dd8h ; 74 06 ; 0xf6dd0
+ call 06bb3h ; e8 de fd ; 0xf6dd2 timepci.c:255
+ jmp near 06d3eh ; e9 66 ff ; 0xf6dd5 timepci.c:257
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6dd8 timepci.c:259
+ xor dh, dh ; 30 f6 ; 0xf6ddb
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6ddd
+ call 0167ah ; e8 97 a8 ; 0xf6de0
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6de3 timepci.c:260
+ xor dh, dh ; 30 f6 ; 0xf6de6
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6de8
+ call 0167ah ; e8 8c a8 ; 0xf6deb
+ mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf6dee timepci.c:261
+ xor dh, dh ; 30 f6 ; 0xf6df1
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6df3
+ call 0167ah ; e8 81 a8 ; 0xf6df6
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6df9 timepci.c:262
+ xor dh, dh ; 30 f6 ; 0xf6dfc
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6dfe
+ call 0167ah ; e8 76 a8 ; 0xf6e01
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e04 timepci.c:263
+ call 0165fh ; e8 55 a8 ; 0xf6e07
+ mov bl, al ; 88 c3 ; 0xf6e0a
+ and bl, 07fh ; 80 e3 7f ; 0xf6e0c
+ jmp near 06d81h ; e9 6f ff ; 0xf6e0f
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e12 timepci.c:281
+ call 0165fh ; e8 47 a8 ; 0xf6e15
+ mov bl, al ; 88 c3 ; 0xf6e18
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf6e1a timepci.c:282
+ test AL, strict byte 020h ; a8 20 ; 0xf6e1f timepci.c:283
+ je short 06e26h ; 74 03 ; 0xf6e21
+ jmp near 06d3eh ; e9 18 ff ; 0xf6e23 timepci.c:286
+ call 06bdbh ; e8 b2 fd ; 0xf6e26 timepci.c:288
+ test ax, ax ; 85 c0 ; 0xf6e29
+ je short 06e30h ; 74 03 ; 0xf6e2b
+ call 06bb3h ; e8 83 fd ; 0xf6e2d timepci.c:289
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6e30 timepci.c:292
+ xor dh, dh ; 30 f6 ; 0xf6e33
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6e35
+ call 0167ah ; e8 3f a8 ; 0xf6e38
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6e3b timepci.c:293
+ xor dh, dh ; 30 f6 ; 0xf6e3e
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf6e40
+ call 0167ah ; e8 34 a8 ; 0xf6e43
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6e46 timepci.c:294
+ xor dh, dh ; 30 f6 ; 0xf6e49
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf6e4b
+ call 0167ah ; e8 29 a8 ; 0xf6e4e
+ mov dx, 000a1h ; ba a1 00 ; 0xf6e51 timepci.c:295
+ in AL, DX ; ec ; 0xf6e54
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e55
+ and AL, strict byte 0feh ; 24 fe ; 0xf6e57
+ out DX, AL ; ee ; 0xf6e59
+ mov dl, bl ; 88 da ; 0xf6e5a timepci.c:297
+ and dl, 05fh ; 80 e2 5f ; 0xf6e5c
+ or dl, 020h ; 80 ca 20 ; 0xf6e5f
+ xor dh, dh ; 30 f6 ; 0xf6e62
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e64
+ call 0167ah ; e8 10 a8 ; 0xf6e67
+ jmp near 06d3eh ; e9 d1 fe ; 0xf6e6a timepci.c:299
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e6d timepci.c:312
+ call 0165fh ; e8 ec a7 ; 0xf6e70
+ mov bl, al ; 88 c3 ; 0xf6e73
+ mov dl, al ; 88 c2 ; 0xf6e75 timepci.c:314
+ and dl, 057h ; 80 e2 57 ; 0xf6e77
+ jmp near 06d83h ; e9 06 ff ; 0xf6e7a
+ ; disGetNextSymbol 0xf6e7d LB 0x453b -> off=0x0 cb=0000000000000038 uValue=00000000000f587d 'send_to_mouse_ctrl'
+send_to_mouse_ctrl: ; 0xf6e7d LB 0x38
+ push bp ; 55 ; 0xf6e7d ps2mouse.c:77
+ mov bp, sp ; 89 e5 ; 0xf6e7e
+ push bx ; 53 ; 0xf6e80
+ push dx ; 52 ; 0xf6e81
+ mov bl, al ; 88 c3 ; 0xf6e82
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6e84 ps2mouse.c:81
+ in AL, DX ; ec ; 0xf6e87
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e88
+ test AL, strict byte 002h ; a8 02 ; 0xf6e8a
+ je short 06ea0h ; 74 12 ; 0xf6e8c
+ mov ax, 008feh ; b8 fe 08 ; 0xf6e8e ps2mouse.c:82
+ push ax ; 50 ; 0xf6e91
+ mov ax, 012b2h ; b8 b2 12 ; 0xf6e92
+ push ax ; 50 ; 0xf6e95
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6e96
+ push ax ; 50 ; 0xf6e99
+ call 0191ch ; e8 7f aa ; 0xf6e9a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6e9d
+ mov AL, strict byte 0d4h ; b0 d4 ; 0xf6ea0 ps2mouse.c:83
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6ea2
+ out DX, AL ; ee ; 0xf6ea5
+ mov al, bl ; 88 d8 ; 0xf6ea6 ps2mouse.c:84
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6ea8
+ out DX, AL ; ee ; 0xf6eab
+ xor al, bl ; 30 d8 ; 0xf6eac ps2mouse.c:86
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6eae
+ pop dx ; 5a ; 0xf6eb1
+ pop bx ; 5b ; 0xf6eb2
+ pop bp ; 5d ; 0xf6eb3
+ retn ; c3 ; 0xf6eb4
+ ; disGetNextSymbol 0xf6eb5 LB 0x4503 -> off=0x0 cb=000000000000005d uValue=00000000000f58b5 'get_mouse_data'
+get_mouse_data: ; 0xf6eb5 LB 0x5d
+ push bp ; 55 ; 0xf6eb5 ps2mouse.c:89
+ mov bp, sp ; 89 e5 ; 0xf6eb6
+ push bx ; 53 ; 0xf6eb8
+ push cx ; 51 ; 0xf6eb9
+ push ax ; 50 ; 0xf6eba
+ mov bx, ax ; 89 c3 ; 0xf6ebb
+ mov es, dx ; 8e c2 ; 0xf6ebd
+ mov cx, 02710h ; b9 10 27 ; 0xf6ebf ps2mouse.c:91
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6ec2 ps2mouse.c:94
+ in AL, DX ; ec ; 0xf6ec5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ec6
+ and ax, strict word 00021h ; 25 21 00 ; 0xf6ec8
+ cmp ax, strict word 00021h ; 3d 21 00 ; 0xf6ecb
+ je short 06ef8h ; 74 28 ; 0xf6ece
+ test cx, cx ; 85 c9 ; 0xf6ed0
+ je short 06ef8h ; 74 24 ; 0xf6ed2
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6ed4 ps2mouse.c:97
+ in AL, DX ; ec ; 0xf6ed7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ed8
+ and AL, strict byte 010h ; 24 10 ; 0xf6eda
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6edc
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6edf ps2mouse.c:98
+ in AL, DX ; ec ; 0xf6ee2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ee3
+ mov dx, ax ; 89 c2 ; 0xf6ee5
+ xor dh, ah ; 30 e6 ; 0xf6ee7
+ and dl, 010h ; 80 e2 10 ; 0xf6ee9
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6eec
+ xor ah, ah ; 30 e4 ; 0xf6eef
+ cmp dx, ax ; 39 c2 ; 0xf6ef1
+ je short 06edfh ; 74 ea ; 0xf6ef3
+ dec cx ; 49 ; 0xf6ef5 ps2mouse.c:100
+ jmp short 06ec2h ; eb ca ; 0xf6ef6 ps2mouse.c:101
+ test cx, cx ; 85 c9 ; 0xf6ef8 ps2mouse.c:103
+ jne short 06f00h ; 75 04 ; 0xf6efa
+ mov AL, strict byte 001h ; b0 01 ; 0xf6efc ps2mouse.c:104
+ jmp short 06f0bh ; eb 0b ; 0xf6efe
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6f00 ps2mouse.c:106
+ in AL, DX ; ec ; 0xf6f03
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f04
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6f06 ps2mouse.c:107
+ xor al, al ; 30 c0 ; 0xf6f09 ps2mouse.c:108
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6f0b ps2mouse.c:109
+ pop cx ; 59 ; 0xf6f0e
+ pop bx ; 5b ; 0xf6f0f
+ pop bp ; 5d ; 0xf6f10
+ retn ; c3 ; 0xf6f11
+ ; disGetNextSymbol 0xf6f12 LB 0x44a6 -> off=0x0 cb=0000000000000036 uValue=00000000000f5912 'set_kbd_command_byte'
+set_kbd_command_byte: ; 0xf6f12 LB 0x36
+ push bp ; 55 ; 0xf6f12 ps2mouse.c:111
+ mov bp, sp ; 89 e5 ; 0xf6f13
+ push bx ; 53 ; 0xf6f15
+ push dx ; 52 ; 0xf6f16
+ mov bl, al ; 88 c3 ; 0xf6f17
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6f19 ps2mouse.c:113
+ in AL, DX ; ec ; 0xf6f1c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f1d
+ test AL, strict byte 002h ; a8 02 ; 0xf6f1f
+ je short 06f35h ; 74 12 ; 0xf6f21
+ mov ax, 00908h ; b8 08 09 ; 0xf6f23 ps2mouse.c:114
+ push ax ; 50 ; 0xf6f26
+ mov ax, 012b2h ; b8 b2 12 ; 0xf6f27
+ push ax ; 50 ; 0xf6f2a
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6f2b
+ push ax ; 50 ; 0xf6f2e
+ call 0191ch ; e8 ea a9 ; 0xf6f2f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f32
+ mov AL, strict byte 060h ; b0 60 ; 0xf6f35 ps2mouse.c:116
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6f37
+ out DX, AL ; ee ; 0xf6f3a
+ mov al, bl ; 88 d8 ; 0xf6f3b ps2mouse.c:117
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6f3d
+ out DX, AL ; ee ; 0xf6f40
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6f41 ps2mouse.c:118
+ pop dx ; 5a ; 0xf6f44
+ pop bx ; 5b ; 0xf6f45
+ pop bp ; 5d ; 0xf6f46
+ retn ; c3 ; 0xf6f47
+ ; disGetNextSymbol 0xf6f48 LB 0x4470 -> off=0x0 cb=000000000000009e uValue=00000000000f5948 'int74_function'
+int74_function: ; 0xf6f48 LB 0x9e
+ push bp ; 55 ; 0xf6f48 ps2mouse.c:121
+ mov bp, sp ; 89 e5 ; 0xf6f49
+ push si ; 56 ; 0xf6f4b
+ push ax ; 50 ; 0xf6f4c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6f4d ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6f50
+ mov es, ax ; 8e c0 ; 0xf6f53
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6f55
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf6f58 ps2mouse.c:129
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6f5d ps2mouse.c:131
+ in AL, DX ; ec ; 0xf6f60
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f61
+ and AL, strict byte 021h ; 24 21 ; 0xf6f63 ps2mouse.c:132
+ cmp AL, strict byte 021h ; 3c 21 ; 0xf6f65
+ jne short 06f87h ; 75 1e ; 0xf6f67
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6f69 ps2mouse.c:135
+ in AL, DX ; ec ; 0xf6f6c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f6d
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6f6f
+ mov si, strict word 00026h ; be 26 00 ; 0xf6f72 ps2mouse.c:38
+ mov es, bx ; 8e c3 ; 0xf6f75
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6f77
+ mov si, strict word 00027h ; be 27 00 ; 0xf6f7a ps2mouse.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf6f7d
+ mov cl, ah ; 88 e1 ; 0xf6f80 ps2mouse.c:39
+ test ah, 080h ; f6 c4 80 ; 0xf6f82 ps2mouse.c:141
+ jne short 06f89h ; 75 02 ; 0xf6f85
+ jmp short 06fe0h ; eb 57 ; 0xf6f87 ps2mouse.c:142
+ mov ch, cl ; 88 cd ; 0xf6f89 ps2mouse.c:145
+ and ch, 007h ; 80 e5 07 ; 0xf6f8b
+ mov ah, al ; 88 c4 ; 0xf6f8e ps2mouse.c:146
+ and ah, 007h ; 80 e4 07 ; 0xf6f90
+ mov dl, ah ; 88 e2 ; 0xf6f93 ps2mouse.c:147
+ xor dh, dh ; 30 f6 ; 0xf6f95
+ mov si, dx ; 89 d6 ; 0xf6f97
+ add si, strict byte 00028h ; 83 c6 28 ; 0xf6f99
+ mov es, bx ; 8e c3 ; 0xf6f9c ps2mouse.c:43
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6f9e
+ mov byte [es:si], dl ; 26 88 14 ; 0xf6fa1
+ cmp ah, ch ; 38 ec ; 0xf6fa4 ps2mouse.c:149
+ jc short 06fd6h ; 72 2e ; 0xf6fa6
+ mov si, strict word 00028h ; be 28 00 ; 0xf6fa8 ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6fab
+ xor ah, ah ; 30 e4 ; 0xf6fae ps2mouse.c:39
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf6fb0
+ mov si, strict word 00029h ; be 29 00 ; 0xf6fb3 ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6fb6
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf6fb9 ps2mouse.c:39
+ mov si, strict word 0002ah ; be 2a 00 ; 0xf6fbc ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6fbf
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf6fc2 ps2mouse.c:39
+ xor al, al ; 30 c0 ; 0xf6fc5 ps2mouse.c:154
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf6fc7
+ test cl, 080h ; f6 c1 80 ; 0xf6fca ps2mouse.c:157
+ je short 06fd8h ; 74 09 ; 0xf6fcd
+ mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf6fcf ps2mouse.c:158
+ jmp short 06fd8h ; eb 02 ; 0xf6fd4 ps2mouse.c:160
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf6fd6 ps2mouse.c:161
+ mov si, strict word 00026h ; be 26 00 ; 0xf6fd8 ps2mouse.c:43
+ mov es, bx ; 8e c3 ; 0xf6fdb
+ mov byte [es:si], al ; 26 88 04 ; 0xf6fdd
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6fe0 ps2mouse.c:164
+ pop si ; 5e ; 0xf6fe3
+ pop bp ; 5d ; 0xf6fe4
+ retn ; c3 ; 0xf6fe5
+ ; disGetNextSymbol 0xf6fe6 LB 0x43d2 -> off=0x10 cb=0000000000000380 uValue=00000000000f59f6 'int15_function_mouse'
+ db 037h, 070h, 0a8h, 070h, 01eh, 071h, 0b0h, 071h, 022h, 072h, 07dh, 070h, 04ah, 072h, 01bh, 073h
+int15_function_mouse: ; 0xf6ff6 LB 0x380
+ push bp ; 55 ; 0xf6ff6 ps2mouse.c:166
+ mov bp, sp ; 89 e5 ; 0xf6ff7
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6ff9
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6ffc ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6fff
+ mov es, ax ; 8e c0 ; 0xf7002
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7004
+ cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf7007 ps2mouse.c:188
+ jbe short 07018h ; 76 0b ; 0xf700b
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf700d ps2mouse.c:191
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7011 ps2mouse.c:192
+ jmp near 07372h ; e9 5a 03 ; 0xf7015 ps2mouse.c:193
+ mov ax, strict word 00065h ; b8 65 00 ; 0xf7018 ps2mouse.c:197
+ call 06f12h ; e8 f4 fe ; 0xf701b
+ and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf701e ps2mouse.c:198
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf7022 ps2mouse.c:199
+ mov bl, byte [bp+012h] ; 8a 5e 12 ; 0xf7026 ps2mouse.c:201
+ cmp bl, 007h ; 80 fb 07 ; 0xf7029
+ jnbe short 0708bh ; 77 5d ; 0xf702c
+ xor bh, bh ; 30 ff ; 0xf702e
+ sal bx, 1 ; d1 e3 ; 0xf7030
+ jmp word [cs:bx+06fe6h] ; 2e ff a7 e6 6f ; 0xf7032
+ cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf7037 ps2mouse.c:204
+ jnbe short 0708eh ; 77 51 ; 0xf703b
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf703d ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf7040
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7042
+ test AL, strict byte 080h ; a8 80 ; 0xf7045 ps2mouse.c:212
+ jne short 07054h ; 75 0b ; 0xf7047
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7049 ps2mouse.c:214
+ mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf704d ps2mouse.c:215
+ jmp near 0736ch ; e9 18 03 ; 0xf7051 ps2mouse.c:216
+ cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf7054 ps2mouse.c:218
+ jne short 0705eh ; 75 04 ; 0xf7058
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf705a ps2mouse.c:220
+ jmp short 07060h ; eb 02 ; 0xf705c ps2mouse.c:221
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf705e ps2mouse.c:223
+ xor ah, ah ; 30 e4 ; 0xf7060 ps2mouse.c:226
+ call 06e7dh ; e8 18 fe ; 0xf7062
+ test al, al ; 84 c0 ; 0xf7065 ps2mouse.c:227
+ jne short 07091h ; 75 28 ; 0xf7067
+ mov dx, ss ; 8c d2 ; 0xf7069 ps2mouse.c:228
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf706b
+ call 06eb5h ; e8 44 fe ; 0xf706e
+ test al, al ; 84 c0 ; 0xf7071 ps2mouse.c:229
+ je short 070d7h ; 74 62 ; 0xf7073
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7075
+ jne short 07091h ; 75 16 ; 0xf7079
+ jmp short 070d7h ; eb 5a ; 0xf707b ps2mouse.c:231
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf707d ps2mouse.c:242
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7080
+ jc short 07088h ; 72 04 ; 0xf7082
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf7084
+ jbe short 07094h ; 76 0c ; 0xf7086
+ jmp near 07218h ; e9 8d 01 ; 0xf7088
+ jmp near 07356h ; e9 c8 02 ; 0xf708b
+ jmp near 07364h ; e9 d3 02 ; 0xf708e
+ jmp near 072f3h ; e9 5f 02 ; 0xf7091
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7094 ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf7097
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7099
+ mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf709c ps2mouse.c:248
+ db 0feh, 0cch
+ ; dec ah ; fe cc ; 0xf709f
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf70a1
+ or al, ah ; 08 e0 ; 0xf70a3
+ mov byte [es:bx], al ; 26 88 07 ; 0xf70a5 ps2mouse.c:43
+ mov bx, strict word 00026h ; bb 26 00 ; 0xf70a8 ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf70ab
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf70ad
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf70b0 ps2mouse.c:256
+ mov byte [es:bx], al ; 26 88 07 ; 0xf70b2 ps2mouse.c:43
+ mov ax, 000ffh ; b8 ff 00 ; 0xf70b5 ps2mouse.c:258
+ call 06e7dh ; e8 c2 fd ; 0xf70b8
+ test al, al ; 84 c0 ; 0xf70bb ps2mouse.c:259
+ jne short 07091h ; 75 d2 ; 0xf70bd
+ mov dx, ss ; 8c d2 ; 0xf70bf ps2mouse.c:260
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf70c1
+ call 06eb5h ; e8 ee fd ; 0xf70c4
+ mov dl, al ; 88 c2 ; 0xf70c7
+ cmp byte [bp-002h], 0feh ; 80 7e fe fe ; 0xf70c9 ps2mouse.c:262
+ jne short 070dah ; 75 0b ; 0xf70cd
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70cf ps2mouse.c:263
+ mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf70d3 ps2mouse.c:264
+ jmp near 0736ch ; e9 92 02 ; 0xf70d7 ps2mouse.c:265
+ cmp byte [bp-002h], 0fah ; 80 7e fe fa ; 0xf70da ps2mouse.c:267
+ je short 070f4h ; 74 14 ; 0xf70de
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf70e0 ps2mouse.c:268
+ xor ah, ah ; 30 e4 ; 0xf70e3
+ push ax ; 50 ; 0xf70e5
+ mov ax, 00913h ; b8 13 09 ; 0xf70e6
+ push ax ; 50 ; 0xf70e9
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf70ea
+ push ax ; 50 ; 0xf70ed
+ call 0191ch ; e8 2b a8 ; 0xf70ee
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf70f1
+ test dl, dl ; 84 d2 ; 0xf70f4 ps2mouse.c:269
+ jne short 07091h ; 75 99 ; 0xf70f6
+ mov dx, ss ; 8c d2 ; 0xf70f8 ps2mouse.c:270
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf70fa
+ call 06eb5h ; e8 b5 fd ; 0xf70fd
+ test al, al ; 84 c0 ; 0xf7100 ps2mouse.c:271
+ jne short 07091h ; 75 8d ; 0xf7102
+ mov dx, ss ; 8c d2 ; 0xf7104 ps2mouse.c:272
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7106
+ call 06eb5h ; e8 a9 fd ; 0xf7109
+ test al, al ; 84 c0 ; 0xf710c ps2mouse.c:273
+ jne short 07091h ; 75 81 ; 0xf710e
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7110 ps2mouse.c:275
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf7113
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf7116 ps2mouse.c:276
+ mov byte [bp+00dh], al ; 88 46 0d ; 0xf7119
+ jmp short 070d7h ; eb b9 ; 0xf711c ps2mouse.c:277
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf711e ps2mouse.c:290
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf7121
+ jc short 07135h ; 72 10 ; 0xf7123
+ jbe short 07153h ; 76 2c ; 0xf7125
+ cmp AL, strict byte 006h ; 3c 06 ; 0xf7127
+ je short 07165h ; 74 3a ; 0xf7129
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf712b
+ je short 0715fh ; 74 30 ; 0xf712d
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf712f
+ je short 07159h ; 74 26 ; 0xf7131
+ jmp short 0716bh ; eb 36 ; 0xf7133
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7135
+ je short 0714dh ; 74 14 ; 0xf7137
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7139
+ je short 07147h ; 74 0a ; 0xf713b
+ test al, al ; 84 c0 ; 0xf713d
+ jne short 0716bh ; 75 2a ; 0xf713f
+ mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf7141 ps2mouse.c:291
+ jmp short 0716fh ; eb 28 ; 0xf7145
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf7147 ps2mouse.c:292
+ jmp short 0716fh ; eb 22 ; 0xf714b
+ mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf714d ps2mouse.c:293
+ jmp short 0716fh ; eb 1c ; 0xf7151
+ mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf7153 ps2mouse.c:294
+ jmp short 0716fh ; eb 16 ; 0xf7157
+ mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf7159 ps2mouse.c:295
+ jmp short 0716fh ; eb 10 ; 0xf715d
+ mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf715f ps2mouse.c:296
+ jmp short 0716fh ; eb 0a ; 0xf7163
+ mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf7165 ps2mouse.c:297
+ jmp short 0716fh ; eb 04 ; 0xf7169
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf716b ps2mouse.c:298
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf716f ps2mouse.c:300
+ jbe short 071a5h ; 76 30 ; 0xf7173
+ mov ax, 000f3h ; b8 f3 00 ; 0xf7175 ps2mouse.c:301
+ call 06e7dh ; e8 02 fd ; 0xf7178
+ test al, al ; 84 c0 ; 0xf717b ps2mouse.c:302
+ jne short 0719ah ; 75 1b ; 0xf717d
+ mov dx, ss ; 8c d2 ; 0xf717f ps2mouse.c:303
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7181
+ call 06eb5h ; e8 2e fd ; 0xf7184
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7187 ps2mouse.c:304
+ xor ah, ah ; 30 e4 ; 0xf718a
+ call 06e7dh ; e8 ee fc ; 0xf718c
+ mov dx, ss ; 8c d2 ; 0xf718f ps2mouse.c:305
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7191
+ call 06eb5h ; e8 1e fd ; 0xf7194
+ jmp near 0736ch ; e9 d2 01 ; 0xf7197 ps2mouse.c:307
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf719a ps2mouse.c:309
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf719e ps2mouse.c:310
+ jmp near 0736ch ; e9 c7 01 ; 0xf71a2 ps2mouse.c:312
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71a5 ps2mouse.c:314
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf71a9 ps2mouse.c:315
+ jmp near 0736ch ; e9 bc 01 ; 0xf71ad ps2mouse.c:317
+ cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf71b0 ps2mouse.c:326
+ jnc short 07218h ; 73 62 ; 0xf71b4
+ mov ax, 000e8h ; b8 e8 00 ; 0xf71b6 ps2mouse.c:327
+ call 06e7dh ; e8 c1 fc ; 0xf71b9
+ test al, al ; 84 c0 ; 0xf71bc ps2mouse.c:328
+ jne short 0720eh ; 75 4e ; 0xf71be
+ mov dx, ss ; 8c d2 ; 0xf71c0 ps2mouse.c:329
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf71c2
+ call 06eb5h ; e8 ed fc ; 0xf71c5
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf71c8 ps2mouse.c:330
+ je short 071e2h ; 74 14 ; 0xf71cc
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf71ce ps2mouse.c:331
+ xor ah, ah ; 30 e4 ; 0xf71d1
+ push ax ; 50 ; 0xf71d3
+ mov ax, 0093eh ; b8 3e 09 ; 0xf71d4
+ push ax ; 50 ; 0xf71d7
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf71d8
+ push ax ; 50 ; 0xf71db
+ call 0191ch ; e8 3d a7 ; 0xf71dc
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf71df
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf71e2 ps2mouse.c:332
+ xor ah, ah ; 30 e4 ; 0xf71e5
+ call 06e7dh ; e8 93 fc ; 0xf71e7
+ mov dx, ss ; 8c d2 ; 0xf71ea ps2mouse.c:333
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf71ec
+ call 06eb5h ; e8 c3 fc ; 0xf71ef
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf71f2 ps2mouse.c:334
+ je short 07247h ; 74 4f ; 0xf71f6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf71f8 ps2mouse.c:335
+ xor ah, ah ; 30 e4 ; 0xf71fb
+ push ax ; 50 ; 0xf71fd
+ mov ax, 0093eh ; b8 3e 09 ; 0xf71fe
+ push ax ; 50 ; 0xf7201
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7202
+ push ax ; 50 ; 0xf7205
+ call 0191ch ; e8 13 a7 ; 0xf7206
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7209
+ jmp short 07247h ; eb 39 ; 0xf720c ps2mouse.c:337
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf720e ps2mouse.c:339
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7212 ps2mouse.c:340
+ jmp short 07247h ; eb 2f ; 0xf7216 ps2mouse.c:342
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7218 ps2mouse.c:344
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf721c ps2mouse.c:345
+ jmp short 07247h ; eb 25 ; 0xf7220 ps2mouse.c:347
+ mov ax, 000f2h ; b8 f2 00 ; 0xf7222 ps2mouse.c:351
+ call 06e7dh ; e8 55 fc ; 0xf7225
+ test al, al ; 84 c0 ; 0xf7228 ps2mouse.c:352
+ jne short 0723fh ; 75 13 ; 0xf722a
+ mov dx, ss ; 8c d2 ; 0xf722c ps2mouse.c:353
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf722e
+ call 06eb5h ; e8 81 fc ; 0xf7231
+ mov dx, ss ; 8c d2 ; 0xf7234 ps2mouse.c:354
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7236
+ call 06eb5h ; e8 79 fc ; 0xf7239
+ jmp near 07116h ; e9 d7 fe ; 0xf723c
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf723f ps2mouse.c:355
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7243 ps2mouse.c:360
+ jmp near 0736ch ; e9 22 01 ; 0xf7247 ps2mouse.c:362
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf724a ps2mouse.c:366
+ test al, al ; 84 c0 ; 0xf724d
+ jbe short 0725ah ; 76 09 ; 0xf724f
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7251
+ jbe short 07258h ; 76 03 ; 0xf7253
+ jmp near 072fdh ; e9 a5 00 ; 0xf7255
+ jmp short 072c4h ; eb 6a ; 0xf7258
+ mov ax, 000e9h ; b8 e9 00 ; 0xf725a ps2mouse.c:368
+ call 06e7dh ; e8 1d fc ; 0xf725d
+ test al, al ; 84 c0 ; 0xf7260 ps2mouse.c:369
+ jne short 072cdh ; 75 69 ; 0xf7262
+ mov dx, ss ; 8c d2 ; 0xf7264 ps2mouse.c:370
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7266
+ call 06eb5h ; e8 49 fc ; 0xf7269
+ mov dl, al ; 88 c2 ; 0xf726c
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf726e ps2mouse.c:371
+ je short 07288h ; 74 14 ; 0xf7272
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7274 ps2mouse.c:372
+ xor ah, ah ; 30 e4 ; 0xf7277
+ push ax ; 50 ; 0xf7279
+ mov ax, 0093eh ; b8 3e 09 ; 0xf727a
+ push ax ; 50 ; 0xf727d
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf727e
+ push ax ; 50 ; 0xf7281
+ call 0191ch ; e8 97 a6 ; 0xf7282
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7285
+ test dl, dl ; 84 d2 ; 0xf7288 ps2mouse.c:373
+ jne short 072cdh ; 75 41 ; 0xf728a
+ mov dx, ss ; 8c d2 ; 0xf728c ps2mouse.c:374
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf728e
+ call 06eb5h ; e8 21 fc ; 0xf7291
+ test al, al ; 84 c0 ; 0xf7294 ps2mouse.c:375
+ jne short 072f3h ; 75 5b ; 0xf7296
+ mov dx, ss ; 8c d2 ; 0xf7298 ps2mouse.c:376
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf729a
+ call 06eb5h ; e8 15 fc ; 0xf729d
+ test al, al ; 84 c0 ; 0xf72a0 ps2mouse.c:377
+ jne short 072f3h ; 75 4f ; 0xf72a2
+ mov dx, ss ; 8c d2 ; 0xf72a4 ps2mouse.c:378
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf72a6
+ call 06eb5h ; e8 09 fc ; 0xf72a9
+ test al, al ; 84 c0 ; 0xf72ac ps2mouse.c:379
+ jne short 072f3h ; 75 43 ; 0xf72ae
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf72b0 ps2mouse.c:380
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf72b3
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf72b6 ps2mouse.c:381
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf72b9
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf72bc ps2mouse.c:382
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf72bf
+ jmp short 07247h ; eb 83 ; 0xf72c2 ps2mouse.c:384
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf72c4 ps2mouse.c:398
+ jne short 072cfh ; 75 07 ; 0xf72c6
+ mov ax, 000e6h ; b8 e6 00 ; 0xf72c8 ps2mouse.c:399
+ jmp short 072d2h ; eb 05 ; 0xf72cb ps2mouse.c:400
+ jmp short 072f3h ; eb 24 ; 0xf72cd
+ mov ax, 000e7h ; b8 e7 00 ; 0xf72cf ps2mouse.c:401
+ call 06e7dh ; e8 a8 fb ; 0xf72d2
+ mov dl, al ; 88 c2 ; 0xf72d5
+ test dl, dl ; 84 d2 ; 0xf72d7 ps2mouse.c:403
+ jne short 072efh ; 75 14 ; 0xf72d9
+ mov dx, ss ; 8c d2 ; 0xf72db ps2mouse.c:404
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf72dd
+ call 06eb5h ; e8 d2 fb ; 0xf72e0
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf72e3 ps2mouse.c:405
+ je short 072edh ; 74 04 ; 0xf72e7
+ mov DL, strict byte 001h ; b2 01 ; 0xf72e9
+ jmp short 072efh ; eb 02 ; 0xf72eb
+ xor dl, dl ; 30 d2 ; 0xf72ed
+ test dl, dl ; 84 d2 ; 0xf72ef ps2mouse.c:407
+ je short 07354h ; 74 61 ; 0xf72f1
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72f3 ps2mouse.c:409
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf72f7 ps2mouse.c:410
+ jmp short 07354h ; eb 57 ; 0xf72fb ps2mouse.c:412
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf72fd ps2mouse.c:415
+ xor ah, ah ; 30 e4 ; 0xf7300
+ push ax ; 50 ; 0xf7302
+ mov ax, 0096ah ; b8 6a 09 ; 0xf7303
+ push ax ; 50 ; 0xf7306
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7307
+ push ax ; 50 ; 0xf730a
+ call 0191ch ; e8 0e a6 ; 0xf730b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf730e
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7311 ps2mouse.c:417
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7315 ps2mouse.c:418
+ jmp short 0736ch ; eb 51 ; 0xf7319 ps2mouse.c:420
+ mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf731b ps2mouse.c:425
+ mov bx, strict word 00022h ; bb 22 00 ; 0xf731e ps2mouse.c:53
+ mov es, dx ; 8e c2 ; 0xf7321
+ mov word [es:bx], cx ; 26 89 0f ; 0xf7323
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf7326 ps2mouse.c:53
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf7329
+ mov word [es:bx], ax ; 26 89 07 ; 0xf732c
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf732f ps2mouse.c:38
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf7332
+ mov al, ah ; 88 e0 ; 0xf7335 ps2mouse.c:39
+ test cx, cx ; 85 c9 ; 0xf7337 ps2mouse.c:429
+ jne short 0734ah ; 75 0f ; 0xf7339
+ cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf733b
+ jne short 0734ah ; 75 09 ; 0xf733f
+ test ah, 080h ; f6 c4 80 ; 0xf7341 ps2mouse.c:431
+ je short 0734ch ; 74 06 ; 0xf7344
+ and AL, strict byte 07fh ; 24 7f ; 0xf7346 ps2mouse.c:432
+ jmp short 0734ch ; eb 02 ; 0xf7348 ps2mouse.c:435
+ or AL, strict byte 080h ; 0c 80 ; 0xf734a ps2mouse.c:437
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf734c ps2mouse.c:43
+ mov es, dx ; 8e c2 ; 0xf734f
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7351
+ jmp short 0736ch ; eb 16 ; 0xf7354 ps2mouse.c:440
+ mov ax, 00984h ; b8 84 09 ; 0xf7356 ps2mouse.c:443
+ push ax ; 50 ; 0xf7359
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf735a
+ push ax ; 50 ; 0xf735d
+ call 0191ch ; e8 bb a5 ; 0xf735e
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7361
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7364 ps2mouse.c:445
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7368 ps2mouse.c:446
+ mov ax, strict word 00047h ; b8 47 00 ; 0xf736c ps2mouse.c:450
+ call 06f12h ; e8 a0 fb ; 0xf736f
+ mov sp, bp ; 89 ec ; 0xf7372 ps2mouse.c:451
+ pop bp ; 5d ; 0xf7374
+ retn ; c3 ; 0xf7375
+ ; disGetNextSymbol 0xf7376 LB 0x4042 -> off=0x0 cb=00000000000000a9 uValue=00000000000f5d76 'int17_function'
+int17_function: ; 0xf7376 LB 0xa9
+ push bp ; 55 ; 0xf7376 parallel.c:60
+ mov bp, sp ; 89 e5 ; 0xf7377
+ push si ; 56 ; 0xf7379
+ push di ; 57 ; 0xf737a
+ push ax ; 50 ; 0xf737b
+ sti ; fb ; 0xf737c parallel.c:65
+ mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf737d parallel.c:67
+ sal bx, 1 ; d1 e3 ; 0xf7380
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf7382
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7385 parallel.c:48
+ mov es, ax ; 8e c0 ; 0xf7388
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf738a
+ mov di, bx ; 89 df ; 0xf738d parallel.c:49
+ cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf738f parallel.c:68
+ jnc short 073a1h ; 73 0c ; 0xf7393
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7395
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf7398
+ jnc short 073a1h ; 73 04 ; 0xf739b
+ test bx, bx ; 85 db ; 0xf739d
+ jnbe short 073a4h ; 77 03 ; 0xf739f
+ jmp near 07414h ; e9 70 00 ; 0xf73a1
+ mov si, ax ; 89 c6 ; 0xf73a4 parallel.c:69
+ add si, strict byte 00078h ; 83 c6 78 ; 0xf73a6
+ mov ch, byte [es:si] ; 26 8a 2c ; 0xf73a9 parallel.c:38
+ xor cl, cl ; 30 c9 ; 0xf73ac parallel.c:39
+ cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf73ae parallel.c:70
+ jne short 073e0h ; 75 2c ; 0xf73b2
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf73b4 parallel.c:71
+ mov dx, bx ; 89 da ; 0xf73b7
+ out DX, AL ; ee ; 0xf73b9
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf73ba parallel.c:72
+ in AL, DX ; ec ; 0xf73bd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73be
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf73c0
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73c3 parallel.c:73
+ or AL, strict byte 001h ; 0c 01 ; 0xf73c6
+ out DX, AL ; ee ; 0xf73c8
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73c9 parallel.c:74
+ and AL, strict byte 0feh ; 24 fe ; 0xf73cc
+ out DX, AL ; ee ; 0xf73ce
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf73cf parallel.c:75
+ in AL, DX ; ec ; 0xf73d2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73d3
+ test AL, strict byte 040h ; a8 40 ; 0xf73d5
+ je short 073e0h ; 74 07 ; 0xf73d7
+ test cx, cx ; 85 c9 ; 0xf73d9
+ je short 073e0h ; 74 03 ; 0xf73db
+ dec cx ; 49 ; 0xf73dd parallel.c:76
+ jmp short 073cfh ; eb ef ; 0xf73de parallel.c:77
+ cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf73e0 parallel.c:79
+ jne short 073fbh ; 75 15 ; 0xf73e4
+ lea dx, [di+002h] ; 8d 55 02 ; 0xf73e6 parallel.c:80
+ in AL, DX ; ec ; 0xf73e9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73ea
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf73ec
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73ef parallel.c:81
+ and AL, strict byte 0fbh ; 24 fb ; 0xf73f2
+ out DX, AL ; ee ; 0xf73f4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73f5 parallel.c:82
+ or AL, strict byte 004h ; 0c 04 ; 0xf73f8
+ out DX, AL ; ee ; 0xf73fa
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf73fb parallel.c:84
+ in AL, DX ; ec ; 0xf73fe
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73ff
+ xor AL, strict byte 048h ; 34 48 ; 0xf7401 parallel.c:85
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf7403
+ test cx, cx ; 85 c9 ; 0xf7406 parallel.c:86
+ jne short 0740eh ; 75 04 ; 0xf7408
+ or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf740a
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf740e parallel.c:87
+ jmp short 07418h ; eb 04 ; 0xf7412 parallel.c:88
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf7414 parallel.c:89
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7418 parallel.c:91
+ pop di ; 5f ; 0xf741b
+ pop si ; 5e ; 0xf741c
+ pop bp ; 5d ; 0xf741d
+ retn ; c3 ; 0xf741e
+ ; disGetNextSymbol 0xf741f LB 0x3f99 -> off=0x0 cb=00000000000000c8 uValue=00000000000f5e1f '_wait_'
+_wait_: ; 0xf741f LB 0xc8
+ push bp ; 55 ; 0xf741f logo.c:171
+ mov bp, sp ; 89 e5 ; 0xf7420
+ push bx ; 53 ; 0xf7422
+ push cx ; 51 ; 0xf7423
+ push si ; 56 ; 0xf7424
+ push di ; 57 ; 0xf7425
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf7426
+ mov cx, ax ; 89 c1 ; 0xf7429
+ mov byte [bp-00ch], dl ; 88 56 f4 ; 0xf742b
+ mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf742e logo.c:176
+ pushfw ; 9c ; 0xf7432 logo.c:182
+ pop ax ; 58 ; 0xf7433
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf7434
+ sti ; fb ; 0xf7437 logo.c:183
+ xor dx, dx ; 31 d2 ; 0xf7438 logo.c:189
+ mov bx, 0046ch ; bb 6c 04 ; 0xf743a logo.c:58
+ mov es, dx ; 8e c2 ; 0xf743d
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf743f
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf7442
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7446 logo.c:59
+ hlt ; f4 ; 0xf7449 logo.c:193
+ mov si, 0046ch ; be 6c 04 ; 0xf744a logo.c:58
+ xor ax, ax ; 31 c0 ; 0xf744d
+ mov es, ax ; 8e c0 ; 0xf744f
+ mov di, word [es:si] ; 26 8b 3c ; 0xf7451
+ mov ax, word [es:si+002h] ; 26 8b 44 02 ; 0xf7454
+ mov word [bp-016h], di ; 89 7e ea ; 0xf7458 logo.c:59
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf745b
+ cmp ax, bx ; 39 d8 ; 0xf745e logo.c:195
+ jnbe short 07469h ; 77 07 ; 0xf7460
+ jne short 07470h ; 75 0c ; 0xf7462
+ cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf7464
+ jbe short 07470h ; 76 07 ; 0xf7467
+ sub di, word [bp-010h] ; 2b 7e f0 ; 0xf7469 logo.c:197
+ sbb ax, bx ; 19 d8 ; 0xf746c
+ jmp short 0747bh ; eb 0b ; 0xf746e logo.c:200
+ cmp ax, bx ; 39 d8 ; 0xf7470
+ jc short 0747bh ; 72 07 ; 0xf7472
+ jne short 0747fh ; 75 09 ; 0xf7474
+ cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf7476
+ jnc short 0747fh ; 73 04 ; 0xf7479
+ sub cx, di ; 29 f9 ; 0xf747b logo.c:201
+ sbb dx, ax ; 19 c2 ; 0xf747d
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf747f logo.c:202
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7482
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf7485
+ mov ax, 00100h ; b8 00 01 ; 0xf7488 logo.c:204
+ int 016h ; cd 16 ; 0xf748b
+ je short 07494h ; 74 05 ; 0xf748d
+ mov AL, strict byte 001h ; b0 01 ; 0xf748f
+ jmp near 07496h ; e9 02 00 ; 0xf7491
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf7494
+ test al, al ; 84 c0 ; 0xf7496
+ je short 074c9h ; 74 2f ; 0xf7498
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf749a logo.c:206
+ int 016h ; cd 16 ; 0xf749c
+ xchg ah, al ; 86 c4 ; 0xf749e
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf74a0
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf74a3
+ mov byte [bp-018h], al ; 88 46 e8 ; 0xf74a6 logo.c:207
+ mov byte [bp-017h], 000h ; c6 46 e9 00 ; 0xf74a9
+ push word [bp-018h] ; ff 76 e8 ; 0xf74ad
+ mov ax, 009a6h ; b8 a6 09 ; 0xf74b0
+ push ax ; 50 ; 0xf74b3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf74b4
+ push ax ; 50 ; 0xf74b7
+ call 0191ch ; e8 61 a4 ; 0xf74b8
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf74bb
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf74be logo.c:208
+ je short 074c9h ; 74 05 ; 0xf74c2
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf74c4 logo.c:209
+ jmp short 074deh ; eb 15 ; 0xf74c7
+ test dx, dx ; 85 d2 ; 0xf74c9 logo.c:211
+ jle short 074d0h ; 7e 03 ; 0xf74cb
+ jmp near 07449h ; e9 79 ff ; 0xf74cd
+ jne short 074d6h ; 75 04 ; 0xf74d0
+ test cx, cx ; 85 c9 ; 0xf74d2
+ jnbe short 074cdh ; 77 f7 ; 0xf74d4
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf74d6 logo.c:212
+ push ax ; 50 ; 0xf74d9
+ popfw ; 9d ; 0xf74da
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf74db logo.c:213
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf74de logo.c:214
+ pop di ; 5f ; 0xf74e1
+ pop si ; 5e ; 0xf74e2
+ pop cx ; 59 ; 0xf74e3
+ pop bx ; 5b ; 0xf74e4
+ pop bp ; 5d ; 0xf74e5
+ retn ; c3 ; 0xf74e6
+ ; disGetNextSymbol 0xf74e7 LB 0x3ed1 -> off=0x0 cb=0000000000000016 uValue=00000000000f5ee7 'read_logo_byte'
+read_logo_byte: ; 0xf74e7 LB 0x16
+ push bp ; 55 ; 0xf74e7 logo.c:216
+ mov bp, sp ; 89 e5 ; 0xf74e8
+ push dx ; 52 ; 0xf74ea
+ xor ah, ah ; 30 e4 ; 0xf74eb logo.c:218
+ or ah, 001h ; 80 cc 01 ; 0xf74ed
+ mov dx, 003b8h ; ba b8 03 ; 0xf74f0
+ out DX, ax ; ef ; 0xf74f3
+ in AL, DX ; ec ; 0xf74f4 logo.c:219
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf74f5
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf74f7 logo.c:220
+ pop dx ; 5a ; 0xf74fa
+ pop bp ; 5d ; 0xf74fb
+ retn ; c3 ; 0xf74fc
+ ; disGetNextSymbol 0xf74fd LB 0x3ebb -> off=0x0 cb=0000000000000014 uValue=00000000000f5efd 'read_logo_word'
+read_logo_word: ; 0xf74fd LB 0x14
+ push bp ; 55 ; 0xf74fd logo.c:222
+ mov bp, sp ; 89 e5 ; 0xf74fe
+ push dx ; 52 ; 0xf7500
+ xor ah, ah ; 30 e4 ; 0xf7501 logo.c:224
+ or ah, 001h ; 80 cc 01 ; 0xf7503
+ mov dx, 003b8h ; ba b8 03 ; 0xf7506
+ out DX, ax ; ef ; 0xf7509
+ in ax, DX ; ed ; 0xf750a logo.c:225
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf750b logo.c:226
+ pop dx ; 5a ; 0xf750e
+ pop bp ; 5d ; 0xf750f
+ retn ; c3 ; 0xf7510
+ ; disGetNextSymbol 0xf7511 LB 0x3ea7 -> off=0x0 cb=000000000000015f uValue=00000000000f5f11 'print_detected_harddisks'
+print_detected_harddisks: ; 0xf7511 LB 0x15f
+ push bp ; 55 ; 0xf7511 logo.c:245
+ mov bp, sp ; 89 e5 ; 0xf7512
+ push bx ; 53 ; 0xf7514
+ push cx ; 51 ; 0xf7515
+ push dx ; 52 ; 0xf7516
+ push si ; 56 ; 0xf7517
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7518
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf751b logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf751e
+ mov es, ax ; 8e c0 ; 0xf7521
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7523
+ mov si, ax ; 89 c6 ; 0xf7526 logo.c:49
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7528 logo.c:250
+ xor ch, ch ; 30 ed ; 0xf752c logo.c:251
+ mov byte [bp-00ah], ch ; 88 6e f6 ; 0xf752e logo.c:252
+ mov bx, 002b0h ; bb b0 02 ; 0xf7531 logo.c:38
+ mov es, ax ; 8e c0 ; 0xf7534
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7536
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf7539 logo.c:39
+ xor cl, cl ; 30 c9 ; 0xf753c logo.c:257
+ cmp cl, byte [bp-00eh] ; 3a 4e f2 ; 0xf753e
+ jnc short 075a1h ; 73 5e ; 0xf7541
+ mov bl, cl ; 88 cb ; 0xf7543 logo.c:259
+ xor bh, bh ; 30 ff ; 0xf7545
+ add bx, 002b1h ; 81 c3 b1 02 ; 0xf7547
+ mov es, si ; 8e c6 ; 0xf754b logo.c:38
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf754d
+ mov bl, bh ; 88 fb ; 0xf7550 logo.c:39
+ cmp bh, 00ch ; 80 ff 0c ; 0xf7552 logo.c:262
+ jc short 07582h ; 72 2b ; 0xf7555
+ test ch, ch ; 84 ed ; 0xf7557 logo.c:264
+ jne short 0756bh ; 75 10 ; 0xf7559
+ mov ax, 009b7h ; b8 b7 09 ; 0xf755b logo.c:266
+ push ax ; 50 ; 0xf755e
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf755f
+ push ax ; 50 ; 0xf7562
+ call 0191ch ; e8 b6 a3 ; 0xf7563
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7566
+ mov CH, strict byte 001h ; b5 01 ; 0xf7569 logo.c:267
+ mov al, cl ; 88 c8 ; 0xf756b logo.c:270
+ xor ah, ah ; 30 e4 ; 0xf756d
+ inc ax ; 40 ; 0xf756f
+ push ax ; 50 ; 0xf7570
+ mov ax, 009cch ; b8 cc 09 ; 0xf7571
+ push ax ; 50 ; 0xf7574
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7575
+ push ax ; 50 ; 0xf7578
+ call 0191ch ; e8 a0 a3 ; 0xf7579
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf757c
+ jmp near 07636h ; e9 b4 00 ; 0xf757f logo.c:273
+ cmp bh, 008h ; 80 ff 08 ; 0xf7582 logo.c:276
+ jc short 075a4h ; 72 1d ; 0xf7585
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf7587 logo.c:278
+ jne short 0759fh ; 75 12 ; 0xf758b
+ mov ax, 009dfh ; b8 df 09 ; 0xf758d logo.c:280
+ push ax ; 50 ; 0xf7590
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7591
+ push ax ; 50 ; 0xf7594
+ call 0191ch ; e8 84 a3 ; 0xf7595
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7598
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf759b logo.c:281
+ jmp short 0756bh ; eb ca ; 0xf759f logo.c:282
+ jmp near 0763bh ; e9 97 00 ; 0xf75a1
+ cmp bh, 004h ; 80 ff 04 ; 0xf75a4 logo.c:291
+ jnc short 075c3h ; 73 1a ; 0xf75a7
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf75a9
+ jne short 075c3h ; 75 14 ; 0xf75ad
+ mov ax, 009f4h ; b8 f4 09 ; 0xf75af logo.c:293
+ push ax ; 50 ; 0xf75b2
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf75b3
+ push ax ; 50 ; 0xf75b6
+ call 0191ch ; e8 62 a3 ; 0xf75b7
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75ba
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf75bd logo.c:294
+ jmp short 075dch ; eb 19 ; 0xf75c1 logo.c:296
+ cmp bl, 004h ; 80 fb 04 ; 0xf75c3
+ jc short 075dch ; 72 14 ; 0xf75c6
+ test ch, ch ; 84 ed ; 0xf75c8
+ jne short 075dch ; 75 10 ; 0xf75ca
+ mov ax, 00a06h ; b8 06 0a ; 0xf75cc logo.c:298
+ push ax ; 50 ; 0xf75cf
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf75d0
+ push ax ; 50 ; 0xf75d3
+ call 0191ch ; e8 45 a3 ; 0xf75d4
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75d7
+ mov CH, strict byte 001h ; b5 01 ; 0xf75da logo.c:299
+ mov al, cl ; 88 c8 ; 0xf75dc logo.c:302
+ xor ah, ah ; 30 e4 ; 0xf75de
+ inc ax ; 40 ; 0xf75e0
+ push ax ; 50 ; 0xf75e1
+ mov ax, 00a1ah ; b8 1a 0a ; 0xf75e2
+ push ax ; 50 ; 0xf75e5
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf75e6
+ push ax ; 50 ; 0xf75e9
+ call 0191ch ; e8 2f a3 ; 0xf75ea
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf75ed
+ cmp bl, 004h ; 80 fb 04 ; 0xf75f0 logo.c:309
+ jc short 075f8h ; 72 03 ; 0xf75f3
+ sub bl, 004h ; 80 eb 04 ; 0xf75f5 logo.c:310
+ mov al, bl ; 88 d8 ; 0xf75f8 logo.c:312
+ xor ah, ah ; 30 e4 ; 0xf75fa
+ cwd ; 99 ; 0xf75fc
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf75fd
+ sar ax, 1 ; d1 f8 ; 0xf75ff
+ test ax, ax ; 85 c0 ; 0xf7601
+ je short 0760ah ; 74 05 ; 0xf7603
+ mov ax, 00a24h ; b8 24 0a ; 0xf7605 logo.c:313
+ jmp short 0760dh ; eb 03 ; 0xf7608 logo.c:314
+ mov ax, 00a2fh ; b8 2f 0a ; 0xf760a logo.c:315
+ push ax ; 50 ; 0xf760d
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf760e
+ push ax ; 50 ; 0xf7611
+ call 0191ch ; e8 07 a3 ; 0xf7612
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7615
+ mov al, bl ; 88 d8 ; 0xf7618 logo.c:317
+ xor ah, ah ; 30 e4 ; 0xf761a
+ cwd ; 99 ; 0xf761c
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf761d
+ idiv bx ; f7 fb ; 0xf7620
+ test dx, dx ; 85 d2 ; 0xf7622
+ je short 0762bh ; 74 05 ; 0xf7624
+ mov ax, 00a38h ; b8 38 0a ; 0xf7626 logo.c:318
+ jmp short 0762eh ; eb 03 ; 0xf7629 logo.c:319
+ mov ax, 00a3eh ; b8 3e 0a ; 0xf762b logo.c:320
+ push ax ; 50 ; 0xf762e
+ push bx ; 53 ; 0xf762f
+ call 0191ch ; e8 e9 a2 ; 0xf7630
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7633
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf7636 logo.c:322
+ jmp near 0753eh ; e9 03 ff ; 0xf7638
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf763b logo.c:324
+ jne short 07659h ; 75 18 ; 0xf763f
+ test ch, ch ; 84 ed ; 0xf7641
+ jne short 07659h ; 75 14 ; 0xf7643
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf7645
+ jne short 07659h ; 75 0e ; 0xf7649
+ mov ax, 00a45h ; b8 45 0a ; 0xf764b logo.c:327
+ push ax ; 50 ; 0xf764e
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf764f
+ push ax ; 50 ; 0xf7652
+ call 0191ch ; e8 c6 a2 ; 0xf7653
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7656
+ mov ax, 00a59h ; b8 59 0a ; 0xf7659 logo.c:329
+ push ax ; 50 ; 0xf765c
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf765d
+ push ax ; 50 ; 0xf7660
+ call 0191ch ; e8 b8 a2 ; 0xf7661
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7664
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7667 logo.c:330
+ pop si ; 5e ; 0xf766a
+ pop dx ; 5a ; 0xf766b
+ pop cx ; 59 ; 0xf766c
+ pop bx ; 5b ; 0xf766d
+ pop bp ; 5d ; 0xf766e
+ retn ; c3 ; 0xf766f
+ ; disGetNextSymbol 0xf7670 LB 0x3d48 -> off=0x0 cb=0000000000000024 uValue=00000000000f6070 'get_boot_drive'
+get_boot_drive: ; 0xf7670 LB 0x24
+ push bx ; 53 ; 0xf7670 logo.c:332
+ push dx ; 52 ; 0xf7671
+ push bp ; 55 ; 0xf7672
+ mov bp, sp ; 89 e5 ; 0xf7673
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7675 logo.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf7678
+ mov es, dx ; 8e c2 ; 0xf767b
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf767d
+ mov bx, 002b0h ; bb b0 02 ; 0xf7680 logo.c:38
+ mov es, dx ; 8e c2 ; 0xf7683
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf7685
+ sub AL, strict byte 002h ; 2c 02 ; 0xf7688 logo.c:340
+ cmp al, dl ; 38 d0 ; 0xf768a logo.c:342
+ jc short 07690h ; 72 02 ; 0xf768c
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf768e logo.c:343
+ pop bp ; 5d ; 0xf7690 logo.c:347
+ pop dx ; 5a ; 0xf7691
+ pop bx ; 5b ; 0xf7692
+ retn ; c3 ; 0xf7693
+ ; disGetNextSymbol 0xf7694 LB 0x3d24 -> off=0x0 cb=000000000000025c uValue=00000000000f6094 'show_logo'
+show_logo: ; 0xf7694 LB 0x25c
+ push bp ; 55 ; 0xf7694 logo.c:349
+ mov bp, sp ; 89 e5 ; 0xf7695
+ push bx ; 53 ; 0xf7697
+ push cx ; 51 ; 0xf7698
+ push dx ; 52 ; 0xf7699
+ push si ; 56 ; 0xf769a
+ push di ; 57 ; 0xf769b
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf769c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf769f logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf76a2
+ mov es, ax ; 8e c0 ; 0xf76a5
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf76a7
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf76aa logo.c:352
+ xor cx, cx ; 31 c9 ; 0xf76ae logo.c:356
+ mov AL, strict byte 034h ; b0 34 ; 0xf76b0 logo.c:363
+ out strict byte 043h, AL ; e6 43 ; 0xf76b2
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf76b4
+ out strict byte 040h, AL ; e6 40 ; 0xf76b6
+ mov AL, strict byte 048h ; b0 48 ; 0xf76b8
+ out strict byte 040h, AL ; e6 40 ; 0xf76ba
+ mov al, cl ; 88 c8 ; 0xf76bc logo.c:366
+ xor ah, ah ; 30 e4 ; 0xf76be
+ call 074fdh ; e8 3a fe ; 0xf76c0
+ cmp ax, 066bbh ; 3d bb 66 ; 0xf76c3 logo.c:367
+ jne short 076dah ; 75 12 ; 0xf76c6
+ push SS ; 16 ; 0xf76c8 logo.c:371
+ pop ES ; 07 ; 0xf76c9
+ lea di, [bp-018h] ; 8d 7e e8 ; 0xf76ca
+ mov ax, 04f03h ; b8 03 4f ; 0xf76cd
+ int 010h ; cd 10 ; 0xf76d0
+ mov word [es:di], bx ; 26 89 1d ; 0xf76d2
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf76d5
+ je short 076ddh ; 74 03 ; 0xf76d8
+ jmp near 077c6h ; e9 e9 00 ; 0xf76da logo.c:372
+ mov al, cl ; 88 c8 ; 0xf76dd logo.c:375
+ add AL, strict byte 004h ; 04 04 ; 0xf76df
+ xor ah, ah ; 30 e4 ; 0xf76e1
+ call 074e7h ; e8 01 fe ; 0xf76e3
+ mov dl, al ; 88 c2 ; 0xf76e6
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf76e8
+ mov al, cl ; 88 c8 ; 0xf76eb logo.c:376
+ add AL, strict byte 005h ; 04 05 ; 0xf76ed
+ xor ah, ah ; 30 e4 ; 0xf76ef
+ call 074e7h ; e8 f3 fd ; 0xf76f1
+ mov ch, al ; 88 c5 ; 0xf76f4
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf76f6
+ mov al, cl ; 88 c8 ; 0xf76f9 logo.c:377
+ add AL, strict byte 002h ; 04 02 ; 0xf76fb
+ xor ah, ah ; 30 e4 ; 0xf76fd
+ call 074fdh ; e8 fb fd ; 0xf76ff
+ mov bx, ax ; 89 c3 ; 0xf7702
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf7704
+ mov al, cl ; 88 c8 ; 0xf7707 logo.c:378
+ add AL, strict byte 006h ; 04 06 ; 0xf7709
+ xor ah, ah ; 30 e4 ; 0xf770b
+ call 074e7h ; e8 d7 fd ; 0xf770d
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf7710
+ test dl, dl ; 84 d2 ; 0xf7713 logo.c:381
+ jne short 0771fh ; 75 08 ; 0xf7715
+ test ch, ch ; 84 ed ; 0xf7717
+ jne short 0771fh ; 75 04 ; 0xf7719
+ test bx, bx ; 85 db ; 0xf771b
+ je short 076dah ; 74 bb ; 0xf771d
+ mov BH, strict byte 020h ; b7 20 ; 0xf771f logo.c:385
+ mov dx, 001e0h ; ba e0 01 ; 0xf7721
+ mov cx, 00280h ; b9 80 02 ; 0xf7724
+ mov ax, 05642h ; b8 42 56 ; 0xf7727
+ mov BL, strict byte 000h ; b3 00 ; 0xf772a
+ int 010h ; cd 10 ; 0xf772c
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf772e logo.c:387
+ je short 0773bh ; 74 08 ; 0xf7731
+ mov bx, 00142h ; bb 42 01 ; 0xf7733 logo.c:388
+ mov ax, 04f02h ; b8 02 4f ; 0xf7736
+ int 010h ; cd 10 ; 0xf7739
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf773b logo.c:390
+ je short 07766h ; 74 25 ; 0xf773f
+ xor cx, cx ; 31 c9 ; 0xf7741 logo.c:392
+ jmp short 0774bh ; eb 06 ; 0xf7743
+ inc cx ; 41 ; 0xf7745 logo.c:394
+ cmp cx, strict byte 00010h ; 83 f9 10 ; 0xf7746
+ jnbe short 0776dh ; 77 22 ; 0xf7749
+ mov ax, cx ; 89 c8 ; 0xf774b
+ or ah, 002h ; 80 cc 02 ; 0xf774d
+ mov dx, 003b8h ; ba b8 03 ; 0xf7750
+ out DX, ax ; ef ; 0xf7753
+ xor dx, dx ; 31 d2 ; 0xf7754
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7756
+ call 0741fh ; e8 c3 fc ; 0xf7759
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf775c
+ jne short 07745h ; 75 e5 ; 0xf775e
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7760
+ jmp short 0776dh ; eb 07 ; 0xf7764
+ mov ax, 00210h ; b8 10 02 ; 0xf7766 logo.c:404
+ mov dx, 003b8h ; ba b8 03 ; 0xf7769
+ out DX, ax ; ef ; 0xf776c
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf776d logo.c:407
+ jne short 07788h ; 75 15 ; 0xf7771
+ mov CL, strict byte 004h ; b1 04 ; 0xf7773 logo.c:409
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7775
+ shr ax, CL ; d3 e8 ; 0xf7778
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf777a
+ call 0741fh ; e8 9f fc ; 0xf777d
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7780 logo.c:410
+ jne short 07788h ; 75 04 ; 0xf7782
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7784 logo.c:411
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf7788 logo.c:415
+ je short 077b9h ; 74 2b ; 0xf778c
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf778e
+ jne short 077b9h ; 75 25 ; 0xf7792
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf7794 logo.c:417
+ jmp short 0779eh ; eb 05 ; 0xf7797
+ dec cx ; 49 ; 0xf7799 logo.c:419
+ test cx, cx ; 85 c9 ; 0xf779a
+ jbe short 077c6h ; 76 28 ; 0xf779c
+ mov ax, cx ; 89 c8 ; 0xf779e
+ or ah, 002h ; 80 cc 02 ; 0xf77a0
+ mov dx, 003b8h ; ba b8 03 ; 0xf77a3
+ out DX, ax ; ef ; 0xf77a6
+ xor dx, dx ; 31 d2 ; 0xf77a7
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf77a9
+ call 0741fh ; e8 70 fc ; 0xf77ac
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf77af
+ jne short 07799h ; 75 e6 ; 0xf77b1
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf77b3
+ jmp short 077c6h ; eb 0d ; 0xf77b7
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf77b9 logo.c:428
+ jne short 077c6h ; 75 07 ; 0xf77bd
+ mov ax, 00200h ; b8 00 02 ; 0xf77bf logo.c:429
+ mov dx, 003b8h ; ba b8 03 ; 0xf77c2
+ out DX, ax ; ef ; 0xf77c5
+ mov bx, 00335h ; bb 35 03 ; 0xf77c6 logo.c:43
+ mov es, si ; 8e c6 ; 0xf77c9
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf77cb
+ mov AL, strict byte 003h ; b0 03 ; 0xf77cf logo.c:437
+ mov AH, strict byte 000h ; b4 00 ; 0xf77d1
+ int 010h ; cd 10 ; 0xf77d3
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf77d5 logo.c:440
+ je short 077efh ; 74 14 ; 0xf77d9
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf77db logo.c:443
+ jne short 0781dh ; 75 3c ; 0xf77df
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf77e1
+ jne short 0781dh ; 75 36 ; 0xf77e5
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf77e7
+ je short 077f2h ; 74 05 ; 0xf77eb
+ jmp short 0781dh ; eb 2e ; 0xf77ed
+ jmp near 078d3h ; e9 e1 00 ; 0xf77ef
+ cmp byte [bp-012h], 002h ; 80 7e ee 02 ; 0xf77f2 logo.c:445
+ jne short 07806h ; 75 0e ; 0xf77f6
+ mov ax, 00a5bh ; b8 5b 0a ; 0xf77f8 logo.c:446
+ push ax ; 50 ; 0xf77fb
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf77fc
+ push ax ; 50 ; 0xf77ff
+ call 0191ch ; e8 19 a1 ; 0xf7800
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7803
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7806 logo.c:449
+ jne short 0781dh ; 75 11 ; 0xf780a
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf780c logo.c:452
+ mov ax, 000c0h ; b8 c0 00 ; 0xf780f
+ call 0741fh ; e8 0a fc ; 0xf7812
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7815 logo.c:453
+ jne short 0781dh ; 75 04 ; 0xf7817
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7819 logo.c:454
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf781d logo.c:459
+ je short 077efh ; 74 cc ; 0xf7821
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf7823 logo.c:461
+ mov ax, 00100h ; b8 00 01 ; 0xf7827 logo.c:464
+ mov cx, 01000h ; b9 00 10 ; 0xf782a
+ int 010h ; cd 10 ; 0xf782d
+ mov ax, 00700h ; b8 00 07 ; 0xf782f
+ mov BH, strict byte 007h ; b7 07 ; 0xf7832
+ db 033h, 0c9h
+ ; xor cx, cx ; 33 c9 ; 0xf7834
+ mov dx, 0184fh ; ba 4f 18 ; 0xf7836
+ int 010h ; cd 10 ; 0xf7839
+ mov ax, 00200h ; b8 00 02 ; 0xf783b
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf783e
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf7840
+ int 010h ; cd 10 ; 0xf7842
+ mov ax, 00a7dh ; b8 7d 0a ; 0xf7844 logo.c:467
+ push ax ; 50 ; 0xf7847
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7848
+ push ax ; 50 ; 0xf784b
+ call 0191ch ; e8 cd a0 ; 0xf784c
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf784f
+ call 07511h ; e8 bc fc ; 0xf7852 logo.c:468
+ mov ax, 00ac1h ; b8 c1 0a ; 0xf7855 logo.c:469
+ push ax ; 50 ; 0xf7858
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7859
+ push ax ; 50 ; 0xf785c
+ call 0191ch ; e8 bc a0 ; 0xf785d
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7860
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7863 logo.c:478
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7866
+ call 0741fh ; e8 b3 fb ; 0xf7869
+ mov cl, al ; 88 c1 ; 0xf786c
+ test al, al ; 84 c0 ; 0xf786e logo.c:479
+ je short 07863h ; 74 f1 ; 0xf7870
+ cmp AL, strict byte 030h ; 3c 30 ; 0xf7872 logo.c:481
+ je short 078c2h ; 74 4c ; 0xf7874
+ cmp cl, 002h ; 80 f9 02 ; 0xf7876 logo.c:488
+ jc short 0789bh ; 72 20 ; 0xf7879
+ cmp cl, 009h ; 80 f9 09 ; 0xf787b
+ jnbe short 0789bh ; 77 1b ; 0xf787e
+ mov al, cl ; 88 c8 ; 0xf7880 logo.c:490
+ xor ah, ah ; 30 e4 ; 0xf7882
+ call 07670h ; e8 e9 fd ; 0xf7884
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf7887 logo.c:497
+ jne short 0788dh ; 75 02 ; 0xf7889
+ jmp short 07863h ; eb d6 ; 0xf788b logo.c:498
+ mov bx, 00334h ; bb 34 03 ; 0xf788d logo.c:43
+ mov es, si ; 8e c6 ; 0xf7890
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7892
+ mov byte [bp-00eh], 002h ; c6 46 f2 02 ; 0xf7895 logo.c:501
+ jmp short 078c2h ; eb 27 ; 0xf7899 logo.c:502
+ cmp cl, 02eh ; 80 f9 2e ; 0xf789b logo.c:505
+ je short 078b0h ; 74 10 ; 0xf789e
+ cmp cl, 026h ; 80 f9 26 ; 0xf78a0
+ je short 078b6h ; 74 11 ; 0xf78a3
+ cmp cl, 021h ; 80 f9 21 ; 0xf78a5
+ jne short 078bch ; 75 12 ; 0xf78a8
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf78aa logo.c:509
+ jmp short 078c2h ; eb 12 ; 0xf78ae logo.c:510
+ mov byte [bp-00eh], 003h ; c6 46 f2 03 ; 0xf78b0 logo.c:513
+ jmp short 078c2h ; eb 0c ; 0xf78b4 logo.c:514
+ mov byte [bp-00eh], 004h ; c6 46 f2 04 ; 0xf78b6 logo.c:517
+ jmp short 078c2h ; eb 06 ; 0xf78ba logo.c:518
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf78bc logo.c:521
+ je short 07863h ; 74 a1 ; 0xf78c0
+ mov bx, 00335h ; bb 35 03 ; 0xf78c2 logo.c:43
+ mov es, si ; 8e c6 ; 0xf78c5
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf78c7
+ mov byte [es:bx], al ; 26 88 07 ; 0xf78ca
+ mov AL, strict byte 003h ; b0 03 ; 0xf78cd logo.c:528
+ mov AH, strict byte 000h ; b4 00 ; 0xf78cf
+ int 010h ; cd 10 ; 0xf78d1
+ mov AL, strict byte 034h ; b0 34 ; 0xf78d3 logo.c:533
+ out strict byte 043h, AL ; e6 43 ; 0xf78d5
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf78d7
+ out strict byte 040h, AL ; e6 40 ; 0xf78d9
+ out strict byte 040h, AL ; e6 40 ; 0xf78db
+ push bp ; 55 ; 0xf78dd
+ push DS ; 1e ; 0xf78de
+ mov ds, ax ; 8e d8 ; 0xf78df
+ call 0ede3h ; e8 ff 74 ; 0xf78e1
+ pop DS ; 1f ; 0xf78e4
+ pop bp ; 5d ; 0xf78e5
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf78e6 logo.c:536
+ pop di ; 5f ; 0xf78e9
+ pop si ; 5e ; 0xf78ea
+ pop dx ; 5a ; 0xf78eb
+ pop cx ; 59 ; 0xf78ec
+ pop bx ; 5b ; 0xf78ed
+ pop bp ; 5d ; 0xf78ee
+ retn ; c3 ; 0xf78ef
+ ; disGetNextSymbol 0xf78f0 LB 0x3ac8 -> off=0x0 cb=0000000000000072 uValue=00000000000f62f0 'delay_boot'
+delay_boot: ; 0xf78f0 LB 0x72
+ push bp ; 55 ; 0xf78f0 logo.c:539
+ mov bp, sp ; 89 e5 ; 0xf78f1
+ push bx ; 53 ; 0xf78f3
+ push cx ; 51 ; 0xf78f4
+ push dx ; 52 ; 0xf78f5
+ push si ; 56 ; 0xf78f6
+ push di ; 57 ; 0xf78f7
+ mov bx, ax ; 89 c3 ; 0xf78f8
+ test ax, ax ; 85 c0 ; 0xf78fa logo.c:543
+ je short 07958h ; 74 5a ; 0xf78fc
+ mov AL, strict byte 034h ; b0 34 ; 0xf78fe logo.c:547
+ out strict byte 043h, AL ; e6 43 ; 0xf7900
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7902
+ out strict byte 040h, AL ; e6 40 ; 0xf7904
+ mov AL, strict byte 048h ; b0 48 ; 0xf7906
+ out strict byte 040h, AL ; e6 40 ; 0xf7908
+ push bx ; 53 ; 0xf790a logo.c:549
+ mov ax, 00b0bh ; b8 0b 0b ; 0xf790b
+ push ax ; 50 ; 0xf790e
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf790f
+ push ax ; 50 ; 0xf7912
+ call 0191ch ; e8 06 a0 ; 0xf7913
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7916
+ test bx, bx ; 85 db ; 0xf7919 logo.c:550
+ jbe short 07937h ; 76 1a ; 0xf791b
+ push bx ; 53 ; 0xf791d logo.c:552
+ mov ax, 00b29h ; b8 29 0b ; 0xf791e
+ push ax ; 50 ; 0xf7921
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7922
+ push ax ; 50 ; 0xf7925
+ call 0191ch ; e8 f3 9f ; 0xf7926
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7929
+ xor dx, dx ; 31 d2 ; 0xf792c logo.c:553
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf792e
+ call 0741fh ; e8 eb fa ; 0xf7931
+ dec bx ; 4b ; 0xf7934 logo.c:554
+ jmp short 07919h ; eb e2 ; 0xf7935
+ mov bx, 00a59h ; bb 59 0a ; 0xf7937 logo.c:555
+ push bx ; 53 ; 0xf793a
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf793b
+ push bx ; 53 ; 0xf793e
+ call 0191ch ; e8 da 9f ; 0xf793f
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7942
+ mov AL, strict byte 034h ; b0 34 ; 0xf7945 logo.c:557
+ out strict byte 043h, AL ; e6 43 ; 0xf7947
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7949
+ out strict byte 040h, AL ; e6 40 ; 0xf794b
+ out strict byte 040h, AL ; e6 40 ; 0xf794d
+ push bp ; 55 ; 0xf794f
+ push DS ; 1e ; 0xf7950
+ mov ds, ax ; 8e d8 ; 0xf7951
+ call 0ede3h ; e8 8d 74 ; 0xf7953
+ pop DS ; 1f ; 0xf7956
+ pop bp ; 5d ; 0xf7957
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7958 logo.c:558
+ pop di ; 5f ; 0xf795b
+ pop si ; 5e ; 0xf795c
+ pop dx ; 5a ; 0xf795d
+ pop cx ; 59 ; 0xf795e
+ pop bx ; 5b ; 0xf795f
+ pop bp ; 5d ; 0xf7960
+ retn ; c3 ; 0xf7961
+ ; disGetNextSymbol 0xf7962 LB 0x3a56 -> off=0x0 cb=00000000000000d5 uValue=00000000000f6362 'scsi_cmd_data_in'
+scsi_cmd_data_in: ; 0xf7962 LB 0xd5
+ push bp ; 55 ; 0xf7962 scsi.c:65
+ mov bp, sp ; 89 e5 ; 0xf7963
+ push si ; 56 ; 0xf7965
+ push di ; 57 ; 0xf7966
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7967
+ mov si, ax ; 89 c6 ; 0xf796a
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf796c
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf796f
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf7972
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7975
+ mov dx, si ; 89 f2 ; 0xf7978 scsi.c:73
+ in AL, DX ; ec ; 0xf797a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf797b
+ test AL, strict byte 001h ; a8 01 ; 0xf797d scsi.c:74
+ jne short 07978h ; 75 f7 ; 0xf797f
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7981 scsi.c:76
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf7984
+ jne short 0798ch ; 75 04 ; 0xf7986
+ xor ax, ax ; 31 c0 ; 0xf7988
+ jmp short 0798eh ; eb 02 ; 0xf798a
+ xor ah, ah ; 30 e4 ; 0xf798c
+ mov di, ax ; 89 c7 ; 0xf798e
+ mov ax, bx ; 89 d8 ; 0xf7990
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7992
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7995
+ shr dx, 1 ; d1 ea ; 0xf7998
+ rcr ax, 1 ; d1 d8 ; 0xf799a
+ loop 07998h ; e2 fa ; 0xf799c
+ mov cx, ax ; 89 c1 ; 0xf799e
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf79a0
+ or cx, di ; 09 f9 ; 0xf79a4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf79a6 scsi.c:77
+ mov dx, si ; 89 f2 ; 0xf79a9
+ out DX, AL ; ee ; 0xf79ab
+ xor al, al ; 30 c0 ; 0xf79ac scsi.c:78
+ out DX, AL ; ee ; 0xf79ae
+ mov al, cl ; 88 c8 ; 0xf79af scsi.c:79
+ out DX, AL ; ee ; 0xf79b1
+ mov al, bl ; 88 d8 ; 0xf79b2 scsi.c:80
+ out DX, AL ; ee ; 0xf79b4
+ mov ax, bx ; 89 d8 ; 0xf79b5 scsi.c:81
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf79b7
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf79ba
+ shr dx, 1 ; d1 ea ; 0xf79bd
+ rcr ax, 1 ; d1 d8 ; 0xf79bf
+ loop 079bdh ; e2 fa ; 0xf79c1
+ mov dx, si ; 89 f2 ; 0xf79c3
+ out DX, AL ; ee ; 0xf79c5
+ xor cx, cx ; 31 c9 ; 0xf79c6 scsi.c:82
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf79c8
+ xor ah, ah ; 30 e4 ; 0xf79cb
+ cmp cx, ax ; 39 c1 ; 0xf79cd
+ jnc short 079dfh ; 73 0e ; 0xf79cf
+ les di, [bp-00ah] ; c4 7e f6 ; 0xf79d1 scsi.c:83
+ add di, cx ; 01 cf ; 0xf79d4
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf79d6
+ mov dx, si ; 89 f2 ; 0xf79d9
+ out DX, AL ; ee ; 0xf79db
+ inc cx ; 41 ; 0xf79dc
+ jmp short 079c8h ; eb e9 ; 0xf79dd
+ mov dx, si ; 89 f2 ; 0xf79df scsi.c:87
+ in AL, DX ; ec ; 0xf79e1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf79e2
+ test AL, strict byte 001h ; a8 01 ; 0xf79e4 scsi.c:88
+ jne short 079dfh ; 75 f7 ; 0xf79e6
+ test AL, strict byte 002h ; a8 02 ; 0xf79e8 scsi.c:91
+ je short 079fah ; 74 0e ; 0xf79ea
+ lea dx, [si+003h] ; 8d 54 03 ; 0xf79ec scsi.c:92
+ xor al, al ; 30 c0 ; 0xf79ef
+ out DX, AL ; ee ; 0xf79f1
+ in AL, DX ; ec ; 0xf79f2 scsi.c:94
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf79f3
+ mov di, strict word 00004h ; bf 04 00 ; 0xf79f5 scsi.c:96
+ jmp short 07a2ch ; eb 32 ; 0xf79f8
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf79fa scsi.c:102
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf79fd
+ jne short 07a09h ; 75 06 ; 0xf7a01
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf7a03
+ jbe short 07a23h ; 76 1a ; 0xf7a07
+ mov cx, 08000h ; b9 00 80 ; 0xf7a09 scsi.c:104
+ les di, [bp+006h] ; c4 7e 06 ; 0xf7a0c
+ rep insb ; f3 6c ; 0xf7a0f
+ add bx, 08000h ; 81 c3 00 80 ; 0xf7a11 scsi.c:105
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7a15
+ mov ax, es ; 8c c0 ; 0xf7a19
+ add ax, 00800h ; 05 00 08 ; 0xf7a1b
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7a1e
+ jmp short 079fah ; eb d7 ; 0xf7a21 scsi.c:107
+ mov cx, bx ; 89 d9 ; 0xf7a23 scsi.c:110
+ les di, [bp+006h] ; c4 7e 06 ; 0xf7a25
+ rep insb ; f3 6c ; 0xf7a28
+ xor di, di ; 31 ff ; 0xf7a2a scsi.c:112
+ mov ax, di ; 89 f8 ; 0xf7a2c scsi.c:113
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7a2e
+ pop di ; 5f ; 0xf7a31
+ pop si ; 5e ; 0xf7a32
+ pop bp ; 5d ; 0xf7a33
+ retn 0000ah ; c2 0a 00 ; 0xf7a34
+ ; disGetNextSymbol 0xf7a37 LB 0x3981 -> off=0x0 cb=00000000000000d5 uValue=00000000000f6437 'scsi_cmd_data_out'
+scsi_cmd_data_out: ; 0xf7a37 LB 0xd5
+ push bp ; 55 ; 0xf7a37 scsi.c:115
+ mov bp, sp ; 89 e5 ; 0xf7a38
+ push si ; 56 ; 0xf7a3a
+ push di ; 57 ; 0xf7a3b
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7a3c
+ mov di, ax ; 89 c7 ; 0xf7a3f
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf7a41
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7a44
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf7a47
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7a4a
+ mov dx, di ; 89 fa ; 0xf7a4d scsi.c:123
+ in AL, DX ; ec ; 0xf7a4f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7a50
+ test AL, strict byte 001h ; a8 01 ; 0xf7a52 scsi.c:124
+ jne short 07a4dh ; 75 f7 ; 0xf7a54
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7a56 scsi.c:127
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf7a59
+ jne short 07a61h ; 75 04 ; 0xf7a5b
+ xor ax, ax ; 31 c0 ; 0xf7a5d
+ jmp short 07a63h ; eb 02 ; 0xf7a5f
+ xor ah, ah ; 30 e4 ; 0xf7a61
+ mov si, ax ; 89 c6 ; 0xf7a63
+ mov ax, bx ; 89 d8 ; 0xf7a65
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7a67
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7a6a
+ shr dx, 1 ; d1 ea ; 0xf7a6d
+ rcr ax, 1 ; d1 d8 ; 0xf7a6f
+ loop 07a6dh ; e2 fa ; 0xf7a71
+ mov cx, ax ; 89 c1 ; 0xf7a73
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7a75
+ or cx, si ; 09 f1 ; 0xf7a79
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7a7b scsi.c:128
+ mov dx, di ; 89 fa ; 0xf7a7e
+ out DX, AL ; ee ; 0xf7a80
+ mov AL, strict byte 001h ; b0 01 ; 0xf7a81 scsi.c:129
+ out DX, AL ; ee ; 0xf7a83
+ mov al, cl ; 88 c8 ; 0xf7a84 scsi.c:130
+ out DX, AL ; ee ; 0xf7a86
+ mov al, bl ; 88 d8 ; 0xf7a87 scsi.c:131
+ out DX, AL ; ee ; 0xf7a89
+ mov ax, bx ; 89 d8 ; 0xf7a8a scsi.c:132
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7a8c
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7a8f
+ shr dx, 1 ; d1 ea ; 0xf7a92
+ rcr ax, 1 ; d1 d8 ; 0xf7a94
+ loop 07a92h ; e2 fa ; 0xf7a96
+ mov dx, di ; 89 fa ; 0xf7a98
+ out DX, AL ; ee ; 0xf7a9a
+ xor cx, cx ; 31 c9 ; 0xf7a9b scsi.c:133
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7a9d
+ xor ah, ah ; 30 e4 ; 0xf7aa0
+ cmp cx, ax ; 39 c1 ; 0xf7aa2
+ jnc short 07ab4h ; 73 0e ; 0xf7aa4
+ les si, [bp-00ah] ; c4 76 f6 ; 0xf7aa6 scsi.c:134
+ add si, cx ; 01 ce ; 0xf7aa9
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7aab
+ mov dx, di ; 89 fa ; 0xf7aae
+ out DX, AL ; ee ; 0xf7ab0
+ inc cx ; 41 ; 0xf7ab1
+ jmp short 07a9dh ; eb e9 ; 0xf7ab2
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf7ab4 scsi.c:139
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7ab7
+ jne short 07ac3h ; 75 06 ; 0xf7abb
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf7abd
+ jbe short 07adeh ; 76 1b ; 0xf7ac1
+ mov cx, 08000h ; b9 00 80 ; 0xf7ac3 scsi.c:141
+ les si, [bp+006h] ; c4 76 06 ; 0xf7ac6
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7ac9
+ add bx, 08000h ; 81 c3 00 80 ; 0xf7acc scsi.c:142
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7ad0
+ mov ax, es ; 8c c0 ; 0xf7ad4
+ add ax, 00800h ; 05 00 08 ; 0xf7ad6
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7ad9
+ jmp short 07ab4h ; eb d6 ; 0xf7adc scsi.c:144
+ mov cx, bx ; 89 d9 ; 0xf7ade scsi.c:147
+ les si, [bp+006h] ; c4 76 06 ; 0xf7ae0
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7ae3
+ mov dx, di ; 89 fa ; 0xf7ae6 scsi.c:151
+ in AL, DX ; ec ; 0xf7ae8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7ae9
+ test AL, strict byte 001h ; a8 01 ; 0xf7aeb scsi.c:152
+ jne short 07ae6h ; 75 f7 ; 0xf7aed
+ test AL, strict byte 002h ; a8 02 ; 0xf7aef scsi.c:155
+ je short 07b01h ; 74 0e ; 0xf7af1
+ lea dx, [di+003h] ; 8d 55 03 ; 0xf7af3 scsi.c:156
+ xor al, al ; 30 c0 ; 0xf7af6
+ out DX, AL ; ee ; 0xf7af8
+ in AL, DX ; ec ; 0xf7af9 scsi.c:158
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7afa
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7afc scsi.c:160
+ jmp short 07b03h ; eb 02 ; 0xf7aff
+ xor ax, ax ; 31 c0 ; 0xf7b01 scsi.c:163
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7b03 scsi.c:164
+ pop di ; 5f ; 0xf7b06
+ pop si ; 5e ; 0xf7b07
+ pop bp ; 5d ; 0xf7b08
+ retn 0000ah ; c2 0a 00 ; 0xf7b09
+ ; disGetNextSymbol 0xf7b0c LB 0x38ac -> off=0x0 cb=00000000000000e9 uValue=00000000000f650c 'scsi_read_sectors'
+scsi_read_sectors: ; 0xf7b0c LB 0xe9
+ push bp ; 55 ; 0xf7b0c scsi.c:173
+ mov bp, sp ; 89 e5 ; 0xf7b0d
+ push si ; 56 ; 0xf7b0f
+ push di ; 57 ; 0xf7b10
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7b11
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7b14
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7b17 scsi.c:182
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7b1a
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7b1e
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7b20
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7b23 scsi.c:183
+ jbe short 07b3ch ; 76 15 ; 0xf7b25
+ xor ah, ah ; 30 e4 ; 0xf7b27 scsi.c:184
+ push ax ; 50 ; 0xf7b29
+ mov ax, 00b2eh ; b8 2e 0b ; 0xf7b2a
+ push ax ; 50 ; 0xf7b2d
+ mov ax, 00b40h ; b8 40 0b ; 0xf7b2e
+ push ax ; 50 ; 0xf7b31
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7b32
+ push ax ; 50 ; 0xf7b35
+ call 0191ch ; e8 e3 9d ; 0xf7b36
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7b39
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7b3c scsi.c:186
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7b3f
+ mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf7b43 scsi.c:189
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7b48 scsi.c:190
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7b4c
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7b50
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7b54
+ xchg ah, al ; 86 c4 ; 0xf7b57
+ xchg bh, bl ; 86 df ; 0xf7b59
+ xchg ch, cl ; 86 cd ; 0xf7b5b
+ xchg dh, dl ; 86 d6 ; 0xf7b5d
+ xchg dx, ax ; 92 ; 0xf7b5f
+ xchg bx, cx ; 87 cb ; 0xf7b60
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7b62
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7b65
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7b68
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7b6b
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7b6e scsi.c:191
+ mov ax, di ; 89 f8 ; 0xf7b72 scsi.c:192
+ xor dx, dx ; 31 d2 ; 0xf7b74
+ xchg ah, al ; 86 c4 ; 0xf7b76
+ xchg dh, dl ; 86 d6 ; 0xf7b78
+ xchg dx, ax ; 92 ; 0xf7b7a
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7b7b
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7b7e
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7b81 scsi.c:193
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7b85 scsi.c:196
+ xor ah, ah ; 30 e4 ; 0xf7b88
+ sal ax, 1 ; d1 e0 ; 0xf7b8a
+ sal ax, 1 ; d1 e0 ; 0xf7b8c
+ mov bx, si ; 89 f3 ; 0xf7b8e
+ add bx, ax ; 01 c3 ; 0xf7b90
+ mov ax, word [es:bx+00294h] ; 26 8b 87 94 02 ; 0xf7b92
+ mov bl, byte [es:bx+00296h] ; 26 8a 9f 96 02 ; 0xf7b97 scsi.c:197
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf7b9c scsi.c:202
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7b9f
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7ba4
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7ba7
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7baa
+ loop 07ba7h ; e2 f8 ; 0xf7bad
+ push word [bp-008h] ; ff 76 f8 ; 0xf7baf
+ push word [bp-00ah] ; ff 76 f6 ; 0xf7bb2
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7bb5
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7bb9
+ mov dx, strict word 00010h ; ba 10 00 ; 0xf7bbd
+ push dx ; 52 ; 0xf7bc0
+ mov dl, bl ; 88 da ; 0xf7bc1
+ xor dh, dh ; 30 f6 ; 0xf7bc3
+ mov cx, ss ; 8c d1 ; 0xf7bc5
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7bc7
+ call 07962h ; e8 95 fd ; 0xf7bca
+ mov ah, al ; 88 c4 ; 0xf7bcd
+ test al, al ; 84 c0 ; 0xf7bcf scsi.c:205
+ jne short 07be8h ; 75 15 ; 0xf7bd1
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7bd3 scsi.c:207
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7bd6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7bda scsi.c:208
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7bdd
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7be1
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7be4
+ mov al, ah ; 88 e0 ; 0xf7be8 scsi.c:212
+ xor ah, ah ; 30 e4 ; 0xf7bea
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7bec scsi.c:213
+ pop di ; 5f ; 0xf7bef
+ pop si ; 5e ; 0xf7bf0
+ pop bp ; 5d ; 0xf7bf1
+ retn 00004h ; c2 04 00 ; 0xf7bf2
+ ; disGetNextSymbol 0xf7bf5 LB 0x37c3 -> off=0x0 cb=00000000000000e9 uValue=00000000000f65f5 'scsi_write_sectors'
+scsi_write_sectors: ; 0xf7bf5 LB 0xe9
+ push bp ; 55 ; 0xf7bf5 scsi.c:222
+ mov bp, sp ; 89 e5 ; 0xf7bf6
+ push si ; 56 ; 0xf7bf8
+ push di ; 57 ; 0xf7bf9
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7bfa
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7bfd
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7c00 scsi.c:231
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7c03
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7c07
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7c09
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7c0c scsi.c:232
+ jbe short 07c25h ; 76 15 ; 0xf7c0e
+ xor ah, ah ; 30 e4 ; 0xf7c10 scsi.c:233
+ push ax ; 50 ; 0xf7c12
+ mov ax, 00b5fh ; b8 5f 0b ; 0xf7c13
+ push ax ; 50 ; 0xf7c16
+ mov ax, 00b40h ; b8 40 0b ; 0xf7c17
+ push ax ; 50 ; 0xf7c1a
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7c1b
+ push ax ; 50 ; 0xf7c1e
+ call 0191ch ; e8 fa 9c ; 0xf7c1f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7c22
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7c25 scsi.c:235
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7c28
+ mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf7c2c scsi.c:238
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7c31 scsi.c:239
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7c35
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7c39
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7c3d
+ xchg ah, al ; 86 c4 ; 0xf7c40
+ xchg bh, bl ; 86 df ; 0xf7c42
+ xchg ch, cl ; 86 cd ; 0xf7c44
+ xchg dh, dl ; 86 d6 ; 0xf7c46
+ xchg dx, ax ; 92 ; 0xf7c48
+ xchg bx, cx ; 87 cb ; 0xf7c49
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7c4b
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7c4e
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7c51
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7c54
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7c57 scsi.c:240
+ mov ax, di ; 89 f8 ; 0xf7c5b scsi.c:241
+ xor dx, dx ; 31 d2 ; 0xf7c5d
+ xchg ah, al ; 86 c4 ; 0xf7c5f
+ xchg dh, dl ; 86 d6 ; 0xf7c61
+ xchg dx, ax ; 92 ; 0xf7c63
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7c64
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7c67
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7c6a scsi.c:242
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7c6e scsi.c:244
+ xor ah, ah ; 30 e4 ; 0xf7c71
+ sal ax, 1 ; d1 e0 ; 0xf7c73
+ sal ax, 1 ; d1 e0 ; 0xf7c75
+ mov bx, si ; 89 f3 ; 0xf7c77
+ add bx, ax ; 01 c3 ; 0xf7c79
+ mov ax, word [es:bx+00294h] ; 26 8b 87 94 02 ; 0xf7c7b
+ mov bl, byte [es:bx+00296h] ; 26 8a 9f 96 02 ; 0xf7c80 scsi.c:245
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf7c85 scsi.c:250
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7c88
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7c8d
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7c90
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7c93
+ loop 07c90h ; e2 f8 ; 0xf7c96
+ push word [bp-008h] ; ff 76 f8 ; 0xf7c98
+ push word [bp-00ah] ; ff 76 f6 ; 0xf7c9b
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7c9e
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7ca2
+ mov dx, strict word 00010h ; ba 10 00 ; 0xf7ca6
+ push dx ; 52 ; 0xf7ca9
+ mov dl, bl ; 88 da ; 0xf7caa
+ xor dh, dh ; 30 f6 ; 0xf7cac
+ mov cx, ss ; 8c d1 ; 0xf7cae
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7cb0
+ call 07a37h ; e8 81 fd ; 0xf7cb3
+ mov ah, al ; 88 c4 ; 0xf7cb6
+ test al, al ; 84 c0 ; 0xf7cb8 scsi.c:253
+ jne short 07cd1h ; 75 15 ; 0xf7cba
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7cbc scsi.c:255
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7cbf
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7cc3 scsi.c:256
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7cc6
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7cca
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7ccd
+ mov al, ah ; 88 e0 ; 0xf7cd1 scsi.c:260
+ xor ah, ah ; 30 e4 ; 0xf7cd3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7cd5 scsi.c:261
+ pop di ; 5f ; 0xf7cd8
+ pop si ; 5e ; 0xf7cd9
+ pop bp ; 5d ; 0xf7cda
+ retn 00004h ; c2 04 00 ; 0xf7cdb
+ ; disGetNextSymbol 0xf7cde LB 0x36da -> off=0x0 cb=0000000000000174 uValue=00000000000f66de 'scsi_cmd_packet'
+scsi_cmd_packet: ; 0xf7cde LB 0x174
+ push bp ; 55 ; 0xf7cde scsi.c:281
+ mov bp, sp ; 89 e5 ; 0xf7cdf
+ push si ; 56 ; 0xf7ce1
+ push di ; 57 ; 0xf7ce2
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf7ce3
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf7ce6
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf7ce9
+ mov word [bp-00ah], cx ; 89 4e f6 ; 0xf7cec
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7cef scsi.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf7cf2
+ mov es, dx ; 8e c2 ; 0xf7cf5
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7cf7
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf7cfa scsi.c:49
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf7cfd
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf7d00 scsi.c:292
+ jne short 07d29h ; 75 23 ; 0xf7d04
+ mov bx, 00eeah ; bb ea 0e ; 0xf7d06 scsi.c:293
+ mov cx, ds ; 8c d9 ; 0xf7d09
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7d0b
+ call 018d9h ; e8 c8 9b ; 0xf7d0e
+ mov ax, 00b72h ; b8 72 0b ; 0xf7d11
+ push ax ; 50 ; 0xf7d14
+ mov ax, 00b82h ; b8 82 0b ; 0xf7d15
+ push ax ; 50 ; 0xf7d18
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7d19
+ push ax ; 50 ; 0xf7d1c
+ call 0191ch ; e8 fc 9b ; 0xf7d1d
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7d20
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7d23 scsi.c:294
+ jmp near 07e47h ; e9 1e 01 ; 0xf7d26
+ sub ax, strict word 00008h ; 2d 08 00 ; 0xf7d29 scsi.c:298
+ sal ax, 1 ; d1 e0 ; 0xf7d2c scsi.c:308
+ sal ax, 1 ; d1 e0 ; 0xf7d2e
+ sub byte [bp-008h], 002h ; 80 6e f8 02 ; 0xf7d30 scsi.c:306
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7d34
+ mov di, si ; 89 f7 ; 0xf7d37
+ add di, ax ; 01 c7 ; 0xf7d39
+ mov bx, word [es:di+00294h] ; 26 8b 9d 94 02 ; 0xf7d3b
+ mov al, byte [es:di+00296h] ; 26 8a 85 96 02 ; 0xf7d40 scsi.c:309
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7d45
+ mov dx, bx ; 89 da ; 0xf7d48 scsi.c:313
+ in AL, DX ; ec ; 0xf7d4a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7d4b
+ test AL, strict byte 001h ; a8 01 ; 0xf7d4d scsi.c:314
+ jne short 07d48h ; 75 f7 ; 0xf7d4f
+ xor ax, ax ; 31 c0 ; 0xf7d51 scsi.c:320
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7d53
+ add dx, word [bp+004h] ; 03 56 04 ; 0xf7d56
+ mov cx, word [bp+008h] ; 8b 4e 08 ; 0xf7d59
+ adc cx, ax ; 11 c1 ; 0xf7d5c
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7d5e
+ mov ax, word [es:si+020h] ; 26 8b 44 20 ; 0xf7d61
+ xor di, di ; 31 ff ; 0xf7d65
+ add dx, ax ; 01 c2 ; 0xf7d67
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7d69
+ adc di, cx ; 11 cf ; 0xf7d6c
+ mov ax, dx ; 89 d0 ; 0xf7d6e scsi.c:322
+ mov dx, di ; 89 fa ; 0xf7d70
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7d72
+ shr dx, 1 ; d1 ea ; 0xf7d75
+ rcr ax, 1 ; d1 d8 ; 0xf7d77
+ loop 07d75h ; e2 fa ; 0xf7d79
+ mov cx, ax ; 89 c1 ; 0xf7d7b
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7d7d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7d81
+ xor ah, ah ; 30 e4 ; 0xf7d84
+ or cx, ax ; 09 c1 ; 0xf7d86
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7d88 scsi.c:323
+ mov dx, bx ; 89 da ; 0xf7d8b
+ out DX, AL ; ee ; 0xf7d8d
+ xor al, al ; 30 c0 ; 0xf7d8e scsi.c:324
+ out DX, AL ; ee ; 0xf7d90
+ mov al, cl ; 88 c8 ; 0xf7d91 scsi.c:325
+ out DX, AL ; ee ; 0xf7d93
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7d94 scsi.c:326
+ out DX, AL ; ee ; 0xf7d97
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7d98 scsi.c:327
+ mov dx, di ; 89 fa ; 0xf7d9b
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7d9d
+ shr dx, 1 ; d1 ea ; 0xf7da0
+ rcr ax, 1 ; d1 d8 ; 0xf7da2
+ loop 07da0h ; e2 fa ; 0xf7da4
+ mov dx, bx ; 89 da ; 0xf7da6
+ out DX, AL ; ee ; 0xf7da8
+ xor cx, cx ; 31 c9 ; 0xf7da9 scsi.c:328
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7dab
+ xor ah, ah ; 30 e4 ; 0xf7dae
+ cmp cx, ax ; 39 c1 ; 0xf7db0
+ jnc short 07dc2h ; 73 0e ; 0xf7db2
+ les di, [bp-00ch] ; c4 7e f4 ; 0xf7db4 scsi.c:329
+ add di, cx ; 01 cf ; 0xf7db7
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf7db9
+ mov dx, bx ; 89 da ; 0xf7dbc
+ out DX, AL ; ee ; 0xf7dbe
+ inc cx ; 41 ; 0xf7dbf
+ jmp short 07dabh ; eb e9 ; 0xf7dc0
+ mov dx, bx ; 89 da ; 0xf7dc2 scsi.c:333
+ in AL, DX ; ec ; 0xf7dc4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7dc5
+ test AL, strict byte 001h ; a8 01 ; 0xf7dc7 scsi.c:334
+ jne short 07dc2h ; 75 f7 ; 0xf7dc9
+ test AL, strict byte 002h ; a8 02 ; 0xf7dcb scsi.c:337
+ je short 07dddh ; 74 0e ; 0xf7dcd
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf7dcf scsi.c:338
+ xor al, al ; 30 c0 ; 0xf7dd2
+ out DX, AL ; ee ; 0xf7dd4
+ in AL, DX ; ec ; 0xf7dd5 scsi.c:340
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7dd6
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf7dd8 scsi.c:342
+ jmp short 07e47h ; eb 6a ; 0xf7ddb
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7ddd scsi.c:347
+ test ax, ax ; 85 c0 ; 0xf7de0
+ je short 07dech ; 74 08 ; 0xf7de2
+ lea dx, [bx+001h] ; 8d 57 01 ; 0xf7de4 scsi.c:348
+ mov cx, ax ; 89 c1 ; 0xf7de7
+ in AL, DX ; ec ; 0xf7de9
+ loop 07de9h ; e2 fd ; 0xf7dea
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7dec scsi.c:350
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7def
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7df2
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xf7df6
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7df9
+ lea ax, [bx+001h] ; 8d 47 01 ; 0xf7dfd scsi.c:355
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf7e00
+ jne short 07e0dh ; 75 07 ; 0xf7e04
+ cmp word [bp+006h], 08000h ; 81 7e 06 00 80 ; 0xf7e06
+ jbe short 07e2ah ; 76 1d ; 0xf7e0b
+ mov dx, ax ; 89 c2 ; 0xf7e0d scsi.c:357
+ mov cx, 08000h ; b9 00 80 ; 0xf7e0f
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf7e12
+ rep insb ; f3 6c ; 0xf7e15
+ add word [bp+006h], 08000h ; 81 46 06 00 80 ; 0xf7e17 scsi.c:358
+ adc word [bp+008h], strict byte 0ffffh ; 83 56 08 ff ; 0xf7e1c
+ mov ax, es ; 8c c0 ; 0xf7e20
+ add ax, 00800h ; 05 00 08 ; 0xf7e22
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf7e25
+ jmp short 07dfdh ; eb d3 ; 0xf7e28 scsi.c:360
+ mov dx, ax ; 89 c2 ; 0xf7e2a scsi.c:363
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf7e2c
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf7e2f
+ rep insb ; f3 6c ; 0xf7e32
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7e34 scsi.c:365
+ cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00 ; 0xf7e37
+ je short 07e45h ; 74 07 ; 0xf7e3c
+ mov cx, word [es:si+020h] ; 26 8b 4c 20 ; 0xf7e3e scsi.c:366
+ in AL, DX ; ec ; 0xf7e42
+ loop 07e42h ; e2 fd ; 0xf7e43
+ xor dx, dx ; 31 d2 ; 0xf7e45 scsi.c:368
+ mov ax, dx ; 89 d0 ; 0xf7e47 scsi.c:369
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7e49
+ pop di ; 5f ; 0xf7e4c
+ pop si ; 5e ; 0xf7e4d
+ pop bp ; 5d ; 0xf7e4e
+ retn 0000ch ; c2 0c 00 ; 0xf7e4f
+ ; disGetNextSymbol 0xf7e52 LB 0x3566 -> off=0x0 cb=00000000000004cc uValue=00000000000f6852 'scsi_enumerate_attached_devices'
+scsi_enumerate_attached_devices: ; 0xf7e52 LB 0x4cc
+ push bp ; 55 ; 0xf7e52 scsi.c:377
+ mov bp, sp ; 89 e5 ; 0xf7e53
+ push bx ; 53 ; 0xf7e55
+ push cx ; 51 ; 0xf7e56
+ push dx ; 52 ; 0xf7e57
+ push si ; 56 ; 0xf7e58
+ push di ; 57 ; 0xf7e59
+ sub sp, 0023eh ; 81 ec 3e 02 ; 0xf7e5a
+ push ax ; 50 ; 0xf7e5e
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7e5f scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7e62
+ mov es, ax ; 8e c0 ; 0xf7e65
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7e67
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xf7e6a scsi.c:49
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7e6d
+ mov word [bp-016h], strict word 00000h ; c7 46 ea 00 00 ; 0xf7e70 scsi.c:386
+ jmp near 08291h ; e9 19 04 ; 0xf7e75
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7e78 scsi.c:406
+ jc short 07e7fh ; 72 03 ; 0xf7e7a
+ jmp near 08314h ; e9 95 04 ; 0xf7e7c
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf7e7f scsi.c:421
+ xor bx, bx ; 31 db ; 0xf7e82
+ mov dx, ss ; 8c d2 ; 0xf7e84
+ lea ax, [bp-048h] ; 8d 46 b8 ; 0xf7e86
+ call 0b090h ; e8 04 32 ; 0xf7e89
+ mov byte [bp-048h], 09eh ; c6 46 b8 9e ; 0xf7e8c scsi.c:422
+ mov byte [bp-047h], 010h ; c6 46 b9 10 ; 0xf7e90 scsi.c:423
+ mov byte [bp-03bh], 020h ; c6 46 c5 20 ; 0xf7e94 scsi.c:424
+ xor ax, ax ; 31 c0 ; 0xf7e98 scsi.c:426
+ push ax ; 50 ; 0xf7e9a
+ mov ax, strict word 00020h ; b8 20 00 ; 0xf7e9b
+ push ax ; 50 ; 0xf7e9e
+ lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xf7e9f
+ push SS ; 16 ; 0xf7ea3
+ push dx ; 52 ; 0xf7ea4
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf7ea5
+ push ax ; 50 ; 0xf7ea8
+ mov dl, byte [bp-016h] ; 8a 56 ea ; 0xf7ea9
+ xor dh, dh ; 30 f6 ; 0xf7eac
+ mov cx, ss ; 8c d1 ; 0xf7eae
+ lea bx, [bp-048h] ; 8d 5e b8 ; 0xf7eb0
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf7eb3
+ call 07962h ; e8 a8 fa ; 0xf7eb7
+ test al, al ; 84 c0 ; 0xf7eba scsi.c:427
+ je short 07ed0h ; 74 12 ; 0xf7ebc
+ mov ax, 00ba2h ; b8 a2 0b ; 0xf7ebe scsi.c:428
+ push ax ; 50 ; 0xf7ec1
+ mov ax, 00bdbh ; b8 db 0b ; 0xf7ec2
+ push ax ; 50 ; 0xf7ec5
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7ec6
+ push ax ; 50 ; 0xf7ec9
+ call 0191ch ; e8 4f 9a ; 0xf7eca
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7ecd
+ mov ax, word [bp-00242h] ; 8b 86 be fd ; 0xf7ed0 scsi.c:433
+ mov bx, word [bp-00244h] ; 8b 9e bc fd ; 0xf7ed4
+ mov cx, word [bp-00246h] ; 8b 8e ba fd ; 0xf7ed8
+ mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7edc
+ xchg ah, al ; 86 c4 ; 0xf7ee0
+ xchg bh, bl ; 86 df ; 0xf7ee2
+ xchg ch, cl ; 86 cd ; 0xf7ee4
+ xchg dh, dl ; 86 d6 ; 0xf7ee6
+ xchg dx, ax ; 92 ; 0xf7ee8
+ xchg bx, cx ; 87 cb ; 0xf7ee9
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xf7eeb
+ mov word [bp-01ah], dx ; 89 56 e6 ; 0xf7eee
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7ef1
+ mov word [bp-02eh], cx ; 89 4e d2 ; 0xf7ef4
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7ef7
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf7efa
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf7efd
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf7f00
+ mov ah, byte [bp-00240h] ; 8a a6 c0 fd ; 0xf7f03 scsi.c:435
+ xor al, al ; 30 c0 ; 0xf7f07
+ mov dl, byte [bp-0023fh] ; 8a 96 c1 fd ; 0xf7f09
+ xor dh, dh ; 30 f6 ; 0xf7f0d
+ xor bx, bx ; 31 db ; 0xf7f0f
+ mov si, ax ; 89 c6 ; 0xf7f11
+ or si, dx ; 09 d6 ; 0xf7f13
+ mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xf7f15
+ xor ah, ah ; 30 e4 ; 0xf7f19
+ xor dl, dl ; 30 d2 ; 0xf7f1b
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7f1d
+ sal ax, 1 ; d1 e0 ; 0xf7f20
+ rcl dx, 1 ; d1 d2 ; 0xf7f22
+ loop 07f20h ; e2 fa ; 0xf7f24
+ or bx, ax ; 09 c3 ; 0xf7f26
+ or dx, si ; 09 f2 ; 0xf7f28
+ mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xf7f2a
+ xor ah, ah ; 30 e4 ; 0xf7f2e
+ or bx, ax ; 09 c3 ; 0xf7f30
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf7f32
+ test dx, dx ; 85 d2 ; 0xf7f35 scsi.c:441
+ jne short 07f3fh ; 75 06 ; 0xf7f37
+ cmp bx, 00200h ; 81 fb 00 02 ; 0xf7f39
+ je short 07f62h ; 74 23 ; 0xf7f3d
+ mov bx, 00eeah ; bb ea 0e ; 0xf7f3f scsi.c:444
+ mov cx, ds ; 8c d9 ; 0xf7f42
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7f44
+ call 018d9h ; e8 8f 99 ; 0xf7f47
+ push dx ; 52 ; 0xf7f4a
+ push word [bp-012h] ; ff 76 ee ; 0xf7f4b
+ push word [bp-016h] ; ff 76 ea ; 0xf7f4e
+ mov ax, 00bfah ; b8 fa 0b ; 0xf7f51
+ push ax ; 50 ; 0xf7f54
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7f55
+ push ax ; 50 ; 0xf7f58
+ call 0191ch ; e8 c0 99 ; 0xf7f59
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7f5c
+ jmp near 08285h ; e9 23 03 ; 0xf7f5f scsi.c:445
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f62 scsi.c:449
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7f65
+ jc short 07f75h ; 72 0c ; 0xf7f67
+ jbe short 07f7dh ; 76 12 ; 0xf7f69
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf7f6b
+ je short 07f85h ; 74 16 ; 0xf7f6d
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7f6f
+ je short 07f81h ; 74 0e ; 0xf7f71
+ jmp short 07fcch ; eb 57 ; 0xf7f73
+ test al, al ; 84 c0 ; 0xf7f75
+ jne short 07fcch ; 75 53 ; 0xf7f77
+ mov BL, strict byte 090h ; b3 90 ; 0xf7f79 scsi.c:452
+ jmp short 07f87h ; eb 0a ; 0xf7f7b scsi.c:453
+ mov BL, strict byte 098h ; b3 98 ; 0xf7f7d scsi.c:455
+ jmp short 07f87h ; eb 06 ; 0xf7f7f scsi.c:456
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xf7f81 scsi.c:458
+ jmp short 07f87h ; eb 02 ; 0xf7f83 scsi.c:459
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xf7f85 scsi.c:461
+ mov cl, bl ; 88 d9 ; 0xf7f87 scsi.c:465
+ add cl, 007h ; 80 c1 07 ; 0xf7f89
+ xor ch, ch ; 30 ed ; 0xf7f8c
+ mov ax, cx ; 89 c8 ; 0xf7f8e
+ call 0165fh ; e8 cc 96 ; 0xf7f90
+ test al, al ; 84 c0 ; 0xf7f93
+ je short 07fcch ; 74 35 ; 0xf7f95
+ mov al, bl ; 88 d8 ; 0xf7f97 scsi.c:470
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7f99
+ xor ah, ah ; 30 e4 ; 0xf7f9b
+ call 0165fh ; e8 bf 96 ; 0xf7f9d
+ mov dh, al ; 88 c6 ; 0xf7fa0
+ mov al, bl ; 88 d8 ; 0xf7fa2
+ xor ah, ah ; 30 e4 ; 0xf7fa4
+ call 0165fh ; e8 b6 96 ; 0xf7fa6
+ mov ah, dh ; 88 f4 ; 0xf7fa9
+ cwd ; 99 ; 0xf7fab
+ mov si, ax ; 89 c6 ; 0xf7fac
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf7fae
+ mov al, bl ; 88 d8 ; 0xf7fb1 scsi.c:471
+ add AL, strict byte 002h ; 04 02 ; 0xf7fb3
+ xor ah, ah ; 30 e4 ; 0xf7fb5
+ call 0165fh ; e8 a5 96 ; 0xf7fb7
+ xor ah, ah ; 30 e4 ; 0xf7fba
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf7fbc
+ mov ax, cx ; 89 c8 ; 0xf7fbf scsi.c:472
+ call 0165fh ; e8 9b 96 ; 0xf7fc1
+ xor ah, ah ; 30 e4 ; 0xf7fc4
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf7fc6
+ jmp near 080b9h ; e9 ed 00 ; 0xf7fc9 scsi.c:474
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7fcc scsi.c:475
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf7fcf
+ mov cx, word [bp-02eh] ; 8b 4e d2 ; 0xf7fd2
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf7fd5
+ mov si, strict word 0000ch ; be 0c 00 ; 0xf7fd8
+ call 0b070h ; e8 92 30 ; 0xf7fdb
+ mov word [bp-022h], ax ; 89 46 de ; 0xf7fde
+ mov word [bp-024h], bx ; 89 5e dc ; 0xf7fe1
+ mov word [bp-026h], cx ; 89 4e da ; 0xf7fe4
+ mov word [bp-028h], dx ; 89 56 d8 ; 0xf7fe7
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7fea scsi.c:479
+ test ax, ax ; 85 c0 ; 0xf7fed
+ jnbe short 08006h ; 77 15 ; 0xf7fef
+ je short 07ff6h ; 74 03 ; 0xf7ff1
+ jmp near 08079h ; e9 83 00 ; 0xf7ff3
+ cmp word [bp-018h], strict byte 00000h ; 83 7e e8 00 ; 0xf7ff6
+ jnbe short 08006h ; 77 0a ; 0xf7ffa
+ jne short 07ff3h ; 75 f5 ; 0xf7ffc
+ cmp word [bp-02eh], strict byte 00040h ; 83 7e d2 40 ; 0xf7ffe
+ jnbe short 08006h ; 77 02 ; 0xf8002
+ jne short 08079h ; 75 73 ; 0xf8004
+ mov word [bp-01ch], 000ffh ; c7 46 e4 ff 00 ; 0xf8006 scsi.c:481
+ mov word [bp-01eh], strict word 0003fh ; c7 46 e2 3f 00 ; 0xf800b scsi.c:482
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf8010 scsi.c:484
+ mov cx, word [bp-02eh] ; 8b 4e d2 ; 0xf8013
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf8016
+ mov si, strict word 00006h ; be 06 00 ; 0xf8019
+ call 0b070h ; e8 51 30 ; 0xf801c
+ mov si, word [bp-028h] ; 8b 76 d8 ; 0xf801f
+ add si, dx ; 01 d6 ; 0xf8022
+ mov word [bp-038h], si ; 89 76 c8 ; 0xf8024
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf8027
+ adc dx, cx ; 11 ca ; 0xf802a
+ mov word [bp-036h], dx ; 89 56 ca ; 0xf802c
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf802f
+ adc dx, bx ; 11 da ; 0xf8032
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf8034
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf8037
+ adc dx, ax ; 11 c2 ; 0xf803a
+ mov word [bp-02ch], dx ; 89 56 d4 ; 0xf803c
+ mov ax, dx ; 89 d0 ; 0xf803f scsi.c:485
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8041
+ mov cx, word [bp-036h] ; 8b 4e ca ; 0xf8044
+ mov dx, si ; 89 f2 ; 0xf8047
+ mov si, strict word 00008h ; be 08 00 ; 0xf8049
+ call 0b070h ; e8 21 30 ; 0xf804c
+ mov word [bp-030h], bx ; 89 5e d0 ; 0xf804f
+ mov word [bp-032h], cx ; 89 4e ce ; 0xf8052
+ mov word [bp-034h], dx ; 89 56 cc ; 0xf8055
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf8058
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf805b
+ mov cx, word [bp-036h] ; 8b 4e ca ; 0xf805e
+ mov dx, word [bp-038h] ; 8b 56 c8 ; 0xf8061
+ mov si, strict word 00010h ; be 10 00 ; 0xf8064
+ call 0b070h ; e8 06 30 ; 0xf8067
+ mov si, word [bp-034h] ; 8b 76 cc ; 0xf806a
+ add si, dx ; 01 d6 ; 0xf806d
+ adc cx, word [bp-032h] ; 13 4e ce ; 0xf806f
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf8072
+ adc ax, bx ; 11 d8 ; 0xf8075
+ jmp short 080b6h ; eb 3d ; 0xf8077 scsi.c:487
+ test ax, ax ; 85 c0 ; 0xf8079
+ jnbe short 0808fh ; 77 12 ; 0xf807b
+ jne short 0809bh ; 75 1c ; 0xf807d
+ cmp word [bp-018h], strict byte 00000h ; 83 7e e8 00 ; 0xf807f
+ jnbe short 0808fh ; 77 0a ; 0xf8083
+ jne short 0809bh ; 75 14 ; 0xf8085
+ cmp word [bp-02eh], strict byte 00020h ; 83 7e d2 20 ; 0xf8087
+ jnbe short 0808fh ; 77 02 ; 0xf808b
+ jne short 0809bh ; 75 0c ; 0xf808d
+ mov word [bp-01ch], 00080h ; c7 46 e4 80 00 ; 0xf808f scsi.c:489
+ mov word [bp-01eh], strict word 00020h ; c7 46 e2 20 00 ; 0xf8094 scsi.c:490
+ jmp short 080b4h ; eb 19 ; 0xf8099 scsi.c:493
+ mov word [bp-01ch], strict word 00040h ; c7 46 e4 40 00 ; 0xf809b scsi.c:495
+ mov word [bp-01eh], strict word 00020h ; c7 46 e2 20 00 ; 0xf80a0 scsi.c:496
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf80a5 scsi.c:497
+ mov cx, word [bp-02eh] ; 8b 4e d2 ; 0xf80a8
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf80ab
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf80ae
+ call 0b070h ; e8 bc 2f ; 0xf80b1
+ mov si, dx ; 89 d6 ; 0xf80b4
+ mov word [bp-020h], cx ; 89 4e e0 ; 0xf80b6
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf80b9 scsi.c:502
+ add AL, strict byte 008h ; 04 08 ; 0xf80bc
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf80be
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf80c1 scsi.c:504
+ xor ah, ah ; 30 e4 ; 0xf80c4
+ sal ax, 1 ; d1 e0 ; 0xf80c6
+ sal ax, 1 ; d1 e0 ; 0xf80c8
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf80ca
+ mov bx, di ; 89 fb ; 0xf80cd
+ add bx, ax ; 01 c3 ; 0xf80cf
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf80d1
+ mov word [es:bx+00294h], ax ; 26 89 87 94 02 ; 0xf80d5
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf80da scsi.c:505
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xf80dd
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf80e2 scsi.c:506
+ xor ah, ah ; 30 e4 ; 0xf80e5
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf80e7
+ imul dx ; f7 ea ; 0xf80ea
+ mov bx, di ; 89 fb ; 0xf80ec
+ add bx, ax ; 01 c3 ; 0xf80ee
+ mov word [es:bx+022h], 0ff04h ; 26 c7 47 22 04 ff ; 0xf80f0
+ mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf80f6 scsi.c:508
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf80fc scsi.c:510
+ mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xf80ff
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf8103 scsi.c:511
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf8108 scsi.c:514
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf810b
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf810f scsi.c:515
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf8112
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf8116 scsi.c:516
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf8119
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf811d scsi.c:517
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf8120
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf8124 scsi.c:519
+ jne short 08130h ; 75 06 ; 0xf8128
+ cmp si, 00400h ; 81 fe 00 04 ; 0xf812a
+ jbe short 0813eh ; 76 0e ; 0xf812e
+ mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xf8130 scsi.c:520
+ mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xf8136 scsi.c:521
+ jmp short 08146h ; eb 08 ; 0xf813c scsi.c:522
+ mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xf813e scsi.c:523
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf8142 scsi.c:524
+ mov bx, 00eeah ; bb ea 0e ; 0xf8146 scsi.c:528
+ mov cx, ds ; 8c d9 ; 0xf8149
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf814b
+ call 018d9h ; e8 88 97 ; 0xf814e
+ push word [bp-02ah] ; ff 76 d6 ; 0xf8151
+ push word [bp-018h] ; ff 76 e8 ; 0xf8154
+ push word [bp-02eh] ; ff 76 d2 ; 0xf8157
+ push word [bp-01ah] ; ff 76 e6 ; 0xf815a
+ push word [bp-01eh] ; ff 76 e2 ; 0xf815d
+ push word [bp-01ch] ; ff 76 e4 ; 0xf8160
+ push word [bp-020h] ; ff 76 e0 ; 0xf8163
+ push si ; 56 ; 0xf8166
+ push word [bp-016h] ; ff 76 ea ; 0xf8167
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf816a
+ xor ah, ah ; 30 e4 ; 0xf816d
+ push ax ; 50 ; 0xf816f
+ mov ax, 00c28h ; b8 28 0c ; 0xf8170
+ push ax ; 50 ; 0xf8173
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8174
+ push ax ; 50 ; 0xf8177
+ call 0191ch ; e8 a1 97 ; 0xf8178
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xf817b
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf817e scsi.c:530
+ xor ah, ah ; 30 e4 ; 0xf8181
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf8183
+ imul dx ; f7 ea ; 0xf8186
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8188
+ mov bx, di ; 89 fb ; 0xf818b
+ add bx, ax ; 01 c3 ; 0xf818d
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf818f
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf8192
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf8196
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf8199
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf819d
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf81a0
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf81a4
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf81a7
+ mov al, byte [es:di+00252h] ; 26 8a 85 52 02 ; 0xf81ab scsi.c:533
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf81b0 scsi.c:534
+ add ah, 008h ; 80 c4 08 ; 0xf81b3
+ mov bl, al ; 88 c3 ; 0xf81b6
+ xor bh, bh ; 30 ff ; 0xf81b8
+ add bx, di ; 01 fb ; 0xf81ba
+ mov byte [es:bx+00253h], ah ; 26 88 a7 53 02 ; 0xf81bc
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf81c1 scsi.c:535
+ mov byte [es:di+00252h], al ; 26 88 85 52 02 ; 0xf81c3 scsi.c:536
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf81c8 scsi.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf81cb
+ mov es, ax ; 8e c0 ; 0xf81ce
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf81d0
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf81d3 scsi.c:540
+ mov byte [es:bx], al ; 26 88 07 ; 0xf81d5 scsi.c:43
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf81d8 scsi.c:543
+ jmp near 0827ah ; e9 9c 00 ; 0xf81db scsi.c:545
+ mov bx, 00eeah ; bb ea 0e ; 0xf81de scsi.c:557
+ mov cx, ds ; 8c d9 ; 0xf81e1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf81e3
+ call 018d9h ; e8 f0 96 ; 0xf81e6
+ push word [bp-016h] ; ff 76 ea ; 0xf81e9
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf81ec
+ xor ah, ah ; 30 e4 ; 0xf81ef
+ push ax ; 50 ; 0xf81f1
+ mov ax, 00c56h ; b8 56 0c ; 0xf81f2
+ push ax ; 50 ; 0xf81f5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf81f6
+ push ax ; 50 ; 0xf81f9
+ call 0191ch ; e8 1f 97 ; 0xf81fa
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf81fd
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8200 scsi.c:560
+ add AL, strict byte 008h ; 04 08 ; 0xf8203
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8205
+ test byte [bp-00247h], 080h ; f6 86 b9 fd 80 ; 0xf8208 scsi.c:562
+ je short 08214h ; 74 05 ; 0xf820d
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf820f
+ jmp short 08216h ; eb 02 ; 0xf8212
+ xor cx, cx ; 31 c9 ; 0xf8214
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8216 scsi.c:564
+ xor ah, ah ; 30 e4 ; 0xf8219
+ sal ax, 1 ; d1 e0 ; 0xf821b
+ sal ax, 1 ; d1 e0 ; 0xf821d
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf821f
+ mov bx, di ; 89 fb ; 0xf8222
+ add bx, ax ; 01 c3 ; 0xf8224
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf8226
+ mov word [es:bx+00294h], ax ; 26 89 87 94 02 ; 0xf822a
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf822f scsi.c:565
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xf8232
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf8237 scsi.c:566
+ xor ah, ah ; 30 e4 ; 0xf823a
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf823c
+ imul dx ; f7 ea ; 0xf823f
+ mov bx, di ; 89 fb ; 0xf8241
+ add bx, ax ; 01 c3 ; 0xf8243
+ mov word [es:bx+022h], 00504h ; 26 c7 47 22 04 05 ; 0xf8245
+ mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf824b scsi.c:568
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf824f scsi.c:569
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf8255 scsi.c:570
+ mov al, byte [es:di+00267h] ; 26 8a 85 67 02 ; 0xf825a scsi.c:573
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf825f scsi.c:574
+ add ah, 008h ; 80 c4 08 ; 0xf8262
+ mov bl, al ; 88 c3 ; 0xf8265
+ xor bh, bh ; 30 ff ; 0xf8267
+ add bx, di ; 01 fb ; 0xf8269
+ mov byte [es:bx+00268h], ah ; 26 88 a7 68 02 ; 0xf826b
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8270 scsi.c:575
+ mov byte [es:di+00267h], al ; 26 88 85 67 02 ; 0xf8272 scsi.c:576
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf8277 scsi.c:578
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf827a scsi.c:583
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf827d
+ mov byte [es:di+002a4h], al ; 26 88 85 a4 02 ; 0xf8280
+ inc word [bp-016h] ; ff 46 ea ; 0xf8285 scsi.c:584
+ cmp word [bp-016h], strict byte 00010h ; 83 7e ea 10 ; 0xf8288
+ jl short 08291h ; 7c 03 ; 0xf828c
+ jmp near 08314h ; e9 83 00 ; 0xf828e
+ mov byte [bp-048h], 012h ; c6 46 b8 12 ; 0xf8291
+ xor al, al ; 30 c0 ; 0xf8295
+ mov byte [bp-047h], al ; 88 46 b9 ; 0xf8297
+ mov byte [bp-046h], al ; 88 46 ba ; 0xf829a
+ mov byte [bp-045h], al ; 88 46 bb ; 0xf829d
+ mov byte [bp-044h], 005h ; c6 46 bc 05 ; 0xf82a0
+ mov byte [bp-043h], al ; 88 46 bd ; 0xf82a4
+ xor ah, ah ; 30 e4 ; 0xf82a7
+ push ax ; 50 ; 0xf82a9
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf82aa
+ push ax ; 50 ; 0xf82ad
+ lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xf82ae
+ push SS ; 16 ; 0xf82b2
+ push dx ; 52 ; 0xf82b3
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf82b4
+ push ax ; 50 ; 0xf82b7
+ mov dl, byte [bp-016h] ; 8a 56 ea ; 0xf82b8
+ xor dh, dh ; 30 f6 ; 0xf82bb
+ mov cx, ss ; 8c d1 ; 0xf82bd
+ lea bx, [bp-048h] ; 8d 5e b8 ; 0xf82bf
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf82c2
+ call 07962h ; e8 99 f6 ; 0xf82c6
+ test al, al ; 84 c0 ; 0xf82c9
+ je short 082dfh ; 74 12 ; 0xf82cb
+ mov ax, 00ba2h ; b8 a2 0b ; 0xf82cd
+ push ax ; 50 ; 0xf82d0
+ mov ax, 00bc2h ; b8 c2 0b ; 0xf82d1
+ push ax ; 50 ; 0xf82d4
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf82d5
+ push ax ; 50 ; 0xf82d8
+ call 0191ch ; e8 40 96 ; 0xf82d9
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf82dc
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf82df
+ mov al, byte [es:di+002a4h] ; 26 8a 85 a4 02 ; 0xf82e2
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf82e7
+ test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xf82ea
+ jne short 082fbh ; 75 0a ; 0xf82ef
+ test byte [bp-00248h], 01fh ; f6 86 b8 fd 1f ; 0xf82f1
+ jne short 082fbh ; 75 03 ; 0xf82f6
+ jmp near 07e78h ; e9 7d fb ; 0xf82f8
+ test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xf82fb
+ je short 08305h ; 74 03 ; 0xf8300
+ jmp near 0827ah ; e9 75 ff ; 0xf8302
+ mov al, byte [bp-00248h] ; 8a 86 b8 fd ; 0xf8305
+ and AL, strict byte 01fh ; 24 1f ; 0xf8309
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf830b
+ jne short 08312h ; 75 03 ; 0xf830d
+ jmp near 081deh ; e9 cc fe ; 0xf830f
+ jmp short 08302h ; eb ee ; 0xf8312
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf8314 scsi.c:585
+ pop di ; 5f ; 0xf8317
+ pop si ; 5e ; 0xf8318
+ pop dx ; 5a ; 0xf8319
+ pop cx ; 59 ; 0xf831a
+ pop bx ; 5b ; 0xf831b
+ pop bp ; 5d ; 0xf831c
+ retn ; c3 ; 0xf831d
+ ; disGetNextSymbol 0xf831e LB 0x309a -> off=0x0 cb=000000000000002b uValue=00000000000f6d1e 'scsi_pci_init'
+scsi_pci_init: ; 0xf831e LB 0x2b
+ push bp ; 55 ; 0xf831e scsi.c:587
+ mov bp, sp ; 89 e5 ; 0xf831f
+ push bx ; 53 ; 0xf8321
+ push cx ; 51 ; 0xf8322
+ push si ; 56 ; 0xf8323
+ call 0ae0fh ; e8 e8 2a ; 0xf8324 scsi.c:591
+ mov dx, ax ; 89 c2 ; 0xf8327
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf8329 scsi.c:592
+ je short 08341h ; 74 13 ; 0xf832c
+ mov al, dl ; 88 d0 ; 0xf832e scsi.c:599
+ xor ah, ah ; 30 e4 ; 0xf8330
+ mov si, ax ; 89 c6 ; 0xf8332
+ mov al, dh ; 88 f0 ; 0xf8334
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf8336
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf8339
+ mov dx, si ; 89 f2 ; 0xf833c
+ call 0aebdh ; e8 7c 2b ; 0xf833e
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8341 scsi.c:600
+ pop si ; 5e ; 0xf8344
+ pop cx ; 59 ; 0xf8345
+ pop bx ; 5b ; 0xf8346
+ pop bp ; 5d ; 0xf8347
+ retn ; c3 ; 0xf8348
+ ; disGetNextSymbol 0xf8349 LB 0x306f -> off=0x0 cb=0000000000000081 uValue=00000000000f6d49 'scsi_init'
+scsi_init: ; 0xf8349 LB 0x81
+ push bp ; 55 ; 0xf8349 scsi.c:605
+ mov bp, sp ; 89 e5 ; 0xf834a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf834c scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf834f
+ mov es, ax ; 8e c0 ; 0xf8352
+ mov es, [es:bx] ; 26 8e 07 ; 0xf8354
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf8357 scsi.c:49
+ mov byte [es:bx+002a4h], 000h ; 26 c6 87 a4 02 00 ; 0xf835a scsi.c:612
+ mov AL, strict byte 055h ; b0 55 ; 0xf8360 scsi.c:617
+ mov dx, 00432h ; ba 32 04 ; 0xf8362
+ out DX, AL ; ee ; 0xf8365
+ in AL, DX ; ec ; 0xf8366 scsi.c:618
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf8367
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf8369 scsi.c:620
+ jne short 08382h ; 75 15 ; 0xf836b
+ xor al, al ; 30 c0 ; 0xf836d scsi.c:624
+ mov dx, 00433h ; ba 33 04 ; 0xf836f
+ out DX, AL ; ee ; 0xf8372
+ mov ax, 00430h ; b8 30 04 ; 0xf8373 scsi.c:625
+ call 07e52h ; e8 d9 fa ; 0xf8376
+ mov dx, 01040h ; ba 40 10 ; 0xf8379 scsi.c:626
+ mov ax, 0104bh ; b8 4b 10 ; 0xf837c
+ call 0831eh ; e8 9c ff ; 0xf837f
+ mov AL, strict byte 055h ; b0 55 ; 0xf8382 scsi.c:634
+ mov dx, 00436h ; ba 36 04 ; 0xf8384
+ out DX, AL ; ee ; 0xf8387
+ in AL, DX ; ec ; 0xf8388 scsi.c:635
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf8389
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf838b scsi.c:637
+ jne short 083a4h ; 75 15 ; 0xf838d
+ xor al, al ; 30 c0 ; 0xf838f scsi.c:641
+ mov dx, 00437h ; ba 37 04 ; 0xf8391
+ out DX, AL ; ee ; 0xf8394
+ mov ax, 00434h ; b8 34 04 ; 0xf8395 scsi.c:642
+ call 07e52h ; e8 b7 fa ; 0xf8398
+ mov dx, strict word 00030h ; ba 30 00 ; 0xf839b scsi.c:643
+ mov ax, 01000h ; b8 00 10 ; 0xf839e
+ call 0831eh ; e8 7a ff ; 0xf83a1
+ mov AL, strict byte 055h ; b0 55 ; 0xf83a4 scsi.c:651
+ mov dx, 0043ah ; ba 3a 04 ; 0xf83a6
+ out DX, AL ; ee ; 0xf83a9
+ in AL, DX ; ec ; 0xf83aa scsi.c:652
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf83ab
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf83ad scsi.c:654
+ jne short 083c6h ; 75 15 ; 0xf83af
+ xor al, al ; 30 c0 ; 0xf83b1 scsi.c:658
+ mov dx, 0043bh ; ba 3b 04 ; 0xf83b3
+ out DX, AL ; ee ; 0xf83b6
+ mov ax, 00438h ; b8 38 04 ; 0xf83b7 scsi.c:659
+ call 07e52h ; e8 95 fa ; 0xf83ba
+ mov dx, strict word 00054h ; ba 54 00 ; 0xf83bd scsi.c:660
+ mov ax, 01000h ; b8 00 10 ; 0xf83c0
+ call 0831eh ; e8 58 ff ; 0xf83c3
+ mov sp, bp ; 89 ec ; 0xf83c6 scsi.c:666
+ pop bp ; 5d ; 0xf83c8
+ retn ; c3 ; 0xf83c9
+ ; disGetNextSymbol 0xf83ca LB 0x2fee -> off=0x0 cb=000000000000001c uValue=00000000000f6dca 'ahci_ctrl_extract_bits'
+ahci_ctrl_extract_bits: ; 0xf83ca LB 0x1c
+ push si ; 56 ; 0xf83ca ahci.c:279
+ push bp ; 55 ; 0xf83cb
+ mov bp, sp ; 89 e5 ; 0xf83cc
+ mov si, ax ; 89 c6 ; 0xf83ce
+ and ax, bx ; 21 d8 ; 0xf83d0 ahci.c:281
+ and dx, cx ; 21 ca ; 0xf83d2
+ mov cl, byte [bp+006h] ; 8a 4e 06 ; 0xf83d4
+ xor ch, ch ; 30 ed ; 0xf83d7
+ jcxz 083e1h ; e3 06 ; 0xf83d9
+ shr dx, 1 ; d1 ea ; 0xf83db
+ rcr ax, 1 ; d1 d8 ; 0xf83dd
+ loop 083dbh ; e2 fa ; 0xf83df
+ pop bp ; 5d ; 0xf83e1 ahci.c:282
+ pop si ; 5e ; 0xf83e2
+ retn 00002h ; c2 02 00 ; 0xf83e3
+ ; disGetNextSymbol 0xf83e6 LB 0x2fd2 -> off=0x0 cb=000000000000001e uValue=00000000000f6de6 'ahci_addr_to_phys'
+ahci_addr_to_phys: ; 0xf83e6 LB 0x1e
+ push bx ; 53 ; 0xf83e6 ahci.c:287
+ push cx ; 51 ; 0xf83e7
+ push bp ; 55 ; 0xf83e8
+ mov bp, sp ; 89 e5 ; 0xf83e9
+ mov bx, ax ; 89 c3 ; 0xf83eb
+ mov ax, dx ; 89 d0 ; 0xf83ed
+ xor dx, dx ; 31 d2 ; 0xf83ef ahci.c:289
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf83f1
+ sal ax, 1 ; d1 e0 ; 0xf83f4
+ rcl dx, 1 ; d1 d2 ; 0xf83f6
+ loop 083f4h ; e2 fa ; 0xf83f8
+ xor cx, cx ; 31 c9 ; 0xf83fa
+ add ax, bx ; 01 d8 ; 0xf83fc
+ adc dx, cx ; 11 ca ; 0xf83fe
+ pop bp ; 5d ; 0xf8400 ahci.c:290
+ pop cx ; 59 ; 0xf8401
+ pop bx ; 5b ; 0xf8402
+ retn ; c3 ; 0xf8403
+ ; disGetNextSymbol 0xf8404 LB 0x2fb4 -> off=0x0 cb=0000000000000159 uValue=00000000000f6e04 'ahci_port_cmd_sync'
+ahci_port_cmd_sync: ; 0xf8404 LB 0x159
+ push bp ; 55 ; 0xf8404 ahci.c:295
+ mov bp, sp ; 89 e5 ; 0xf8405
+ push cx ; 51 ; 0xf8407
+ push si ; 56 ; 0xf8408
+ push di ; 57 ; 0xf8409
+ push ax ; 50 ; 0xf840a
+ mov si, ax ; 89 c6 ; 0xf840b
+ mov cx, dx ; 89 d1 ; 0xf840d
+ mov dl, bl ; 88 da ; 0xf840f
+ mov es, cx ; 8e c1 ; 0xf8411 ahci.c:300
+ mov al, byte [es:si+00262h] ; 26 8a 84 62 02 ; 0xf8413
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf8418
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf841b ahci.c:301
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf8420 ahci.c:303
+ jne short 08427h ; 75 03 ; 0xf8422
+ jmp near 08555h ; e9 2e 01 ; 0xf8424
+ mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf8427 ahci.c:306
+ xor ah, ah ; 30 e4 ; 0xf842c
+ xor di, di ; 31 ff ; 0xf842e
+ or di, 00080h ; 81 cf 80 00 ; 0xf8430
+ xor dh, dh ; 30 f6 ; 0xf8434
+ or di, dx ; 09 d7 ; 0xf8436
+ mov word [es:si], di ; 26 89 3c ; 0xf8438
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf843b
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf843f ahci.c:307
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8445
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf844b ahci.c:308
+ mov dx, cx ; 89 ca ; 0xf844f
+ call 083e6h ; e8 92 ff ; 0xf8451
+ mov es, cx ; 8e c1 ; 0xf8454
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8456
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf845a
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf845e ahci.c:311
+ xor ah, ah ; 30 e4 ; 0xf8461
+ mov CL, strict byte 007h ; b1 07 ; 0xf8463
+ mov di, ax ; 89 c7 ; 0xf8465
+ sal di, CL ; d3 e7 ; 0xf8467
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8469
+ xor cx, cx ; 31 c9 ; 0xf846d ahci.c:252
+ mov dx, bx ; 89 da ; 0xf846f
+ xchg cx, ax ; 91 ; 0xf8471
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8472
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8476
+ out DX, eax ; 66 ef ; 0xf8478
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf847a ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf847d
+ in eax, DX ; 66 ed ; 0xf847f
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8481
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8483
+ xchg dx, ax ; 92 ; 0xf8487
+ or AL, strict byte 011h ; 0c 11 ; 0xf8488
+ mov cx, dx ; 89 d1 ; 0xf848a
+ mov dx, si ; 89 f2 ; 0xf848c
+ xchg cx, ax ; 91 ; 0xf848e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf848f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8493
+ out DX, eax ; 66 ef ; 0xf8495
+ lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf8497 ahci.c:315
+ cwd ; 99 ; 0xf849b
+ mov cx, dx ; 89 d1 ; 0xf849c
+ mov dx, bx ; 89 da ; 0xf849e
+ xchg cx, ax ; 91 ; 0xf84a0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84a1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84a5
+ out DX, eax ; 66 ef ; 0xf84a7
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf84a9
+ xor cx, cx ; 31 c9 ; 0xf84ac
+ mov dx, si ; 89 f2 ; 0xf84ae
+ xchg cx, ax ; 91 ; 0xf84b0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84b1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84b5
+ out DX, eax ; 66 ef ; 0xf84b7
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf84b9 ahci.c:319
+ xor ah, ah ; 30 e4 ; 0xf84bc
+ mov CL, strict byte 007h ; b1 07 ; 0xf84be
+ sal ax, CL ; d3 e0 ; 0xf84c0
+ add ax, 00110h ; 05 10 01 ; 0xf84c2
+ xor cx, cx ; 31 c9 ; 0xf84c5 ahci.c:271
+ mov dx, bx ; 89 da ; 0xf84c7
+ xchg cx, ax ; 91 ; 0xf84c9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84ca
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84ce
+ out DX, eax ; 66 ef ; 0xf84d0
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf84d2 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf84d5
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf84d7
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf84d9
+ xchg dx, ax ; 92 ; 0xf84dd
+ test dh, 040h ; f6 c6 40 ; 0xf84de
+ jne short 084e7h ; 75 04 ; 0xf84e1
+ test AL, strict byte 001h ; a8 01 ; 0xf84e3
+ je short 084ebh ; 74 04 ; 0xf84e5
+ mov AL, strict byte 001h ; b0 01 ; 0xf84e7
+ jmp short 084edh ; eb 02 ; 0xf84e9
+ xor al, al ; 30 c0 ; 0xf84eb
+ test al, al ; 84 c0 ; 0xf84ed ahci.c:273
+ je short 084b9h ; 74 c8 ; 0xf84ef
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf84f1 ahci.c:325
+ xor ah, ah ; 30 e4 ; 0xf84f4
+ mov CL, strict byte 007h ; b1 07 ; 0xf84f6
+ mov di, ax ; 89 c7 ; 0xf84f8
+ sal di, CL ; d3 e7 ; 0xf84fa
+ lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf84fc
+ xor cx, cx ; 31 c9 ; 0xf8500 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf8502
+ xchg cx, ax ; 91 ; 0xf8504
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8505
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8509
+ out DX, eax ; 66 ef ; 0xf850b
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf850d ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf8510
+ in eax, DX ; 66 ed ; 0xf8512
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8514
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8516
+ xchg dx, ax ; 92 ; 0xf851a
+ or AL, strict byte 001h ; 0c 01 ; 0xf851b
+ mov cx, dx ; 89 d1 ; 0xf851d
+ mov dx, si ; 89 f2 ; 0xf851f
+ xchg cx, ax ; 91 ; 0xf8521
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8522
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8526
+ out DX, eax ; 66 ef ; 0xf8528
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf852a ahci.c:329
+ xor cx, cx ; 31 c9 ; 0xf852e ahci.c:261
+ mov dx, bx ; 89 da ; 0xf8530
+ xchg cx, ax ; 91 ; 0xf8532
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8533
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8537
+ out DX, eax ; 66 ef ; 0xf8539
+ mov dx, si ; 89 f2 ; 0xf853b ahci.c:262
+ in eax, DX ; 66 ed ; 0xf853d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf853f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8541
+ xchg dx, ax ; 92 ; 0xf8545
+ and AL, strict byte 0feh ; 24 fe ; 0xf8546
+ mov cx, dx ; 89 d1 ; 0xf8548
+ mov dx, si ; 89 f2 ; 0xf854a
+ xchg cx, ax ; 91 ; 0xf854c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf854d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8551
+ out DX, eax ; 66 ef ; 0xf8553
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8555 ahci.c:335
+ pop di ; 5f ; 0xf8558
+ pop si ; 5e ; 0xf8559
+ pop cx ; 59 ; 0xf855a
+ pop bp ; 5d ; 0xf855b
+ retn ; c3 ; 0xf855c
+ ; disGetNextSymbol 0xf855d LB 0x2e5b -> off=0x0 cb=0000000000000262 uValue=00000000000f6f5d 'ahci_cmd_data'
+ahci_cmd_data: ; 0xf855d LB 0x262
+ push bp ; 55 ; 0xf855d ahci.c:340
+ mov bp, sp ; 89 e5 ; 0xf855e
+ push cx ; 51 ; 0xf8560
+ push si ; 56 ; 0xf8561
+ push di ; 57 ; 0xf8562
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf8563
+ push ax ; 50 ; 0xf8566
+ push dx ; 52 ; 0xf8567
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8568
+ xor di, di ; 31 ff ; 0xf856b ahci.c:342
+ mov es, dx ; 8e c2 ; 0xf856d
+ mov bx, ax ; 89 c3 ; 0xf856f
+ mov ax, word [es:bx+002aeh] ; 26 8b 87 ae 02 ; 0xf8571
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8576
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf8579
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf857c
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf857f ahci.c:343
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf8583
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf8586 ahci.c:344
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf858a
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf858d ahci.c:347
+ xor bx, bx ; 31 db ; 0xf8590
+ mov ax, 00080h ; b8 80 00 ; 0xf8592
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8595
+ call 0b090h ; e8 f5 2a ; 0xf8598
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf859b ahci.c:350
+ mov word [es:di+00080h], 08027h ; 26 c7 85 80 00 27 80 ; 0xf859e
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf85a5 ahci.c:352
+ mov byte [es:di+00082h], al ; 26 88 85 82 00 ; 0xf85a8
+ mov byte [es:di+00083h], 000h ; 26 c6 85 83 00 00 ; 0xf85ad ahci.c:353
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf85b3 ahci.c:355
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85b6
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf85b9
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85bc
+ mov byte [es:di+00084h], al ; 26 88 85 84 00 ; 0xf85bf
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf85c4 ahci.c:356
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf85c7
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf85cb
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf85cf
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf85d2
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf85d6
+ mov si, strict word 00008h ; be 08 00 ; 0xf85d9
+ call 0b070h ; e8 91 2a ; 0xf85dc
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85df
+ mov byte [es:di+00085h], dl ; 26 88 95 85 00 ; 0xf85e2
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf85e7 ahci.c:357
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85ea
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf85ed
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf85f1
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf85f5
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf85f8
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf85fc
+ mov si, strict word 00010h ; be 10 00 ; 0xf85ff
+ call 0b070h ; e8 6b 2a ; 0xf8602
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8605
+ mov byte [es:di+00086h], dl ; 26 88 95 86 00 ; 0xf8608
+ mov byte [es:di+00087h], 040h ; 26 c6 85 87 00 40 ; 0xf860d ahci.c:358
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8613 ahci.c:360
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8616
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8619
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf861d
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8621
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8624
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8628
+ mov si, strict word 00018h ; be 18 00 ; 0xf862b
+ call 0b070h ; e8 3f 2a ; 0xf862e
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8631
+ mov byte [es:di+00088h], dl ; 26 88 95 88 00 ; 0xf8634
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8639 ahci.c:361
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf863c
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf863f
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8643
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8647
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf864a
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf864e
+ mov si, strict word 00020h ; be 20 00 ; 0xf8651
+ call 0b070h ; e8 19 2a ; 0xf8654
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8657
+ mov byte [es:di+00089h], dl ; 26 88 95 89 00 ; 0xf865a
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf865f ahci.c:362
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8662
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8665
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8669
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf866d
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8670
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8674
+ mov si, strict word 00028h ; be 28 00 ; 0xf8677
+ call 0b070h ; e8 f3 29 ; 0xf867a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf867d
+ mov byte [es:di+0008ah], dl ; 26 88 95 8a 00 ; 0xf8680
+ mov byte [es:di+0008bh], 000h ; 26 c6 85 8b 00 00 ; 0xf8685 ahci.c:363
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf868b ahci.c:365
+ mov byte [es:di+0008ch], al ; 26 88 85 8c 00 ; 0xf868e
+ mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf8693 ahci.c:366
+ mov byte [es:di+0008dh], al ; 26 88 85 8d 00 ; 0xf8696
+ mov word [es:di+00276h], strict word 00010h ; 26 c7 85 76 02 10 00 ; 0xf869b ahci.c:369
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf86a2 ahci.c:372
+ xor dx, dx ; 31 d2 ; 0xf86a5
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf86a7
+ xor cx, cx ; 31 c9 ; 0xf86aa
+ call 0b020h ; e8 71 29 ; 0xf86ac
+ push dx ; 52 ; 0xf86af
+ push ax ; 50 ; 0xf86b0
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf86b1
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf86b4
+ mov bx, word [es:bx+008h] ; 26 8b 5f 08 ; 0xf86b7
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf86bb
+ mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf86be
+ mov ax, 0026ah ; b8 6a 02 ; 0xf86c2
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf86c5
+ call 0af6dh ; e8 a2 28 ; 0xf86c8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86cb ahci.c:375
+ mov dx, word [es:di+0027eh] ; 26 8b 95 7e 02 ; 0xf86ce
+ add dx, strict byte 0ffffh ; 83 c2 ff ; 0xf86d3
+ mov ax, word [es:di+00280h] ; 26 8b 85 80 02 ; 0xf86d6
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf86db
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86de
+ xor bh, bh ; 30 ff ; 0xf86e3
+ mov CL, strict byte 004h ; b1 04 ; 0xf86e5
+ sal bx, CL ; d3 e3 ; 0xf86e7
+ mov word [es:bx+0010ch], dx ; 26 89 97 0c 01 ; 0xf86e9
+ mov word [es:bx+0010eh], ax ; 26 89 87 0e 01 ; 0xf86ee
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86f3 ahci.c:376
+ xor bh, bh ; 30 ff ; 0xf86f8
+ sal bx, CL ; d3 e3 ; 0xf86fa
+ mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf86fc
+ mov dx, word [es:di+0027ch] ; 26 8b 95 7c 02 ; 0xf8701
+ mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf8706
+ mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf870b
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8710 ahci.c:377
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8715 ahci.c:379
+ mov bx, si ; 89 f3 ; 0xf8718
+ mov ax, word [es:bx+020h] ; 26 8b 47 20 ; 0xf871a
+ test ax, ax ; 85 c0 ; 0xf871e
+ je short 0875bh ; 74 39 ; 0xf8720
+ dec ax ; 48 ; 0xf8722 ahci.c:380
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8723
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf8726
+ xor bh, bh ; 30 ff ; 0xf872b
+ sal bx, CL ; d3 e3 ; 0xf872d
+ mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf872f
+ mov word [es:bx+0010eh], di ; 26 89 bf 0e 01 ; 0xf8734
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf8739 ahci.c:381
+ xor bh, bh ; 30 ff ; 0xf873e
+ sal bx, CL ; d3 e3 ; 0xf8740
+ mov ax, word [es:di+00264h] ; 26 8b 85 64 02 ; 0xf8742
+ mov dx, word [es:di+00266h] ; 26 8b 95 66 02 ; 0xf8747
+ mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf874c
+ mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf8751
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8756 ahci.c:382
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf875b ahci.c:397
+ cmp AL, strict byte 035h ; 3c 35 ; 0xf875e
+ jne short 08768h ; 75 06 ; 0xf8760
+ mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf8762 ahci.c:398
+ jmp short 0877fh ; eb 17 ; 0xf8766 ahci.c:399
+ cmp AL, strict byte 0a0h ; 3c a0 ; 0xf8768
+ jne short 0877bh ; 75 0f ; 0xf876a
+ or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf876c ahci.c:400
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8770 ahci.c:401
+ or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf8773
+ jmp short 0877fh ; eb 04 ; 0xf8779 ahci.c:402
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf877b ahci.c:403
+ or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf877f ahci.c:405
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf8783 ahci.c:407
+ xor bh, bh ; 30 ff ; 0xf8786
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8788
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf878b
+ call 08404h ; e8 73 fc ; 0xf878e
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf8791 ahci.c:410
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8794
+ add bx, 00240h ; 81 c3 40 02 ; 0xf8797
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf879b ahci.c:414
+ add ax, 0026ah ; 05 6a 02 ; 0xf879e
+ mov dx, cx ; 89 ca ; 0xf87a1
+ call 0afe4h ; e8 3e 28 ; 0xf87a3
+ mov es, cx ; 8e c1 ; 0xf87a6 ahci.c:415
+ mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf87a8
+ test al, al ; 84 c0 ; 0xf87ac
+ je short 087b5h ; 74 05 ; 0xf87ae
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf87b0
+ jmp short 087b7h ; eb 02 ; 0xf87b3
+ xor ah, ah ; 30 e4 ; 0xf87b5
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf87b7 ahci.c:416
+ pop di ; 5f ; 0xf87ba
+ pop si ; 5e ; 0xf87bb
+ pop cx ; 59 ; 0xf87bc
+ pop bp ; 5d ; 0xf87bd
+ retn ; c3 ; 0xf87be
+ ; disGetNextSymbol 0xf87bf LB 0x2bf9 -> off=0x0 cb=0000000000000183 uValue=00000000000f71bf 'ahci_port_deinit_current'
+ahci_port_deinit_current: ; 0xf87bf LB 0x183
+ push bp ; 55 ; 0xf87bf ahci.c:421
+ mov bp, sp ; 89 e5 ; 0xf87c0
+ push bx ; 53 ; 0xf87c2
+ push cx ; 51 ; 0xf87c3
+ push si ; 56 ; 0xf87c4
+ push di ; 57 ; 0xf87c5
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf87c6
+ mov di, ax ; 89 c7 ; 0xf87c9
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf87cb
+ mov es, dx ; 8e c2 ; 0xf87ce ahci.c:426
+ mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf87d0
+ mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf87d5 ahci.c:427
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf87da
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf87dd ahci.c:429
+ je short 08842h ; 74 61 ; 0xf87df
+ xor ah, ah ; 30 e4 ; 0xf87e1 ahci.c:432
+ mov CL, strict byte 007h ; b1 07 ; 0xf87e3
+ sal ax, CL ; d3 e0 ; 0xf87e5
+ add ax, 00118h ; 05 18 01 ; 0xf87e7
+ xor cx, cx ; 31 c9 ; 0xf87ea ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf87ec
+ xchg cx, ax ; 91 ; 0xf87ee
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87ef
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87f3
+ out DX, eax ; 66 ef ; 0xf87f5
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf87f7 ahci.c:262
+ mov dx, bx ; 89 da ; 0xf87fa
+ in eax, DX ; 66 ed ; 0xf87fc
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf87fe
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8800
+ xchg dx, ax ; 92 ; 0xf8804
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8805
+ mov cx, dx ; 89 d1 ; 0xf8807
+ mov dx, bx ; 89 da ; 0xf8809
+ xchg cx, ax ; 91 ; 0xf880b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf880c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8810
+ out DX, eax ; 66 ef ; 0xf8812
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8814 ahci.c:435
+ xor ah, ah ; 30 e4 ; 0xf8817
+ mov CL, strict byte 007h ; b1 07 ; 0xf8819
+ sal ax, CL ; d3 e0 ; 0xf881b
+ add ax, 00118h ; 05 18 01 ; 0xf881d
+ xor cx, cx ; 31 c9 ; 0xf8820 ahci.c:271
+ mov dx, si ; 89 f2 ; 0xf8822
+ xchg cx, ax ; 91 ; 0xf8824
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8825
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8829
+ out DX, eax ; 66 ef ; 0xf882b
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf882d ahci.c:272
+ in eax, DX ; 66 ed ; 0xf8830
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8832
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8834
+ xchg dx, ax ; 92 ; 0xf8838
+ test ax, 0c011h ; a9 11 c0 ; 0xf8839
+ je short 08845h ; 74 07 ; 0xf883c
+ mov AL, strict byte 001h ; b0 01 ; 0xf883e
+ jmp short 08847h ; eb 05 ; 0xf8840
+ jmp near 08939h ; e9 f4 00 ; 0xf8842
+ xor al, al ; 30 c0 ; 0xf8845
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8847 ahci.c:273
+ je short 08814h ; 74 c9 ; 0xf8849
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf884b ahci.c:446
+ xor bx, bx ; 31 db ; 0xf884e
+ mov ax, di ; 89 f8 ; 0xf8850
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8852
+ call 0b090h ; e8 38 28 ; 0xf8855
+ lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf8858 ahci.c:447
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf885c
+ xor bx, bx ; 31 db ; 0xf885f
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8861
+ call 0b090h ; e8 29 28 ; 0xf8864
+ lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf8867 ahci.c:448
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf886b
+ xor bx, bx ; 31 db ; 0xf886e
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8870
+ call 0b090h ; e8 1a 28 ; 0xf8873
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8876 ahci.c:450
+ xor ah, ah ; 30 e4 ; 0xf8879
+ mov CL, strict byte 007h ; b1 07 ; 0xf887b
+ sal ax, CL ; d3 e0 ; 0xf887d
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf887f
+ add ax, 00108h ; 05 08 01 ; 0xf8882
+ cwd ; 99 ; 0xf8885
+ mov cx, dx ; 89 d1 ; 0xf8886
+ mov dx, si ; 89 f2 ; 0xf8888
+ xchg cx, ax ; 91 ; 0xf888a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf888b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf888f
+ out DX, eax ; 66 ef ; 0xf8891
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8893
+ xor ax, ax ; 31 c0 ; 0xf8896
+ xor cx, cx ; 31 c9 ; 0xf8898
+ mov dx, bx ; 89 da ; 0xf889a
+ xchg cx, ax ; 91 ; 0xf889c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf889d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88a1
+ out DX, eax ; 66 ef ; 0xf88a3
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf88a5 ahci.c:451
+ add ax, 0010ch ; 05 0c 01 ; 0xf88a8
+ cwd ; 99 ; 0xf88ab
+ mov cx, dx ; 89 d1 ; 0xf88ac
+ mov dx, si ; 89 f2 ; 0xf88ae
+ xchg cx, ax ; 91 ; 0xf88b0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88b1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88b5
+ out DX, eax ; 66 ef ; 0xf88b7
+ xor ax, ax ; 31 c0 ; 0xf88b9
+ xor cx, cx ; 31 c9 ; 0xf88bb
+ mov dx, bx ; 89 da ; 0xf88bd
+ xchg cx, ax ; 91 ; 0xf88bf
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88c0
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88c4
+ out DX, eax ; 66 ef ; 0xf88c6
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf88c8 ahci.c:453
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf88cb
+ cwd ; 99 ; 0xf88cd
+ mov cx, dx ; 89 d1 ; 0xf88ce
+ mov dx, si ; 89 f2 ; 0xf88d0
+ xchg cx, ax ; 91 ; 0xf88d2
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88d3
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88d7
+ out DX, eax ; 66 ef ; 0xf88d9
+ xor ax, ax ; 31 c0 ; 0xf88db
+ xor cx, cx ; 31 c9 ; 0xf88dd
+ mov dx, bx ; 89 da ; 0xf88df
+ xchg cx, ax ; 91 ; 0xf88e1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88e2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88e6
+ out DX, eax ; 66 ef ; 0xf88e8
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf88ea ahci.c:454
+ add ax, 00104h ; 05 04 01 ; 0xf88ed
+ cwd ; 99 ; 0xf88f0
+ mov cx, dx ; 89 d1 ; 0xf88f1
+ mov dx, si ; 89 f2 ; 0xf88f3
+ xchg cx, ax ; 91 ; 0xf88f5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88f6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88fa
+ out DX, eax ; 66 ef ; 0xf88fc
+ xor ax, ax ; 31 c0 ; 0xf88fe
+ xor cx, cx ; 31 c9 ; 0xf8900
+ mov dx, bx ; 89 da ; 0xf8902
+ xchg cx, ax ; 91 ; 0xf8904
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8905
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8909
+ out DX, eax ; 66 ef ; 0xf890b
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf890d ahci.c:457
+ add ax, 00114h ; 05 14 01 ; 0xf8910
+ cwd ; 99 ; 0xf8913
+ mov cx, dx ; 89 d1 ; 0xf8914
+ mov dx, si ; 89 f2 ; 0xf8916
+ xchg cx, ax ; 91 ; 0xf8918
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8919
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf891d
+ out DX, eax ; 66 ef ; 0xf891f
+ xor ax, ax ; 31 c0 ; 0xf8921
+ xor cx, cx ; 31 c9 ; 0xf8923
+ mov dx, bx ; 89 da ; 0xf8925
+ xchg cx, ax ; 91 ; 0xf8927
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8928
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf892c
+ out DX, eax ; 66 ef ; 0xf892e
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8930 ahci.c:459
+ mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf8933
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf8939 ahci.c:461
+ pop di ; 5f ; 0xf893c
+ pop si ; 5e ; 0xf893d
+ pop cx ; 59 ; 0xf893e
+ pop bx ; 5b ; 0xf893f
+ pop bp ; 5d ; 0xf8940
+ retn ; c3 ; 0xf8941
+ ; disGetNextSymbol 0xf8942 LB 0x2a76 -> off=0x0 cb=0000000000000250 uValue=00000000000f7342 'ahci_port_init'
+ahci_port_init: ; 0xf8942 LB 0x250
+ push bp ; 55 ; 0xf8942 ahci.c:467
+ mov bp, sp ; 89 e5 ; 0xf8943
+ push cx ; 51 ; 0xf8945
+ push si ; 56 ; 0xf8946
+ push di ; 57 ; 0xf8947
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8948
+ mov si, ax ; 89 c6 ; 0xf894b
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf894d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8950
+ call 087bfh ; e8 69 fe ; 0xf8953 ahci.c:470
+ mov al, bl ; 88 d8 ; 0xf8956 ahci.c:473
+ xor ah, ah ; 30 e4 ; 0xf8958
+ mov CL, strict byte 007h ; b1 07 ; 0xf895a
+ sal ax, CL ; d3 e0 ; 0xf895c
+ add ax, 00118h ; 05 18 01 ; 0xf895e
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8961 ahci.c:259
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8964
+ xor cx, cx ; 31 c9 ; 0xf8969 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf896b
+ xchg cx, ax ; 91 ; 0xf896d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf896e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8972
+ out DX, eax ; 66 ef ; 0xf8974
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8976 ahci.c:262
+ mov dx, bx ; 89 da ; 0xf8979
+ in eax, DX ; 66 ed ; 0xf897b
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf897d
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf897f
+ xchg dx, ax ; 92 ; 0xf8983
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8984
+ mov cx, dx ; 89 d1 ; 0xf8986
+ mov dx, bx ; 89 da ; 0xf8988
+ xchg cx, ax ; 91 ; 0xf898a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf898b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf898f
+ out DX, eax ; 66 ef ; 0xf8991
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8993 ahci.c:476
+ xor ah, ah ; 30 e4 ; 0xf8996
+ mov CL, strict byte 007h ; b1 07 ; 0xf8998
+ sal ax, CL ; d3 e0 ; 0xf899a
+ add ax, 00118h ; 05 18 01 ; 0xf899c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf899f ahci.c:269
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf89a2
+ xor cx, cx ; 31 c9 ; 0xf89a7 ahci.c:271
+ mov dx, bx ; 89 da ; 0xf89a9
+ xchg cx, ax ; 91 ; 0xf89ab
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89ac
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89b0
+ out DX, eax ; 66 ef ; 0xf89b2
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf89b4 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf89b7
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf89b9
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf89bb
+ xchg dx, ax ; 92 ; 0xf89bf
+ test ax, 0c011h ; a9 11 c0 ; 0xf89c0
+ je short 089c9h ; 74 04 ; 0xf89c3
+ mov AL, strict byte 001h ; b0 01 ; 0xf89c5
+ jmp short 089cbh ; eb 02 ; 0xf89c7
+ xor al, al ; 30 c0 ; 0xf89c9
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf89cb ahci.c:273
+ je short 08993h ; 74 c4 ; 0xf89cd
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf89cf ahci.c:487
+ xor bx, bx ; 31 db ; 0xf89d2
+ mov ax, si ; 89 f0 ; 0xf89d4
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89d6
+ call 0b090h ; e8 b4 26 ; 0xf89d9
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf89dc ahci.c:488
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf89e0
+ xor bx, bx ; 31 db ; 0xf89e3
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89e5
+ call 0b090h ; e8 a5 26 ; 0xf89e8
+ lea di, [si+00200h] ; 8d bc 00 02 ; 0xf89eb ahci.c:489
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf89ef
+ xor bx, bx ; 31 db ; 0xf89f2
+ mov ax, di ; 89 f8 ; 0xf89f4
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89f6
+ call 0b090h ; e8 94 26 ; 0xf89f9
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf89fc ahci.c:493
+ xor bh, bh ; 30 ff ; 0xf89ff
+ mov CL, strict byte 007h ; b1 07 ; 0xf8a01
+ sal bx, CL ; d3 e3 ; 0xf8a03
+ lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf8a05
+ cwd ; 99 ; 0xf8a09
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a0a
+ mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf8a0d
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf8a12
+ mov cx, dx ; 89 d1 ; 0xf8a15
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8a17
+ 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
+ mov ax, di ; 89 f8 ; 0xf8a23
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a25
+ call 083e6h ; e8 bb f9 ; 0xf8a28
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a2b
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a2e
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8a33
+ mov cx, dx ; 89 d1 ; 0xf8a36
+ mov dx, di ; 89 fa ; 0xf8a38
+ xchg cx, ax ; 91 ; 0xf8a3a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a3b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a3f
+ out DX, eax ; 66 ef ; 0xf8a41
+ lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8a43 ahci.c:494
+ cwd ; 99 ; 0xf8a47
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a48
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a4b
+ 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
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a5d
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a60
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a65
+ xor ax, ax ; 31 c0 ; 0xf8a68
+ xor cx, cx ; 31 c9 ; 0xf8a6a
+ xchg cx, ax ; 91 ; 0xf8a6c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a6d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a71
+ out DX, eax ; 66 ef ; 0xf8a73
+ lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf8a75 ahci.c:497
+ cwd ; 99 ; 0xf8a79
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a7a
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a7d
+ mov cx, dx ; 89 d1 ; 0xf8a82
+ mov dx, di ; 89 fa ; 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
+ mov ax, si ; 89 f0 ; 0xf8a8f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a91
+ call 083e6h ; e8 4f f9 ; 0xf8a94
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a97
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a9a
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8a9f
+ mov cx, dx ; 89 d1 ; 0xf8aa2
+ mov dx, di ; 89 fa ; 0xf8aa4
+ xchg cx, ax ; 91 ; 0xf8aa6
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8aa7
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8aab
+ out DX, eax ; 66 ef ; 0xf8aad
+ lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8aaf ahci.c:498
+ cwd ; 99 ; 0xf8ab3
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ab4
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8ab7
+ mov cx, dx ; 89 d1 ; 0xf8abc
+ mov dx, di ; 89 fa ; 0xf8abe
+ xchg cx, ax ; 91 ; 0xf8ac0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ac1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ac5
+ out DX, eax ; 66 ef ; 0xf8ac7
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ac9
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8acc
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ad1
+ xor ax, ax ; 31 c0 ; 0xf8ad4
+ xor cx, cx ; 31 c9 ; 0xf8ad6
+ xchg cx, ax ; 91 ; 0xf8ad8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ad9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8add
+ out DX, eax ; 66 ef ; 0xf8adf
+ lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8ae1 ahci.c:501
+ cwd ; 99 ; 0xf8ae5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ae6
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8ae9
+ mov cx, dx ; 89 d1 ; 0xf8aee
+ mov dx, di ; 89 fa ; 0xf8af0
+ xchg cx, ax ; 91 ; 0xf8af2
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8af3
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8af7
+ out DX, eax ; 66 ef ; 0xf8af9
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8afb
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8afe
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b03
+ xor ax, ax ; 31 c0 ; 0xf8b06
+ xor cx, cx ; 31 c9 ; 0xf8b08
+ xchg cx, ax ; 91 ; 0xf8b0a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b0b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b0f
+ out DX, eax ; 66 ef ; 0xf8b11
+ lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8b13 ahci.c:502
+ cwd ; 99 ; 0xf8b17
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b18
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8b1b
+ mov cx, dx ; 89 d1 ; 0xf8b20
+ mov dx, di ; 89 fa ; 0xf8b22
+ xchg cx, ax ; 91 ; 0xf8b24
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b25
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b29
+ out DX, eax ; 66 ef ; 0xf8b2b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b2d
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b30
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b35
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8b38
+ mov cx, ax ; 89 c1 ; 0xf8b3b
+ xchg cx, ax ; 91 ; 0xf8b3d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b3e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b42
+ out DX, eax ; 66 ef ; 0xf8b44
+ lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8b46 ahci.c:504
+ cwd ; 99 ; 0xf8b4a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b4b
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8b4e
+ mov cx, dx ; 89 d1 ; 0xf8b53
+ mov dx, bx ; 89 da ; 0xf8b55
+ xchg cx, ax ; 91 ; 0xf8b57
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b58
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b5c
+ out DX, eax ; 66 ef ; 0xf8b5e
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b60
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b63
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b68
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8b6b
+ mov cx, ax ; 89 c1 ; 0xf8b6e
+ xchg cx, ax ; 91 ; 0xf8b70
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b71
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b75
+ out DX, eax ; 66 ef ; 0xf8b77
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8b79 ahci.c:506
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b7c
+ mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8b7f
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8b84 ahci.c:507
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8b8a ahci.c:508
+ pop di ; 5f ; 0xf8b8d
+ pop si ; 5e ; 0xf8b8e
+ pop cx ; 59 ; 0xf8b8f
+ pop bp ; 5d ; 0xf8b90
+ retn ; c3 ; 0xf8b91
+ ; disGetNextSymbol 0xf8b92 LB 0x2826 -> off=0x0 cb=00000000000000aa uValue=00000000000f7592 'ahci_read_sectors'
+ahci_read_sectors: ; 0xf8b92 LB 0xaa
+ push bp ; 55 ; 0xf8b92 ahci.c:517
+ mov bp, sp ; 89 e5 ; 0xf8b93
+ push si ; 56 ; 0xf8b95
+ push di ; 57 ; 0xf8b96
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf8b97 ahci.c:522
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf8b9a
+ xor ah, ah ; 30 e4 ; 0xf8b9e
+ mov di, ax ; 89 c7 ; 0xf8ba0
+ sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8ba2
+ cmp di, strict byte 00004h ; 83 ff 04 ; 0xf8ba5 ahci.c:523
+ jbe short 08bbdh ; 76 13 ; 0xf8ba8
+ push di ; 57 ; 0xf8baa ahci.c:524
+ mov ax, 00c72h ; b8 72 0c ; 0xf8bab
+ push ax ; 50 ; 0xf8bae
+ mov ax, 00c84h ; b8 84 0c ; 0xf8baf
+ push ax ; 50 ; 0xf8bb2
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf8bb3
+ push ax ; 50 ; 0xf8bb6
+ call 0191ch ; e8 62 8d ; 0xf8bb7
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8bba
+ xor bx, bx ; 31 db ; 0xf8bbd ahci.c:530
+ les si, [bp+004h] ; c4 76 04 ; 0xf8bbf
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf8bc2
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8bc7 ahci.c:239
+ mov es, dx ; 8e c2 ; 0xf8bcb
+ mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8bcd
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8bd2 ahci.c:531
+ add di, si ; 01 f7 ; 0xf8bd5
+ mov bl, byte [es:di+002a8h] ; 26 8a 9d a8 02 ; 0xf8bd7
+ xor bh, bh ; 30 ff ; 0xf8bdc
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf8bde
+ xor ax, ax ; 31 c0 ; 0xf8be3
+ call 08942h ; e8 5a fd ; 0xf8be5
+ mov bx, strict word 00025h ; bb 25 00 ; 0xf8be8 ahci.c:532
+ mov ax, si ; 89 f0 ; 0xf8beb
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8bed
+ call 0855dh ; e8 6a f9 ; 0xf8bf0
+ mov bx, ax ; 89 c3 ; 0xf8bf3
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8bf5 ahci.c:534
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8bf8
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8bfc
+ mov CL, strict byte 009h ; b1 09 ; 0xf8c00 ahci.c:536
+ sal ax, CL ; d3 e0 ; 0xf8c02
+ mov cx, ax ; 89 c1 ; 0xf8c04
+ shr cx, 1 ; d1 e9 ; 0xf8c06
+ mov di, si ; 89 f7 ; 0xf8c08
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8c0a
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8c0e
+ mov si, di ; 89 fe ; 0xf8c12
+ mov dx, ax ; 89 c2 ; 0xf8c14
+ mov es, ax ; 8e c0 ; 0xf8c16
+ push DS ; 1e ; 0xf8c18
+ mov ds, dx ; 8e da ; 0xf8c19
+ rep movsw ; f3 a5 ; 0xf8c1b
+ pop DS ; 1f ; 0xf8c1d
+ xor di, di ; 31 ff ; 0xf8c1e ahci.c:538
+ les si, [bp+004h] ; c4 76 04 ; 0xf8c20
+ mov es, [es:si+002aeh] ; 26 8e 84 ae 02 ; 0xf8c23
+ mov ax, word [es:di+00268h] ; 26 8b 85 68 02 ; 0xf8c28 ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c2d
+ mov ax, bx ; 89 d8 ; 0xf8c31 ahci.c:540
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8c33
+ pop di ; 5f ; 0xf8c36
+ pop si ; 5e ; 0xf8c37
+ pop bp ; 5d ; 0xf8c38
+ retn 00004h ; c2 04 00 ; 0xf8c39
+ ; disGetNextSymbol 0xf8c3c LB 0x277c -> off=0x0 cb=0000000000000088 uValue=00000000000f763c 'ahci_write_sectors'
+ahci_write_sectors: ; 0xf8c3c LB 0x88
+ push bp ; 55 ; 0xf8c3c ahci.c:549
+ mov bp, sp ; 89 e5 ; 0xf8c3d
+ push si ; 56 ; 0xf8c3f
+ push di ; 57 ; 0xf8c40
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf8c41
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8c44
+ mov es, cx ; 8e c1 ; 0xf8c47 ahci.c:554
+ mov bl, byte [es:si+00ch] ; 26 8a 5c 0c ; 0xf8c49
+ xor bh, bh ; 30 ff ; 0xf8c4d
+ sub bx, strict byte 0000ch ; 83 eb 0c ; 0xf8c4f
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf8c52 ahci.c:555
+ jbe short 08c6ah ; 76 13 ; 0xf8c55
+ push bx ; 53 ; 0xf8c57 ahci.c:556
+ mov ax, 00ca3h ; b8 a3 0c ; 0xf8c58
+ push ax ; 50 ; 0xf8c5b
+ mov ax, 00c84h ; b8 84 0c ; 0xf8c5c
+ push ax ; 50 ; 0xf8c5f
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf8c60
+ push ax ; 50 ; 0xf8c63
+ call 0191ch ; e8 b5 8c ; 0xf8c64
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8c67
+ xor di, di ; 31 ff ; 0xf8c6a ahci.c:562
+ mov es, cx ; 8e c1 ; 0xf8c6c
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf8c6e
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8c73 ahci.c:239
+ mov es, dx ; 8e c2 ; 0xf8c77
+ mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8c79
+ mov es, cx ; 8e c1 ; 0xf8c7e ahci.c:563
+ add bx, si ; 01 f3 ; 0xf8c80
+ mov bl, byte [es:bx+002a8h] ; 26 8a 9f a8 02 ; 0xf8c82
+ xor bh, bh ; 30 ff ; 0xf8c87
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf8c89
+ xor ax, ax ; 31 c0 ; 0xf8c8e
+ call 08942h ; e8 af fc ; 0xf8c90
+ mov bx, strict word 00035h ; bb 35 00 ; 0xf8c93 ahci.c:564
+ mov ax, si ; 89 f0 ; 0xf8c96
+ mov dx, cx ; 89 ca ; 0xf8c98
+ call 0855dh ; e8 c0 f8 ; 0xf8c9a
+ mov dx, ax ; 89 c2 ; 0xf8c9d
+ mov es, cx ; 8e c1 ; 0xf8c9f ahci.c:566
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8ca1
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8ca5
+ xor bx, bx ; 31 db ; 0xf8ca9 ahci.c:567
+ mov es, [es:si+002aeh] ; 26 8e 84 ae 02 ; 0xf8cab
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8cb0 ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8cb5
+ mov ax, dx ; 89 d0 ; 0xf8cb9 ahci.c:569
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8cbb
+ pop di ; 5f ; 0xf8cbe
+ pop si ; 5e ; 0xf8cbf
+ pop bp ; 5d ; 0xf8cc0
+ retn 00004h ; c2 04 00 ; 0xf8cc1
+ ; disGetNextSymbol 0xf8cc4 LB 0x26f4 -> off=0x0 cb=0000000000000190 uValue=00000000000f76c4 'ahci_cmd_packet'
+ahci_cmd_packet: ; 0xf8cc4 LB 0x190
+ push bp ; 55 ; 0xf8cc4 ahci.c:576
+ mov bp, sp ; 89 e5 ; 0xf8cc5
+ push si ; 56 ; 0xf8cc7
+ push di ; 57 ; 0xf8cc8
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf8cc9
+ push ax ; 50 ; 0xf8ccc
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf8ccd
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf8cd0
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf8cd3
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8cd6 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8cd9
+ mov es, ax ; 8e c0 ; 0xf8cdc
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8cde
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf8ce1 ahci.c:49
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf8ce4
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf8ce7 ahci.c:583
+ jne short 08d10h ; 75 23 ; 0xf8ceb
+ mov bx, 00eeah ; bb ea 0e ; 0xf8ced ahci.c:584
+ mov cx, ds ; 8c d9 ; 0xf8cf0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8cf2
+ call 018d9h ; e8 e1 8b ; 0xf8cf5
+ mov ax, 00cb6h ; b8 b6 0c ; 0xf8cf8
+ push ax ; 50 ; 0xf8cfb
+ mov ax, 00cc6h ; b8 c6 0c ; 0xf8cfc
+ push ax ; 50 ; 0xf8cff
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8d00
+ push ax ; 50 ; 0xf8d03
+ call 0191ch ; e8 15 8c ; 0xf8d04
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf8d07
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8d0a ahci.c:585
+ jmp near 08e4bh ; e9 3b 01 ; 0xf8d0d
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf8d10 ahci.c:589
+ jne short 08d0ah ; 75 f4 ; 0xf8d14
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8d16 ahci.c:603
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xf8d19
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf8d1c
+ sal ax, 1 ; d1 e0 ; 0xf8d1f
+ rcl dx, 1 ; d1 d2 ; 0xf8d21
+ loop 08d1fh ; e2 fa ; 0xf8d23
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d25
+ mov word [es:si], ax ; 26 89 04 ; 0xf8d28
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf8d2b
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8d2f
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8d35
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf8d3b ahci.c:604
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8d3e
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf8d42
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf8d45
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf8d49 ahci.c:605
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8d4d
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xf8d50
+ xor cx, cx ; 31 c9 ; 0xf8d53
+ call 0b040h ; e8 e8 22 ; 0xf8d55
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8d58
+ xor di, di ; 31 ff ; 0xf8d5c ahci.c:608
+ mov ax, word [es:si+002aeh] ; 26 8b 84 ae 02 ; 0xf8d5e
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8d63
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf8d66
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8d69
+ sub word [bp-014h], strict byte 0000ch ; 83 6e ec 0c ; 0xf8d6c ahci.c:595
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8d70 ahci.c:239
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d74
+ mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8d77
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d7c ahci.c:611
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8d7f
+ add bx, si ; 01 f3 ; 0xf8d82
+ mov al, byte [es:bx+002a8h] ; 26 8a 87 a8 02 ; 0xf8d84
+ xor ah, ah ; 30 e4 ; 0xf8d89
+ mov dx, word [es:si+002aeh] ; 26 8b 94 ae 02 ; 0xf8d8b
+ mov bx, ax ; 89 c3 ; 0xf8d90
+ xor al, al ; 30 c0 ; 0xf8d92
+ call 08942h ; e8 ab fb ; 0xf8d94
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf8d97 ahci.c:614
+ xor ah, ah ; 30 e4 ; 0xf8d9a
+ push ax ; 50 ; 0xf8d9c
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf8d9d
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf8da0
+ mov ax, 000c0h ; b8 c0 00 ; 0xf8da3
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8da6
+ call 0b0a0h ; e8 f4 22 ; 0xf8da9
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8dac ahci.c:618
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf8daf
+ mov word [es:si+01ah], di ; 26 89 7c 1a ; 0xf8db3 ahci.c:619
+ mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf8db7
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf8dbb ahci.c:622
+ test ax, ax ; 85 c0 ; 0xf8dbf
+ je short 08deah ; 74 27 ; 0xf8dc1
+ dec ax ; 48 ; 0xf8dc3 ahci.c:623
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8dc4
+ mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf8dc7
+ mov word [es:di+0010eh], di ; 26 89 bd 0e 01 ; 0xf8dcc
+ mov ax, word [es:di+00264h] ; 26 8b 85 64 02 ; 0xf8dd1 ahci.c:624
+ mov dx, word [es:di+00266h] ; 26 8b 95 66 02 ; 0xf8dd6
+ mov word [es:di+00100h], ax ; 26 89 85 00 01 ; 0xf8ddb
+ mov word [es:di+00102h], dx ; 26 89 95 02 01 ; 0xf8de0
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8de5 ahci.c:625
+ mov bx, 000a0h ; bb a0 00 ; 0xf8dea ahci.c:628
+ mov ax, si ; 89 f0 ; 0xf8ded
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf8def
+ call 0855dh ; e8 68 f7 ; 0xf8df2
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8df5 ahci.c:630
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf8df8
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf8dfc
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8e00
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf8e03
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf8e07
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf8e0b ahci.c:632
+ mov cx, dx ; 89 d1 ; 0xf8e0f
+ shr cx, 1 ; d1 e9 ; 0xf8e11
+ rcr bx, 1 ; d1 db ; 0xf8e13
+ mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf8e15
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8e19
+ mov cx, bx ; 89 d9 ; 0xf8e1d
+ mov si, di ; 89 fe ; 0xf8e1f
+ mov dx, ax ; 89 c2 ; 0xf8e21
+ mov es, ax ; 8e c0 ; 0xf8e23
+ push DS ; 1e ; 0xf8e25
+ mov ds, dx ; 8e da ; 0xf8e26
+ rep movsw ; f3 a5 ; 0xf8e28
+ pop DS ; 1f ; 0xf8e2a
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8e2b ahci.c:244
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8e2e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e33
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8e37 ahci.c:636
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8e3a
+ or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf8e3e
+ jne short 08e49h ; 75 05 ; 0xf8e42
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8e44
+ jmp short 08e4bh ; eb 02 ; 0xf8e47
+ xor ax, ax ; 31 c0 ; 0xf8e49
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8e4b ahci.c:637
+ pop di ; 5f ; 0xf8e4e
+ pop si ; 5e ; 0xf8e4f
+ pop bp ; 5d ; 0xf8e50
+ retn 0000ch ; c2 0c 00 ; 0xf8e51
+ ; disGetNextSymbol 0xf8e54 LB 0x2564 -> off=0x0 cb=0000000000000005 uValue=00000000000f7854 'wait_ticks_device_init'
+wait_ticks_device_init: ; 0xf8e54 LB 0x5
+ push bp ; 55 ; 0xf8e54 ahci.c:640
+ mov bp, sp ; 89 e5 ; 0xf8e55
+ pop bp ; 5d ; 0xf8e57 ahci.c:642
+ retn ; c3 ; 0xf8e58
+ ; disGetNextSymbol 0xf8e59 LB 0x255f -> off=0x0 cb=0000000000000509 uValue=00000000000f7859 'ahci_port_detect_device'
+ahci_port_detect_device: ; 0xf8e59 LB 0x509
+ push bp ; 55 ; 0xf8e59 ahci.c:644
+ mov bp, sp ; 89 e5 ; 0xf8e5a
+ push cx ; 51 ; 0xf8e5c
+ push si ; 56 ; 0xf8e5d
+ push di ; 57 ; 0xf8e5e
+ sub sp, 0022eh ; 81 ec 2e 02 ; 0xf8e5f
+ mov si, ax ; 89 c6 ; 0xf8e63
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf8e65
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8e68
+ mov word [bp-022h], strict word 00000h ; c7 46 de 00 00 ; 0xf8e6b ahci.c:650
+ mov al, bl ; 88 d8 ; 0xf8e70 ahci.c:652
+ mov byte [bp-02ah], bl ; 88 5e d6 ; 0xf8e72
+ xor al, bl ; 30 d8 ; 0xf8e75
+ mov byte [bp-029h], al ; 88 46 d7 ; 0xf8e77
+ mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xf8e7a
+ mov ax, si ; 89 f0 ; 0xf8e7d
+ call 08942h ; e8 c0 fa ; 0xf8e7f
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8e82 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8e85
+ mov es, ax ; 8e c0 ; 0xf8e88
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8e8a
+ mov word [bp-026h], strict word 0005eh ; c7 46 da 5e 00 ; 0xf8e8d ahci.c:49
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf8e92
+ mov CL, strict byte 007h ; b1 07 ; 0xf8e95 ahci.c:657
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8e97
+ sal ax, CL ; d3 e0 ; 0xf8e9a
+ add ax, 0012ch ; 05 2c 01 ; 0xf8e9c
+ cwd ; 99 ; 0xf8e9f
+ mov di, ax ; 89 c7 ; 0xf8ea0
+ mov bx, dx ; 89 d3 ; 0xf8ea2
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8ea4
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ea7
+ mov cx, bx ; 89 d9 ; 0xf8eac
+ xchg cx, ax ; 91 ; 0xf8eae
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8eaf
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8eb3
+ out DX, eax ; 66 ef ; 0xf8eb5
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8eb7
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8eba
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ebf
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8ec2
+ xor cx, cx ; 31 c9 ; 0xf8ec5
+ xchg cx, ax ; 91 ; 0xf8ec7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ec8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ecc
+ out DX, eax ; 66 ef ; 0xf8ece
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8ed0 ahci.c:662
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ed3
+ mov ax, di ; 89 f8 ; 0xf8ed8
+ mov cx, bx ; 89 d9 ; 0xf8eda
+ xchg cx, ax ; 91 ; 0xf8edc
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8edd
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ee1
+ out DX, eax ; 66 ef ; 0xf8ee3
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8ee5
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ee8
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8eed
+ xor ax, ax ; 31 c0 ; 0xf8ef0
+ xor cx, cx ; 31 c9 ; 0xf8ef2
+ xchg cx, ax ; 91 ; 0xf8ef4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ef5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ef9
+ out DX, eax ; 66 ef ; 0xf8efb
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf8efd ahci.c:671
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8f00
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf8f03
+ mov es, ax ; 8e c0 ; 0xf8f06 ahci.c:672
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8f08
+ add ax, strict word 00003h ; 05 03 00 ; 0xf8f0b
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf8f0e
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8f11
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf8f15
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf8f18
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f1b ahci.c:674
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8f1e
+ cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf8f22
+ jc short 08f38h ; 72 11 ; 0xf8f25
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8f27
+ cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf8f2b
+ jne short 08f86h ; 75 56 ; 0xf8f2e
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8f30
+ cmp ax, word [bp-01eh] ; 3b 46 e2 ; 0xf8f33
+ jnc short 08f86h ; 73 4e ; 0xf8f36
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8f38 ahci.c:677
+ xor ah, ah ; 30 e4 ; 0xf8f3b
+ mov CL, strict byte 007h ; b1 07 ; 0xf8f3d
+ sal ax, CL ; d3 e0 ; 0xf8f3f
+ add ax, 00128h ; 05 28 01 ; 0xf8f41
+ cwd ; 99 ; 0xf8f44
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8f45
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f48
+ mov cx, dx ; 89 d1 ; 0xf8f4d
+ mov dx, bx ; 89 da ; 0xf8f4f
+ xchg cx, ax ; 91 ; 0xf8f51
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f52
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f56
+ out DX, eax ; 66 ef ; 0xf8f58
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8f5a
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f5d
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f62
+ in eax, DX ; 66 ed ; 0xf8f65
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8f67
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8f69
+ xchg dx, ax ; 92 ; 0xf8f6d
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf8f6e
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf8f71
+ xor bx, bx ; 31 db ; 0xf8f74 ahci.c:678
+ push bx ; 53 ; 0xf8f76
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8f77
+ xor cx, cx ; 31 c9 ; 0xf8f7a
+ call 083cah ; e8 4b f4 ; 0xf8f7c
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8f7f
+ jne short 08f1bh ; 75 97 ; 0xf8f82
+ jmp short 08f8fh ; eb 09 ; 0xf8f84 ahci.c:680
+ cmp word [bp-022h], strict byte 00000h ; 83 7e de 00 ; 0xf8f86 ahci.c:685
+ jne short 08f8fh ; 75 03 ; 0xf8f8a
+ jmp near 0935ah ; e9 cb 03 ; 0xf8f8c
+ xor ax, ax ; 31 c0 ; 0xf8f8f ahci.c:690
+ push ax ; 50 ; 0xf8f91
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8f92
+ xor cx, cx ; 31 c9 ; 0xf8f95
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf8f97
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf8f9a
+ call 083cah ; e8 2a f4 ; 0xf8f9d
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8fa0
+ jne short 08f8ch ; 75 e7 ; 0xf8fa3
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8fa5 ahci.c:698
+ xor ah, ah ; 30 e4 ; 0xf8fa8
+ mov CL, strict byte 007h ; b1 07 ; 0xf8faa
+ mov di, ax ; 89 c7 ; 0xf8fac
+ sal di, CL ; d3 e7 ; 0xf8fae
+ lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8fb0
+ cwd ; 99 ; 0xf8fb4
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8fb5
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8fb8
+ mov cx, dx ; 89 d1 ; 0xf8fbd
+ mov dx, bx ; 89 da ; 0xf8fbf
+ xchg cx, ax ; 91 ; 0xf8fc1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8fc2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8fc6
+ out DX, eax ; 66 ef ; 0xf8fc8
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8fca
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8fcd
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8fd2
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8fd5
+ mov cx, ax ; 89 c1 ; 0xf8fd8
+ xchg cx, ax ; 91 ; 0xf8fda
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8fdb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8fdf
+ out DX, eax ; 66 ef ; 0xf8fe1
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8fe3 ahci.c:700
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf8fe6
+ mov al, byte [es:bx+002ach] ; 26 8a 87 ac 02 ; 0xf8fe9
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8fee
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf8ff1 ahci.c:705
+ jnc short 08f8ch ; 73 97 ; 0xf8ff3
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8ff5 ahci.c:708
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8ff9 ahci.c:250
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8ffc
+ xor cx, cx ; 31 c9 ; 0xf9001 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf9003
+ xchg cx, ax ; 91 ; 0xf9005
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9006
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf900a
+ out DX, eax ; 66 ef ; 0xf900c
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf900e ahci.c:253
+ mov dx, bx ; 89 da ; 0xf9011
+ in eax, DX ; 66 ed ; 0xf9013
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9015
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9017
+ xchg dx, ax ; 92 ; 0xf901b
+ or AL, strict byte 010h ; 0c 10 ; 0xf901c
+ mov cx, dx ; 89 d1 ; 0xf901e
+ mov dx, bx ; 89 da ; 0xf9020
+ xchg cx, ax ; 91 ; 0xf9022
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9023
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9027
+ out DX, eax ; 66 ef ; 0xf9029
+ lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf902b ahci.c:712
+ cwd ; 99 ; 0xf902f
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf9030
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf9033
+ mov cx, dx ; 89 d1 ; 0xf9038
+ mov dx, bx ; 89 da ; 0xf903a
+ xchg cx, ax ; 91 ; 0xf903c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf903d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9041
+ out DX, eax ; 66 ef ; 0xf9043
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf9045
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9048
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf904d
+ in eax, DX ; 66 ed ; 0xf9050
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9052
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9054
+ xchg dx, ax ; 92 ; 0xf9058
+ mov si, ax ; 89 c6 ; 0xf9059
+ mov ax, dx ; 89 d0 ; 0xf905b
+ mov dl, byte [bp-00eh] ; 8a 56 f2 ; 0xf905d
+ add dl, 00ch ; 80 c2 0c ; 0xf9060
+ mov byte [bp-00ch], dl ; 88 56 f4 ; 0xf9063
+ test ax, ax ; 85 c0 ; 0xf9066 ahci.c:713
+ jne short 090c2h ; 75 58 ; 0xf9068
+ cmp si, 00101h ; 81 fe 01 01 ; 0xf906a
+ jne short 090c2h ; 75 52 ; 0xf906e
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf9070 ahci.c:723
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf9073
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9076
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf907c
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf9082
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf9088
+ lea dx, [bp-00234h] ; 8d 96 cc fd ; 0xf908d ahci.c:724
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf9091
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf9095
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf9099 ahci.c:725
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf909f ahci.c:726
+ mov bx, 000ech ; bb ec 00 ; 0xf90a5 ahci.c:727
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf90a8
+ mov dx, es ; 8c c2 ; 0xf90ab
+ call 0855dh ; e8 ad f4 ; 0xf90ad
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf90b0 ahci.c:730
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf90b3
+ test byte [bp-00234h], 080h ; f6 86 cc fd 80 ; 0xf90b6 ahci.c:732
+ je short 090c5h ; 74 08 ; 0xf90bb
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf90bd
+ jmp short 090c7h ; eb 05 ; 0xf90c0
+ jmp near 0928eh ; e9 c9 01 ; 0xf90c2
+ xor ax, ax ; 31 c0 ; 0xf90c5
+ mov cl, al ; 88 c1 ; 0xf90c7
+ mov ax, word [bp-00232h] ; 8b 86 ce fd ; 0xf90c9 ahci.c:733
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf90cd
+ mov ax, word [bp-0022eh] ; 8b 86 d2 fd ; 0xf90d0 ahci.c:734
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf90d4
+ mov ax, word [bp-00228h] ; 8b 86 d8 fd ; 0xf90d7 ahci.c:735
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf90db
+ mov si, word [bp-001bch] ; 8b b6 44 fe ; 0xf90de ahci.c:736
+ mov di, word [bp-001bah] ; 8b be 46 fe ; 0xf90e2
+ xor ax, ax ; 31 c0 ; 0xf90e6
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf90e8
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf90eb
+ cmp di, 00fffh ; 81 ff ff 0f ; 0xf90ee ahci.c:738
+ jne short 0910fh ; 75 1b ; 0xf90f2
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf90f4
+ jne short 0910fh ; 75 16 ; 0xf90f7
+ mov ax, word [bp-00166h] ; 8b 86 9a fe ; 0xf90f9 ahci.c:739
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf90fd
+ mov ax, word [bp-00168h] ; 8b 86 98 fe ; 0xf9100
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf9104
+ mov di, word [bp-0016ah] ; 8b be 96 fe ; 0xf9107
+ mov si, word [bp-0016ch] ; 8b b6 94 fe ; 0xf910b
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf910f ahci.c:743
+ xor bh, bh ; 30 ff ; 0xf9112
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf9114
+ add bx, word [bp-026h] ; 03 5e da ; 0xf9117
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf911a
+ mov byte [es:bx+002a8h], al ; 26 88 87 a8 02 ; 0xf911d
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9122 ahci.c:744
+ xor ah, ah ; 30 e4 ; 0xf9125
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf9127
+ imul dx ; f7 ea ; 0xf912a
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf912c
+ add bx, ax ; 01 c3 ; 0xf912f
+ mov word [es:bx+022h], 0ff05h ; 26 c7 47 22 05 ff ; 0xf9131
+ mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf9137 ahci.c:746
+ mov byte [es:bx+025h], 000h ; 26 c6 47 25 00 ; 0xf913b ahci.c:747
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf9140 ahci.c:748
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf9146 ahci.c:749
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf914b ahci.c:750
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf914e
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf9152
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf9155
+ mov word [es:bx+038h], di ; 26 89 7f 38 ; 0xf9159
+ mov word [es:bx+036h], si ; 26 89 77 36 ; 0xf915d
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9161 ahci.c:752
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf9164
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf9168 ahci.c:753
+ mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf916b
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf916f ahci.c:754
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf9172
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf9176 ahci.c:757
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf9179
+ jc short 09189h ; 72 0c ; 0xf917b
+ jbe short 09191h ; 76 12 ; 0xf917d
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf917f
+ je short 09199h ; 74 16 ; 0xf9181
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf9183
+ je short 09195h ; 74 0e ; 0xf9185
+ jmp short 091e3h ; eb 5a ; 0xf9187
+ test al, al ; 84 c0 ; 0xf9189
+ jne short 091e3h ; 75 56 ; 0xf918b
+ mov BL, strict byte 040h ; b3 40 ; 0xf918d ahci.c:760
+ jmp short 0919bh ; eb 0a ; 0xf918f ahci.c:761
+ mov BL, strict byte 048h ; b3 48 ; 0xf9191 ahci.c:763
+ jmp short 0919bh ; eb 06 ; 0xf9193 ahci.c:764
+ mov BL, strict byte 050h ; b3 50 ; 0xf9195 ahci.c:766
+ jmp short 0919bh ; eb 02 ; 0xf9197 ahci.c:767
+ mov BL, strict byte 058h ; b3 58 ; 0xf9199 ahci.c:769
+ mov dl, bl ; 88 da ; 0xf919b ahci.c:773
+ add dl, 007h ; 80 c2 07 ; 0xf919d
+ xor dh, dh ; 30 f6 ; 0xf91a0
+ mov ax, dx ; 89 d0 ; 0xf91a2
+ call 0165fh ; e8 b8 84 ; 0xf91a4
+ test al, al ; 84 c0 ; 0xf91a7
+ je short 091e3h ; 74 38 ; 0xf91a9
+ mov al, bl ; 88 d8 ; 0xf91ab ahci.c:776
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf91ad
+ xor ah, ah ; 30 e4 ; 0xf91af
+ call 0165fh ; e8 ab 84 ; 0xf91b1
+ mov byte [bp-02bh], al ; 88 46 d5 ; 0xf91b4
+ mov byte [bp-02ch], dh ; 88 76 d4 ; 0xf91b7
+ mov al, bl ; 88 d8 ; 0xf91ba
+ xor ah, ah ; 30 e4 ; 0xf91bc
+ call 0165fh ; e8 9e 84 ; 0xf91be
+ xor ah, ah ; 30 e4 ; 0xf91c1
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf91c3
+ add cx, ax ; 01 c1 ; 0xf91c6
+ mov word [bp-032h], cx ; 89 4e ce ; 0xf91c8
+ mov al, bl ; 88 d8 ; 0xf91cb ahci.c:777
+ add AL, strict byte 002h ; 04 02 ; 0xf91cd
+ call 0165fh ; e8 8d 84 ; 0xf91cf
+ xor ah, ah ; 30 e4 ; 0xf91d2
+ mov word [bp-034h], ax ; 89 46 cc ; 0xf91d4
+ mov ax, dx ; 89 d0 ; 0xf91d7 ahci.c:778
+ call 0165fh ; e8 83 84 ; 0xf91d9
+ xor ah, ah ; 30 e4 ; 0xf91dc
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf91de
+ jmp short 091f3h ; eb 10 ; 0xf91e1 ahci.c:780
+ push word [bp-012h] ; ff 76 ee ; 0xf91e3 ahci.c:781
+ push word [bp-028h] ; ff 76 d8 ; 0xf91e6
+ push di ; 57 ; 0xf91e9
+ push si ; 56 ; 0xf91ea
+ mov dx, ss ; 8c d2 ; 0xf91eb
+ lea ax, [bp-034h] ; 8d 46 cc ; 0xf91ed
+ call 05a0fh ; e8 1c c8 ; 0xf91f0
+ mov bx, 00eeah ; bb ea 0e ; 0xf91f3 ahci.c:785
+ mov cx, ds ; 8c d9 ; 0xf91f6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf91f8
+ call 018d9h ; e8 db 86 ; 0xf91fb
+ push word [bp-012h] ; ff 76 ee ; 0xf91fe
+ push word [bp-028h] ; ff 76 d8 ; 0xf9201
+ push di ; 57 ; 0xf9204
+ push si ; 56 ; 0xf9205
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf9206
+ push ax ; 50 ; 0xf9209
+ mov ax, word [bp-034h] ; 8b 46 cc ; 0xf920a
+ push ax ; 50 ; 0xf920d
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf920e
+ push ax ; 50 ; 0xf9211
+ push word [bp-02eh] ; ff 76 d2 ; 0xf9212
+ push word [bp-014h] ; ff 76 ec ; 0xf9215
+ push word [bp-01ah] ; ff 76 e6 ; 0xf9218
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf921b
+ xor ah, ah ; 30 e4 ; 0xf921e
+ push ax ; 50 ; 0xf9220
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf9221
+ push ax ; 50 ; 0xf9224
+ mov ax, 00ce6h ; b8 e6 0c ; 0xf9225
+ push ax ; 50 ; 0xf9228
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9229
+ push ax ; 50 ; 0xf922c
+ call 0191ch ; e8 ec 86 ; 0xf922d
+ add sp, strict byte 0001ch ; 83 c4 1c ; 0xf9230
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9233 ahci.c:787
+ xor ah, ah ; 30 e4 ; 0xf9236
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf9238
+ imul dx ; f7 ea ; 0xf923b
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf923d
+ add di, ax ; 01 c7 ; 0xf9240
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf9242
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf9245
+ push DS ; 1e ; 0xf9248
+ push SS ; 16 ; 0xf9249
+ pop DS ; 1f ; 0xf924a
+ lea si, [bp-034h] ; 8d 76 cc ; 0xf924b
+ movsw ; a5 ; 0xf924e
+ movsw ; a5 ; 0xf924f
+ movsw ; a5 ; 0xf9250
+ pop DS ; 1f ; 0xf9251
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf9252 ahci.c:790
+ mov bl, byte [es:bx+00252h] ; 26 8a 9f 52 02 ; 0xf9255
+ mov dl, byte [bp-00eh] ; 8a 56 f2 ; 0xf925a ahci.c:791
+ add dl, 00ch ; 80 c2 0c ; 0xf925d
+ mov al, bl ; 88 d8 ; 0xf9260
+ xor ah, ah ; 30 e4 ; 0xf9262
+ mov si, word [bp-026h] ; 8b 76 da ; 0xf9264
+ add si, ax ; 01 c6 ; 0xf9267
+ mov byte [es:si+00253h], dl ; 26 88 94 53 02 ; 0xf9269
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf926e ahci.c:792
+ mov si, word [bp-026h] ; 8b 76 da ; 0xf9270 ahci.c:793
+ mov byte [es:si+00252h], bl ; 26 88 9c 52 02 ; 0xf9273
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf9278 ahci.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf927b
+ mov es, ax ; 8e c0 ; 0xf927e
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf9280
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf9283 ahci.c:797
+ mov si, strict word 00075h ; be 75 00 ; 0xf9285 ahci.c:43
+ mov byte [es:si], bl ; 26 88 1c ; 0xf9288
+ jmp near 09349h ; e9 bb 00 ; 0xf928b ahci.c:800
+ cmp ax, 0eb14h ; 3d 14 eb ; 0xf928e
+ jne short 092ebh ; 75 58 ; 0xf9291
+ cmp si, 00101h ; 81 fe 01 01 ; 0xf9293
+ jne short 092ebh ; 75 52 ; 0xf9297
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf9299 ahci.c:805
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf929c
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf929f
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf92a5
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf92ab
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf92b1
+ lea dx, [bp-00234h] ; 8d 96 cc fd ; 0xf92b6 ahci.c:806
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf92ba
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf92be
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf92c2 ahci.c:807
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf92c8 ahci.c:808
+ mov bx, 000a1h ; bb a1 00 ; 0xf92ce ahci.c:809
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf92d1
+ mov dx, es ; 8c c2 ; 0xf92d4
+ call 0855dh ; e8 84 f2 ; 0xf92d6
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf92d9 ahci.c:812
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf92dc
+ test byte [bp-00234h], 080h ; f6 86 cc fd 80 ; 0xf92df ahci.c:814
+ je short 092edh ; 74 07 ; 0xf92e4
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf92e6
+ jmp short 092efh ; eb 04 ; 0xf92e9
+ jmp short 09349h ; eb 5c ; 0xf92eb
+ xor cx, cx ; 31 c9 ; 0xf92ed
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf92ef ahci.c:816
+ xor bh, bh ; 30 ff ; 0xf92f2
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf92f4
+ add bx, word [bp-026h] ; 03 5e da ; 0xf92f7
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf92fa
+ mov byte [es:bx+002a8h], al ; 26 88 87 a8 02 ; 0xf92fd
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9302 ahci.c:817
+ xor ah, ah ; 30 e4 ; 0xf9305
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf9307
+ imul dx ; f7 ea ; 0xf930a
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf930c
+ add bx, ax ; 01 c3 ; 0xf930f
+ mov word [es:bx+022h], 00505h ; 26 c7 47 22 05 05 ; 0xf9311
+ mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf9317 ahci.c:819
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf931b ahci.c:820
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf9321 ahci.c:821
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf9326 ahci.c:824
+ mov dl, byte [es:bx+00267h] ; 26 8a 97 67 02 ; 0xf9329
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf932e ahci.c:825
+ add AL, strict byte 00ch ; 04 0c ; 0xf9331
+ mov bl, dl ; 88 d3 ; 0xf9333
+ xor bh, bh ; 30 ff ; 0xf9335
+ add bx, word [bp-026h] ; 03 5e da ; 0xf9337
+ mov byte [es:bx+00268h], al ; 26 88 87 68 02 ; 0xf933a
+ db 0feh, 0c2h
+ ; inc dl ; fe c2 ; 0xf933f ahci.c:826
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf9341 ahci.c:827
+ mov byte [es:bx+00267h], dl ; 26 88 97 67 02 ; 0xf9344
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf9349 ahci.c:832
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf934c ahci.c:833
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf934f
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf9352
+ mov byte [es:bx+002ach], al ; 26 88 87 ac 02 ; 0xf9355
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf935a ahci.c:838
+ pop di ; 5f ; 0xf935d
+ pop si ; 5e ; 0xf935e
+ pop cx ; 59 ; 0xf935f
+ pop bp ; 5d ; 0xf9360
+ retn ; c3 ; 0xf9361
+ ; disGetNextSymbol 0xf9362 LB 0x2056 -> off=0x0 cb=000000000000003a uValue=00000000000f7d62 'ahci_mem_alloc'
+ahci_mem_alloc: ; 0xf9362 LB 0x3a
+ push bx ; 53 ; 0xf9362 ahci.c:843
+ push cx ; 51 ; 0xf9363
+ push dx ; 52 ; 0xf9364
+ push di ; 57 ; 0xf9365
+ push bp ; 55 ; 0xf9366
+ mov bp, sp ; 89 e5 ; 0xf9367
+ mov di, 00413h ; bf 13 04 ; 0xf9369 ahci.c:48
+ xor ax, ax ; 31 c0 ; 0xf936c
+ mov es, ax ; 8e c0 ; 0xf936e
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf9370
+ test ax, ax ; 85 c0 ; 0xf9373 ahci.c:852
+ je short 09396h ; 74 1f ; 0xf9375
+ dec ax ; 48 ; 0xf9377 ahci.c:853
+ mov bx, ax ; 89 c3 ; 0xf9378
+ xor dx, dx ; 31 d2 ; 0xf937a ahci.c:856
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf937c
+ sal ax, 1 ; d1 e0 ; 0xf937f
+ rcl dx, 1 ; d1 d2 ; 0xf9381
+ loop 0937fh ; e2 fa ; 0xf9383
+ mov di, dx ; 89 d7 ; 0xf9385
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9387
+ shr di, 1 ; d1 ef ; 0xf938a
+ rcr ax, 1 ; d1 d8 ; 0xf938c
+ loop 0938ah ; e2 fa ; 0xf938e
+ mov di, 00413h ; bf 13 04 ; 0xf9390 ahci.c:53
+ mov word [es:di], bx ; 26 89 1d ; 0xf9393
+ pop bp ; 5d ; 0xf9396 ahci.c:861
+ pop di ; 5f ; 0xf9397
+ pop dx ; 5a ; 0xf9398
+ pop cx ; 59 ; 0xf9399
+ pop bx ; 5b ; 0xf939a
+ retn ; c3 ; 0xf939b
+ ; disGetNextSymbol 0xf939c LB 0x201c -> off=0x0 cb=0000000000000157 uValue=00000000000f7d9c 'ahci_hba_init'
+ahci_hba_init: ; 0xf939c LB 0x157
+ push bp ; 55 ; 0xf939c ahci.c:866
+ mov bp, sp ; 89 e5 ; 0xf939d
+ push bx ; 53 ; 0xf939f
+ push cx ; 51 ; 0xf93a0
+ push dx ; 52 ; 0xf93a1
+ push si ; 56 ; 0xf93a2
+ push di ; 57 ; 0xf93a3
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf93a4
+ mov si, ax ; 89 c6 ; 0xf93a7
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf93a9 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf93ac
+ mov es, ax ; 8e c0 ; 0xf93af
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf93b1
+ mov bx, strict word 0005eh ; bb 5e 00 ; 0xf93b4 ahci.c:877
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf93b7 ahci.c:879
+ xor cx, cx ; 31 c9 ; 0xf93ba
+ mov dx, si ; 89 f2 ; 0xf93bc
+ xchg cx, ax ; 91 ; 0xf93be
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf93bf
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf93c3
+ out DX, eax ; 66 ef ; 0xf93c5
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf93c7
+ in eax, DX ; 66 ed ; 0xf93ca
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf93cc
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf93ce
+ xchg dx, ax ; 92 ; 0xf93d2
+ call 09362h ; e8 8c ff ; 0xf93d3 ahci.c:885
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf93d6
+ test ax, ax ; 85 c0 ; 0xf93d9 ahci.c:886
+ jne short 093e0h ; 75 03 ; 0xf93db
+ jmp near 094e9h ; e9 09 01 ; 0xf93dd
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf93e0 ahci.c:889
+ mov es, di ; 8e c7 ; 0xf93e3
+ mov word [es:bx+002aeh], ax ; 26 89 87 ae 02 ; 0xf93e5
+ mov byte [es:bx+002ach], 000h ; 26 c6 87 ac 02 00 ; 0xf93ea ahci.c:895
+ xor bx, bx ; 31 db ; 0xf93f0 ahci.c:897
+ mov es, ax ; 8e c0 ; 0xf93f2
+ mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf93f4 ahci.c:898
+ mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf93fa ahci.c:899
+ mov word [es:bx+00264h], 0c000h ; 26 c7 87 64 02 00 c0 ; 0xf93ff ahci.c:904
+ mov word [es:bx+00266h], strict word 0000ch ; 26 c7 87 66 02 0c 00 ; 0xf9406
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf940d ahci.c:252
+ xor cx, cx ; 31 c9 ; 0xf9410
+ mov dx, si ; 89 f2 ; 0xf9412
+ xchg cx, ax ; 91 ; 0xf9414
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9415
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9419
+ out DX, eax ; 66 ef ; 0xf941b
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf941d ahci.c:253
+ mov dx, bx ; 89 da ; 0xf9420
+ in eax, DX ; 66 ed ; 0xf9422
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9424
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9426
+ xchg dx, ax ; 92 ; 0xf942a
+ or AL, strict byte 001h ; 0c 01 ; 0xf942b
+ mov cx, dx ; 89 d1 ; 0xf942d
+ mov dx, bx ; 89 da ; 0xf942f
+ xchg cx, ax ; 91 ; 0xf9431
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9432
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9436
+ out DX, eax ; 66 ef ; 0xf9438
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf943a ahci.c:910
+ xor cx, cx ; 31 c9 ; 0xf943d
+ mov dx, si ; 89 f2 ; 0xf943f
+ xchg cx, ax ; 91 ; 0xf9441
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9442
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9446
+ out DX, eax ; 66 ef ; 0xf9448
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf944a
+ mov dx, bx ; 89 da ; 0xf944d
+ in eax, DX ; 66 ed ; 0xf944f
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9451
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9453
+ xchg dx, ax ; 92 ; 0xf9457
+ test AL, strict byte 001h ; a8 01 ; 0xf9458 ahci.c:911
+ jne short 0943ah ; 75 de ; 0xf945a
+ xor ax, ax ; 31 c0 ; 0xf945c ahci.c:913
+ xor cx, cx ; 31 c9 ; 0xf945e
+ mov dx, si ; 89 f2 ; 0xf9460
+ xchg cx, ax ; 91 ; 0xf9462
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9463
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9467
+ out DX, eax ; 66 ef ; 0xf9469
+ mov dx, bx ; 89 da ; 0xf946b
+ in eax, DX ; 66 ed ; 0xf946d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf946f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9471
+ xchg dx, ax ; 92 ; 0xf9475
+ xor bx, bx ; 31 db ; 0xf9476 ahci.c:914
+ push bx ; 53 ; 0xf9478
+ mov bx, strict word 0001fh ; bb 1f 00 ; 0xf9479
+ xor cx, cx ; 31 c9 ; 0xf947c
+ call 083cah ; e8 49 ef ; 0xf947e
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9481
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9483
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9486 ahci.c:919
+ jmp short 094adh ; eb 21 ; 0xf948a ahci.c:920
+ xor al, al ; 30 c0 ; 0xf948c ahci.c:272
+ test al, al ; 84 c0 ; 0xf948e ahci.c:273
+ je short 094a4h ; 74 12 ; 0xf9490
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf9492 ahci.c:925
+ xor bh, bh ; 30 ff ; 0xf9495
+ xor ax, ax ; 31 c0 ; 0xf9497
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9499
+ call 08e59h ; e8 ba f9 ; 0xf949c
+ dec byte [bp-00eh] ; fe 4e f2 ; 0xf949f ahci.c:926
+ je short 094e7h ; 74 43 ; 0xf94a2 ahci.c:927
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf94a4 ahci.c:930
+ cmp byte [bp-00ch], 020h ; 80 7e f4 20 ; 0xf94a7 ahci.c:931
+ jnc short 094e7h ; 73 3a ; 0xf94ab
+ mov cl, byte [bp-00ch] ; 8a 4e f4 ; 0xf94ad
+ xor ch, ch ; 30 ed ; 0xf94b0
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf94b2
+ xor di, di ; 31 ff ; 0xf94b5
+ jcxz 094bfh ; e3 06 ; 0xf94b7
+ sal bx, 1 ; d1 e3 ; 0xf94b9
+ rcl di, 1 ; d1 d7 ; 0xf94bb
+ loop 094b9h ; e2 fa ; 0xf94bd
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf94bf
+ xor cx, cx ; 31 c9 ; 0xf94c2
+ mov dx, si ; 89 f2 ; 0xf94c4
+ xchg cx, ax ; 91 ; 0xf94c6
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf94c7
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf94cb
+ out DX, eax ; 66 ef ; 0xf94cd
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf94cf
+ in eax, DX ; 66 ed ; 0xf94d2
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf94d4
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf94d6
+ xchg dx, ax ; 92 ; 0xf94da
+ test dx, di ; 85 fa ; 0xf94db
+ jne short 094e3h ; 75 04 ; 0xf94dd
+ test ax, bx ; 85 d8 ; 0xf94df
+ je short 0948ch ; 74 a9 ; 0xf94e1
+ mov AL, strict byte 001h ; b0 01 ; 0xf94e3
+ jmp short 0948eh ; eb a7 ; 0xf94e5
+ xor ax, ax ; 31 c0 ; 0xf94e7 ahci.c:933
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf94e9 ahci.c:934
+ pop di ; 5f ; 0xf94ec
+ pop si ; 5e ; 0xf94ed
+ pop dx ; 5a ; 0xf94ee
+ pop cx ; 59 ; 0xf94ef
+ pop bx ; 5b ; 0xf94f0
+ pop bp ; 5d ; 0xf94f1
+ retn ; c3 ; 0xf94f2
+ ; disGetNextSymbol 0xf94f3 LB 0x1ec5 -> off=0x17 cb=0000000000000139 uValue=00000000000f7f0a 'ahci_init'
+ db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0f0h, 095h, 0ceh, 095h, 0d4h, 095h, 0dah, 095h, 0e0h
+ db 095h, 0e6h, 095h, 0ech, 095h, 0f0h, 095h
+ahci_init: ; 0xf950a LB 0x139
+ push bp ; 55 ; 0xf950a ahci.c:939
+ mov bp, sp ; 89 e5 ; 0xf950b
+ push si ; 56 ; 0xf950d
+ push di ; 57 ; 0xf950e
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf950f
+ mov ax, 00601h ; b8 01 06 ; 0xf9512 ahci.c:943
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf9515
+ call 0adffh ; e8 e4 18 ; 0xf9518
+ mov dx, ax ; 89 c2 ; 0xf951b
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf951d ahci.c:944
+ je short 0956bh ; 74 49 ; 0xf9520
+ mov al, ah ; 88 e0 ; 0xf9522 ahci.c:949
+ mov byte [bp-008h], ah ; 88 66 f8 ; 0xf9524
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf9527 ahci.c:950
+ xor dh, ah ; 30 e6 ; 0xf952a ahci.c:955
+ xor ah, ah ; 30 e4 ; 0xf952c
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf952e
+ call 0ae32h ; e8 fe 18 ; 0xf9531
+ mov cl, al ; 88 c1 ; 0xf9534
+ test cl, cl ; 84 c9 ; 0xf9536 ahci.c:957
+ je short 0956eh ; 74 34 ; 0xf9538
+ mov bl, cl ; 88 cb ; 0xf953a ahci.c:959
+ xor bh, bh ; 30 ff ; 0xf953c
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf953e
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf9541
+ mov byte [bp-00bh], bh ; 88 7e f5 ; 0xf9544
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9547
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf954a
+ mov byte [bp-011h], bh ; 88 7e ef ; 0xf954d
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9550
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf9553
+ call 0ae32h ; e8 d9 18 ; 0xf9556
+ cmp AL, strict byte 012h ; 3c 12 ; 0xf9559 ahci.c:963
+ je short 0956eh ; 74 11 ; 0xf955b
+ mov bl, cl ; 88 cb ; 0xf955d ahci.c:967
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf955f
+ xor bh, bh ; 30 ff ; 0xf9561
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9563
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf9566
+ jmp short 09531h ; eb c6 ; 0xf9569 ahci.c:968
+ jmp near 0963ch ; e9 ce 00 ; 0xf956b
+ test cl, cl ; 84 c9 ; 0xf956e ahci.c:970
+ je short 0956bh ; 74 f9 ; 0xf9570
+ add cl, 002h ; 80 c1 02 ; 0xf9572 ahci.c:977
+ mov bl, cl ; 88 cb ; 0xf9575 ahci.c:979
+ xor bh, bh ; 30 ff ; 0xf9577
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9579
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf957c
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf957f
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9582
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf9585
+ mov byte [bp-013h], bh ; 88 7e ed ; 0xf9588
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf958b
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf958e
+ call 0ae32h ; e8 9e 18 ; 0xf9591
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf9594 ahci.c:980
+ jne short 0956bh ; 75 d3 ; 0xf9596
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf9598 ahci.c:983
+ mov bl, cl ; 88 cb ; 0xf959c ahci.c:985
+ add bl, 002h ; 80 c3 02 ; 0xf959e
+ xor bh, bh ; 30 ff ; 0xf95a1
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf95a3
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf95a6
+ call 0ae59h ; e8 ad 18 ; 0xf95a9
+ mov dx, ax ; 89 c2 ; 0xf95ac
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf95ae ahci.c:989
+ sub ax, strict word 00004h ; 2d 04 00 ; 0xf95b1
+ cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf95b4
+ jnbe short 095f0h ; 77 37 ; 0xf95b7
+ push CS ; 0e ; 0xf95b9
+ pop ES ; 07 ; 0xf95ba
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf95bb
+ mov di, 094f3h ; bf f3 94 ; 0xf95be
+ repne scasb ; f2 ae ; 0xf95c1
+ sal cx, 1 ; d1 e1 ; 0xf95c3
+ mov di, cx ; 89 cf ; 0xf95c5
+ mov ax, word [cs:di-06b06h] ; 2e 8b 85 fa 94 ; 0xf95c7
+ jmp ax ; ff e0 ; 0xf95cc
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf95ce ahci.c:992
+ jmp short 095f0h ; eb 1c ; 0xf95d2 ahci.c:993
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf95d4 ahci.c:995
+ jmp short 095f0h ; eb 16 ; 0xf95d8 ahci.c:996
+ mov byte [bp-006h], 018h ; c6 46 fa 18 ; 0xf95da ahci.c:998
+ jmp short 095f0h ; eb 10 ; 0xf95de ahci.c:999
+ mov byte [bp-006h], 01ch ; c6 46 fa 1c ; 0xf95e0 ahci.c:1001
+ jmp short 095f0h ; eb 0a ; 0xf95e4 ahci.c:1002
+ mov byte [bp-006h], 020h ; c6 46 fa 20 ; 0xf95e6 ahci.c:1004
+ jmp short 095f0h ; eb 04 ; 0xf95ea ahci.c:1005
+ mov byte [bp-006h], 024h ; c6 46 fa 24 ; 0xf95ec ahci.c:1007
+ mov CL, strict byte 004h ; b1 04 ; 0xf95f0 ahci.c:1016
+ mov si, dx ; 89 d6 ; 0xf95f2
+ shr si, CL ; d3 ee ; 0xf95f4
+ sal si, 1 ; d1 e6 ; 0xf95f6
+ sal si, 1 ; d1 e6 ; 0xf95f8
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf95fa ahci.c:1018
+ test al, al ; 84 c0 ; 0xf95fd
+ je short 0963ch ; 74 3b ; 0xf95ff
+ mov bl, al ; 88 c3 ; 0xf9601 ahci.c:1020
+ xor bh, bh ; 30 ff ; 0xf9603
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9605
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf9608
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf960b
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf960e
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf9611
+ mov byte [bp-015h], bh ; 88 7e eb ; 0xf9614
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9617
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf961a
+ call 0ae7eh ; e8 5e 18 ; 0xf961d
+ test AL, strict byte 001h ; a8 01 ; 0xf9620 ahci.c:1024
+ je short 0963ch ; 74 18 ; 0xf9622
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf9624 ahci.c:1027
+ add si, ax ; 01 c6 ; 0xf9626
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf9628 ahci.c:1030
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf962b
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf962e
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9631
+ call 0aebdh ; e8 86 18 ; 0xf9634
+ mov ax, si ; 89 f0 ; 0xf9637 ahci.c:1033
+ call 0939ch ; e8 60 fd ; 0xf9639
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf963c ahci.c:1047
+ pop di ; 5f ; 0xf963f
+ pop si ; 5e ; 0xf9640
+ pop bp ; 5d ; 0xf9641
+ retn ; c3 ; 0xf9642
+ ; disGetNextSymbol 0xf9643 LB 0x1d75 -> off=0x0 cb=000000000000007b uValue=00000000000f8043 'virtio_reg_set_bar_offset_length'
+virtio_reg_set_bar_offset_length: ; 0xf9643 LB 0x7b
+ push bp ; 55 ; 0xf9643 virtio.c:311
+ mov bp, sp ; 89 e5 ; 0xf9644
+ push cx ; 51 ; 0xf9646
+ push si ; 56 ; 0xf9647
+ push di ; 57 ; 0xf9648
+ mov si, ax ; 89 c6 ; 0xf9649
+ mov di, dx ; 89 d7 ; 0xf964b
+ mov cl, bl ; 88 d9 ; 0xf964d virtio.c:313
+ xor ch, ch ; 30 ed ; 0xf964f
+ mov es, dx ; 8e c2 ; 0xf9651
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9653
+ add bl, 004h ; 80 c3 04 ; 0xf9658
+ xor bh, bh ; 30 ff ; 0xf965b
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf965d
+ xor dh, dh ; 30 f6 ; 0xf9662
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf9664
+ xor ah, ah ; 30 e4 ; 0xf9669
+ call 0aedbh ; e8 6d 18 ; 0xf966b
+ push word [bp+006h] ; ff 76 06 ; 0xf966e virtio.c:314
+ push word [bp+004h] ; ff 76 04 ; 0xf9671
+ mov es, di ; 8e c7 ; 0xf9674
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9676
+ add bl, 008h ; 80 c3 08 ; 0xf967b
+ xor bh, bh ; 30 ff ; 0xf967e
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf9680
+ xor dh, dh ; 30 f6 ; 0xf9685
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf9687
+ xor ah, ah ; 30 e4 ; 0xf968c
+ call 0aef9h ; e8 68 18 ; 0xf968e
+ push word [bp+00ah] ; ff 76 0a ; 0xf9691 virtio.c:315
+ push word [bp+008h] ; ff 76 08 ; 0xf9694
+ mov es, di ; 8e c7 ; 0xf9697
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9699
+ add bl, 00ch ; 80 c3 0c ; 0xf969e
+ xor bh, bh ; 30 ff ; 0xf96a1
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf96a3
+ xor dh, dh ; 30 f6 ; 0xf96a8
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf96aa
+ xor ah, ah ; 30 e4 ; 0xf96af
+ call 0aef9h ; e8 45 18 ; 0xf96b1
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf96b4 virtio.c:316
+ pop di ; 5f ; 0xf96b7
+ pop si ; 5e ; 0xf96b8
+ pop cx ; 59 ; 0xf96b9
+ pop bp ; 5d ; 0xf96ba
+ retn 00008h ; c2 08 00 ; 0xf96bb
+ ; disGetNextSymbol 0xf96be LB 0x1cfa -> off=0x0 cb=0000000000000035 uValue=00000000000f80be 'virtio_reg_common_access_prepare'
+virtio_reg_common_access_prepare: ; 0xf96be LB 0x35
+ push bp ; 55 ; 0xf96be virtio.c:318
+ mov bp, sp ; 89 e5 ; 0xf96bf
+ push si ; 56 ; 0xf96c1
+ mov si, ax ; 89 c6 ; 0xf96c2
+ mov es, dx ; 8e c2 ; 0xf96c4
+ push word [bp+006h] ; ff 76 06 ; 0xf96c6 virtio.c:320
+ push word [bp+004h] ; ff 76 04 ; 0xf96c9
+ xor dx, dx ; 31 d2 ; 0xf96cc
+ mov ax, word [es:si+00080h] ; 26 8b 84 80 00 ; 0xf96ce
+ add ax, bx ; 01 d8 ; 0xf96d3
+ mov bx, word [es:si+00082h] ; 26 8b 9c 82 00 ; 0xf96d5
+ adc bx, dx ; 11 d3 ; 0xf96da
+ push bx ; 53 ; 0xf96dc
+ push ax ; 50 ; 0xf96dd
+ mov bl, byte [es:si+07ch] ; 26 8a 5c 7c ; 0xf96de
+ xor bh, bh ; 30 ff ; 0xf96e2
+ mov ax, si ; 89 f0 ; 0xf96e4
+ mov dx, es ; 8c c2 ; 0xf96e6
+ call 09643h ; e8 58 ff ; 0xf96e8
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf96eb virtio.c:324
+ pop si ; 5e ; 0xf96ee
+ pop bp ; 5d ; 0xf96ef
+ retn 00004h ; c2 04 00 ; 0xf96f0
+ ; disGetNextSymbol 0xf96f3 LB 0x1cc5 -> off=0x0 cb=0000000000000036 uValue=00000000000f80f3 'virtio_reg_dev_access_prepare'
+virtio_reg_dev_access_prepare: ; 0xf96f3 LB 0x36
+ push bp ; 55 ; 0xf96f3 virtio.c:326
+ mov bp, sp ; 89 e5 ; 0xf96f4
+ push si ; 56 ; 0xf96f6
+ mov si, ax ; 89 c6 ; 0xf96f7
+ mov es, dx ; 8e c2 ; 0xf96f9
+ push word [bp+006h] ; ff 76 06 ; 0xf96fb virtio.c:328
+ push word [bp+004h] ; ff 76 04 ; 0xf96fe
+ xor dx, dx ; 31 d2 ; 0xf9701
+ mov ax, word [es:si+000a4h] ; 26 8b 84 a4 00 ; 0xf9703
+ add ax, bx ; 01 d8 ; 0xf9708
+ mov bx, word [es:si+000a6h] ; 26 8b 9c a6 00 ; 0xf970a
+ adc bx, dx ; 11 d3 ; 0xf970f
+ push bx ; 53 ; 0xf9711
+ push ax ; 50 ; 0xf9712
+ mov bl, byte [es:si+000a0h] ; 26 8a 9c a0 00 ; 0xf9713
+ xor bh, bh ; 30 ff ; 0xf9718
+ mov ax, si ; 89 f0 ; 0xf971a
+ mov dx, es ; 8c c2 ; 0xf971c
+ call 09643h ; e8 22 ff ; 0xf971e
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9721 virtio.c:332
+ pop si ; 5e ; 0xf9724
+ pop bp ; 5d ; 0xf9725
+ retn 00004h ; c2 04 00 ; 0xf9726
+ ; disGetNextSymbol 0xf9729 LB 0x1c8f -> off=0x0 cb=0000000000000036 uValue=00000000000f8129 'virtio_reg_notify_access_prepare'
+virtio_reg_notify_access_prepare: ; 0xf9729 LB 0x36
+ push bp ; 55 ; 0xf9729 virtio.c:334
+ mov bp, sp ; 89 e5 ; 0xf972a
+ push si ; 56 ; 0xf972c
+ mov si, ax ; 89 c6 ; 0xf972d
+ mov es, dx ; 8e c2 ; 0xf972f
+ push word [bp+006h] ; ff 76 06 ; 0xf9731 virtio.c:336
+ push word [bp+004h] ; ff 76 04 ; 0xf9734
+ xor dx, dx ; 31 d2 ; 0xf9737
+ mov ax, word [es:si+0008ch] ; 26 8b 84 8c 00 ; 0xf9739
+ add ax, bx ; 01 d8 ; 0xf973e
+ mov bx, word [es:si+0008eh] ; 26 8b 9c 8e 00 ; 0xf9740
+ adc bx, dx ; 11 d3 ; 0xf9745
+ push bx ; 53 ; 0xf9747
+ push ax ; 50 ; 0xf9748
+ mov bl, byte [es:si+00088h] ; 26 8a 9c 88 00 ; 0xf9749
+ xor bh, bh ; 30 ff ; 0xf974e
+ mov ax, si ; 89 f0 ; 0xf9750
+ mov dx, es ; 8c c2 ; 0xf9752
+ call 09643h ; e8 ec fe ; 0xf9754
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9757 virtio.c:340
+ pop si ; 5e ; 0xf975a
+ pop bp ; 5d ; 0xf975b
+ retn 00004h ; c2 04 00 ; 0xf975c
+ ; disGetNextSymbol 0xf975f LB 0x1c59 -> off=0x0 cb=0000000000000024 uValue=00000000000f815f 'virtio_reg_isr_prepare'
+virtio_reg_isr_prepare: ; 0xf975f LB 0x24
+ push bp ; 55 ; 0xf975f virtio.c:342
+ mov bp, sp ; 89 e5 ; 0xf9760
+ push si ; 56 ; 0xf9762
+ mov si, ax ; 89 c6 ; 0xf9763
+ mov es, dx ; 8e c2 ; 0xf9765
+ push cx ; 51 ; 0xf9767 virtio.c:344
+ push bx ; 53 ; 0xf9768
+ push word [es:si+0009ah] ; 26 ff b4 9a 00 ; 0xf9769
+ push word [es:si+00098h] ; 26 ff b4 98 00 ; 0xf976e
+ mov bl, byte [es:si+00094h] ; 26 8a 9c 94 00 ; 0xf9773
+ xor bh, bh ; 30 ff ; 0xf9778
+ call 09643h ; e8 c6 fe ; 0xf977a
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf977d virtio.c:348
+ pop si ; 5e ; 0xf9780
+ pop bp ; 5d ; 0xf9781
+ retn ; c3 ; 0xf9782
+ ; disGetNextSymbol 0xf9783 LB 0x1c35 -> off=0x0 cb=0000000000000039 uValue=00000000000f8183 'virtio_reg_common_read_u8'
+virtio_reg_common_read_u8: ; 0xf9783 LB 0x39
+ push bp ; 55 ; 0xf9783 virtio.c:350
+ mov bp, sp ; 89 e5 ; 0xf9784
+ push cx ; 51 ; 0xf9786
+ push si ; 56 ; 0xf9787
+ mov si, ax ; 89 c6 ; 0xf9788
+ mov cx, dx ; 89 d1 ; 0xf978a
+ xor ax, ax ; 31 c0 ; 0xf978c virtio.c:352
+ push ax ; 50 ; 0xf978e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf978f
+ push ax ; 50 ; 0xf9792
+ mov ax, si ; 89 f0 ; 0xf9793
+ call 096beh ; e8 26 ff ; 0xf9795
+ mov es, cx ; 8e c1 ; 0xf9798 virtio.c:353
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf979a
+ add bl, 010h ; 80 c3 10 ; 0xf979f
+ xor bh, bh ; 30 ff ; 0xf97a2
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf97a4
+ xor dh, dh ; 30 f6 ; 0xf97a9
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf97ab
+ xor ah, ah ; 30 e4 ; 0xf97b0
+ call 0ae32h ; e8 7d 16 ; 0xf97b2
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf97b5 virtio.c:354
+ pop si ; 5e ; 0xf97b8
+ pop cx ; 59 ; 0xf97b9
+ pop bp ; 5d ; 0xf97ba
+ retn ; c3 ; 0xf97bb
+ ; disGetNextSymbol 0xf97bc LB 0x1bfc -> off=0x0 cb=000000000000003b uValue=00000000000f81bc 'virtio_reg_common_write_u8'
+virtio_reg_common_write_u8: ; 0xf97bc LB 0x3b
+ push bp ; 55 ; 0xf97bc virtio.c:356
+ mov bp, sp ; 89 e5 ; 0xf97bd
+ push si ; 56 ; 0xf97bf
+ push di ; 57 ; 0xf97c0
+ mov si, ax ; 89 c6 ; 0xf97c1
+ mov di, dx ; 89 d7 ; 0xf97c3
+ xor ax, ax ; 31 c0 ; 0xf97c5 virtio.c:358
+ push ax ; 50 ; 0xf97c7
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf97c8
+ push ax ; 50 ; 0xf97cb
+ mov ax, si ; 89 f0 ; 0xf97cc
+ call 096beh ; e8 ed fe ; 0xf97ce
+ xor ch, ch ; 30 ed ; 0xf97d1 virtio.c:359
+ mov es, di ; 8e c7 ; 0xf97d3
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf97d5
+ add bl, 010h ; 80 c3 10 ; 0xf97da
+ xor bh, bh ; 30 ff ; 0xf97dd
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf97df
+ xor dh, dh ; 30 f6 ; 0xf97e4
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf97e6
+ xor ah, ah ; 30 e4 ; 0xf97eb
+ call 0aedbh ; e8 eb 16 ; 0xf97ed
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf97f0 virtio.c:360
+ pop di ; 5f ; 0xf97f3
+ pop si ; 5e ; 0xf97f4
+ pop bp ; 5d ; 0xf97f5
+ retn ; c3 ; 0xf97f6
+ ; disGetNextSymbol 0xf97f7 LB 0x1bc1 -> off=0x0 cb=0000000000000039 uValue=00000000000f81f7 'virtio_reg_common_read_u16'
+virtio_reg_common_read_u16: ; 0xf97f7 LB 0x39
+ push bp ; 55 ; 0xf97f7 virtio.c:362
+ mov bp, sp ; 89 e5 ; 0xf97f8
+ push cx ; 51 ; 0xf97fa
+ push si ; 56 ; 0xf97fb
+ mov si, ax ; 89 c6 ; 0xf97fc
+ mov cx, dx ; 89 d1 ; 0xf97fe
+ xor ax, ax ; 31 c0 ; 0xf9800 virtio.c:364
+ push ax ; 50 ; 0xf9802
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf9803
+ push ax ; 50 ; 0xf9806
+ mov ax, si ; 89 f0 ; 0xf9807
+ call 096beh ; e8 b2 fe ; 0xf9809
+ mov es, cx ; 8e c1 ; 0xf980c virtio.c:365
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf980e
+ add bl, 010h ; 80 c3 10 ; 0xf9813
+ xor bh, bh ; 30 ff ; 0xf9816
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf9818
+ xor dh, dh ; 30 f6 ; 0xf981d
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf981f
+ xor ah, ah ; 30 e4 ; 0xf9824
+ call 0ae59h ; e8 30 16 ; 0xf9826
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9829 virtio.c:366
+ pop si ; 5e ; 0xf982c
+ pop cx ; 59 ; 0xf982d
+ pop bp ; 5d ; 0xf982e
+ retn ; c3 ; 0xf982f
+ ; disGetNextSymbol 0xf9830 LB 0x1b88 -> off=0x0 cb=0000000000000039 uValue=00000000000f8230 'virtio_reg_common_write_u16'
+virtio_reg_common_write_u16: ; 0xf9830 LB 0x39
+ push bp ; 55 ; 0xf9830 virtio.c:368
+ mov bp, sp ; 89 e5 ; 0xf9831
+ push si ; 56 ; 0xf9833
+ push di ; 57 ; 0xf9834
+ mov si, ax ; 89 c6 ; 0xf9835
+ mov di, dx ; 89 d7 ; 0xf9837
+ xor ax, ax ; 31 c0 ; 0xf9839 virtio.c:370
+ push ax ; 50 ; 0xf983b
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf983c
+ push ax ; 50 ; 0xf983f
+ mov ax, si ; 89 f0 ; 0xf9840
+ call 096beh ; e8 79 fe ; 0xf9842
+ mov es, di ; 8e c7 ; 0xf9845 virtio.c:371
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9847
+ add bl, 010h ; 80 c3 10 ; 0xf984c
+ xor bh, bh ; 30 ff ; 0xf984f
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf9851
+ xor dh, dh ; 30 f6 ; 0xf9856
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf9858
+ xor ah, ah ; 30 e4 ; 0xf985d
+ call 0aebdh ; e8 5b 16 ; 0xf985f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9862 virtio.c:372
+ pop di ; 5f ; 0xf9865
+ pop si ; 5e ; 0xf9866
+ pop bp ; 5d ; 0xf9867
+ retn ; c3 ; 0xf9868
+ ; disGetNextSymbol 0xf9869 LB 0x1b4f -> off=0x0 cb=0000000000000041 uValue=00000000000f8269 'virtio_reg_common_write_u32'
+virtio_reg_common_write_u32: ; 0xf9869 LB 0x41
+ push bp ; 55 ; 0xf9869 virtio.c:374
+ mov bp, sp ; 89 e5 ; 0xf986a
+ push cx ; 51 ; 0xf986c
+ push si ; 56 ; 0xf986d
+ mov si, ax ; 89 c6 ; 0xf986e
+ mov cx, dx ; 89 d1 ; 0xf9870
+ xor ax, ax ; 31 c0 ; 0xf9872 virtio.c:376
+ push ax ; 50 ; 0xf9874
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9875
+ push ax ; 50 ; 0xf9878
+ mov ax, si ; 89 f0 ; 0xf9879
+ call 096beh ; e8 40 fe ; 0xf987b
+ push word [bp+006h] ; ff 76 06 ; 0xf987e virtio.c:377
+ push word [bp+004h] ; ff 76 04 ; 0xf9881
+ mov es, cx ; 8e c1 ; 0xf9884
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9886
+ add bl, 010h ; 80 c3 10 ; 0xf988b
+ xor bh, bh ; 30 ff ; 0xf988e
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf9890
+ xor dh, dh ; 30 f6 ; 0xf9895
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf9897
+ xor ah, ah ; 30 e4 ; 0xf989c
+ call 0aef9h ; e8 58 16 ; 0xf989e
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf98a1 virtio.c:378
+ pop si ; 5e ; 0xf98a4
+ pop cx ; 59 ; 0xf98a5
+ pop bp ; 5d ; 0xf98a6
+ retn 00004h ; c2 04 00 ; 0xf98a7
+ ; disGetNextSymbol 0xf98aa LB 0x1b0e -> off=0x0 cb=0000000000000039 uValue=00000000000f82aa 'virtio_reg_dev_cfg_read_u32'
+virtio_reg_dev_cfg_read_u32: ; 0xf98aa LB 0x39
+ push bp ; 55 ; 0xf98aa virtio.c:380
+ mov bp, sp ; 89 e5 ; 0xf98ab
+ push cx ; 51 ; 0xf98ad
+ push si ; 56 ; 0xf98ae
+ mov si, ax ; 89 c6 ; 0xf98af
+ mov cx, dx ; 89 d1 ; 0xf98b1
+ xor ax, ax ; 31 c0 ; 0xf98b3 virtio.c:382
+ push ax ; 50 ; 0xf98b5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf98b6
+ push ax ; 50 ; 0xf98b9
+ mov ax, si ; 89 f0 ; 0xf98ba
+ call 096f3h ; e8 34 fe ; 0xf98bc
+ mov es, cx ; 8e c1 ; 0xf98bf virtio.c:383
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf98c1
+ add bl, 010h ; 80 c3 10 ; 0xf98c6
+ xor bh, bh ; 30 ff ; 0xf98c9
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf98cb
+ xor dh, dh ; 30 f6 ; 0xf98d0
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf98d2
+ xor ah, ah ; 30 e4 ; 0xf98d7
+ call 0ae7eh ; e8 a2 15 ; 0xf98d9
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf98dc virtio.c:384
+ pop si ; 5e ; 0xf98df
+ pop cx ; 59 ; 0xf98e0
+ pop bp ; 5d ; 0xf98e1
+ retn ; c3 ; 0xf98e2
+ ; disGetNextSymbol 0xf98e3 LB 0x1ad5 -> off=0x0 cb=0000000000000041 uValue=00000000000f82e3 'virtio_reg_dev_cfg_write_u32'
+virtio_reg_dev_cfg_write_u32: ; 0xf98e3 LB 0x41
+ push bp ; 55 ; 0xf98e3 virtio.c:386
+ mov bp, sp ; 89 e5 ; 0xf98e4
+ push cx ; 51 ; 0xf98e6
+ push si ; 56 ; 0xf98e7
+ mov si, ax ; 89 c6 ; 0xf98e8
+ mov cx, dx ; 89 d1 ; 0xf98ea
+ xor ax, ax ; 31 c0 ; 0xf98ec virtio.c:388
+ push ax ; 50 ; 0xf98ee
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf98ef
+ push ax ; 50 ; 0xf98f2
+ mov ax, si ; 89 f0 ; 0xf98f3
+ call 096f3h ; e8 fb fd ; 0xf98f5
+ push word [bp+006h] ; ff 76 06 ; 0xf98f8 virtio.c:389
+ push word [bp+004h] ; ff 76 04 ; 0xf98fb
+ mov es, cx ; 8e c1 ; 0xf98fe
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9900
+ add bl, 010h ; 80 c3 10 ; 0xf9905
+ xor bh, bh ; 30 ff ; 0xf9908
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf990a
+ xor dh, dh ; 30 f6 ; 0xf990f
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf9911
+ xor ah, ah ; 30 e4 ; 0xf9916
+ call 0aef9h ; e8 de 15 ; 0xf9918
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf991b virtio.c:390
+ pop si ; 5e ; 0xf991e
+ pop cx ; 59 ; 0xf991f
+ pop bp ; 5d ; 0xf9920
+ retn 00004h ; c2 04 00 ; 0xf9921
+ ; disGetNextSymbol 0xf9924 LB 0x1a94 -> off=0x0 cb=0000000000000039 uValue=00000000000f8324 'virtio_reg_notify_write_u16'
+virtio_reg_notify_write_u16: ; 0xf9924 LB 0x39
+ push bp ; 55 ; 0xf9924 virtio.c:392
+ mov bp, sp ; 89 e5 ; 0xf9925
+ push si ; 56 ; 0xf9927
+ push di ; 57 ; 0xf9928
+ mov si, ax ; 89 c6 ; 0xf9929
+ mov di, dx ; 89 d7 ; 0xf992b
+ xor ax, ax ; 31 c0 ; 0xf992d virtio.c:394
+ push ax ; 50 ; 0xf992f
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf9930
+ push ax ; 50 ; 0xf9933
+ mov ax, si ; 89 f0 ; 0xf9934
+ call 09729h ; e8 f0 fd ; 0xf9936
+ mov es, di ; 8e c7 ; 0xf9939 virtio.c:395
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf993b
+ add bl, 010h ; 80 c3 10 ; 0xf9940
+ xor bh, bh ; 30 ff ; 0xf9943
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf9945
+ xor dh, dh ; 30 f6 ; 0xf994a
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf994c
+ xor ah, ah ; 30 e4 ; 0xf9951
+ call 0aebdh ; e8 67 15 ; 0xf9953
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9956 virtio.c:396
+ pop di ; 5f ; 0xf9959
+ pop si ; 5e ; 0xf995a
+ pop bp ; 5d ; 0xf995b
+ retn ; c3 ; 0xf995c
+ ; disGetNextSymbol 0xf995d LB 0x1a5b -> off=0x0 cb=0000000000000039 uValue=00000000000f835d 'virtio_reg_isr_read_u8'
+virtio_reg_isr_read_u8: ; 0xf995d LB 0x39
+ push bp ; 55 ; 0xf995d virtio.c:398
+ mov bp, sp ; 89 e5 ; 0xf995e
+ push bx ; 53 ; 0xf9960
+ push cx ; 51 ; 0xf9961
+ push si ; 56 ; 0xf9962
+ push di ; 57 ; 0xf9963
+ mov si, ax ; 89 c6 ; 0xf9964
+ mov di, dx ; 89 d7 ; 0xf9966
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf9968 virtio.c:400
+ xor cx, cx ; 31 c9 ; 0xf996b
+ call 0975fh ; e8 ef fd ; 0xf996d
+ mov es, di ; 8e c7 ; 0xf9970 virtio.c:401
+ mov bl, byte [es:si+000ach] ; 26 8a 9c ac 00 ; 0xf9972
+ add bl, 010h ; 80 c3 10 ; 0xf9977
+ xor bh, bh ; 30 ff ; 0xf997a
+ mov dl, byte [es:si+000b3h] ; 26 8a 94 b3 00 ; 0xf997c
+ xor dh, dh ; 30 f6 ; 0xf9981
+ mov al, byte [es:si+000b2h] ; 26 8a 84 b2 00 ; 0xf9983
+ xor ah, ah ; 30 e4 ; 0xf9988
+ call 0ae32h ; e8 a5 14 ; 0xf998a
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf998d virtio.c:402
+ pop di ; 5f ; 0xf9990
+ pop si ; 5e ; 0xf9991
+ pop cx ; 59 ; 0xf9992
+ pop bx ; 5b ; 0xf9993
+ pop bp ; 5d ; 0xf9994
+ retn ; c3 ; 0xf9995
+ ; disGetNextSymbol 0xf9996 LB 0x1a22 -> off=0x0 cb=000000000000003a uValue=00000000000f8396 'virtio_mem_alloc'
+virtio_mem_alloc: ; 0xf9996 LB 0x3a
+ push bx ; 53 ; 0xf9996 virtio.c:407
+ push cx ; 51 ; 0xf9997
+ push dx ; 52 ; 0xf9998
+ push di ; 57 ; 0xf9999
+ push bp ; 55 ; 0xf999a
+ mov bp, sp ; 89 e5 ; 0xf999b
+ mov di, 00413h ; bf 13 04 ; 0xf999d virtio.c:48
+ xor ax, ax ; 31 c0 ; 0xf99a0
+ mov es, ax ; 8e c0 ; 0xf99a2
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf99a4
+ test ax, ax ; 85 c0 ; 0xf99a7 virtio.c:416
+ je short 099cah ; 74 1f ; 0xf99a9
+ dec ax ; 48 ; 0xf99ab virtio.c:417
+ mov bx, ax ; 89 c3 ; 0xf99ac
+ xor dx, dx ; 31 d2 ; 0xf99ae virtio.c:420
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf99b0
+ sal ax, 1 ; d1 e0 ; 0xf99b3
+ rcl dx, 1 ; d1 d2 ; 0xf99b5
+ loop 099b3h ; e2 fa ; 0xf99b7
+ mov di, dx ; 89 d7 ; 0xf99b9
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf99bb
+ shr di, 1 ; d1 ef ; 0xf99be
+ rcr ax, 1 ; d1 d8 ; 0xf99c0
+ loop 099beh ; e2 fa ; 0xf99c2
+ mov di, 00413h ; bf 13 04 ; 0xf99c4 virtio.c:53
+ mov word [es:di], bx ; 26 89 1d ; 0xf99c7
+ pop bp ; 5d ; 0xf99ca virtio.c:425
+ pop di ; 5f ; 0xf99cb
+ pop dx ; 5a ; 0xf99cc
+ pop cx ; 59 ; 0xf99cd
+ pop bx ; 5b ; 0xf99ce
+ retn ; c3 ; 0xf99cf
+ ; disGetNextSymbol 0xf99d0 LB 0x19e8 -> off=0x0 cb=000000000000001e uValue=00000000000f83d0 'virtio_addr_to_phys'
+virtio_addr_to_phys: ; 0xf99d0 LB 0x1e
+ push bx ; 53 ; 0xf99d0 virtio.c:430
+ push cx ; 51 ; 0xf99d1
+ push bp ; 55 ; 0xf99d2
+ mov bp, sp ; 89 e5 ; 0xf99d3
+ mov bx, ax ; 89 c3 ; 0xf99d5
+ mov ax, dx ; 89 d0 ; 0xf99d7
+ xor dx, dx ; 31 d2 ; 0xf99d9 virtio.c:432
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf99db
+ sal ax, 1 ; d1 e0 ; 0xf99de
+ rcl dx, 1 ; d1 d2 ; 0xf99e0
+ loop 099deh ; e2 fa ; 0xf99e2
+ xor cx, cx ; 31 c9 ; 0xf99e4
+ add ax, bx ; 01 d8 ; 0xf99e6
+ adc dx, cx ; 11 ca ; 0xf99e8
+ pop bp ; 5d ; 0xf99ea virtio.c:433
+ pop cx ; 59 ; 0xf99eb
+ pop bx ; 5b ; 0xf99ec
+ retn ; c3 ; 0xf99ed
+ ; disGetNextSymbol 0xf99ee LB 0x19ca -> off=0x0 cb=0000000000000169 uValue=00000000000f83ee 'virtio_scsi_cmd_data_out'
+virtio_scsi_cmd_data_out: ; 0xf99ee LB 0x169
+ push bp ; 55 ; 0xf99ee virtio.c:435
+ mov bp, sp ; 89 e5 ; 0xf99ef
+ push cx ; 51 ; 0xf99f1
+ push si ; 56 ; 0xf99f2
+ push di ; 57 ; 0xf99f3
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf99f4
+ mov si, ax ; 89 c6 ; 0xf99f7
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf99f9
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf99fc
+ mov es, dx ; 8e c2 ; 0xf99ff virtio.c:438
+ mov ax, word [es:si+05eh] ; 26 8b 44 5e ; 0xf9a01
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9a05
+ mov ax, si ; 89 f0 ; 0xf9a08 virtio.c:440
+ add ax, 000b6h ; 05 b6 00 ; 0xf9a0a
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9a0d
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf9a10
+ xor bx, bx ; 31 db ; 0xf9a13
+ call 0b090h ; e8 78 16 ; 0xf9a15
+ lea di, [si+000dah] ; 8d bc da 00 ; 0xf9a18 virtio.c:441
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf9a1c
+ xor bx, bx ; 31 db ; 0xf9a1f
+ mov ax, di ; 89 f8 ; 0xf9a21
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9a23
+ call 0b090h ; e8 67 16 ; 0xf9a26
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9a29 virtio.c:443
+ mov byte [es:si+000b6h], 001h ; 26 c6 84 b6 00 01 ; 0xf9a2c
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9a32 virtio.c:444
+ mov byte [es:si+000b7h], al ; 26 88 84 b7 00 ; 0xf9a35
+ mov word [es:si+000b8h], strict word 00000h ; 26 c7 84 b8 00 00 00 ; 0xf9a3a virtio.c:445
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9a41 virtio.c:447
+ xor ah, ah ; 30 e4 ; 0xf9a44
+ push ax ; 50 ; 0xf9a46
+ lea ax, [si+000c9h] ; 8d 84 c9 00 ; 0xf9a47
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9a4b
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf9a4e
+ mov dx, es ; 8c c2 ; 0xf9a51
+ call 0b0a0h ; e8 4a 16 ; 0xf9a53
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9a56 virtio.c:450
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9a59
+ call 099d0h ; e8 71 ff ; 0xf9a5c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9a5f
+ mov word [es:si], ax ; 26 89 04 ; 0xf9a62
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf9a65
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf9a69 virtio.c:451
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf9a6f
+ mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf9a75 virtio.c:452
+ mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf9a7b
+ mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf9a81 virtio.c:453
+ mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf9a87 virtio.c:454
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9a8d virtio.c:456
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9a90
+ call 099d0h ; e8 3a ff ; 0xf9a93
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9a96
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf9a99
+ mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf9a9d
+ mov word [es:si+014h], strict word 00000h ; 26 c7 44 14 00 00 ; 0xf9aa1 virtio.c:457
+ mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf9aa7
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9aad virtio.c:458
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf9ab0
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9ab4
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf9ab7
+ mov word [es:si+01ch], strict word 00001h ; 26 c7 44 1c 01 00 ; 0xf9abb virtio.c:459
+ mov word [es:si+01eh], strict word 00002h ; 26 c7 44 1e 02 00 ; 0xf9ac1 virtio.c:460
+ mov ax, di ; 89 f8 ; 0xf9ac7 virtio.c:462
+ mov dx, es ; 8c c2 ; 0xf9ac9
+ call 099d0h ; e8 02 ff ; 0xf9acb
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9ace
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf9ad1
+ mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf9ad5
+ mov word [es:si+024h], strict word 00000h ; 26 c7 44 24 00 00 ; 0xf9ad9 virtio.c:463
+ mov word [es:si+026h], strict word 00000h ; 26 c7 44 26 00 00 ; 0xf9adf
+ mov word [es:si+028h], strict word 0002ch ; 26 c7 44 28 2c 00 ; 0xf9ae5 virtio.c:464
+ mov word [es:si+02ah], strict word 00000h ; 26 c7 44 2a 00 00 ; 0xf9aeb
+ mov word [es:si+02ch], strict word 00002h ; 26 c7 44 2c 02 00 ; 0xf9af1 virtio.c:465
+ mov word [es:si+02eh], strict word 00000h ; 26 c7 44 2e 00 00 ; 0xf9af7 virtio.c:466
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9afd virtio.c:469
+ xor dx, dx ; 31 d2 ; 0xf9b01
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf9b03
+ div bx ; f7 f3 ; 0xf9b06
+ sal dx, 1 ; d1 e2 ; 0xf9b08
+ mov di, si ; 89 f7 ; 0xf9b0a
+ add di, dx ; 01 d7 ; 0xf9b0c
+ mov word [es:di+054h], strict word 00000h ; 26 c7 45 54 00 00 ; 0xf9b0e
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9b14 virtio.c:470
+ inc word [es:si+052h] ; 26 ff 44 52 ; 0xf9b18
+ mov bx, word [es:si+078h] ; 26 8b 5c 78 ; 0xf9b1c virtio.c:474
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9b20
+ mov ax, si ; 89 f0 ; 0xf9b23
+ mov dx, es ; 8c c2 ; 0xf9b25
+ call 09924h ; e8 fa fd ; 0xf9b27
+ les ax, [bp-00ch] ; c4 46 f4 ; 0xf9b2a virtio.c:477
+ cmp ax, word [es:si+05eh] ; 26 3b 44 5e ; 0xf9b2d
+ je short 09b2ah ; 74 f7 ; 0xf9b31
+ mov ax, si ; 89 f0 ; 0xf9b33 virtio.c:482
+ mov dx, es ; 8c c2 ; 0xf9b35
+ call 0995dh ; e8 23 fe ; 0xf9b37
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9b3a virtio.c:484
+ mov al, byte [es:si+000e5h] ; 26 8a 84 e5 00 ; 0xf9b3d
+ test al, al ; 84 c0 ; 0xf9b42
+ je short 09b4bh ; 74 05 ; 0xf9b44
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9b46 virtio.c:485
+ jmp short 09b4dh ; eb 02 ; 0xf9b49
+ xor ah, ah ; 30 e4 ; 0xf9b4b virtio.c:487
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9b4d virtio.c:488
+ pop di ; 5f ; 0xf9b50
+ pop si ; 5e ; 0xf9b51
+ pop cx ; 59 ; 0xf9b52
+ pop bp ; 5d ; 0xf9b53
+ retn 0000eh ; c2 0e 00 ; 0xf9b54
+ ; disGetNextSymbol 0xf9b57 LB 0x1861 -> off=0x0 cb=0000000000000222 uValue=00000000000f8557 'virtio_scsi_cmd_data_in'
+virtio_scsi_cmd_data_in: ; 0xf9b57 LB 0x222
+ push bp ; 55 ; 0xf9b57 virtio.c:490
+ mov bp, sp ; 89 e5 ; 0xf9b58
+ push cx ; 51 ; 0xf9b5a
+ push si ; 56 ; 0xf9b5b
+ push di ; 57 ; 0xf9b5c
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9b5d
+ mov si, ax ; 89 c6 ; 0xf9b60
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf9b62
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9b65
+ mov es, dx ; 8e c2 ; 0xf9b68 virtio.c:494
+ mov ax, word [es:si+05eh] ; 26 8b 44 5e ; 0xf9b6a
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9b6e
+ lea di, [si+000b6h] ; 8d bc b6 00 ; 0xf9b71 virtio.c:497
+ mov cx, strict word 00024h ; b9 24 00 ; 0xf9b75
+ xor bx, bx ; 31 db ; 0xf9b78
+ mov ax, di ; 89 f8 ; 0xf9b7a
+ call 0b090h ; e8 11 15 ; 0xf9b7c
+ mov ax, si ; 89 f0 ; 0xf9b7f virtio.c:498
+ add ax, 000dah ; 05 da 00 ; 0xf9b81
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9b84
+ mov cx, strict word 0002ch ; b9 2c 00 ; 0xf9b87
+ xor bx, bx ; 31 db ; 0xf9b8a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b8c
+ call 0b090h ; e8 fe 14 ; 0xf9b8f
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9b92 virtio.c:500
+ mov byte [es:si+000b6h], 001h ; 26 c6 84 b6 00 01 ; 0xf9b95
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9b9b virtio.c:501
+ mov byte [es:si+000b7h], al ; 26 88 84 b7 00 ; 0xf9b9e
+ mov word [es:si+000b8h], strict word 00000h ; 26 c7 84 b8 00 00 00 ; 0xf9ba3 virtio.c:502
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9baa virtio.c:504
+ xor ah, ah ; 30 e4 ; 0xf9bad
+ push ax ; 50 ; 0xf9baf
+ lea ax, [si+000c9h] ; 8d 84 c9 00 ; 0xf9bb0
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9bb4
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf9bb7
+ mov dx, es ; 8c c2 ; 0xf9bba
+ call 0b0a0h ; e8 e1 14 ; 0xf9bbc
+ mov ax, di ; 89 f8 ; 0xf9bbf virtio.c:507
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9bc1
+ call 099d0h ; e8 09 fe ; 0xf9bc4
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9bc7
+ mov word [es:si], ax ; 26 89 04 ; 0xf9bca
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf9bcd
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf9bd1 virtio.c:508
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf9bd7
+ mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf9bdd virtio.c:509
+ mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf9be3
+ mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf9be9 virtio.c:510
+ mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf9bef virtio.c:511
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9bf5 virtio.c:515
+ mov dx, es ; 8c c2 ; 0xf9bf8
+ call 099d0h ; e8 d3 fd ; 0xf9bfa
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9bfd
+ lea bx, [si+010h] ; 8d 5c 10 ; 0xf9c00
+ mov word [es:bx], ax ; 26 89 07 ; 0xf9c03
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf9c06
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf9c0a virtio.c:516
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9c10
+ mov word [es:bx+008h], strict word 0002ch ; 26 c7 47 08 2c 00 ; 0xf9c16 virtio.c:517
+ mov word [es:bx+00ah], strict word 00000h ; 26 c7 47 0a 00 00 ; 0xf9c1c
+ mov word [es:bx+00ch], strict word 00003h ; 26 c7 47 0c 03 00 ; 0xf9c22 virtio.c:518
+ mov word [es:bx+00eh], strict word 00002h ; 26 c7 47 0e 02 00 ; 0xf9c28 virtio.c:519
+ mov CH, strict byte 002h ; b5 02 ; 0xf9c2e virtio.c:520
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9c30 virtio.c:523
+ test ax, ax ; 85 c0 ; 0xf9c33
+ je short 09c69h ; 74 32 ; 0xf9c35
+ lea bx, [si+020h] ; 8d 5c 20 ; 0xf9c37 virtio.c:525
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf9c3a
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf9c3f
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf9c45 virtio.c:526
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9c4b
+ mov word [es:bx+008h], ax ; 26 89 47 08 ; 0xf9c51 virtio.c:527
+ mov word [es:bx+00ah], strict word 00000h ; 26 c7 47 0a 00 00 ; 0xf9c55
+ mov word [es:bx+00ch], strict word 00003h ; 26 c7 47 0c 03 00 ; 0xf9c5b virtio.c:528
+ mov word [es:bx+00eh], strict word 00003h ; 26 c7 47 0e 03 00 ; 0xf9c61 virtio.c:529
+ mov CH, strict byte 003h ; b5 03 ; 0xf9c67 virtio.c:530
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9c69 virtio.c:533
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9c6c
+ call 099d0h ; e8 5e fd ; 0xf9c6f
+ mov di, ax ; 89 c7 ; 0xf9c72
+ mov al, ch ; 88 e8 ; 0xf9c74
+ xor ah, ah ; 30 e4 ; 0xf9c76
+ mov CL, strict byte 004h ; b1 04 ; 0xf9c78
+ mov bx, ax ; 89 c3 ; 0xf9c7a
+ sal bx, CL ; d3 e3 ; 0xf9c7c
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9c7e
+ add bx, si ; 01 f3 ; 0xf9c81
+ mov word [es:bx], di ; 26 89 3f ; 0xf9c83
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf9c86
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf9c8a virtio.c:534
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9c90
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf9c96 virtio.c:535
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf9c99
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf9c9d
+ mov word [es:bx+00ah], dx ; 26 89 57 0a ; 0xf9ca0
+ mov word [es:bx+00ch], strict word 00002h ; 26 c7 47 0c 02 00 ; 0xf9ca4 virtio.c:536
+ cmp word [bp+012h], strict byte 00000h ; 83 7e 12 00 ; 0xf9caa virtio.c:537
+ je short 09cb5h ; 74 05 ; 0xf9cae
+ mov dx, ax ; 89 c2 ; 0xf9cb0
+ inc dx ; 42 ; 0xf9cb2
+ jmp short 09cb7h ; eb 02 ; 0xf9cb3
+ xor dx, dx ; 31 d2 ; 0xf9cb5
+ mov al, ch ; 88 e8 ; 0xf9cb7
+ xor ah, ah ; 30 e4 ; 0xf9cb9
+ mov CL, strict byte 004h ; b1 04 ; 0xf9cbb
+ sal ax, CL ; d3 e0 ; 0xf9cbd
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9cbf
+ mov bx, si ; 89 f3 ; 0xf9cc2
+ add bx, ax ; 01 c3 ; 0xf9cc4
+ mov word [es:bx+00eh], dx ; 26 89 57 0e ; 0xf9cc6
+ db 0feh, 0c5h
+ ; inc ch ; fe c5 ; 0xf9cca virtio.c:538
+ cmp word [bp+012h], strict byte 00000h ; 83 7e 12 00 ; 0xf9ccc virtio.c:541
+ je short 09d19h ; 74 47 ; 0xf9cd0
+ mov al, ch ; 88 e8 ; 0xf9cd2 virtio.c:543
+ xor ah, ah ; 30 e4 ; 0xf9cd4
+ sal ax, CL ; d3 e0 ; 0xf9cd6
+ mov bx, si ; 89 f3 ; 0xf9cd8
+ add bx, ax ; 01 c3 ; 0xf9cda
+ or byte [es:bx-004h], 001h ; 26 80 4f fc 01 ; 0xf9cdc
+ mov al, ch ; 88 e8 ; 0xf9ce1 virtio.c:544
+ xor ah, ah ; 30 e4 ; 0xf9ce3
+ mov word [es:bx-002h], ax ; 26 89 47 fe ; 0xf9ce5
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf9ce9 virtio.c:546
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf9cee
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf9cf4 virtio.c:547
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9cfa
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf9d00 virtio.c:548
+ mov word [es:bx+008h], ax ; 26 89 47 08 ; 0xf9d03
+ mov word [es:bx+00ah], strict word 00000h ; 26 c7 47 0a 00 00 ; 0xf9d07
+ mov word [es:bx+00ch], strict word 00002h ; 26 c7 47 0c 02 00 ; 0xf9d0d virtio.c:549
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xf9d13 virtio.c:550
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9d19 virtio.c:555
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9d1c
+ xor dx, dx ; 31 d2 ; 0xf9d20
+ mov bx, strict word 00003h ; bb 03 00 ; 0xf9d22
+ div bx ; f7 f3 ; 0xf9d25
+ sal dx, 1 ; d1 e2 ; 0xf9d27
+ mov bx, si ; 89 f3 ; 0xf9d29
+ add bx, dx ; 01 d3 ; 0xf9d2b
+ mov word [es:bx+054h], strict word 00000h ; 26 c7 47 54 00 00 ; 0xf9d2d
+ mov ax, word [es:si+052h] ; 26 8b 44 52 ; 0xf9d33 virtio.c:556
+ inc word [es:si+052h] ; 26 ff 44 52 ; 0xf9d37
+ mov bx, word [es:si+078h] ; 26 8b 5c 78 ; 0xf9d3b virtio.c:560
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf9d3f
+ mov ax, si ; 89 f0 ; 0xf9d42
+ mov dx, es ; 8c c2 ; 0xf9d44
+ call 09924h ; e8 db fb ; 0xf9d46
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9d49 virtio.c:563
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9d4c
+ cmp ax, word [es:si+05eh] ; 26 3b 44 5e ; 0xf9d4f
+ je short 09d49h ; 74 f4 ; 0xf9d53
+ mov ax, si ; 89 f0 ; 0xf9d55 virtio.c:568
+ mov dx, es ; 8c c2 ; 0xf9d57
+ call 0995dh ; e8 01 fc ; 0xf9d59
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9d5c virtio.c:570
+ mov al, byte [es:si+000e5h] ; 26 8a 84 e5 00 ; 0xf9d5f
+ test al, al ; 84 c0 ; 0xf9d64
+ je short 09d6dh ; 74 05 ; 0xf9d66
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9d68 virtio.c:571
+ jmp short 09d6fh ; eb 02 ; 0xf9d6b
+ xor ah, ah ; 30 e4 ; 0xf9d6d virtio.c:573
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9d6f virtio.c:574
+ pop di ; 5f ; 0xf9d72
+ pop si ; 5e ; 0xf9d73
+ pop cx ; 59 ; 0xf9d74
+ pop bp ; 5d ; 0xf9d75
+ retn 00012h ; c2 12 00 ; 0xf9d76
+ ; disGetNextSymbol 0xf9d79 LB 0x163f -> off=0x0 cb=0000000000000113 uValue=00000000000f8779 'virtio_scsi_read_sectors'
+virtio_scsi_read_sectors: ; 0xf9d79 LB 0x113
+ push bp ; 55 ; 0xf9d79 virtio.c:583
+ mov bp, sp ; 89 e5 ; 0xf9d7a
+ push si ; 56 ; 0xf9d7c
+ push di ; 57 ; 0xf9d7d
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf9d7e
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf9d81
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9d84 virtio.c:591
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf9d87
+ sub AL, strict byte 008h ; 2c 08 ; 0xf9d8b
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf9d8d
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf9d90 virtio.c:592
+ jbe short 09da9h ; 76 15 ; 0xf9d92
+ xor ah, ah ; 30 e4 ; 0xf9d94 virtio.c:593
+ push ax ; 50 ; 0xf9d96
+ mov ax, 00d20h ; b8 20 0d ; 0xf9d97
+ push ax ; 50 ; 0xf9d9a
+ mov ax, 00d39h ; b8 39 0d ; 0xf9d9b
+ push ax ; 50 ; 0xf9d9e
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf9d9f
+ push ax ; 50 ; 0xf9da2
+ call 0191ch ; e8 76 7b ; 0xf9da3
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf9da6
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9da9 virtio.c:595
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf9dac
+ xor bx, bx ; 31 db ; 0xf9db0 virtio.c:597
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9db2
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9db7 virtio.c:303
+ mov es, dx ; 8e c2 ; 0xf9dbb
+ mov word [es:bx+000b4h], ax ; 26 89 87 b4 00 ; 0xf9dbd
+ mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf9dc2 virtio.c:599
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9dc7 virtio.c:600
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf9dca
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf9dce
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf9dd2
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf9dd6
+ xchg ah, al ; 86 c4 ; 0xf9dd9
+ xchg bh, bl ; 86 df ; 0xf9ddb
+ xchg ch, cl ; 86 cd ; 0xf9ddd
+ xchg dh, dl ; 86 d6 ; 0xf9ddf
+ xchg dx, ax ; 92 ; 0xf9de1
+ xchg bx, cx ; 87 cb ; 0xf9de2
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9de4
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf9de7
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf9dea
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf9ded
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9df0 virtio.c:601
+ mov ax, di ; 89 f8 ; 0xf9df4 virtio.c:602
+ xor dx, dx ; 31 d2 ; 0xf9df6
+ xchg ah, al ; 86 c4 ; 0xf9df8
+ xchg dh, dl ; 86 d6 ; 0xf9dfa
+ xchg dx, ax ; 92 ; 0xf9dfc
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9dfd
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9e00
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf9e03 virtio.c:603
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9e07 virtio.c:606
+ xor ah, ah ; 30 e4 ; 0xf9e0a
+ sal ax, 1 ; d1 e0 ; 0xf9e0c
+ sal ax, 1 ; d1 e0 ; 0xf9e0e
+ mov bx, si ; 89 f3 ; 0xf9e10
+ add bx, ax ; 01 c3 ; 0xf9e12
+ mov bl, byte [es:bx+00296h] ; 26 8a 9f 96 02 ; 0xf9e14
+ xor ax, ax ; 31 c0 ; 0xf9e19 virtio.c:611
+ push ax ; 50 ; 0xf9e1b
+ push ax ; 50 ; 0xf9e1c
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf9e1d
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf9e20
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf9e23
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf9e26
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf9e29
+ loop 09e26h ; e2 f8 ; 0xf9e2c
+ push word [bp-008h] ; ff 76 f8 ; 0xf9e2e
+ push word [bp-00ah] ; ff 76 f6 ; 0xf9e31
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf9e34
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf9e38
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf9e3c
+ push ax ; 50 ; 0xf9e3f
+ lea dx, [bp-01ah] ; 8d 56 e6 ; 0xf9e40
+ push SS ; 16 ; 0xf9e43
+ push dx ; 52 ; 0xf9e44
+ xor bh, bh ; 30 ff ; 0xf9e45
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9e47
+ xor ax, ax ; 31 c0 ; 0xf9e4c
+ call 09b57h ; e8 06 fd ; 0xf9e4e
+ mov dl, al ; 88 c2 ; 0xf9e51
+ test al, al ; 84 c0 ; 0xf9e53 virtio.c:614
+ jne short 09e6ch ; 75 15 ; 0xf9e55
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9e57 virtio.c:616
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf9e5a
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9e5e virtio.c:617
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf9e61
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf9e65
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf9e68
+ xor di, di ; 31 ff ; 0xf9e6c virtio.c:620
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9e6e
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf9e71
+ mov ax, word [es:di+000b4h] ; 26 8b 85 b4 00 ; 0xf9e76 virtio.c:308
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9e7b
+ mov al, dl ; 88 d0 ; 0xf9e7f virtio.c:622
+ xor ah, ah ; 30 e4 ; 0xf9e81
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9e83 virtio.c:623
+ pop di ; 5f ; 0xf9e86
+ pop si ; 5e ; 0xf9e87
+ pop bp ; 5d ; 0xf9e88
+ retn 00004h ; c2 04 00 ; 0xf9e89
+ ; disGetNextSymbol 0xf9e8c LB 0x152c -> off=0x0 cb=0000000000000111 uValue=00000000000f888c 'virtio_scsi_write_sectors'
+virtio_scsi_write_sectors: ; 0xf9e8c LB 0x111
+ push bp ; 55 ; 0xf9e8c virtio.c:632
+ mov bp, sp ; 89 e5 ; 0xf9e8d
+ push si ; 56 ; 0xf9e8f
+ push di ; 57 ; 0xf9e90
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf9e91
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf9e94
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9e97 virtio.c:640
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf9e9a
+ sub AL, strict byte 008h ; 2c 08 ; 0xf9e9e
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf9ea0
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf9ea3 virtio.c:641
+ jbe short 09ebch ; 76 15 ; 0xf9ea5
+ xor ah, ah ; 30 e4 ; 0xf9ea7 virtio.c:642
+ push ax ; 50 ; 0xf9ea9
+ mov ax, 00d58h ; b8 58 0d ; 0xf9eaa
+ push ax ; 50 ; 0xf9ead
+ mov ax, 00d39h ; b8 39 0d ; 0xf9eae
+ push ax ; 50 ; 0xf9eb1
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf9eb2
+ push ax ; 50 ; 0xf9eb5
+ call 0191ch ; e8 63 7a ; 0xf9eb6
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf9eb9
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9ebc virtio.c:644
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf9ebf
+ xor bx, bx ; 31 db ; 0xf9ec3 virtio.c:646
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9ec5
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9eca virtio.c:303
+ mov es, dx ; 8e c2 ; 0xf9ece
+ mov word [es:bx+000b4h], ax ; 26 89 87 b4 00 ; 0xf9ed0
+ mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf9ed5 virtio.c:649
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9eda virtio.c:650
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf9edd
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf9ee1
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf9ee5
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf9ee9
+ xchg ah, al ; 86 c4 ; 0xf9eec
+ xchg bh, bl ; 86 df ; 0xf9eee
+ xchg ch, cl ; 86 cd ; 0xf9ef0
+ xchg dh, dl ; 86 d6 ; 0xf9ef2
+ xchg dx, ax ; 92 ; 0xf9ef4
+ xchg bx, cx ; 87 cb ; 0xf9ef5
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf9ef7
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf9efa
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf9efd
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf9f00
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9f03 virtio.c:651
+ mov ax, di ; 89 f8 ; 0xf9f07 virtio.c:652
+ xor dx, dx ; 31 d2 ; 0xf9f09
+ xchg ah, al ; 86 c4 ; 0xf9f0b
+ xchg dh, dl ; 86 d6 ; 0xf9f0d
+ xchg dx, ax ; 92 ; 0xf9f0f
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9f10
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9f13
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf9f16 virtio.c:653
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9f1a virtio.c:655
+ xor ah, ah ; 30 e4 ; 0xf9f1d
+ sal ax, 1 ; d1 e0 ; 0xf9f1f
+ sal ax, 1 ; d1 e0 ; 0xf9f21
+ mov bx, si ; 89 f3 ; 0xf9f23
+ add bx, ax ; 01 c3 ; 0xf9f25
+ mov bl, byte [es:bx+00296h] ; 26 8a 9f 96 02 ; 0xf9f27
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf9f2c virtio.c:660
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf9f2f
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf9f34
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf9f37
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf9f3a
+ loop 09f37h ; e2 f8 ; 0xf9f3d
+ push word [bp-008h] ; ff 76 f8 ; 0xf9f3f
+ push word [bp-00ah] ; ff 76 f6 ; 0xf9f42
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf9f45
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf9f49
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf9f4d
+ push ax ; 50 ; 0xf9f50
+ lea dx, [bp-01ah] ; 8d 56 e6 ; 0xf9f51
+ push SS ; 16 ; 0xf9f54
+ push dx ; 52 ; 0xf9f55
+ xor bh, bh ; 30 ff ; 0xf9f56
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9f58
+ xor ax, ax ; 31 c0 ; 0xf9f5d
+ call 099eeh ; e8 8c fa ; 0xf9f5f
+ mov dl, al ; 88 c2 ; 0xf9f62
+ test al, al ; 84 c0 ; 0xf9f64 virtio.c:663
+ jne short 09f7dh ; 75 15 ; 0xf9f66
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9f68 virtio.c:665
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf9f6b
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9f6f virtio.c:666
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf9f72
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf9f76
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf9f79
+ xor bx, bx ; 31 db ; 0xf9f7d virtio.c:669
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf9f7f
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf9f82
+ mov ax, word [es:bx+000b4h] ; 26 8b 87 b4 00 ; 0xf9f87 virtio.c:308
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9f8c
+ mov al, dl ; 88 d0 ; 0xf9f90 virtio.c:671
+ xor ah, ah ; 30 e4 ; 0xf9f92
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9f94 virtio.c:672
+ pop di ; 5f ; 0xf9f97
+ pop si ; 5e ; 0xf9f98
+ pop bp ; 5d ; 0xf9f99
+ retn 00004h ; c2 04 00 ; 0xf9f9a
+ ; disGetNextSymbol 0xf9f9d LB 0x141b -> off=0x0 cb=0000000000000128 uValue=00000000000f899d 'virtio_scsi_cmd_packet'
+virtio_scsi_cmd_packet: ; 0xf9f9d LB 0x128
+ push bp ; 55 ; 0xf9f9d virtio.c:688
+ mov bp, sp ; 89 e5 ; 0xf9f9e
+ push si ; 56 ; 0xf9fa0
+ push di ; 57 ; 0xf9fa1
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf9fa2
+ mov di, ax ; 89 c7 ; 0xf9fa5
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf9fa7
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf9faa
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf9fad
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf9fb0 virtio.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9fb3
+ mov es, ax ; 8e c0 ; 0xf9fb6
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf9fb8
+ mov si, strict word 0005eh ; be 5e 00 ; 0xf9fbb virtio.c:49
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9fbe
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf9fc1 virtio.c:696
+ jne short 09feah ; 75 23 ; 0xf9fc5
+ mov bx, 00eeah ; bb ea 0e ; 0xf9fc7 virtio.c:697
+ mov cx, ds ; 8c d9 ; 0xf9fca
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9fcc
+ call 018d9h ; e8 07 79 ; 0xf9fcf
+ mov ax, 00d72h ; b8 72 0d ; 0xf9fd2
+ push ax ; 50 ; 0xf9fd5
+ mov ax, 00d89h ; b8 89 0d ; 0xf9fd6
+ push ax ; 50 ; 0xf9fd9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9fda
+ push ax ; 50 ; 0xf9fdd
+ call 0191ch ; e8 3b 79 ; 0xf9fde
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf9fe1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9fe4 virtio.c:698
+ jmp near 0a0bch ; e9 d2 00 ; 0xf9fe7
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf9fea virtio.c:702
+ jne short 09fe4h ; 75 f4 ; 0xf9fee
+ xor bx, bx ; 31 db ; 0xf9ff0 virtio.c:716
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9ff2
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf9ff5
+ sub di, strict byte 00008h ; 83 ef 08 ; 0xf9ffa virtio.c:708
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9ffd virtio.c:303
+ mov es, dx ; 8e c2 ; 0xfa001
+ mov word [es:bx+000b4h], ax ; 26 89 87 b4 00 ; 0xfa003
+ mov bx, di ; 89 fb ; 0xfa008 virtio.c:717
+ sal bx, 1 ; d1 e3 ; 0xfa00a
+ sal bx, 1 ; d1 e3 ; 0xfa00c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa00e
+ add bx, si ; 01 f3 ; 0xfa011
+ mov al, byte [es:bx+00296h] ; 26 8a 87 96 02 ; 0xfa013
+ mov byte [bp-006h], al ; 88 46 fa ; 0xfa018
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xfa01b virtio.c:719
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xfa01e
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfa021
+ sal ax, 1 ; d1 e0 ; 0xfa024
+ rcl dx, 1 ; d1 d2 ; 0xfa026
+ loop 0a024h ; e2 fa ; 0xfa028
+ mov word [es:si], ax ; 26 89 04 ; 0xfa02a
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xfa02d
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xfa031
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xfa037
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xfa03d virtio.c:720
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xfa040
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa044
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xfa047
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xfa04b virtio.c:721
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xfa04f
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xfa052
+ xor cx, cx ; 31 c9 ; 0xfa055
+ call 0b040h ; e8 e6 0f ; 0xfa057
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xfa05a
+ push word [es:si+020h] ; 26 ff 74 20 ; 0xfa05e virtio.c:726
+ push word [bp+004h] ; ff 76 04 ; 0xfa062
+ push word [bp+008h] ; ff 76 08 ; 0xfa065
+ push word [bp+006h] ; ff 76 06 ; 0xfa068
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xfa06b
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xfa06f
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa073
+ xor ah, ah ; 30 e4 ; 0xfa076
+ push ax ; 50 ; 0xfa078
+ push word [bp-00ch] ; ff 76 f4 ; 0xfa079
+ push word [bp-00eh] ; ff 76 f2 ; 0xfa07c
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xfa07f
+ xor bh, bh ; 30 ff ; 0xfa082
+ mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xfa084
+ xor al, al ; 30 c0 ; 0xfa089
+ call 09b57h ; e8 c9 fa ; 0xfa08b
+ mov dl, al ; 88 c2 ; 0xfa08e
+ test al, al ; 84 c0 ; 0xfa090 virtio.c:728
+ jne short 0a0a5h ; 75 11 ; 0xfa092
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xfa094 virtio.c:729
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa097
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xfa09a
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xfa09e
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xfa0a1
+ xor di, di ; 31 ff ; 0xfa0a5 virtio.c:732
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa0a7
+ mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xfa0aa
+ mov ax, word [es:di+000b4h] ; 26 8b 85 b4 00 ; 0xfa0af virtio.c:308
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfa0b4
+ mov al, dl ; 88 d0 ; 0xfa0b8 virtio.c:734
+ xor ah, ah ; 30 e4 ; 0xfa0ba
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfa0bc virtio.c:735
+ pop di ; 5f ; 0xfa0bf
+ pop si ; 5e ; 0xfa0c0
+ pop bp ; 5d ; 0xfa0c1
+ retn 0000ch ; c2 0c 00 ; 0xfa0c2
+ ; disGetNextSymbol 0xfa0c5 LB 0x12f3 -> off=0x0 cb=00000000000004c7 uValue=00000000000f8ac5 'virtio_scsi_detect_devices'
+virtio_scsi_detect_devices: ; 0xfa0c5 LB 0x4c7
+ push bp ; 55 ; 0xfa0c5 virtio.c:737
+ mov bp, sp ; 89 e5 ; 0xfa0c6
+ push bx ; 53 ; 0xfa0c8
+ push cx ; 51 ; 0xfa0c9
+ push si ; 56 ; 0xfa0ca
+ push di ; 57 ; 0xfa0cb
+ sub sp, 00240h ; 81 ec 40 02 ; 0xfa0cc
+ push ax ; 50 ; 0xfa0d0
+ push dx ; 52 ; 0xfa0d1
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xfa0d2 virtio.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfa0d5
+ mov es, ax ; 8e c0 ; 0xfa0d8
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xfa0da
+ mov di, strict word 0005eh ; bf 5e 00 ; 0xfa0dd virtio.c:49
+ mov word [bp-012h], ax ; 89 46 ee ; 0xfa0e0
+ mov word [bp-02ch], strict word 00000h ; c7 46 d4 00 00 ; 0xfa0e3 virtio.c:746
+ jmp near 0a4f4h ; e9 09 04 ; 0xfa0e8
+ cmp AL, strict byte 004h ; 3c 04 ; 0xfa0eb virtio.c:767
+ jc short 0a0f2h ; 72 03 ; 0xfa0ed
+ jmp near 0a581h ; e9 8f 04 ; 0xfa0ef
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfa0f2 virtio.c:782
+ xor bx, bx ; 31 db ; 0xfa0f5
+ mov dx, ss ; 8c d2 ; 0xfa0f7
+ lea ax, [bp-048h] ; 8d 46 b8 ; 0xfa0f9
+ call 0b090h ; e8 91 0f ; 0xfa0fc
+ mov byte [bp-048h], 09eh ; c6 46 b8 9e ; 0xfa0ff virtio.c:783
+ mov byte [bp-047h], 010h ; c6 46 b9 10 ; 0xfa103 virtio.c:784
+ mov byte [bp-03bh], 020h ; c6 46 c5 20 ; 0xfa107 virtio.c:785
+ xor ax, ax ; 31 c0 ; 0xfa10b virtio.c:787
+ push ax ; 50 ; 0xfa10d
+ push ax ; 50 ; 0xfa10e
+ push ax ; 50 ; 0xfa10f
+ mov ax, strict word 00020h ; b8 20 00 ; 0xfa110
+ push ax ; 50 ; 0xfa113
+ lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xfa114
+ push SS ; 16 ; 0xfa118
+ push dx ; 52 ; 0xfa119
+ mov ax, strict word 00010h ; b8 10 00 ; 0xfa11a
+ push ax ; 50 ; 0xfa11d
+ lea dx, [bp-048h] ; 8d 56 b8 ; 0xfa11e
+ push SS ; 16 ; 0xfa121
+ push dx ; 52 ; 0xfa122
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xfa123
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xfa126
+ mov dx, word [bp-0024ch] ; 8b 96 b4 fd ; 0xfa12a
+ call 09b57h ; e8 26 fa ; 0xfa12e
+ test al, al ; 84 c0 ; 0xfa131 virtio.c:788
+ je short 0a147h ; 74 12 ; 0xfa133
+ mov ax, 00da9h ; b8 a9 0d ; 0xfa135 virtio.c:789
+ push ax ; 50 ; 0xfa138
+ mov ax, 00dc4h ; b8 c4 0d ; 0xfa139
+ push ax ; 50 ; 0xfa13c
+ mov ax, strict word 00007h ; b8 07 00 ; 0xfa13d
+ push ax ; 50 ; 0xfa140
+ call 0191ch ; e8 d8 77 ; 0xfa141
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xfa144
+ mov ax, word [bp-00242h] ; 8b 86 be fd ; 0xfa147 virtio.c:794
+ mov bx, word [bp-00244h] ; 8b 9e bc fd ; 0xfa14b
+ mov cx, word [bp-00246h] ; 8b 8e ba fd ; 0xfa14f
+ mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xfa153
+ xchg ah, al ; 86 c4 ; 0xfa157
+ xchg bh, bl ; 86 df ; 0xfa159
+ xchg ch, cl ; 86 cd ; 0xfa15b
+ xchg dh, dl ; 86 d6 ; 0xfa15d
+ xchg dx, ax ; 92 ; 0xfa15f
+ xchg bx, cx ; 87 cb ; 0xfa160
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xfa162
+ mov word [bp-024h], dx ; 89 56 dc ; 0xfa165
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xfa168
+ mov word [bp-022h], cx ; 89 4e de ; 0xfa16b
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xfa16e
+ mov word [bp-020h], bx ; 89 5e e0 ; 0xfa171
+ adc ax, strict word 00000h ; 15 00 00 ; 0xfa174
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xfa177
+ mov dh, byte [bp-00240h] ; 8a b6 c0 fd ; 0xfa17a virtio.c:796
+ xor dl, dl ; 30 d2 ; 0xfa17e
+ mov al, byte [bp-0023fh] ; 8a 86 c1 fd ; 0xfa180
+ xor ah, ah ; 30 e4 ; 0xfa184
+ xor bx, bx ; 31 db ; 0xfa186
+ mov si, dx ; 89 d6 ; 0xfa188
+ or si, ax ; 09 c6 ; 0xfa18a
+ mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xfa18c
+ xor dh, dh ; 30 f6 ; 0xfa190
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfa192
+ sal ax, 1 ; d1 e0 ; 0xfa195
+ rcl dx, 1 ; d1 d2 ; 0xfa197
+ loop 0a195h ; e2 fa ; 0xfa199
+ or bx, ax ; 09 c3 ; 0xfa19b
+ or dx, si ; 09 f2 ; 0xfa19d
+ mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xfa19f
+ xor ah, ah ; 30 e4 ; 0xfa1a3
+ or bx, ax ; 09 c3 ; 0xfa1a5
+ mov word [bp-026h], bx ; 89 5e da ; 0xfa1a7
+ test dx, dx ; 85 d2 ; 0xfa1aa virtio.c:802
+ jne short 0a1b4h ; 75 06 ; 0xfa1ac
+ cmp bx, 00200h ; 81 fb 00 02 ; 0xfa1ae
+ je short 0a1d7h ; 74 23 ; 0xfa1b2
+ mov bx, 00eeah ; bb ea 0e ; 0xfa1b4 virtio.c:805
+ mov cx, ds ; 8c d9 ; 0xfa1b7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa1b9
+ call 018d9h ; e8 1a 77 ; 0xfa1bc
+ push dx ; 52 ; 0xfa1bf
+ push word [bp-026h] ; ff 76 da ; 0xfa1c0
+ push word [bp-02ch] ; ff 76 d4 ; 0xfa1c3
+ mov ax, 00de3h ; b8 e3 0d ; 0xfa1c6
+ push ax ; 50 ; 0xfa1c9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa1ca
+ push ax ; 50 ; 0xfa1cd
+ call 0191ch ; e8 4b 77 ; 0xfa1ce
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xfa1d1
+ jmp near 0a4e8h ; e9 11 03 ; 0xfa1d4 virtio.c:806
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa1d7 virtio.c:810
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa1da
+ jc short 0a1eah ; 72 0c ; 0xfa1dc
+ jbe short 0a1f2h ; 76 12 ; 0xfa1de
+ cmp AL, strict byte 003h ; 3c 03 ; 0xfa1e0
+ je short 0a1fah ; 74 16 ; 0xfa1e2
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfa1e4
+ je short 0a1f6h ; 74 0e ; 0xfa1e6
+ jmp short 0a241h ; eb 57 ; 0xfa1e8
+ test al, al ; 84 c0 ; 0xfa1ea
+ jne short 0a241h ; 75 53 ; 0xfa1ec
+ mov BL, strict byte 090h ; b3 90 ; 0xfa1ee virtio.c:813
+ jmp short 0a1fch ; eb 0a ; 0xfa1f0 virtio.c:814
+ mov BL, strict byte 098h ; b3 98 ; 0xfa1f2 virtio.c:816
+ jmp short 0a1fch ; eb 06 ; 0xfa1f4 virtio.c:817
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xfa1f6 virtio.c:819
+ jmp short 0a1fch ; eb 02 ; 0xfa1f8 virtio.c:820
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xfa1fa virtio.c:822
+ mov cl, bl ; 88 d9 ; 0xfa1fc virtio.c:826
+ add cl, 007h ; 80 c1 07 ; 0xfa1fe
+ xor ch, ch ; 30 ed ; 0xfa201
+ mov ax, cx ; 89 c8 ; 0xfa203
+ call 0165fh ; e8 57 74 ; 0xfa205
+ test al, al ; 84 c0 ; 0xfa208
+ je short 0a241h ; 74 35 ; 0xfa20a
+ mov al, bl ; 88 d8 ; 0xfa20c virtio.c:831
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa20e
+ xor ah, ah ; 30 e4 ; 0xfa210
+ call 0165fh ; e8 4a 74 ; 0xfa212
+ mov dh, al ; 88 c6 ; 0xfa215
+ mov al, bl ; 88 d8 ; 0xfa217
+ xor ah, ah ; 30 e4 ; 0xfa219
+ call 0165fh ; e8 41 74 ; 0xfa21b
+ mov ah, dh ; 88 f4 ; 0xfa21e
+ cwd ; 99 ; 0xfa220
+ mov si, ax ; 89 c6 ; 0xfa221
+ mov word [bp-014h], dx ; 89 56 ec ; 0xfa223
+ mov al, bl ; 88 d8 ; 0xfa226 virtio.c:832
+ add AL, strict byte 002h ; 04 02 ; 0xfa228
+ xor ah, ah ; 30 e4 ; 0xfa22a
+ call 0165fh ; e8 30 74 ; 0xfa22c
+ xor ah, ah ; 30 e4 ; 0xfa22f
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xfa231
+ mov ax, cx ; 89 c8 ; 0xfa234 virtio.c:833
+ call 0165fh ; e8 26 74 ; 0xfa236
+ xor ah, ah ; 30 e4 ; 0xfa239
+ mov word [bp-016h], ax ; 89 46 ea ; 0xfa23b
+ jmp near 0a32eh ; e9 ed 00 ; 0xfa23e virtio.c:835
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xfa241 virtio.c:836
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xfa244
+ mov cx, word [bp-022h] ; 8b 4e de ; 0xfa247
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xfa24a
+ mov si, strict word 0000ch ; be 0c 00 ; 0xfa24d
+ call 0b070h ; e8 1d 0e ; 0xfa250
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfa253
+ mov word [bp-01ah], bx ; 89 5e e6 ; 0xfa256
+ mov word [bp-028h], cx ; 89 4e d8 ; 0xfa259
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xfa25c
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xfa25f virtio.c:840
+ test ax, ax ; 85 c0 ; 0xfa262
+ jnbe short 0a27bh ; 77 15 ; 0xfa264
+ je short 0a26bh ; 74 03 ; 0xfa266
+ jmp near 0a2eeh ; e9 83 00 ; 0xfa268
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xfa26b
+ jnbe short 0a27bh ; 77 0a ; 0xfa26f
+ jne short 0a268h ; 75 f5 ; 0xfa271
+ cmp word [bp-022h], strict byte 00040h ; 83 7e de 40 ; 0xfa273
+ jnbe short 0a27bh ; 77 02 ; 0xfa277
+ jne short 0a2eeh ; 75 73 ; 0xfa279
+ mov word [bp-00eh], 000ffh ; c7 46 f2 ff 00 ; 0xfa27b virtio.c:842
+ mov word [bp-016h], strict word 0003fh ; c7 46 ea 3f 00 ; 0xfa280 virtio.c:843
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xfa285 virtio.c:845
+ mov cx, word [bp-022h] ; 8b 4e de ; 0xfa288
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xfa28b
+ mov si, strict word 00006h ; be 06 00 ; 0xfa28e
+ call 0b070h ; e8 dc 0d ; 0xfa291
+ mov si, word [bp-02ah] ; 8b 76 d6 ; 0xfa294
+ add si, dx ; 01 d6 ; 0xfa297
+ mov word [bp-034h], si ; 89 76 cc ; 0xfa299
+ mov dx, word [bp-028h] ; 8b 56 d8 ; 0xfa29c
+ adc dx, cx ; 11 ca ; 0xfa29f
+ mov word [bp-032h], dx ; 89 56 ce ; 0xfa2a1
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xfa2a4
+ adc dx, bx ; 11 da ; 0xfa2a7
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xfa2a9
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa2ac
+ adc dx, ax ; 11 c2 ; 0xfa2af
+ mov word [bp-036h], dx ; 89 56 ca ; 0xfa2b1
+ mov ax, dx ; 89 d0 ; 0xfa2b4 virtio.c:846
+ mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xfa2b6
+ mov cx, word [bp-032h] ; 8b 4e ce ; 0xfa2b9
+ mov dx, si ; 89 f2 ; 0xfa2bc
+ mov si, strict word 00008h ; be 08 00 ; 0xfa2be
+ call 0b070h ; e8 ac 0d ; 0xfa2c1
+ mov word [bp-02eh], bx ; 89 5e d2 ; 0xfa2c4
+ mov word [bp-030h], cx ; 89 4e d0 ; 0xfa2c7
+ mov word [bp-038h], dx ; 89 56 c8 ; 0xfa2ca
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xfa2cd
+ mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xfa2d0
+ mov cx, word [bp-032h] ; 8b 4e ce ; 0xfa2d3
+ mov dx, word [bp-034h] ; 8b 56 cc ; 0xfa2d6
+ mov si, strict word 00010h ; be 10 00 ; 0xfa2d9
+ call 0b070h ; e8 91 0d ; 0xfa2dc
+ mov si, word [bp-038h] ; 8b 76 c8 ; 0xfa2df
+ add si, dx ; 01 d6 ; 0xfa2e2
+ adc cx, word [bp-030h] ; 13 4e d0 ; 0xfa2e4
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xfa2e7
+ adc ax, bx ; 11 d8 ; 0xfa2ea
+ jmp short 0a32bh ; eb 3d ; 0xfa2ec virtio.c:848
+ test ax, ax ; 85 c0 ; 0xfa2ee
+ jnbe short 0a304h ; 77 12 ; 0xfa2f0
+ jne short 0a310h ; 75 1c ; 0xfa2f2
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xfa2f4
+ jnbe short 0a304h ; 77 0a ; 0xfa2f8
+ jne short 0a310h ; 75 14 ; 0xfa2fa
+ cmp word [bp-022h], strict byte 00020h ; 83 7e de 20 ; 0xfa2fc
+ jnbe short 0a304h ; 77 02 ; 0xfa300
+ jne short 0a310h ; 75 0c ; 0xfa302
+ mov word [bp-00eh], 00080h ; c7 46 f2 80 00 ; 0xfa304 virtio.c:850
+ mov word [bp-016h], strict word 00020h ; c7 46 ea 20 00 ; 0xfa309 virtio.c:851
+ jmp short 0a329h ; eb 19 ; 0xfa30e virtio.c:854
+ mov word [bp-00eh], strict word 00040h ; c7 46 f2 40 00 ; 0xfa310 virtio.c:856
+ mov word [bp-016h], strict word 00020h ; c7 46 ea 20 00 ; 0xfa315 virtio.c:857
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xfa31a virtio.c:858
+ mov cx, word [bp-022h] ; 8b 4e de ; 0xfa31d
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xfa320
+ mov si, strict word 0000bh ; be 0b 00 ; 0xfa323
+ call 0b070h ; e8 47 0d ; 0xfa326
+ mov si, dx ; 89 d6 ; 0xfa329
+ mov word [bp-014h], cx ; 89 4e ec ; 0xfa32b
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa32e virtio.c:863
+ add AL, strict byte 008h ; 04 08 ; 0xfa331
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xfa333
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa336 virtio.c:865
+ xor ah, ah ; 30 e4 ; 0xfa339
+ sal ax, 1 ; d1 e0 ; 0xfa33b
+ sal ax, 1 ; d1 e0 ; 0xfa33d
+ mov es, [bp-012h] ; 8e 46 ee ; 0xfa33f
+ mov bx, di ; 89 fb ; 0xfa342
+ add bx, ax ; 01 c3 ; 0xfa344
+ mov al, byte [bp-02ch] ; 8a 46 d4 ; 0xfa346
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xfa349
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa34e virtio.c:866
+ xor ah, ah ; 30 e4 ; 0xfa351
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xfa353
+ imul dx ; f7 ea ; 0xfa356
+ mov bx, di ; 89 fb ; 0xfa358
+ add bx, ax ; 01 c3 ; 0xfa35a
+ mov word [es:bx+022h], 0ff06h ; 26 c7 47 22 06 ff ; 0xfa35c
+ mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xfa362 virtio.c:868
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xfa368 virtio.c:870
+ mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xfa36b
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xfa36f virtio.c:871
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xfa374 virtio.c:874
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xfa377
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfa37b virtio.c:875
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xfa37e
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xfa382 virtio.c:876
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xfa385
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfa389 virtio.c:877
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xfa38c
+ cmp word [bp-014h], strict byte 00000h ; 83 7e ec 00 ; 0xfa390 virtio.c:879
+ jne short 0a39ch ; 75 06 ; 0xfa394
+ cmp si, 00400h ; 81 fe 00 04 ; 0xfa396
+ jbe short 0a3aah ; 76 0e ; 0xfa39a
+ mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xfa39c virtio.c:880
+ mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xfa3a2 virtio.c:881
+ jmp short 0a3b2h ; eb 08 ; 0xfa3a8 virtio.c:882
+ mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xfa3aa virtio.c:883
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xfa3ae virtio.c:884
+ mov bx, 00eeah ; bb ea 0e ; 0xfa3b2 virtio.c:888
+ mov cx, ds ; 8c d9 ; 0xfa3b5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa3b7
+ call 018d9h ; e8 1c 75 ; 0xfa3ba
+ push word [bp-01eh] ; ff 76 e2 ; 0xfa3bd
+ push word [bp-020h] ; ff 76 e0 ; 0xfa3c0
+ push word [bp-022h] ; ff 76 de ; 0xfa3c3
+ push word [bp-024h] ; ff 76 dc ; 0xfa3c6
+ push word [bp-016h] ; ff 76 ea ; 0xfa3c9
+ push word [bp-00eh] ; ff 76 f2 ; 0xfa3cc
+ push word [bp-014h] ; ff 76 ec ; 0xfa3cf
+ push si ; 56 ; 0xfa3d2
+ push word [bp-02ch] ; ff 76 d4 ; 0xfa3d3
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa3d6
+ xor ah, ah ; 30 e4 ; 0xfa3d9
+ push ax ; 50 ; 0xfa3db
+ mov ax, 00e11h ; b8 11 0e ; 0xfa3dc
+ push ax ; 50 ; 0xfa3df
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa3e0
+ push ax ; 50 ; 0xfa3e3
+ call 0191ch ; e8 35 75 ; 0xfa3e4
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xfa3e7
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa3ea virtio.c:890
+ xor ah, ah ; 30 e4 ; 0xfa3ed
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xfa3ef
+ imul dx ; f7 ea ; 0xfa3f2
+ mov es, [bp-012h] ; 8e 46 ee ; 0xfa3f4
+ mov bx, di ; 89 fb ; 0xfa3f7
+ add bx, ax ; 01 c3 ; 0xfa3f9
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xfa3fb
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xfa3fe
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xfa402
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xfa405
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xfa409
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xfa40c
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xfa410
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xfa413
+ mov al, byte [es:di+00252h] ; 26 8a 85 52 02 ; 0xfa417 virtio.c:893
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xfa41c virtio.c:894
+ add ah, 008h ; 80 c4 08 ; 0xfa41f
+ mov bl, al ; 88 c3 ; 0xfa422
+ xor bh, bh ; 30 ff ; 0xfa424
+ add bx, di ; 01 fb ; 0xfa426
+ mov byte [es:bx+00253h], ah ; 26 88 a7 53 02 ; 0xfa428
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa42d virtio.c:895
+ mov byte [es:di+00252h], al ; 26 88 85 52 02 ; 0xfa42f virtio.c:896
+ mov bx, strict word 00075h ; bb 75 00 ; 0xfa434 virtio.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfa437
+ mov es, ax ; 8e c0 ; 0xfa43a
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xfa43c
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa43f virtio.c:900
+ mov byte [es:bx], al ; 26 88 07 ; 0xfa441 virtio.c:43
+ inc byte [bp-00ah] ; fe 46 f6 ; 0xfa444 virtio.c:903
+ jmp near 0a4ddh ; e9 93 00 ; 0xfa447 virtio.c:905
+ mov bx, 00eeah ; bb ea 0e ; 0xfa44a virtio.c:917
+ mov cx, ds ; 8c d9 ; 0xfa44d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa44f
+ call 018d9h ; e8 84 74 ; 0xfa452
+ push word [bp-02ch] ; ff 76 d4 ; 0xfa455
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa458
+ xor ah, ah ; 30 e4 ; 0xfa45b
+ push ax ; 50 ; 0xfa45d
+ mov ax, 00e3fh ; b8 3f 0e ; 0xfa45e
+ push ax ; 50 ; 0xfa461
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfa462
+ push ax ; 50 ; 0xfa465
+ call 0191ch ; e8 b3 74 ; 0xfa466
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfa469
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa46c virtio.c:920
+ add AL, strict byte 008h ; 04 08 ; 0xfa46f
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xfa471
+ test byte [bp-00247h], 080h ; f6 86 b9 fd 80 ; 0xfa474 virtio.c:922
+ je short 0a480h ; 74 05 ; 0xfa479
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa47b
+ jmp short 0a482h ; eb 02 ; 0xfa47e
+ xor cx, cx ; 31 c9 ; 0xfa480
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa482 virtio.c:924
+ xor ah, ah ; 30 e4 ; 0xfa485
+ sal ax, 1 ; d1 e0 ; 0xfa487
+ sal ax, 1 ; d1 e0 ; 0xfa489
+ mov es, [bp-012h] ; 8e 46 ee ; 0xfa48b
+ mov bx, di ; 89 fb ; 0xfa48e
+ add bx, ax ; 01 c3 ; 0xfa490
+ mov al, byte [bp-02ch] ; 8a 46 d4 ; 0xfa492
+ mov byte [es:bx+00296h], al ; 26 88 87 96 02 ; 0xfa495
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa49a virtio.c:925
+ xor ah, ah ; 30 e4 ; 0xfa49d
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xfa49f
+ imul dx ; f7 ea ; 0xfa4a2
+ mov bx, di ; 89 fb ; 0xfa4a4
+ add bx, ax ; 01 c3 ; 0xfa4a6
+ mov word [es:bx+022h], 00506h ; 26 c7 47 22 06 05 ; 0xfa4a8
+ mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xfa4ae virtio.c:927
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xfa4b2 virtio.c:928
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xfa4b8 virtio.c:929
+ mov al, byte [es:di+00267h] ; 26 8a 85 67 02 ; 0xfa4bd virtio.c:932
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xfa4c2 virtio.c:933
+ add ah, 008h ; 80 c4 08 ; 0xfa4c5
+ mov bl, al ; 88 c3 ; 0xfa4c8
+ xor bh, bh ; 30 ff ; 0xfa4ca
+ add bx, di ; 01 fb ; 0xfa4cc
+ mov byte [es:bx+00268h], ah ; 26 88 a7 68 02 ; 0xfa4ce
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xfa4d3 virtio.c:934
+ mov byte [es:di+00267h], al ; 26 88 85 67 02 ; 0xfa4d5 virtio.c:935
+ inc byte [bp-00ah] ; fe 46 f6 ; 0xfa4da virtio.c:937
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xfa4dd virtio.c:945
+ mov es, [bp-012h] ; 8e 46 ee ; 0xfa4e0
+ mov byte [es:di+002a4h], al ; 26 88 85 a4 02 ; 0xfa4e3
+ inc word [bp-02ch] ; ff 46 d4 ; 0xfa4e8 virtio.c:946
+ cmp word [bp-02ch], strict byte 00010h ; 83 7e d4 10 ; 0xfa4eb
+ jl short 0a4f4h ; 7c 03 ; 0xfa4ef
+ jmp near 0a581h ; e9 8d 00 ; 0xfa4f1
+ mov byte [bp-048h], 012h ; c6 46 b8 12 ; 0xfa4f4
+ xor al, al ; 30 c0 ; 0xfa4f8
+ mov byte [bp-047h], al ; 88 46 b9 ; 0xfa4fa
+ mov byte [bp-046h], al ; 88 46 ba ; 0xfa4fd
+ mov byte [bp-045h], al ; 88 46 bb ; 0xfa500
+ mov byte [bp-044h], 005h ; c6 46 bc 05 ; 0xfa503
+ mov byte [bp-043h], al ; 88 46 bd ; 0xfa507
+ mov cx, 00200h ; b9 00 02 ; 0xfa50a
+ xor bx, bx ; 31 db ; 0xfa50d
+ mov dx, ss ; 8c d2 ; 0xfa50f
+ lea ax, [bp-00248h] ; 8d 86 b8 fd ; 0xfa511
+ call 0b090h ; e8 78 0b ; 0xfa515
+ xor ax, ax ; 31 c0 ; 0xfa518
+ push ax ; 50 ; 0xfa51a
+ push ax ; 50 ; 0xfa51b
+ push ax ; 50 ; 0xfa51c
+ mov ax, strict word 00005h ; b8 05 00 ; 0xfa51d
+ push ax ; 50 ; 0xfa520
+ lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xfa521
+ push SS ; 16 ; 0xfa525
+ push dx ; 52 ; 0xfa526
+ mov ax, strict word 00006h ; b8 06 00 ; 0xfa527
+ push ax ; 50 ; 0xfa52a
+ lea dx, [bp-048h] ; 8d 56 b8 ; 0xfa52b
+ push SS ; 16 ; 0xfa52e
+ push dx ; 52 ; 0xfa52f
+ mov al, byte [bp-02ch] ; 8a 46 d4 ; 0xfa530
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xfa533
+ mov byte [bp-00fh], 000h ; c6 46 f1 00 ; 0xfa536
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xfa53a
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xfa53d
+ mov dx, word [bp-0024ch] ; 8b 96 b4 fd ; 0xfa541
+ call 09b57h ; e8 0f f6 ; 0xfa545
+ test al, al ; 84 c0 ; 0xfa548
+ jne short 0a4ddh ; 75 91 ; 0xfa54a
+ mov es, [bp-012h] ; 8e 46 ee ; 0xfa54c
+ mov al, byte [es:di+002a4h] ; 26 8a 85 a4 02 ; 0xfa54f
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xfa554
+ test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xfa557
+ jne short 0a568h ; 75 0a ; 0xfa55c
+ test byte [bp-00248h], 01fh ; f6 86 b8 fd 1f ; 0xfa55e
+ jne short 0a568h ; 75 03 ; 0xfa563
+ jmp near 0a0ebh ; e9 83 fb ; 0xfa565
+ test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xfa568
+ je short 0a572h ; 74 03 ; 0xfa56d
+ jmp near 0a4ddh ; e9 6b ff ; 0xfa56f
+ mov al, byte [bp-00248h] ; 8a 86 b8 fd ; 0xfa572
+ and AL, strict byte 01fh ; 24 1f ; 0xfa576
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfa578
+ jne short 0a57fh ; 75 03 ; 0xfa57a
+ jmp near 0a44ah ; e9 cb fe ; 0xfa57c
+ jmp short 0a56fh ; eb ee ; 0xfa57f
+ xor ax, ax ; 31 c0 ; 0xfa581 virtio.c:949
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa583
+ pop di ; 5f ; 0xfa586
+ pop si ; 5e ; 0xfa587
+ pop cx ; 59 ; 0xfa588
+ pop bx ; 5b ; 0xfa589
+ pop bp ; 5d ; 0xfa58a
+ retn ; c3 ; 0xfa58b
+ ; disGetNextSymbol 0xfa58c LB 0xe2c -> off=0x0 cb=000000000000036a uValue=00000000000f8f8c 'virtio_scsi_hba_init'
+virtio_scsi_hba_init: ; 0xfa58c LB 0x36a
+ push bp ; 55 ; 0xfa58c virtio.c:954
+ mov bp, sp ; 89 e5 ; 0xfa58d
+ push cx ; 51 ; 0xfa58f
+ push si ; 56 ; 0xfa590
+ push di ; 57 ; 0xfa591
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xfa592
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xfa595
+ mov ch, dl ; 88 d5 ; 0xfa598
+ mov cl, bl ; 88 d9 ; 0xfa59a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xfa59c virtio.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfa59f
+ mov es, ax ; 8e c0 ; 0xfa5a2
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xfa5a4
+ mov si, strict word 0005eh ; be 5e 00 ; 0xfa5a7 virtio.c:964
+ call 09996h ; e8 e9 f3 ; 0xfa5aa virtio.c:967
+ test ax, ax ; 85 c0 ; 0xfa5ad virtio.c:968
+ je short 0a60dh ; 74 5c ; 0xfa5af
+ mov es, bx ; 8e c3 ; 0xfa5b1 virtio.c:971
+ mov word [es:si+002a6h], ax ; 26 89 84 a6 02 ; 0xfa5b3
+ xor di, di ; 31 ff ; 0xfa5b8 virtio.c:978
+ mov es, ax ; 8e c0 ; 0xfa5ba
+ xor si, si ; 31 f6 ; 0xfa5bc
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfa5be
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa5c1 virtio.c:979
+ mov byte [es:di+000b2h], al ; 26 88 85 b2 00 ; 0xfa5c4
+ mov byte [es:di+000b3h], ch ; 26 88 ad b3 00 ; 0xfa5c9 virtio.c:980
+ test cl, cl ; 84 c9 ; 0xfa5ce virtio.c:987
+ je short 0a632h ; 74 60 ; 0xfa5d0
+ mov bl, cl ; 88 cb ; 0xfa5d2 virtio.c:989
+ xor bh, bh ; 30 ff ; 0xfa5d4
+ mov byte [bp-00eh], ch ; 88 6e f2 ; 0xfa5d6
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xfa5d9
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa5dc
+ mov byte [bp-014h], al ; 88 46 ec ; 0xfa5df
+ mov byte [bp-013h], bh ; 88 7e ed ; 0xfa5e2
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa5e5
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xfa5e8
+ call 0ae32h ; e8 44 08 ; 0xfa5eb
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xfa5ee
+ mov bl, cl ; 88 cb ; 0xfa5f1 virtio.c:990
+ add bl, 002h ; 80 c3 02 ; 0xfa5f3
+ xor bh, bh ; 30 ff ; 0xfa5f6
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa5f8
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xfa5fb
+ call 0ae32h ; e8 31 08 ; 0xfa5fe
+ cmp byte [bp-01ah], 009h ; 80 7e e6 09 ; 0xfa601 virtio.c:994
+ jne short 0a62fh ; 75 28 ; 0xfa605
+ cmp AL, strict byte 010h ; 3c 10 ; 0xfa607
+ jnc short 0a610h ; 73 05 ; 0xfa609
+ jmp short 0a62fh ; eb 22 ; 0xfa60b
+ jmp near 0a8eeh ; e9 de 02 ; 0xfa60d
+ mov bl, cl ; 88 cb ; 0xfa610 virtio.c:998
+ add bl, 003h ; 80 c3 03 ; 0xfa612
+ xor bh, bh ; 30 ff ; 0xfa615
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xfa617
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xfa61a
+ call 0ae32h ; e8 12 08 ; 0xfa61d
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xfa620
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfa623 virtio.c:1001
+ je short 0a635h ; 74 0e ; 0xfa625
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa627
+ jc short 0a62fh ; 72 04 ; 0xfa629
+ cmp AL, strict byte 004h ; 3c 04 ; 0xfa62b
+ jbe short 0a638h ; 76 09 ; 0xfa62d
+ jmp near 0a6d6h ; e9 a4 00 ; 0xfa62f
+ jmp near 0a6edh ; e9 b8 00 ; 0xfa632
+ jmp near 0a6ceh ; e9 96 00 ; 0xfa635
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa638 virtio.c:1008
+ xor ah, ah ; 30 e4 ; 0xfa63b
+ dec ax ; 48 ; 0xfa63d
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xfa63e
+ imul dx ; f7 ea ; 0xfa641
+ lea di, [si+07ch] ; 8d 7c 7c ; 0xfa643
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa646
+ mov word [bp-016h], dx ; 89 56 ea ; 0xfa649
+ add di, ax ; 01 c7 ; 0xfa64c
+ mov bl, cl ; 88 cb ; 0xfa64e virtio.c:1010
+ add bl, 004h ; 80 c3 04 ; 0xfa650
+ xor bh, bh ; 30 ff ; 0xfa653
+ mov byte [bp-010h], ch ; 88 6e f0 ; 0xfa655
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xfa658
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa65b
+ mov byte [bp-012h], al ; 88 46 ee ; 0xfa65e
+ mov byte [bp-011h], bh ; 88 7e ef ; 0xfa661
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa664
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa667
+ call 0ae32h ; e8 c5 07 ; 0xfa66a
+ mov es, [bp-016h] ; 8e 46 ea ; 0xfa66d
+ mov byte [es:di], al ; 26 88 05 ; 0xfa670
+ mov bl, cl ; 88 cb ; 0xfa673 virtio.c:1011
+ add bl, 008h ; 80 c3 08 ; 0xfa675
+ xor bh, bh ; 30 ff ; 0xfa678
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa67a
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa67d
+ call 0ae7eh ; e8 fb 07 ; 0xfa680
+ mov es, [bp-016h] ; 8e 46 ea ; 0xfa683
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfa686
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfa68a
+ mov bl, cl ; 88 cb ; 0xfa68e virtio.c:1012
+ add bl, 00ch ; 80 c3 0c ; 0xfa690
+ xor bh, bh ; 30 ff ; 0xfa693
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa695
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa698
+ call 0ae7eh ; e8 e0 07 ; 0xfa69b
+ mov es, [bp-016h] ; 8e 46 ea ; 0xfa69e
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xfa6a1
+ mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xfa6a5
+ cmp byte [bp-008h], 002h ; 80 7e f8 02 ; 0xfa6a9 virtio.c:1013
+ jne short 0a6d6h ; 75 27 ; 0xfa6ad
+ mov bl, cl ; 88 cb ; 0xfa6af virtio.c:1015
+ add bl, 010h ; 80 c3 10 ; 0xfa6b1
+ xor bh, bh ; 30 ff ; 0xfa6b4
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa6b6
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xfa6b9
+ call 0ae7eh ; e8 bf 07 ; 0xfa6bc
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xfa6bf
+ mov word [es:si+000aeh], ax ; 26 89 84 ae 00 ; 0xfa6c2
+ mov word [es:si+000b0h], dx ; 26 89 94 b0 00 ; 0xfa6c7
+ jmp short 0a6d6h ; eb 08 ; 0xfa6cc virtio.c:1018
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xfa6ce virtio.c:1021
+ mov byte [es:si+000ach], cl ; 26 88 8c ac 00 ; 0xfa6d1
+ mov bl, cl ; 88 cb ; 0xfa6d6 virtio.c:1030
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xfa6d8
+ xor bh, bh ; 30 ff ; 0xfa6da
+ mov dl, ch ; 88 ea ; 0xfa6dc
+ xor dh, dh ; 30 f6 ; 0xfa6de
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xfa6e0
+ xor ah, ah ; 30 e4 ; 0xfa6e3
+ call 0ae32h ; e8 4a 07 ; 0xfa6e5
+ mov cl, al ; 88 c1 ; 0xfa6e8
+ jmp near 0a5ceh ; e9 e1 fe ; 0xfa6ea virtio.c:1031
+ xor ch, ch ; 30 ed ; 0xfa6ed virtio.c:1035
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa6ef
+ mov ax, si ; 89 f0 ; 0xfa6f2
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa6f4
+ call 097bch ; e8 c2 f0 ; 0xfa6f7
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa6fa virtio.c:1038
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa6fd
+ mov ax, si ; 89 f0 ; 0xfa700
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa702
+ call 097bch ; e8 b4 f0 ; 0xfa705
+ mov byte [bp-00ah], 003h ; c6 46 f6 03 ; 0xfa708 virtio.c:1040
+ mov cx, strict word 00003h ; b9 03 00 ; 0xfa70c virtio.c:1041
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa70f
+ mov ax, si ; 89 f0 ; 0xfa712
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa714
+ call 097bch ; e8 a2 f0 ; 0xfa717
+ xor bx, bx ; 31 db ; 0xfa71a virtio.c:1050
+ mov ax, si ; 89 f0 ; 0xfa71c
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa71e
+ call 098aah ; e8 86 f1 ; 0xfa721
+ test dx, dx ; 85 d2 ; 0xfa724
+ jne short 0a72dh ; 75 05 ; 0xfa726
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xfa728
+ jc short 0a769h ; 72 3c ; 0xfa72b
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa72d
+ mov ax, si ; 89 f0 ; 0xfa730
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa732
+ call 098aah ; e8 72 f1 ; 0xfa735
+ test dx, dx ; 85 d2 ; 0xfa738
+ jne short 0a741h ; 75 05 ; 0xfa73a
+ cmp ax, strict word 00010h ; 3d 10 00 ; 0xfa73c
+ jc short 0a769h ; 72 28 ; 0xfa73f
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa741
+ mov ax, si ; 89 f0 ; 0xfa744
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa746
+ call 098aah ; e8 5e f1 ; 0xfa749
+ test dx, dx ; 85 d2 ; 0xfa74c
+ jne short 0a755h ; 75 05 ; 0xfa74e
+ cmp ax, strict word 00020h ; 3d 20 00 ; 0xfa750
+ jc short 0a769h ; 72 14 ; 0xfa753
+ mov bx, strict word 00008h ; bb 08 00 ; 0xfa755
+ mov ax, si ; 89 f0 ; 0xfa758
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa75a
+ call 098aah ; e8 4a f1 ; 0xfa75d
+ test dx, dx ; 85 d2 ; 0xfa760
+ jne short 0a76eh ; 75 0a ; 0xfa762
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xfa764
+ jnc short 0a76eh ; 73 05 ; 0xfa767
+ xor ax, ax ; 31 c0 ; 0xfa769 virtio.c:1056
+ jmp near 0a8eeh ; e9 80 01 ; 0xfa76b
+ xor ax, ax ; 31 c0 ; 0xfa76e virtio.c:1059
+ push ax ; 50 ; 0xfa770
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfa771
+ push ax ; 50 ; 0xfa774
+ mov bx, strict word 0000ch ; bb 0c 00 ; 0xfa775
+ mov ax, si ; 89 f0 ; 0xfa778
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa77a
+ call 09869h ; e8 e9 f0 ; 0xfa77d
+ or byte [bp-00ah], 008h ; 80 4e f6 08 ; 0xfa780 virtio.c:1062
+ mov cl, byte [bp-00ah] ; 8a 4e f6 ; 0xfa784 virtio.c:1063
+ xor ch, ch ; 30 ed ; 0xfa787
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa789
+ mov ax, si ; 89 f0 ; 0xfa78c
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa78e
+ call 097bch ; e8 28 f0 ; 0xfa791
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa794 virtio.c:1066
+ mov ax, si ; 89 f0 ; 0xfa797
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa799
+ call 09783h ; e8 e4 ef ; 0xfa79c
+ test AL, strict byte 008h ; a8 08 ; 0xfa79f
+ je short 0a769h ; 74 c6 ; 0xfa7a1
+ xor cx, cx ; 31 c9 ; 0xfa7a3 virtio.c:1073
+ mov bx, strict word 00016h ; bb 16 00 ; 0xfa7a5
+ mov ax, si ; 89 f0 ; 0xfa7a8
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa7aa
+ call 09830h ; e8 80 f0 ; 0xfa7ad
+ xor cx, cx ; 31 c9 ; 0xfa7b0 virtio.c:1074
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa7b2
+ mov ax, si ; 89 f0 ; 0xfa7b5
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa7b7
+ call 09830h ; e8 73 f0 ; 0xfa7ba
+ xor cx, cx ; 31 c9 ; 0xfa7bd virtio.c:1075
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xfa7bf
+ mov ax, si ; 89 f0 ; 0xfa7c2
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa7c4
+ call 09830h ; e8 66 f0 ; 0xfa7c7
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa7ca virtio.c:1077
+ mov bx, strict word 00016h ; bb 16 00 ; 0xfa7cd
+ mov ax, si ; 89 f0 ; 0xfa7d0
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa7d2
+ call 09830h ; e8 58 f0 ; 0xfa7d5
+ xor cx, cx ; 31 c9 ; 0xfa7d8 virtio.c:1078
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa7da
+ mov ax, si ; 89 f0 ; 0xfa7dd
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa7df
+ call 09830h ; e8 4b f0 ; 0xfa7e2
+ xor cx, cx ; 31 c9 ; 0xfa7e5 virtio.c:1079
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xfa7e7
+ mov ax, si ; 89 f0 ; 0xfa7ea
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa7ec
+ call 09830h ; e8 3e f0 ; 0xfa7ef
+ mov cx, strict word 00002h ; b9 02 00 ; 0xfa7f2 virtio.c:1082
+ mov bx, strict word 00016h ; bb 16 00 ; 0xfa7f5
+ mov ax, si ; 89 f0 ; 0xfa7f8
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa7fa
+ call 09830h ; e8 30 f0 ; 0xfa7fd
+ mov cx, strict word 00003h ; b9 03 00 ; 0xfa800 virtio.c:1083
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa803
+ mov ax, si ; 89 f0 ; 0xfa806
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa808
+ call 09830h ; e8 22 f0 ; 0xfa80b
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfa80e virtio.c:1084
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xfa811
+ mov ax, si ; 89 f0 ; 0xfa814
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa816
+ call 09830h ; e8 14 f0 ; 0xfa819
+ mov ax, si ; 89 f0 ; 0xfa81c virtio.c:1087
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa81e
+ call 099d0h ; e8 ac f1 ; 0xfa821
+ push dx ; 52 ; 0xfa824
+ push ax ; 50 ; 0xfa825
+ mov bx, strict word 00020h ; bb 20 00 ; 0xfa826
+ mov ax, si ; 89 f0 ; 0xfa829
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa82b
+ call 09869h ; e8 38 f0 ; 0xfa82e
+ xor ax, ax ; 31 c0 ; 0xfa831 virtio.c:1088
+ push ax ; 50 ; 0xfa833
+ push ax ; 50 ; 0xfa834
+ mov bx, strict word 00024h ; bb 24 00 ; 0xfa835
+ mov ax, si ; 89 f0 ; 0xfa838
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa83a
+ call 09869h ; e8 29 f0 ; 0xfa83d
+ lea ax, [si+050h] ; 8d 44 50 ; 0xfa840 virtio.c:1090
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa843
+ call 099d0h ; e8 87 f1 ; 0xfa846
+ push dx ; 52 ; 0xfa849
+ push ax ; 50 ; 0xfa84a
+ mov bx, strict word 00028h ; bb 28 00 ; 0xfa84b
+ mov ax, si ; 89 f0 ; 0xfa84e
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa850
+ call 09869h ; e8 13 f0 ; 0xfa853
+ xor ax, ax ; 31 c0 ; 0xfa856 virtio.c:1091
+ push ax ; 50 ; 0xfa858
+ push ax ; 50 ; 0xfa859
+ mov bx, strict word 0002ch ; bb 2c 00 ; 0xfa85a
+ mov ax, si ; 89 f0 ; 0xfa85d
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa85f
+ call 09869h ; e8 04 f0 ; 0xfa862
+ lea ax, [si+05ch] ; 8d 44 5c ; 0xfa865 virtio.c:1093
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa868
+ call 099d0h ; e8 62 f1 ; 0xfa86b
+ push dx ; 52 ; 0xfa86e
+ push ax ; 50 ; 0xfa86f
+ mov bx, strict word 00030h ; bb 30 00 ; 0xfa870
+ mov ax, si ; 89 f0 ; 0xfa873
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa875
+ call 09869h ; e8 ee ef ; 0xfa878
+ xor ax, ax ; 31 c0 ; 0xfa87b virtio.c:1094
+ push ax ; 50 ; 0xfa87d
+ push ax ; 50 ; 0xfa87e
+ mov bx, strict word 00034h ; bb 34 00 ; 0xfa87f
+ mov ax, si ; 89 f0 ; 0xfa882
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa884
+ call 09869h ; e8 df ef ; 0xfa887
+ xor ax, ax ; 31 c0 ; 0xfa88a virtio.c:1096
+ push ax ; 50 ; 0xfa88c
+ mov ax, strict word 00010h ; b8 10 00 ; 0xfa88d
+ push ax ; 50 ; 0xfa890
+ mov bx, strict word 00018h ; bb 18 00 ; 0xfa891
+ mov ax, si ; 89 f0 ; 0xfa894
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa896
+ call 098e3h ; e8 47 f0 ; 0xfa899
+ xor ax, ax ; 31 c0 ; 0xfa89c virtio.c:1097
+ push ax ; 50 ; 0xfa89e
+ mov ax, strict word 00020h ; b8 20 00 ; 0xfa89f
+ push ax ; 50 ; 0xfa8a2
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa8a3
+ mov ax, si ; 89 f0 ; 0xfa8a6
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa8a8
+ call 098e3h ; e8 35 f0 ; 0xfa8ab
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfa8ae virtio.c:1100
+ mov ax, si ; 89 f0 ; 0xfa8b1
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa8b3
+ call 097f7h ; e8 3e ef ; 0xfa8b6
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xfa8b9
+ mov bx, word [es:si+000aeh] ; 26 8b 9c ae 00 ; 0xfa8bc
+ mov cx, word [es:si+000b0h] ; 26 8b 8c b0 00 ; 0xfa8c1
+ xor dx, dx ; 31 d2 ; 0xfa8c6
+ call 0b020h ; e8 55 07 ; 0xfa8c8
+ mov word [es:si+078h], ax ; 26 89 44 78 ; 0xfa8cb
+ mov word [es:si+07ah], dx ; 26 89 54 7a ; 0xfa8cf
+ or byte [bp-00ah], 004h ; 80 4e f6 04 ; 0xfa8d3 virtio.c:1103
+ mov cl, byte [bp-00ah] ; 8a 4e f6 ; 0xfa8d7 virtio.c:1104
+ xor ch, ch ; 30 ed ; 0xfa8da
+ mov bx, strict word 00014h ; bb 14 00 ; 0xfa8dc
+ mov ax, si ; 89 f0 ; 0xfa8df
+ mov dx, es ; 8c c2 ; 0xfa8e1
+ call 097bch ; e8 d6 ee ; 0xfa8e3
+ mov ax, si ; 89 f0 ; 0xfa8e6 virtio.c:1106
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xfa8e8
+ call 0a0c5h ; e8 d7 f7 ; 0xfa8eb
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfa8ee virtio.c:1107
+ pop di ; 5f ; 0xfa8f1
+ pop si ; 5e ; 0xfa8f2
+ pop cx ; 59 ; 0xfa8f3
+ pop bp ; 5d ; 0xfa8f4
+ retn ; c3 ; 0xfa8f5
+ ; disGetNextSymbol 0xfa8f6 LB 0xac2 -> off=0x0 cb=00000000000000f9 uValue=00000000000f92f6 'virtio_scsi_init'
+virtio_scsi_init: ; 0xfa8f6 LB 0xf9
+ push bp ; 55 ; 0xfa8f6 virtio.c:1112
+ mov bp, sp ; 89 e5 ; 0xfa8f7
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xfa8f9
+ mov dx, 01048h ; ba 48 10 ; 0xfa8fc virtio.c:1116
+ mov ax, 01af4h ; b8 f4 1a ; 0xfa8ff
+ call 0ae0fh ; e8 0a 05 ; 0xfa902
+ mov dx, ax ; 89 c2 ; 0xfa905
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa907 virtio.c:1117
+ je short 0a96ah ; 74 5e ; 0xfa90a
+ mov byte [bp-002h], 0ffh ; c6 46 fe ff ; 0xfa90c virtio.c:1121
+ mov byte [bp-004h], 000h ; c6 46 fc 00 ; 0xfa910 virtio.c:1122
+ mov al, ah ; 88 e0 ; 0xfa914 virtio.c:1124
+ mov byte [bp-008h], ah ; 88 66 f8 ; 0xfa916
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xfa919 virtio.c:1125
+ xor dh, ah ; 30 e6 ; 0xfa91c virtio.c:1130
+ xor ah, ah ; 30 e4 ; 0xfa91e
+ mov bx, strict word 00034h ; bb 34 00 ; 0xfa920
+ call 0ae32h ; e8 0c 05 ; 0xfa923
+ mov ch, al ; 88 c5 ; 0xfa926
+ test ch, ch ; 84 ed ; 0xfa928 virtio.c:1132
+ je short 0a990h ; 74 64 ; 0xfa92a
+ mov bl, ch ; 88 eb ; 0xfa92c virtio.c:1134
+ xor bh, bh ; 30 ff ; 0xfa92e
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa930
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xfa933
+ mov byte [bp-00bh], bh ; 88 7e f5 ; 0xfa936
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa939
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xfa93c
+ mov byte [bp-009h], bh ; 88 7e f7 ; 0xfa93f
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xfa942
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa945
+ call 0ae32h ; e8 e7 04 ; 0xfa948
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xfa94b
+ mov bl, ch ; 88 eb ; 0xfa94e virtio.c:1135
+ add bl, 002h ; 80 c3 02 ; 0xfa950
+ xor bh, bh ; 30 ff ; 0xfa953
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xfa955
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa958
+ call 0ae32h ; e8 d4 04 ; 0xfa95b
+ cmp byte [bp-010h], 009h ; 80 7e f0 09 ; 0xfa95e virtio.c:1139
+ jne short 0a99dh ; 75 39 ; 0xfa962
+ cmp AL, strict byte 010h ; 3c 10 ; 0xfa964
+ jnc short 0a96dh ; 73 05 ; 0xfa966
+ jmp short 0a99dh ; eb 33 ; 0xfa968
+ jmp near 0a9ebh ; e9 7e 00 ; 0xfa96a
+ mov bl, ch ; 88 eb ; 0xfa96d virtio.c:1143
+ add bl, 003h ; 80 c3 03 ; 0xfa96f
+ xor bh, bh ; 30 ff ; 0xfa972
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xfa974
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa977
+ call 0ae32h ; e8 b5 04 ; 0xfa97a
+ cmp byte [bp-002h], 0ffh ; 80 7e fe ff ; 0xfa97d virtio.c:1145
+ jne short 0a986h ; 75 03 ; 0xfa981
+ mov byte [bp-002h], ch ; 88 6e fe ; 0xfa983 virtio.c:1146
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfa986 virtio.c:1149
+ jc short 0a99dh ; 72 13 ; 0xfa988
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfa98a
+ jbe short 0a992h ; 76 04 ; 0xfa98c
+ jmp short 0a99dh ; eb 0d ; 0xfa98e
+ jmp short 0a9b0h ; eb 1e ; 0xfa990
+ mov cl, al ; 88 c1 ; 0xfa992 virtio.c:1156
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xfa994
+ mov AL, strict byte 001h ; b0 01 ; 0xfa996
+ sal al, CL ; d2 e0 ; 0xfa998
+ or byte [bp-004h], al ; 08 46 fc ; 0xfa99a
+ mov bl, ch ; 88 eb ; 0xfa99d virtio.c:1163
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xfa99f
+ xor bh, bh ; 30 ff ; 0xfa9a1
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xfa9a3
+ xor dh, dh ; 30 f6 ; 0xfa9a6
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa9a8
+ xor ah, ah ; 30 e4 ; 0xfa9ab
+ jmp near 0a923h ; e9 73 ff ; 0xfa9ad virtio.c:1164
+ cmp byte [bp-002h], 0ffh ; 80 7e fe ff ; 0xfa9b0 virtio.c:1167
+ je short 0a9ebh ; 74 35 ; 0xfa9b4
+ cmp byte [bp-004h], 01fh ; 80 7e fc 1f ; 0xfa9b6
+ jne short 0a9ebh ; 75 2f ; 0xfa9ba
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa9bc virtio.c:1175
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xfa9bf
+ mov byte [bp-00fh], ch ; 88 6e f1 ; 0xfa9c2
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa9c5
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xfa9c8
+ mov byte [bp-00dh], ch ; 88 6e f3 ; 0xfa9cb
+ mov cx, strict word 00007h ; b9 07 00 ; 0xfa9ce
+ mov bx, strict word 00004h ; bb 04 00 ; 0xfa9d1
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa9d4
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xfa9d7
+ call 0aebdh ; e8 e0 04 ; 0xfa9da
+ mov bl, byte [bp-002h] ; 8a 5e fe ; 0xfa9dd virtio.c:1177
+ xor bh, bh ; 30 ff ; 0xfa9e0
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xfa9e2
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xfa9e5
+ call 0a58ch ; e8 a1 fb ; 0xfa9e8
+ mov sp, bp ; 89 ec ; 0xfa9eb virtio.c:1184
+ pop bp ; 5d ; 0xfa9ed
+ retn ; c3 ; 0xfa9ee
+ ; disGetNextSymbol 0xfa9ef LB 0x9c9 -> off=0x0 cb=000000000000001b uValue=00000000000f93ef 'apm_out_str'
+apm_out_str: ; 0xfa9ef LB 0x1b
+ push bp ; 55 ; 0xfa9ef apm.c:146
+ mov bp, sp ; 89 e5 ; 0xfa9f0
+ push bx ; 53 ; 0xfa9f2
+ mov bx, ax ; 89 c3 ; 0xfa9f3
+ cmp byte [bx], 000h ; 80 3f 00 ; 0xfa9f5 apm.c:148
+ je short 0aa04h ; 74 0a ; 0xfa9f8
+ mov al, byte [bx] ; 8a 07 ; 0xfa9fa apm.c:149
+ out DX, AL ; ee ; 0xfa9fc
+ inc bx ; 43 ; 0xfa9fd
+ mov al, byte [bx] ; 8a 07 ; 0xfa9fe
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfaa00
+ jne short 0a9fch ; 75 f8 ; 0xfaa02
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfaa04 apm.c:150
+ pop bx ; 5b ; 0xfaa07
+ pop bp ; 5d ; 0xfaa08
+ retn ; c3 ; 0xfaa09
+ ; disGetNextSymbol 0xfaa0a LB 0x9ae -> off=0x1d cb=00000000000000da uValue=00000000000f9427 'apm_function'
+ db 00eh, 00bh, 007h, 006h, 005h, 004h, 002h, 001h, 000h, 0cdh, 0aah, 055h, 0aah, 0fbh, 0aah, 067h
+ db 0aah, 0fbh, 0aah, 082h, 0aah, 0fbh, 0aah, 087h, 0aah, 0c8h, 0aah, 0c1h, 0aah
+apm_function: ; 0xfaa27 LB 0xda
+ push bp ; 55 ; 0xfaa27 apm.c:152
+ mov bp, sp ; 89 e5 ; 0xfaa28
+ push di ; 57 ; 0xfaa2a
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xfaa2b apm.c:156
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xfaa2f apm.c:157
+ xor dh, dh ; 30 f6 ; 0xfaa32
+ cmp dx, strict byte 0000eh ; 83 fa 0e ; 0xfaa34
+ jnbe short 0aaa4h ; 77 6b ; 0xfaa37
+ mov al, dl ; 88 d0 ; 0xfaa39
+ push CS ; 0e ; 0xfaa3b
+ pop ES ; 07 ; 0xfaa3c
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xfaa3d
+ mov di, 0aa0ah ; bf 0a aa ; 0xfaa40
+ repne scasb ; f2 ae ; 0xfaa43
+ sal cx, 1 ; d1 e1 ; 0xfaa45
+ mov di, cx ; 89 cf ; 0xfaa47
+ mov bx, word [cs:di-055edh] ; 2e 8b 9d 13 aa ; 0xfaa49
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xfaa4e
+ or AL, strict byte 001h ; 0c 01 ; 0xfaa51
+ jmp bx ; ff e3 ; 0xfaa53
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfaa55 apm.c:159
+ mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xfaa5a apm.c:160
+ mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xfaa5f apm.c:161
+ jmp near 0aafbh ; e9 94 00 ; 0xfaa64 apm.c:162
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfaa67 apm.c:172
+ mov word [bp+00ch], 0b11bh ; c7 46 0c 1b b1 ; 0xfaa6c apm.c:173
+ mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xfaa71 apm.c:174
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfaa76 apm.c:175
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfaa79
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfaa7c apm.c:176
+ jmp near 0aafbh ; e9 79 00 ; 0xfaa7f apm.c:177
+ sti ; fb ; 0xfaa82 apm.c:194
+ hlt ; f4 ; 0xfaa83 apm.c:195
+ jmp near 0aafbh ; e9 74 00 ; 0xfaa84 apm.c:196
+ cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xfaa87 apm.c:200
+ je short 0aaaeh ; 74 21 ; 0xfaa8b
+ cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xfaa8d
+ je short 0aaa6h ; 74 13 ; 0xfaa91
+ cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xfaa93
+ jne short 0aab6h ; 75 1d ; 0xfaa97
+ mov dx, 0040fh ; ba 0f 04 ; 0xfaa99 apm.c:202
+ mov ax, 00e5ah ; b8 5a 0e ; 0xfaa9c
+ call 0a9efh ; e8 4d ff ; 0xfaa9f
+ jmp short 0aafbh ; eb 57 ; 0xfaaa2 apm.c:203
+ jmp short 0aacdh ; eb 27 ; 0xfaaa4
+ mov dx, 0040fh ; ba 0f 04 ; 0xfaaa6 apm.c:205
+ mov ax, 00e62h ; b8 62 0e ; 0xfaaa9
+ jmp short 0aa9fh ; eb f1 ; 0xfaaac
+ mov dx, 0040fh ; ba 0f 04 ; 0xfaaae apm.c:208
+ mov ax, 00e6ah ; b8 6a 0e ; 0xfaab1
+ jmp short 0aa9fh ; eb e9 ; 0xfaab4
+ or dh, 00ah ; 80 ce 0a ; 0xfaab6 apm.c:211
+ mov word [bp+012h], dx ; 89 56 12 ; 0xfaab9
+ mov word [bp+018h], ax ; 89 46 18 ; 0xfaabc apm.c:212
+ jmp short 0aafbh ; eb 3a ; 0xfaabf apm.c:214
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfaac1 apm.c:216
+ jmp short 0aafbh ; eb 33 ; 0xfaac6 apm.c:217
+ or dh, 080h ; 80 ce 80 ; 0xfaac8 apm.c:224
+ jmp short 0aab9h ; eb ec ; 0xfaacb
+ mov bx, 00eeah ; bb ea 0e ; 0xfaacd apm.c:228
+ mov cx, ds ; 8c d9 ; 0xfaad0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfaad2
+ call 018d9h ; e8 01 6e ; 0xfaad5
+ push word [bp+00ch] ; ff 76 0c ; 0xfaad8
+ push word [bp+012h] ; ff 76 12 ; 0xfaadb
+ mov ax, 00e73h ; b8 73 0e ; 0xfaade
+ push ax ; 50 ; 0xfaae1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfaae2
+ push ax ; 50 ; 0xfaae5
+ call 0191ch ; e8 33 6e ; 0xfaae6
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfaae9
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xfaaec apm.c:229
+ xor ah, ah ; 30 e4 ; 0xfaaef
+ or ah, 00ch ; 80 cc 0c ; 0xfaaf1
+ mov word [bp+012h], ax ; 89 46 12 ; 0xfaaf4
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xfaaf7 apm.c:230
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfaafb apm.c:232
+ pop di ; 5f ; 0xfaafe
+ pop bp ; 5d ; 0xfaaff
+ retn ; c3 ; 0xfab00
+ ; disGetNextSymbol 0xfab01 LB 0x8b7 -> off=0x0 cb=0000000000000024 uValue=00000000000f9501 'pci16_select_reg'
+pci16_select_reg: ; 0xfab01 LB 0x24
+ push bp ; 55 ; 0xfab01 pcibios.c:188
+ mov bp, sp ; 89 e5 ; 0xfab02
+ push bx ; 53 ; 0xfab04
+ and dl, 0fch ; 80 e2 fc ; 0xfab05 pcibios.c:190
+ mov bx, dx ; 89 d3 ; 0xfab08
+ mov dx, 00cf8h ; ba f8 0c ; 0xfab0a
+ movzx eax, ax ; 66 0f b7 c0 ; 0xfab0d
+ sal eax, 008h ; 66 c1 e0 08 ; 0xfab11
+ or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xfab15
+ db 08ah, 0c3h
+ ; mov al, bl ; 8a c3 ; 0xfab1b
+ out DX, eax ; 66 ef ; 0xfab1d
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfab1f pcibios.c:191
+ pop bx ; 5b ; 0xfab22
+ pop bp ; 5d ; 0xfab23
+ retn ; c3 ; 0xfab24
+ ; disGetNextSymbol 0xfab25 LB 0x893 -> off=0x0 cb=00000000000000f3 uValue=00000000000f9525 'pci16_find_device'
+pci16_find_device: ; 0xfab25 LB 0xf3
+ push bp ; 55 ; 0xfab25 pcibios.c:223
+ mov bp, sp ; 89 e5 ; 0xfab26
+ push si ; 56 ; 0xfab28
+ push di ; 57 ; 0xfab29
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xfab2a
+ push ax ; 50 ; 0xfab2d
+ push dx ; 52 ; 0xfab2e
+ mov si, bx ; 89 de ; 0xfab2f
+ mov di, cx ; 89 cf ; 0xfab31
+ test cx, cx ; 85 c9 ; 0xfab33 pcibios.c:233
+ xor bx, bx ; 31 db ; 0xfab35 pcibios.c:240
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xfab37 pcibios.c:241
+ test bl, 007h ; f6 c3 07 ; 0xfab3b pcibios.c:251
+ jne short 0ab6dh ; 75 2d ; 0xfab3e
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xfab40 pcibios.c:252
+ mov ax, bx ; 89 d8 ; 0xfab43
+ call 0ab01h ; e8 b9 ff ; 0xfab45
+ mov dx, 00cfeh ; ba fe 0c ; 0xfab48 pcibios.c:253
+ in AL, DX ; ec ; 0xfab4b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfab4c
+ mov byte [bp-006h], al ; 88 46 fa ; 0xfab4e
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfab51 pcibios.c:254
+ jne short 0ab5bh ; 75 06 ; 0xfab53
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfab55 pcibios.c:255
+ jmp near 0abf3h ; e9 98 00 ; 0xfab58 pcibios.c:256
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xfab5b pcibios.c:258
+ je short 0ab68h ; 74 07 ; 0xfab5f
+ mov word [bp-00ah], strict word 00001h ; c7 46 f6 01 00 ; 0xfab61 pcibios.c:259
+ jmp short 0ab6dh ; eb 05 ; 0xfab66 pcibios.c:260
+ mov word [bp-00ah], strict word 00008h ; c7 46 f6 08 00 ; 0xfab68 pcibios.c:261
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfab6d pcibios.c:272
+ and AL, strict byte 007h ; 24 07 ; 0xfab70
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfab72
+ jne short 0ab94h ; 75 1e ; 0xfab74
+ mov al, bh ; 88 f8 ; 0xfab76
+ xor ah, ah ; 30 e4 ; 0xfab78
+ test ax, ax ; 85 c0 ; 0xfab7a
+ jne short 0ab94h ; 75 16 ; 0xfab7c
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfab7e pcibios.c:274
+ mov ax, bx ; 89 d8 ; 0xfab81
+ call 0ab01h ; e8 7b ff ; 0xfab83
+ mov dx, 00cfeh ; ba fe 0c ; 0xfab86 pcibios.c:275
+ in AL, DX ; ec ; 0xfab89
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfab8a
+ cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xfab8c pcibios.c:276
+ jbe short 0ab94h ; 76 03 ; 0xfab8f
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xfab91 pcibios.c:277
+ test di, di ; 85 ff ; 0xfab94 pcibios.c:281
+ je short 0ab9dh ; 74 05 ; 0xfab96
+ mov dx, strict word 00008h ; ba 08 00 ; 0xfab98
+ jmp short 0ab9fh ; eb 02 ; 0xfab9b
+ xor dx, dx ; 31 d2 ; 0xfab9d
+ mov ax, bx ; 89 d8 ; 0xfab9f
+ call 0ab01h ; e8 5d ff ; 0xfaba1
+ mov dx, 00cfch ; ba fc 0c ; 0xfaba4 pcibios.c:282
+ in eax, DX ; 66 ed ; 0xfaba7
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfaba9
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfabab
+ xchg dx, ax ; 92 ; 0xfabaf
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xfabb0
+ mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xfabb3 pcibios.c:283
+ test di, di ; 85 ff ; 0xfabb8 pcibios.c:286
+ je short 0abd7h ; 74 1b ; 0xfabba
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xfabbc pcibios.c:287
+ je short 0abcbh ; 74 09 ; 0xfabc0
+ mov ax, dx ; 89 d0 ; 0xfabc2 pcibios.c:288
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xfabc4
+ jmp short 0abd7h ; eb 0c ; 0xfabc9 pcibios.c:289
+ mov cx, strict word 00008h ; b9 08 00 ; 0xfabcb pcibios.c:290
+ shr dx, 1 ; d1 ea ; 0xfabce
+ rcr ax, 1 ; d1 d8 ; 0xfabd0
+ loop 0abceh ; e2 fa ; 0xfabd2
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xfabd4
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xfabd7 pcibios.c:297
+ cmp dx, word [bp-012h] ; 3b 56 ee ; 0xfabda
+ jne short 0abe4h ; 75 05 ; 0xfabdd
+ cmp ax, word [bp-010h] ; 3b 46 f0 ; 0xfabdf
+ je short 0abeah ; 74 06 ; 0xfabe2
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xfabe4 pcibios.c:298
+ je short 0abf0h ; 74 06 ; 0xfabe8
+ dec si ; 4e ; 0xfabea
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfabeb
+ je short 0ac03h ; 74 13 ; 0xfabee
+ add bx, word [bp-00ah] ; 03 5e f6 ; 0xfabf0 pcibios.c:306
+ mov al, bh ; 88 f8 ; 0xfabf3 pcibios.c:307
+ xor ah, ah ; 30 e4 ; 0xfabf5
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xfabf7
+ xor dh, dh ; 30 f6 ; 0xfabfa
+ cmp ax, dx ; 39 d0 ; 0xfabfc
+ jnbe short 0ac03h ; 77 03 ; 0xfabfe
+ jmp near 0ab3bh ; e9 38 ff ; 0xfac00
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfac03 pcibios.c:309
+ jne short 0ac0ch ; 75 04 ; 0xfac06 pcibios.c:313
+ mov ax, bx ; 89 d8 ; 0xfac08
+ jmp short 0ac0fh ; eb 03 ; 0xfac0a
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfac0c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfac0f pcibios.c:314
+ pop di ; 5f ; 0xfac12
+ pop si ; 5e ; 0xfac13
+ pop bp ; 5d ; 0xfac14
+ retn 00002h ; c2 02 00 ; 0xfac15
+ ; disGetNextSymbol 0xfac18 LB 0x7a0 -> off=0xc cb=00000000000001db uValue=00000000000f9624 'pci16_function'
+ db 00bh, 0adh, 024h, 0adh, 036h, 0adh, 04ah, 0adh, 05ch, 0adh, 06fh, 0adh
+pci16_function: ; 0xfac24 LB 0x1db
+ push bp ; 55 ; 0xfac24 pcibios.c:316
+ mov bp, sp ; 89 e5 ; 0xfac25
+ push si ; 56 ; 0xfac27
+ push di ; 57 ; 0xfac28
+ push ax ; 50 ; 0xfac29
+ push ax ; 50 ; 0xfac2a
+ and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xfac2b pcibios.c:323
+ and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xfac30 pcibios.c:324
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfac34 pcibios.c:326
+ xor bh, bh ; 30 ff ; 0xfac37
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfac39
+ xor ah, ah ; 30 e4 ; 0xfac3c
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xfac3e
+ jc short 0ac56h ; 72 13 ; 0xfac41
+ jbe short 0acach ; 76 67 ; 0xfac43
+ cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xfac45
+ je short 0acaeh ; 74 64 ; 0xfac48
+ cmp bx, strict byte 00008h ; 83 fb 08 ; 0xfac4a
+ jc short 0ac60h ; 72 11 ; 0xfac4d
+ cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xfac4f
+ jbe short 0acb7h ; 76 63 ; 0xfac52
+ jmp short 0ac60h ; eb 0a ; 0xfac54
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xfac56
+ je short 0ac7fh ; 74 24 ; 0xfac59
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xfac5b
+ je short 0ac63h ; 74 03 ; 0xfac5e
+ jmp near 0adc8h ; e9 65 01 ; 0xfac60
+ mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xfac63 pcibios.c:328
+ mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xfac68 pcibios.c:329
+ mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xfac6d pcibios.c:331
+ mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xfac72 pcibios.c:332
+ mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xfac77
+ jmp near 0adf8h ; e9 79 01 ; 0xfac7c pcibios.c:333
+ cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xfac7f pcibios.c:338
+ jne short 0ac8bh ; 75 06 ; 0xfac83
+ or ah, 083h ; 80 cc 83 ; 0xfac85 pcibios.c:339
+ jmp near 0adf1h ; e9 66 01 ; 0xfac88 pcibios.c:340
+ xor al, al ; 30 c0 ; 0xfac8b pcibios.c:342
+ push ax ; 50 ; 0xfac8d
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfac8e
+ mov dx, word [bp+01ch] ; 8b 56 1c ; 0xfac91
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xfac94
+ xor cx, cx ; 31 c9 ; 0xfac97
+ call 0ab25h ; e8 89 fe ; 0xfac99
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfac9c pcibios.c:343
+ jne short 0acb1h ; 75 10 ; 0xfac9f
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfaca1 pcibios.c:344
+ xor ah, ah ; 30 e4 ; 0xfaca4
+ or ah, 086h ; 80 cc 86 ; 0xfaca6
+ jmp near 0adf1h ; e9 45 01 ; 0xfaca9
+ jmp short 0acb9h ; eb 0b ; 0xfacac
+ jmp near 0ad83h ; e9 d2 00 ; 0xfacae
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfacb1 pcibios.c:345
+ jmp near 0adf8h ; e9 41 01 ; 0xfacb4 pcibios.c:350
+ jmp short 0ace1h ; eb 28 ; 0xfacb7
+ xor al, al ; 30 c0 ; 0xfacb9 pcibios.c:352
+ push ax ; 50 ; 0xfacbb
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfacbc
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfacbf
+ mov dx, word [bp+01eh] ; 8b 56 1e ; 0xfacc2
+ mov cx, strict word 00001h ; b9 01 00 ; 0xfacc5
+ call 0ab25h ; e8 5a fe ; 0xfacc8
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfaccb pcibios.c:353
+ jne short 0acdbh ; 75 0b ; 0xfacce
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfacd0 pcibios.c:354
+ xor ah, ah ; 30 e4 ; 0xfacd3
+ or ah, 086h ; 80 cc 86 ; 0xfacd5
+ jmp near 0adf1h ; e9 16 01 ; 0xfacd8 pcibios.c:355
+ mov word [bp+014h], ax ; 89 46 14 ; 0xfacdb pcibios.c:357
+ jmp near 0adf8h ; e9 17 01 ; 0xfacde pcibios.c:359
+ cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xface1 pcibios.c:366
+ jc short 0aceeh ; 72 06 ; 0xface6
+ or ah, 087h ; 80 cc 87 ; 0xface8 pcibios.c:367
+ jmp near 0adf1h ; e9 03 01 ; 0xfaceb pcibios.c:368
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfacee pcibios.c:370
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfacf1
+ call 0ab01h ; e8 0a fe ; 0xfacf4
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfacf7 pcibios.c:371
+ xor bh, bh ; 30 ff ; 0xfacfa
+ sub bx, strict byte 00008h ; 83 eb 08 ; 0xfacfc
+ cmp bx, strict byte 00005h ; 83 fb 05 ; 0xfacff
+ jnbe short 0ad6ch ; 77 68 ; 0xfad02
+ sal bx, 1 ; d1 e3 ; 0xfad04
+ jmp word [cs:bx-053e8h] ; 2e ff a7 18 ac ; 0xfad06
+ mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xfad0b pcibios.c:373
+ xor bl, bl ; 30 db ; 0xfad0e
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfad10
+ and dx, strict byte 00003h ; 83 e2 03 ; 0xfad13
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfad16
+ in AL, DX ; ec ; 0xfad1a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xfad1b
+ or bx, ax ; 09 c3 ; 0xfad1d
+ mov word [bp+01ch], bx ; 89 5e 1c ; 0xfad1f
+ jmp short 0ad6ch ; eb 48 ; 0xfad22 pcibios.c:374
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfad24 pcibios.c:376
+ xor dh, dh ; 30 f6 ; 0xfad27
+ and dl, 002h ; 80 e2 02 ; 0xfad29
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfad2c
+ in ax, DX ; ed ; 0xfad30
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfad31
+ jmp short 0ad6ch ; eb 36 ; 0xfad34 pcibios.c:377
+ mov dx, 00cfch ; ba fc 0c ; 0xfad36 pcibios.c:379
+ in eax, DX ; 66 ed ; 0xfad39
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xfad3b
+ shr eax, 010h ; 66 c1 e8 10 ; 0xfad3d
+ xchg dx, ax ; 92 ; 0xfad41
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xfad42
+ mov word [bp+01eh], dx ; 89 56 1e ; 0xfad45
+ jmp short 0ad6ch ; eb 22 ; 0xfad48 pcibios.c:380
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfad4a pcibios.c:382
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfad4d
+ xor dh, dh ; 30 f6 ; 0xfad50
+ and dl, 003h ; 80 e2 03 ; 0xfad52
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfad55
+ out DX, AL ; ee ; 0xfad59
+ jmp short 0ad6ch ; eb 10 ; 0xfad5a pcibios.c:383
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfad5c pcibios.c:385
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xfad5f
+ xor dh, dh ; 30 f6 ; 0xfad62
+ and dl, 002h ; 80 e2 02 ; 0xfad64
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfad67
+ out DX, ax ; ef ; 0xfad6b
+ jmp near 0adf8h ; e9 89 00 ; 0xfad6c pcibios.c:386
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfad6f pcibios.c:388
+ mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xfad72
+ mov dx, 00cfch ; ba fc 0c ; 0xfad75
+ xchg cx, ax ; 91 ; 0xfad78
+ sal eax, 010h ; 66 c1 e0 10 ; 0xfad79
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xfad7d
+ out DX, eax ; 66 ef ; 0xfad7f
+ jmp short 0adf8h ; eb 75 ; 0xfad81 pcibios.c:392
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfad83 pcibios.c:394
+ mov es, [bp+026h] ; 8e 46 26 ; 0xfad86
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xfad89
+ mov [bp-006h], es ; 8c 46 fa ; 0xfad8c
+ mov cx, word [0f380h] ; 8b 0e 80 f3 ; 0xfad8f pcibios.c:398
+ cmp cx, word [es:bx] ; 26 3b 0f ; 0xfad93
+ jbe short 0ada9h ; 76 11 ; 0xfad96
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfad98 pcibios.c:399
+ xor ah, ah ; 30 e4 ; 0xfad9b
+ or ah, 089h ; 80 cc 89 ; 0xfad9d
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfada0
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfada3 pcibios.c:400
+ jmp short 0adbdh ; eb 14 ; 0xfada7 pcibios.c:401
+ les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xfada9 pcibios.c:402
+ mov si, 0f1a0h ; be a0 f1 ; 0xfadad
+ mov dx, ds ; 8c da ; 0xfadb0
+ push DS ; 1e ; 0xfadb2
+ mov ds, dx ; 8e da ; 0xfadb3
+ rep movsb ; f3 a4 ; 0xfadb5
+ pop DS ; 1f ; 0xfadb7
+ mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xfadb8 pcibios.c:404
+ mov ax, word [0f380h] ; a1 80 f3 ; 0xfadbd pcibios.c:406
+ les bx, [bp-008h] ; c4 5e f8 ; 0xfadc0
+ mov word [es:bx], ax ; 26 89 07 ; 0xfadc3
+ jmp short 0adf8h ; eb 30 ; 0xfadc6 pcibios.c:407
+ mov bx, 00eeah ; bb ea 0e ; 0xfadc8 pcibios.c:409
+ mov cx, ds ; 8c d9 ; 0xfadcb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfadcd
+ call 018d9h ; e8 06 6b ; 0xfadd0
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xfadd3
+ push ax ; 50 ; 0xfadd6
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfadd7
+ push ax ; 50 ; 0xfadda
+ mov ax, 00ea6h ; b8 a6 0e ; 0xfaddb
+ push ax ; 50 ; 0xfadde
+ mov ax, strict word 00004h ; b8 04 00 ; 0xfaddf
+ push ax ; 50 ; 0xfade2
+ call 0191ch ; e8 36 6b ; 0xfade3
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xfade6
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xfade9 pcibios.c:410
+ xor ah, ah ; 30 e4 ; 0xfadec
+ or ah, 081h ; 80 cc 81 ; 0xfadee
+ mov word [bp+020h], ax ; 89 46 20 ; 0xfadf1
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfadf4 pcibios.c:411
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfadf8 pcibios.c:413
+ pop di ; 5f ; 0xfadfb
+ pop si ; 5e ; 0xfadfc
+ pop bp ; 5d ; 0xfadfd
+ retn ; c3 ; 0xfadfe
+ ; disGetNextSymbol 0xfadff LB 0x5b9 -> off=0x0 cb=0000000000000008 uValue=00000000000f97ff 'pci_find_classcode'
+pci_find_classcode: ; 0xfadff LB 0x8
+ push bp ; 55 ; 0xfadff pciutil.c:125
+ mov bp, sp ; 89 e5 ; 0xfae00
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfae02 pciutil.c:132
+ pop bp ; 5d ; 0xfae05
+ retn ; c3 ; 0xfae06
+ ; disGetNextSymbol 0xfae07 LB 0x5b1 -> off=0x0 cb=0000000000000008 uValue=00000000000f9807 'pci_find_class_noif'
+pci_find_class_noif: ; 0xfae07 LB 0x8
+ push bp ; 55 ; 0xfae07 pciutil.c:145
+ mov bp, sp ; 89 e5 ; 0xfae08
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfae0a pciutil.c:153
+ pop bp ; 5d ; 0xfae0d
+ retn ; c3 ; 0xfae0e
+ ; disGetNextSymbol 0xfae0f LB 0x5a9 -> off=0x0 cb=0000000000000023 uValue=00000000000f980f 'pci_find_device'
+pci_find_device: ; 0xfae0f LB 0x23
+ push bp ; 55 ; 0xfae0f pciutil.c:166
+ mov bp, sp ; 89 e5 ; 0xfae10
+ push bx ; 53 ; 0xfae12
+ push cx ; 51 ; 0xfae13
+ push si ; 56 ; 0xfae14
+ mov cx, dx ; 89 d1 ; 0xfae15
+ xor si, si ; 31 f6 ; 0xfae17 pciutil.c:168
+ mov dx, ax ; 89 c2 ; 0xfae19
+ mov ax, 0b102h ; b8 02 b1 ; 0xfae1b
+ int 01ah ; cd 1a ; 0xfae1e
+ cmp ah, 000h ; 80 fc 00 ; 0xfae20
+ je short 0ae28h ; 74 03 ; 0xfae23
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xfae25
+ mov ax, bx ; 89 d8 ; 0xfae28
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xfae2a pciutil.c:169
+ pop si ; 5e ; 0xfae2d
+ pop cx ; 59 ; 0xfae2e
+ pop bx ; 5b ; 0xfae2f
+ pop bp ; 5d ; 0xfae30
+ retn ; c3 ; 0xfae31
+ ; disGetNextSymbol 0xfae32 LB 0x586 -> off=0x0 cb=0000000000000027 uValue=00000000000f9832 'pci_read_config_byte'
+pci_read_config_byte: ; 0xfae32 LB 0x27
+ push bp ; 55 ; 0xfae32 pciutil.c:171
+ mov bp, sp ; 89 e5 ; 0xfae33
+ push cx ; 51 ; 0xfae35
+ push di ; 57 ; 0xfae36
+ mov dh, al ; 88 c6 ; 0xfae37
+ mov bh, dl ; 88 d7 ; 0xfae39
+ mov al, bl ; 88 d8 ; 0xfae3b
+ xor ah, ah ; 30 e4 ; 0xfae3d pciutil.c:173
+ xor dl, dl ; 30 d2 ; 0xfae3f
+ mov bl, bh ; 88 fb ; 0xfae41
+ mov bh, dh ; 88 f7 ; 0xfae43
+ mov di, ax ; 89 c7 ; 0xfae45
+ mov ax, 0b108h ; b8 08 b1 ; 0xfae47
+ int 01ah ; cd 1a ; 0xfae4a
+ mov al, cl ; 88 c8 ; 0xfae4c
+ xor ah, ah ; 30 e4 ; 0xfae4e
+ xor dh, dh ; 30 f6 ; 0xfae50 pciutil.c:174
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfae52
+ pop di ; 5f ; 0xfae55
+ pop cx ; 59 ; 0xfae56
+ pop bp ; 5d ; 0xfae57
+ retn ; c3 ; 0xfae58
+ ; disGetNextSymbol 0xfae59 LB 0x55f -> off=0x0 cb=0000000000000025 uValue=00000000000f9859 'pci_read_config_word'
+pci_read_config_word: ; 0xfae59 LB 0x25
+ push bp ; 55 ; 0xfae59 pciutil.c:176
+ mov bp, sp ; 89 e5 ; 0xfae5a
+ push cx ; 51 ; 0xfae5c
+ push di ; 57 ; 0xfae5d
+ mov dh, al ; 88 c6 ; 0xfae5e
+ mov cl, dl ; 88 d1 ; 0xfae60
+ mov al, bl ; 88 d8 ; 0xfae62
+ xor ah, ah ; 30 e4 ; 0xfae64 pciutil.c:178
+ mov bh, dh ; 88 f7 ; 0xfae66
+ xor dh, dh ; 30 f6 ; 0xfae68
+ mov bl, dl ; 88 d3 ; 0xfae6a
+ mov di, ax ; 89 c7 ; 0xfae6c
+ mov ax, 0b109h ; b8 09 b1 ; 0xfae6e
+ int 01ah ; cd 1a ; 0xfae71
+ mov ax, cx ; 89 c8 ; 0xfae73
+ xor dl, dl ; 30 d2 ; 0xfae75 pciutil.c:179
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfae77
+ pop di ; 5f ; 0xfae7a
+ pop cx ; 59 ; 0xfae7b
+ pop bp ; 5d ; 0xfae7c
+ retn ; c3 ; 0xfae7d
+ ; disGetNextSymbol 0xfae7e LB 0x53a -> off=0x0 cb=000000000000003f uValue=00000000000f987e 'pci_read_config_dword'
+pci_read_config_dword: ; 0xfae7e LB 0x3f
+ push bp ; 55 ; 0xfae7e pciutil.c:181
+ mov bp, sp ; 89 e5 ; 0xfae7f
+ push cx ; 51 ; 0xfae81
+ push di ; 57 ; 0xfae82
+ push ax ; 50 ; 0xfae83
+ mov dh, al ; 88 c6 ; 0xfae84
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xfae86
+ mov al, bl ; 88 d8 ; 0xfae89 pciutil.c:186
+ xor ah, ah ; 30 e4 ; 0xfae8b
+ mov di, ax ; 89 c7 ; 0xfae8d
+ mov bx, dx ; 89 d3 ; 0xfae8f
+ mov ax, 0b109h ; b8 09 b1 ; 0xfae91
+ int 01ah ; cd 1a ; 0xfae94
+ test cx, cx ; 85 c9 ; 0xfae96
+ jne short 0aeaeh ; 75 14 ; 0xfae98
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfae9a
+ xor ah, ah ; 30 e4 ; 0xfae9d
+ mov di, ax ; 89 c7 ; 0xfae9f
+ inc di ; 47 ; 0xfaea1
+ inc di ; 47 ; 0xfaea2
+ mov bx, dx ; 89 d3 ; 0xfaea3
+ mov ax, 0b109h ; b8 09 b1 ; 0xfaea5
+ int 01ah ; cd 1a ; 0xfaea8
+ test cx, cx ; 85 c9 ; 0xfaeaa
+ je short 0aeb3h ; 74 05 ; 0xfaeac
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfaeae
+ jmp short 0aeb5h ; eb 02 ; 0xfaeb1
+ xor ax, ax ; 31 c0 ; 0xfaeb3
+ cwd ; 99 ; 0xfaeb5
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaeb6 pciutil.c:189
+ pop di ; 5f ; 0xfaeb9
+ pop cx ; 59 ; 0xfaeba
+ pop bp ; 5d ; 0xfaebb
+ retn ; c3 ; 0xfaebc
+ ; disGetNextSymbol 0xfaebd LB 0x4fb -> off=0x0 cb=000000000000001e uValue=00000000000f98bd 'pci_write_config_word'
+pci_write_config_word: ; 0xfaebd LB 0x1e
+ push bp ; 55 ; 0xfaebd pciutil.c:191
+ mov bp, sp ; 89 e5 ; 0xfaebe
+ push di ; 57 ; 0xfaec0
+ push ax ; 50 ; 0xfaec1
+ mov byte [bp-004h], al ; 88 46 fc ; 0xfaec2
+ mov al, bl ; 88 d8 ; 0xfaec5
+ xor ah, ah ; 30 e4 ; 0xfaec7 pciutil.c:193
+ mov di, ax ; 89 c7 ; 0xfaec9
+ mov bh, byte [bp-004h] ; 8a 7e fc ; 0xfaecb
+ mov bl, dl ; 88 d3 ; 0xfaece
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfaed0
+ int 01ah ; cd 1a ; 0xfaed3
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfaed5 pciutil.c:194
+ pop di ; 5f ; 0xfaed8
+ pop bp ; 5d ; 0xfaed9
+ retn ; c3 ; 0xfaeda
+ ; disGetNextSymbol 0xfaedb LB 0x4dd -> off=0x0 cb=000000000000001e uValue=00000000000f98db 'pci_write_config_byte'
+pci_write_config_byte: ; 0xfaedb LB 0x1e
+ push bp ; 55 ; 0xfaedb pciutil.c:196
+ mov bp, sp ; 89 e5 ; 0xfaedc
+ push di ; 57 ; 0xfaede
+ push ax ; 50 ; 0xfaedf
+ mov byte [bp-004h], al ; 88 46 fc ; 0xfaee0
+ mov al, bl ; 88 d8 ; 0xfaee3
+ xor ah, ah ; 30 e4 ; 0xfaee5 pciutil.c:198
+ mov di, ax ; 89 c7 ; 0xfaee7
+ mov bh, byte [bp-004h] ; 8a 7e fc ; 0xfaee9
+ mov bl, dl ; 88 d3 ; 0xfaeec
+ mov ax, 0b10bh ; b8 0b b1 ; 0xfaeee
+ int 01ah ; cd 1a ; 0xfaef1
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xfaef3 pciutil.c:199
+ pop di ; 5f ; 0xfaef6
+ pop bp ; 5d ; 0xfaef7
+ retn ; c3 ; 0xfaef8
+ ; disGetNextSymbol 0xfaef9 LB 0x4bf -> off=0x0 cb=0000000000000039 uValue=00000000000f98f9 'pci_write_config_dword'
+pci_write_config_dword: ; 0xfaef9 LB 0x39
+ push bp ; 55 ; 0xfaef9 pciutil.c:201
+ mov bp, sp ; 89 e5 ; 0xfaefa
+ push cx ; 51 ; 0xfaefc
+ push di ; 57 ; 0xfaefd
+ push ax ; 50 ; 0xfaefe
+ mov dh, al ; 88 c6 ; 0xfaeff
+ mov cl, dl ; 88 d1 ; 0xfaf01
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xfaf03
+ mov al, bl ; 88 d8 ; 0xfaf06 pciutil.c:206
+ xor ah, ah ; 30 e4 ; 0xfaf08
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfaf0a
+ mov di, ax ; 89 c7 ; 0xfaf0d
+ mov bx, dx ; 89 d3 ; 0xfaf0f
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfaf11
+ int 01ah ; cd 1a ; 0xfaf14
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xfaf16 pciutil.c:207
+ xor ah, ah ; 30 e4 ; 0xfaf19
+ mov di, ax ; 89 c7 ; 0xfaf1b
+ inc di ; 47 ; 0xfaf1d
+ inc di ; 47 ; 0xfaf1e
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xfaf1f
+ mov bx, dx ; 89 d3 ; 0xfaf22
+ mov ax, 0b10ch ; b8 0c b1 ; 0xfaf24
+ int 01ah ; cd 1a ; 0xfaf27
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfaf29 pciutil.c:209
+ pop di ; 5f ; 0xfaf2c
+ pop cx ; 59 ; 0xfaf2d
+ pop bp ; 5d ; 0xfaf2e
+ retn 00004h ; c2 04 00 ; 0xfaf2f
+ ; disGetNextSymbol 0xfaf32 LB 0x486 -> off=0x0 cb=000000000000001d uValue=00000000000f9932 'vds_is_present'
+vds_is_present: ; 0xfaf32 LB 0x1d
+ push bx ; 53 ; 0xfaf32 vds.c:32
+ push bp ; 55 ; 0xfaf33
+ mov bp, sp ; 89 e5 ; 0xfaf34
+ mov bx, strict word 0007bh ; bb 7b 00 ; 0xfaf36 vds.c:36
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfaf39
+ mov es, ax ; 8e c0 ; 0xfaf3c
+ test byte [es:bx], 020h ; 26 f6 07 20 ; 0xfaf3e vds.c:37
+ je short 0af4ah ; 74 06 ; 0xfaf42
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfaf44
+ pop bp ; 5d ; 0xfaf47
+ pop bx ; 5b ; 0xfaf48
+ retn ; c3 ; 0xfaf49
+ xor ax, ax ; 31 c0 ; 0xfaf4a
+ pop bp ; 5d ; 0xfaf4c vds.c:38
+ pop bx ; 5b ; 0xfaf4d
+ retn ; c3 ; 0xfaf4e
+ ; disGetNextSymbol 0xfaf4f LB 0x469 -> off=0x0 cb=000000000000001e uValue=00000000000f994f 'vds_real_to_lin'
+vds_real_to_lin: ; 0xfaf4f LB 0x1e
+ push bx ; 53 ; 0xfaf4f vds.c:67
+ push cx ; 51 ; 0xfaf50
+ push bp ; 55 ; 0xfaf51
+ mov bp, sp ; 89 e5 ; 0xfaf52
+ mov bx, ax ; 89 c3 ; 0xfaf54
+ mov ax, dx ; 89 d0 ; 0xfaf56
+ xor dx, dx ; 31 d2 ; 0xfaf58 vds.c:69
+ mov cx, strict word 00004h ; b9 04 00 ; 0xfaf5a
+ sal ax, 1 ; d1 e0 ; 0xfaf5d
+ rcl dx, 1 ; d1 d2 ; 0xfaf5f
+ loop 0af5dh ; e2 fa ; 0xfaf61
+ xor cx, cx ; 31 c9 ; 0xfaf63
+ add ax, bx ; 01 d8 ; 0xfaf65
+ adc dx, cx ; 11 ca ; 0xfaf67
+ pop bp ; 5d ; 0xfaf69 vds.c:70
+ pop cx ; 59 ; 0xfaf6a
+ pop bx ; 5b ; 0xfaf6b
+ retn ; c3 ; 0xfaf6c
+ ; disGetNextSymbol 0xfaf6d LB 0x44b -> off=0x0 cb=0000000000000077 uValue=00000000000f996d 'vds_build_sg_list'
+vds_build_sg_list: ; 0xfaf6d LB 0x77
+ push bp ; 55 ; 0xfaf6d vds.c:77
+ mov bp, sp ; 89 e5 ; 0xfaf6e
+ push si ; 56 ; 0xfaf70
+ push di ; 57 ; 0xfaf71
+ mov di, ax ; 89 c7 ; 0xfaf72
+ mov si, dx ; 89 d6 ; 0xfaf74
+ mov ax, bx ; 89 d8 ; 0xfaf76
+ mov dx, cx ; 89 ca ; 0xfaf78
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfaf7a vds.c:82
+ mov es, si ; 8e c6 ; 0xfaf7d
+ mov word [es:di], bx ; 26 89 1d ; 0xfaf7f
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xfaf82
+ mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xfaf85
+ call 0af4fh ; e8 c3 ff ; 0xfaf89 vds.c:83
+ mov es, si ; 8e c6 ; 0xfaf8c
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfaf8e
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfaf92
+ mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xfaf96 vds.c:84
+ call 0af32h ; e8 93 ff ; 0xfaf9c vds.c:85
+ test ax, ax ; 85 c0 ; 0xfaf9f
+ je short 0afb4h ; 74 11 ; 0xfafa1
+ mov es, si ; 8e c6 ; 0xfafa3 vds.c:87
+ mov ax, 08105h ; b8 05 81 ; 0xfafa5
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfafa8
+ int 04bh ; cd 4b ; 0xfafab
+ jc short 0afb1h ; 72 02 ; 0xfafad
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfafaf
+ cbw ; 98 ; 0xfafb1
+ jmp short 0afdbh ; eb 27 ; 0xfafb2 vds.c:88
+ mov es, si ; 8e c6 ; 0xfafb4 vds.c:90
+ mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xfafb6
+ mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xfafbc vds.c:91
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xfafc0
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xfafc4
+ mov word [es:di+012h], ax ; 26 89 45 12 ; 0xfafc8
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xfafcc vds.c:92
+ mov word [es:di+014h], ax ; 26 89 45 14 ; 0xfafcf
+ mov ax, bx ; 89 d8 ; 0xfafd3
+ mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xfafd5
+ xor ax, bx ; 31 d8 ; 0xfafd9 vds.c:93
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfafdb vds.c:96
+ pop di ; 5f ; 0xfafde
+ pop si ; 5e ; 0xfafdf
+ pop bp ; 5d ; 0xfafe0
+ retn 00004h ; c2 04 00 ; 0xfafe1
+ ; disGetNextSymbol 0xfafe4 LB 0x3d4 -> off=0x0 cb=000000000000002e uValue=00000000000f99e4 'vds_free_sg_list'
+vds_free_sg_list: ; 0xfafe4 LB 0x2e
+ push bp ; 55 ; 0xfafe4 vds.c:102
+ mov bp, sp ; 89 e5 ; 0xfafe5
+ push bx ; 53 ; 0xfafe7
+ push di ; 57 ; 0xfafe8
+ mov bx, ax ; 89 c3 ; 0xfafe9
+ call 0af32h ; e8 44 ff ; 0xfafeb vds.c:106
+ test ax, ax ; 85 c0 ; 0xfafee
+ je short 0b003h ; 74 11 ; 0xfaff0
+ mov di, bx ; 89 df ; 0xfaff2 vds.c:108
+ mov es, dx ; 8e c2 ; 0xfaff4
+ mov ax, 08106h ; b8 06 81 ; 0xfaff6
+ mov dx, strict word 00000h ; ba 00 00 ; 0xfaff9
+ int 04bh ; cd 4b ; 0xfaffc
+ jc short 0b002h ; 72 02 ; 0xfaffe
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfb000
+ cbw ; 98 ; 0xfb002
+ mov es, dx ; 8e c2 ; 0xfb003 vds.c:116
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xfb005
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfb00b vds.c:118
+ pop di ; 5f ; 0xfb00e
+ pop bx ; 5b ; 0xfb00f
+ pop bp ; 5d ; 0xfb010
+ retn ; c3 ; 0xfb011
+ ; disGetNextSymbol 0xfb012 LB 0x3a6 -> off=0xe cb=0000000000000020 uValue=00000000000f9a20 '__U4M'
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+__U4M: ; 0xfb020 LB 0x20
+ pushfw ; 9c ; 0xfb020 __U4M.asm:37
+ push si ; 56 ; 0xfb021 __U4M.asm:65
+ push di ; 57 ; 0xfb022 __U4M.asm:66
+ push ax ; 50 ; 0xfb023 __U4M.asm:79
+ db 08bh, 0fah
+ ; mov di, dx ; 8b fa ; 0xfb024 __U4M.asm:80
+ mul bx ; f7 e3 ; 0xfb026 __U4M.asm:83
+ db 08bh, 0f2h
+ ; mov si, dx ; 8b f2 ; 0xfb028 __U4M.asm:84
+ xchg di, ax ; 97 ; 0xfb02a __U4M.asm:85
+ mul bx ; f7 e3 ; 0xfb02b __U4M.asm:88
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xfb02d __U4M.asm:89
+ pop ax ; 58 ; 0xfb02f __U4M.asm:92
+ mul cx ; f7 e1 ; 0xfb030 __U4M.asm:93
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xfb032 __U4M.asm:94
+ db 08bh, 0d6h
+ ; mov dx, si ; 8b d6 ; 0xfb034 __U4M.asm:97
+ db 08bh, 0c7h
+ ; mov ax, di ; 8b c7 ; 0xfb036 __U4M.asm:98
+ pop di ; 5f ; 0xfb038 __U4M.asm:100
+ pop si ; 5e ; 0xfb039 __U4M.asm:101
+ popfw ; 9d ; 0xfb03a __U4M.asm:103
+ retn ; c3 ; 0xfb03b __U4M.asm:104
+ times 0x4 db 0
+ ; disGetNextSymbol 0xfb040 LB 0x378 -> off=0x0 cb=0000000000000030 uValue=00000000000f9a40 '__U4D'
+__U4D: ; 0xfb040 LB 0x30
+ pushfw ; 9c ; 0xfb040 __U4D.asm:44
+ test cx, cx ; 85 c9 ; 0xfb041 __U4D.asm:77
+ jne short 0b04dh ; 75 08 ; 0xfb043 __U4D.asm:78
+ div bx ; f7 f3 ; 0xfb045 __U4D.asm:80
+ db 08bh, 0dah
+ ; mov bx, dx ; 8b da ; 0xfb047 __U4D.asm:82
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xfb049 __U4D.asm:84
+ popfw ; 9d ; 0xfb04b __U4D.asm:86
+ retn ; c3 ; 0xfb04c __U4D.asm:87
+ push DS ; 1e ; 0xfb04d __U4D.asm:91
+ push ES ; 06 ; 0xfb04e __U4D.asm:92
+ push bp ; 55 ; 0xfb04f __U4D.asm:99
+ sub sp, strict byte 00004h ; 83 ec 04 ; 0xfb050 __U4D.asm:100
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfb053 __U4D.asm:101
+ push SS ; 16 ; 0xfb055 __U4D.asm:104
+ push bp ; 55 ; 0xfb056 __U4D.asm:105
+ add bp, strict byte 00004h ; 83 c5 04 ; 0xfb057 __U4D.asm:106
+ push cx ; 51 ; 0xfb05a __U4D.asm:109
+ push bx ; 53 ; 0xfb05b __U4D.asm:110
+ push dx ; 52 ; 0xfb05c __U4D.asm:113
+ push ax ; 50 ; 0xfb05d __U4D.asm:114
+ call 0b12ch ; e8 cb 00 ; 0xfb05e __U4D.asm:116
+ mov cx, word [bp-002h] ; 8b 4e fe ; 0xfb061 __U4D.asm:119
+ mov bx, word [bp-004h] ; 8b 5e fc ; 0xfb064 __U4D.asm:120
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xfb067 __U4D.asm:124
+ pop bp ; 5d ; 0xfb069 __U4D.asm:125
+ pop ES ; 07 ; 0xfb06a __U4D.asm:126
+ pop DS ; 1f ; 0xfb06b __U4D.asm:127
+ popfw ; 9d ; 0xfb06c __U4D.asm:129
+ retn ; c3 ; 0xfb06d __U4D.asm:130
+ times 0x2 db 0
+ ; disGetNextSymbol 0xfb070 LB 0x348 -> off=0x0 cb=0000000000000010 uValue=00000000000f9a70 '__U8RS'
+__U8RS: ; 0xfb070 LB 0x10
+ test si, si ; 85 f6 ; 0xfb070 __U8RS.asm:40
+ je short 0b07fh ; 74 0b ; 0xfb072 __U8RS.asm:41
+ shr ax, 1 ; d1 e8 ; 0xfb074 __U8RS.asm:43
+ rcr bx, 1 ; d1 db ; 0xfb076 __U8RS.asm:44
+ rcr cx, 1 ; d1 d9 ; 0xfb078 __U8RS.asm:45
+ rcr dx, 1 ; d1 da ; 0xfb07a __U8RS.asm:46
+ dec si ; 4e ; 0xfb07c __U8RS.asm:47
+ jne short 0b074h ; 75 f5 ; 0xfb07d __U8RS.asm:48
+ retn ; c3 ; 0xfb07f __U8RS.asm:50
+ ; disGetNextSymbol 0xfb080 LB 0x338 -> off=0x0 cb=0000000000000010 uValue=00000000000f9a80 '__U8LS'
+__U8LS: ; 0xfb080 LB 0x10
+ test si, si ; 85 f6 ; 0xfb080 __U8LS.asm:40
+ je short 0b08fh ; 74 0b ; 0xfb082 __U8LS.asm:41
+ sal dx, 1 ; d1 e2 ; 0xfb084 __U8LS.asm:43
+ rcl cx, 1 ; d1 d1 ; 0xfb086 __U8LS.asm:44
+ rcl bx, 1 ; d1 d3 ; 0xfb088 __U8LS.asm:45
+ rcl ax, 1 ; d1 d0 ; 0xfb08a __U8LS.asm:46
+ dec si ; 4e ; 0xfb08c __U8LS.asm:47
+ jne short 0b084h ; 75 f5 ; 0xfb08d __U8LS.asm:48
+ retn ; c3 ; 0xfb08f __U8LS.asm:50
+ ; disGetNextSymbol 0xfb090 LB 0x328 -> off=0x0 cb=0000000000000010 uValue=00000000000f9a90 '_fmemset_'
+_fmemset_: ; 0xfb090 LB 0x10
+ push di ; 57 ; 0xfb090 fmemset.asm:42
+ mov es, dx ; 8e c2 ; 0xfb091 fmemset.asm:44
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfb093 fmemset.asm:45
+ xchg al, bl ; 86 d8 ; 0xfb095 fmemset.asm:46
+ rep stosb ; f3 aa ; 0xfb097 fmemset.asm:47
+ xchg al, bl ; 86 d8 ; 0xfb099 fmemset.asm:48
+ pop di ; 5f ; 0xfb09b fmemset.asm:50
+ retn ; c3 ; 0xfb09c fmemset.asm:51
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfb0a0 LB 0x318 -> off=0x0 cb=000000000000003a uValue=00000000000f9aa0 '_fmemcpy_'
+_fmemcpy_: ; 0xfb0a0 LB 0x3a
+ push bp ; 55 ; 0xfb0a0 fmemcpy.asm:42
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfb0a1 fmemcpy.asm:43
+ push di ; 57 ; 0xfb0a3 fmemcpy.asm:44
+ push DS ; 1e ; 0xfb0a4 fmemcpy.asm:45
+ push si ; 56 ; 0xfb0a5 fmemcpy.asm:46
+ mov es, dx ; 8e c2 ; 0xfb0a6 fmemcpy.asm:48
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xfb0a8 fmemcpy.asm:49
+ mov ds, cx ; 8e d9 ; 0xfb0aa fmemcpy.asm:50
+ db 08bh, 0f3h
+ ; mov si, bx ; 8b f3 ; 0xfb0ac fmemcpy.asm:51
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfb0ae fmemcpy.asm:52
+ rep movsb ; f3 a4 ; 0xfb0b1 fmemcpy.asm:53
+ pop si ; 5e ; 0xfb0b3 fmemcpy.asm:55
+ pop DS ; 1f ; 0xfb0b4 fmemcpy.asm:56
+ pop di ; 5f ; 0xfb0b5 fmemcpy.asm:57
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xfb0b6 fmemcpy.asm:58
+ pop bp ; 5d ; 0xfb0b8 fmemcpy.asm:59
+ retn ; c3 ; 0xfb0b9 fmemcpy.asm:60
+ add byte [bx+si], al ; 00 00 ; 0xfb0ba
+ add byte [bx+si], al ; 00 00 ; 0xfb0bc
+ add byte [bx+si], al ; 00 00 ; 0xfb0be
+ db 0f0h
+ mov AL, strict byte 0f2h ; b0 f2 ; 0xfb0c1
+ mov AL, strict byte 0fdh ; b0 fd ; 0xfb0c3
+ mov AL, strict byte 0fdh ; b0 fd ; 0xfb0c5
+ mov AL, strict byte 0fdh ; b0 fd ; 0xfb0c7
+ mov AL, strict byte 0ffh ; b0 ff ; 0xfb0c9
+ mov AL, strict byte 0ffh ; b0 ff ; 0xfb0cb
+ mov AL, strict byte 001h ; b0 01 ; 0xfb0cd
+ mov CL, strict byte 005h ; b1 05 ; 0xfb0cf
+ mov CL, strict byte 005h ; b1 05 ; 0xfb0d1
+ mov CL, strict byte 007h ; b1 07 ; 0xfb0d3
+ mov CL, strict byte 00ch ; b1 0c ; 0xfb0d5
+ mov CL, strict byte 00eh ; b1 0e ; 0xfb0d7
+ db 0b1h
+ ; disGetNextSymbol 0xfb0da LB 0x2de -> off=0x0 cb=0000000000000041 uValue=0000000000009ada 'apm_worker'
+apm_worker: ; 0xfb0da LB 0x41
+ sti ; fb ; 0xfb0da apm_pm.asm:56
+ push ax ; 50 ; 0xfb0db apm_pm.asm:58
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfb0dc apm_pm.asm:59
+ sub AL, strict byte 004h ; 2c 04 ; 0xfb0de apm_pm.asm:60
+ db 08bh, 0e8h
+ ; mov bp, ax ; 8b e8 ; 0xfb0e0 apm_pm.asm:61
+ sal bp, 1 ; d1 e5 ; 0xfb0e2 apm_pm.asm:62
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfb0e4 apm_pm.asm:63
+ pop ax ; 58 ; 0xfb0e6 apm_pm.asm:64
+ mov AH, strict byte 053h ; b4 53 ; 0xfb0e7 apm_pm.asm:65
+ jnc short 0b117h ; 73 2c ; 0xfb0e9 apm_pm.asm:66
+ jmp word [cs:bp-04f40h] ; 2e ff a6 c0 b0 ; 0xfb0eb apm_pm.asm:68
+ jmp short 0b115h ; eb 23 ; 0xfb0f0 apm_pm.asm:71
+ push CS ; 0e ; 0xfb0f2 apm_pm.asm:80
+ pop ax ; 58 ; 0xfb0f3 apm_pm.asm:81
+ test ax, strict word 00003h ; a9 03 00 ; 0xfb0f4 apm_pm.asm:82
+ jne short 0b115h ; 75 1c ; 0xfb0f7 apm_pm.asm:83
+ sti ; fb ; 0xfb0f9 apm_pm.asm:84
+ hlt ; f4 ; 0xfb0fa apm_pm.asm:85
+ jmp short 0b115h ; eb 18 ; 0xfb0fb apm_pm.asm:86
+ jmp short 0b115h ; eb 16 ; 0xfb0fd apm_pm.asm:95
+ jmp short 0b117h ; eb 16 ; 0xfb0ff apm_pm.asm:101
+ mov AH, strict byte 080h ; b4 80 ; 0xfb101 apm_pm.asm:104
+ jmp short 0b119h ; eb 14 ; 0xfb103 apm_pm.asm:105
+ jmp short 0b117h ; eb 10 ; 0xfb105 apm_pm.asm:110
+ mov ax, 00102h ; b8 02 01 ; 0xfb107 apm_pm.asm:113
+ jmp short 0b115h ; eb 09 ; 0xfb10a apm_pm.asm:114
+ jmp short 0b115h ; eb 07 ; 0xfb10c apm_pm.asm:118
+ mov BL, strict byte 000h ; b3 00 ; 0xfb10e apm_pm.asm:121
+ mov cx, strict word 00000h ; b9 00 00 ; 0xfb110 apm_pm.asm:122
+ jmp short 0b115h ; eb 00 ; 0xfb113 apm_pm.asm:123
+ clc ; f8 ; 0xfb115 apm_pm.asm:126
+ retn ; c3 ; 0xfb116 apm_pm.asm:127
+ mov AH, strict byte 009h ; b4 09 ; 0xfb117 apm_pm.asm:130
+ stc ; f9 ; 0xfb119 apm_pm.asm:133
+ retn ; c3 ; 0xfb11a apm_pm.asm:134
+ ; disGetNextSymbol 0xfb11b LB 0x29d -> off=0x0 cb=0000000000000011 uValue=00000000000f9b1b 'apm_pm16_entry'
+apm_pm16_entry: ; 0xfb11b LB 0x11
+ mov AH, strict byte 002h ; b4 02 ; 0xfb11b apm_pm.asm:146
+ push DS ; 1e ; 0xfb11d apm_pm.asm:152
+ push bp ; 55 ; 0xfb11e apm_pm.asm:153
+ push CS ; 0e ; 0xfb11f apm_pm.asm:155
+ pop bp ; 5d ; 0xfb120 apm_pm.asm:156
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xfb121 apm_pm.asm:157
+ mov ds, bp ; 8e dd ; 0xfb124 apm_pm.asm:158
+ call 0b0dah ; e8 b1 ff ; 0xfb126 apm_pm.asm:160
+ pop bp ; 5d ; 0xfb129 apm_pm.asm:162
+ pop DS ; 1f ; 0xfb12a apm_pm.asm:163
+ retf ; cb ; 0xfb12b apm_pm.asm:165
+ ; disGetNextSymbol 0xfb12c LB 0x28c -> off=0x0 cb=0000000000000265 uValue=00000000000f9b2c 'DoUInt32Div'
+DoUInt32Div: ; 0xfb12c LB 0x265
+ push bp ; 55 ; 0xfb12c DoUInt32Div.c:28
+ mov bp, sp ; 89 e5 ; 0xfb12d
+ push si ; 56 ; 0xfb12f
+ push di ; 57 ; 0xfb130
+ sub sp, strict byte 00018h ; 83 ec 18 ; 0xfb131
+ lds bx, [bp+00ch] ; c5 5e 0c ; 0xfb134
+ lea si, [bp+004h] ; 8d 76 04 ; 0xfb137 DoUInt32Div.c:972
+ mov word [bp-010h], si ; 89 76 f0 ; 0xfb13a
+ mov [bp-00eh], ss ; 8c 56 f2 ; 0xfb13d
+ lea di, [bp+008h] ; 8d 7e 08 ; 0xfb140
+ mov [bp-008h], ss ; 8c 56 f8 ; 0xfb143
+ lea si, [bp-01ch] ; 8d 76 e4 ; 0xfb146
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xfb149
+ mov [bp-00ah], ss ; 8c 56 f6 ; 0xfb14c
+ mov si, bx ; 89 de ; 0xfb14f
+ mov [bp-006h], ds ; 8c 5e fa ; 0xfb151
+ cmp word [bx+002h], strict byte 00000h ; 83 7f 02 00 ; 0xfb154 DoUInt32Div.c:980
+ jne short 0b17ch ; 75 22 ; 0xfb158
+ mov ax, word [bx] ; 8b 07 ; 0xfb15a DoUInt32Div.c:982
+ test ax, ax ; 85 c0 ; 0xfb15c
+ je short 0b179h ; 74 19 ; 0xfb15e
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xfb160 DoUInt32Div.c:985
+ jne short 0b17ch ; 75 17 ; 0xfb163
+ xor ax, ax ; 31 c0 ; 0xfb165 DoUInt32Div.c:67
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xfb167
+ mov word [bp+008h], ax ; 89 46 08 ; 0xfb16a DoUInt32Div.c:68
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfb16d DoUInt32Div.c:988
+ mov word [bp+004h], ax ; 89 46 04 ; 0xfb170
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xfb173
+ mov word [bp+006h], ax ; 89 46 06 ; 0xfb176
+ jmp near 0b384h ; e9 08 02 ; 0xfb179
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfb17c DoUInt32Div.c:726
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfb17f
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb182
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfb185
+ je short 0b1a2h ; 74 18 ; 0xfb188
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfb18a DoUInt32Div.c:727
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfb18d
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb190
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfb193
+ jbe short 0b19dh ; 76 05 ; 0xfb196
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfb198
+ jmp short 0b1c3h ; eb 26 ; 0xfb19b
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfb19d
+ jmp short 0b1c3h ; eb 21 ; 0xfb1a0
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfb1a2 DoUInt32Div.c:728
+ mov ax, word [bx] ; 8b 07 ; 0xfb1a5
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb1a7
+ cmp ax, word [si] ; 3b 04 ; 0xfb1aa
+ je short 0b1c1h ; 74 13 ; 0xfb1ac
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfb1ae DoUInt32Div.c:729
+ mov ax, word [bx] ; 8b 07 ; 0xfb1b1
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb1b3
+ cmp ax, word [si] ; 3b 04 ; 0xfb1b6
+ jbe short 0b1bch ; 76 02 ; 0xfb1b8
+ jmp short 0b198h ; eb dc ; 0xfb1ba
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfb1bc
+ jmp short 0b1c3h ; eb 02 ; 0xfb1bf
+ xor ax, ax ; 31 c0 ; 0xfb1c1 DoUInt32Div.c:730
+ test ax, ax ; 85 c0 ; 0xfb1c3 DoUInt32Div.c:996
+ jnl short 0b1e5h ; 7d 1e ; 0xfb1c5
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfb1c7 DoUInt32Div.c:998
+ mov ax, word [bx] ; 8b 07 ; 0xfb1ca
+ mov dx, word [bx+002h] ; 8b 57 02 ; 0xfb1cc
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb1cf
+ mov word [di], ax ; 89 05 ; 0xfb1d2
+ mov word [di+002h], dx ; 89 55 02 ; 0xfb1d4
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfb1d7 DoUInt32Div.c:67
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfb1da
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfb1df DoUInt32Div.c:68
+ jmp short 0b179h ; eb 94 ; 0xfb1e3 DoUInt32Div.c:1003
+ jne short 0b1fch ; 75 15 ; 0xfb1e5
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb1e7 DoUInt32Div.c:67
+ mov word [di+002h], ax ; 89 45 02 ; 0xfb1ea
+ mov word [di], ax ; 89 05 ; 0xfb1ed DoUInt32Div.c:68
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfb1ef DoUInt32Div.c:397
+ mov word [bx], strict word 00001h ; c7 07 01 00 ; 0xfb1f2
+ mov word [bx+002h], ax ; 89 47 02 ; 0xfb1f6 DoUInt32Div.c:398
+ jmp near 0b384h ; e9 88 01 ; 0xfb1f9 DoUInt32Div.c:1008
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfb1fc DoUInt32Div.c:954
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfb1ff
+ test ax, ax ; 85 c0 ; 0xfb202
+ je short 0b217h ; 74 11 ; 0xfb204
+ push ax ; 50 ; 0xfb206 DoUInt32Div.c:955
+ mov ax, 0f000h ; b8 00 f0 ; 0xfb207
+ mov ds, ax ; 8e d8 ; 0xfb20a
+ call 0b3a0h ; e8 91 01 ; 0xfb20c
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfb20f
+ add ax, strict word 00010h ; 05 10 00 ; 0xfb212
+ jmp short 0b224h ; eb 0d ; 0xfb215 DoUInt32Div.c:956
+ push word [bx] ; ff 37 ; 0xfb217 DoUInt32Div.c:957
+ mov ax, 0f000h ; b8 00 f0 ; 0xfb219
+ mov ds, ax ; 8e d8 ; 0xfb21c
+ call 0b3a0h ; e8 7f 01 ; 0xfb21e
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfb221
+ mov word [bp-014h], ax ; 89 46 ec ; 0xfb224 DoUInt32Div.c:959
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb227 DoUInt32Div.c:954
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfb22a
+ test ax, ax ; 85 c0 ; 0xfb22d
+ je short 0b242h ; 74 11 ; 0xfb22f
+ push ax ; 50 ; 0xfb231 DoUInt32Div.c:955
+ mov ax, 0f000h ; b8 00 f0 ; 0xfb232
+ mov ds, ax ; 8e d8 ; 0xfb235
+ call 0b3a0h ; e8 66 01 ; 0xfb237
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfb23a
+ add ax, strict word 00010h ; 05 10 00 ; 0xfb23d
+ jmp short 0b24fh ; eb 0d ; 0xfb240 DoUInt32Div.c:956
+ push word [si] ; ff 34 ; 0xfb242 DoUInt32Div.c:957
+ mov ax, 0f000h ; b8 00 f0 ; 0xfb244
+ mov ds, ax ; 8e d8 ; 0xfb247
+ call 0b3a0h ; e8 54 01 ; 0xfb249
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfb24c
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xfb24f DoUInt32Div.c:959
+ sub dx, ax ; 29 c2 ; 0xfb252
+ mov word [bp-012h], dx ; 89 56 ee ; 0xfb254
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb257 DoUInt32Div.c:1014
+ mov ax, word [si] ; 8b 04 ; 0xfb25a
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfb25c
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfb25f
+ mov word [bp-016h], ax ; 89 46 ea ; 0xfb262
+ test dx, dx ; 85 d2 ; 0xfb265 DoUInt32Div.c:1015
+ je short 0b2bfh ; 74 56 ; 0xfb267
+ mov cx, dx ; 89 d1 ; 0xfb269 DoUInt32Div.c:280
+ xor ch, dh ; 30 f5 ; 0xfb26b
+ and cl, 01fh ; 80 e1 1f ; 0xfb26d
+ mov ax, word [si] ; 8b 04 ; 0xfb270 DoUInt32Div.c:282
+ mov dx, word [si+002h] ; 8b 54 02 ; 0xfb272
+ jcxz 0b27dh ; e3 06 ; 0xfb275
+ sal ax, 1 ; d1 e0 ; 0xfb277
+ rcl dx, 1 ; d1 d2 ; 0xfb279
+ loop 0b277h ; e2 fa ; 0xfb27b
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfb27d
+ mov word [bp-016h], dx ; 89 56 ea ; 0xfb280
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfb283 DoUInt32Div.c:763
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfb286
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfb289
+ jnbe short 0b29dh ; 77 0f ; 0xfb28c
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfb28e
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfb291
+ jne short 0b2a1h ; 75 0b ; 0xfb294
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfb296
+ cmp ax, word [bx] ; 3b 07 ; 0xfb299
+ jbe short 0b2a1h ; 76 04 ; 0xfb29b
+ mov AL, strict byte 001h ; b0 01 ; 0xfb29d
+ jmp short 0b2a3h ; eb 02 ; 0xfb29f
+ xor al, al ; 30 c0 ; 0xfb2a1
+ test al, al ; 84 c0 ; 0xfb2a3 DoUInt32Div.c:769
+ je short 0b2cah ; 74 23 ; 0xfb2a5
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xfb2a7 DoUInt32Div.c:680
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfb2aa
+ dec word [bp-012h] ; ff 4e ee ; 0xfb2ad
+ jmp short 0b2cah ; eb 18 ; 0xfb2b0
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xfb2b2 DoUInt32Div.c:632
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xfb2b5
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xfb2b8
+ loop 0b2b5h ; e2 f8 ; 0xfb2bb
+ jmp short 0b2adh ; eb ee ; 0xfb2bd DoUInt32Div.c:647
+ mov ax, word [si] ; 8b 04 ; 0xfb2bf DoUInt32Div.c:1025
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xfb2c1
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xfb2c4
+ mov word [bp-016h], ax ; 89 46 ea ; 0xfb2c7
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfb2ca DoUInt32Div.c:67
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfb2cd
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfb2d2 DoUInt32Div.c:68
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xfb2d6 DoUInt32Div.c:1028
+ mov dx, word [bx] ; 8b 17 ; 0xfb2d9
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xfb2db
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb2de
+ mov word [di], dx ; 89 15 ; 0xfb2e1
+ mov word [di+002h], ax ; 89 45 02 ; 0xfb2e3
+ mov dx, word [di] ; 8b 15 ; 0xfb2e6 DoUInt32Div.c:782
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb2e8
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfb2eb
+ jnbe short 0b2f6h ; 77 06 ; 0xfb2ee
+ jne short 0b2fah ; 75 08 ; 0xfb2f0
+ cmp dx, word [si] ; 3b 14 ; 0xfb2f2
+ jc short 0b2fah ; 72 04 ; 0xfb2f4
+ mov AL, strict byte 001h ; b0 01 ; 0xfb2f6
+ jmp short 0b2fch ; eb 02 ; 0xfb2f8
+ xor al, al ; 30 c0 ; 0xfb2fa
+ test al, al ; 84 c0 ; 0xfb2fc DoUInt32Div.c:788
+ je short 0b361h ; 74 61 ; 0xfb2fe
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb300 DoUInt32Div.c:782
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xfb303
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfb306
+ jnbe short 0b317h ; 77 0c ; 0xfb309
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfb30b
+ jne short 0b31bh ; 75 0b ; 0xfb30e
+ mov ax, word [di] ; 8b 05 ; 0xfb310
+ cmp ax, word [bp-018h] ; 3b 46 e8 ; 0xfb312
+ jc short 0b31bh ; 72 04 ; 0xfb315
+ mov AL, strict byte 001h ; b0 01 ; 0xfb317
+ jmp short 0b31dh ; eb 02 ; 0xfb319
+ xor al, al ; 30 c0 ; 0xfb31b
+ test al, al ; 84 c0 ; 0xfb31d DoUInt32Div.c:788
+ je short 0b347h ; 74 26 ; 0xfb31f
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfb321 DoUInt32Div.c:451
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb324
+ sub word [di], ax ; 29 05 ; 0xfb327
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xfb329
+ sbb word [di+002h], ax ; 19 45 02 ; 0xfb32c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xfb32f DoUInt32Div.c:586
+ xor dx, dx ; 31 d2 ; 0xfb332
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xfb334
+ jcxz 0b33fh ; e3 06 ; 0xfb337
+ sal ax, 1 ; d1 e0 ; 0xfb339
+ rcl dx, 1 ; d1 d2 ; 0xfb33b
+ loop 0b339h ; e2 fa ; 0xfb33d
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xfb33f
+ or word [bx], ax ; 09 07 ; 0xfb342
+ or word [bx+002h], dx ; 09 57 02 ; 0xfb344
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xfb347 DoUInt32Div.c:744
+ mov dx, word [di] ; 8b 15 ; 0xfb34a
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xfb34c
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xfb34f
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xfb352
+ jc short 0b35dh ; 72 06 ; 0xfb355
+ jne short 0b363h ; 75 0a ; 0xfb357
+ cmp dx, word [si] ; 3b 14 ; 0xfb359
+ jnc short 0b363h ; 73 06 ; 0xfb35b
+ mov AL, strict byte 001h ; b0 01 ; 0xfb35d
+ jmp short 0b365h ; eb 04 ; 0xfb35f
+ jmp short 0b384h ; eb 21 ; 0xfb361
+ xor al, al ; 30 c0 ; 0xfb363
+ test al, al ; 84 c0 ; 0xfb365 DoUInt32Div.c:750
+ je short 0b378h ; 74 0f ; 0xfb367
+ jmp short 0b384h ; eb 19 ; 0xfb369 DoUInt32Div.c:1043
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xfb36b DoUInt32Div.c:680
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xfb36e
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xfb371
+ loop 0b36eh ; e2 f8 ; 0xfb374
+ jmp short 0b37eh ; eb 06 ; 0xfb376 DoUInt32Div.c:647
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xfb378 DoUInt32Div.c:653
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfb37b
+ dec word [bp-012h] ; ff 4e ee ; 0xfb37e DoUInt32Div.c:1045
+ jmp near 0b300h ; e9 7c ff ; 0xfb381 DoUInt32Div.c:1046
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfb384 DoUInt32Div.c:32
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xfb387
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xfb38a DoUInt32Div.c:33
+ pop di ; 5f ; 0xfb38d
+ pop si ; 5e ; 0xfb38e
+ pop bp ; 5d ; 0xfb38f
+ retn ; c3 ; 0xfb390
+ ; disGetNextSymbol 0xfb391 LB 0x27 -> off=0xf cb=0000000000000018 uValue=00000000000f9da0 '_ASMBitLastSetU16'
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+_ASMBitLastSetU16: ; 0xfb3a0 LB 0x18
+ push bp ; 55 ; 0xfb3a0 ASMBitLastSetU16.asm:43
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfb3a1 ASMBitLastSetU16.asm:44
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfb3a3 ASMBitLastSetU16.asm:46
+ test cx, cx ; 85 c9 ; 0xfb3a6 ASMBitLastSetU16.asm:47
+ je short 0b3b4h ; 74 0a ; 0xfb3a8 ASMBitLastSetU16.asm:48
+ mov ax, strict word 00010h ; b8 10 00 ; 0xfb3aa ASMBitLastSetU16.asm:50
+ sal cx, 1 ; d1 e1 ; 0xfb3ad ASMBitLastSetU16.asm:52
+ jc short 0b3b6h ; 72 05 ; 0xfb3af ASMBitLastSetU16.asm:53
+ dec ax ; 48 ; 0xfb3b1 ASMBitLastSetU16.asm:54
+ jmp short 0b3adh ; eb f9 ; 0xfb3b2 ASMBitLastSetU16.asm:55
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfb3b4 ASMBitLastSetU16.asm:58
+ pop bp ; 5d ; 0xfb3b6 ASMBitLastSetU16.asm:60
+ retn ; c3 ; 0xfb3b7 ASMBitLastSetU16.asm:61
+
+ ; Padding 0x2648 bytes at 0xfb3b8
+ times 9800 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:52
+ cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:54
+ jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:55
+ cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:57
+ inc bx ; 43 ; 0xfda09
+ dec cx ; 49 ; 0xfda0a
+ mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:58
+ jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:59
+ mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:61
+ db 00fh
+ add byte [bx+di-01000h], bh ; 00 b9 00 f0 ; 0xfda13
+ add byte [bx+si], al ; 00 00 ; 0xfda17
+ mov dx, 0da26h ; ba 26 da ; 0xfda19 pcibio32.asm:63
+ add byte [bx+si], al ; 00 00 ; 0xfda1c
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:64
+ popfw ; 9d ; 0xfda20 pcibio32.asm:66
+ retf ; cb ; 0xfda21 pcibio32.asm:67
+ mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:70
+ jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:71
+ ; disGetNextSymbol 0xfda26 LB 0x380 -> off=0x0 cb=000000000000000d uValue=00000000000f0026 'pcibios32_entry'
+pcibios32_entry: ; 0xfda26 LB 0xd
+ pushfw ; 9c ; 0xfda26 pcibio32.asm:80
+ cld ; fc ; 0xfda27 pcibio32.asm:81
+ push ES ; 06 ; 0xfda28 pcibio32.asm:83
+ pushaw ; 60 ; 0xfda29 pcibio32.asm:84
+ call 0db52h ; e8 25 01 ; 0xfda2a pcibio32.asm:85
+ add byte [bx+si], al ; 00 00 ; 0xfda2d
+ popaw ; 61 ; 0xfda2f pcibio32.asm:86
+ pop ES ; 07 ; 0xfda30 pcibio32.asm:87
+ popfw ; 9d ; 0xfda31 pcibio32.asm:89
+ retf ; cb ; 0xfda32 pcibio32.asm:90
+ ; disGetNextSymbol 0xfda33 LB 0x373 -> off=0x0 cb=0000000000000022 uValue=00000000000f0033 'pci32_select_reg_'
+pci32_select_reg_: ; 0xfda33 LB 0x22
+ push bp ; 55 ; 0xfda33 pci32.c:188
+ mov bp, sp ; 89 e5 ; 0xfda34
+ push bx ; 53 ; 0xfda36
+ and dl, 0fch ; 80 e2 fc ; 0xfda37 pci32.c:190
+ mov bx, dx ; 89 d3 ; 0xfda3a
+ mov dx, 00cf8h ; ba f8 0c ; 0xfda3c
+ add byte [bx+si], al ; 00 00 ; 0xfda3f
+ db 00fh, 0b7h, 0c0h
+ ; movzx ax, ax ; 0f b7 c0 ; 0xfda41
+ sal ax, 008h ; c1 e0 08 ; 0xfda44
+ or ax, strict word 00000h ; 0d 00 00 ; 0xfda47
+ add byte [bx+si-03c76h], al ; 00 80 8a c3 ; 0xfda4a
+ out DX, ax ; ef ; 0xfda4e
+ lea sp, [di-004h] ; 8d 65 fc ; 0xfda4f pci32.c:191
+ pop bx ; 5b ; 0xfda52
+ pop bp ; 5d ; 0xfda53
+ retn ; c3 ; 0xfda54
+ ; disGetNextSymbol 0xfda55 LB 0x351 -> off=0x0 cb=00000000000000ff uValue=00000000000f0055 'pci32_find_device_'
+pci32_find_device_: ; 0xfda55 LB 0xff
+ push bp ; 55 ; 0xfda55 pci32.c:223
+ 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:233
+ xor bx, bx ; 31 db ; 0xfda67 pci32.c:240
+ xor cl, cl ; 30 c9 ; 0xfda69 pci32.c:241
+ test bl, 007h ; f6 c3 07 ; 0xfda6b pci32.c:251
+ jne short 0daaah ; 75 3a ; 0xfda6e
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfda70 pci32.c:252
+ 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:253
+ 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:254
+ jne short 0da94h ; 75 08 ; 0xfda8a
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfda8c pci32.c:255
+ jmp near 0db2ah ; e9 98 00 ; 0xfda8f pci32.c:256
+ add byte [bx+si], al ; 00 00 ; 0xfda92
+ test byte [di-00ch], 080h ; f6 45 f4 80 ; 0xfda94 pci32.c:258
+ je short 0daa3h ; 74 09 ; 0xfda98
+ mov word [di-010h], strict word 00001h ; c7 45 f0 01 00 ; 0xfda9a pci32.c:259
+ add byte [bx+si], al ; 00 00 ; 0xfda9f
+ jmp short 0daaah ; eb 07 ; 0xfdaa1 pci32.c:260
+ mov word [di-010h], strict word 00008h ; c7 45 f0 08 00 ; 0xfdaa3 pci32.c:261
+ add byte [bx+si], al ; 00 00 ; 0xfdaa8
+ mov al, byte [di-00ch] ; 8a 45 f4 ; 0xfdaaa pci32.c:272
+ 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:274
+ 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:275
+ 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:276
+ jbe short 0dad7h ; 76 02 ; 0xfdad3
+ mov cl, al ; 88 c1 ; 0xfdad5 pci32.c:277
+ test di, di ; 85 ff ; 0xfdad7 pci32.c:281
+ 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:282
+ 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:283
+ add byte [bx+si], al ; 00 00 ; 0xfdafd
+ test di, di ; 85 ff ; 0xfdaff pci32.c:286
+ je short 0db14h ; 74 11 ; 0xfdb01
+ cmp word [di-01ch], strict byte 00000h ; 83 7d e4 00 ; 0xfdb03 pci32.c:287
+ je short 0db0eh ; 74 05 ; 0xfdb07
+ shr ax, 010h ; c1 e8 10 ; 0xfdb09 pci32.c:288
+ jmp short 0db11h ; eb 03 ; 0xfdb0c pci32.c:289
+ shr ax, 008h ; c1 e8 08 ; 0xfdb0e pci32.c:290
+ mov word [di-014h], ax ; 89 45 ec ; 0xfdb11
+ mov ax, word [di-014h] ; 8b 45 ec ; 0xfdb14 pci32.c:297
+ 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:298
+ 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:306
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb2c pci32.c:307
+ 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:314
+ 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:316
+ 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:323
+ 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:328
+ 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:338
+ jne short 0dbdeh ; 75 0d ; 0xfdbcf
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbd1 pci32.c:339
+ xor ah, ah ; 30 e4 ; 0xfdbd4
+ or ah, 083h ; 80 cc 83 ; 0xfdbd6
+ jmp near 0dd94h ; e9 b8 01 ; 0xfdbd9 pci32.c:340
+ add byte [bx+si], al ; 00 00 ; 0xfdbdc
+ xor cx, cx ; 31 c9 ; 0xfdbde pci32.c:342
+ 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:344
+ 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:345
+ jmp near 0dd9ch ; e9 8a 01 ; 0xfdc0f pci32.c:350
+ add byte [bx+si], al ; 00 00 ; 0xfdc12
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc14 pci32.c:352
+ 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:354
+ xor ah, ah ; 30 e4 ; 0xfdc30
+ or ah, 086h ; 80 cc 86 ; 0xfdc32
+ jmp near 0dd94h ; e9 5c 01 ; 0xfdc35 pci32.c:355
+ add byte [bx+si], al ; 00 00 ; 0xfdc38
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc3a pci32.c:357
+ jmp near 0dd9ch ; e9 5b 01 ; 0xfdc3e pci32.c:359
+ 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:366
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc4b pci32.c:367
+ xor ah, ah ; 30 e4 ; 0xfdc4e
+ or ah, 087h ; 80 cc 87 ; 0xfdc50
+ jmp near 0dd94h ; e9 3e 01 ; 0xfdc53 pci32.c:368
+ add byte [bx+si], al ; 00 00 ; 0xfdc56
+ db 00fh, 0b7h, 055h, 008h
+ ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc58 pci32.c:370
+ 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:374
+ add byte [bx+si], al ; 00 00 ; 0xfdcc2
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcc4 pci32.c:376
+ 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:377
+ add byte [bx+si], al ; 00 00 ; 0xfdcdf
+ mov dx, 00cfch ; ba fc 0c ; 0xfdce1 pci32.c:379
+ 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:380
+ add byte [bx+si], al ; 00 00 ; 0xfdced
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdcef pci32.c:382
+ 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:383
+ add byte [bx+si], al ; 00 00 ; 0xfdd07
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd09 pci32.c:385
+ 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:386
+ add byte [bx+si], al ; 00 00 ; 0xfdd23
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd25 pci32.c:388
+ 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:392
+ db 00fh, 0b7h, 045h, 008h
+ ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd30 pci32.c:394
+ 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:398
+ xor bl, 000h ; 80 f3 00 ; 0xfdd3f
+ add byte [bp+026h], ah ; 00 66 26 ; 0xfdd42
+ cmp dx, word [bx+si] ; 3b 10 ; 0xfdd45
+ jbe short 0dd5bh ; 76 12 ; 0xfdd47
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd49 pci32.c:399
+ 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:400
+ jmp short 0dd7fh ; eb 24 ; 0xfdd59 pci32.c:401
+ db 00fh, 0b7h, 0cah
+ ; movzx cx, dx ; 0f b7 ca ; 0xfdd5b pci32.c:402
+ 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, 0f1a0h ; be a0 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:404
+ xor bl, 000h ; 80 f3 00 ; 0xfdd81
+ add byte [bp-00fbbh], cl ; 00 8e 45 f0 ; 0xfdd84
+ db 066h, 026h, 089h, 003h
+ ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfdd88
+ jmp short 0dd9eh ; eb 10 ; 0xfdd8c pci32.c:407
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd8e pci32.c:410
+ 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:411
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdd9e pci32.c:413
+ 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:241
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:242
+ ; 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:244
+ out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:245
+ retn ; c3 ; 0xfe038 orgs.asm:246
+ ; 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:253
+ mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:254
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:255
+ loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:256
+ retn ; c3 ; 0xfe043 orgs.asm:257
+ ; 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:265
+ mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:266
+ out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:267
+ ; 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:270
+ mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:271
+ jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:272
+ ; 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:281
+ jmp short 0e064h ; eb 06 ; 0xfe05c orgs.asm:292
+ mov AL, strict byte 001h ; b0 01 ; 0xfe05e orgs.asm:298
+ out strict byte 092h, AL ; e6 92 ; 0xfe060 orgs.asm:299
+ jmp short 0e062h ; eb fe ; 0xfe062 orgs.asm:300
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe064 orgs.asm:305
+ out strict byte 070h, AL ; e6 70 ; 0xfe066 orgs.asm:306
+ in AL, strict byte 071h ; e4 71 ; 0xfe068 orgs.asm:307
+ xchg ah, al ; 86 c4 ; 0xfe06a orgs.asm:310
+ in AL, strict byte 064h ; e4 64 ; 0xfe06c orgs.asm:314
+ test AL, strict byte 004h ; a8 04 ; 0xfe06e orgs.asm:315
+ je short 0e085h ; 74 13 ; 0xfe070 orgs.asm:316
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe072 orgs.asm:319
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfe074 orgs.asm:320
+ jne short 0e085h ; 75 0d ; 0xfe076 orgs.asm:321
+ mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe078 orgs.asm:327
+ cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe07d orgs.asm:328
+ jne short 0e05eh ; 75 d9 ; 0xfe083 orgs.asm:329
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe085 orgs.asm:333
+ out strict byte 070h, AL ; e6 70 ; 0xfe087 orgs.asm:334
+ mov AL, strict byte 000h ; b0 00 ; 0xfe089 orgs.asm:335
+ out strict byte 071h, AL ; e6 71 ; 0xfe08b orgs.asm:336
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe08d orgs.asm:340
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe08f orgs.asm:341
+ je short 0e0a5h ; 74 12 ; 0xfe091 orgs.asm:342
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe093 orgs.asm:343
+ je short 0e0a5h ; 74 0e ; 0xfe095 orgs.asm:344
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfe097 orgs.asm:346
+ out strict byte 00dh, AL ; e6 0d ; 0xfe099 orgs.asm:349
+ out strict byte 0dah, AL ; e6 da ; 0xfe09b orgs.asm:350
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe09d orgs.asm:353
+ out strict byte 0d6h, AL ; e6 d6 ; 0xfe09f orgs.asm:354
+ mov AL, strict byte 000h ; b0 00 ; 0xfe0a1 orgs.asm:355
+ out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a3 orgs.asm:356
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe0a5 orgs.asm:360
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfe0a7 orgs.asm:361
+ je short 0e0c3h ; 74 18 ; 0xfe0a9 orgs.asm:362
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0ab orgs.asm:364
+ jnc short 0e0c3h ; 73 14 ; 0xfe0ad orgs.asm:365
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe0af orgs.asm:366
+ jne short 0e0b6h ; 75 03 ; 0xfe0b1 orgs.asm:367
+ jmp near 0e353h ; e9 9d 02 ; 0xfe0b3 orgs.asm:368
+ mov sp, 00400h ; bc 00 04 ; 0xfe0b6 orgs.asm:371
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfe0b9 orgs.asm:373
+ je short 0e044h ; 74 87 ; 0xfe0bb orgs.asm:374
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0bd orgs.asm:376
+ je short 0e04ah ; 74 89 ; 0xfe0bf orgs.asm:377
+ jmp short 0e0c3h ; eb 00 ; 0xfe0c1 orgs.asm:381
+ ; disGetNextSymbol 0xfe0c3 LB 0x1f3d -> off=0x0 cb=00000000000001f3 uValue=00000000000f00c3 'normal_post'
+normal_post: ; 0xfe0c3 LB 0x1f3
+ mov ax, 07800h ; b8 00 78 ; 0xfe0c3 orgs.asm:390
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xfe0c6 orgs.asm:391
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe0c8 orgs.asm:392
+ mov ds, ax ; 8e d8 ; 0xfe0ca orgs.asm:393
+ mov ss, ax ; 8e d0 ; 0xfe0cc orgs.asm:394
+ mov es, ax ; 8e c0 ; 0xfe0ce orgs.asm:398
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0d0 orgs.asm:399
+ cld ; fc ; 0xfe0d2 orgs.asm:400
+ mov cx, 00239h ; b9 39 02 ; 0xfe0d3 orgs.asm:401
+ rep stosw ; f3 ab ; 0xfe0d6 orgs.asm:402
+ inc di ; 47 ; 0xfe0d8 orgs.asm:403
+ inc di ; 47 ; 0xfe0d9 orgs.asm:404
+ mov cx, 005c6h ; b9 c6 05 ; 0xfe0da orgs.asm:405
+ rep stosw ; f3 ab ; 0xfe0dd orgs.asm:406
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0df orgs.asm:410
+ add bx, 01000h ; 81 c3 00 10 ; 0xfe0e1 orgs.asm:412
+ cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0e5 orgs.asm:413
+ jnc short 0e0f6h ; 73 0b ; 0xfe0e9 orgs.asm:414
+ mov es, bx ; 8e c3 ; 0xfe0eb orgs.asm:415
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0ed orgs.asm:416
+ mov cx, 08000h ; b9 00 80 ; 0xfe0ef orgs.asm:417
+ rep stosw ; f3 ab ; 0xfe0f2 orgs.asm:418
+ jmp short 0e0e1h ; eb eb ; 0xfe0f4 orgs.asm:419
+ mov es, bx ; 8e c3 ; 0xfe0f6 orgs.asm:421
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0f8 orgs.asm:422
+ mov cx, 07ff8h ; b9 f8 7f ; 0xfe0fa orgs.asm:423
+ rep stosw ; f3 ab ; 0xfe0fd orgs.asm:424
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0ff orgs.asm:425
+ push CS ; 0e ; 0xfe101 orgs.asm:104
+ pop DS ; 1f ; 0xfe102 orgs.asm:105
+ cld ; fc ; 0xfe103 orgs.asm:106
+ call 01722h ; e8 1b 36 ; 0xfe104 orgs.asm:429
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe107 orgs.asm:436
+ mov ds, bx ; 8e db ; 0xfe109 orgs.asm:437
+ mov cx, strict word 00060h ; b9 60 00 ; 0xfe10b orgs.asm:438
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe10e orgs.asm:439
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe111 orgs.asm:440
+ call 0e039h ; e8 22 ff ; 0xfe114 orgs.asm:441
+ mov bx, 001a0h ; bb a0 01 ; 0xfe117 orgs.asm:446
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfe11a orgs.asm:447
+ call 0e039h ; e8 19 ff ; 0xfe11d orgs.asm:448
+ mov ax, 0027fh ; b8 7f 02 ; 0xfe120 orgs.asm:451
+ mov word [00413h], ax ; a3 13 04 ; 0xfe123 orgs.asm:452
+ mov ax, 0e9dah ; b8 da e9 ; 0xfe126 orgs.asm:95
+ mov word [00018h], ax ; a3 18 00 ; 0xfe129 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe12c orgs.asm:97
+ mov word [0001ah], ax ; a3 1a 00 ; 0xfe12f orgs.asm:98
+ mov ax, 0f84dh ; b8 4d f8 ; 0xfe132 orgs.asm:95
+ mov word [00044h], ax ; a3 44 00 ; 0xfe135 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe138 orgs.asm:97
+ mov word [00046h], ax ; a3 46 00 ; 0xfe13b orgs.asm:98
+ mov ax, 0f841h ; b8 41 f8 ; 0xfe13e orgs.asm:95
+ mov word [00048h], ax ; a3 48 00 ; 0xfe141 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe144 orgs.asm:97
+ mov word [0004ah], ax ; a3 4a 00 ; 0xfe147 orgs.asm:98
+ mov ax, 0f859h ; b8 59 f8 ; 0xfe14a orgs.asm:95
+ mov word [00054h], ax ; a3 54 00 ; 0xfe14d orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe150 orgs.asm:97
+ mov word [00056h], ax ; a3 56 00 ; 0xfe153 orgs.asm:98
+ mov ax, 0efd4h ; b8 d4 ef ; 0xfe156 orgs.asm:95
+ mov word [0005ch], ax ; a3 5c 00 ; 0xfe159 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe15c orgs.asm:97
+ mov word [0005eh], ax ; a3 5e 00 ; 0xfe15f orgs.asm:98
+ mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe162 orgs.asm:95
+ mov word [00060h], ax ; a3 60 00 ; 0xfe165 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe168 orgs.asm:97
+ mov word [00062h], ax ; a3 62 00 ; 0xfe16b orgs.asm:98
+ mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe16e orgs.asm:95
+ mov word [00064h], ax ; a3 64 00 ; 0xfe171 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe174 orgs.asm:97
+ mov word [00066h], ax ; a3 66 00 ; 0xfe177 orgs.asm:98
+ mov ax, 0effbh ; b8 fb ef ; 0xfe17a orgs.asm:95
+ mov word [00070h], ax ; a3 70 00 ; 0xfe17d orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe180 orgs.asm:97
+ mov word [00072h], ax ; a3 72 00 ; 0xfe183 orgs.asm:98
+ call 0e794h ; e8 0b 06 ; 0xfe186 orgs.asm:468
+ mov ax, 0fe6eh ; b8 6e fe ; 0xfe189 orgs.asm:95
+ mov word [00068h], ax ; a3 68 00 ; 0xfe18c orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe18f orgs.asm:97
+ mov word [0006ah], ax ; a3 6a 00 ; 0xfe192 orgs.asm:98
+ mov ax, 0fea5h ; b8 a5 fe ; 0xfe195 orgs.asm:95
+ mov word [00020h], ax ; a3 20 00 ; 0xfe198 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe19b orgs.asm:97
+ mov word [00022h], ax ; a3 22 00 ; 0xfe19e orgs.asm:98
+ mov AL, strict byte 034h ; b0 34 ; 0xfe1a1 orgs.asm:479
+ out strict byte 043h, AL ; e6 43 ; 0xfe1a3 orgs.asm:480
+ mov AL, strict byte 000h ; b0 00 ; 0xfe1a5 orgs.asm:481
+ out strict byte 040h, AL ; e6 40 ; 0xfe1a7 orgs.asm:482
+ out strict byte 040h, AL ; e6 40 ; 0xfe1a9 orgs.asm:483
+ mov ax, 0f065h ; b8 65 f0 ; 0xfe1ab orgs.asm:95
+ mov word [00040h], ax ; a3 40 00 ; 0xfe1ae orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1b1 orgs.asm:97
+ mov word [00042h], ax ; a3 42 00 ; 0xfe1b4 orgs.asm:98
+ mov ax, 0e987h ; b8 87 e9 ; 0xfe1b7 orgs.asm:95
+ mov word [00024h], ax ; a3 24 00 ; 0xfe1ba orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1bd orgs.asm:97
+ mov word [00026h], ax ; a3 26 00 ; 0xfe1c0 orgs.asm:98
+ mov ax, 0e82eh ; b8 2e e8 ; 0xfe1c3 orgs.asm:95
+ mov word [00058h], ax ; a3 58 00 ; 0xfe1c6 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1c9 orgs.asm:97
+ mov word [0005ah], ax ; a3 5a 00 ; 0xfe1cc orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe1cf orgs.asm:492
+ mov ds, ax ; 8e d8 ; 0xfe1d1 orgs.asm:493
+ mov byte [00417h], AL ; a2 17 04 ; 0xfe1d3 orgs.asm:495
+ mov byte [00418h], AL ; a2 18 04 ; 0xfe1d6 orgs.asm:496
+ mov byte [00419h], AL ; a2 19 04 ; 0xfe1d9 orgs.asm:497
+ mov byte [00471h], AL ; a2 71 04 ; 0xfe1dc orgs.asm:498
+ mov byte [00497h], AL ; a2 97 04 ; 0xfe1df orgs.asm:499
+ mov AL, strict byte 010h ; b0 10 ; 0xfe1e2 orgs.asm:500
+ mov byte [00496h], AL ; a2 96 04 ; 0xfe1e4 orgs.asm:501
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1e7 orgs.asm:503
+ mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1ea orgs.asm:504
+ mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1ee orgs.asm:505
+ mov word [00480h], bx ; 89 1e 80 04 ; 0xfe1f2 orgs.asm:506
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe1f6 orgs.asm:507
+ mov word [00482h], bx ; 89 1e 82 04 ; 0xfe1f9 orgs.asm:508
+ mov AL, strict byte 014h ; b0 14 ; 0xfe1fd orgs.asm:511
+ out strict byte 070h, AL ; e6 70 ; 0xfe1ff orgs.asm:512
+ in AL, strict byte 071h ; e4 71 ; 0xfe201 orgs.asm:513
+ mov byte [00410h], AL ; a2 10 04 ; 0xfe203 orgs.asm:514
+ push DS ; 1e ; 0xfe206 orgs.asm:516
+ push CS ; 0e ; 0xfe207 orgs.asm:104
+ pop DS ; 1f ; 0xfe208 orgs.asm:105
+ cld ; fc ; 0xfe209 orgs.asm:106
+ mov ax, 0c000h ; b8 00 c0 ; 0xfe20a orgs.asm:521
+ mov dx, 0c800h ; ba 00 c8 ; 0xfe20d orgs.asm:522
+ call 01600h ; e8 ed 33 ; 0xfe210 orgs.asm:523
+ call 04fa9h ; e8 93 6d ; 0xfe213 orgs.asm:526
+ pop DS ; 1f ; 0xfe216 orgs.asm:527
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe217 orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe21a orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe21d orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe220 orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe223 orgs.asm:531
+ mov ds, ax ; 8e d8 ; 0xfe225 orgs.asm:532
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe227 orgs.asm:533
+ mov CL, strict byte 014h ; b1 14 ; 0xfe229 orgs.asm:534
+ mov dx, 00378h ; ba 78 03 ; 0xfe22b orgs.asm:535
+ call 0ed0ah ; e8 d9 0a ; 0xfe22e orgs.asm:536
+ mov dx, 00278h ; ba 78 02 ; 0xfe231 orgs.asm:537
+ call 0ed0ah ; e8 d3 0a ; 0xfe234 orgs.asm:538
+ push cx ; 51 ; 0xfe237 orgs.asm:203
+ mov CL, strict byte 00eh ; b1 0e ; 0xfe238 orgs.asm:204
+ sal bx, CL ; d3 e3 ; 0xfe23a orgs.asm:205
+ pop cx ; 59 ; 0xfe23c orgs.asm:206
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe23d orgs.asm:540
+ and ax, 03fffh ; 25 ff 3f ; 0xfe240 orgs.asm:541
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe243 orgs.asm:542
+ mov word [00410h], ax ; a3 10 04 ; 0xfe245 orgs.asm:543
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe248 orgs.asm:95
+ mov word [0002ch], ax ; a3 2c 00 ; 0xfe24b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe24e orgs.asm:97
+ mov word [0002eh], ax ; a3 2e 00 ; 0xfe251 orgs.asm:98
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe254 orgs.asm:95
+ mov word [00030h], ax ; a3 30 00 ; 0xfe257 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe25a orgs.asm:97
+ mov word [00032h], ax ; a3 32 00 ; 0xfe25d orgs.asm:98
+ mov ax, 0e739h ; b8 39 e7 ; 0xfe260 orgs.asm:95
+ mov word [00050h], ax ; a3 50 00 ; 0xfe263 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe266 orgs.asm:97
+ mov word [00052h], ax ; a3 52 00 ; 0xfe269 orgs.asm:98
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe26c orgs.asm:549
+ mov CL, strict byte 00ah ; b1 0a ; 0xfe26e orgs.asm:550
+ mov dx, 003f8h ; ba f8 03 ; 0xfe270 orgs.asm:551
+ call 0ed28h ; e8 b2 0a ; 0xfe273 orgs.asm:552
+ mov dx, 002f8h ; ba f8 02 ; 0xfe276 orgs.asm:553
+ call 0ed28h ; e8 ac 0a ; 0xfe279 orgs.asm:554
+ mov dx, 003e8h ; ba e8 03 ; 0xfe27c orgs.asm:555
+ call 0ed28h ; e8 a6 0a ; 0xfe27f orgs.asm:556
+ mov dx, 002e8h ; ba e8 02 ; 0xfe282 orgs.asm:557
+ call 0ed28h ; e8 a0 0a ; 0xfe285 orgs.asm:558
+ push cx ; 51 ; 0xfe288 orgs.asm:203
+ mov CL, strict byte 009h ; b1 09 ; 0xfe289 orgs.asm:204
+ sal bx, CL ; d3 e3 ; 0xfe28b orgs.asm:205
+ pop cx ; 59 ; 0xfe28d orgs.asm:206
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe28e orgs.asm:560
+ and ax, 0f1ffh ; 25 ff f1 ; 0xfe291 orgs.asm:561
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe294 orgs.asm:562
+ mov word [00410h], ax ; a3 10 04 ; 0xfe296 orgs.asm:563
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe299 orgs.asm:95
+ mov word [00128h], ax ; a3 28 01 ; 0xfe29c orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe29f orgs.asm:97
+ mov word [0012ah], ax ; a3 2a 01 ; 0xfe2a2 orgs.asm:98
+ mov ax, 0f8f1h ; b8 f1 f8 ; 0xfe2a5 orgs.asm:95
+ mov word [001c0h], ax ; a3 c0 01 ; 0xfe2a8 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2ab orgs.asm:97
+ mov word [001c2h], ax ; a3 c2 01 ; 0xfe2ae orgs.asm:98
+ call 0ede3h ; e8 2f 0b ; 0xfe2b1 orgs.asm:569
+ jmp short 0e303h ; eb 4d ; 0xfe2b4 orgs.asm:571
+ ; disGetNextSymbol 0xfe2b6 LB 0x1d4a -> off=0x0 cb=000000000000000d uValue=00000000000f02b6 'biosorg_check_before_or_at_0E2C1h'
+biosorg_check_before_or_at_0E2C1h: ; 0xfe2b6 LB 0xd
+ times 0xb db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi'
+nmi: ; 0xfe2c3 LB 0x7
+ push CS ; 0e ; 0xfe2c3 orgs.asm:104
+ pop DS ; 1f ; 0xfe2c4 orgs.asm:105
+ cld ; fc ; 0xfe2c5 orgs.asm:106
+ call 016f8h ; e8 2f 34 ; 0xfe2c6 orgs.asm:580
+ iret ; cf ; 0xfe2c9 orgs.asm:581
+ ; 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:584
+ call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:585
+ int 002h ; cd 02 ; 0xfe2cf orgs.asm:586
+ iret ; cf ; 0xfe2d1 orgs.asm:587
+ ; disGetNextSymbol 0xfe2d2 LB 0x1d2e -> off=0x0 cb=00000000000000aa uValue=00000000000f02d2 'hard_drive_post'
+hard_drive_post: ; 0xfe2d2 LB 0xaa
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe2d2 orgs.asm:592
+ mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:593
+ mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:595
+ mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:596
+ mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:597
+ mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:598
+ mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:599
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:600
+ mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:601
+ mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:95
+ mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:97
+ mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:98
+ mov ax, 0f8dfh ; b8 df f8 ; 0xfe2f6 orgs.asm:95
+ mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:97
+ mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:98
+ retn ; c3 ; 0xfe302 orgs.asm:606
+ mov ax, 0f8a5h ; b8 a5 f8 ; 0xfe303 orgs.asm:95
+ mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:97
+ mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:98
+ mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:95
+ mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:97
+ mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:98
+ call 0e76fh ; e8 51 04 ; 0xfe31b orgs.asm:618
+ push CS ; 0e ; 0xfe31e orgs.asm:104
+ pop DS ; 1f ; 0xfe31f orgs.asm:105
+ cld ; fc ; 0xfe320 orgs.asm:106
+ call 01c6bh ; e8 47 39 ; 0xfe321 orgs.asm:632
+ call 0218fh ; e8 68 3e ; 0xfe324 orgs.asm:633
+ sti ; fb ; 0xfe327 orgs.asm:640
+ call 0950ah ; e8 df b1 ; 0xfe328 orgs.asm:641
+ cli ; fa ; 0xfe32b orgs.asm:642
+ call 08349h ; e8 1a a0 ; 0xfe32c orgs.asm:647
+ call 0a8f6h ; e8 c4 c5 ; 0xfe32f orgs.asm:652
+ call 0ed4ch ; e8 17 0a ; 0xfe332 orgs.asm:656
+ call 0e2d2h ; e8 9a ff ; 0xfe335 orgs.asm:659
+ push CS ; 0e ; 0xfe338 orgs.asm:104
+ pop DS ; 1f ; 0xfe339 orgs.asm:105
+ cld ; fc ; 0xfe33a orgs.asm:106
+ mov ax, 0c800h ; b8 00 c8 ; 0xfe33b orgs.asm:663
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe33e orgs.asm:664
+ call 01600h ; e8 bc 32 ; 0xfe341 orgs.asm:665
+ call 01746h ; e8 ff 33 ; 0xfe344 orgs.asm:679
+ call 03c15h ; e8 cb 58 ; 0xfe347 orgs.asm:682
+ sti ; fb ; 0xfe34a orgs.asm:685
+ int 019h ; cd 19 ; 0xfe34b orgs.asm:686
+ sti ; fb ; 0xfe34d orgs.asm:688
+ hlt ; f4 ; 0xfe34e orgs.asm:690
+ jmp short 0e34eh ; eb fd ; 0xfe34f orgs.asm:691
+ cli ; fa ; 0xfe351 orgs.asm:692
+ hlt ; f4 ; 0xfe352 orgs.asm:693
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe353 orgs.asm:702
+ mov ds, ax ; 8e d8 ; 0xfe356 orgs.asm:703
+ mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe358 orgs.asm:705
+ mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe35c orgs.asm:706
+ in AL, strict byte 092h ; e4 92 ; 0xfe360 orgs.asm:708
+ and AL, strict byte 0fdh ; 24 fd ; 0xfe362 orgs.asm:709
+ out strict byte 092h, AL ; e6 92 ; 0xfe364 orgs.asm:710
+ lidt [cs:0eff5h] ; 2e 0f 01 1e f5 ef ; 0xfe366 orgs.asm:712
+ pop DS ; 1f ; 0xfe36c orgs.asm:714
+ pop ES ; 07 ; 0xfe36d orgs.asm:715
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfe36e orgs.asm:717
+ in AL, strict byte 080h ; e4 80 ; 0xfe370 orgs.asm:719
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xfe372 orgs.asm:720
+ db 03ah, 0e0h
+ ; cmp ah, al ; 3a e0 ; 0xfe375 orgs.asm:722
+ popaw ; 61 ; 0xfe377 orgs.asm:724
+ sti ; fb ; 0xfe378 orgs.asm:725
+ retf 00002h ; ca 02 00 ; 0xfe379 orgs.asm:726
+ ; disGetNextSymbol 0xfe37c LB 0x1c84 -> off=0x0 cb=0000000000000082 uValue=00000000000f037c 'biosorg_check_before_or_at_0E3FCh'
+biosorg_check_before_or_at_0E3FCh: ; 0xfe37c LB 0x82
+ times 0x80 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:736
+ ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=00000000000002f1 uValue=00000000000f0401 'rom_fdpt'
+rom_fdpt: ; 0xfe401 LB 0x2f1
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h
+ db 04dh
+ ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler'
+int19_handler: ; 0xfe6f2 LB 0x3
+ jmp near 0f0ach ; e9 b7 09 ; 0xfe6f2 orgs.asm:752
+ ; 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:825
+ push ES ; 06 ; 0xfe73a orgs.asm:826
+ push ax ; 50 ; 0xfe73b orgs.asm:99
+ push cx ; 51 ; 0xfe73c orgs.asm:100
+ push dx ; 52 ; 0xfe73d orgs.asm:101
+ push bx ; 53 ; 0xfe73e orgs.asm:102
+ push sp ; 54 ; 0xfe73f orgs.asm:103
+ push bp ; 55 ; 0xfe740 orgs.asm:104
+ push si ; 56 ; 0xfe741 orgs.asm:105
+ push di ; 57 ; 0xfe742 orgs.asm:106
+ push CS ; 0e ; 0xfe743 orgs.asm:104
+ pop DS ; 1f ; 0xfe744 orgs.asm:105
+ cld ; fc ; 0xfe745 orgs.asm:106
+ call 06516h ; e8 cd 7d ; 0xfe746 orgs.asm:829
+ pop di ; 5f ; 0xfe749 orgs.asm:116
+ pop si ; 5e ; 0xfe74a orgs.asm:117
+ pop bp ; 5d ; 0xfe74b orgs.asm:118
+ pop bx ; 5b ; 0xfe74c orgs.asm:119
+ pop bx ; 5b ; 0xfe74d orgs.asm:120
+ pop dx ; 5a ; 0xfe74e orgs.asm:121
+ pop cx ; 59 ; 0xfe74f orgs.asm:122
+ pop ax ; 58 ; 0xfe750 orgs.asm:123
+ pop ES ; 07 ; 0xfe751 orgs.asm:831
+ pop DS ; 1f ; 0xfe752 orgs.asm:832
+ iret ; cf ; 0xfe753 orgs.asm:833
+ push DS ; 1e ; 0xfe754 orgs.asm:841
+ push ES ; 06 ; 0xfe755 orgs.asm:842
+ push ax ; 50 ; 0xfe756 orgs.asm:99
+ push cx ; 51 ; 0xfe757 orgs.asm:100
+ push dx ; 52 ; 0xfe758 orgs.asm:101
+ push bx ; 53 ; 0xfe759 orgs.asm:102
+ push sp ; 54 ; 0xfe75a orgs.asm:103
+ push bp ; 55 ; 0xfe75b orgs.asm:104
+ push si ; 56 ; 0xfe75c orgs.asm:105
+ push di ; 57 ; 0xfe75d orgs.asm:106
+ push CS ; 0e ; 0xfe75e orgs.asm:104
+ pop DS ; 1f ; 0xfe75f orgs.asm:105
+ cld ; fc ; 0xfe760 orgs.asm:106
+ call 01697h ; e8 33 2f ; 0xfe761 orgs.asm:845
+ pop di ; 5f ; 0xfe764 orgs.asm:116
+ pop si ; 5e ; 0xfe765 orgs.asm:117
+ pop bp ; 5d ; 0xfe766 orgs.asm:118
+ pop bx ; 5b ; 0xfe767 orgs.asm:119
+ pop bx ; 5b ; 0xfe768 orgs.asm:120
+ pop dx ; 5a ; 0xfe769 orgs.asm:121
+ pop cx ; 59 ; 0xfe76a orgs.asm:122
+ pop ax ; 58 ; 0xfe76b orgs.asm:123
+ pop ES ; 07 ; 0xfe76c orgs.asm:847
+ pop DS ; 1f ; 0xfe76d orgs.asm:848
+ iret ; cf ; 0xfe76e orgs.asm:849
+ ; 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:854
+ out strict byte 020h, AL ; e6 20 ; 0xfe771 orgs.asm:855
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe773 orgs.asm:856
+ mov AL, strict byte 008h ; b0 08 ; 0xfe775 orgs.asm:857
+ out strict byte 021h, AL ; e6 21 ; 0xfe777 orgs.asm:858
+ mov AL, strict byte 070h ; b0 70 ; 0xfe779 orgs.asm:859
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe77b orgs.asm:860
+ mov AL, strict byte 004h ; b0 04 ; 0xfe77d orgs.asm:861
+ out strict byte 021h, AL ; e6 21 ; 0xfe77f orgs.asm:862
+ mov AL, strict byte 002h ; b0 02 ; 0xfe781 orgs.asm:863
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe783 orgs.asm:864
+ mov AL, strict byte 001h ; b0 01 ; 0xfe785 orgs.asm:865
+ out strict byte 021h, AL ; e6 21 ; 0xfe787 orgs.asm:866
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe789 orgs.asm:867
+ mov AL, strict byte 0b8h ; b0 b8 ; 0xfe78b orgs.asm:868
+ out strict byte 021h, AL ; e6 21 ; 0xfe78d orgs.asm:869
+ mov AL, strict byte 08fh ; b0 8f ; 0xfe78f orgs.asm:870
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe791 orgs.asm:871
+ retn ; c3 ; 0xfe793 orgs.asm:872
+ ; disGetNextSymbol 0xfe794 LB 0x186c -> off=0x0 cb=0000000000000051 uValue=00000000000f0794 'ebda_post'
+ebda_post: ; 0xfe794 LB 0x51
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe794 orgs.asm:95
+ mov word [00034h], ax ; a3 34 00 ; 0xfe797 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe79a orgs.asm:97
+ mov word [00036h], ax ; a3 36 00 ; 0xfe79d orgs.asm:98
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7a0 orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe7a3 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7a6 orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe7a9 orgs.asm:98
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7ac orgs.asm:95
+ mov word [001c8h], ax ; a3 c8 01 ; 0xfe7af orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7b2 orgs.asm:97
+ mov word [001cah], ax ; a3 ca 01 ; 0xfe7b5 orgs.asm:98
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7b8 orgs.asm:95
+ mov word [001cch], ax ; a3 cc 01 ; 0xfe7bb orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7be orgs.asm:97
+ mov word [001ceh], ax ; a3 ce 01 ; 0xfe7c1 orgs.asm:98
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7c4 orgs.asm:95
+ mov word [001dch], ax ; a3 dc 01 ; 0xfe7c7 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7ca orgs.asm:97
+ mov word [001deh], ax ; a3 de 01 ; 0xfe7cd orgs.asm:98
+ mov ax, 09fc0h ; b8 c0 9f ; 0xfe7d0 orgs.asm:884
+ mov ds, ax ; 8e d8 ; 0xfe7d3 orgs.asm:885
+ mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7d5 orgs.asm:886
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7da orgs.asm:888
+ mov ds, ax ; 8e d8 ; 0xfe7dc orgs.asm:889
+ mov word [0040eh], 09fc0h ; c7 06 0e 04 c0 9f ; 0xfe7de orgs.asm:890
+ retn ; c3 ; 0xfe7e4 orgs.asm:891
+ ; disGetNextSymbol 0xfe7e5 LB 0x181b -> off=0x0 cb=0000000000000049 uValue=00000000000f07e5 'biosorg_check_before_or_at_0E82Ch'
+biosorg_check_before_or_at_0E82Ch: ; 0xfe7e5 LB 0x49
+ times 0x47 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe82e LB 0x17d2 -> off=0x0 cb=0000000000000052 uValue=00000000000f082e 'biosorg_check_at_0E82Eh'
+biosorg_check_at_0E82Eh: ; 0xfe82e LB 0x52
+ sti ; fb ; 0xfe82e orgs.asm:902
+ pushfw ; 9c ; 0xfe82f orgs.asm:905
+ push ES ; 06 ; 0xfe830 orgs.asm:906
+ push DS ; 1e ; 0xfe831 orgs.asm:907
+ push ax ; 50 ; 0xfe832 orgs.asm:99
+ push cx ; 51 ; 0xfe833 orgs.asm:100
+ push dx ; 52 ; 0xfe834 orgs.asm:101
+ push bx ; 53 ; 0xfe835 orgs.asm:102
+ push sp ; 54 ; 0xfe836 orgs.asm:103
+ push bp ; 55 ; 0xfe837 orgs.asm:104
+ push si ; 56 ; 0xfe838 orgs.asm:105
+ push di ; 57 ; 0xfe839 orgs.asm:106
+ cmp ah, 000h ; 80 fc 00 ; 0xfe83a orgs.asm:910
+ je short 0e858h ; 74 19 ; 0xfe83d orgs.asm:911
+ cmp ah, 010h ; 80 fc 10 ; 0xfe83f orgs.asm:913
+ je short 0e858h ; 74 14 ; 0xfe842 orgs.asm:914
+ push CS ; 0e ; 0xfe844 orgs.asm:104
+ pop DS ; 1f ; 0xfe845 orgs.asm:105
+ cld ; fc ; 0xfe846 orgs.asm:106
+ call 0571bh ; e8 d1 6e ; 0xfe847 orgs.asm:917
+ pop di ; 5f ; 0xfe84a orgs.asm:116
+ pop si ; 5e ; 0xfe84b orgs.asm:117
+ pop bp ; 5d ; 0xfe84c orgs.asm:118
+ pop bx ; 5b ; 0xfe84d orgs.asm:119
+ pop bx ; 5b ; 0xfe84e orgs.asm:120
+ pop dx ; 5a ; 0xfe84f orgs.asm:121
+ pop cx ; 59 ; 0xfe850 orgs.asm:122
+ pop ax ; 58 ; 0xfe851 orgs.asm:123
+ pop DS ; 1f ; 0xfe852 orgs.asm:919
+ pop ES ; 07 ; 0xfe853 orgs.asm:920
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe854 orgs.asm:921
+ iret ; cf ; 0xfe857 orgs.asm:922
+ mov bx, strict word 00040h ; bb 40 00 ; 0xfe858 orgs.asm:925
+ mov ds, bx ; 8e db ; 0xfe85b orgs.asm:926
+ cli ; fa ; 0xfe85d orgs.asm:928
+ mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe85e orgs.asm:929
+ cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe862 orgs.asm:930
+ jne short 0e86ch ; 75 04 ; 0xfe866 orgs.asm:931
+ sti ; fb ; 0xfe868 orgs.asm:932
+ nop ; 90 ; 0xfe869 orgs.asm:933
+ jmp short 0e85dh ; eb f1 ; 0xfe86a orgs.asm:941
+ push CS ; 0e ; 0xfe86c orgs.asm:104
+ pop DS ; 1f ; 0xfe86d orgs.asm:105
+ cld ; fc ; 0xfe86e orgs.asm:106
+ call 0571bh ; e8 a9 6e ; 0xfe86f orgs.asm:945
+ pop di ; 5f ; 0xfe872 orgs.asm:116
+ pop si ; 5e ; 0xfe873 orgs.asm:117
+ pop bp ; 5d ; 0xfe874 orgs.asm:118
+ pop bx ; 5b ; 0xfe875 orgs.asm:119
+ pop bx ; 5b ; 0xfe876 orgs.asm:120
+ pop dx ; 5a ; 0xfe877 orgs.asm:121
+ pop cx ; 59 ; 0xfe878 orgs.asm:122
+ pop ax ; 58 ; 0xfe879 orgs.asm:123
+ pop DS ; 1f ; 0xfe87a orgs.asm:947
+ pop ES ; 07 ; 0xfe87b orgs.asm:948
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe87c orgs.asm:949
+ iret ; cf ; 0xfe87f orgs.asm:957
+ ; 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:974
+ push ax ; 50 ; 0xfe988 orgs.asm:975
+ mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:976
+ out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:977
+ in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:979
+ push DS ; 1e ; 0xfe98f orgs.asm:980
+ push ax ; 50 ; 0xfe990 orgs.asm:99
+ push cx ; 51 ; 0xfe991 orgs.asm:100
+ push dx ; 52 ; 0xfe992 orgs.asm:101
+ push bx ; 53 ; 0xfe993 orgs.asm:102
+ push sp ; 54 ; 0xfe994 orgs.asm:103
+ push bp ; 55 ; 0xfe995 orgs.asm:104
+ push si ; 56 ; 0xfe996 orgs.asm:105
+ push di ; 57 ; 0xfe997 orgs.asm:106
+ cld ; fc ; 0xfe998 orgs.asm:982
+ mov AH, strict byte 04fh ; b4 4f ; 0xfe999 orgs.asm:984
+ stc ; f9 ; 0xfe99b orgs.asm:985
+ int 015h ; cd 15 ; 0xfe99c orgs.asm:986
+ jnc short 0e9c7h ; 73 27 ; 0xfe99e orgs.asm:987
+ sti ; fb ; 0xfe9a0 orgs.asm:989
+ cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe9a1 orgs.asm:992
+ jne short 0e9b0h ; 75 0b ; 0xfe9a3 orgs.asm:993
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9a5 orgs.asm:994
+ mov ds, ax ; 8e d8 ; 0xfe9a7 orgs.asm:995
+ or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a9 orgs.asm:996
+ jmp short 0e9c7h ; eb 17 ; 0xfe9ae orgs.asm:997
+ cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9b0 orgs.asm:1000
+ jne short 0e9bfh ; 75 0b ; 0xfe9b2 orgs.asm:1001
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9b4 orgs.asm:1002
+ mov ds, ax ; 8e d8 ; 0xfe9b6 orgs.asm:1003
+ or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b8 orgs.asm:1004
+ jmp short 0e9c7h ; eb 08 ; 0xfe9bd orgs.asm:1005
+ push ES ; 06 ; 0xfe9bf orgs.asm:1008
+ push CS ; 0e ; 0xfe9c0 orgs.asm:104
+ pop DS ; 1f ; 0xfe9c1 orgs.asm:105
+ cld ; fc ; 0xfe9c2 orgs.asm:106
+ call 0528dh ; e8 c7 68 ; 0xfe9c3 orgs.asm:1010
+ pop ES ; 07 ; 0xfe9c6 orgs.asm:1011
+ pop di ; 5f ; 0xfe9c7 orgs.asm:116
+ pop si ; 5e ; 0xfe9c8 orgs.asm:117
+ pop bp ; 5d ; 0xfe9c9 orgs.asm:118
+ pop bx ; 5b ; 0xfe9ca orgs.asm:119
+ pop bx ; 5b ; 0xfe9cb orgs.asm:120
+ pop dx ; 5a ; 0xfe9cc orgs.asm:121
+ pop cx ; 59 ; 0xfe9cd orgs.asm:122
+ pop ax ; 58 ; 0xfe9ce orgs.asm:123
+ pop DS ; 1f ; 0xfe9cf orgs.asm:1015
+ cli ; fa ; 0xfe9d0 orgs.asm:1016
+ call 0e034h ; e8 60 f6 ; 0xfe9d1 orgs.asm:1017
+ mov AL, strict byte 0aeh ; b0 ae ; 0xfe9d4 orgs.asm:1019
+ out strict byte 064h, AL ; e6 64 ; 0xfe9d6 orgs.asm:1020
+ pop ax ; 58 ; 0xfe9d8 orgs.asm:1021
+ iret ; cf ; 0xfe9d9 orgs.asm:1022
+ push ax ; 50 ; 0xfe9da orgs.asm:99
+ push cx ; 51 ; 0xfe9db orgs.asm:100
+ push dx ; 52 ; 0xfe9dc orgs.asm:101
+ push bx ; 53 ; 0xfe9dd orgs.asm:102
+ push sp ; 54 ; 0xfe9de orgs.asm:103
+ push bp ; 55 ; 0xfe9df orgs.asm:104
+ push si ; 56 ; 0xfe9e0 orgs.asm:105
+ push di ; 57 ; 0xfe9e1 orgs.asm:106
+ push ES ; 06 ; 0xfe9e2 orgs.asm:1031
+ push DS ; 1e ; 0xfe9e3 orgs.asm:1032
+ push CS ; 0e ; 0xfe9e4 orgs.asm:104
+ pop DS ; 1f ; 0xfe9e5 orgs.asm:105
+ cld ; fc ; 0xfe9e6 orgs.asm:106
+ call 06a24h ; e8 3a 80 ; 0xfe9e7 orgs.asm:1034
+ pop DS ; 1f ; 0xfe9ea orgs.asm:1035
+ pop ES ; 07 ; 0xfe9eb orgs.asm:1036
+ pop di ; 5f ; 0xfe9ec orgs.asm:116
+ pop si ; 5e ; 0xfe9ed orgs.asm:117
+ pop bp ; 5d ; 0xfe9ee orgs.asm:118
+ pop bx ; 5b ; 0xfe9ef orgs.asm:119
+ pop bx ; 5b ; 0xfe9f0 orgs.asm:120
+ pop dx ; 5a ; 0xfe9f1 orgs.asm:121
+ pop cx ; 59 ; 0xfe9f2 orgs.asm:122
+ pop ax ; 58 ; 0xfe9f3 orgs.asm:123
+ iret ; cf ; 0xfe9f4 orgs.asm:1038
+ ; 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:1045
+ ; 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:1054
+ jc short 0ec7ch ; 72 1c ; 0xfec5e orgs.asm:1055
+ cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1057
+ jnbe short 0ec7ch ; 77 17 ; 0xfec63 orgs.asm:1058
+ push ax ; 50 ; 0xfec65 orgs.asm:99
+ push cx ; 51 ; 0xfec66 orgs.asm:100
+ push dx ; 52 ; 0xfec67 orgs.asm:101
+ push bx ; 53 ; 0xfec68 orgs.asm:102
+ push sp ; 54 ; 0xfec69 orgs.asm:103
+ push bp ; 55 ; 0xfec6a orgs.asm:104
+ push si ; 56 ; 0xfec6b orgs.asm:105
+ push di ; 57 ; 0xfec6c orgs.asm:106
+ push ES ; 06 ; 0xfec6d orgs.asm:1061
+ push DS ; 1e ; 0xfec6e orgs.asm:1062
+ push CS ; 0e ; 0xfec6f orgs.asm:104
+ pop DS ; 1f ; 0xfec70 orgs.asm:105
+ cld ; fc ; 0xfec71 orgs.asm:106
+ push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfec72 orgs.asm:86
+ jmp near 03c58h ; e9 de 4f ; 0xfec77 orgs.asm:87
+ ; disGetNextSymbol 0xfec7a LB 0x1386 -> off=0x0 cb=000000000000004a uValue=00000000000f0c7a 'jmp_call_ret_int13_out'
+jmp_call_ret_int13_out: ; 0xfec7a LB 0x4a
+ db 0ffh
+ in AL, DX ; ec ; 0xfec7b
+ push ES ; 06 ; 0xfec7c orgs.asm:1070
+ push ax ; 50 ; 0xfec7d orgs.asm:1071
+ push bx ; 53 ; 0xfec7e orgs.asm:1072
+ push cx ; 51 ; 0xfec7f orgs.asm:1073
+ push dx ; 52 ; 0xfec80 orgs.asm:1074
+ call 03c2ch ; e8 a8 4f ; 0xfec81 orgs.asm:1077
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfec84 orgs.asm:1078
+ je short 0ecbfh ; 74 37 ; 0xfec86 orgs.asm:1079
+ call 03c42h ; e8 b7 4f ; 0xfec88 orgs.asm:1082
+ pop dx ; 5a ; 0xfec8b orgs.asm:1083
+ push dx ; 52 ; 0xfec8c orgs.asm:1084
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec8d orgs.asm:1085
+ jne short 0ecabh ; 75 1a ; 0xfec8f orgs.asm:1086
+ pop dx ; 5a ; 0xfec91 orgs.asm:1088
+ pop cx ; 59 ; 0xfec92 orgs.asm:1089
+ pop bx ; 5b ; 0xfec93 orgs.asm:1090
+ pop ax ; 58 ; 0xfec94 orgs.asm:1091
+ pop ES ; 07 ; 0xfec95 orgs.asm:1092
+ push ax ; 50 ; 0xfec96 orgs.asm:99
+ push cx ; 51 ; 0xfec97 orgs.asm:100
+ push dx ; 52 ; 0xfec98 orgs.asm:101
+ push bx ; 53 ; 0xfec99 orgs.asm:102
+ push sp ; 54 ; 0xfec9a orgs.asm:103
+ push bp ; 55 ; 0xfec9b orgs.asm:104
+ push si ; 56 ; 0xfec9c orgs.asm:105
+ push di ; 57 ; 0xfec9d orgs.asm:106
+ push ES ; 06 ; 0xfec9e orgs.asm:1095
+ push DS ; 1e ; 0xfec9f orgs.asm:1096
+ push CS ; 0e ; 0xfeca0 orgs.asm:104
+ pop DS ; 1f ; 0xfeca1 orgs.asm:105
+ cld ; fc ; 0xfeca2 orgs.asm:106
+ push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfeca3 orgs.asm:86
+ jmp near 0422fh ; e9 84 55 ; 0xfeca8 orgs.asm:87
+ and dl, 0e0h ; 80 e2 e0 ; 0xfecab orgs.asm:1102
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfecae orgs.asm:1103
+ jne short 0ecbfh ; 75 0d ; 0xfecb0 orgs.asm:1104
+ pop dx ; 5a ; 0xfecb2 orgs.asm:1106
+ pop cx ; 59 ; 0xfecb3 orgs.asm:1107
+ pop bx ; 5b ; 0xfecb4 orgs.asm:1108
+ pop ax ; 58 ; 0xfecb5 orgs.asm:1109
+ pop ES ; 07 ; 0xfecb6 orgs.asm:1110
+ push ax ; 50 ; 0xfecb7 orgs.asm:1112
+ push cx ; 51 ; 0xfecb8 orgs.asm:1113
+ push dx ; 52 ; 0xfecb9 orgs.asm:1114
+ push bx ; 53 ; 0xfecba orgs.asm:1115
+ db 0feh, 0cah
+ ; dec dl ; fe ca ; 0xfecbb orgs.asm:1117
+ jmp short 0ecc8h ; eb 09 ; 0xfecbd orgs.asm:1118
+ pop dx ; 5a ; 0xfecbf orgs.asm:1121
+ pop cx ; 59 ; 0xfecc0 orgs.asm:1122
+ pop bx ; 5b ; 0xfecc1 orgs.asm:1123
+ pop ax ; 58 ; 0xfecc2 orgs.asm:1124
+ pop ES ; 07 ; 0xfecc3 orgs.asm:1125
+ ; disGetNextSymbol 0xfecc4 LB 0x133c -> off=0x0 cb=0000000000000004 uValue=00000000000f0cc4 'int13_noeltorito'
+int13_noeltorito: ; 0xfecc4 LB 0x4
+ push ax ; 50 ; 0xfecc4 orgs.asm:1128
+ push cx ; 51 ; 0xfecc5 orgs.asm:1129
+ push dx ; 52 ; 0xfecc6 orgs.asm:1130
+ push bx ; 53 ; 0xfecc7 orgs.asm:1131
+ ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000016 uValue=00000000000f0cc8 'int13_legacy'
+int13_legacy: ; 0xfecc8 LB 0x16
+ push dx ; 52 ; 0xfecc8 orgs.asm:1133
+ push bp ; 55 ; 0xfecc9 orgs.asm:1134
+ push si ; 56 ; 0xfecca orgs.asm:1135
+ push di ; 57 ; 0xfeccb orgs.asm:1136
+ push ES ; 06 ; 0xfeccc orgs.asm:1137
+ push DS ; 1e ; 0xfeccd orgs.asm:1138
+ push CS ; 0e ; 0xfecce orgs.asm:104
+ pop DS ; 1f ; 0xfeccf orgs.asm:105
+ cld ; fc ; 0xfecd0 orgs.asm:106
+ test dl, 080h ; f6 c2 80 ; 0xfecd1 orgs.asm:1143
+ jne short 0ecdeh ; 75 08 ; 0xfecd4 orgs.asm:1144
+ push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfecd6 orgs.asm:86
+ jmp near 031dfh ; e9 01 45 ; 0xfecdb orgs.asm:87
+ ; disGetNextSymbol 0xfecde LB 0x1322 -> off=0x0 cb=0000000000000014 uValue=00000000000f0cde 'int13_notfloppy'
+int13_notfloppy: ; 0xfecde LB 0x14
+ cmp dl, 0e0h ; 80 fa e0 ; 0xfecde orgs.asm:1149
+ jc short 0ecf2h ; 72 0f ; 0xfece1 orgs.asm:1150
+ shr ebx, 010h ; 66 c1 eb 10 ; 0xfece3 orgs.asm:1156
+ push bx ; 53 ; 0xfece7 orgs.asm:1157
+ call 04887h ; e8 9c 5b ; 0xfece8 orgs.asm:1158
+ pop bx ; 5b ; 0xfeceb orgs.asm:1159
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfecec orgs.asm:1160
+ jmp short 0ecffh ; eb 0d ; 0xfecf0 orgs.asm:1162
+ ; 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:1166
+ jnbe short 0ecfch ; 77 05 ; 0xfecf5 orgs.asm:1167
+ call 05e18h ; e8 1e 71 ; 0xfecf7 orgs.asm:1168
+ jmp short 0ecffh ; eb 03 ; 0xfecfa orgs.asm:1169
+ call 0626eh ; e8 6f 75 ; 0xfecfc orgs.asm:1172
+ ; disGetNextSymbol 0xfecff LB 0x1301 -> off=0x0 cb=000000000000000b uValue=00000000000f0cff 'int13_out'
+int13_out: ; 0xfecff LB 0xb
+ pop DS ; 1f ; 0xfecff orgs.asm:1175
+ pop ES ; 07 ; 0xfed00 orgs.asm:1176
+ pop di ; 5f ; 0xfed01 orgs.asm:116
+ pop si ; 5e ; 0xfed02 orgs.asm:117
+ pop bp ; 5d ; 0xfed03 orgs.asm:118
+ pop bx ; 5b ; 0xfed04 orgs.asm:119
+ pop bx ; 5b ; 0xfed05 orgs.asm:120
+ pop dx ; 5a ; 0xfed06 orgs.asm:121
+ pop cx ; 59 ; 0xfed07 orgs.asm:122
+ pop ax ; 58 ; 0xfed08 orgs.asm:123
+ iret ; cf ; 0xfed09 orgs.asm:1178
+ ; disGetNextSymbol 0xfed0a LB 0x12f6 -> off=0x0 cb=000000000000001e uValue=00000000000f0d0a 'detect_parport'
+detect_parport: ; 0xfed0a LB 0x1e
+ push dx ; 52 ; 0xfed0a orgs.asm:1185
+ inc dx ; 42 ; 0xfed0b orgs.asm:1186
+ inc dx ; 42 ; 0xfed0c orgs.asm:1187
+ in AL, DX ; ec ; 0xfed0d orgs.asm:1188
+ and AL, strict byte 0dfh ; 24 df ; 0xfed0e orgs.asm:1189
+ out DX, AL ; ee ; 0xfed10 orgs.asm:1190
+ pop dx ; 5a ; 0xfed11 orgs.asm:1191
+ mov AL, strict byte 0aah ; b0 aa ; 0xfed12 orgs.asm:1192
+ out DX, AL ; ee ; 0xfed14 orgs.asm:1193
+ in AL, DX ; ec ; 0xfed15 orgs.asm:1194
+ cmp AL, strict byte 0aah ; 3c aa ; 0xfed16 orgs.asm:1195
+ jne short 0ed27h ; 75 0d ; 0xfed18 orgs.asm:1196
+ push bx ; 53 ; 0xfed1a orgs.asm:1198
+ sal bx, 1 ; d1 e3 ; 0xfed1b orgs.asm:1199
+ mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed1d orgs.asm:1200
+ pop bx ; 5b ; 0xfed21 orgs.asm:1201
+ mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed22 orgs.asm:1202
+ inc bx ; 43 ; 0xfed26 orgs.asm:1203
+ retn ; c3 ; 0xfed27 orgs.asm:1205
+ ; disGetNextSymbol 0xfed28 LB 0x12d8 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d28 'detect_serial'
+detect_serial: ; 0xfed28 LB 0x24
+ push dx ; 52 ; 0xfed28 orgs.asm:1212
+ inc dx ; 42 ; 0xfed29 orgs.asm:1213
+ mov AL, strict byte 002h ; b0 02 ; 0xfed2a orgs.asm:1214
+ out DX, AL ; ee ; 0xfed2c orgs.asm:1215
+ in AL, DX ; ec ; 0xfed2d orgs.asm:1216
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed2e orgs.asm:1217
+ jne short 0ed4ah ; 75 18 ; 0xfed30 orgs.asm:1218
+ inc dx ; 42 ; 0xfed32 orgs.asm:1220
+ in AL, DX ; ec ; 0xfed33 orgs.asm:1221
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed34 orgs.asm:1222
+ jne short 0ed4ah ; 75 12 ; 0xfed36 orgs.asm:1223
+ dec dx ; 4a ; 0xfed38 orgs.asm:1225
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfed39 orgs.asm:1226
+ pop dx ; 5a ; 0xfed3b orgs.asm:1227
+ push bx ; 53 ; 0xfed3c orgs.asm:1228
+ sal bx, 1 ; d1 e3 ; 0xfed3d orgs.asm:1229
+ mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed3f orgs.asm:1230
+ pop bx ; 5b ; 0xfed43 orgs.asm:1231
+ mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed44 orgs.asm:1232
+ inc bx ; 43 ; 0xfed48 orgs.asm:1233
+ retn ; c3 ; 0xfed49 orgs.asm:1234
+ pop dx ; 5a ; 0xfed4a orgs.asm:1237
+ retn ; c3 ; 0xfed4b orgs.asm:1238
+ ; 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:1248
+ mov ds, ax ; 8e d8 ; 0xfed4e orgs.asm:1249
+ mov AL, strict byte 000h ; b0 00 ; 0xfed50 orgs.asm:1253
+ mov byte [0043eh], AL ; a2 3e 04 ; 0xfed52 orgs.asm:1254
+ mov byte [0043fh], AL ; a2 3f 04 ; 0xfed55 orgs.asm:1255
+ mov byte [00440h], AL ; a2 40 04 ; 0xfed58 orgs.asm:1256
+ mov byte [00441h], AL ; a2 41 04 ; 0xfed5b orgs.asm:1257
+ mov byte [00442h], AL ; a2 42 04 ; 0xfed5e orgs.asm:1258
+ mov byte [00443h], AL ; a2 43 04 ; 0xfed61 orgs.asm:1259
+ mov byte [00444h], AL ; a2 44 04 ; 0xfed64 orgs.asm:1260
+ mov byte [00445h], AL ; a2 45 04 ; 0xfed67 orgs.asm:1261
+ mov byte [00446h], AL ; a2 46 04 ; 0xfed6a orgs.asm:1262
+ mov byte [00447h], AL ; a2 47 04 ; 0xfed6d orgs.asm:1263
+ mov byte [00448h], AL ; a2 48 04 ; 0xfed70 orgs.asm:1264
+ mov byte [0048bh], AL ; a2 8b 04 ; 0xfed73 orgs.asm:1266
+ mov AL, strict byte 010h ; b0 10 ; 0xfed76 orgs.asm:1268
+ out strict byte 070h, AL ; e6 70 ; 0xfed78 orgs.asm:1269
+ in AL, strict byte 071h ; e4 71 ; 0xfed7a orgs.asm:1270
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfed7c orgs.asm:1271
+ shr al, 1 ; d0 e8 ; 0xfed7e orgs.asm:181
+ shr al, 1 ; d0 e8 ; 0xfed80 orgs.asm:184
+ shr al, 1 ; d0 e8 ; 0xfed82 orgs.asm:187
+ shr al, 1 ; d0 e8 ; 0xfed84 orgs.asm:190
+ je short 0ed8ch ; 74 04 ; 0xfed86 orgs.asm:1276
+ mov BL, strict byte 007h ; b3 07 ; 0xfed88 orgs.asm:1277
+ jmp short 0ed8eh ; eb 02 ; 0xfed8a orgs.asm:1278
+ mov BL, strict byte 000h ; b3 00 ; 0xfed8c orgs.asm:1281
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfed8e orgs.asm:1284
+ and AL, strict byte 00fh ; 24 0f ; 0xfed90 orgs.asm:1285
+ je short 0ed97h ; 74 03 ; 0xfed92 orgs.asm:1286
+ or bl, 070h ; 80 cb 70 ; 0xfed94 orgs.asm:1287
+ mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed97 orgs.asm:1289
+ mov AL, strict byte 000h ; b0 00 ; 0xfed9b orgs.asm:1292
+ mov byte [00490h], AL ; a2 90 04 ; 0xfed9d orgs.asm:1293
+ mov byte [00491h], AL ; a2 91 04 ; 0xfeda0 orgs.asm:1294
+ mov byte [00492h], AL ; a2 92 04 ; 0xfeda3 orgs.asm:1295
+ mov byte [00493h], AL ; a2 93 04 ; 0xfeda6 orgs.asm:1296
+ mov byte [00494h], AL ; a2 94 04 ; 0xfeda9 orgs.asm:1297
+ mov byte [00495h], AL ; a2 95 04 ; 0xfedac orgs.asm:1298
+ mov AL, strict byte 002h ; b0 02 ; 0xfedaf orgs.asm:1300
+ out strict byte 00ah, AL ; e6 0a ; 0xfedb1 orgs.asm:1301
+ mov ax, 0efc7h ; b8 c7 ef ; 0xfedb3 orgs.asm:95
+ mov word [00078h], ax ; a3 78 00 ; 0xfedb6 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedb9 orgs.asm:97
+ mov word [0007ah], ax ; a3 7a 00 ; 0xfedbc orgs.asm:98
+ mov ax, 0ec59h ; b8 59 ec ; 0xfedbf orgs.asm:95
+ mov word [00100h], ax ; a3 00 01 ; 0xfedc2 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedc5 orgs.asm:97
+ mov word [00102h], ax ; a3 02 01 ; 0xfedc8 orgs.asm:98
+ mov ax, 0ef57h ; b8 57 ef ; 0xfedcb orgs.asm:95
+ mov word [00038h], ax ; a3 38 00 ; 0xfedce orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedd1 orgs.asm:97
+ mov word [0003ah], ax ; a3 3a 00 ; 0xfedd4 orgs.asm:98
+ retn ; c3 ; 0xfedd7 orgs.asm:1307
+ ; 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:1320
+ mov CL, strict byte 004h ; b1 04 ; 0xfedd9 orgs.asm:1321
+ sal ax, CL ; d3 e0 ; 0xfeddb orgs.asm:1322
+ shr al, CL ; d2 e8 ; 0xfeddd orgs.asm:1323
+ pop cx ; 59 ; 0xfeddf orgs.asm:1324
+ aad 00ah ; d5 0a ; 0xfede0 orgs.asm:1326
+ retn ; c3 ; 0xfede2 orgs.asm:1327
+ ; 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:1335
+ out strict byte 070h, AL ; e6 70 ; 0xfede5 orgs.asm:1336
+ in AL, strict byte 071h ; e4 71 ; 0xfede7 orgs.asm:1337
+ call 0edd8h ; e8 ec ff ; 0xfede9 orgs.asm:1338
+ test al, al ; 84 c0 ; 0xfedec orgs.asm:1339
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfedee orgs.asm:1340
+ mov dx, 01234h ; ba 34 12 ; 0xfedf0 orgs.asm:1341
+ mul dx ; f7 e2 ; 0xfedf3 orgs.asm:1342
+ db 08bh, 0c8h
+ ; mov cx, ax ; 8b c8 ; 0xfedf5 orgs.asm:1343
+ mov AL, strict byte 002h ; b0 02 ; 0xfedf7 orgs.asm:1346
+ out strict byte 070h, AL ; e6 70 ; 0xfedf9 orgs.asm:1347
+ in AL, strict byte 071h ; e4 71 ; 0xfedfb orgs.asm:1348
+ call 0edd8h ; e8 d8 ff ; 0xfedfd orgs.asm:1349
+ test al, al ; 84 c0 ; 0xfee00 orgs.asm:1350
+ je short 0ee0fh ; 74 0b ; 0xfee02 orgs.asm:1351
+ add cx, 04463h ; 81 c1 63 44 ; 0xfee04 orgs.asm:1353
+ adc dx, strict byte 00004h ; 83 d2 04 ; 0xfee08 orgs.asm:1354
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfee0b orgs.asm:1355
+ jne short 0ee04h ; 75 f5 ; 0xfee0d orgs.asm:1356
+ mov AL, strict byte 004h ; b0 04 ; 0xfee0f orgs.asm:1360
+ out strict byte 070h, AL ; e6 70 ; 0xfee11 orgs.asm:1361
+ in AL, strict byte 071h ; e4 71 ; 0xfee13 orgs.asm:1362
+ call 0edd8h ; e8 c0 ff ; 0xfee15 orgs.asm:1363
+ test al, al ; 84 c0 ; 0xfee18 orgs.asm:1364
+ je short 0ee28h ; 74 0c ; 0xfee1a orgs.asm:1365
+ add cx, 0076ch ; 81 c1 6c 07 ; 0xfee1c orgs.asm:1367
+ adc dx, 00100h ; 81 d2 00 01 ; 0xfee20 orgs.asm:1368
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfee24 orgs.asm:1369
+ jne short 0ee1ch ; 75 f4 ; 0xfee26 orgs.asm:1370
+ db 08ah, 0cdh
+ ; mov cl, ch ; 8a cd ; 0xfee28 orgs.asm:1373
+ db 08ah, 0eah
+ ; mov ch, dl ; 8a ea ; 0xfee2a orgs.asm:1374
+ db 08ah, 0d6h
+ ; mov dl, dh ; 8a d6 ; 0xfee2c orgs.asm:1375
+ db 032h, 0f6h
+ ; xor dh, dh ; 32 f6 ; 0xfee2e orgs.asm:1376
+ mov word [0046ch], cx ; 89 0e 6c 04 ; 0xfee30 orgs.asm:1377
+ mov word [0046eh], dx ; 89 16 6e 04 ; 0xfee34 orgs.asm:1378
+ mov byte [00470h], dh ; 88 36 70 04 ; 0xfee38 orgs.asm:1379
+ retn ; c3 ; 0xfee3c orgs.asm:1427
+ ; 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:1438
+ push dx ; 52 ; 0xfef58 orgs.asm:1439
+ mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1440
+ in AL, DX ; ec ; 0xfef5c orgs.asm:1441
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1442
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1443
+ je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1444
+ mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1445
+ mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1446
+ out DX, AL ; ee ; 0xfef68 orgs.asm:1447
+ mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1449
+ in AL, DX ; ec ; 0xfef6c orgs.asm:1450
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1451
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1452
+ jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1453
+ mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1456
+ in AL, DX ; ec ; 0xfef76 orgs.asm:1457
+ mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1458
+ in AL, DX ; ec ; 0xfef7a orgs.asm:1459
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1460
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1461
+ je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1462
+ push DS ; 1e ; 0xfef81 orgs.asm:1465
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1466
+ mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1467
+ call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1468
+ or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1470
+ pop DS ; 1f ; 0xfef8e orgs.asm:1471
+ pop dx ; 5a ; 0xfef8f orgs.asm:1472
+ pop ax ; 58 ; 0xfef90 orgs.asm:1473
+ iret ; cf ; 0xfef91 orgs.asm:1474
+ ; 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:1501
+ ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000001b uValue=00000000000f0fd4 'int17_handler'
+int17_handler: ; 0xfefd4 LB 0x1b
+ push DS ; 1e ; 0xfefd4 orgs.asm:1504
+ push ES ; 06 ; 0xfefd5 orgs.asm:1505
+ push ax ; 50 ; 0xfefd6 orgs.asm:99
+ push cx ; 51 ; 0xfefd7 orgs.asm:100
+ push dx ; 52 ; 0xfefd8 orgs.asm:101
+ push bx ; 53 ; 0xfefd9 orgs.asm:102
+ push sp ; 54 ; 0xfefda orgs.asm:103
+ push bp ; 55 ; 0xfefdb orgs.asm:104
+ push si ; 56 ; 0xfefdc orgs.asm:105
+ push di ; 57 ; 0xfefdd orgs.asm:106
+ push CS ; 0e ; 0xfefde orgs.asm:104
+ pop DS ; 1f ; 0xfefdf orgs.asm:105
+ cld ; fc ; 0xfefe0 orgs.asm:106
+ call 07376h ; e8 92 83 ; 0xfefe1 orgs.asm:1508
+ pop di ; 5f ; 0xfefe4 orgs.asm:116
+ pop si ; 5e ; 0xfefe5 orgs.asm:117
+ pop bp ; 5d ; 0xfefe6 orgs.asm:118
+ pop bx ; 5b ; 0xfefe7 orgs.asm:119
+ pop bx ; 5b ; 0xfefe8 orgs.asm:120
+ pop dx ; 5a ; 0xfefe9 orgs.asm:121
+ pop cx ; 59 ; 0xfefea orgs.asm:122
+ pop ax ; 58 ; 0xfefeb orgs.asm:123
+ pop ES ; 07 ; 0xfefec orgs.asm:1510
+ pop DS ; 1f ; 0xfefed orgs.asm:1511
+ iret ; cf ; 0xfefee orgs.asm:1512
+ ; 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:1547
+ ; 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:1556
+ ; 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:1565
+ ; disGetNextSymbol 0xff066 LB 0xf9a -> off=0x0 cb=000000000000003e uValue=00000000000f1066 'biosorg_check_before_or_at_0F0A2h'
+biosorg_check_before_or_at_0F0A2h: ; 0xff066 LB 0x3e
+ times 0x3c db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff0a4 LB 0xf5c -> off=0x0 cb=0000000000000008 uValue=00000000000f10a4 'biosorg_check_at_0F0A4h'
+biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0x8
+ push CS ; 0e ; 0xff0a4 orgs.asm:104
+ pop DS ; 1f ; 0xff0a5 orgs.asm:105
+ cld ; fc ; 0xff0a6 orgs.asm:106
+ call 0170dh ; e8 63 26 ; 0xff0a7 orgs.asm:1580
+ hlt ; f4 ; 0xff0aa orgs.asm:1582
+ iret ; cf ; 0xff0ab orgs.asm:1583
+ ; disGetNextSymbol 0xff0ac LB 0xf54 -> off=0x0 cb=0000000000000095 uValue=00000000000f10ac 'int19_relocated'
+int19_relocated: ; 0xff0ac LB 0x95
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0ac orgs.asm:1594
+ mov ax, word [bp+002h] ; 8b 46 02 ; 0xff0ae orgs.asm:1595
+ cmp ax, 0f000h ; 3d 00 f0 ; 0xff0b1 orgs.asm:1596
+ je short 0f0c3h ; 74 0d ; 0xff0b4 orgs.asm:1597
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff0b6 orgs.asm:1599
+ mov ds, ax ; 8e d8 ; 0xff0b8 orgs.asm:1600
+ mov ax, 01234h ; b8 34 12 ; 0xff0ba orgs.asm:1601
+ mov word [001d8h], ax ; a3 d8 01 ; 0xff0bd orgs.asm:1602
+ jmp near 0e05bh ; e9 98 ef ; 0xff0c0 orgs.asm:1603
+ push CS ; 0e ; 0xff0c3 orgs.asm:104
+ pop DS ; 1f ; 0xff0c4 orgs.asm:105
+ cld ; fc ; 0xff0c5 orgs.asm:106
+ push bp ; 55 ; 0xff0c6 orgs.asm:1610
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0c7 orgs.asm:1611
+ mov ax, strict word 00001h ; b8 01 00 ; 0xff0c9 orgs.asm:1614
+ push ax ; 50 ; 0xff0cc orgs.asm:1615
+ call 04d2dh ; e8 5d 5c ; 0xff0cd orgs.asm:1616
+ inc sp ; 44 ; 0xff0d0 orgs.asm:1617
+ inc sp ; 44 ; 0xff0d1 orgs.asm:1618
+ test ax, ax ; 85 c0 ; 0xff0d2 orgs.asm:1619
+ jne short 0f0fdh ; 75 27 ; 0xff0d4 orgs.asm:1620
+ mov ax, strict word 00002h ; b8 02 00 ; 0xff0d6 orgs.asm:1623
+ push ax ; 50 ; 0xff0d9 orgs.asm:1624
+ call 04d2dh ; e8 50 5c ; 0xff0da orgs.asm:1625
+ inc sp ; 44 ; 0xff0dd orgs.asm:1626
+ inc sp ; 44 ; 0xff0de orgs.asm:1627
+ test ax, ax ; 85 c0 ; 0xff0df orgs.asm:1628
+ jne short 0f0fdh ; 75 1a ; 0xff0e1 orgs.asm:1629
+ mov ax, strict word 00003h ; b8 03 00 ; 0xff0e3 orgs.asm:1632
+ push ax ; 50 ; 0xff0e6 orgs.asm:1633
+ call 04d2dh ; e8 43 5c ; 0xff0e7 orgs.asm:1634
+ inc sp ; 44 ; 0xff0ea orgs.asm:1635
+ inc sp ; 44 ; 0xff0eb orgs.asm:1636
+ test ax, ax ; 85 c0 ; 0xff0ec orgs.asm:1637
+ jne short 0f0fdh ; 75 0d ; 0xff0ee orgs.asm:1638
+ mov ax, strict word 00004h ; b8 04 00 ; 0xff0f0 orgs.asm:1641
+ push ax ; 50 ; 0xff0f3 orgs.asm:1642
+ call 04d2dh ; e8 36 5c ; 0xff0f4 orgs.asm:1643
+ inc sp ; 44 ; 0xff0f7 orgs.asm:1644
+ inc sp ; 44 ; 0xff0f8 orgs.asm:1645
+ test ax, ax ; 85 c0 ; 0xff0f9 orgs.asm:1646
+ je short 0f0a4h ; 74 a7 ; 0xff0fb orgs.asm:1647
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0fd orgs.asm:1653
+ sal ax, 1 ; d1 e0 ; 0xff100 orgs.asm:212
+ sal ax, 1 ; d1 e0 ; 0xff102 orgs.asm:215
+ sal ax, 1 ; d1 e0 ; 0xff104 orgs.asm:218
+ sal ax, 1 ; d1 e0 ; 0xff106 orgs.asm:221
+ mov word [bp+002h], ax ; 89 46 02 ; 0xff108 orgs.asm:1655
+ mov ax, word [byte bp+000h] ; 8b 46 00 ; 0xff10b orgs.asm:1656
+ and ax, 0f000h ; 25 00 f0 ; 0xff10e orgs.asm:1665
+ mov word [bp+004h], ax ; 89 46 04 ; 0xff111 orgs.asm:1666
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff114 orgs.asm:1667
+ mov ds, ax ; 8e d8 ; 0xff116 orgs.asm:1668
+ mov es, ax ; 8e c0 ; 0xff118 orgs.asm:1669
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff11a orgs.asm:1670
+ mov ax, 0aa55h ; b8 55 aa ; 0xff11d orgs.asm:1671
+ pop bp ; 5d ; 0xff120 orgs.asm:1673
+ iret ; cf ; 0xff121 orgs.asm:1674
+ or cx, word [bp+si] ; 0b 0a ; 0xff122
+ or word [bp+di], cx ; 09 0b ; 0xff124
+ push eax ; 66 50 ; 0xff126 orgs.asm:88
+ mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff128 orgs.asm:89
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xff12e orgs.asm:90
+ sal eax, 008h ; 66 c1 e0 08 ; 0xff130 orgs.asm:91
+ and dl, 0fch ; 80 e2 fc ; 0xff134 orgs.asm:92
+ db 00ah, 0c2h
+ ; or al, dl ; 0a c2 ; 0xff137 orgs.asm:93
+ mov dx, 00cf8h ; ba f8 0c ; 0xff139 orgs.asm:94
+ out DX, eax ; 66 ef ; 0xff13c orgs.asm:95
+ pop eax ; 66 58 ; 0xff13e orgs.asm:96
+ retn ; c3 ; 0xff140 orgs.asm:97
+ ; disGetNextSymbol 0xff141 LB 0xebf -> off=0x0 cb=0000000000000012 uValue=00000000000f1141 'pcibios_init_iomem_bases'
+pcibios_init_iomem_bases: ; 0xff141 LB 0x12
+ push bp ; 55 ; 0xff141 orgs.asm:100
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff142 orgs.asm:101
+ mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff144 orgs.asm:103
+ mov dx, 00410h ; ba 10 04 ; 0xff14a orgs.asm:104
+ out DX, eax ; 66 ef ; 0xff14d orgs.asm:105
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xff14f orgs.asm:218
+ pop bp ; 5d ; 0xff151 orgs.asm:219
+ retn ; c3 ; 0xff152 orgs.asm:220
+ ; disGetNextSymbol 0xff153 LB 0xead -> off=0x0 cb=000000000000000c uValue=00000000000f1153 'pcibios_init_set_elcr'
+pcibios_init_set_elcr: ; 0xff153 LB 0xc
+ push ax ; 50 ; 0xff153 orgs.asm:223
+ push cx ; 51 ; 0xff154 orgs.asm:224
+ mov dx, 004d0h ; ba d0 04 ; 0xff155 orgs.asm:225
+ test AL, strict byte 008h ; a8 08 ; 0xff158 orgs.asm:226
+ je short 0f15fh ; 74 03 ; 0xff15a orgs.asm:227
+ inc dx ; 42 ; 0xff15c orgs.asm:229
+ and AL, strict byte 007h ; 24 07 ; 0xff15d orgs.asm:230
+ ; disGetNextSymbol 0xff15f LB 0xea1 -> off=0x0 cb=000000000000000d uValue=00000000000f115f 'is_master_pic'
+is_master_pic: ; 0xff15f LB 0xd
+ db 08ah, 0c8h
+ ; mov cl, al ; 8a c8 ; 0xff15f orgs.asm:232
+ mov BL, strict byte 001h ; b3 01 ; 0xff161 orgs.asm:233
+ sal bl, CL ; d2 e3 ; 0xff163 orgs.asm:234
+ in AL, DX ; ec ; 0xff165 orgs.asm:235
+ db 00ah, 0c3h
+ ; or al, bl ; 0a c3 ; 0xff166 orgs.asm:236
+ out DX, AL ; ee ; 0xff168 orgs.asm:237
+ pop cx ; 59 ; 0xff169 orgs.asm:238
+ pop ax ; 58 ; 0xff16a orgs.asm:239
+ retn ; c3 ; 0xff16b orgs.asm:240
+ ; disGetNextSymbol 0xff16c LB 0xe94 -> off=0x0 cb=0000000000000034 uValue=00000000000f116c 'pcibios_init_irqs'
+pcibios_init_irqs: ; 0xff16c LB 0x34
+ push DS ; 1e ; 0xff16c orgs.asm:243
+ push bp ; 55 ; 0xff16d orgs.asm:244
+ mov ax, 0f000h ; b8 00 f0 ; 0xff16e orgs.asm:245
+ mov ds, ax ; 8e d8 ; 0xff171 orgs.asm:246
+ pop bp ; 5d ; 0xff173 orgs.asm:353
+ pop DS ; 1f ; 0xff174 orgs.asm:354
+ retn ; c3 ; 0xff175 orgs.asm:355
+ mov ax, ax ; 89 c0 ; 0xff176
+ mov ax, ax ; 89 c0 ; 0xff178
+ mov ax, ax ; 89 c0 ; 0xff17a
+ mov ax, ax ; 89 c0 ; 0xff17c
+ mov ax, ax ; 89 c0 ; 0xff17e
+ and AL, strict byte 050h ; 24 50 ; 0xff180
+ dec cx ; 49 ; 0xff182
+ push dx ; 52 ; 0xff183
+ add byte [bx+di], al ; 00 01 ; 0xff184
+ add byte [bp+si], al ; 00 02 ; 0xff186
+ add byte [bx+si], cl ; 00 08 ; 0xff188
+ add byte [bx+si], al ; 00 00 ; 0xff18a
+ xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff18c
+ times 0xf db 0
+ db 031h
+ ; disGetNextSymbol 0xff1a0 LB 0xe60 -> off=0x0 cb=00000000000001e0 uValue=00000000000f11a0 '_pci_routing_table'
+_pci_routing_table: ; 0xff1a0 LB 0x1e0
+ db 000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h
+ db 000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h
+ db 000h, 018h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 002h, 000h
+ db 000h, 020h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 003h, 000h
+ db 000h, 028h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 004h, 000h
+ db 000h, 030h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 005h, 000h
+ db 000h, 038h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 006h, 000h
+ db 000h, 040h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 007h, 000h
+ db 000h, 048h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 008h, 000h
+ db 000h, 050h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 009h, 000h
+ db 000h, 058h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00ah, 000h
+ db 000h, 060h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00bh, 000h
+ db 000h, 068h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 00ch, 000h
+ db 000h, 070h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 00dh, 000h
+ db 000h, 078h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00eh, 000h
+ db 000h, 080h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00fh, 000h
+ db 000h, 088h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 010h, 000h
+ db 000h, 090h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 011h, 000h
+ db 000h, 098h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 012h, 000h
+ db 000h, 0a0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 013h, 000h
+ db 000h, 0a8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 014h, 000h
+ db 000h, 0b0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 015h, 000h
+ db 000h, 0b8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 016h, 000h
+ db 000h, 0c0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 017h, 000h
+ db 000h, 0c8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 018h, 000h
+ db 000h, 0d0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 019h, 000h
+ db 000h, 0d8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 01ah, 000h
+ db 000h, 0e0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 01bh, 000h
+ db 000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h
+ db 000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h
+ ; disGetNextSymbol 0xff380 LB 0xc80 -> off=0x0 cb=0000000000000002 uValue=00000000000f1380 '_pci_routing_table_size'
+_pci_routing_table_size: ; 0xff380 LB 0x2
+ loopne 0f383h ; e0 01 ; 0xff380
+ ; disGetNextSymbol 0xff382 LB 0xc7e -> off=0x0 cb=00000000000004bf uValue=00000000000f1382 'biosorg_check_before_or_at_0F83Fh'
+biosorg_check_before_or_at_0F83Fh: ; 0xff382 LB 0x4bf
+ times 0x4bd db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff841 LB 0x7bf -> off=0x0 cb=000000000000000c uValue=00000000000f1841 'int12_handler'
+int12_handler: ; 0xff841 LB 0xc
+ sti ; fb ; 0xff841 orgs.asm:1688
+ push DS ; 1e ; 0xff842 orgs.asm:1689
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1690
+ mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1691
+ mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1692
+ pop DS ; 1f ; 0xff84b orgs.asm:1693
+ iret ; cf ; 0xff84c orgs.asm:1694
+ ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler'
+int11_handler: ; 0xff84d LB 0xc
+ sti ; fb ; 0xff84d orgs.asm:1703
+ push DS ; 1e ; 0xff84e orgs.asm:1704
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1705
+ mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1706
+ mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1707
+ pop DS ; 1f ; 0xff857 orgs.asm:1708
+ iret ; cf ; 0xff858 orgs.asm:1709
+ ; disGetNextSymbol 0xff859 LB 0x7a7 -> off=0x0 cb=000000000000002d uValue=00000000000f1859 'int15_handler'
+int15_handler: ; 0xff859 LB 0x2d
+ pushfw ; 9c ; 0xff859 orgs.asm:1738
+ push DS ; 1e ; 0xff85a orgs.asm:1739
+ push ES ; 06 ; 0xff85b orgs.asm:1740
+ push CS ; 0e ; 0xff85c orgs.asm:104
+ pop DS ; 1f ; 0xff85d orgs.asm:105
+ cld ; fc ; 0xff85e orgs.asm:106
+ push ax ; 50 ; 0xff85f orgs.asm:99
+ push cx ; 51 ; 0xff860 orgs.asm:100
+ push dx ; 52 ; 0xff861 orgs.asm:101
+ push bx ; 53 ; 0xff862 orgs.asm:102
+ push sp ; 54 ; 0xff863 orgs.asm:103
+ push bp ; 55 ; 0xff864 orgs.asm:104
+ push si ; 56 ; 0xff865 orgs.asm:105
+ push di ; 57 ; 0xff866 orgs.asm:106
+ cmp ah, 053h ; 80 fc 53 ; 0xff867 orgs.asm:1751
+ je short 0f881h ; 74 15 ; 0xff86a orgs.asm:1752
+ cmp ah, 0c2h ; 80 fc c2 ; 0xff86c orgs.asm:1753
+ je short 0f886h ; 74 15 ; 0xff86f orgs.asm:1754
+ call 06717h ; e8 a3 6e ; 0xff871 orgs.asm:1756
+ pop di ; 5f ; 0xff874 orgs.asm:116
+ pop si ; 5e ; 0xff875 orgs.asm:117
+ pop bp ; 5d ; 0xff876 orgs.asm:118
+ pop bx ; 5b ; 0xff877 orgs.asm:119
+ pop bx ; 5b ; 0xff878 orgs.asm:120
+ pop dx ; 5a ; 0xff879 orgs.asm:121
+ pop cx ; 59 ; 0xff87a orgs.asm:122
+ pop ax ; 58 ; 0xff87b orgs.asm:123
+ pop ES ; 07 ; 0xff87c orgs.asm:1762
+ pop DS ; 1f ; 0xff87d orgs.asm:1763
+ popfw ; 9d ; 0xff87e orgs.asm:1764
+ jmp short 0f88bh ; eb 0a ; 0xff87f orgs.asm:1765
+ call 0aa27h ; e8 a3 b1 ; 0xff881 orgs.asm:1768
+ jmp short 0f874h ; eb ee ; 0xff884 orgs.asm:1769
+ ; disGetNextSymbol 0xff886 LB 0x77a -> off=0x0 cb=0000000000000005 uValue=00000000000f1886 'int15_handler_mouse'
+int15_handler_mouse: ; 0xff886 LB 0x5
+ call 06ff6h ; e8 6d 77 ; 0xff886 orgs.asm:1772
+ jmp short 0f874h ; eb e9 ; 0xff889 orgs.asm:1773
+ ; 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:1790
+ push bp ; 55 ; 0xff88d orgs.asm:1791
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff88e orgs.asm:1792
+ and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff890 orgs.asm:1793
+ or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff894 orgs.asm:1794
+ pop bp ; 5d ; 0xff899 orgs.asm:1795
+ iret ; cf ; 0xff89a orgs.asm:1796
+ push bp ; 55 ; 0xff89b orgs.asm:1798
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff89c orgs.asm:1799
+ or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff89e orgs.asm:1800
+ pop bp ; 5d ; 0xff8a3 orgs.asm:1801
+ iret ; cf ; 0xff8a4 orgs.asm:1802
+ ; disGetNextSymbol 0xff8a5 LB 0x75b -> off=0x0 cb=000000000000003a uValue=00000000000f18a5 'int74_handler'
+int74_handler: ; 0xff8a5 LB 0x3a
+ sti ; fb ; 0xff8a5 orgs.asm:1809
+ push ax ; 50 ; 0xff8a6 orgs.asm:99
+ push cx ; 51 ; 0xff8a7 orgs.asm:100
+ push dx ; 52 ; 0xff8a8 orgs.asm:101
+ push bx ; 53 ; 0xff8a9 orgs.asm:102
+ push sp ; 54 ; 0xff8aa orgs.asm:103
+ push bp ; 55 ; 0xff8ab orgs.asm:104
+ push si ; 56 ; 0xff8ac orgs.asm:105
+ push di ; 57 ; 0xff8ad orgs.asm:106
+ push ES ; 06 ; 0xff8ae orgs.asm:1811
+ push DS ; 1e ; 0xff8af orgs.asm:1812
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8b0 orgs.asm:1813
+ push ax ; 50 ; 0xff8b2 orgs.asm:1814
+ push ax ; 50 ; 0xff8b3 orgs.asm:1815
+ push ax ; 50 ; 0xff8b4 orgs.asm:1816
+ push ax ; 50 ; 0xff8b5 orgs.asm:1817
+ push ax ; 50 ; 0xff8b6 orgs.asm:1818
+ push CS ; 0e ; 0xff8b7 orgs.asm:104
+ pop DS ; 1f ; 0xff8b8 orgs.asm:105
+ cld ; fc ; 0xff8b9 orgs.asm:106
+ call 06f48h ; e8 8b 76 ; 0xff8ba orgs.asm:1820
+ pop cx ; 59 ; 0xff8bd orgs.asm:1821
+ jcxz 0f8cdh ; e3 0d ; 0xff8be orgs.asm:1822
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8c0 orgs.asm:1828
+ push ax ; 50 ; 0xff8c2 orgs.asm:1829
+ pop DS ; 1f ; 0xff8c3 orgs.asm:1831
+ push word [0040eh] ; ff 36 0e 04 ; 0xff8c4 orgs.asm:1832
+ pop DS ; 1f ; 0xff8c8 orgs.asm:1833
+ call far [word 00022h] ; ff 1e 22 00 ; 0xff8c9 orgs.asm:1834
+ cli ; fa ; 0xff8cd orgs.asm:1836
+ call 0e030h ; e8 5f e7 ; 0xff8ce orgs.asm:1837
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xff8d1 orgs.asm:1838
+ pop DS ; 1f ; 0xff8d4 orgs.asm:1839
+ pop ES ; 07 ; 0xff8d5 orgs.asm:1840
+ pop di ; 5f ; 0xff8d6 orgs.asm:116
+ pop si ; 5e ; 0xff8d7 orgs.asm:117
+ pop bp ; 5d ; 0xff8d8 orgs.asm:118
+ pop bx ; 5b ; 0xff8d9 orgs.asm:119
+ pop bx ; 5b ; 0xff8da orgs.asm:120
+ pop dx ; 5a ; 0xff8db orgs.asm:121
+ pop cx ; 59 ; 0xff8dc orgs.asm:122
+ pop ax ; 58 ; 0xff8dd orgs.asm:123
+ iret ; cf ; 0xff8de orgs.asm:1842
+ ; disGetNextSymbol 0xff8df LB 0x721 -> off=0x0 cb=0000000000000012 uValue=00000000000f18df 'int76_handler'
+int76_handler: ; 0xff8df LB 0x12
+ push ax ; 50 ; 0xff8df orgs.asm:1849
+ push DS ; 1e ; 0xff8e0 orgs.asm:1850
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff8e1 orgs.asm:1851
+ mov ds, ax ; 8e d8 ; 0xff8e4 orgs.asm:1852
+ mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8e6 orgs.asm:1853
+ call 0e030h ; e8 42 e7 ; 0xff8eb orgs.asm:1854
+ pop DS ; 1f ; 0xff8ee orgs.asm:1855
+ pop ax ; 58 ; 0xff8ef orgs.asm:1856
+ iret ; cf ; 0xff8f0 orgs.asm:1857
+ ; disGetNextSymbol 0xff8f1 LB 0x70f -> off=0x0 cb=000000000000002d uValue=00000000000f18f1 'int70_handler'
+int70_handler: ; 0xff8f1 LB 0x2d
+ push ES ; 06 ; 0xff8f1 orgs.asm:1866
+ push DS ; 1e ; 0xff8f2 orgs.asm:1867
+ push ax ; 50 ; 0xff8f3 orgs.asm:99
+ push cx ; 51 ; 0xff8f4 orgs.asm:100
+ push dx ; 52 ; 0xff8f5 orgs.asm:101
+ push bx ; 53 ; 0xff8f6 orgs.asm:102
+ push sp ; 54 ; 0xff8f7 orgs.asm:103
+ push bp ; 55 ; 0xff8f8 orgs.asm:104
+ push si ; 56 ; 0xff8f9 orgs.asm:105
+ push di ; 57 ; 0xff8fa orgs.asm:106
+ push CS ; 0e ; 0xff8fb orgs.asm:104
+ pop DS ; 1f ; 0xff8fc orgs.asm:105
+ cld ; fc ; 0xff8fd orgs.asm:106
+ call 06bfch ; e8 fb 72 ; 0xff8fe orgs.asm:1870
+ pop di ; 5f ; 0xff901 orgs.asm:116
+ pop si ; 5e ; 0xff902 orgs.asm:117
+ pop bp ; 5d ; 0xff903 orgs.asm:118
+ pop bx ; 5b ; 0xff904 orgs.asm:119
+ pop bx ; 5b ; 0xff905 orgs.asm:120
+ pop dx ; 5a ; 0xff906 orgs.asm:121
+ pop cx ; 59 ; 0xff907 orgs.asm:122
+ pop ax ; 58 ; 0xff908 orgs.asm:123
+ pop DS ; 1f ; 0xff909 orgs.asm:1872
+ pop ES ; 07 ; 0xff90a orgs.asm:1873
+ iret ; cf ; 0xff90b orgs.asm:1874
+ jnbe short 0f913h ; 77 05 ; 0xff90c orgs.asm:1884
+ cmp ax, 000b0h ; 3d b0 00 ; 0xff90e orgs.asm:1885
+ jc short 0f91bh ; 72 08 ; 0xff911 orgs.asm:1886
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xff913 orgs.asm:1889
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff915 orgs.asm:1890
+ inc byte [word 00070h] ; fe 06 70 00 ; 0xff917 orgs.asm:1892
+ jmp near 0fec1h ; e9 a3 05 ; 0xff91b orgs.asm:1894
+ ; 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:1928
+ push DS ; 1e ; 0xffe6f orgs.asm:1929
+ push ax ; 50 ; 0xffe70 orgs.asm:99
+ push cx ; 51 ; 0xffe71 orgs.asm:100
+ push dx ; 52 ; 0xffe72 orgs.asm:101
+ push bx ; 53 ; 0xffe73 orgs.asm:102
+ push sp ; 54 ; 0xffe74 orgs.asm:103
+ push bp ; 55 ; 0xffe75 orgs.asm:104
+ push si ; 56 ; 0xffe76 orgs.asm:105
+ push di ; 57 ; 0xffe77 orgs.asm:106
+ push CS ; 0e ; 0xffe78 orgs.asm:104
+ pop DS ; 1f ; 0xffe79 orgs.asm:105
+ cld ; fc ; 0xffe7a orgs.asm:106
+ call 06ca4h ; e8 26 6e ; 0xffe7b orgs.asm:1933
+ pop di ; 5f ; 0xffe7e orgs.asm:116
+ pop si ; 5e ; 0xffe7f orgs.asm:117
+ pop bp ; 5d ; 0xffe80 orgs.asm:118
+ pop bx ; 5b ; 0xffe81 orgs.asm:119
+ pop bx ; 5b ; 0xffe82 orgs.asm:120
+ pop dx ; 5a ; 0xffe83 orgs.asm:121
+ pop cx ; 59 ; 0xffe84 orgs.asm:122
+ pop ax ; 58 ; 0xffe85 orgs.asm:123
+ pop DS ; 1f ; 0xffe86 orgs.asm:1935
+ pop ES ; 07 ; 0xffe87 orgs.asm:1936
+ iret ; cf ; 0xffe88 orgs.asm:1937
+ ; 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:1950
+ push ax ; 50 ; 0xffea6 orgs.asm:1951
+ push DS ; 1e ; 0xffea7 orgs.asm:1953
+ push dx ; 52 ; 0xffea8 orgs.asm:1954
+ mov ax, strict word 00040h ; b8 40 00 ; 0xffea9 orgs.asm:1955
+ mov ds, ax ; 8e d8 ; 0xffeac orgs.asm:1956
+ mov ax, word [0006ch] ; a1 6c 00 ; 0xffeae orgs.asm:1962
+ mov dx, word [word 0006eh] ; 8b 16 6e 00 ; 0xffeb1 orgs.asm:1963
+ inc ax ; 40 ; 0xffeb5 orgs.asm:1964
+ jne short 0feb9h ; 75 01 ; 0xffeb6 orgs.asm:1965
+ inc dx ; 42 ; 0xffeb8 orgs.asm:1966
+ cmp dx, strict byte 00018h ; 83 fa 18 ; 0xffeb9 orgs.asm:1975
+ jc short 0fec1h ; 72 03 ; 0xffebc orgs.asm:1976
+ jmp near 0f90ch ; e9 4b fa ; 0xffebe orgs.asm:1977
+ mov word [0006ch], ax ; a3 6c 00 ; 0xffec1 orgs.asm:1989
+ mov word [word 0006eh], dx ; 89 16 6e 00 ; 0xffec4 orgs.asm:1990
+ mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:1994
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xffecb orgs.asm:1995
+ je short 0feddh ; 74 0e ; 0xffecd orgs.asm:1996
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xffecf orgs.asm:1997
+ mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:1998
+ jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:1999
+ mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:2001
+ in AL, DX ; ec ; 0xffed9 orgs.asm:2002
+ and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:2003
+ out DX, AL ; ee ; 0xffedc orgs.asm:2004
+ int 01ch ; cd 1c ; 0xffedd orgs.asm:2007
+ cli ; fa ; 0xffedf orgs.asm:2009
+ call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2010
+ pop dx ; 5a ; 0xffee3 orgs.asm:2011
+ pop DS ; 1f ; 0xffee4 orgs.asm:2012
+ pop ax ; 58 ; 0xffee5 orgs.asm:2017
+ iret ; cf ; 0xffee6 orgs.asm:2019
+ ; 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:2044
+ ; 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:2053
+ 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:2063
+ ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
+ db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 020h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
new file mode 100644
index 00000000..111af4ca
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
@@ -0,0 +1 @@
+c5b0e0594d2f9c29542ef64d8a51fbab *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..6df7629d
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ahci.c
@@ -0,0 +1,1047 @@
+/* $Id: ahci.c $ */
+/** @file
+ * AHCI host adapter driver to boot from SATA disks.
+ */
+
+/*
+ * Copyright (C) 2011-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "ebda.h"
+#include "inlines.h"
+#include "pciutil.h"
+#include "vds.h"
+
+#if DEBUG_AHCI
+# define DBG_AHCI(...) BX_INFO(__VA_ARGS__)
+#else
+# define DBG_AHCI(...)
+#endif
+
+/* Number of S/G table entries in EDDS. */
+#define NUM_EDDS_SG 16
+
+
+/**
+ * AHCI PRDT structure.
+ */
+typedef struct
+{
+ uint32_t phys_addr;
+ uint32_t something;
+ uint32_t reserved;
+ uint32_t len;
+} ahci_prdt;
+
+/**
+ * SATA D2H FIS (Device to Host Frame Information Structure).
+ */
+typedef struct {
+ uint8_t fis_type; /* 34h */
+ uint8_t intr; /* Bit 6 indicates interrupt status. */
+ uint8_t status; /* Status register. */
+ uint8_t error; /* Error register. */
+ uint8_t sec_no; /* Sector number register. */
+ uint8_t cyl_lo; /* Cylinder low register. */
+ uint8_t cyl_hi; /* Cylinder high register. */
+ uint8_t dev_hd; /* Device/head register. */
+ uint8_t sec_no_exp; /* Expanded sector number register. */
+ uint8_t cyl_lo_exp; /* Expanded cylinder low register. */
+ uint8_t cyl_hi_exp; /* Expanded cylinder high register. */
+ uint8_t resvd0;
+ uint8_t sec_cn; /* Sector count register. */
+ uint8_t sec_cn_exp; /* Expanded sector count register. */
+ uint16_t resvd1;
+ uint32_t resvd2;
+} fis_d2h;
+
+ct_assert(sizeof(fis_d2h) == 20);
+
+/**
+ * AHCI controller data.
+ */
+typedef struct
+{
+ /** The AHCI command list as defined by chapter 4.2.2 of the Intel AHCI spec.
+ * Because the BIOS doesn't support NCQ only the first command header is defined
+ * to save memory. - Must be aligned on a 1K boundary.
+ */
+ uint32_t aCmdHdr[0x8];
+ /** Align the next structure on a 128 byte boundary. */
+ uint8_t abAlignment1[0x60];
+ /** The command table of one request as defined by chapter 4.2.3 of the Intel AHCI spec.
+ * Must be aligned on 128 byte boundary.
+ */
+ uint8_t abCmd[0x40];
+ /** The ATAPI command region.
+ * Located 40h bytes after the beginning of the CFIS (Command FIS).
+ */
+ uint8_t abAcmd[0x20];
+ /** Align the PRDT structure on a 128 byte boundary. */
+ uint8_t abAlignment2[0x20];
+ /** Physical Region Descriptor Table (PRDT) array. In other
+ * words, a scatter/gather descriptor list.
+ */
+ ahci_prdt aPrdt[16];
+ /** Memory for the received command FIS area as specified by chapter 4.2.1
+ * of the Intel AHCI spec. This area is normally 256 bytes big but to save memory
+ * only the first 96 bytes are used because it is assumed that the controller
+ * never writes to the UFIS or reserved area. - Must be aligned on a 256byte boundary.
+ */
+ uint8_t abFisRecv[0x60];
+ /** Base I/O port for the index/data register pair. */
+ uint16_t iobase;
+ /** Current port which uses the memory to communicate with the controller. */
+ uint8_t cur_port;
+ /** Current PRD index (for pre/post skip). */
+ uint8_t cur_prd;
+ /** Physical address of the sink buffer (for pre/post skip). */
+ uint32_t sink_buf_phys;
+ /** Saved high bits of EAX. */
+ uint16_t saved_eax_hi;
+ /** VDS EDDS DMA buffer descriptor structure. */
+ vds_edds edds;
+ vds_sg edds_more_sg[NUM_EDDS_SG - 1];
+} ahci_t;
+
+/* The AHCI specific data must fit into 1KB (statically allocated). */
+ct_assert(sizeof(ahci_t) <= 1024);
+
+/** PCI configuration fields. */
+#define PCI_CONFIG_CAP 0x34
+
+#define PCI_CAP_ID_SATACR 0x12
+#define VBOX_AHCI_NO_DEVICE 0xffff
+
+#define RT_BIT_32(bit) ((uint32_t)(1L << (bit)))
+
+/** Global register set. */
+#define AHCI_HBA_SIZE 0x100
+
+/// @todo what are the casts good for?
+#define AHCI_REG_CAP ((uint32_t)0x00)
+#define AHCI_REG_GHC ((uint32_t)0x04)
+# define AHCI_GHC_AE RT_BIT_32(31)
+# define AHCI_GHC_IR RT_BIT_32(1)
+# define AHCI_GHC_HR RT_BIT_32(0)
+#define AHCI_REG_IS ((uint32_t)0x08)
+#define AHCI_REG_PI ((uint32_t)0x0c)
+#define AHCI_REG_VS ((uint32_t)0x10)
+
+/** Per port register set. */
+#define AHCI_PORT_SIZE 0x80
+
+#define AHCI_REG_PORT_CLB 0x00
+#define AHCI_REG_PORT_CLBU 0x04
+#define AHCI_REG_PORT_FB 0x08
+#define AHCI_REG_PORT_FBU 0x0c
+#define AHCI_REG_PORT_IS 0x10
+# define AHCI_REG_PORT_IS_DHRS RT_BIT_32(0)
+# define AHCI_REG_PORT_IS_TFES RT_BIT_32(30)
+#define AHCI_REG_PORT_IE 0x14
+#define AHCI_REG_PORT_CMD 0x18
+# define AHCI_REG_PORT_CMD_ST RT_BIT_32(0)
+# define AHCI_REG_PORT_CMD_FRE RT_BIT_32(4)
+# define AHCI_REG_PORT_CMD_FR RT_BIT_32(14)
+# define AHCI_REG_PORT_CMD_CR RT_BIT_32(15)
+#define AHCI_REG_PORT_TFD 0x20
+#define AHCI_REG_PORT_SIG 0x24
+#define AHCI_REG_PORT_SSTS 0x28
+#define AHCI_REG_PORT_SCTL 0x2c
+#define AHCI_REG_PORT_SERR 0x30
+#define AHCI_REG_PORT_SACT 0x34
+#define AHCI_REG_PORT_CI 0x38
+
+/** Returns the absolute register offset from a given port and port register. */
+#define AHCI_PORT_REG(port, reg) (AHCI_HBA_SIZE + (port) * AHCI_PORT_SIZE + (reg))
+
+#define AHCI_REG_IDX 0
+#define AHCI_REG_DATA 4
+
+/** Writes the given value to a AHCI register. */
+#define AHCI_WRITE_REG(iobase, reg, val) \
+ outpd((iobase) + AHCI_REG_IDX, reg); \
+ outpd((iobase) + AHCI_REG_DATA, val)
+
+/** Reads from a AHCI register. */
+#define AHCI_READ_REG(iobase, reg, val) \
+ outpd((iobase) + AHCI_REG_IDX, reg); \
+ (val) = inpd((iobase) + AHCI_REG_DATA)
+
+/** Writes to the given port register. */
+#define VBOXAHCI_PORT_WRITE_REG(iobase, port, reg, val) \
+ AHCI_WRITE_REG((iobase), AHCI_PORT_REG((port), (reg)), val)
+
+/** Reads from the given port register. */
+#define VBOXAHCI_PORT_READ_REG(iobase, port, reg, val) \
+ AHCI_READ_REG((iobase), AHCI_PORT_REG((port), (reg)), val)
+
+#define ATA_CMD_IDENTIFY_DEVICE 0xEC
+#define ATA_CMD_IDENTIFY_PACKET 0xA1
+#define ATA_CMD_PACKET 0xA0
+#define AHCI_CMD_READ_DMA_EXT 0x25
+#define AHCI_CMD_WRITE_DMA_EXT 0x35
+
+
+/* Warning: Destroys high bits of EAX. */
+uint32_t inpd(uint16_t port);
+#pragma aux inpd = \
+ ".386" \
+ "in eax, dx" \
+ "mov dx, ax" \
+ "shr eax, 16" \
+ "xchg ax, dx" \
+ parm [dx] value [dx ax] modify nomemory;
+
+/* Warning: Destroys high bits of EAX. */
+void outpd(uint16_t port, uint32_t val);
+#pragma aux outpd = \
+ ".386" \
+ "xchg ax, cx" \
+ "shl eax, 16" \
+ "mov ax, cx" \
+ "out dx, eax" \
+ parm [dx] [cx ax] modify nomemory;
+
+
+/* Machinery to save/restore high bits of EAX. 32-bit port I/O needs to use
+ * EAX, but saving/restoring EAX around each port access would be inefficient.
+ * Instead, each externally callable routine must save the high bits before
+ * modifying them and restore the high bits before exiting.
+ */
+
+/* Note: Reading high EAX bits destroys them - *must* be restored later. */
+uint16_t eax_hi_rd(void);
+#pragma aux eax_hi_rd = \
+ ".386" \
+ "shr eax, 16" \
+ value [ax] modify nomemory;
+
+void eax_hi_wr(uint16_t);
+#pragma aux eax_hi_wr = \
+ ".386" \
+ "shl eax, 16" \
+ parm [ax] modify nomemory;
+
+void inline high_bits_save(ahci_t __far *ahci)
+{
+ ahci->saved_eax_hi = eax_hi_rd();
+}
+
+void inline high_bits_restore(ahci_t __far *ahci)
+{
+ eax_hi_wr(ahci->saved_eax_hi);
+}
+
+/**
+ * Sets a given set of bits in a register.
+ */
+static void inline ahci_ctrl_set_bits(uint16_t iobase, uint16_t reg, uint32_t mask)
+{
+ outpd(iobase + AHCI_REG_IDX, reg);
+ outpd(iobase + AHCI_REG_DATA, inpd(iobase + AHCI_REG_DATA) | mask);
+}
+
+/**
+ * Clears a given set of bits in a register.
+ */
+static void inline ahci_ctrl_clear_bits(uint16_t iobase, uint16_t reg, uint32_t mask)
+{
+ outpd(iobase + AHCI_REG_IDX, reg);
+ outpd(iobase + AHCI_REG_DATA, inpd(iobase + AHCI_REG_DATA) & ~mask);
+}
+
+/**
+ * Returns whether at least one of the bits in the given mask is set
+ * for a register.
+ */
+static uint8_t inline ahci_ctrl_is_bit_set(uint16_t iobase, uint16_t reg, uint32_t mask)
+{
+ outpd(iobase + AHCI_REG_IDX, reg);
+ return (inpd(iobase + AHCI_REG_DATA) & mask) != 0;
+}
+
+/**
+ * Extracts a range of bits from a register and shifts them
+ * to the right.
+ */
+static uint16_t ahci_ctrl_extract_bits(uint32_t val, uint32_t mask, uint8_t shift)
+{
+ return (val & mask) >> shift;
+}
+
+/**
+ * Converts a segment:offset pair into a 32bit physical address.
+ */
+static uint32_t ahci_addr_to_phys(void __far *ptr)
+{
+ return ((uint32_t)FP_SEG(ptr) << 4) + FP_OFF(ptr);
+}
+
+/**
+ * Issues a command to the SATA controller and waits for completion.
+ */
+static void ahci_port_cmd_sync(ahci_t __far *ahci, uint8_t val)
+{
+ uint16_t io_base;
+ uint8_t port;
+
+ port = ahci->cur_port;
+ io_base = ahci->iobase;
+
+ if (port != 0xff)
+ {
+ /* Prepare the command header. */
+ ahci->aCmdHdr[0] = ((uint32_t)ahci->cur_prd << 16) | RT_BIT_32(7) | val;
+ ahci->aCmdHdr[1] = 0;
+ ahci->aCmdHdr[2] = ahci_addr_to_phys(&ahci->abCmd[0]);
+
+ /* Enable Command and FIS receive engine. */
+ ahci_ctrl_set_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST);
+
+ /* Queue command. */
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_CI, 0x1);
+
+ /* Wait for a D2H FIS. */
+ DBG_AHCI("AHCI: Waiting for D2H FIS\n");
+ while (ahci_ctrl_is_bit_set(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_IS),
+ AHCI_REG_PORT_IS_DHRS | AHCI_REG_PORT_IS_TFES) == 0)
+ {
+ // This is where we'd need some kind of a yield functionality...
+ }
+
+ ahci_ctrl_set_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_IS),
+ AHCI_REG_PORT_IS_DHRS); /* Acknowledge received D2H FIS. */
+
+ /* Disable command engine. */
+ ahci_ctrl_clear_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_ST);
+ /* Caller must examine status. */
+ }
+ else
+ DBG_AHCI("AHCI: Invalid port given\n");
+}
+
+/**
+ * Issue command to device.
+ */
+static uint16_t ahci_cmd_data(bio_dsk_t __far *bios_dsk, uint8_t cmd)
+{
+ ahci_t __far *ahci = bios_dsk->ahci_seg :> 0;
+ uint16_t n_sect = bios_dsk->drqp.nsect;
+ uint16_t sectsz = bios_dsk->drqp.sect_sz;
+ fis_d2h __far *d2h;
+
+ _fmemset(&ahci->abCmd[0], 0, sizeof(ahci->abCmd));
+
+ /* Prepare the FIS. */
+ ahci->abCmd[0] = 0x27; /* FIS type H2D. */
+ ahci->abCmd[1] = 1 << 7; /* Command update. */
+ ahci->abCmd[2] = cmd;
+ ahci->abCmd[3] = 0;
+
+ ahci->abCmd[4] = bios_dsk->drqp.lba & 0xff;
+ ahci->abCmd[5] = (bios_dsk->drqp.lba >> 8) & 0xff;
+ ahci->abCmd[6] = (bios_dsk->drqp.lba >> 16) & 0xff;
+ ahci->abCmd[7] = RT_BIT_32(6); /* LBA access. */
+
+ ahci->abCmd[8] = (bios_dsk->drqp.lba >> 24) & 0xff;
+ ahci->abCmd[9] = (bios_dsk->drqp.lba >> 32) & 0xff;
+ ahci->abCmd[10] = (bios_dsk->drqp.lba >> 40) & 0xff;
+ ahci->abCmd[11] = 0;
+
+ ahci->abCmd[12] = (uint8_t)(n_sect & 0xff);
+ ahci->abCmd[13] = (uint8_t)((n_sect >> 8) & 0xff);
+
+ /* Lock memory needed for DMA. */
+ ahci->edds.num_avail = NUM_EDDS_SG;
+ DBG_AHCI("AHCI: S/G list for %lu bytes (skip %u)\n",
+ (uint32_t)n_sect * sectsz, bios_dsk->drqp.skip_a);
+ vds_build_sg_list(&ahci->edds, bios_dsk->drqp.buffer, (uint32_t)n_sect * sectsz);
+
+ /* Set up the PRDT. */
+ ahci->aPrdt[ahci->cur_prd].len = ahci->edds.u.sg[0].size - 1;
+ ahci->aPrdt[ahci->cur_prd].phys_addr = ahci->edds.u.sg[0].phys_addr;
+ ++ahci->cur_prd;
+
+ if (bios_dsk->drqp.skip_a) {
+ ahci->aPrdt[ahci->cur_prd].len = bios_dsk->drqp.skip_a - 1;
+ ahci->aPrdt[ahci->cur_prd].phys_addr = ahci->sink_buf_phys;
+ ++ahci->cur_prd;
+ }
+
+#if DEBUG_AHCI
+ {
+ uint16_t prdt_idx;
+
+ for (prdt_idx = 0; prdt_idx < ahci->cur_prd; ++prdt_idx) {
+ DBG_AHCI("S/G entry %u: %5lu bytes @ %08lX\n", prdt_idx,
+ ahci->aPrdt[prdt_idx].len + 1, ahci->aPrdt[prdt_idx].phys_addr);
+ }
+ }
+#endif
+
+ /* Build variable part of first command DWORD (reuses 'cmd'). */
+ if (cmd == AHCI_CMD_WRITE_DMA_EXT)
+ cmd = RT_BIT_32(6); /* Indicate a write to device. */
+ else if (cmd == ATA_CMD_PACKET) {
+ cmd |= RT_BIT_32(5); /* Indicate ATAPI command. */
+ ahci->abCmd[3] |= 1; /* DMA transfers. */
+ } else
+ cmd = 0;
+
+ cmd |= 5; /* Five DWORDs. */
+
+ ahci_port_cmd_sync(ahci, cmd);
+
+ /* Examine operation status. */
+ d2h = (void __far *)&ahci->abFisRecv[0x40];
+ DBG_AHCI("AHCI: ERR=%02x, STAT=%02x, SCNT=%02x\n", d2h->error, d2h->status, d2h->sec_cn);
+
+ /* Unlock the buffer again. */
+ vds_free_sg_list(&ahci->edds);
+ return d2h->error ? 4 : 0;
+}
+
+/**
+ * Deinits the curent active port.
+ */
+static void ahci_port_deinit_current(ahci_t __far *ahci)
+{
+ uint16_t io_base;
+ uint8_t port;
+
+ io_base = ahci->iobase;
+ port = ahci->cur_port;
+
+ if (port != 0xff)
+ {
+ /* Put the port into an idle state. */
+ ahci_ctrl_clear_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST);
+
+ while (ahci_ctrl_is_bit_set(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST | AHCI_REG_PORT_CMD_FR | AHCI_REG_PORT_CMD_CR) == 1)
+ {
+ DBG_AHCI("AHCI: Waiting for the port to idle\n");
+ }
+
+ /*
+ * Port idles, set up memory for commands and received FIS and program the
+ * address registers.
+ */
+ /// @todo merge memsets?
+ _fmemset(&ahci->aCmdHdr[0], 0, sizeof(ahci->aCmdHdr));
+ _fmemset(&ahci->abCmd[0], 0, sizeof(ahci->abCmd));
+ _fmemset(&ahci->abFisRecv[0], 0, sizeof(ahci->abFisRecv));
+
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_FB, 0);
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_FBU, 0);
+
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_CLB, 0);
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_CLBU, 0);
+
+ /* Disable all interrupts. */
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_IE, 0);
+
+ ahci->cur_port = 0xff;
+ }
+}
+
+/**
+ * Brings a port into a minimal state to make device detection possible
+ * or to queue requests.
+ */
+static void ahci_port_init(ahci_t __far *ahci, uint8_t u8Port)
+{
+ /* Deinit any other port first. */
+ ahci_port_deinit_current(ahci);
+
+ /* Put the port into an idle state. */
+ ahci_ctrl_clear_bits(ahci->iobase, AHCI_PORT_REG(u8Port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST);
+
+ while (ahci_ctrl_is_bit_set(ahci->iobase, AHCI_PORT_REG(u8Port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST | AHCI_REG_PORT_CMD_FR | AHCI_REG_PORT_CMD_CR) == 1)
+ {
+ DBG_AHCI("AHCI: Waiting for the port to idle\n");
+ }
+
+ /*
+ * Port idles, set up memory for commands and received FIS and program the
+ * address registers.
+ */
+ /// @todo just one memset?
+ _fmemset(&ahci->aCmdHdr[0], 0, sizeof(ahci->aCmdHdr));
+ _fmemset(&ahci->abCmd[0], 0, sizeof(ahci->abCmd));
+ _fmemset(&ahci->abFisRecv[0], 0, sizeof(ahci->abFisRecv));
+
+ DBG_AHCI("AHCI: FIS receive area %lx from %x:%x\n",
+ ahci_addr_to_phys(&ahci->abFisRecv), FP_SEG(ahci->abFisRecv), FP_OFF(ahci->abFisRecv));
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_FB, ahci_addr_to_phys(&ahci->abFisRecv));
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_FBU, 0);
+
+ DBG_AHCI("AHCI: CMD list area %lx\n", ahci_addr_to_phys(&ahci->aCmdHdr));
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_CLB, ahci_addr_to_phys(&ahci->aCmdHdr));
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_CLBU, 0);
+
+ /* Disable all interrupts. */
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_IE, 0);
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_IS, 0xffffffff);
+ /* Clear all errors. */
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SERR, 0xffffffff);
+
+ ahci->cur_port = u8Port;
+ ahci->cur_prd = 0;
+}
+
+/**
+ * Read sectors from an attached AHCI device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int ahci_read_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint16_t device_id;
+ uint16_t rc;
+
+ device_id = VBOX_GET_AHCI_DEVICE(bios_dsk->drqp.dev_id);
+ if (device_id > BX_MAX_AHCI_DEVICES)
+ BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
+
+ DBG_AHCI("%s: %u sectors @ LBA 0x%llx, device %d, port %d\n", __func__,
+ bios_dsk->drqp.nsect, bios_dsk->drqp.lba,
+ device_id, bios_dsk->ahcidev[device_id].port);
+
+ high_bits_save(bios_dsk->ahci_seg :> 0);
+ ahci_port_init(bios_dsk->ahci_seg :> 0, bios_dsk->ahcidev[device_id].port);
+ rc = ahci_cmd_data(bios_dsk, AHCI_CMD_READ_DMA_EXT);
+ DBG_AHCI("%s: transferred %lu bytes\n", __func__, ((ahci_t __far *)(bios_dsk->ahci_seg :> 0))->aCmdHdr[1]);
+ bios_dsk->drqp.trsfsectors = bios_dsk->drqp.nsect;
+#ifdef DMA_WORKAROUND
+ rep_movsw(bios_dsk->drqp.buffer, bios_dsk->drqp.buffer, bios_dsk->drqp.nsect * 512 / 2);
+#endif
+ high_bits_restore(bios_dsk->ahci_seg :> 0);
+ return rc;
+}
+
+/**
+ * Write sectors to an attached AHCI device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int ahci_write_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint16_t device_id;
+ uint16_t rc;
+
+ device_id = VBOX_GET_AHCI_DEVICE(bios_dsk->drqp.dev_id);
+ if (device_id > BX_MAX_AHCI_DEVICES)
+ BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
+
+ DBG_AHCI("%s: %u sectors @ LBA 0x%llx, device %d, port %d\n", __func__,
+ bios_dsk->drqp.nsect, bios_dsk->drqp.lba, device_id,
+ bios_dsk->ahcidev[device_id].port);
+
+ high_bits_save(bios_dsk->ahci_seg :> 0);
+ ahci_port_init(bios_dsk->ahci_seg :> 0, bios_dsk->ahcidev[device_id].port);
+ rc = ahci_cmd_data(bios_dsk, AHCI_CMD_WRITE_DMA_EXT);
+ DBG_AHCI("%s: transferred %lu bytes\n", __func__, ((ahci_t __far *)(bios_dsk->ahci_seg :> 0))->aCmdHdr[1]);
+ bios_dsk->drqp.trsfsectors = bios_dsk->drqp.nsect;
+ high_bits_restore(bios_dsk->ahci_seg :> 0);
+ return rc;
+}
+
+/// @todo move
+#define ATA_DATA_NO 0x00
+#define ATA_DATA_IN 0x01
+#define ATA_DATA_OUT 0x02
+
+uint16_t ahci_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t skip_b, uint32_t length, uint8_t inout, char __far *buffer)
+{
+ bio_dsk_t __far *bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+ ahci_t __far *ahci;
+
+ /* Data out is currently not supported. */
+ if (inout == ATA_DATA_OUT) {
+ BX_INFO("%s: DATA_OUT not supported yet\n", __func__);
+ return 1;
+ }
+
+ /* The skip length must be even. */
+ if (skip_b & 1) {
+ DBG_AHCI("%s: skip must be even (%04x)\n", __func__, skip_b);
+ return 1;
+ }
+
+ /* Convert to AHCI specific device number. */
+ device_id = VBOX_GET_AHCI_DEVICE(device_id);
+
+ DBG_AHCI("%s: reading %lu bytes, skip %u/%u, device %d, port %d\n", __func__,
+ length, bios_dsk->drqp.skip_b, bios_dsk->drqp.skip_a,
+ device_id, bios_dsk->ahcidev[device_id].port);
+ DBG_AHCI("%s: reading %u %u-byte sectors\n", __func__,
+ bios_dsk->drqp.nsect, bios_dsk->drqp.sect_sz);
+
+ bios_dsk->drqp.lba = length << 8; /// @todo xfer length limit
+ bios_dsk->drqp.buffer = buffer;
+ bios_dsk->drqp.nsect = length / bios_dsk->drqp.sect_sz;
+// bios_dsk->drqp.sect_sz = 2048;
+
+ ahci = bios_dsk->ahci_seg :> 0;
+ high_bits_save(ahci);
+
+ ahci_port_init(bios_dsk->ahci_seg :> 0, bios_dsk->ahcidev[device_id].port);
+
+ /* Copy the ATAPI command where the HBA can fetch it. */
+ _fmemcpy(ahci->abAcmd, cmdbuf, cmdlen);
+
+ /* Reset transferred counts. */
+ /// @todo clear in calling code?
+ bios_dsk->drqp.trsfsectors = 0;
+ bios_dsk->drqp.trsfbytes = 0;
+
+ /* Set up a PRD entry to throw away the beginning of the transfer. */
+ if (bios_dsk->drqp.skip_b) {
+ ahci->aPrdt[0].len = bios_dsk->drqp.skip_b - 1;
+ ahci->aPrdt[0].phys_addr = ahci->sink_buf_phys;
+ ahci->cur_prd++;
+ }
+
+ ahci_cmd_data(bios_dsk, ATA_CMD_PACKET);
+ DBG_AHCI("%s: transferred %lu bytes\n", __func__, ahci->aCmdHdr[1]);
+ bios_dsk->drqp.trsfbytes = ahci->aCmdHdr[1];
+#ifdef DMA_WORKAROUND
+ rep_movsw(bios_dsk->drqp.buffer, bios_dsk->drqp.buffer, bios_dsk->drqp.trsfbytes / 2);
+#endif
+ high_bits_restore(ahci);
+
+ return ahci->aCmdHdr[1] == 0 ? 4 : 0;
+}
+
+/* Wait for the specified number of BIOS timer ticks or data bytes. */
+void wait_ticks_device_init( unsigned wait_ticks, unsigned wait_bytes )
+{
+}
+
+void ahci_port_detect_device(ahci_t __far *ahci, uint8_t u8Port)
+{
+ uint32_t val;
+ bio_dsk_t __far *bios_dsk;
+ volatile uint32_t __far *ticks;
+ uint32_t end_tick;
+ int device_found = 0;
+
+ ahci_port_init(ahci, u8Port);
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ /* Reset connection. */
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SCTL, 0x01);
+ /*
+ * According to the spec we should wait at least 1msec until the reset
+ * is cleared but this is a virtual controller so we don't have to.
+ */
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SCTL, 0);
+
+ /*
+ * We do however have to wait for the device to initialize (the port reset
+ * to complete). That can take up to 10ms according to the SATA spec (device
+ * must send COMINIT within 10ms of COMRESET). We should be generous with
+ * the wait because in the typical case there are no ports without a device
+ * attached.
+ */
+ ticks = MK_FP( 0x40, 0x6C );
+ end_tick = *ticks + 3; /* Wait up to five BIOS ticks, something in 150ms range. */
+
+ while( *ticks < end_tick )
+ {
+ /* If PxSSTS.DET is 3, everything went fine. */
+ VBOXAHCI_PORT_READ_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SSTS, val);
+ if (ahci_ctrl_extract_bits(val, 0xfL, 0) == 3) {
+ device_found = 1;
+ break;
+ }
+ }
+
+ /* Timed out, no device detected. */
+ if (!device_found) {
+ DBG_AHCI("AHCI: Timed out, no device detected on port %d\n", u8Port);
+ return;
+ }
+
+ if (ahci_ctrl_extract_bits(val, 0xfL, 0) == 0x3)
+ {
+ uint8_t abBuffer[0x0200];
+ uint8_t hdcount, devcount_ahci, hd_index;
+ uint8_t cdcount;
+ uint8_t removable;
+
+ /* Clear all errors after the reset. */
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SERR, 0xffffffff);
+
+ devcount_ahci = bios_dsk->ahci_devcnt;
+
+ DBG_AHCI("AHCI: Device detected on port %d\n", u8Port);
+
+ /// @todo Merge common HD/CDROM detection code
+ if (devcount_ahci < BX_MAX_AHCI_DEVICES)
+ {
+ /* Device detected, enable FIS receive. */
+ ahci_ctrl_set_bits(ahci->iobase, AHCI_PORT_REG(u8Port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE);
+
+ /* Check signature to determine device type. */
+ VBOXAHCI_PORT_READ_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SIG, val);
+ if (val == 0x101)
+ {
+ uint64_t sectors;
+ uint16_t cylinders, heads, spt;
+ chs_t lgeo;
+ uint8_t idxCmosChsBase;
+
+ DBG_AHCI("AHCI: Detected hard disk\n");
+
+ /* Identify device. */
+ bios_dsk->drqp.lba = 0;
+ bios_dsk->drqp.buffer = &abBuffer;
+ bios_dsk->drqp.nsect = 1;
+ bios_dsk->drqp.sect_sz = 512;
+ ahci_cmd_data(bios_dsk, ATA_CMD_IDENTIFY_DEVICE);
+
+ /* Calculate index into the generic device table. */
+ hd_index = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES;
+
+ removable = *(abBuffer+0) & 0x80 ? 1 : 0;
+ cylinders = *(uint16_t *)(abBuffer+(1*2)); // word 1
+ heads = *(uint16_t *)(abBuffer+(3*2)); // word 3
+ spt = *(uint16_t *)(abBuffer+(6*2)); // word 6
+ sectors = *(uint32_t *)(abBuffer+(60*2)); // word 60 and word 61
+
+ if (sectors == 0x0FFFFFFF) /* For disks bigger than ~128GB */
+ sectors = *(uint64_t *)(abBuffer+(100*2)); // words 100 to 103
+
+ DBG_AHCI("AHCI: 0x%llx sectors\n", sectors);
+
+ bios_dsk->ahcidev[devcount_ahci].port = u8Port;
+ bios_dsk->devices[hd_index].type = DSK_TYPE_AHCI;
+ bios_dsk->devices[hd_index].device = DSK_DEVICE_HD;
+ bios_dsk->devices[hd_index].removable = removable;
+ bios_dsk->devices[hd_index].lock = 0;
+ bios_dsk->devices[hd_index].blksize = 512;
+ bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_LBA;
+ bios_dsk->devices[hd_index].sectors = sectors;
+
+ bios_dsk->devices[hd_index].pchs.heads = heads;
+ bios_dsk->devices[hd_index].pchs.cylinders = cylinders;
+ bios_dsk->devices[hd_index].pchs.spt = spt;
+
+ /* Get logical CHS geometry. */
+ switch (devcount_ahci)
+ {
+ case 0:
+ idxCmosChsBase = 0x40;
+ break;
+ case 1:
+ idxCmosChsBase = 0x48;
+ break;
+ case 2:
+ idxCmosChsBase = 0x50;
+ break;
+ case 3:
+ idxCmosChsBase = 0x58;
+ break;
+ default:
+ idxCmosChsBase = 0;
+ }
+ if (idxCmosChsBase && inb_cmos(idxCmosChsBase+7))
+ {
+ lgeo.cylinders = inb_cmos(idxCmosChsBase + 0) + (inb_cmos(idxCmosChsBase + 1) << 8);
+ lgeo.heads = inb_cmos(idxCmosChsBase + 2);
+ lgeo.spt = inb_cmos(idxCmosChsBase + 7);
+ }
+ else
+ set_geom_lba(&lgeo, sectors); /* Default EDD-style translated LBA geometry. */
+
+ BX_INFO("AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors\n", devcount_ahci,
+ u8Port, cylinders, heads, spt, lgeo.cylinders, lgeo.heads, lgeo.spt,
+ sectors);
+
+ bios_dsk->devices[hd_index].lchs = lgeo;
+
+ /* Store the ID of the disk in the BIOS hdidmap. */
+ hdcount = bios_dsk->hdcount;
+ bios_dsk->hdidmap[hdcount] = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES;
+ hdcount++;
+ bios_dsk->hdcount = hdcount;
+
+ /* Update hdcount in the BDA. */
+ hdcount = read_byte(0x40, 0x75);
+ hdcount++;
+ write_byte(0x40, 0x75, hdcount);
+ }
+ else if (val == 0xeb140101)
+ {
+ DBG_AHCI("AHCI: Detected ATAPI device\n");
+
+ /* Identify packet device. */
+ bios_dsk->drqp.lba = 0;
+ bios_dsk->drqp.buffer = &abBuffer;
+ bios_dsk->drqp.nsect = 1;
+ bios_dsk->drqp.sect_sz = 512;
+ ahci_cmd_data(bios_dsk, ATA_CMD_IDENTIFY_PACKET);
+
+ /* Calculate index into the generic device table. */
+ hd_index = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES;
+
+ removable = *(abBuffer+0) & 0x80 ? 1 : 0;
+
+ bios_dsk->ahcidev[devcount_ahci].port = u8Port;
+ bios_dsk->devices[hd_index].type = DSK_TYPE_AHCI;
+ bios_dsk->devices[hd_index].device = DSK_DEVICE_CDROM;
+ bios_dsk->devices[hd_index].removable = removable;
+ bios_dsk->devices[hd_index].blksize = 2048;
+ bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_NONE;
+
+ /* Store the ID of the device in the BIOS cdidmap. */
+ cdcount = bios_dsk->cdcount;
+ bios_dsk->cdidmap[cdcount] = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES;
+ cdcount++;
+ bios_dsk->cdcount = cdcount;
+ }
+ else
+ DBG_AHCI("AHCI: Ignoring unknown device\n");
+
+ devcount_ahci++;
+ bios_dsk->ahci_devcnt = devcount_ahci;
+ }
+ else
+ DBG_AHCI("AHCI: Reached maximum device count, skipping\n");
+ }
+}
+
+/**
+ * Allocates 1K of conventional memory.
+ */
+static uint16_t ahci_mem_alloc(void)
+{
+ uint16_t base_mem_kb;
+ uint16_t ahci_seg;
+
+ base_mem_kb = read_word(0x00, 0x0413);
+
+ DBG_AHCI("AHCI: %dK of base mem\n", base_mem_kb);
+
+ if (base_mem_kb == 0)
+ return 0;
+
+ base_mem_kb--; /* Allocate one block. */
+ ahci_seg = (((uint32_t)base_mem_kb * 1024) >> 4); /* Calculate start segment. */
+
+ write_word(0x00, 0x0413, base_mem_kb);
+
+ return ahci_seg;
+}
+
+/**
+ * Initializes the AHCI HBA and detects attached devices.
+ */
+static int ahci_hba_init(uint16_t io_base)
+{
+ uint8_t i, cPorts;
+ uint32_t val;
+ uint16_t ebda_seg;
+ uint16_t ahci_seg;
+ bio_dsk_t __far *bios_dsk;
+ ahci_t __far *ahci;
+
+
+ ebda_seg = read_word(0x0040, 0x000E);
+ bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+ AHCI_READ_REG(io_base, AHCI_REG_VS, val);
+ DBG_AHCI("AHCI: Controller version: 0x%x (major) 0x%x (minor)\n",
+ ahci_ctrl_extract_bits(val, 0xffff0000, 16),
+ ahci_ctrl_extract_bits(val, 0x0000ffff, 0));
+
+ /* Allocate 1K of base memory. */
+ ahci_seg = ahci_mem_alloc();
+ if (ahci_seg == 0)
+ {
+ DBG_AHCI("AHCI: Could not allocate 1K of memory, can't boot from controller\n");
+ return 0;
+ }
+ DBG_AHCI("AHCI: ahci_seg=%04x, size=%04x, pointer at EBDA:%04x (EBDA size=%04x)\n",
+ ahci_seg, sizeof(ahci_t), (uint16_t)&EbdaData->bdisk.ahci_seg, sizeof(ebda_data_t));
+
+ bios_dsk->ahci_seg = ahci_seg;
+ bios_dsk->ahci_devcnt = 0;
+
+ ahci = ahci_seg :> 0;
+ ahci->cur_port = 0xff;
+ ahci->iobase = io_base;
+
+ /* Physical address of memory used for throwing away ATAPI data when reading 512-byte
+ * blocks from 2048-byte CD sectors.
+ */
+ ahci->sink_buf_phys = 0xCC000; /// @todo find some better place!
+
+ /* Reset the controller. */
+ ahci_ctrl_set_bits(io_base, AHCI_REG_GHC, AHCI_GHC_HR);
+ do
+ {
+ AHCI_READ_REG(io_base, AHCI_REG_GHC, val);
+ } while ((val & AHCI_GHC_HR) != 0);
+
+ AHCI_READ_REG(io_base, AHCI_REG_CAP, val);
+ cPorts = ahci_ctrl_extract_bits(val, 0x1f, 0) + 1; /* Extract number of ports.*/
+
+ DBG_AHCI("AHCI: HBA has %u ports\n", cPorts);
+
+ /* Go through the ports. */
+ i = 0;
+ while (i < 32)
+ {
+ if (ahci_ctrl_is_bit_set(io_base, AHCI_REG_PI, RT_BIT_32(i)) != 0)
+ {
+ DBG_AHCI("AHCI: Port %u is present\n", i);
+ ahci_port_detect_device(ahci_seg :> 0, i);
+ cPorts--;
+ if (cPorts == 0)
+ break;
+ }
+ i++;
+ }
+
+ return 0;
+}
+
+/**
+ * Init the AHCI driver and detect attached disks.
+ */
+void BIOSCALL ahci_init(void)
+{
+ uint16_t busdevfn;
+
+ busdevfn = pci_find_classcode(0x00010601);
+ if (busdevfn != VBOX_AHCI_NO_DEVICE)
+ {
+ uint8_t u8Bus, u8DevFn;
+ uint8_t u8PciCapOff;
+
+ u8Bus = (busdevfn & 0xff00) >> 8;
+ u8DevFn = busdevfn & 0x00ff;
+
+ DBG_AHCI("AHCI HBA at Bus %u DevFn 0x%x (raw 0x%x)\n", u8Bus, u8DevFn, busdevfn);
+
+ /* Examine the capability list and search for the Serial ATA Capability Register. */
+ u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, PCI_CONFIG_CAP);
+
+ while (u8PciCapOff != 0)
+ {
+ uint8_t u8PciCapId = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff);
+
+ DBG_AHCI("Capability ID 0x%x at 0x%x\n", u8PciCapId, u8PciCapOff);
+
+ if (u8PciCapId == PCI_CAP_ID_SATACR)
+ break;
+
+ /* Go on to the next capability. */
+ u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 1);
+ }
+
+ if (u8PciCapOff != 0)
+ {
+ uint8_t u8Rev;
+
+ DBG_AHCI("AHCI HBA with SATA Capability register at 0x%x\n", u8PciCapOff);
+
+ /* Advance to the stuff behind the id and next capability pointer. */
+ u8PciCapOff += 2;
+
+ u8Rev = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff);
+ if (u8Rev == 0x10)
+ {
+ /* Read the SATACR1 register and get the bar and offset of the index/data pair register. */
+ uint8_t u8Bar = 0x00;
+ uint16_t u16Off = 0x00;
+ uint16_t u16BarOff = pci_read_config_word(u8Bus, u8DevFn, u8PciCapOff + 2);
+
+ DBG_AHCI("SATACR1: 0x%x\n", u16BarOff);
+
+ switch (u16BarOff & 0xf)
+ {
+ case 0x04:
+ u8Bar = 0x10;
+ break;
+ case 0x05:
+ u8Bar = 0x14;
+ break;
+ case 0x06:
+ u8Bar = 0x18;
+ break;
+ case 0x07:
+ u8Bar = 0x1c;
+ break;
+ case 0x08:
+ u8Bar = 0x20;
+ break;
+ case 0x09:
+ u8Bar = 0x24;
+ break;
+ case 0x0f:
+ default:
+ /* Reserved or unsupported. */
+ DBG_AHCI("BAR 0x%x unsupported\n", u16BarOff & 0xf);
+ }
+
+ /* Get the offset inside the BAR from bits 4:15. */
+ u16Off = (u16BarOff >> 4) * 4;
+
+ if (u8Bar != 0x00)
+ {
+ uint32_t u32Bar = pci_read_config_dword(u8Bus, u8DevFn, u8Bar);
+
+ DBG_AHCI("BAR at 0x%x : 0x%x\n", u8Bar, u32Bar);
+
+ if ((u32Bar & 0x01) != 0)
+ {
+ int rc;
+ uint16_t u16AhciIoBase = (u32Bar & 0xfff0) + u16Off;
+
+ /* Enable PCI memory, I/O, bus mastering access in command register. */
+ pci_write_config_word(u8Bus, u8DevFn, 4, 0x7);
+
+ DBG_AHCI("I/O base: 0x%x\n", u16AhciIoBase);
+ rc = ahci_hba_init(u16AhciIoBase);
+ }
+ else
+ DBG_AHCI("BAR is MMIO\n");
+ }
+ }
+ else
+ DBG_AHCI("Invalid revision 0x%x\n", u8Rev);
+ }
+ else
+ DBG_AHCI("AHCI HBA with no usable Index/Data register pair!\n");
+ }
+ else
+ DBG_AHCI("No AHCI HBA!\n");
+}
diff --git a/src/VBox/Devices/PC/BIOS/apm.c b/src/VBox/Devices/PC/BIOS/apm.c
new file mode 100644
index 00000000..95bdd36f
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/apm.c
@@ -0,0 +1,232 @@
+/* $Id: apm.c $ */
+/** @file
+ * APM BIOS support. Implements APM version 1.2.
+ */
+
+/*
+ * Copyright (C) 2004-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+#include "VBox/bios.h"
+
+#if DEBUG_APM
+# define BX_DEBUG_APM(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_APM(...)
+#endif
+
+/* Implemented in assembly. */
+extern void apm_pm16_entry(void);
+#pragma aux apm_pm16_entry "*"
+
+#if VBOX_BIOS_CPU >= 80386
+extern void apm_pm32_entry(void);
+#pragma aux apm_pm32_entry "*"
+#endif
+
+/* APM function codes. */
+enum apm_func {
+ APM_CHECK = 0x00, /* APM Installation Check */
+ APM_RM_CONN = 0x01, /* APM Real Mode Interface Connect */
+ APM_PM_CONN = 0x02, /* APM Protected Mode 16-bit Interface Connect */
+ APM_32_CONN = 0x03, /* APM Protected Mode 32-bit Interface Connect */
+ APM_DISCONN = 0x04, /* APM Interface Disconnect */
+ APM_IDLE = 0x05, /* CPU Idle */
+ APM_BUSY = 0x06, /* CPU Busy */
+ APM_SET_PWR = 0x07, /* Set Power State */
+ APM_ENBL_PM = 0x08, /* Enable/Disable Power Management */
+ APM_SET_DFL = 0x09, /* Restore APM BIOS Power-On Defaults */
+ APM_STATUS = 0x0A, /* Get Power Status */
+ APM_GET_EVT = 0x0B, /* Get PM Event */
+ APM_GET_PWR = 0x0C, /* Get Power State */
+ APM_DEVPM = 0x0D, /* Enable/Disable Device Power Management */
+ APM_DRV_VER = 0x0E, /* APM Driver Version */
+ APM_ENGAGE = 0x0F, /* Engage/Disengage Power Management */
+ APM_GET_CAP = 0x10 /* Get Capabilities */
+};
+
+enum apm_error {
+ APM_ERR_PM_DISABLED = 0x01, /* Power Management functionality disabled */
+ APM_ERR_RM_INUSE = 0x02, /* Real mode interface connection already established */
+ APM_ERR_NOT_CONN = 0x03, /* Interface not connected */
+ APM_ERR_PM_16_INUSE = 0x05, /* 16-bit protected mode interface connection already established */
+ APM_ERR_NO_PM_16 = 0x06, /* 16-bit protected mode interface not supported */
+ APM_ERR_PM_32_INUSE = 0x07, /* 32-bit protected mode interface connection already established */
+ APM_ERR_NO_PM_32 = 0x08, /* 32-bit protected mode interface not supported */
+ APM_ERR_BAD_DEV_ID = 0x09, /* Unrecognized device ID */
+ APM_ERR_INVAL_PARAM = 0x0A, /* Parameter out of range */
+ APM_ERR_NOT_ENGAGED = 0x0B, /* Interface not engaged */
+ APM_ERR_UNSUPPORTED = 0x0C, /* Function not supported */
+ APM_ERR_NO_RSM_TMR = 0x0D, /* Resume timer disabled */
+ APM_ERR_NO_EVENTS = 0x80 /* No power management events pending */
+};
+
+enum apm_power_state {
+ APM_PS_ENABLED = 0x00, /* APM enabled */
+ APM_PS_STANDBY = 0x01, /* Standby */
+ APM_PS_SUSPEND = 0x02, /* Suspend */
+ APM_PS_OFF = 0x03, /* Suspend */
+};
+
+/// @todo merge with system.c
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define SP r.gr.u.r16.sp
+#define FLAGS r.fl.u.r16.flags
+#define EAX r.gr.u.r32.eax
+#define EBX r.gr.u.r32.ebx
+#define ECX r.gr.u.r32.ecx
+#define EDX r.gr.u.r32.edx
+#define ES r.es
+
+#define APM_BIOS_SEG 0xF000 /* Real-mode APM segment. */
+#define APM_BIOS_SEG_LEN 0xFFF0 /* Length of APM segment. */
+
+/* The APM BIOS interface uses 32-bit registers *only* in the 32-bit
+ * protected mode connect call. Rather than saving/restoring 32-bit
+ * registers all the time, simply set the high words of those registers
+ * when necessary.
+ */
+void set_ebx_hi(uint16_t val);
+#pragma aux set_ebx_hi = \
+ ".386" \
+ "shl ebx, 16" \
+ parm [bx] modify exact [bx] nomemory;
+
+void set_esi_hi(uint16_t val);
+#pragma aux set_esi_hi = \
+ ".386" \
+ "shl esi, 16" \
+ parm [si] modify exact [si] nomemory;
+
+
+/* The APM handler has unique requirements. It must be callable from real and
+ * protected mode, both 16-bit and 32-bit. In protected mode, the caller must
+ * 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.
+ */
+
+/* Output a null-terminated string to a specified port, without the
+ * terminating null character.
+ */
+static void apm_out_str_asm(uint16_t port, const char *s);
+#pragma aux apm_out_str_asm = \
+ "mov al, [bx]" \
+ "next:" \
+ "out dx, al" \
+ "inc bx" \
+ "mov al, [bx]" \
+ "or al, al" \
+ "jnz next" \
+ parm [dx] [bx] modify exact [ax bx] nomemory;
+
+/* Wrapper to avoid unnecessary inlining. */
+void apm_out_str(const char *s, uint16_t port)
+{
+ if (*s)
+ apm_out_str_asm(port, s);
+}
+
+void BIOSCALL apm_function(sys_regs_t r)
+{
+ BX_DEBUG_APM("APM: AX=%04X BX=%04X CX=%04X\n", AX, BX, CX);
+
+ CLEAR_CF(); /* Boldly expect success. */
+ switch (GET_AL()) {
+ case APM_CHECK:
+ AX = 0x0102; /* Version 1.2 */
+ BX = 0x504D; /* 'PM' */
+ CX = 3; /* Bits 0/1: 16-bit/32-bit PM interface */
+ break;
+ case APM_RM_CONN:
+ /// @todo validate device ID
+ /// @todo validate current connection state
+ /// @todo change connection state
+ break;
+ case APM_PM_CONN:
+ /// @todo validate device ID
+ /// @todo validate current connection state
+ /// @todo change connection state
+ AX = APM_BIOS_SEG; /* 16-bit PM code segment (RM segment base). */
+ BX = (uint16_t)apm_pm16_entry; /* 16-bit PM entry point offset. */
+ CX = APM_BIOS_SEG; /* 16-bit data segment. */
+ SI = APM_BIOS_SEG_LEN; /* 16-bit PM code segment length. */
+ DI = APM_BIOS_SEG_LEN; /* Data segment length. */
+ break;
+#if VBOX_BIOS_CPU >= 80386
+ case APM_32_CONN:
+ /// @todo validate device ID
+ /// @todo validate current connection state
+ /// @todo change connection state
+ AX = APM_BIOS_SEG; /* 32-bit PM code segment (RM segment base). */
+ BX = (uint16_t)apm_pm32_entry; /* 32-bit entry point offset. */
+ CX = APM_BIOS_SEG; /* 16-bit code segment. */
+ DX = APM_BIOS_SEG; /* 16-bit data segment. */
+ SI = APM_BIOS_SEG_LEN; /* 32-bit code segment length. */
+ DI = APM_BIOS_SEG_LEN; /* Data segment length. */
+ set_ebx_hi(0);
+ set_esi_hi(APM_BIOS_SEG_LEN); /* 16-bit code segment length. */
+ break;
+#endif
+ case APM_IDLE:
+ int_enable(); /* Simply halt the CPU with interrupts enabled. */
+ halt();
+ break;
+ case APM_SET_PWR:
+ /// @todo validate device ID
+ /// @todo validate current connection state
+ switch (CX) {
+ case APM_PS_STANDBY:
+ apm_out_str("Standby", VBOX_BIOS_SHUTDOWN_PORT);
+ break;
+ case APM_PS_SUSPEND:
+ apm_out_str("Suspend", VBOX_BIOS_SHUTDOWN_PORT);
+ break;
+ case APM_PS_OFF:
+ apm_out_str("Shutdown", VBOX_BIOS_SHUTDOWN_PORT); /* Should not return. */
+ break;
+ default:
+ SET_AH(APM_ERR_INVAL_PARAM);
+ SET_CF();
+ }
+ break;
+ case APM_DRV_VER:
+ AX = 0x0102; /// @todo Not right - must take driver version into account!
+ break;
+ case APM_DISCONN:
+ /// @todo actually perform a disconnect...
+ case APM_BUSY: /* Nothing to do as APM Idle doesn't slow CPU clock. */
+ break;
+ case APM_GET_EVT:
+ /// @todo error should be different if interface not connected + engaged
+ SET_AH(APM_ERR_NO_EVENTS); /* PM events don't happen. */
+ SET_CF();
+ break;
+ default:
+ BX_INFO("APM: Unsupported function AX=%04X BX=%04X called\n", AX, BX);
+ SET_AH(APM_ERR_UNSUPPORTED);
+ SET_CF();
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/apm_pm.asm b/src/VBox/Devices/PC/BIOS/apm_pm.asm
new file mode 100644
index 00000000..ae64ef55
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/apm_pm.asm
@@ -0,0 +1,219 @@
+; $Id:
+;; @file
+; Protected-mode APM implementation.
+;
+
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+
+include commondefs.inc
+
+;; 16-bit protected mode APM entry point
+
+_TEXT segment public 'CODE'
+
+extern _apm_function:near ; implemented in C code
+
+
+public apm_pm16_entry
+
+SET_DEFAULT_CPU_286
+
+
+; APM function dispatch table
+apm_disp:
+ dw offset apmf_disconnect ; 04h
+ dw offset apmf_idle ; 05h
+ dw offset apmf_busy ; 06h
+ dw offset apmf_set_state ; 07h
+ dw offset apmf_enable ; 08h
+ dw offset apmf_restore ; 09h
+ dw offset apmf_get_status ; 0Ah
+ dw offset apmf_get_event ; 0Bh
+ dw offset apmf_pwr_state ; 0Ch
+ dw offset apmf_dev_pm ; 0Dh
+ dw offset apmf_version ; 0Eh
+ dw offset apmf_engage ; 0Fh
+ dw offset apmf_get_caps ; 10h
+apm_disp_end:
+
+;
+; APM worker routine. Function code in AL; it is assumed that AL >= 4.
+; Caller must preserve BP.
+;
+apm_worker proc near
+
+ sti ; TODO ?? necessary ??
+
+ push ax ; check if function is supported...
+ xor ah, ah
+ sub al, 4
+ mov bp, ax
+ shl bp, 1
+ cmp al, (apm_disp_end - apm_disp) / 2
+ pop ax
+ mov ah, 53h ; put back APM function
+ jae apmw_bad_func ; validate function range
+
+ jmp apm_disp[bp] ; and dispatch
+
+apmf_disconnect: ; function 04h
+ jmp apmw_success
+
+apmf_idle: ; function 05h
+ ;
+ ; 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..08378af5
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ata.c
@@ -0,0 +1,1290 @@
+/* $Id: ata.c $ */
+/** @file
+ * PC BIOS - ATA disk support.
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include <stdarg.h>
+#include "inlines.h"
+#include "biosint.h"
+#include "ebda.h"
+#include "ata.h"
+#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
+// ---------------------------------------------------------------------------
+
+void insw_discard(unsigned nwords, unsigned port);
+#pragma aux insw_discard = \
+ ".286" \
+ "again:" \
+ "in ax,dx" \
+ "loop again" \
+ parm [cx] [dx] modify exact [cx ax] nomemory;
+
+void insd_discard(unsigned ndwords, unsigned port);
+#if VBOX_BIOS_CPU >= 80386
+# pragma aux insd_discard = \
+ ".386" \
+ "push eax" \
+ "again:" \
+ "in eax,dx" \
+ "loop again" \
+ "pop eax" \
+ parm [cx] [dx] modify exact [cx] nomemory;
+#endif
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : initialization
+// ---------------------------------------------------------------------------
+void BIOSCALL ata_init(void)
+{
+ uint8_t channel, device;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ // Channels info init.
+ for (channel=0; channel<BX_MAX_ATA_INTERFACES; channel++) {
+ bios_dsk->channels[channel].iface = ATA_IFACE_NONE;
+ bios_dsk->channels[channel].iobase1 = 0x0;
+ bios_dsk->channels[channel].iobase2 = 0x0;
+ bios_dsk->channels[channel].irq = 0;
+ }
+
+ // Devices info init.
+ for (device=0; device<BX_MAX_ATA_DEVICES; device++) {
+ bios_dsk->devices[device].type = DSK_TYPE_NONE;
+ bios_dsk->devices[device].device = DSK_DEVICE_NONE;
+ bios_dsk->devices[device].removable = 0;
+ bios_dsk->devices[device].lock = 0;
+ bios_dsk->devices[device].mode = ATA_MODE_NONE;
+ bios_dsk->devices[device].blksize = 0x200;
+ bios_dsk->devices[device].translation = GEO_TRANSLATION_NONE;
+ bios_dsk->devices[device].lchs.heads = 0;
+ bios_dsk->devices[device].lchs.cylinders = 0;
+ bios_dsk->devices[device].lchs.spt = 0;
+ bios_dsk->devices[device].pchs.heads = 0;
+ bios_dsk->devices[device].pchs.cylinders = 0;
+ bios_dsk->devices[device].pchs.spt = 0;
+ bios_dsk->devices[device].sectors = 0;
+ }
+
+ // hdidmap and cdidmap init.
+ for (device=0; device<BX_MAX_STORAGE_DEVICES; device++) {
+ bios_dsk->hdidmap[device] = BX_MAX_STORAGE_DEVICES;
+ bios_dsk->cdidmap[device] = BX_MAX_STORAGE_DEVICES;
+ }
+
+ bios_dsk->hdcount = 0;
+ bios_dsk->cdcount = 0;
+}
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : software reset
+// ---------------------------------------------------------------------------
+// ATA-3
+// 8.2.1 Software reset - Device 0
+
+void ata_reset(uint16_t device)
+{
+ uint16_t iobase1, iobase2;
+ uint8_t channel, slave, sn, sc;
+ uint16_t max;
+ uint16_t pdelay;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+ channel = device / 2;
+ slave = device % 2;
+
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+
+ // Reset
+
+ // 8.2.1 (a) -- set SRST in DC
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN | ATA_CB_DC_SRST);
+
+ // 8.2.1 (b) -- wait for BSY
+ max=0xff;
+ while(--max>0) {
+ uint8_t status = inb(iobase1+ATA_CB_STAT);
+ if ((status & ATA_CB_STAT_BSY) != 0)
+ break;
+ }
+
+ // 8.2.1 (f) -- clear SRST
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+
+ // 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 = inb_cmos(chsgeo_base) + (inb_cmos(chsgeo_base + 1) << 8);
+ lgeo.heads = inb_cmos(chsgeo_base + 2);
+ lgeo.spt = inb_cmos(chsgeo_base + 7);
+ }
+ else
+ set_geom_lba(&lgeo, sectors); /* Default EDD-style translated LBA geometry. */
+
+ BX_INFO("ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u\n", channel, slave,
+ cylinders, heads, spt, lgeo.cylinders, lgeo.heads, lgeo.spt);
+
+ bios_dsk->devices[device].device = DSK_DEVICE_HD;
+ bios_dsk->devices[device].removable = removable;
+ bios_dsk->devices[device].mode = mode;
+ bios_dsk->devices[device].blksize = blksize;
+ bios_dsk->devices[device].pchs.heads = heads;
+ bios_dsk->devices[device].pchs.cylinders = cylinders;
+ bios_dsk->devices[device].pchs.spt = spt;
+ bios_dsk->devices[device].sectors = sectors;
+ bios_dsk->devices[device].lchs = lgeo;
+ if (device < 2)
+ {
+ uint8_t sum, i;
+ fdpt_t __far *fdpt;
+ void __far * __far *int_vec;
+
+ if (device == 0)
+ fdpt = ebda_seg :> &EbdaData->fdpt0;
+ else
+ fdpt = ebda_seg :> &EbdaData->fdpt1;
+
+#if 0
+ /* Place the FDPT outside of conventional memory. Needed for
+ * 286 XENIX 2.1.3/2.2.1 because it completely wipes out
+ * the EBDA and low memory. Hack!
+ */
+ fdpt = MK_FP(0xE200, 0xf00);
+ fdpt += device;
+#endif
+
+ /* Set the INT 41h or 46h pointer. */
+ int_vec = MK_FP(0, (0x41 + device * 5) * sizeof(void __far *));
+ *int_vec = fdpt;
+
+ /* Update the DPT for drive 0/1 pointed to by Int41/46. This used
+ * to be done at POST time with lots of ugly assembler code, which
+ * isn't worth the effort of converting from AMI to Award CMOS
+ * format. Just do it here. */
+ fdpt->resvd1 = fdpt->resvd2 = 0;
+
+ fdpt->lcyl = lgeo.cylinders;
+ fdpt->lhead = lgeo.heads;
+ fdpt->sig = 0xa0;
+ fdpt->spt = spt;
+ fdpt->cyl = cylinders;
+ fdpt->head = heads;
+ fdpt->lspt = lgeo.spt;
+ sum = 0;
+ for (i = 0; i < 0xf; i++)
+ sum += *((uint8_t __far *)fdpt + i);
+ sum = -sum;
+ fdpt->csum = sum;
+ }
+
+ // fill hdidmap
+ bios_dsk->hdidmap[hdcount] = device;
+ hdcount++;
+ }
+
+ // Now we send an IDENTIFY command to ATAPI device
+ if (type == DSK_TYPE_ATAPI) {
+ uint8_t type, removable, mode;
+ uint16_t blksize;
+
+ // Temporary values to do the transfer
+ bios_dsk->devices[device].device = DSK_DEVICE_CDROM;
+ bios_dsk->devices[device].mode = ATA_MODE_PIO16;
+ bios_dsk->drqp.buffer = buffer;
+ bios_dsk->drqp.dev_id = device;
+
+ if (ata_cmd_data_in(bios_dsk, ATA_CMD_IDENTIFY_PACKET, 1) != 0)
+ BX_PANIC("ata-detect: Failed to detect ATAPI device\n");
+
+ type = *(buffer+1) & 0x1f;
+ removable = (*(buffer+0) & 0x80) ? 1 : 0;
+#if VBOX_BIOS_CPU >= 80386
+ mode = *(buffer+96) ? ATA_MODE_PIO32 : ATA_MODE_PIO16;
+#else
+ mode = ATA_MODE_PIO16;
+#endif
+ blksize = 2048;
+
+ bios_dsk->devices[device].device = type;
+ bios_dsk->devices[device].removable = removable;
+ bios_dsk->devices[device].mode = mode;
+ bios_dsk->devices[device].blksize = blksize;
+
+ // fill cdidmap
+ bios_dsk->cdidmap[cdcount] = device;
+ cdcount++;
+ }
+
+ {
+ uint32_t sizeinmb;
+ uint16_t ataversion;
+ uint8_t version, model[41];
+ int i;
+
+ switch (type) {
+ case DSK_TYPE_ATA:
+ sizeinmb = (bios_dsk->devices[device].sectors >> 11);
+ case DSK_TYPE_ATAPI:
+ // Read ATA/ATAPI version
+ ataversion = ((uint16_t)(*(buffer+161))<<8) | *(buffer+160);
+ for (version = 15; version > 0; version--) {
+ if ((ataversion & (1 << version)) !=0 )
+ break;
+ }
+
+ // Read model name
+ for (i = 0; i < 20; i++ ) {
+ *(model+(i*2)) = *(buffer+(i*2)+54+1);
+ *(model+(i*2)+1) = *(buffer+(i*2)+54);
+ }
+
+ // Reformat
+ *(model+40) = 0x00;
+ for ( i = 39; i > 0; i-- ){
+ if (*(model+i) == 0x20)
+ *(model+i) = 0x00;
+ else
+ break;
+ }
+ break;
+ }
+
+#ifdef VBOXz
+ // we don't want any noisy output for now
+#else /* !VBOX */
+ switch (type) {
+ int c;
+ case DSK_TYPE_ATA:
+ printf("ata%d %s: ", channel, slave ? " slave" : "master");
+ i=0;
+ while(c=*(model+i++))
+ printf("%c", c);
+ printf(" ATA-%d Hard-Disk (%lu MBytes)\n", version, sizeinmb);
+ break;
+ case DSK_TYPE_ATAPI:
+ printf("ata%d %s: ", channel, slave ? " slave" : "master");
+ i=0;
+ while(c=*(model+i++))
+ printf("%c", c);
+ if (bios_dsk->devices[device].device == DSK_DEVICE_CDROM)
+ printf(" ATAPI-%d CD-ROM/DVD-ROM\n", version);
+ else
+ printf(" ATAPI-%d Device\n", version);
+ break;
+ case DSK_TYPE_UNKNOWN:
+ printf("ata%d %s: Unknown device\n", channel , slave ? " slave" : "master");
+ break;
+ }
+#endif /* !VBOX */
+ }
+ }
+
+ // Store the devices counts
+ bios_dsk->hdcount = hdcount;
+ bios_dsk->cdcount = cdcount;
+ write_byte(0x40,0x75, hdcount);
+
+#ifdef VBOX
+ // we don't want any noisy output for now
+#else /* !VBOX */
+ printf("\n");
+#endif /* !VBOX */
+
+ // FIXME : should use bios=cmos|auto|disable bits
+ // FIXME : should know about translation bits
+ // FIXME : move hard_drive_post here
+
+}
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : execute a data-out command
+// ---------------------------------------------------------------------------
+ // returns
+ // 0 : no error
+ // 1 : BUSY bit set
+ // 2 : read error
+ // 3 : expected DRQ=1
+ // 4 : no sectors left to read/verify
+ // 5 : more sectors to read/verify
+ // 6 : no sectors left to write
+ // 7 : more sectors to write
+uint16_t ata_cmd_data_out(bio_dsk_t __far *bios_dsk, uint16_t command, uint16_t count)
+{
+ uint64_t lba;
+ char __far *buffer;
+ uint16_t iobase1, iobase2, blksize;
+ uint16_t cylinder;
+ uint16_t head;
+ uint16_t sector;
+ uint16_t device;
+ uint8_t channel, slave;
+ uint8_t status, mode;
+
+ device = bios_dsk->drqp.dev_id;
+ channel = device / 2;
+ slave = device % 2;
+
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+ mode = bios_dsk->devices[device].mode;
+ blksize = 0x200; // was = bios_dsk->devices[device].blksize;
+#if VBOX_BIOS_CPU >= 80386
+ if (mode == ATA_MODE_PIO32)
+ blksize >>= 2;
+ else
+#endif
+ blksize >>= 1;
+
+ status = inb(iobase1 + ATA_CB_STAT);
+ if (status & ATA_CB_STAT_BSY)
+ {
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 1;
+ }
+
+ lba = bios_dsk->drqp.lba;
+ buffer = bios_dsk->drqp.buffer;
+ sector = bios_dsk->drqp.sector;
+ cylinder = bios_dsk->drqp.cylinder;
+ head = bios_dsk->drqp.head;
+
+ // sector will be 0 only on lba access. Convert to lba-chs
+ if (sector == 0) {
+ if (lba + count >= 268435456)
+ {
+ sector = (lba >> 24) & 0x00ff;
+ cylinder = (lba >> 32) & 0xffff;
+ outb(iobase1 + ATA_CB_SC, (count & 0xff00) >> 8);
+ outb(iobase1 + ATA_CB_SN, sector);
+ outb(iobase1 + ATA_CB_CL, cylinder & 0x00ff);
+ outb(iobase1 + ATA_CB_CH, cylinder >> 8);
+ /* Leave the bottom 24 bits as is, they are treated correctly by the
+ * LBA28 code path. */
+ lba &= 0xffffff;
+ }
+ sector = (uint16_t) (lba & 0x000000ffL);
+ lba >>= 8;
+ cylinder = (uint16_t) (lba & 0x0000ffffL);
+ lba >>= 16;
+ head = ((uint16_t) (lba & 0x0000000fL)) | 0x40;
+ }
+
+ outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+ outb(iobase1 + ATA_CB_FR, 0x00);
+ outb(iobase1 + ATA_CB_SC, count);
+ outb(iobase1 + ATA_CB_SN, sector);
+ outb(iobase1 + ATA_CB_CL, cylinder & 0x00ff);
+ outb(iobase1 + ATA_CB_CH, cylinder >> 8);
+ outb(iobase1 + ATA_CB_DH, (slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0) | (uint8_t) head );
+ outb(iobase1 + ATA_CB_CMD, command);
+
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) )
+ break;
+ }
+
+ if (status & ATA_CB_STAT_ERR) {
+ BX_DEBUG_ATA("%s: write error\n", __func__);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 2;
+ } else if ( !(status & ATA_CB_STAT_DRQ) ) {
+ BX_DEBUG_ATA("%s: DRQ not set (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 3;
+ }
+
+ // FIXME : move seg/off translation here
+
+ int_enable(); // enable higher priority interrupts
+
+ while (1) {
+
+ // adjust if there will be an overrun. 2K max sector size
+ if (FP_OFF(buffer) >= 0xF800)
+ buffer = MK_FP(FP_SEG(buffer) + 0x80, FP_OFF(buffer) - 0x800);
+
+#if VBOX_BIOS_CPU >= 80386
+ if (mode == ATA_MODE_PIO32)
+ buffer = rep_outsd(buffer, blksize, iobase1);
+ else
+#endif
+ buffer = rep_outsw(buffer, blksize, iobase1);
+
+ bios_dsk->drqp.trsfsectors++;
+ count--;
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) )
+ break;
+ }
+ if (count == 0) {
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DF | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) )
+ != ATA_CB_STAT_RDY ) {
+ BX_DEBUG_ATA("%s: no sectors left (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 6;
+ }
+ break;
+ }
+ else {
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) )
+ != (ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ) ) {
+ BX_DEBUG_ATA("%s: more sectors left (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 7;
+ }
+ continue;
+ }
+ }
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 0;
+}
+
+
+/**
+ * Read sectors from an attached ATA device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int ata_read_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint16_t n_sect;
+ int status;
+ uint8_t device_id;
+
+ device_id = bios_dsk->drqp.dev_id;
+ n_sect = bios_dsk->drqp.nsect;
+
+ if (bios_dsk->drqp.sector) {
+ /* CHS addressing. */
+ bios_dsk->devices[device_id].blksize = n_sect * 0x200;
+ BX_DEBUG_ATA("%s: reading %u sectors (CHS)\n", __func__, n_sect);
+ status = ata_cmd_data_in(bios_dsk, ATA_CMD_READ_MULTIPLE, n_sect);
+ bios_dsk->devices[device_id].blksize = 0x200;
+ } else {
+ /* LBA addressing. */
+ if (bios_dsk->drqp.lba + n_sect >= 268435456) {
+ BX_DEBUG_ATA("%s: reading %u sector (LBA,EXT)\n", __func__, n_sect);
+ status = ata_cmd_data_in(bios_dsk, ATA_CMD_READ_SECTORS_EXT, n_sect);
+ } else {
+ bios_dsk->devices[device_id].blksize = n_sect * 0x200;
+ BX_DEBUG_ATA("%s: reading %u sector (LBA,MULT)\n", __func__, n_sect);
+ status = ata_cmd_data_in(bios_dsk, ATA_CMD_READ_MULTIPLE, n_sect);
+ bios_dsk->devices[device_id].blksize = 0x200;
+ }
+ }
+ return status;
+}
+
+/**
+ * Write sectors to an attached ATA device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int ata_write_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint16_t n_sect;
+
+ n_sect = bios_dsk->drqp.nsect;
+
+ if (bios_dsk->drqp.sector) {
+ /* CHS addressing. */
+ return ata_cmd_data_out(bios_dsk, ATA_CMD_WRITE_SECTORS, n_sect);
+ } else {
+ /* LBA addressing. */
+ if (bios_dsk->drqp.lba + n_sect >= 268435456)
+ return ata_cmd_data_out(bios_dsk, ATA_CMD_WRITE_SECTORS_EXT, n_sect);
+ else
+ return ata_cmd_data_out(bios_dsk, ATA_CMD_WRITE_SECTORS, n_sect);
+ }
+}
+
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : execute a packet command
+// ---------------------------------------------------------------------------
+ // returns
+ // 0 : no error
+ // 1 : error in parameters
+ // 2 : BUSY bit set
+ // 3 : error
+ // 4 : not ready
+uint16_t ata_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t header, uint32_t length, uint8_t inout, char __far *buffer)
+{
+ uint16_t iobase1, iobase2;
+ uint16_t lcount, lbefore, lafter, count;
+ uint8_t channel, slave;
+ uint8_t status, mode, lmode;
+ uint32_t transfer;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ channel = device / 2;
+ slave = device % 2;
+
+ // Data out is not supported yet
+ if (inout == ATA_DATA_OUT) {
+ BX_INFO("%s: DATA_OUT not supported yet\n", __func__);
+ return 1;
+ }
+
+ // The header length must be even
+ if (header & 1) {
+ BX_DEBUG_ATA("%s: header must be even (%04x)\n", __func__, header);
+ return 1;
+ }
+
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+ mode = bios_dsk->devices[device].mode;
+ transfer = 0L;
+
+ if (cmdlen < 12)
+ cmdlen = 12;
+ if (cmdlen > 12)
+ cmdlen = 16;
+ cmdlen >>= 1;
+
+ // Reset count of transferred data
+ /// @todo clear in calling code?
+ bios_dsk->drqp.trsfsectors = 0;
+ bios_dsk->drqp.trsfbytes = 0;
+
+ status = inb(iobase1 + ATA_CB_STAT);
+ if (status & ATA_CB_STAT_BSY)
+ return 2;
+
+ outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+ // outb(iobase1 + ATA_CB_FR, 0x00);
+ // outb(iobase1 + ATA_CB_SC, 0x00);
+ // outb(iobase1 + ATA_CB_SN, 0x00);
+ outb(iobase1 + ATA_CB_CL, 0xfff0 & 0x00ff);
+ outb(iobase1 + ATA_CB_CH, 0xfff0 >> 8);
+ outb(iobase1 + ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0);
+ outb(iobase1 + ATA_CB_CMD, ATA_CMD_PACKET);
+
+ // Device should ok to receive command
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) ) break;
+ }
+
+ if (status & ATA_CB_STAT_CHK) {
+ BX_DEBUG_ATA("%s: error, status is %02x\n", __func__, status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 3;
+ } else if ( !(status & ATA_CB_STAT_DRQ) ) {
+ BX_DEBUG_ATA("%s: DRQ not set (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 4;
+ }
+
+ int_enable(); // enable higher priority interrupts
+
+ // Normalize address
+ BX_DEBUG_ATA("acp1 buffer ptr: %04x:%04x wlen %04x\n", FP_SEG(cmdbuf), FP_OFF(cmdbuf), cmdlen);
+ cmdbuf = MK_FP(FP_SEG(cmdbuf) + FP_OFF(cmdbuf) / 16 , FP_OFF(cmdbuf) % 16);
+ // cmdseg += (cmdoff / 16);
+ // cmdoff %= 16;
+
+ // Send command to device
+ rep_outsw(cmdbuf, cmdlen, iobase1);
+
+ if (inout == ATA_DATA_NO) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ }
+ else {
+ while (1) {
+
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) )
+ break;
+ }
+
+ // Check if command completed
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_DRQ) ) ==0 )
+ break;
+
+ if (status & ATA_CB_STAT_CHK) {
+ BX_DEBUG_ATA("%s: error (status %02x)\n", __func__, status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 3;
+ }
+
+ // Device must be ready to send data
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_CHK) )
+ != (ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ) ) {
+ BX_DEBUG_ATA("%s: not ready (status %02x)\n", __func__, status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 4;
+ }
+
+ // Normalize address
+ BX_DEBUG_ATA("acp2 buffer ptr: %04x:%04x\n", FP_SEG(buffer), FP_OFF(buffer));
+ buffer = MK_FP(FP_SEG(buffer) + FP_OFF(buffer) / 16 , FP_OFF(buffer) % 16);
+ // bufseg += (bufoff / 16);
+ // bufoff %= 16;
+
+ // Get the byte count
+ lcount = ((uint16_t)(inb(iobase1 + ATA_CB_CH))<<8)+inb(iobase1 + ATA_CB_CL);
+
+ // adjust to read what we want
+ if (header>lcount) {
+ lbefore = lcount;
+ header -= lcount;
+ lcount = 0;
+ }
+ else {
+ lbefore = header;
+ header = 0;
+ lcount -= lbefore;
+ }
+
+ if (lcount>length) {
+ lafter = lcount - length;
+ lcount = length;
+ length = 0;
+ }
+ else {
+ lafter = 0;
+ length -= lcount;
+ }
+
+ // Save byte count
+ count = lcount;
+
+ BX_DEBUG_ATA("Trying to read %04x bytes (%04x %04x %04x) ",lbefore+lcount+lafter,lbefore,lcount,lafter);
+ BX_DEBUG_ATA("to 0x%04x:0x%04x\n",FP_SEG(buffer),FP_OFF(buffer));
+
+ // If counts not dividable by 4, use 16bits mode
+ lmode = mode;
+ if (lbefore & 0x03)
+ lmode = ATA_MODE_PIO16;
+ if (lcount & 0x03)
+ lmode = ATA_MODE_PIO16;
+ if (lafter & 0x03)
+ lmode = ATA_MODE_PIO16;
+
+ // adds an extra byte if count are odd. before is always even
+ if (lcount & 0x01) {
+ lcount += 1;
+ if ((lafter > 0) && (lafter & 0x01)) {
+ lafter -= 1;
+ }
+ }
+
+#if VBOX_BIOS_CPU >= 80386
+ if (lmode == ATA_MODE_PIO32) {
+ lcount >>= 2;
+ lbefore >>= 2;
+ lafter >>= 2;
+ } else
+#endif
+ {
+ lcount >>= 1;
+ lbefore >>= 1;
+ lafter >>= 1;
+ }
+
+#if VBOX_BIOS_CPU >= 80386
+ if (lmode == ATA_MODE_PIO32) {
+ if (lbefore)
+ insd_discard(lbefore, iobase1);
+ rep_insd(buffer, lcount, iobase1);
+ if (lafter)
+ insd_discard(lafter, iobase1);
+ } else
+#endif
+ {
+ if (lbefore)
+ insw_discard(lbefore, iobase1);
+ rep_insw(buffer, lcount, iobase1);
+ if (lafter)
+ insw_discard(lafter, iobase1);
+ }
+
+
+ // Compute new buffer address
+ buffer += count;
+
+ // Save transferred bytes count
+ transfer += count;
+ bios_dsk->drqp.trsfbytes = transfer;
+ }
+ }
+
+ // Final check, device must be ready
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DF | ATA_CB_STAT_DRQ | ATA_CB_STAT_CHK) )
+ != ATA_CB_STAT_RDY ) {
+ BX_DEBUG_ATA("%s: not ready (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 4;
+ }
+
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 0;
+}
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : reset device; intended for ATAPI devices
+// ---------------------------------------------------------------------------
+ // returns
+ // 0 : no error
+ // 1 : error
+uint16_t ata_soft_reset(uint16_t device)
+{
+ uint16_t iobase1, iobase2;
+ uint8_t channel, slave;
+ uint8_t status;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ channel = device / 2;
+ slave = device % 2;
+
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+
+ /* Send a reset command to the device. */
+ outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+ outb(iobase1 + ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0);
+ outb(iobase1 + ATA_CB_CMD, ATA_CMD_DEVICE_RESET);
+
+ /* Wait for the device to clear BSY. */
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) ) break;
+ }
+
+ /* Final check, device must be ready */
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DF | ATA_CB_STAT_DRQ | ATA_CB_STAT_CHK) )
+ != ATA_CB_STAT_RDY ) {
+ BX_DEBUG_ATA("%s: not ready (status %02x)\n", __func__, (unsigned) status);
+ /* Enable interrupts */
+ outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15);
+ return 1;
+ }
+
+ /* Enable interrupts */
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 0;
+}
+
+
+// ---------------------------------------------------------------------------
+// End of ATA/ATAPI Driver
+// ---------------------------------------------------------------------------
diff --git a/src/VBox/Devices/PC/BIOS/ata.h b/src/VBox/Devices/PC/BIOS/ata.h
new file mode 100644
index 00000000..8ae64055
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ata.h
@@ -0,0 +1,190 @@
+/* $Id: ata.h $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_ata_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_ata_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+#define ATA_DATA_NO 0x00
+#define ATA_DATA_IN 0x01
+#define ATA_DATA_OUT 0x02
+
+#define ATA_IFACE_NONE 0x00
+#define ATA_IFACE_ISA 0x00
+#define ATA_IFACE_PCI 0x01
+
+#define ATA_MODE_NONE 0x00
+#define ATA_MODE_PIO16 0x00
+#if VBOX_BIOS_CPU >= 80386
+# define ATA_MODE_PIO32 0x01
+#endif
+#define ATA_MODE_ISADMA 0x02
+#define ATA_MODE_PCIDMA 0x03
+#define ATA_MODE_USEIRQ 0x10
+
+// Global defines -- ATA register and register bits.
+// command block & control block regs
+#define ATA_CB_DATA 0 // data reg in/out pio_base_addr1+0
+#define ATA_CB_ERR 1 // error in pio_base_addr1+1
+#define ATA_CB_FR 1 // feature reg out pio_base_addr1+1
+#define ATA_CB_SC 2 // sector count in/out pio_base_addr1+2
+#define ATA_CB_SN 3 // sector number in/out pio_base_addr1+3
+#define ATA_CB_CL 4 // cylinder low in/out pio_base_addr1+4
+#define ATA_CB_CH 5 // cylinder high in/out pio_base_addr1+5
+#define ATA_CB_DH 6 // device head in/out pio_base_addr1+6
+#define ATA_CB_STAT 7 // primary status in pio_base_addr1+7
+#define ATA_CB_CMD 7 // command out pio_base_addr1+7
+#define ATA_CB_ASTAT 6 // alternate status in pio_base_addr2+6
+#define ATA_CB_DC 6 // device control out pio_base_addr2+6
+#define ATA_CB_DA 7 // device address in pio_base_addr2+7
+
+#define ATA_CB_ER_ICRC 0x80 // ATA Ultra DMA bad CRC
+#define ATA_CB_ER_BBK 0x80 // ATA bad block
+#define ATA_CB_ER_UNC 0x40 // ATA uncorrected error
+#define ATA_CB_ER_MC 0x20 // ATA media change
+#define ATA_CB_ER_IDNF 0x10 // ATA id not found
+#define ATA_CB_ER_MCR 0x08 // ATA media change request
+#define ATA_CB_ER_ABRT 0x04 // ATA command aborted
+#define ATA_CB_ER_NTK0 0x02 // ATA track 0 not found
+#define ATA_CB_ER_NDAM 0x01 // ATA address mark not found
+
+#define ATA_CB_ER_P_SNSKEY 0xf0 // ATAPI sense key (mask)
+#define ATA_CB_ER_P_MCR 0x08 // ATAPI Media Change Request
+#define ATA_CB_ER_P_ABRT 0x04 // ATAPI command abort
+#define ATA_CB_ER_P_EOM 0x02 // ATAPI End of Media
+#define ATA_CB_ER_P_ILI 0x01 // ATAPI Illegal Length Indication
+
+// ATAPI Interrupt Reason bits in the Sector Count reg (CB_SC)
+#define ATA_CB_SC_P_TAG 0xf8 // ATAPI tag (mask)
+#define ATA_CB_SC_P_REL 0x04 // ATAPI release
+#define ATA_CB_SC_P_IO 0x02 // ATAPI I/O
+#define ATA_CB_SC_P_CD 0x01 // ATAPI C/D
+
+// bits 7-4 of the device/head (CB_DH) reg
+#define ATA_CB_DH_DEV0 0xa0 // select device 0
+#define ATA_CB_DH_DEV1 0xb0 // select device 1
+
+// status reg (CB_STAT and CB_ASTAT) bits
+#define ATA_CB_STAT_BSY 0x80 // busy
+#define ATA_CB_STAT_RDY 0x40 // ready
+#define ATA_CB_STAT_DF 0x20 // device fault
+#define ATA_CB_STAT_WFT 0x20 // write fault (old name)
+#define ATA_CB_STAT_SKC 0x10 // seek complete
+#define ATA_CB_STAT_SERV 0x10 // service
+#define ATA_CB_STAT_DRQ 0x08 // data request
+#define ATA_CB_STAT_CORR 0x04 // corrected
+#define ATA_CB_STAT_IDX 0x02 // index
+#define ATA_CB_STAT_ERR 0x01 // error (ATA)
+#define ATA_CB_STAT_CHK 0x01 // check (ATAPI)
+
+// device control reg (CB_DC) bits
+#define ATA_CB_DC_HD15 0x08 // bit should always be set to one
+#define ATA_CB_DC_SRST 0x04 // soft reset
+#define ATA_CB_DC_NIEN 0x02 // disable interrupts
+
+// Most mandatory and optional ATA commands (from ATA-3),
+#define ATA_CMD_CFA_ERASE_SECTORS 0xC0
+#define ATA_CMD_CFA_REQUEST_EXT_ERR_CODE 0x03
+#define ATA_CMD_CFA_TRANSLATE_SECTOR 0x87
+#define ATA_CMD_CFA_WRITE_MULTIPLE_WO_ERASE 0xCD
+#define ATA_CMD_CFA_WRITE_SECTORS_WO_ERASE 0x38
+#define ATA_CMD_CHECK_POWER_MODE1 0xE5
+#define ATA_CMD_CHECK_POWER_MODE2 0x98
+#define ATA_CMD_DEVICE_RESET 0x08
+#define ATA_CMD_EXECUTE_DEVICE_DIAGNOSTIC 0x90
+#define ATA_CMD_FLUSH_CACHE 0xE7
+#define ATA_CMD_FORMAT_TRACK 0x50
+#define ATA_CMD_IDENTIFY_DEVICE 0xEC
+#define ATA_CMD_IDENTIFY_PACKET 0xA1
+#define ATA_CMD_IDLE1 0xE3
+#define ATA_CMD_IDLE2 0x97
+#define ATA_CMD_IDLE_IMMEDIATE1 0xE1
+#define ATA_CMD_IDLE_IMMEDIATE2 0x95
+#define ATA_CMD_INITIALIZE_DRIVE_PARAMETERS 0x91
+#define ATA_CMD_INITIALIZE_DEVICE_PARAMETERS 0x91
+#define ATA_CMD_NOP 0x00
+#define ATA_CMD_PACKET 0xA0
+#define ATA_CMD_READ_BUFFER 0xE4
+#define ATA_CMD_READ_DMA 0xC8
+#define ATA_CMD_READ_DMA_QUEUED 0xC7
+#define ATA_CMD_READ_MULTIPLE 0xC4
+#define ATA_CMD_READ_SECTORS 0x20
+#define ATA_CMD_READ_SECTORS_EXT 0x24
+#define ATA_CMD_READ_MULTIPLE_EXT 0x29
+#define ATA_CMD_WRITE_MULTIPLE_EXT 0x39
+#define ATA_CMD_READ_VERIFY_SECTORS 0x40
+#define ATA_CMD_RECALIBRATE 0x10
+#define ATA_CMD_SEEK 0x70
+#define ATA_CMD_SET_FEATURES 0xEF
+#define ATA_CMD_SET_MULTIPLE_MODE 0xC6
+#define ATA_CMD_SLEEP1 0xE6
+#define ATA_CMD_SLEEP2 0x99
+#define ATA_CMD_STANDBY1 0xE2
+#define ATA_CMD_STANDBY2 0x96
+#define ATA_CMD_STANDBY_IMMEDIATE1 0xE0
+#define ATA_CMD_STANDBY_IMMEDIATE2 0x94
+#define ATA_CMD_WRITE_BUFFER 0xE8
+#define ATA_CMD_WRITE_DMA 0xCA
+#define ATA_CMD_WRITE_DMA_QUEUED 0xCC
+#define ATA_CMD_WRITE_MULTIPLE 0xC5
+#define ATA_CMD_WRITE_SECTORS 0x30
+#define ATA_CMD_WRITE_SECTORS_EXT 0x34
+#define ATA_CMD_WRITE_VERIFY 0x3C
+
+extern void ata_reset(uint16_t device);
+
+#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_ata_h */
+
diff --git a/src/VBox/Devices/PC/BIOS/bios.c b/src/VBox/Devices/PC/BIOS/bios.c
new file mode 100644
index 00000000..9d4aa4ce
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/bios.c
@@ -0,0 +1,191 @@
+/* $Id: bios.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "inlines.h"
+#include "biosint.h"
+#ifndef VBOX_VERSION_STRING
+#include <VBox/version.h>
+#endif
+
+static const char bios_cvs_version_string[] = "VirtualBox " VBOX_VERSION_STRING;
+
+uint8_t inb_cmos(uint8_t cmos_reg)
+{
+ uint8_t cmos_port = 0x70;
+
+ if (cmos_reg >= 0x80)
+ cmos_port += 2;
+ outb(cmos_port, cmos_reg);
+ return inb(cmos_port + 1);
+}
+
+void outb_cmos(uint8_t cmos_reg, uint8_t val)
+{
+ uint8_t cmos_port = 0x70;
+
+ if (cmos_reg >= 0x80)
+ cmos_port += 2;
+ outb(cmos_port, cmos_reg);
+ outb(cmos_port + 1, val);
+}
+
+void BIOSCALL dummy_isr_function(pusha_regs_t regs, uint16_t es,
+ uint16_t ds, iret_addr_t iret_addr)
+{
+ // Interrupt handler for unexpected hardware interrupts. We have to clear
+ // the PIC because if we don't, the next EOI will clear the wrong interrupt
+ // and all hell will break loose! This routine also masks the unexpected
+ // interrupt so it will generally be called only once for each unexpected
+ // interrupt level.
+ uint8_t isrA, isrB, imr, last_int = 0xFF;
+
+ outb(PIC_MASTER, PIC_CMD_RD_ISR); // Read master ISR
+ isrA = inb(PIC_MASTER);
+ if (isrA) {
+ outb(PIC_SLAVE, PIC_CMD_RD_ISR); // Read slave ISR
+ isrB = inb(PIC_SLAVE);
+ if (isrB) {
+ imr = inb(PIC_SLAVE_MASK);
+ outb(PIC_SLAVE_MASK, imr | isrB ); // Mask this interrupt
+ outb(PIC_SLAVE, PIC_CMD_EOI); // Send EOI on slave PIC
+ } else {
+ imr = inb(PIC_MASTER_MASK);
+ isrA &= 0xFB; // Never mask the cascade interrupt
+ outb(PIC_MASTER_MASK, imr | isrA); // Mask this interrupt
+ }
+ outb(PIC_MASTER, PIC_CMD_EOI); // Send EOI on master PIC
+ last_int = isrA;
+ }
+ write_byte(0x40, 0x6B, last_int); // Write INTR_FLAG
+}
+
+
+void BIOSCALL nmi_handler_msg(void)
+{
+ BX_PANIC("NMI Handler called\n");
+}
+
+void BIOSCALL int18_panic_msg(void)
+{
+ BX_PANIC("INT18: BOOT FAILURE\n");
+}
+
+void BIOSCALL log_bios_start(void)
+{
+#if BX_DEBUG_SERIAL
+ outb(BX_DEBUG_PORT+UART_LCR, 0x03); /* setup for serial logging: 8N1 */
+#endif
+ BX_INFO("%s\n", bios_cvs_version_string);
+}
+
+/* Set video mode. */
+void set_mode(uint8_t mode);
+#pragma aux set_mode = \
+ "mov ah, 0" \
+ "int 10h" \
+ parm [al] modify [ax];
+
+/// @todo restore
+//#undef VBOX
+
+#define BX_PCIBIOS 1
+#define BX_APPNAME "VirtualBox"
+#define BIOS_BUILD_DATE __DATE__
+//--------------------------------------------------------------------------
+// print_bios_banner
+// displays a the bios version
+//--------------------------------------------------------------------------
+void BIOSCALL print_bios_banner(void)
+{
+#ifdef VBOX
+ // Skip the logo if a warm boot is requested.
+ uint16_t warm_boot = read_word(0x0040,0x0072);
+ write_word(0x0040,0x0072, 0);
+ if (warm_boot == 0x1234)
+ {
+ /* Only set text mode. */
+ set_mode(3);
+ return;
+ }
+ /* show graphical logo */
+ show_logo();
+#else /* !VBOX */
+ char *bios_conf;
+
+ /* Avoid using preprocessing directives within macro arguments. */
+ bios_conf =
+#ifdef __WATCOMC__
+ "watcom "
+#endif
+#if BX_APM
+ "apmbios "
+#endif
+#if BX_PCIBIOS
+ "pcibios "
+#endif
+#if BX_ELTORITO_BOOT
+ "eltorito "
+#endif
+#if BX_ROMBIOS32
+ "rombios32 "
+#endif
+ "\n\n";
+
+ printf(BX_APPNAME" BIOS - build: %s\n%s\nOptions: ",
+ BIOS_BUILD_DATE, bios_cvs_version_string);
+ printf(bios_conf, 0);
+#endif /* VBOX */
+}
diff --git a/src/VBox/Devices/PC/BIOS/biosint.h b/src/VBox/Devices/PC/BIOS/biosint.h
new file mode 100644
index 00000000..7e7d8c31
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/biosint.h
@@ -0,0 +1,313 @@
+/* $Id: biosint.h $ */
+/** @file
+ * PC BIOS - BIOS internal definitions.
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_biosint_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_biosint_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+/* Compile-time assertion macro. */
+#define ct_assert(a) extern int ct_ass_arr[!!(a) == 1];
+
+/* For functions called from assembly code. */
+#define BIOSCALL __cdecl
+
+#define BX_ELTORITO_BOOT 1
+#define BX_PCIBIOS 1
+#define BX_USE_PS2_MOUSE 1
+#define BX_APM 1
+
+#ifndef DEBUG_ATA
+# define DEBUG_ATA 0
+#endif
+#ifdef DEBUG_AHCI
+# define DEBUG_AHCI 0
+#endif
+#ifndef DEBUG_SCSI
+# define DEBUG_SCSI 0
+#endif
+#ifndef DEBUG_CD_BOOT
+# define DEBUG_CD_BOOT 0
+#endif
+#ifndef DEBUG_ELTORITO
+# define DEBUG_ELTORITO 0
+#endif
+#ifndef DEBUG_INT13_HD
+# define DEBUG_INT13_HD 0
+#endif
+#ifndef DEBUG_INT13_FL
+# define DEBUG_INT13_FL 0
+#endif
+#ifndef DEBUG_INT13_CD
+# define DEBUG_INT13_CD 0
+#endif
+#ifndef DEBUG_INT15
+# define DEBUG_INT15 0
+#endif
+#ifndef DEBUG_INT15_MS
+# define DEBUG_INT15_MS 0
+#endif
+#ifndef DEBUG_INT16
+# define DEBUG_INT16 0
+#endif
+#ifndef DEBUG_INT1A
+# define DEBUG_INT1A 0
+#endif
+#ifndef DEBUG_INT74
+# define DEBUG_INT74 0
+#endif
+#ifndef DEBUG_PCI
+# define DEBUG_PCI 0
+#endif
+#ifndef DEBUG_APM
+# define DEBUG_APM 0
+#endif
+#ifndef DEBUG_POST
+# define DEBUG_POST 0
+#endif
+
+#define FP_OFF(p) ((unsigned)(p))
+#define FP_SEG(p) ((unsigned)((unsigned long)(void __far*)(p) >> 16))
+#define MK_FP(s,o) (((unsigned short)(s)):>((void __near *)(o)))
+
+typedef struct {
+ union {
+ struct {
+ uint16_t di, si, bp, sp;
+ uint16_t bx, dx, cx, ax;
+ } r16;
+ struct {
+ uint16_t filler[4];
+ uint8_t bl, bh, dl, dh, cl, ch, al, ah;
+ } r8;
+ } u;
+} pusha_regs_t;
+
+typedef struct {
+ union {
+ struct {
+ uint32_t edi, esi, ebp, esp;
+ uint32_t ebx, edx, ecx, eax;
+ } r32;
+ struct {
+ uint16_t di, filler1, si, filler2, bp, filler3, sp, filler4;
+ uint16_t bx, filler5, dx, filler6, cx, filler7, ax, filler8;
+ } r16;
+ struct {
+ uint32_t filler[4];
+ uint8_t bl, bh;
+ uint16_t filler1;
+ uint8_t dl, dh;
+ uint16_t filler2;
+ uint8_t cl, ch;
+ uint16_t filler3;
+ uint8_t al, ah;
+ uint16_t filler4;
+ } r8;
+ } u;
+} pushad_regs_t;
+
+typedef struct {
+ union {
+ struct {
+ uint16_t flags;
+ } r16;
+ struct {
+ uint8_t flagsl;
+ uint8_t flagsh;
+ } r8;
+ } u;
+} flags_t;
+
+typedef struct {
+ uint16_t ip;
+ uint16_t cs;
+ flags_t flags;
+} iret_addr_t;
+
+typedef struct {
+ uint16_t ds;
+ uint16_t es;
+ pusha_regs_t gr;
+ iret_addr_t ra;
+} disk_regs_t;
+
+typedef struct {
+ pusha_regs_t gr;
+ uint16_t es;
+ uint16_t ds;
+ uint16_t ifl;
+ iret_addr_t ra;
+} kbd_regs_t;
+
+typedef struct {
+ pusha_regs_t gr;
+ uint16_t es;
+ uint16_t ds;
+ flags_t fl;
+} sys_regs_t;
+
+typedef struct {
+ pushad_regs_t gr;
+ uint16_t es;
+ uint16_t ds;
+ flags_t fl;
+} sys32_regs_t;
+
+typedef struct {
+ pusha_regs_t gr;
+ iret_addr_t ra;
+} i1apci_regs_t;
+
+
+#define SetCF(x) x.u.r8.flagsl |= 0x01
+#define SetZF(x) x.u.r8.flagsl |= 0x40
+#define ClearCF(x) x.u.r8.flagsl &= 0xfe
+#define ClearZF(x) x.u.r8.flagsl &= 0xbf
+#define GetCF(x) (x.u.r8.flagsl & 0x01)
+
+#define SET_AL(val8) AX = ((AX & 0xff00) | (val8))
+#define SET_BL(val8) BX = ((BX & 0xff00) | (val8))
+#define SET_CL(val8) CX = ((CX & 0xff00) | (val8))
+#define SET_DL(val8) DX = ((DX & 0xff00) | (val8))
+#define SET_AH(val8) AX = ((AX & 0x00ff) | ((val8) << 8))
+#define SET_BH(val8) BX = ((BX & 0x00ff) | ((val8) << 8))
+#define SET_CH(val8) CX = ((CX & 0x00ff) | ((val8) << 8))
+#define SET_DH(val8) DX = ((DX & 0x00ff) | ((val8) << 8))
+
+#define GET_AL() ( AX & 0x00ff )
+#define GET_BL() ( BX & 0x00ff )
+#define GET_CL() ( CX & 0x00ff )
+#define GET_DL() ( DX & 0x00ff )
+#define GET_AH() ( AX >> 8 )
+#define GET_BH() ( BX >> 8 )
+#define GET_CH() ( CX >> 8 )
+#define GET_DH() ( DX >> 8 )
+
+#define GET_ELDL() ( ELDX & 0x00ff )
+#define GET_ELDH() ( ELDX >> 8 )
+
+#define SET_CF() FLAGS |= 0x0001
+#define CLEAR_CF() FLAGS &= 0xfffe
+#define GET_CF() (FLAGS & 0x0001)
+
+#define SET_ZF() FLAGS |= 0x0040
+#define CLEAR_ZF() FLAGS &= 0xffbf
+#define GET_ZF() (FLAGS & 0x0040)
+
+#define SET_IF() FLAGS |= 0x0200
+
+typedef unsigned short bx_bool;
+
+#define BX_VIRTUAL_PORTS 1 /* normal output to Bochs ports */
+#define BX_DEBUG_SERIAL 0 /* output to COM1 */
+
+#define BIOS_PRINTF_HALT 1
+#define BIOS_PRINTF_SCREEN 2
+#define BIOS_PRINTF_INFO 4
+#define BIOS_PRINTF_DEBUG 8
+#define BIOS_PRINTF_ALL (BIOS_PRINTF_SCREEN | BIOS_PRINTF_INFO)
+#define BIOS_PRINTF_DEBHALT (BIOS_PRINTF_SCREEN | BIOS_PRINTF_INFO | BIOS_PRINTF_HALT)
+
+extern const char bios_prefix_string[];
+extern void bios_printf(uint16_t action, const char *s, ...);
+extern void put_str(uint16_t action, const char __far *s);
+extern void put_str_near(uint16_t action, const char __near *s);
+extern uint8_t inb_cmos(uint8_t cmos_reg);
+extern void outb_cmos(uint8_t cmos_reg, uint8_t val);
+extern uint16_t cdrom_boot(void);
+extern void show_logo(void);
+extern void delay_boot(uint16_t secs);
+extern bx_bool set_enable_a20(bx_bool val);
+
+#define printf(...) bios_printf(BIOS_PRINTF_SCREEN, __VA_ARGS__)
+
+// Defines the output macros.
+// BX_DEBUG goes to INFO port until we can easily choose debug info on a
+// per-device basis. Debug info are sent only in debug mode
+#define DEBUG_ROMBIOS 1
+#if DEBUG_ROMBIOS
+# define BX_DEBUG(...) bios_printf(BIOS_PRINTF_INFO, __VA_ARGS__)
+#else
+# define BX_DEBUG(...)
+#endif
+#ifdef VBOX
+#define BX_INFO(...) do { put_str(BIOS_PRINTF_INFO, bios_prefix_string); bios_printf(BIOS_PRINTF_INFO, __VA_ARGS__); } while (0)
+#else /* !VBOX */
+#define BX_INFO(...) bios_printf(BIOS_PRINTF_INFO, __VA_ARGS__)
+#endif /* !VBOX */
+#define BX_PANIC(...) bios_printf(BIOS_PRINTF_DEBHALT, __VA_ARGS__)
+
+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..da390c48
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/boot.c
@@ -0,0 +1,354 @@
+/* $Id: boot.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include <string.h>
+#include "inlines.h"
+#include "biosint.h"
+#include "ebda.h"
+
+/* Sanity check the LAN boot segment definition. */
+#if VBOX_LANBOOT_SEG < 0xA000
+#error VBOX_LANBOOT_SEG incorrect!
+#endif
+
+/* PnP header used with LAN boot ROMs. */
+typedef struct {
+ uint32_t sig;
+ uint8_t revision;
+ uint8_t length;
+ uint16_t next_s;
+ uint8_t pad1;
+ uint8_t checksum;
+ uint32_t dev_id;
+ uint16_t mfg_string;
+ uint16_t prod_string;
+ uint8_t base_class;
+ uint8_t subclass;
+ uint8_t interface;
+ uint8_t dev_ind;
+ uint16_t boot_code;
+ uint16_t dv;
+ uint16_t bev;
+ uint16_t pad2;
+ uint16_t sriv;
+} pnp_exp_t;
+
+
+int read_boot_sec(uint8_t bootdrv, uint16_t segment);
+#pragma aux read_boot_sec = \
+ "mov ax,0201h" \
+ "mov dh,0" \
+ "mov cx,1" \
+ "xor bx,bx" \
+ "int 13h" \
+ "mov ax,0" \
+ "sbb ax,0" \
+ parm [dl] [es] modify [ax bx cx dx];
+
+//--------------------------------------------------------------------------
+// print_boot_device
+// displays the boot device
+//--------------------------------------------------------------------------
+
+static const char drivetypes[][10]={"Floppy","Hard Disk","CD-ROM","LAN"};
+
+/// @todo pass inputs as bit flags rather than bytes?
+void print_boot_device(uint8_t cdboot, uint8_t lanboot, uint8_t drive)
+{
+ int i;
+
+ // cdboot contains 0 if lan/floppy/harddisk, 1 otherwise
+ // lanboot contains 0 if floppy/harddisk, 1 otherwise
+ // drive contains real/emulated boot drive
+
+ if(cdboot)i=2; // CD-Rom
+ else if(lanboot)i=3; // LAN
+ else if((drive&0x0080)==0x00)i=0; // Floppy
+ else if((drive&0x0080)==0x80)i=1; // Hard drive
+ else return;
+
+ BX_INFO("Booting from %s...\n",drivetypes[i]);
+}
+
+//--------------------------------------------------------------------------
+// print_boot_failure
+// displays the reason why boot failed
+//--------------------------------------------------------------------------
+/// @todo pass inputs as bit flags rather than bytes?
+void print_boot_failure(uint8_t cdboot, uint8_t lanboot, uint8_t drive,
+ uint8_t reason, uint8_t lastdrive)
+{
+ uint16_t drivenum = drive&0x7f;
+
+ // cdboot: 1 if boot from cd, 0 otherwise
+ // lanboot: 1 if boot from lan, 0 otherwise
+ // drive : drive number
+ // reason: 0 signature check failed, 1 read error
+ // lastdrive: 1 boot drive is the last one in boot sequence
+
+ if (cdboot)
+ BX_INFO("Boot from %s failed\n",drivetypes[2]);
+ else if (lanboot)
+ BX_INFO("Boot from %s failed\n",drivetypes[3]);
+ else if (drive & 0x80)
+ BX_INFO("Boot from %s %d failed\n", drivetypes[1],drivenum);
+ else
+ BX_INFO("Boot from %s %d failed\n", drivetypes[0],drivenum);
+
+ if (lastdrive==1) {
+ if (reason==0)
+ BX_PANIC("No bootable medium found! System halted.\n");
+ else
+ BX_PANIC("Could not read from the boot medium! System halted.\n");
+ }
+}
+
+//--------------------------------------------------------------------------
+// print_cdromboot_failure
+// displays the reason why boot failed
+//--------------------------------------------------------------------------
+void print_cdromboot_failure(uint16_t code)
+{
+ BX_INFO("CDROM boot failure code : %04x\n",code);
+ return;
+}
+
+// returns bootsegment in ax, drive in bl
+uint32_t BIOSCALL int19_function(uint8_t bseqnr)
+{
+ /// @todo common code for getting the EBDA segment
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint16_t bootseq;
+ uint8_t bootdrv;
+ uint8_t bootcd;
+ uint8_t bootlan;
+ uint8_t bootchk;
+ uint16_t bootseg;
+ uint16_t status;
+ uint8_t lastdrive=0;
+
+ // if BX_ELTORITO_BOOT is not defined, old behavior
+ // check bit 5 in CMOS reg 0x2d. load either 0x00 or 0x80 into DL
+ // in preparation for the initial INT 13h (0=floppy A:, 0x80=C:)
+ // 0: system boot sequence, first drive C: then A:
+ // 1: system boot sequence, first drive A: then C:
+ // else BX_ELTORITO_BOOT is defined
+ // CMOS regs 0x3D and 0x38 contain the boot sequence:
+ // CMOS reg 0x3D & 0x0f : 1st boot device
+ // CMOS reg 0x3D & 0xf0 : 2nd boot device
+ // CMOS reg 0x38 & 0xf0 : 3rd boot device
+ // CMOS reg 0x3C & 0x0f : 4th boot device
+ // boot device codes:
+ // 0x00 : not defined
+ // 0x01 : first floppy
+ // 0x02 : first harddrive
+ // 0x03 : first cdrom
+ // 0x04 : local area network
+ // else : boot failure
+
+ // Get the boot sequence
+#if BX_ELTORITO_BOOT
+ bootseq=inb_cmos(0x3d);
+ bootseq|=((inb_cmos(0x38) & 0xf0) << 4);
+ bootseq|=((inb_cmos(0x3c) & 0x0f) << 12);
+ if (read_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice))
+ bootseq = read_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice);
+ /* Boot delay hack. */
+ if (bseqnr == 1)
+ delay_boot((inb_cmos(0x3c) & 0xf0) >> 4); /* Implemented in logo.c */
+
+ if (bseqnr==2) bootseq >>= 4;
+ if (bseqnr==3) bootseq >>= 8;
+ if (bseqnr==4) bootseq >>= 12;
+ if (bootseq<0x10) lastdrive = 1;
+ bootdrv=0x00; bootcd=0;
+ bootlan=0;
+ BX_INFO("Boot : bseqnr=%d, bootseq=%x\r\n",bseqnr, bootseq);
+
+ switch(bootseq & 0x0f) {
+ case 0x01:
+ bootdrv=0x00;
+ bootcd=0;
+ break;
+ case 0x02:
+ {
+ // Get the Boot drive.
+ uint8_t boot_drive = read_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDrive);
+
+ bootdrv = boot_drive + 0x80;
+ bootcd=0;
+ break;
+ }
+ case 0x03:
+ bootdrv=0x00;
+ bootcd=1;
+ break;
+ case 0x04: bootlan=1; break;
+ default: return 0x00000000;
+ }
+#else
+ bootseq=inb_cmos(0x2d);
+
+ if (bseqnr==2) {
+ bootseq ^= 0x20;
+ lastdrive = 1;
+ }
+ bootdrv=0x00; bootcd=0;
+ if((bootseq&0x20)==0) bootdrv=0x80;
+#endif // BX_ELTORITO_BOOT
+
+#if BX_ELTORITO_BOOT
+ // We have to boot from cd
+ if (bootcd != 0) {
+ status = cdrom_boot();
+
+ // If failure
+ if ( (status & 0x00ff) !=0 ) {
+ print_cdromboot_failure(status);
+ print_boot_failure(bootcd, bootlan, bootdrv, 1, lastdrive);
+ return 0x00000000;
+ }
+
+ bootseg = read_word(ebda_seg,(uint16_t)&EbdaData->cdemu.load_segment);
+ bootdrv = (uint8_t)(status>>8);
+ }
+
+#endif // BX_ELTORITO_BOOT
+
+ // Check for boot from LAN first
+ if (bootlan == 1) {
+ uint8_t __far *fplan;
+
+ fplan = MK_FP(VBOX_LANBOOT_SEG, 0);
+ if (*(uint16_t __far *)fplan == 0xaa55) {
+ pnp_exp_t __far *pnps;
+ uint32_t manuf;
+ void (__far *netboot_entry)(void);
+
+ // This is NOT a generic PnP implementation, but an Etherboot-specific hack.
+ pnps = (void __far *)(fplan + *(uint16_t __far *)(fplan + 0x1a));
+ if (pnps->sig == 0x506e5024/* '$PnP' */) {
+ // Found PnP signature
+ manuf = *(uint32_t __far *)(fplan + pnps->mfg_string);
+ if (manuf == 0x65687445/* 'Ethe' */) {
+ // Found Etherboot ROM
+ print_boot_device(bootcd, bootlan, bootdrv);
+ netboot_entry = (void __far *)(fplan + 6);
+ netboot_entry();
+ }
+ else
+ {
+ //Found Normal Pnp ROM
+ print_boot_device(bootcd, bootlan, bootdrv);
+ int_enable(); /* Disabled as we were invoked via INT instruction. */
+ netboot_entry = (void __far *)(fplan + pnps->bev);
+ netboot_entry();
+ }
+ }
+ }
+
+ // boot from LAN will not return if successful.
+ print_boot_failure(bootcd, bootlan, bootdrv, 1, lastdrive);
+ return 0x00000000;
+ }
+
+ // We have to boot from harddisk or floppy
+ if (bootcd == 0 && bootlan == 0) {
+ bootseg=0x07c0;
+
+ status = read_boot_sec(bootdrv,bootseg);
+ if (status != 0) {
+ print_boot_failure(bootcd, bootlan, bootdrv, 1, lastdrive);
+ return 0x00000000;
+ }
+ }
+
+ // There is *no* requirement whatsoever for a valid floppy boot sector
+ // to have a 55AAh signature. UNIX boot floppies typically have no such
+ // signature. In general, it is impossible to tell a valid bootsector
+ // from an invalid one.
+ // NB: It is somewhat common for failed OS installs to have the
+ // 0x55AA signature and a valid partition table but zeros in the
+ // rest of the boot sector. We do a quick check by comparing the first
+ // and third word of boot sector; if identical, the boot sector is
+ // extremely unlikely to be valid.
+ if (bootdrv != 0) bootchk = 0;
+ else bootchk = 1; /* disable 0x55AA signature check on drive A: */
+
+#if BX_ELTORITO_BOOT
+ // if boot from cd, no signature check
+ if (bootcd != 0)
+ bootchk = 1;
+#endif // BX_ELTORITO_BOOT
+
+ if (read_word(bootseg,0) == read_word(bootseg,4)
+ || (bootchk == 0 && read_word(bootseg,0x1fe) != 0xaa55))
+ {
+ print_boot_failure(bootcd, bootlan, bootdrv, 0, lastdrive);
+ return 0x00000000;
+ }
+
+#if BX_ELTORITO_BOOT
+ // Print out the boot string
+ print_boot_device(bootcd, bootlan, bootdrv);
+#else // BX_ELTORITO_BOOT
+ print_boot_device(0, bootlan, bootdrv);
+#endif // BX_ELTORITO_BOOT
+
+ // return the boot segment
+ return (((uint32_t)bootdrv) << 16) + bootseg;
+}
+
diff --git a/src/VBox/Devices/PC/BIOS/disk.c b/src/VBox/Devices/PC/BIOS/disk.c
new file mode 100644
index 00000000..8afe47ac
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/disk.c
@@ -0,0 +1,654 @@
+/* $Id: disk.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+#include "ebda.h"
+#include "ata.h"
+
+
+#if DEBUG_INT13_HD
+# define BX_DEBUG_INT13_HD(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT13_HD(...)
+#endif
+
+/* Generic disk read/write routine signature. */
+typedef 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
+#ifdef VBOX_WITH_VIRTIO_SCSI
+ [DSK_TYPE_VIRTIO_SCSI] = { virtio_scsi_read_sectors, virtio_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. */
+ 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..a82e9259
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ebda.h
@@ -0,0 +1,413 @@
+/* $Id: ebda.h $ */
+/** @file
+ * PC BIOS - EBDA (Extended BIOS Data Area) Definition
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_ebda_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_ebda_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+#include <stdint.h>
+
+/* Must be defined here (EBDA structures depend on these). */
+#define BX_MAX_ATA_INTERFACES 4
+#define BX_MAX_ATA_DEVICES (BX_MAX_ATA_INTERFACES*2)
+
+#define BX_USE_ATADRV 1
+#define BX_ELTORITO_BOOT 1
+
+#ifdef VBOX_WITH_SCSI
+ /* Enough for now */
+ #define BX_MAX_SCSI_DEVICES 4
+ /* A SCSI device starts always at BX_MAX_ATA_DEVICES. */
+ #define VBOX_IS_SCSI_DEVICE(device_id) (device_id >= BX_MAX_ATA_DEVICES)
+ #define VBOX_GET_SCSI_DEVICE(device_id) (device_id - BX_MAX_ATA_DEVICES)
+#else
+ #define BX_MAX_SCSI_DEVICES 0
+#endif
+
+#ifdef VBOX_WITH_AHCI
+ /* Four should be enough for now */
+ #define BX_MAX_AHCI_DEVICES 4
+
+ /* An AHCI device starts always at BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES. */
+ #define VBOX_IS_AHCI_DEVICE(device_id) (device_id >= (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES))
+ #define VBOX_GET_AHCI_DEVICE(device_id) (device_id - (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES))
+#else
+ #define BX_MAX_AHCI_DEVICES 0
+#endif
+
+#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. */
+ DSK_TYPE_VIRTIO_SCSI, /* SCSI disk. */
+ DSKTYP_CNT /* Number of disk types. */
+};
+
+/* Disk device types. */
+//@todo: Do we really need these?
+#define DSK_DEVICE_NONE 0x00 /* No device attached. */
+#define DSK_DEVICE_HD 0xFF /* Device is a hard disk. */
+#define DSK_DEVICE_CDROM 0x05 /* Device is a CD-ROM. */
+
+/* Geometry translation modes. */
+enum geo_xlat_enm {
+ GEO_TRANSLATION_NONE, /* No geometry translation. */
+ GEO_TRANSLATION_LBA, /* LBA translation. */
+ GEO_TRANSLATION_LARGE, /* Large CHS translation. */
+ GEO_TRANSLATION_RECHS
+};
+
+#if 1 //BX_USE_ATADRV
+
+/* Note: The DPTE and FDPT structures are industry standards and
+ * may not be modified. The other disk-related structures are
+ * internal to the BIOS.
+ */
+
+/* Translated DPT (Device Parameter Table). */
+typedef struct {
+ uint16_t iobase1;
+ uint16_t iobase2;
+ uint8_t prefix;
+ uint8_t unused;
+ uint8_t irq;
+ uint8_t blkcount;
+ uint8_t dma;
+ uint8_t pio;
+ uint16_t options;
+ uint16_t reserved;
+ uint8_t revision;
+ uint8_t checksum;
+} dpte_t;
+
+ct_assert(sizeof(dpte_t) == 16); /* Ensure correct size. */
+
+#pragma pack(0)
+
+/* FDPT - Fixed Disk Parameter Table. PC/AT compatible; note
+ * that this structure is slightly misaligned.
+ */
+typedef struct {
+ uint16_t lcyl;
+ uint8_t lhead;
+ uint8_t sig;
+ uint8_t spt;
+ uint32_t resvd1;
+ uint16_t cyl;
+ uint8_t head;
+ uint16_t resvd2;
+ uint8_t lspt;
+ uint8_t csum;
+} fdpt_t;
+
+#pragma pack()
+
+ct_assert(sizeof(fdpt_t) == 16); /* Ensure correct size. */
+
+
+/* C/H/S geometry information. */
+typedef struct {
+ uint16_t heads; /* Number of heads. */
+ uint16_t cylinders; /* Number of cylinders. */
+ uint16_t spt; /* Number of sectors per track. */
+} chs_t;
+
+/* IDE/ATA specific device information. */
+typedef struct {
+ uint8_t iface; /* ISA or PCI. */
+ uint8_t irq; /* IRQ (on the PIC). */
+ uint16_t iobase1; /* I/O base 1. */
+ uint16_t iobase2; /* I/O base 2. */
+} ata_chan_t;
+
+#ifdef VBOX_WITH_SCSI
+
+/* SCSI specific device information. */
+typedef struct {
+ uint16_t io_base; /* Port base for HBA communication. */
+ uint8_t target_id; /* Target ID. */
+} scsi_dev_t;
+
+#endif
+
+#ifdef VBOX_WITH_AHCI
+
+/* AHCI specific device information. */
+typedef struct {
+ uint8_t port; /* SATA port. */
+} ahci_dev_t;
+
+#endif
+
+#ifdef VBOX_WITH_VIRTIO_SCSI
+
+/* VirtIO SCSI specific device information. */
+typedef struct {
+ uint8_t target; /* Target ID. */
+} virtio_scsi_dev_t;
+
+#endif
+
+/* Generic disk information. */
+typedef struct {
+ uint8_t type; /* Device type (ATA/ATAPI/SCSI/none/unknown). */
+ uint8_t device; /* Detected type of attached device (HD/CD/none). */
+ uint8_t removable; /* Removable device flag. */
+ uint8_t lock; /* Lock count for removable devices. */
+ //@todo: ATA specific - move?
+ uint8_t mode; /* Transfer mode: PIO 16/32 bits - IRQ - ISADMA - PCIDMA. */
+ uint8_t translation; /* Type of geometry translation. */
+ uint16_t blksize; /* Disk block size. */
+ chs_t lchs; /* Logical CHS geometry. */
+ chs_t pchs; /* Physical CHS geometry. */
+ uint64_t sectors; /* Total sector count. */
+} disk_dev_t;
+
+/* A structure for passing disk request information around. This structure
+ * is designed for saving stack space. As BIOS requests cannot be overlapped,
+ * one such structure is sufficient.
+ */
+typedef struct {
+ uint64_t lba; /* Starting LBA. */
+ void __far *buffer; /* Read/write data buffer pointer. */
+ uint8_t dev_id; /* Device ID; index into devices array. */
+ uint16_t nsect; /* Number of sectors to be transferred. */
+ uint16_t sect_sz; /* Size of a sector in bytes. */
+ uint16_t cylinder; /* Starting cylinder (CHS only). */
+ uint16_t head; /* Starting head (CHS only). */
+ uint16_t sector; /* Starting sector (CHS only). */
+ uint16_t trsfsectors; /* Actual sectors transferred. */
+ uint32_t trsfbytes; /* Actual bytes transferred. */
+ uint16_t skip_b; /* Bytes to skip before transfer. */
+ uint16_t skip_a; /* Bytes to skip after transfer. */
+} disk_req_t;
+
+extern uint16_t ahci_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t header, uint32_t length, uint8_t inout, char __far *buffer);
+extern uint16_t scsi_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t header, uint32_t length, uint8_t inout, char __far *buffer);
+extern uint16_t ata_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t header, uint32_t length, uint8_t inout, char __far *buffer);
+extern uint16_t virtio_scsi_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t skip_b, 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. */
+# ifdef VBOX_WITH_VIRTIO_SCSI
+ uint16_t virtio_seg; /* Segment of VirtIO data block. */
+# endif
+#endif
+
+#ifdef VBOX_WITH_AHCI
+ /* SATA (AHCI) bus-specific device information. */
+ ahci_dev_t ahcidev[BX_MAX_AHCI_DEVICES];
+ uint8_t ahci_devcnt; /* Number of SATA devices. */
+ uint16_t ahci_seg; /* Segment of AHCI data block. */
+#endif
+
+ dpte_t dpte; /* Buffer for building a DPTE. */
+} bio_dsk_t;
+
+#if BX_ELTORITO_BOOT
+/* El Torito device emulation state. */
+typedef struct {
+ uint8_t active;
+ uint8_t media;
+ uint8_t emulated_drive;
+ uint8_t controller_index;
+ uint16_t device_spec;
+ uint16_t buffer_segment;
+ uint32_t ilba;
+ uint16_t load_segment;
+ uint16_t sector_count;
+ chs_t vdevice; /* Virtual device geometry. */
+} cdemu_t;
+#endif
+
+// for access to EBDA area
+// The EBDA structure should conform to
+// http://www.frontiernet.net/~fys/rombios.htm document
+// I made the ata and cdemu structs begin at 0x121 in the EBDA seg
+/* MS-DOS KEYB.COM may overwrite the word at offset 0x117 in the EBDA
+ * which contains the keyboard ID for PS/2 BIOSes.
+ */
+typedef struct {
+ uint8_t filler1[0x3D];
+
+ fdpt_t fdpt0; /* FDPTs for the first two ATA disks. */
+ fdpt_t fdpt1;
+
+#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);
+
+int __fastcall virtio_scsi_read_sectors(bio_dsk_t __far *bios_dsk);
+int __fastcall virtio_scsi_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..b71a4907
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/eltorito.c
@@ -0,0 +1,1028 @@
+/* $Id: eltorito.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include <string.h>
+#include "inlines.h"
+#include "biosint.h"
+#include "ebda.h"
+#include "ata.h"
+
+#if DEBUG_ELTORITO
+# define BX_DEBUG_INT13_ET(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT13_ET(...)
+#endif
+
+#if DEBUG_INT13_CD
+# define BX_DEBUG_INT13_CD(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT13_CD(...)
+#endif
+
+#if DEBUG_CD_BOOT
+# define BX_DEBUG_ELTORITO(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_ELTORITO(...)
+#endif
+
+
+/// @todo put in a header
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define ELDX r.gr.u.r16.sp
+#define DS r.ds
+#define ES r.es
+#define FLAGS r.ra.flags.u.r16.flags
+
+#pragma pack(1)
+
+/* READ_10/WRITE_10 CDB padded to 12 bytes for ATAPI. */
+typedef struct {
+ uint16_t command; /* Command. */
+ uint32_t lba; /* LBA, MSB first! */
+ uint8_t pad1; /* Unused. */
+ uint16_t nsect; /* Sector count, MSB first! */
+ uint8_t pad2[3]; /* Unused. */
+} cdb_atapi;
+
+#pragma pack()
+
+ct_assert(sizeof(cdb_atapi) == 12);
+
+/* Generic ATAPI/SCSI CD-ROM access routine signature. */
+typedef uint16_t (* cd_pkt_func)(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t header, uint32_t length, uint8_t inout, char __far *buffer);
+
+/* Pointers to HW specific CD-ROM access routines. */
+cd_pkt_func pktacc[DSKTYP_CNT] = {
+ [DSK_TYPE_ATAPI] = { ata_cmd_packet },
+#ifdef VBOX_WITH_AHCI
+ [DSK_TYPE_AHCI] = { ahci_cmd_packet },
+#endif
+#ifdef VBOX_WITH_SCSI
+ [DSK_TYPE_SCSI] = { scsi_cmd_packet },
+#endif
+#ifdef VBOX_WITH_VIRTIO_SCSI
+ [DSK_TYPE_VIRTIO_SCSI] = { virtio_scsi_cmd_packet },
+#endif
+};
+
+#if defined(VBOX_WITH_AHCI) || defined(VBOX_WITH_SCSI)
+uint16_t dummy_soft_reset(uint16_t device_id)
+{
+ return 0;
+}
+#endif
+
+/* Generic reset routine signature. */
+typedef uint16_t (* cd_rst_func)(uint16_t device_id);
+
+/* Pointers to HW specific CD-ROM reset routines. */
+cd_rst_func softrst[DSKTYP_CNT] = {
+ [DSK_TYPE_ATAPI] = { ata_soft_reset },
+#ifdef VBOX_WITH_AHCI
+ [DSK_TYPE_AHCI] = { dummy_soft_reset },
+#endif
+#ifdef VBOX_WITH_SCSI
+ [DSK_TYPE_SCSI] = { dummy_soft_reset },
+#endif
+};
+
+
+// ---------------------------------------------------------------------------
+// Start of El-Torito boot functions
+// ---------------------------------------------------------------------------
+
+// !! TODO !! convert EBDA accesses to far pointers
+
+extern int diskette_param_table;
+
+void BIOSCALL cdemu_init(void)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+
+ // the only important data is this one for now
+ write_byte(ebda_seg,(uint16_t)&EbdaData->cdemu.active, 0x00);
+}
+
+uint8_t BIOSCALL cdemu_isactive(void)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+
+ return read_byte(ebda_seg,(uint16_t)&EbdaData->cdemu.active);
+}
+
+uint8_t BIOSCALL cdemu_emulated_drive(void)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+
+ return read_byte(ebda_seg,(uint16_t)&EbdaData->cdemu.emulated_drive);
+}
+
+// ---------------------------------------------------------------------------
+// Start of int13 for eltorito functions
+// ---------------------------------------------------------------------------
+
+void BIOSCALL int13_eltorito(disk_regs_t r)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ cdemu_t __far *cdemu;
+
+ cdemu = ebda_seg :> &EbdaData->cdemu;
+
+
+ BX_DEBUG_INT13_ET("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES);
+ // BX_DEBUG_INT13_ET("%s: SS=%04x DS=%04x ES=%04x DI=%04x SI=%04x\n", __func__, get_SS(), DS, ES, DI, SI);
+
+ switch (GET_AH()) {
+
+ // FIXME ElTorito Various. Not implemented in many real BIOSes.
+ case 0x4a: // ElTorito - Initiate disk emu
+ case 0x4c: // ElTorito - Initiate disk emu and boot
+ case 0x4d: // ElTorito - Return Boot catalog
+ BX_INFO("%s: call with AX=%04x not implemented.\n", __func__, AX);
+ goto int13_fail;
+ break;
+
+ case 0x4b: // ElTorito - Terminate disk emu
+ // FIXME ElTorito Hardcoded
+ /// @todo maybe our cdemu struct should match El Torito to allow memcpy()?
+ write_byte(DS,SI+0x00,0x13);
+ write_byte(DS,SI+0x01,cdemu->media);
+ write_byte(DS,SI+0x02,cdemu->emulated_drive);
+ write_byte(DS,SI+0x03,cdemu->controller_index);
+ write_dword(DS,SI+0x04,cdemu->ilba);
+ write_word(DS,SI+0x08,cdemu->device_spec);
+ write_word(DS,SI+0x0a,cdemu->buffer_segment);
+ write_word(DS,SI+0x0c,cdemu->load_segment);
+ write_word(DS,SI+0x0e,cdemu->sector_count);
+ write_byte(DS,SI+0x10,cdemu->vdevice.cylinders);
+ write_byte(DS,SI+0x11,cdemu->vdevice.spt);
+ write_byte(DS,SI+0x12,cdemu->vdevice.heads);
+
+ // If we have to terminate emulation
+ if(GET_AL() == 0x00) {
+ // FIXME ElTorito Various. Should be handled accordingly to spec
+ cdemu->active = 0; // bye bye
+ }
+
+ goto int13_success;
+ break;
+
+ default:
+ BX_INFO("%s: unsupported AH=%02x\n", __func__, GET_AH());
+ goto int13_fail;
+ break;
+ }
+
+int13_fail:
+ SET_AH(0x01); // defaults to invalid function in AH or invalid parameter
+ SET_DISK_RET_STATUS(GET_AH());
+ SET_CF(); // error occurred
+ return;
+
+int13_success:
+ SET_AH(0x00); // no error
+ SET_DISK_RET_STATUS(0x00);
+ CLEAR_CF(); // no error
+ return;
+}
+
+// ---------------------------------------------------------------------------
+// End of int13 for eltorito functions
+// ---------------------------------------------------------------------------
+
+/* Utility routine to check if a device is a CD-ROM. */
+/// @todo this function is kinda useless as the ATAPI type check is obsolete.
+static uint16_t device_is_cdrom(uint8_t device)
+{
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ if (device >= BX_MAX_STORAGE_DEVICES)
+ return 0;
+
+// if (bios_dsk->devices[device].type != DSK_TYPE_ATAPI)
+// return 0;
+
+ if (bios_dsk->devices[device].device != DSK_DEVICE_CDROM)
+ return 0;
+
+ return 1;
+}
+
+// ---------------------------------------------------------------------------
+// End of ATA/ATAPI generic functions
+// ---------------------------------------------------------------------------
+static const char isotag[]="CD001";
+static const char eltorito[]="EL TORITO SPECIFICATION";
+//
+// Returns ah: emulated drive, al: error code
+//
+uint16_t cdrom_boot(void)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint8_t buffer[2048];
+ cdb_atapi atapicmd;
+ uint32_t lba;
+ uint16_t boot_segment, nbsectors, i, error;
+ uint8_t device;
+ uint8_t read_try;
+ cdemu_t __far *cdemu;
+ bio_dsk_t __far *bios_dsk;
+
+ cdemu = ebda_seg :> &EbdaData->cdemu;
+ bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+ /* Find the first CD-ROM. */
+ for (device = 0; device < BX_MAX_STORAGE_DEVICES; ++device) {
+ if (device_is_cdrom(device))
+ break;
+ }
+
+ /* Fail if not found. */
+ if (device >= BX_MAX_STORAGE_DEVICES)
+ return 2;
+
+ /* Read the Boot Record Volume Descriptor (BRVD). */
+ _fmemset(&atapicmd, 0, sizeof(atapicmd));
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(0x11);
+ atapicmd.nsect = swap_16(1);
+
+ bios_dsk->drqp.nsect = 1;
+ bios_dsk->drqp.sect_sz = 2048;
+
+ for (read_try = 0; read_try <= 4; ++read_try)
+ {
+ error = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, 2048L, ATA_DATA_IN, &buffer);
+ if (!error)
+ break;
+ }
+ if (error)
+ return 3;
+
+ /* Check for a valid BRVD. */
+ if (buffer[0] != 0)
+ return 4;
+ /// @todo what's wrong with memcmp()?
+ for (i = 0; i < 5; ++i) {
+ if (buffer[1+i] != isotag[i])
+ return 5;
+ }
+ for (i = 0; i < 23; ++i)
+ if (buffer[7+i] != eltorito[i])
+ return 6;
+
+ // ok, now we calculate the Boot catalog address
+ lba = *((uint32_t *)&buffer[0x47]);
+ BX_DEBUG_ELTORITO("BRVD at LBA %lx\n", lba);
+
+ /* Now we read the Boot Catalog. */
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(lba);
+ atapicmd.nsect = swap_16(1);
+
+#if 0 // Not necessary as long as previous values are reused
+ bios_dsk->drqp.nsect = 1;
+ bios_dsk->drqp.sect_sz = 512;
+#endif
+
+ error = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, 2048L, ATA_DATA_IN, &buffer);
+ if (error != 0)
+ return 7;
+
+ /// @todo Define a struct for the Boot Catalog, the hardcoded offsets are so dumb...
+
+ /* Check if the Boot Catalog looks valid. */
+ if (buffer[0x00] != 0x01)
+ return 8; // Header
+ if (buffer[0x01] != 0x00)
+ return 9; // Platform
+ if (buffer[0x1E] != 0x55)
+ return 10; // key 1
+ if (buffer[0x1F] != 0xAA)
+ return 10; // key 2
+
+ // Initial/Default Entry
+ if (buffer[0x20] != 0x88)
+ return 11; // Bootable
+
+ cdemu->media = buffer[0x21];
+ if (buffer[0x21] == 0) {
+ // FIXME ElTorito Hardcoded. cdrom is hardcoded as device 0xE0.
+ // Win2000 cd boot needs to know it booted from cd
+ cdemu->emulated_drive = 0xE0;
+ }
+ else if (buffer[0x21] < 4)
+ cdemu->emulated_drive = 0x00;
+ else
+ cdemu->emulated_drive = 0x80;
+
+ cdemu->controller_index = device / 2;
+ cdemu->device_spec = device % 2;
+
+ boot_segment = *((uint16_t *)&buffer[0x22]);
+ if (boot_segment == 0)
+ boot_segment = 0x07C0;
+
+ cdemu->load_segment = boot_segment;
+ cdemu->buffer_segment = 0x0000;
+
+ nbsectors = ((uint16_t *)buffer)[0x26 / 2];
+ cdemu->sector_count = nbsectors;
+
+ /* Sanity check the sector count. In incorrectly mastered CDs, it might
+ * be zero. If it's more than 512K, reject it as well.
+ */
+ if (nbsectors == 0 || nbsectors > 1024)
+ return 12;
+
+ lba = *((uint32_t *)&buffer[0x28]);
+ cdemu->ilba = lba;
+
+ BX_DEBUG_ELTORITO("Emulate drive %02x, type %02x, LBA %lu\n",
+ cdemu->emulated_drive, cdemu->media, cdemu->ilba);
+
+ /* Read the disk image's boot sector into memory. */
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(lba);
+ atapicmd.nsect = swap_16(1 + (nbsectors - 1) / 4);
+
+ bios_dsk->drqp.nsect = 1 + (nbsectors - 1) / 4;
+ bios_dsk->drqp.sect_sz = 512;
+
+ bios_dsk->drqp.skip_a = (2048 - nbsectors * 512) % 2048;
+
+ error = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, nbsectors*512L, ATA_DATA_IN, MK_FP(boot_segment,0));
+
+ bios_dsk->drqp.skip_a = 0;
+
+ if (error != 0)
+ return 13;
+
+ BX_DEBUG_ELTORITO("Emulate drive %02x, type %02x, LBA %lu\n",
+ cdemu->emulated_drive, cdemu->media, cdemu->ilba);
+ /* Set up emulated drive geometry based on the media type. */
+ switch (cdemu->media) {
+ case 0x01: /* 1.2M floppy */
+ cdemu->vdevice.spt = 15;
+ cdemu->vdevice.cylinders = 80;
+ cdemu->vdevice.heads = 2;
+ break;
+ case 0x02: /* 1.44M floppy */
+ cdemu->vdevice.spt = 18;
+ cdemu->vdevice.cylinders = 80;
+ cdemu->vdevice.heads = 2;
+ break;
+ case 0x03: /* 2.88M floppy */
+ cdemu->vdevice.spt = 36;
+ cdemu->vdevice.cylinders = 80;
+ cdemu->vdevice.heads = 2;
+ break;
+ case 0x04: /* Hard disk */
+ cdemu->vdevice.spt = read_byte(boot_segment,446+6)&0x3f;
+ cdemu->vdevice.cylinders = ((read_byte(boot_segment,446+6)&~0x3f)<<2) + read_byte(boot_segment,446+7) + 1;
+ cdemu->vdevice.heads = read_byte(boot_segment,446+5) + 1;
+ break;
+ }
+ BX_DEBUG_ELTORITO("VCHS=%u/%u/%u\n", cdemu->vdevice.cylinders,
+ cdemu->vdevice.heads, cdemu->vdevice.spt);
+
+ if (cdemu->media != 0) {
+ /* Increase BIOS installed number of drives (floppy or fixed). */
+ if (cdemu->emulated_drive == 0x00)
+ write_byte(0x40,0x10,read_byte(0x40,0x10)|0x41);
+ else
+ write_byte(ebda_seg,(uint16_t)&EbdaData->bdisk.hdcount, read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdcount) + 1);
+ }
+
+ // everything is ok, so from now on, the emulation is active
+ if (cdemu->media != 0)
+ cdemu->active = 0x01;
+
+ // return the boot drive + no error
+ return (cdemu->emulated_drive*0x100)+0;
+}
+
+// ---------------------------------------------------------------------------
+// End of El-Torito boot functions
+// ---------------------------------------------------------------------------
+
+// ---------------------------------------------------------------------------
+// Start of int13 when emulating a device from the cd
+// ---------------------------------------------------------------------------
+
+void BIOSCALL int13_cdemu(disk_regs_t r)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint8_t device, status;
+ uint16_t vheads, vspt, vcylinders;
+ uint16_t head, sector, cylinder, nbsectors;
+ uint32_t vlba, ilba, slba, elba;
+ uint16_t before, segment, offset;
+ cdb_atapi atapicmd;
+ cdemu_t __far *cdemu;
+ bio_dsk_t __far *bios_dsk;
+ int13ext_t __far *i13x;
+ uint32_t lba;
+ uint16_t count;
+
+ cdemu = ebda_seg :> &EbdaData->cdemu;
+ bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+ BX_DEBUG_INT13_ET("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES);
+
+ /* at this point, we are emulating a floppy/harddisk */
+
+ // Recompute the device number
+ device = cdemu->controller_index * 2;
+ device += cdemu->device_spec;
+
+ SET_DISK_RET_STATUS(0x00);
+
+ /* basic checks : emulation should be active, dl should equal the emulated drive */
+ if (!cdemu->active || (cdemu->emulated_drive != GET_DL())) {
+ BX_INFO("%s: function %02x, emulation not active for DL= %02x\n", __func__, GET_AH(), GET_DL());
+ goto int13_fail;
+ }
+
+ switch (GET_AH()) {
+
+ case 0x00: /* disk controller reset */
+ if (pktacc[bios_dsk->devices[device].type])
+ {
+ status = softrst[bios_dsk->devices[device].type](device);
+ }
+ goto int13_success;
+ break;
+ // all those functions return SUCCESS
+ case 0x09: /* initialize drive parameters */
+ case 0x0c: /* seek to specified cylinder */
+ case 0x0d: /* alternate disk reset */ // FIXME ElTorito Various. should really reset ?
+ case 0x10: /* check drive ready */ // FIXME ElTorito Various. should check if ready ?
+ case 0x11: /* recalibrate */
+ case 0x14: /* controller internal diagnostic */
+ case 0x16: /* detect disk change */
+ goto int13_success;
+ break;
+
+ // all those functions return disk write-protected
+ case 0x03: /* write disk sectors */
+ case 0x05: /* format disk track */
+ SET_AH(0x03);
+ goto int13_fail_noah;
+ break;
+
+ case 0x01: /* read disk status */
+ status=read_byte(0x0040, 0x0074);
+ SET_AH(status);
+ SET_DISK_RET_STATUS(0);
+
+ /* set CF if error status read */
+ if (status)
+ goto int13_fail_nostatus;
+ else
+ goto int13_success_noah;
+ break;
+
+ case 0x02: // read disk sectors
+ case 0x04: // verify disk sectors
+ vspt = cdemu->vdevice.spt;
+ vcylinders = cdemu->vdevice.cylinders;
+ vheads = cdemu->vdevice.heads;
+ ilba = cdemu->ilba;
+
+ sector = GET_CL() & 0x003f;
+ cylinder = (GET_CL() & 0x00c0) << 2 | GET_CH();
+ head = GET_DH();
+ nbsectors = GET_AL();
+ segment = ES;
+ offset = BX;
+
+ BX_DEBUG_INT13_ET("%s: read to %04x:%04x @ VCHS %u/%u/%u (%u sectors)\n", __func__,
+ ES, BX, cylinder, head, sector, nbsectors);
+
+ // no sector to read ?
+ if(nbsectors==0)
+ goto int13_success;
+
+ // sanity checks sco openserver needs this!
+ if ((sector > vspt)
+ || (cylinder >= vcylinders)
+ || (head >= vheads)) {
+ goto int13_fail;
+ }
+
+ // After validating the input, verify does nothing
+ if (GET_AH() == 0x04)
+ goto int13_success;
+
+ segment = ES+(BX / 16);
+ offset = BX % 16;
+
+ // calculate the virtual lba inside the image
+ vlba=((((uint32_t)cylinder*(uint32_t)vheads)+(uint32_t)head)*(uint32_t)vspt)+((uint32_t)(sector-1));
+
+ // In advance so we don't lose the count
+ SET_AL(nbsectors);
+
+ // start lba on cd
+ slba = (uint32_t)vlba / 4;
+ before = (uint32_t)vlba % 4;
+
+ // end lba on cd
+ elba = (uint32_t)(vlba + nbsectors - 1) / 4;
+
+ _fmemset(&atapicmd, 0, sizeof(atapicmd));
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(ilba + slba);
+ atapicmd.nsect = swap_16(elba - slba + 1);
+
+ bios_dsk->drqp.nsect = nbsectors;
+ bios_dsk->drqp.sect_sz = 512;
+
+ bios_dsk->drqp.skip_b = before * 512;
+ bios_dsk->drqp.skip_a = ((4 - nbsectors % 4 - before) * 512) % 2048;
+
+ status = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, before*512, nbsectors*512L, ATA_DATA_IN, MK_FP(segment,offset));
+
+ bios_dsk->drqp.skip_b = 0;
+ bios_dsk->drqp.skip_a = 0;
+
+ if (status != 0) {
+ BX_INFO("%s: function %02x, error %02x !\n", __func__, GET_AH(), status);
+ SET_AH(0x02);
+ SET_AL(0);
+ goto int13_fail_noah;
+ }
+
+ goto int13_success;
+ break;
+
+ case 0x08: /* read disk drive parameters */
+ vspt = cdemu->vdevice.spt;
+ vcylinders = cdemu->vdevice.cylinders - 1;
+ vheads = cdemu->vdevice.heads - 1;
+
+ SET_AL( 0x00 );
+ SET_BL( 0x00 );
+ SET_CH( vcylinders & 0xff );
+ SET_CL((( vcylinders >> 2) & 0xc0) | ( vspt & 0x3f ));
+ SET_DH( vheads );
+ SET_DL( 0x02 ); // FIXME ElTorito Various. should send the real count of drives 1 or 2
+ // FIXME ElTorito Harddisk. should send the HD count
+
+ switch (cdemu->media) {
+ case 0x01: SET_BL( 0x02 ); break; /* 1.2 MB */
+ case 0x02: SET_BL( 0x04 ); break; /* 1.44 MB */
+ case 0x03: SET_BL( 0x05 ); break; /* 2.88 MB */
+ }
+
+ /* Only set the DPT pointer for emulated floppies. */
+ if (cdemu->media < 4) {
+ DI = (uint16_t)&diskette_param_table; /// @todo should this depend on emulated medium?
+ ES = 0xF000; /// @todo how to make this relocatable?
+ }
+ goto int13_success;
+ break;
+
+ case 0x15: /* read disk drive size */
+ // FIXME ElTorito Harddisk. What geometry to send ?
+ SET_AH(0x03);
+ goto int13_success_noah;
+ break;
+
+ case 0x41: // IBM/MS installation check
+ BX = 0xaa55; // install check
+ SET_AH(0x30); // EDD 2.1
+ CX = 0x0007; // ext disk access, removable and edd
+ goto int13_success_noah;
+ break;
+
+ case 0x42: // IBM/MS extended read
+ case 0x44: // IBM/MS verify sectors
+ case 0x47: // IBM/MS extended seek
+
+ /* Load the I13X struct pointer. */
+ i13x = MK_FP(DS, SI);
+
+ count = i13x->count;
+ segment = i13x->segment;
+ offset = i13x->offset;
+
+ // Can't use 64 bits lba
+ lba = i13x->lba2;
+ if (lba != 0L) {
+ BX_PANIC("%s: function %02x. Can't use 64bits lba\n", __func__, GET_AH());
+ goto int13_fail;
+ }
+
+ // Get 32 bits lba
+ lba = i13x->lba1;
+
+ // If verify or seek
+ if (( GET_AH() == 0x44 ) || ( GET_AH() == 0x47 ))
+ goto int13_success;
+
+ BX_DEBUG_INT13_ET("%s: read %u sectors @ LBA %lu to %04X:%04X\n",
+ __func__, count, lba, segment, offset);
+
+ nbsectors = count;
+ vlba = lba;
+ ilba = cdemu->ilba;
+
+ // start lba on cd
+ slba = (uint32_t)vlba / 4;
+ before = (uint32_t)vlba % 4;
+
+ // end lba on cd
+ elba = (uint32_t)(vlba + nbsectors - 1) / 4;
+
+ _fmemset(&atapicmd, 0, sizeof(atapicmd));
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(ilba + slba);
+ atapicmd.nsect = swap_16(elba - slba + 1);
+
+ bios_dsk->drqp.skip_b = before * 512;
+ bios_dsk->drqp.skip_a = ((4 - nbsectors % 4 - before) * 512) % 2048;
+
+ status = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, before*512, nbsectors*512L, ATA_DATA_IN, MK_FP(segment,offset));
+
+ bios_dsk->drqp.skip_b = 0;
+ bios_dsk->drqp.skip_a = 0;
+
+ count = (uint16_t)(bios_dsk->drqp.trsfbytes >> 9);
+ i13x->count = count;
+
+ if (status != 0) {
+ BX_INFO("%s: function %02x, status %02x !\n", __func__, GET_AH(), status);
+ SET_AH(0x0c);
+ goto int13_fail_noah;
+ }
+
+ goto int13_success;
+ break;
+
+ case 0x48: // IBM/MS get drive parameters
+ if (edd_fill_dpt(DS :> (dpt_t *)SI, bios_dsk, device))
+ goto int13_fail;
+ else
+ goto int13_success;
+ break;
+
+ // all those functions return unimplemented
+ case 0x0a: /* read disk sectors with ECC */
+ case 0x0b: /* write disk sectors with ECC */
+ case 0x18: /* set media type for format */
+ case 0x43: // IBM/MS extended write
+ case 0x45: // IBM/MS lock/unlock drive
+ case 0x46: // IBM/MS eject media
+ case 0x49: // IBM/MS extended media change
+ case 0x4e: // ? - set hardware configuration
+ case 0x50: // ? - send packet command
+ default:
+ BX_INFO("%s: function AH=%02x unsupported, returns fail\n", __func__, GET_AH());
+ goto int13_fail;
+ break;
+ }
+
+int13_fail:
+ SET_AH(0x01); // defaults to invalid function in AH or invalid parameter
+int13_fail_noah:
+ SET_DISK_RET_STATUS(GET_AH());
+int13_fail_nostatus:
+ SET_CF(); // error occurred
+ return;
+
+int13_success:
+ SET_AH(0x00); // no error
+int13_success_noah:
+ SET_DISK_RET_STATUS(0x00);
+ CLEAR_CF(); // no error
+ return;
+}
+
+// ---------------------------------------------------------------------------
+// Start of int13 for cdrom
+// ---------------------------------------------------------------------------
+
+void BIOSCALL int13_cdrom(uint16_t EHBX, disk_regs_t r)
+{
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+ uint8_t device, status, locks;
+ cdb_atapi atapicmd;
+ uint32_t lba;
+ uint16_t count, segment, offset;
+ bio_dsk_t __far *bios_dsk;
+ int13ext_t __far *i13x;
+
+ bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+ BX_DEBUG_INT13_CD("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES);
+
+ SET_DISK_RET_STATUS(0x00);
+
+ /* basic check : device should be 0xE0+ */
+ if( (GET_ELDL() < 0xE0) || (GET_ELDL() >= 0xE0 + BX_MAX_STORAGE_DEVICES) ) {
+ BX_DEBUG("%s: function %02x, ELDL out of range %02x\n", __func__, GET_AH(), GET_ELDL());
+ goto int13_fail;
+ }
+
+ // Get the ata channel
+ device = bios_dsk->cdidmap[GET_ELDL()-0xE0];
+
+ /* basic check : device has to be valid */
+ if (device >= BX_MAX_STORAGE_DEVICES) {
+ BX_DEBUG("%s: function %02x, unmapped device for ELDL=%02x\n", __func__, GET_AH(), GET_ELDL());
+ goto int13_fail;
+ }
+
+ switch (GET_AH()) {
+
+ // all those functions return SUCCESS
+ case 0x00: /* disk controller reset */
+ case 0x09: /* initialize drive parameters */
+ case 0x0c: /* seek to specified cylinder */
+ case 0x0d: /* alternate disk reset */
+ case 0x10: /* check drive ready */
+ case 0x11: /* recalibrate */
+ case 0x14: /* controller internal diagnostic */
+ case 0x16: /* detect disk change */
+ goto int13_success;
+ break;
+
+ // all those functions return disk write-protected
+ case 0x03: /* write disk sectors */
+ case 0x05: /* format disk track */
+ case 0x43: // IBM/MS extended write
+ SET_AH(0x03);
+ goto int13_fail_noah;
+ break;
+
+ case 0x01: /* read disk status */
+ status = read_byte(0x0040, 0x0074);
+ SET_AH(status);
+ SET_DISK_RET_STATUS(0);
+
+ /* set CF if error status read */
+ if (status)
+ goto int13_fail_nostatus;
+ else
+ goto int13_success_noah;
+ break;
+
+ case 0x15: /* read disk drive size */
+ SET_AH(0x02);
+ goto int13_fail_noah;
+ break;
+
+ case 0x41: // IBM/MS installation check
+ BX = 0xaa55; // install check
+ SET_AH(0x30); // EDD 2.1
+ CX = 0x0007; // ext disk access, removable and edd
+ goto int13_success_noah;
+ break;
+
+ case 0x42: // IBM/MS extended read
+ case 0x44: // IBM/MS verify sectors
+ case 0x47: // IBM/MS extended seek
+
+ /* Load the I13X struct pointer. */
+ i13x = MK_FP(DS, SI);
+
+ count = i13x->count;
+ segment = i13x->segment;
+ offset = i13x->offset;
+
+ // Can't use 64 bits lba
+ lba = i13x->lba2;
+ if (lba != 0L) {
+ BX_PANIC("%s: function %02x. Can't use 64bits lba\n", __func__, GET_AH());
+ goto int13_fail;
+ }
+
+ // Get 32 bits lba
+ lba = i13x->lba1;
+
+ // If verify or seek
+ if (( GET_AH() == 0x44 ) || ( GET_AH() == 0x47 ))
+ goto int13_success;
+
+ BX_DEBUG_INT13_CD("%s: read %u sectors @ LBA %lu to %04X:%04X\n",
+ __func__, count, lba, segment, offset);
+
+ _fmemset(&atapicmd, 0, sizeof(atapicmd));
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(lba);
+ atapicmd.nsect = swap_16(count);
+
+ bios_dsk->drqp.nsect = count;
+ bios_dsk->drqp.sect_sz = 2048;
+
+ status = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, count*2048L, ATA_DATA_IN, MK_FP(segment,offset));
+
+ count = (uint16_t)(bios_dsk->drqp.trsfbytes >> 11);
+ i13x->count = count;
+
+ if (status != 0) {
+ BX_INFO("%s: function %02x, status %02x !\n", __func__, GET_AH(), status);
+ SET_AH(0x0c);
+ goto int13_fail_noah;
+ }
+
+ goto int13_success;
+ break;
+
+ case 0x45: // IBM/MS lock/unlock drive
+ if (GET_AL() > 2)
+ goto int13_fail;
+
+ locks = bios_dsk->devices[device].lock;
+
+ switch (GET_AL()) {
+ case 0 : // lock
+ if (locks == 0xff) {
+ SET_AH(0xb4);
+ SET_AL(1);
+ goto int13_fail_noah;
+ }
+ bios_dsk->devices[device].lock = ++locks;
+ SET_AL(1);
+ break;
+ case 1 : // unlock
+ if (locks == 0x00) {
+ SET_AH(0xb0);
+ SET_AL(0);
+ goto int13_fail_noah;
+ }
+ bios_dsk->devices[device].lock = --locks;
+ SET_AL(locks==0?0:1);
+ break;
+ case 2 : // status
+ SET_AL(locks==0?0:1);
+ break;
+ }
+ goto int13_success;
+ break;
+
+ case 0x46: // IBM/MS eject media
+ locks = bios_dsk->devices[device].lock;
+
+ if (locks != 0) {
+ SET_AH(0xb1); // media locked
+ goto int13_fail_noah;
+ }
+ // FIXME should handle 0x31 no media in device
+ // FIXME should handle 0xb5 valid request failed
+
+#if 0 /// @todo implement!
+ // Call removable media eject
+ ASM_START
+ push bp
+ mov bp, sp
+
+ mov ah, #0x52
+ int #0x15
+ mov _int13_cdrom.status + 2[bp], ah
+ jnc int13_cdrom_rme_end
+ mov _int13_cdrom.status, #1
+int13_cdrom_rme_end:
+ pop bp
+ ASM_END
+#endif
+
+ if (status != 0) {
+ SET_AH(0xb1); // media locked
+ goto int13_fail_noah;
+ }
+
+ goto int13_success;
+ break;
+
+ case 0x48: // IBM/MS get drive parameters
+ if (edd_fill_dpt(DS :> (dpt_t *)SI, bios_dsk, device))
+ goto int13_fail;
+ else
+ goto int13_success;
+ break;
+
+ case 0x49: // IBM/MS extended media change
+ // always send changed ??
+ SET_AH(06);
+ goto int13_fail_nostatus;
+ break;
+
+ case 0x4e: // // IBM/MS set hardware configuration
+ // DMA, prefetch, PIO maximum not supported
+ switch (GET_AL()) {
+ case 0x01:
+ case 0x03:
+ case 0x04:
+ case 0x06:
+ goto int13_success;
+ break;
+ default :
+ goto int13_fail;
+ }
+ break;
+
+ // all those functions return unimplemented
+ case 0x02: /* read sectors */
+ case 0x04: /* verify sectors */
+ case 0x08: /* read disk drive parameters */
+ case 0x0a: /* read disk sectors with ECC */
+ case 0x0b: /* write disk sectors with ECC */
+ case 0x18: /* set media type for format */
+ case 0x50: // ? - send packet command
+ default:
+ BX_INFO("%s: unsupported AH=%02x\n", __func__, GET_AH());
+ goto int13_fail;
+ break;
+ }
+
+int13_fail:
+ SET_AH(0x01); // defaults to invalid function in AH or invalid parameter
+int13_fail_noah:
+ SET_DISK_RET_STATUS(GET_AH());
+int13_fail_nostatus:
+ SET_CF(); // error occurred
+ return;
+
+int13_success:
+ SET_AH(0x00); // no error
+int13_success_noah:
+ SET_DISK_RET_STATUS(0x00);
+ CLEAR_CF(); // no error
+ return;
+}
+
+// ---------------------------------------------------------------------------
+// End of int13 for cdrom
+// ---------------------------------------------------------------------------
+
diff --git a/src/VBox/Devices/PC/BIOS/floppy.c b/src/VBox/Devices/PC/BIOS/floppy.c
new file mode 100644
index 00000000..7da578dd
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/floppy.c
@@ -0,0 +1,1360 @@
+/* $Id: floppy.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "inlines.h"
+#include "biosint.h"
+
+extern uint16_t get_floppy_dpt(uint8_t drive_type);
+
+//////////////////////
+// FLOPPY functions //
+//////////////////////
+
+inline void set_diskette_ret_status(uint8_t value)
+{
+ write_byte(0x0040, 0x0041, value);
+}
+
+void set_diskette_current_cyl(uint8_t drive, uint8_t cyl)
+{
+ if (drive > 1)
+ BX_PANIC("set_diskette_current_cyl: drive > 1\n");
+ write_byte(0x0040, 0x0094+drive, cyl);
+}
+
+#if 1 //BX_SUPPORT_FLOPPY
+
+#if DEBUG_INT13_FL
+# define BX_DEBUG_INT13_FL(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT13_FL(...)
+#endif
+
+#define BX_FLOPPY_ON_CNT 37 /* 2 seconds */
+
+extern int diskette_param_table; /* At a fixed location. */
+
+#ifndef VBOX_WITH_FLOPPY_IRQ_POLLING
+
+/**
+ * Wait for the 7th bit of 0040:003e to be set by int0e_handler.
+ * @returns first 7 bits of byte 0040:003e, interrupts disabled.
+ */
+uint8_t floppy_wait_for_interrupt(void)
+{
+ int_disable();
+ for (;;)
+ {
+ uint8_t val8 = read_byte(0x0040, 0x003e);
+ if (val8 & 0x80)
+ return val8 & ~0x7f;
+ int_enable_hlt_disable();
+ }
+}
+
+/**
+ * Wait for the 7th bit of 0040:003e to be set by int0e_handler or 0040:0040 to
+ * be cleared by the timer, clearing the interrupt flag on success.
+ *
+ * @returns 0 on timeout with interrupts enabled.
+ * All 8 bits at 0040:003e on interrupt with interrupts disabled (i.e.
+ * non-zero), after first clearing the 7th bit at 0040:003e.
+ */
+uint8_t floppy_wait_for_interrupt_or_timeout(void)
+{
+ int_disable();
+ for (;;)
+ {
+ uint8_t val8 = read_byte(0x0040, 0x0040);
+ if (val8 == 0) {
+ int_enable();
+ return 0;
+ }
+
+ val8 = read_byte(0x0040, 0x003e);
+ if (val8 & 0x80) {
+ write_byte(0x0040, 0x003e, val8 & 0x7f);
+ return val8;
+ }
+ int_enable_hlt_disable();
+ }
+}
+
+#endif /* !VBOX_WITH_FLOPPY_IRQ_POLLING */
+
+void floppy_reset_controller(uint16_t drive)
+{
+ uint8_t val8;
+
+ // Reset controller
+ val8 = inb(0x03f2);
+ outb(0x03f2, val8 & ~0x04);
+ outb(0x03f2, val8 | 0x04);
+
+ // Wait for controller to come out of reset
+ do {
+ val8 = inb(0x3f4);
+ } while ( (val8 & 0xc0) != 0x80 );
+
+ // Mark media in drive as unknown
+ val8 = read_byte(0x0040, 0x0090 + drive);
+ val8 &= ~0x10;
+ write_byte(0x0040, 0x90 + drive, val8);
+
+}
+
+void floppy_prepare_controller(uint16_t drive)
+{
+ uint8_t val8, dor, prev_reset;
+
+ // set 40:3e bit 7 to 0
+ val8 = read_byte(0x0040, 0x003e);
+ val8 &= 0x7f;
+ write_byte(0x0040, 0x003e, val8);
+
+ // turn on motor of selected drive, DMA & int enabled, normal operation
+ prev_reset = inb(0x03f2) & 0x04;
+ if (drive)
+ dor = 0x20;
+ else
+ dor = 0x10;
+ dor |= 0x0c;
+ dor |= drive;
+ outb(0x03f2, dor);
+
+ // reset the disk motor timeout value of INT 08
+ write_byte(0x0040,0x0040, BX_FLOPPY_ON_CNT);
+
+ // program data rate
+ val8 = read_byte(0x0040, 0x008b);
+ val8 >>= 6;
+ outb(0x03f7, val8);
+
+ // wait for drive readiness
+ do {
+ val8 = inb(0x3f4);
+ } while ( (val8 & 0xc0) != 0x80 );
+
+ if (prev_reset == 0) {
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+ // wait on 40:3e bit 7 to become 1
+ do {
+ val8 = read_byte(0x0040, 0x003e);
+ } while ( (val8 & 0x80) == 0 );
+ val8 &= 0x7f;
+ int_disable();
+#else
+ val8 = floppy_wait_for_interrupt(); /* (7th bit cleared in ret val) */
+#endif
+ write_byte(0x0040, 0x003e, val8);
+ }
+}
+
+bx_bool floppy_media_known(uint16_t drive)
+{
+ uint8_t val8;
+ uint16_t media_state_offset;
+
+ val8 = read_byte(0x0040, 0x003e); // diskette recal status
+ if (drive)
+ val8 >>= 1;
+ val8 &= 0x01;
+ if (val8 == 0)
+ return 0;
+
+ media_state_offset = 0x0090;
+ if (drive)
+ media_state_offset += 1;
+
+ val8 = read_byte(0x0040, media_state_offset);
+ val8 = (val8 >> 4) & 0x01;
+ if (val8 == 0)
+ return 0;
+
+ // checks passed, return KNOWN
+ return 1;
+}
+
+bx_bool floppy_read_id(uint16_t drive)
+{
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ uint8_t val8;
+#endif
+ int i;
+
+ floppy_prepare_controller(drive);
+
+ // send Read ID command (2 bytes) to controller
+ outb(0x03f5, 0x4a); // 4a: Read ID (MFM)
+ outb(0x03f5, drive); // 0=drive0, 1=drive1, head always 0
+
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+
+ // wait on 40:3e bit 7 to become 1
+ do {
+ val8 = (read_byte(0x0040, 0x003e) & 0x80);
+ } while ( val8 == 0 );
+
+ val8 = 0; // separate asm from while() loop
+ // turn off interrupts
+ int_disable();
+#else
+ floppy_wait_for_interrupt();
+#endif
+
+ // read 7 return status bytes from controller
+ for (i = 0; i < 7; ++i)
+ write_byte(0x0040, 0x0042 + i, inb(0x3f5));
+
+ if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0)
+ return 0;
+ else
+ return 1;
+}
+
+bx_bool floppy_drive_recal(uint16_t drive)
+{
+ uint8_t val8;
+ uint16_t curr_cyl_offset;
+
+ floppy_prepare_controller(drive);
+
+ // send Recalibrate command (2 bytes) to controller
+ outb(0x03f5, 0x07); // 07: Recalibrate
+ outb(0x03f5, drive); // 0=drive0, 1=drive1
+
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+
+ // wait on 40:3e bit 7 to become 1
+ do {
+ val8 = (read_byte(0x0040, 0x003e) & 0x80);
+ } while ( val8 == 0 );
+
+ val8 = 0; // separate asm from while() loop
+ // turn off interrupts
+ int_disable();
+
+ // set 40:3e bit 7 to 0, and calibrated bit
+ val8 = read_byte(0x0040, 0x003e);
+ val8 &= 0x7f;
+#else
+ val8 = floppy_wait_for_interrupt(); /* (7th bit cleared in ret val) */
+
+ // set 40:3e bit 7 to 0, and calibrated bit
+#endif
+ if (drive) {
+ val8 |= 0x02; // Drive 1 calibrated
+ curr_cyl_offset = 0x0095;
+ } else {
+ val8 |= 0x01; // Drive 0 calibrated
+ curr_cyl_offset = 0x0094;
+ }
+ write_byte(0x0040, 0x003e, val8);
+ write_byte(0x0040, curr_cyl_offset, 0); // current cylinder is 0
+
+ return 1;
+}
+
+
+bx_bool floppy_media_sense(uint16_t drive)
+{
+ bx_bool retval;
+ uint16_t media_state_offset;
+ uint8_t drive_type, config_data, media_state;
+
+ if (floppy_drive_recal(drive) == 0)
+ return 0;
+
+ // Try the diskette data rates in the following order:
+ // 1 Mbps -> 500 Kbps -> 300 Kbps -> 250 Kbps
+ // The 1 Mbps rate is only tried for 2.88M drives.
+
+ // ** config_data **
+ // Bitfields for diskette media control:
+ // Bit(s) Description (Table M0028)
+ // 7-6 last data rate set by controller
+ // 00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
+ // 5-4 last diskette drive step rate selected
+ // 00=0Ch, 01=0Dh, 10=0Eh, 11=0Ah
+ // 3-2 {data rate at start of operation}
+ // 1-0 reserved
+
+ // ** media_state **
+ // Bitfields for diskette drive media state:
+ // Bit(s) Description (Table M0030)
+ // 7-6 data rate
+ // 00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
+ // 5 double stepping required (e.g. 360kB in 1.2MB)
+ // 4 media type established
+ // 3 drive capable of supporting 4MB media
+ // 2-0 on exit from BIOS, contains
+ // 000 trying 360kB in 360kB
+ // 001 trying 360kB in 1.2MB
+ // 010 trying 1.2MB in 1.2MB
+ // 011 360kB in 360kB established
+ // 100 360kB in 1.2MB established
+ // 101 1.2MB in 1.2MB established
+ // 110 reserved
+ // 111 all other formats/drives
+
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+ if ( drive_type == 1 ) {
+ // 360K 5.25" drive
+ config_data = 0x00; // 0000 0000
+ media_state = 0x15; // 0001 0101
+ retval = 1;
+ }
+ else if ( drive_type == 2 ) {
+ // 1.2 MB 5.25" drive
+ config_data = 0x00; // 0000 0000
+ media_state = 0x35; // 0011 0101 // need double stepping??? (bit 5)
+ retval = 1;
+ }
+ else if ( drive_type == 3 ) {
+ // 720K 3.5" drive
+ config_data = 0x00; // 0000 0000 ???
+ media_state = 0x17; // 0001 0111
+ retval = 1;
+ }
+ else if ( drive_type == 4 ) {
+ // 1.44 MB 3.5" drive
+ config_data = 0x00; // 0000 0000
+ media_state = 0x17; // 0001 0111
+ retval = 1;
+ }
+ else if ( drive_type == 5 ) {
+ // 2.88 MB 3.5" drive
+ config_data = 0xCC; // 1100 1100
+ media_state = 0xD7; // 1101 0111
+ retval = 1;
+ }
+ // Extended floppy size uses special cmos setting
+ else if ( drive_type == 14 || drive_type == 15 ) {
+ // 15.6 MB 3.5" (fake) || 63.5 MB 3.5" (fake) - report same as 2.88 MB.
+ config_data = 0xCC; // 1100 1100
+ media_state = 0xD7; // 1101 0111
+ retval = 1;
+ }
+ else {
+ // not recognized
+ config_data = 0x00; // 0000 0000
+ media_state = 0x00; // 0000 0000
+ retval = 0;
+ }
+
+ write_byte(0x0040, 0x008B, config_data);
+ while (!floppy_read_id(drive)) {
+ if ((config_data & 0xC0) == 0x80) {
+ // If even 250 Kbps failed, we can't do much
+ break;
+ }
+ switch (config_data & 0xC0) {
+ case 0xC0: // 1 Mbps
+ config_data = config_data & 0x3F | 0x00;
+ break;
+ case 0x00: // 500 Kbps
+ config_data = config_data & 0x3F | 0x40;
+ break;
+ case 0x40: // 300 Kbps
+ config_data = config_data & 0x3F | 0x80;
+ break;
+ }
+ write_byte(0x0040, 0x008B, config_data);
+ }
+
+ if (drive == 0)
+ media_state_offset = 0x0090;
+ else
+ media_state_offset = 0x0091;
+ write_byte(0x0040, 0x008B, config_data);
+ write_byte(0x0040, media_state_offset, media_state);
+
+ return retval;
+}
+
+
+bx_bool floppy_drive_exists(uint16_t drive)
+{
+ uint8_t drive_type;
+
+ // check CMOS to see if drive exists
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+ return drive_type != 0;
+}
+
+/// @todo put in a header
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si // not used
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp // not used
+#define ELDX r.gr.u.r16.sp
+#define DS r.ds // not used
+#define ES r.es
+#define FLAGS r.ra.flags.u.r16.flags
+
+void BIOSCALL int13_diskette_function(disk_regs_t r)
+{
+ uint8_t drive, num_sectors, track, sector, head;
+ uint16_t base_address, base_count, base_es;
+ uint8_t page, mode_register, val8, media_state;
+ uint8_t drive_type, num_floppies;
+ uint16_t last_addr;
+ int i;
+
+ BX_DEBUG_INT13_FL("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES);
+
+ SET_IF(); /* INT 13h always returns with interrupts enabled. */
+
+ switch ( GET_AH() ) {
+ case 0x00: // diskette controller reset
+ BX_DEBUG_INT13_FL("floppy f00\n");
+ drive = GET_ELDL();
+ if (drive > 1) {
+ SET_AH(1); // invalid param
+ set_diskette_ret_status(1);
+ SET_CF();
+ return;
+ }
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+ if (drive_type == 0) {
+ SET_AH(0x80); // drive not responding
+ set_diskette_ret_status(0x80);
+ SET_CF();
+ return;
+ }
+
+ // force re-calibration etc.
+ write_byte(0x0040, 0x003e, 0);
+
+ SET_AH(0);
+ set_diskette_ret_status(0);
+ CLEAR_CF(); // successful
+ set_diskette_current_cyl(drive, 0); // current cylinder
+ return;
+
+ case 0x01: // Read Diskette Status
+ CLEAR_CF();
+ val8 = read_byte(0x0000, 0x0441);
+ SET_AH(val8);
+ if (val8) {
+ SET_CF();
+ }
+ return;
+
+ case 0x02: // Read Diskette Sectors
+ case 0x03: // Write Diskette Sectors
+ case 0x04: // Verify Diskette Sectors
+ num_sectors = GET_AL();
+ track = GET_CH();
+ sector = GET_CL();
+ head = GET_DH();
+ drive = GET_ELDL();
+
+ if ( (drive > 1) || (head > 1) ||
+ (num_sectors == 0) || (num_sectors > 72) ) {
+ BX_INFO("%s: drive>1 || head>1 ...\n", __func__);
+ SET_AH(1);
+ set_diskette_ret_status(1);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+ // see if drive exists
+ if (floppy_drive_exists(drive) == 0) {
+ BX_DEBUG_INT13_FL("failed (not ready)\n");
+ SET_AH(0x80); // not responding
+ set_diskette_ret_status(0x80);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+ // see if media in drive, and type is known
+ if (floppy_media_known(drive) == 0) {
+ if (floppy_media_sense(drive) == 0) {
+ BX_DEBUG_INT13_FL("media not found\n");
+ SET_AH(0x0C); // Media type not found
+ set_diskette_ret_status(0x0C);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+ }
+
+ if (GET_AH() == 0x02) {
+ // Read Diskette Sectors
+
+ //-----------------------------------
+ // set up DMA controller for transfer
+ //-----------------------------------
+
+ // es:bx = pointer to where to place information from diskette
+ // port 04: DMA-1 base and current address, channel 2
+ // port 05: DMA-1 base and current count, channel 2
+ /// @todo merge/factor out pointer normalization
+ page = (ES >> 12); // upper 4 bits
+ base_es = (ES << 4); // lower 16bits contributed by ES
+ base_address = base_es + BX; // lower 16 bits of address
+ // contributed by ES:BX
+ if ( base_address < base_es ) {
+ // in case of carry, adjust page by 1
+ page++;
+ }
+ base_count = (num_sectors * 512) - 1;
+
+ // check for 64K boundary overrun
+ last_addr = base_address + base_count;
+ if (last_addr < base_address) {
+ SET_AH(0x09);
+ set_diskette_ret_status(0x09);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+ BX_DEBUG_INT13_FL("masking DMA-1 c2\n");
+ outb(0x000a, 0x06);
+
+ BX_DEBUG_INT13_FL("clear flip-flop\n");
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0004, base_address);
+ outb(0x0004, base_address>>8);
+ BX_DEBUG_INT13_FL("clear flip-flop\n");
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0005, base_count);
+ outb(0x0005, base_count>>8);
+ BX_DEBUG_INT13_FL("xfer buf %x bytes at %x:%x\n",
+ base_count + 1, page, base_address);
+
+ // port 0b: DMA-1 Mode Register
+ mode_register = 0x46; // single mode, increment, autoinit disable,
+ // transfer type=write, channel 2
+ BX_DEBUG_INT13_FL("setting mode register\n");
+ outb(0x000b, mode_register);
+
+ BX_DEBUG_INT13_FL("setting page register\n");
+ // port 81: DMA-1 Page Register, channel 2
+ outb(0x0081, page);
+
+ BX_DEBUG_INT13_FL("unmasking DMA-1 c2\n");
+ outb(0x000a, 0x02); // unmask channel 2
+
+ //--------------------------------------
+ // set up floppy controller for transfer
+ //--------------------------------------
+ floppy_prepare_controller(drive);
+
+ // send read-normal-data command (9 bytes) to controller
+ outb(0x03f5, 0xe6); // e6: read normal data
+ outb(0x03f5, (head << 2) | drive); // HD DR1 DR2
+ outb(0x03f5, track);
+ outb(0x03f5, head);
+ outb(0x03f5, sector);
+ outb(0x03f5, 2); // 512 byte sector size
+ outb(0x03f5, sector + num_sectors - 1); // last sector to read on track
+ outb(0x03f5, 0); // Gap length
+ outb(0x03f5, 0xff); // Gap length
+ BX_DEBUG_INT13_FL("read initiated\n");
+
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+
+ // wait on 40:3e bit 7 to become 1 or timeout (latter isn't armed so it won't happen)
+ do {
+ val8 = read_byte(0x0040, 0x0040);
+ if (val8 == 0) {
+ BX_DEBUG_INT13_FL("failed (not ready)\n");
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+ val8 = (read_byte(0x0040, 0x003e) & 0x80);
+ } while ( val8 == 0 );
+
+ val8 = 0; // separate asm from while() loop
+ // turn off interrupts
+ int_disable();
+
+ // set 40:3e bit 7 to 0
+ val8 = read_byte(0x0040, 0x003e);
+ val8 &= 0x7f;
+ write_byte(0x0040, 0x003e, val8);
+
+#else
+ val8 = floppy_wait_for_interrupt_or_timeout();
+ if (val8 == 0) { /* Note! Interrupts enabled in this branch. */
+ BX_DEBUG_INT13_FL("failed (not ready)\n");
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+#endif
+
+ // check port 3f4 for accessibility to status bytes
+ val8 = inb(0x3f4);
+ if ( (val8 & 0xc0) != 0xc0 )
+ BX_PANIC("%s: ctrl not ready\n", __func__);
+
+ // read 7 return status bytes from controller and store in BDA
+ for (i = 0; i < 7; ++i)
+ write_byte(0x0040, 0x0042 + i, inb(0x3f5));
+
+ if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0) {
+ BX_DEBUG_INT13_FL("failed (FDC failure)\n");
+ floppy_reset_controller(drive);
+ SET_AH(0x20);
+ set_diskette_ret_status(0x20);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+#ifdef DMA_WORKAROUND
+ rep_movsw(ES :> BX, ES :> BX, num_sectors * 512 / 2);
+#endif
+ BX_DEBUG_INT13_FL("success!\n");
+ // ??? should track be new val from return_status[3] ?
+ set_diskette_current_cyl(drive, track);
+ // AL = number of sectors read (same value as passed)
+ SET_AH(0x00); // success
+ CLEAR_CF(); // success
+ return;
+ } else if (GET_AH() == 0x03) {
+ // Write Diskette Sectors
+
+ //-----------------------------------
+ // set up DMA controller for transfer
+ //-----------------------------------
+
+ // es:bx = pointer to where to place information from diskette
+ // port 04: DMA-1 base and current address, channel 2
+ // port 05: DMA-1 base and current count, channel 2
+ /// @todo merge/factor out pointer normalization
+ page = (ES >> 12); // upper 4 bits
+ base_es = (ES << 4); // lower 16bits contributed by ES
+ base_address = base_es + BX; // lower 16 bits of address
+ // contributed by ES:BX
+ if ( base_address < base_es ) {
+ // in case of carry, adjust page by 1
+ page++;
+ }
+ base_count = (num_sectors * 512) - 1;
+
+ // check for 64K boundary overrun
+ last_addr = base_address + base_count;
+ if (last_addr < base_address) {
+ SET_AH(0x09);
+ set_diskette_ret_status(0x09);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+ BX_DEBUG_INT13_FL("masking DMA-1 c2\n");
+ outb(0x000a, 0x06);
+
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0004, base_address);
+ outb(0x0004, base_address>>8);
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0005, base_count);
+ outb(0x0005, base_count>>8);
+ BX_DEBUG_INT13_FL("xfer buf %x bytes at %x:%x\n",
+ base_count, page, base_address);
+
+ // port 0b: DMA-1 Mode Register
+ mode_register = 0x4a; // single mode, increment, autoinit disable,
+ // transfer type=read, channel 2
+ outb(0x000b, mode_register);
+
+ // port 81: DMA-1 Page Register, channel 2
+ outb(0x0081, page);
+
+ BX_DEBUG_INT13_FL("unmasking DMA-1 c2\n");
+ outb(0x000a, 0x02);
+
+ //--------------------------------------
+ // set up floppy controller for transfer
+ //--------------------------------------
+ floppy_prepare_controller(drive);
+
+ // send write-normal-data command (9 bytes) to controller
+ outb(0x03f5, 0xc5); // c5: write normal data
+ outb(0x03f5, (head << 2) | drive); // HD DR1 DR2
+ outb(0x03f5, track);
+ outb(0x03f5, head);
+ outb(0x03f5, sector);
+ outb(0x03f5, 2); // 512 byte sector size
+ outb(0x03f5, sector + num_sectors - 1); // last sector to write on track
+ outb(0x03f5, 0); // Gap length
+ outb(0x03f5, 0xff); // Gap length
+
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+
+ // wait on 40:3e bit 7 to become 1
+ do {
+ val8 = read_byte(0x0040, 0x0040);
+ if (val8 == 0) {
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_AL(0); // no sectors written
+ SET_CF(); // error occurred
+ return;
+ }
+ val8 = (read_byte(0x0040, 0x003e) & 0x80);
+ } while ( val8 == 0 );
+
+ val8 = 0; // separate asm from while() loop @todo: why??
+ // turn off interrupts
+ int_disable();
+
+ // set 40:3e bit 7 to 0
+ val8 = read_byte(0x0040, 0x003e);
+ val8 &= 0x7f;
+ write_byte(0x0040, 0x003e, val8);
+#else
+ val8 = floppy_wait_for_interrupt_or_timeout();
+ if (val8 == 0) { /* Note! Interrupts enabled in this branch. */
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_AL(0); // no sectors written
+ SET_CF(); // error occurred
+ return;
+ }
+#endif
+
+ // check port 3f4 for accessibility to status bytes
+ val8 = inb(0x3f4);
+ if ( (val8 & 0xc0) != 0xc0 )
+ BX_PANIC("%s: ctrl not ready\n", __func__);
+
+ // read 7 return status bytes from controller and store in BDA
+ for (i = 0; i < 7; ++i)
+ write_byte(0x0040, 0x0042 + i, inb(0x3f5));
+
+ if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0) {
+ if ((read_byte(0x0040, 0x0042 + 1) & 0x02) != 0) {
+ // diskette not writable.
+ // AH=status code=0x03 (tried to write on write-protected disk)
+ // AL=number of sectors written=0
+ AX = 0x0300;
+ } else {
+ // Some other problem occurred.
+ AX = 0x0100;
+ }
+ SET_CF();
+ return;
+ }
+
+ // ??? should track be new val from return_status[3] ?
+ set_diskette_current_cyl(drive, track);
+ // AL = number of sectors read (same value as passed)
+ SET_AH(0x00); // success
+ CLEAR_CF(); // success
+ return;
+ } else { // if (ah == 0x04)
+ // Verify Diskette Sectors
+
+ // ??? should track be new val from return_status[3] ?
+ set_diskette_current_cyl(drive, track);
+ // AL = number of sectors verified (same value as passed)
+ CLEAR_CF(); // success
+ SET_AH(0x00); // success
+ return;
+ }
+ break;
+
+ case 0x05: // format diskette track
+ BX_DEBUG_INT13_FL("floppy f05\n");
+
+ num_sectors = GET_AL();
+ track = GET_CH();
+ head = GET_DH();
+ drive = GET_ELDL();
+
+ if ((drive > 1) || (head > 1) || (track > 79) ||
+ (num_sectors == 0) || (num_sectors > 18)) {
+ SET_AH(1);
+ set_diskette_ret_status(1);
+ SET_CF(); // error occurred
+ }
+
+ // see if drive exists
+ if (floppy_drive_exists(drive) == 0) {
+ SET_AH(0x80); // drive not responding
+ set_diskette_ret_status(0x80);
+ SET_CF(); // error occurred
+ return;
+ }
+
+ // see if media in drive, and type is known
+ if (floppy_media_known(drive) == 0) {
+ if (floppy_media_sense(drive) == 0) {
+ SET_AH(0x0C); // Media type not found
+ set_diskette_ret_status(0x0C);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+ }
+
+ // set up DMA controller for transfer
+ /// @todo merge/factor out pointer normalization
+ page = (ES >> 12); // upper 4 bits
+ base_es = (ES << 4); // lower 16bits contributed by ES
+ base_address = base_es + BX; // lower 16 bits of address
+ // contributed by ES:BX
+ if ( base_address < base_es ) {
+ // in case of carry, adjust page by 1
+ page++;
+ }
+ base_count = (num_sectors * 4) - 1;
+
+ // check for 64K boundary overrun
+ last_addr = base_address + base_count;
+ if (last_addr < base_address) {
+ SET_AH(0x09);
+ set_diskette_ret_status(0x09);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+ outb(0x000a, 0x06);
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0004, base_address);
+ outb(0x0004, base_address>>8);
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0005, base_count);
+ outb(0x0005, base_count>>8);
+ mode_register = 0x4a; // single mode, increment, autoinit disable,
+ // transfer type=read, channel 2
+ outb(0x000b, mode_register);
+ // port 81: DMA-1 Page Register, channel 2
+ outb(0x0081, page);
+ outb(0x000a, 0x02);
+
+ // set up floppy controller for transfer
+ floppy_prepare_controller(drive);
+
+ // send seek command to controller
+ outb(0x03f5, 0x0f); // 0f: seek
+ outb(0x03f5, (head << 2) | drive); // HD DR1 DR2
+ outb(0x03f5, track);
+
+ // send format-track command (6 bytes) to controller
+ outb(0x03f5, 0x4d); // 4d: format track
+ outb(0x03f5, (head << 2) | drive); // HD DR1 DR2
+ outb(0x03f5, 2); // 512 byte sector size
+ outb(0x03f5, num_sectors); // number of sectors per track
+ outb(0x03f5, 0); // Gap length
+ outb(0x03f5, 0xf6); // Fill byte
+
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+
+ // wait on 40:3e bit 7 to become 1
+ do {
+ val8 = read_byte(0x0040, 0x0040);
+ if (val8 == 0) {
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_CF(); // error occurred
+ return;
+ }
+ val8 = (read_byte(0x0040, 0x003e) & 0x80);
+ } while ( val8 == 0 );
+
+ val8 = 0; // separate asm from while() loop
+ // turn off interrupts
+ int_disable();
+
+ // set 40:3e bit 7 to 0
+ val8 = read_byte(0x0040, 0x003e);
+ val8 &= 0x7f;
+ write_byte(0x0040, 0x003e, val8);
+#else
+ val8 = floppy_wait_for_interrupt_or_timeout();
+ if (val8 == 0) { /* Note! Interrupts enabled in this branch. */
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_CF(); // error occurred
+ return;
+ }
+#endif
+
+ // check port 3f4 for accessibility to status bytes
+ val8 = inb(0x3f4);
+ if ( (val8 & 0xc0) != 0xc0 )
+ BX_PANIC("%s: ctrl not ready\n", __func__);
+
+ // read 7 return status bytes from controller and store in BDA
+ for (i = 0; i < 7; ++i)
+ write_byte(0x0040, 0x0042 + i, inb(0x3f5));
+
+ if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0) {
+ if ((read_byte(0x0040, 0x0042 + 1) & 0x02) != 0) {
+ // diskette not writable.
+ // AH=status code=0x03 (tried to write on write-protected disk)
+ // AL=number of sectors written=0
+ AX = 0x0300;
+ SET_CF();
+ return;
+ } else {
+ BX_PANIC("%s: write error\n", __func__);
+ }
+ }
+
+ SET_AH(0);
+ set_diskette_ret_status(0);
+ set_diskette_current_cyl(drive, 0);
+ CLEAR_CF(); // successful
+ return;
+
+
+ case 0x08: // read diskette drive parameters
+ BX_DEBUG_INT13_FL("floppy f08\n");
+ drive = GET_ELDL();
+
+ if (drive > 1) {
+ AX = 0;
+ BX = 0;
+ CX = 0;
+ DX = 0;
+ ES = 0;
+ DI = 0;
+ SET_DL(num_floppies);
+ SET_CF();
+ return;
+ }
+
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ num_floppies = 0;
+ if (drive_type & 0xf0)
+ num_floppies++;
+ if (drive_type & 0x0f)
+ num_floppies++;
+
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+
+ SET_BH(0);
+ SET_BL(drive_type);
+ SET_AH(0);
+ SET_AL(0);
+ SET_DL(num_floppies);
+ SET_DH(1); // max head #
+
+ switch (drive_type) {
+ case 0: // none
+ CX = 0;
+ SET_DH(0); // max head #
+ break;
+
+ case 1: // 360KB, 5.25"
+ CX = 0x2709; // 40 tracks, 9 sectors
+ break;
+
+ case 2: // 1.2MB, 5.25"
+ CX = 0x4f0f; // 80 tracks, 15 sectors
+ break;
+
+ case 3: // 720KB, 3.5"
+ CX = 0x4f09; // 80 tracks, 9 sectors
+ break;
+
+ case 4: // 1.44MB, 3.5"
+ CX = 0x4f12; // 80 tracks, 18 sectors
+ break;
+
+ case 5: // 2.88MB, 3.5"
+ CX = 0x4f24; // 80 tracks, 36 sectors
+ break;
+
+ case 14: // 15.6 MB 3.5" (fake)
+ CX = 0xfe3f; // 255 tracks, 63 sectors
+ break;
+
+ case 15: // 63.5 MB 3.5" (fake)
+ CX = 0xfeff; // 255 tracks, 255 sectors - This works because the cylinder
+ break; // and sectors limits/encoding aren't checked by the BIOS
+ // due to copy protection schemes and such stuff.
+
+ default: // ?
+ BX_PANIC("%s: bad floppy type\n", __func__);
+ }
+
+ /* set es & di to point to 11 byte diskette param table in ROM */
+ ES = 0xF000; /// @todo any way to make this relocatable?
+ DI = get_floppy_dpt(drive_type);
+ CLEAR_CF(); // success
+ /* disk status not changed upon success */
+ return;
+
+ case 0x15: // read diskette drive type
+ BX_DEBUG_INT13_FL("floppy f15\n");
+ drive = GET_ELDL();
+ if (drive > 1) {
+ SET_AH(0); // only 2 drives supported
+ // set_diskette_ret_status here ???
+ SET_CF();
+ return;
+ }
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+ CLEAR_CF(); // successful, not present
+ if (drive_type==0) {
+ SET_AH(0); // drive not present
+ } else if (drive_type > 1) {
+ SET_AH(2); // drive present, supports change line
+ } else {
+ SET_AH(1); // drive present, does not support change line
+ }
+
+ return;
+
+ case 0x16: // get diskette change line status
+ BX_DEBUG_INT13_FL("floppy f16\n");
+ drive = GET_ELDL();
+ if (drive > 1) {
+ SET_AH(0x01); // invalid drive
+ set_diskette_ret_status(0x01);
+ SET_CF();
+ return;
+ }
+
+ SET_AH(0x06); // change line not supported
+ set_diskette_ret_status(0x06);
+ SET_CF();
+ return;
+
+ case 0x17: // set diskette type for format(old)
+ BX_DEBUG_INT13_FL("floppy f17\n");
+ // NOTE: 1.44M diskette not supported by this function, use INT14h/18h instead.
+ // Drive number (0 or 1) values allowed
+ drive = GET_ELDL();
+
+ // Format type (AL)
+ // 00 - NOT USED
+ // 01 - DISKETTE 360K IN 360K DRIVE
+ // 02 - DISKETTE 360K IN 1.2M DRIVE
+ // 03 - DISKETTE 1.2M IN 1.2M DRIVE
+ // 04 - DISKETTE 720K IN 720K DRIVE
+ val8 = GET_AL();
+
+ BX_DEBUG_INT13_FL("floppy f17 - drive: %d, format type: %d\n", drive, val8);
+
+ if (drive > 1) {
+ SET_AH(0x01); // invalid drive
+ set_diskette_ret_status(0x01); // bad parameter
+ SET_CF();
+ return;
+ }
+
+ // see if drive exists
+ if (floppy_drive_exists(drive) == 0) {
+ SET_AH(0x80); // not responding/time out
+ set_diskette_ret_status(0x80);
+ SET_CF();
+ return;
+ }
+
+ // Get current drive state. Set 'base_address' to media status offset address
+ base_address = (drive) ? 0x0091 : 0x0090;
+ media_state = read_byte(0x0040, base_address);
+
+ // Mask out (clear) bits 4-7 (4:media type established, 5:double stepping, 6-7:data rate)
+ media_state &= 0x0f;
+
+ switch (val8) {
+ case 1:
+ // 360K media in 360K drive
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+ break;
+ case 2:
+ // 360K media in 1.2M drive
+ media_state |= 0x70; // 0111 0000 (media type established, double stepping, 300 kbps)
+ break;
+ case 3:
+ // 1.2M media in 1.2M drive
+ media_state |= 0x10; // 0001 0000 (media type established, 500 kbps)
+ break;
+ case 4:
+ // 720K media in 720K drive
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+ break;
+ default:
+ // bad parameter
+ SET_AH(0x01); // invalid format mode parameter
+ set_diskette_ret_status(0x01);
+ SET_CF();
+ return;
+ }
+
+ // Update media status
+ write_byte(0x0040, base_address, media_state);
+ BX_DEBUG_INT13_FL("floppy f17 - media status set to: %02x\n", media_state);
+
+ // return success!
+ SET_AH(0);
+ set_diskette_ret_status(0);
+ CLEAR_CF();
+ return;
+
+ case 0x18: // set diskette type for format(new)
+ BX_DEBUG_INT13_FL("floppy f18\n");
+ // Set Media Type for Format. Verifies that the device supports a specific geometry.
+ // Unlike INT13h/17h, this service supports higher capacity drives (1.44M and 2.88M).
+ // Drive number (0 or 1) values allowed
+ drive = GET_ELDL();
+
+ val8 = GET_CL();
+ num_sectors = val8 & 0x3f; // max sector number per cylinder
+ track = ((val8 >> 6) << 8) + GET_CH(); // max cylinder number (max cylinders - 1)
+
+ BX_DEBUG_INT13_FL("floppy f18 - drive: %d, max cylinder/track number: %d, sectors-per-tracks: %d\n",
+ drive, track, num_sectors);
+
+ if (drive > 1) {
+ SET_AH(0x01); // invalid drive
+ set_diskette_ret_status(0x01);
+ SET_CF();
+ return;
+ }
+
+ // see if drive exists
+ if (floppy_drive_exists(drive) == 0) {
+ SET_AH(0x80); // not responding/time out
+ set_diskette_ret_status(0x80);
+ SET_CF();
+ return;
+ }
+
+ // see if media in drive, and media type is known
+ if (floppy_media_known(drive) == 0) {
+ if (floppy_media_sense(drive) == 0) {
+ SET_AH(0x0C); // drive/media type unknown
+ set_diskette_ret_status(0x0C);
+ SET_CF();
+ return;
+ }
+ }
+
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+
+ // Get current drive state. Set 'base_address' to media status offset address
+ base_address = (drive) ? 0x0091 : 0x0090;
+ media_state = read_byte(0x0040, base_address);
+
+ // Mask out (clear) bits 4-7 (4:media type established, 5:double stepping, 6-7:data rate)
+ media_state &= 0x0f;
+
+ switch (drive_type) {
+ case 1: // 360KB, 5.25"
+ if (track == 39 && num_sectors == 9)
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+
+ break;
+ case 2: // 1.2MB, 5.25"
+ if (track == 39 && num_sectors == 9) { // 360K disk in 1.2M drive
+ media_state |= 0x70; // 0111 0000 (media type established, double stepping, 300 kbps)
+ } else if (track == 79 && num_sectors == 15) { // 1.2M disk in 1.2M drive
+ media_state |= 0x10; // 0001 0000 (media type established, 500 kbps)
+ }
+ break;
+ case 3: // 720KB, 3.5"
+ if (track == 79 && num_sectors == 9)
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+
+ break;
+ case 4: // 1.44MB, 3.5"
+ if (track == 79) {
+ if (num_sectors == 9) { // 720K disk in 1.44M drive
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+ } else if (num_sectors == 18) { // 1.44M disk in 1.44M drive
+ media_state |= 0x10; // 0001 0000 (media type established, 500 kbps)
+ }
+ }
+ break;
+ case 5: // 2.88MB, 3.5"
+ if (track == 79) {
+ if (num_sectors == 9) { // 720K disk in 2.88M drive
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+ } else if (num_sectors == 18) { // 1.44M disk in 2.88M drive
+ media_state |= 0x10; // 0001 0000 (media type established, 500 kbps)
+ } else if (num_sectors == 36) { // 2.88M disk in 2.88M drive
+ media_state |= 0xD0; // 1101 0000 (media type established, 1 Mbps)
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ // Error if bit 4 (media type established) has not just been set above.
+ if (((media_state >> 4) & 0x01) == 0) {
+ // Error - assume requested tracks/sectors-per-track not supported
+ // for current drive type - or drive type is unknown!
+ SET_AH(0x0C);
+ set_diskette_ret_status(0x0C);
+ SET_CF();
+ return;
+ }
+
+ // Update media status
+ write_byte(0x0040, base_address, media_state);
+
+ // set es & di to point to 11 byte diskette param table in ROM
+ ES = 0xF000; /// @todo any way to make this relocatable?
+ DI = get_floppy_dpt(drive_type);
+
+ // return success!
+ SET_AH(0);
+ set_diskette_ret_status(0);
+ CLEAR_CF();
+ return;
+
+ default:
+ BX_INFO("%s: unsupported AH=%02x\n", __func__, GET_AH());
+
+ // if ( (ah==0x20) || ((ah>=0x41) && (ah<=0x49)) || (ah==0x4e) ) {
+ SET_AH(0x01); // ???
+ set_diskette_ret_status(1);
+ SET_CF();
+ return;
+ // }
+ }
+}
+
+#else // #if BX_SUPPORT_FLOPPY
+
+void BIOSCALL int13_diskette_function(disk_regs_t r)
+{
+ uint8_t val8;
+
+ switch ( GET_AH() ) {
+
+ case 0x01: // Read Diskette Status
+ CLEAR_CF();
+ val8 = read_byte(0x0000, 0x0441);
+ SET_AH(val8);
+ if (val8) {
+ SET_CF();
+ }
+ return;
+
+ default:
+ SET_CF();
+ write_byte(0x0000, 0x0441, 0x01);
+ SET_AH(0x01);
+ }
+}
+
+#endif // #if BX_SUPPORT_FLOPPY
+
+/* Avoid saving general registers already saved by caller (PUSHA). */
+#pragma aux int13_diskette_function modify [di si cx dx bx];
diff --git a/src/VBox/Devices/PC/BIOS/floppyt.c b/src/VBox/Devices/PC/BIOS/floppyt.c
new file mode 100644
index 00000000..efba7063
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/floppyt.c
@@ -0,0 +1,104 @@
+/* $Id: floppyt.c $ */
+/** @file
+ * Floppy drive tables.
+ */
+
+/*
+ * Copyright (C) 2011-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+/**
+ * Extended DPT (Disk Parameter Table) structure.
+ */
+typedef struct
+{
+ uint8_t spec1; /* First SPECIFY byte. */
+ uint8_t spec2; /* Second SPECIFY byte. */
+ uint8_t mot_wait; /* Motor wait time after operation. */
+ uint8_t ss_code; /* Sector size code. */
+ uint8_t eot; /* End of Track (ID of last sector). */
+ uint8_t gap; /* Gap length. */
+ uint8_t dtl; /* Data length. */
+ uint8_t fmt_gap; /* Gap length for format. */
+ uint8_t fmt_fill; /* Format fill byte. */
+ uint8_t hd_settle; /* Head settle time (msec). */
+ uint8_t mot_start; /* Motor start time (1/8 sec units). */
+ uint8_t max_trk; /* Maximum track number. */
+ uint8_t rate; /* Data transfer rate code. */
+} dpt_ext;
+
+ct_assert(sizeof(dpt_ext) == 13);
+
+/* Motor spin-up wait time in BIOS ticks (~2 seconds). */
+#define MOTOR_WAIT 0x25
+
+/* Data rates as stored in the DPT */
+#define RATE_250K 0x80
+#define RATE_300K 0x40
+#define RATE_500K 0x00
+#define RATE_1M 0xC0
+
+/* In the 13-entry DPT, 7 entries are constant. Use a macro to set those. */
+#define MAKE_DPT_ENTRY(sp1, eot, gap, fgp, mxt, dtr) \
+ { sp1, 2, MOTOR_WAIT, 2, eot, gap, 0xFF, fgp, 0xF6, 15, 8, mxt, dtr }
+
+dpt_ext fd_parm[] = {
+ MAKE_DPT_ENTRY(0xDF, 9, 0x2A, 0x50, 39, RATE_250K), /* 360K disk/360K drive */
+ MAKE_DPT_ENTRY(0xDF, 9, 0x2A, 0x50, 39, RATE_300K), /* 360K disk/1.2M drive */
+ MAKE_DPT_ENTRY(0xDF, 15, 0x1B, 0x54, 79, RATE_500K), /* 1.2M disk */
+ MAKE_DPT_ENTRY(0xDF, 9, 0x2A, 0x50, 79, RATE_250K), /* 720K disk */
+ MAKE_DPT_ENTRY(0xAF, 18, 0x1B, 0x6C, 79, RATE_500K), /* 1.44M disk */
+ MAKE_DPT_ENTRY(0xAF, 36, 0x1B, 0x54, 79, RATE_1M), /* 2.88M disk */
+ MAKE_DPT_ENTRY(0xAF, 255, 0x1B, 0x54, 255, RATE_500K) /* Fake mega-disk */
+};
+
+typedef struct {
+ uint8_t type; /* Drive type. */
+ uint8_t dpt_entry; /* Index of entry in fd_parm. */
+} fd_map_entry;
+
+/* Drive types as stored in the CMOS. Must match DevPCBios! */
+#define FDRV_360K 1
+#define FDRV_1_2M 2
+#define FDRV_720K 3
+#define FDRV_1_44M 4
+#define FDRV_2_88M 5
+#define FDRV_15M 14
+#define FDRV_63M 15
+
+/* A table mapping (CMOS) drive types to DPT entries. */
+fd_map_entry fd_map[] = {
+ { FDRV_360K, 0 },
+ { FDRV_1_2M, 2 },
+ { FDRV_720K, 3 },
+ { FDRV_1_44M, 4 },
+ { FDRV_2_88M, 5 },
+ { FDRV_15M, 6 },
+ { FDRV_63M, 6 }
+};
+
+/* Find a DPT corresponding to the given drive type. */
+dpt_ext *get_floppy_dpt(uint8_t drv_typ)
+{
+ int i;
+
+ for (i = 0; i < sizeof(fd_map) / sizeof(fd_map[0]); ++i)
+ if (fd_map[i].type == drv_typ)
+ return &fd_parm[fd_map[i].dpt_entry];
+
+ /* As a fallback, return the 1.44M DPT. */
+ return &fd_parm[5];
+}
diff --git a/src/VBox/Devices/PC/BIOS/font8x8.inc b/src/VBox/Devices/PC/BIOS/font8x8.inc
new file mode 100644
index 00000000..8fee2937
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/font8x8.inc
@@ -0,0 +1,133 @@
+; This font comes from the fntcol16.zip package (c) by Joseph Gil
+; found at ftp://ftp.simtel.net/pub/simtelnet/msdos/screen/fntcol16.zip
+; This font is in the public domain
+
+font8x8:
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
+ db 07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh
+ db 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
+ db 010h, 038h, 07ch, 0feh, 07ch, 038h, 010h, 000h
+ db 038h, 07ch, 038h, 0feh, 0feh, 07ch, 038h, 07ch
+ db 010h, 010h, 038h, 07ch, 0feh, 07ch, 038h, 07ch
+ db 000h, 000h, 018h, 03ch, 03ch, 018h, 000h, 000h
+ db 0ffh, 0ffh, 0e7h, 0c3h, 0c3h, 0e7h, 0ffh, 0ffh
+ db 000h, 03ch, 066h, 042h, 042h, 066h, 03ch, 000h
+ db 0ffh, 0c3h, 099h, 0bdh, 0bdh, 099h, 0c3h, 0ffh
+ db 00fh, 007h, 00fh, 07dh, 0cch, 0cch, 0cch, 078h
+ db 03ch, 066h, 066h, 066h, 03ch, 018h, 07eh, 018h
+ db 03fh, 033h, 03fh, 030h, 030h, 070h, 0f0h, 0e0h
+ db 07fh, 063h, 07fh, 063h, 063h, 067h, 0e6h, 0c0h
+ db 099h, 05ah, 03ch, 0e7h, 0e7h, 03ch, 05ah, 099h
+ db 080h, 0e0h, 0f8h, 0feh, 0f8h, 0e0h, 080h, 000h
+ db 002h, 00eh, 03eh, 0feh, 03eh, 00eh, 002h, 000h
+ db 018h, 03ch, 07eh, 018h, 018h, 07eh, 03ch, 018h
+ db 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h
+ db 07fh, 0dbh, 0dbh, 07bh, 01bh, 01bh, 01bh, 000h
+ db 03eh, 063h, 038h, 06ch, 06ch, 038h, 0cch, 078h
+ db 000h, 000h, 000h, 000h, 07eh, 07eh, 07eh, 000h
+ db 018h, 03ch, 07eh, 018h, 07eh, 03ch, 018h, 0ffh
+ db 018h, 03ch, 07eh, 018h, 018h, 018h, 018h, 000h
+ db 018h, 018h, 018h, 018h, 07eh, 03ch, 018h, 000h
+ db 000h, 018h, 00ch, 0feh, 00ch, 018h, 000h, 000h
+ db 000h, 030h, 060h, 0feh, 060h, 030h, 000h, 000h
+ db 000h, 000h, 0c0h, 0c0h, 0c0h, 0feh, 000h, 000h
+ db 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h
+ db 000h, 018h, 03ch, 07eh, 0ffh, 0ffh, 000h, 000h
+ db 000h, 0ffh, 0ffh, 07eh, 03ch, 018h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 030h, 078h, 078h, 030h, 030h, 000h, 030h, 000h
+ db 06ch, 06ch, 06ch, 000h, 000h, 000h, 000h, 000h
+ db 06ch, 06ch, 0feh, 06ch, 0feh, 06ch, 06ch, 000h
+ db 030h, 07ch, 0c0h, 078h, 00ch, 0f8h, 030h, 000h
+ db 000h, 0c6h, 0cch, 018h, 030h, 066h, 0c6h, 000h
+ db 038h, 06ch, 038h, 076h, 0dch, 0cch, 076h, 000h
+ db 060h, 060h, 0c0h, 000h, 000h, 000h, 000h, 000h
+ db 018h, 030h, 060h, 060h, 060h, 030h, 018h, 000h
+ db 060h, 030h, 018h, 018h, 018h, 030h, 060h, 000h
+ db 000h, 066h, 03ch, 0ffh, 03ch, 066h, 000h, 000h
+ db 000h, 030h, 030h, 0fch, 030h, 030h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 060h
+ db 000h, 000h, 000h, 0fch, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 000h
+ db 006h, 00ch, 018h, 030h, 060h, 0c0h, 080h, 000h
+ db 07ch, 0c6h, 0ceh, 0deh, 0f6h, 0e6h, 07ch, 000h
+ db 030h, 070h, 030h, 030h, 030h, 030h, 0fch, 000h
+ db 078h, 0cch, 00ch, 038h, 060h, 0cch, 0fch, 000h
+ db 078h, 0cch, 00ch, 038h, 00ch, 0cch, 078h, 000h
+ db 01ch, 03ch, 06ch, 0cch, 0feh, 00ch, 01eh, 000h
+ db 0fch, 0c0h, 0f8h, 00ch, 00ch, 0cch, 078h, 000h
+ db 038h, 060h, 0c0h, 0f8h, 0cch, 0cch, 078h, 000h
+ db 0fch, 0cch, 00ch, 018h, 030h, 030h, 030h, 000h
+ db 078h, 0cch, 0cch, 078h, 0cch, 0cch, 078h, 000h
+ db 078h, 0cch, 0cch, 07ch, 00ch, 018h, 070h, 000h
+ db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h
+ db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 060h
+ db 018h, 030h, 060h, 0c0h, 060h, 030h, 018h, 000h
+ db 000h, 000h, 0fch, 000h, 000h, 0fch, 000h, 000h
+ db 060h, 030h, 018h, 00ch, 018h, 030h, 060h, 000h
+ db 078h, 0cch, 00ch, 018h, 030h, 000h, 030h, 000h
+ db 07ch, 0c6h, 0deh, 0deh, 0deh, 0c0h, 078h, 000h
+ db 030h, 078h, 0cch, 0cch, 0fch, 0cch, 0cch, 000h
+ db 0fch, 066h, 066h, 07ch, 066h, 066h, 0fch, 000h
+ db 03ch, 066h, 0c0h, 0c0h, 0c0h, 066h, 03ch, 000h
+ db 0f8h, 06ch, 066h, 066h, 066h, 06ch, 0f8h, 000h
+ db 0feh, 062h, 068h, 078h, 068h, 062h, 0feh, 000h
+ db 0feh, 062h, 068h, 078h, 068h, 060h, 0f0h, 000h
+ db 03ch, 066h, 0c0h, 0c0h, 0ceh, 066h, 03eh, 000h
+ db 0cch, 0cch, 0cch, 0fch, 0cch, 0cch, 0cch, 000h
+ db 078h, 030h, 030h, 030h, 030h, 030h, 078h, 000h
+ db 01eh, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 000h
+ db 0e6h, 066h, 06ch, 078h, 06ch, 066h, 0e6h, 000h
+ db 0f0h, 060h, 060h, 060h, 062h, 066h, 0feh, 000h
+ db 0c6h, 0eeh, 0feh, 0feh, 0d6h, 0c6h, 0c6h, 000h
+ db 0c6h, 0e6h, 0f6h, 0deh, 0ceh, 0c6h, 0c6h, 000h
+ db 038h, 06ch, 0c6h, 0c6h, 0c6h, 06ch, 038h, 000h
+ db 0fch, 066h, 066h, 07ch, 060h, 060h, 0f0h, 000h
+ db 078h, 0cch, 0cch, 0cch, 0dch, 078h, 01ch, 000h
+ db 0fch, 066h, 066h, 07ch, 06ch, 066h, 0e6h, 000h
+ db 078h, 0cch, 0e0h, 070h, 01ch, 0cch, 078h, 000h
+ db 0fch, 0b4h, 030h, 030h, 030h, 030h, 078h, 000h
+ db 0cch, 0cch, 0cch, 0cch, 0cch, 0cch, 0fch, 000h
+ db 0cch, 0cch, 0cch, 0cch, 0cch, 078h, 030h, 000h
+ db 0c6h, 0c6h, 0c6h, 0d6h, 0feh, 0eeh, 0c6h, 000h
+ db 0c6h, 0c6h, 06ch, 038h, 038h, 06ch, 0c6h, 000h
+ db 0cch, 0cch, 0cch, 078h, 030h, 030h, 078h, 000h
+ db 0feh, 0c6h, 08ch, 018h, 032h, 066h, 0feh, 000h
+ db 078h, 060h, 060h, 060h, 060h, 060h, 078h, 000h
+ db 0c0h, 060h, 030h, 018h, 00ch, 006h, 002h, 000h
+ db 078h, 018h, 018h, 018h, 018h, 018h, 078h, 000h
+ db 010h, 038h, 06ch, 0c6h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0ffh
+ db 030h, 030h, 018h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 078h, 00ch, 07ch, 0cch, 076h, 000h
+ db 0e0h, 060h, 060h, 07ch, 066h, 066h, 0dch, 000h
+ db 000h, 000h, 078h, 0cch, 0c0h, 0cch, 078h, 000h
+ db 01ch, 00ch, 00ch, 07ch, 0cch, 0cch, 076h, 000h
+ db 000h, 000h, 078h, 0cch, 0fch, 0c0h, 078h, 000h
+ db 038h, 06ch, 060h, 0f0h, 060h, 060h, 0f0h, 000h
+ db 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 0f8h
+ db 0e0h, 060h, 06ch, 076h, 066h, 066h, 0e6h, 000h
+ db 030h, 000h, 070h, 030h, 030h, 030h, 078h, 000h
+ db 00ch, 000h, 00ch, 00ch, 00ch, 0cch, 0cch, 078h
+ db 0e0h, 060h, 066h, 06ch, 078h, 06ch, 0e6h, 000h
+ db 070h, 030h, 030h, 030h, 030h, 030h, 078h, 000h
+ db 000h, 000h, 0cch, 0feh, 0feh, 0d6h, 0c6h, 000h
+ db 000h, 000h, 0f8h, 0cch, 0cch, 0cch, 0cch, 000h
+ db 000h, 000h, 078h, 0cch, 0cch, 0cch, 078h, 000h
+ db 000h, 000h, 0dch, 066h, 066h, 07ch, 060h, 0f0h
+ db 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 01eh
+ db 000h, 000h, 0dch, 076h, 066h, 060h, 0f0h, 000h
+ db 000h, 000h, 07ch, 0c0h, 078h, 00ch, 0f8h, 000h
+ db 010h, 030h, 07ch, 030h, 030h, 034h, 018h, 000h
+ db 000h, 000h, 0cch, 0cch, 0cch, 0cch, 076h, 000h
+ db 000h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 000h
+ db 000h, 000h, 0c6h, 0d6h, 0feh, 0feh, 06ch, 000h
+ db 000h, 000h, 0c6h, 06ch, 038h, 06ch, 0c6h, 000h
+ db 000h, 000h, 0cch, 0cch, 0cch, 07ch, 00ch, 0f8h
+ db 000h, 000h, 0fch, 098h, 030h, 064h, 0fch, 000h
+ db 01ch, 030h, 030h, 0e0h, 030h, 030h, 01ch, 000h
+ db 018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h
+ db 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
+ db 076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
diff --git a/src/VBox/Devices/PC/BIOS/inlines.h b/src/VBox/Devices/PC/BIOS/inlines.h
new file mode 100644
index 00000000..5ded422d
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/inlines.h
@@ -0,0 +1,247 @@
+/* $Id: inlines.h $ */
+/** @file
+ * Inline routines for Watcom C.
+ */
+
+/*
+ * Copyright (C) 2010-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_inlines_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_inlines_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+extern unsigned inp(unsigned port);
+extern unsigned outp(unsigned port, unsigned value);
+extern unsigned inpw(unsigned port);
+extern unsigned outpw(unsigned port, unsigned value);
+#pragma intrinsic(inp,outp,inpw,outpw)
+#define inb(p) inp(p)
+#define outb(p, v) outp(p, v)
+#define inw(p) inpw(p)
+#define outw(p, v) outpw(p, v)
+
+/* Far byte/word/dword access routines. */
+
+inline uint8_t read_byte(uint16_t seg, uint16_t offset)
+{
+ return( *(seg:>(uint8_t *)offset) );
+}
+
+inline void write_byte(uint16_t seg, uint16_t offset, uint8_t data)
+{
+ *(seg:>(uint8_t *)offset) = data;
+}
+
+inline uint16_t read_word(uint16_t seg, uint16_t offset)
+{
+ return( *(seg:>(uint16_t *)offset) );
+}
+
+inline void write_word(uint16_t seg, uint16_t offset, uint16_t data)
+{
+ *(seg:>(uint16_t *)offset) = data;
+}
+
+inline uint32_t read_dword(uint16_t seg, uint16_t offset)
+{
+ return( *(seg:>(uint32_t *)offset) );
+}
+
+inline void write_dword(uint16_t seg, uint16_t offset, uint32_t data)
+{
+ *(seg:>(uint32_t *)offset) = data;
+}
+
+
+void int_enable(void);
+#pragma aux int_enable = "sti" modify exact [] nomemory;
+
+void int_disable(void);
+#pragma aux int_disable = "cli" modify exact [] nomemory;
+
+void int_enable_hlt_disable(void);
+#pragma aux int_enable_hlt_disable = \
+ "sti" \
+ "hlt" \
+ "cli" \
+ modify exact [] nomemory;
+
+uint16_t int_query(void);
+#pragma aux int_query = \
+ "pushf" \
+ "pop ax" \
+ value [ax] modify exact [ax] nomemory;
+
+void int_restore(uint16_t old_flags);
+#pragma aux int_restore = \
+ "push ax" \
+ "popf" \
+ parm [ax] modify exact [] nomemory;
+
+void halt(void);
+#pragma aux halt = "hlt" modify exact [] nomemory;
+
+void halt_forever(void);
+#pragma aux halt_forever = \
+ "forever:" \
+ "hlt" \
+ "jmp forever" \
+ modify exact [] nomemory aborts;
+
+#ifdef __386__
+
+void rep_movsb(void __far *d, void __far *s, int nbytes);
+#pragma aux rep_movsb = \
+ "push ds" \
+ "mov ds, dx" \
+ "rep movsb" \
+ "pop ds" \
+ parm [es edi] [dx esi] [ecx];
+
+#else
+
+void rep_movsb(void __far *d, void __far *s, int nbytes);
+#pragma aux rep_movsb = \
+ "push ds" \
+ "mov ds, dx" \
+ "rep movsb" \
+ "pop ds" \
+ parm [es di] [dx si] [cx];
+
+#endif
+
+void rep_movsw(void __far *d, void __far *s, int nwords);
+#pragma aux rep_movsw = \
+ "push ds" \
+ "mov ds, dx" \
+ "rep movsw" \
+ "pop ds" \
+ parm [es di] [dx si] [cx];
+
+#ifndef __386__
+
+char __far *rep_insb(char __far *buffer, unsigned nbytes, unsigned port);
+#pragma aux rep_insb = ".286" "rep insb" parm [es di] [cx] [dx] value [es di] modify exact [cx di];
+
+char __far *rep_insw(char __far *buffer, unsigned nwords, unsigned port);
+#pragma aux rep_insw = ".286" "rep insw" parm [es di] [cx] [dx] value [es di] modify exact [cx di];
+
+# if VBOX_BIOS_CPU >= 80386
+char __far *rep_insd(char __far *buffer, unsigned ndwords, unsigned port);
+# pragma aux rep_insd = ".386" "rep insd" parm [es di] [cx] [dx] value [es di] modify exact [cx di];
+# endif
+
+char __far *rep_outsb(char __far *buffer, unsigned nbytes, unsigned port);
+#pragma aux rep_outsb = ".286" "rep outs dx,byte ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si];
+
+char __far *rep_outsw(char __far *buffer, unsigned nwords, unsigned port);
+#pragma aux rep_outsw = ".286" "rep outs dx,word ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si];
+
+# if VBOX_BIOS_CPU >= 80386
+char __far *rep_outsd(char __far *buffer, unsigned ndwords, unsigned port);
+# pragma aux rep_outsd = ".386" "rep outs dx,dword ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si];
+# endif
+
+uint16_t swap_16(uint16_t val);
+#pragma aux swap_16 = "xchg ah,al" parm [ax] value [ax] modify exact [ax] nomemory;
+
+uint32_t swap_32(uint32_t val);
+#pragma aux swap_32 = \
+ "xchg ah, al" \
+ "xchg dh, dl" \
+ "xchg ax, dx" \
+ parm [dx ax] value [dx ax] modify exact [dx ax] nomemory;
+
+uint64_t swap_64(uint64_t val);
+#pragma aux swap_64 = \
+ "xchg ah, al" \
+ "xchg bh, bl" \
+ "xchg ch, cl" \
+ "xchg dh, dl" \
+ "xchg ax, dx" \
+ "xchg bx, cx" \
+ parm [ax bx cx dx] value [ax bx cx dx] modify exact [ax bx cx dx] nomemory;
+
+#endif
+
+#if VBOX_BIOS_CPU >= 80386
+
+/* Warning: msr_read/msr_write destroy high bits of 32-bit registers (EAX, ECX, EDX). */
+
+uint64_t msr_read(uint32_t msr);
+#pragma aux msr_read = \
+ ".586" \
+ "shl ecx, 16" \
+ "mov cx, ax" \
+ "rdmsr" \
+ "xchg eax, edx" \
+ "mov bx, ax" \
+ "shr eax, 16" \
+ "mov cx, dx" \
+ "shr edx, 16" \
+ "xchg dx, cx" \
+ parm [cx ax] value [ax bx cx dx] modify [] nomemory;
+
+void msr_write(uint64_t val, uint32_t msr);
+#pragma aux msr_write = \
+ ".586" \
+ "shl eax, 16" \
+ "mov ax, bx" \
+ "xchg dx, cx" \
+ "shl edx, 16" \
+ "mov dx, cx" \
+ "xchg eax, edx" \
+ "mov cx, di" \
+ "shl ecx, 16" \
+ "mov cx, si" \
+ "wrmsr" \
+ parm [ax bx cx dx] [di si] modify [] nomemory;
+
+/* Warning: eflags_read/eflags_write destroy high bits of 32-bit registers (EDX). */
+uint32_t eflags_read( void );
+#pragma aux eflags_read = \
+ ".386" \
+ "pushfd" \
+ "pop edx" \
+ "mov ax, dx" \
+ "shr edx, 16" \
+ value [dx ax] modify [dx ax];
+
+uint32_t eflags_write( uint32_t e_flags );
+#pragma aux eflags_write = \
+ ".386" \
+ "shl edx, 16" \
+ "mov dx, ax" \
+ "push edx" \
+ "popfd" \
+ parm [dx ax] modify [dx ax];
+
+/* Warning cpuid destroys high bits of 32-bit registers (EAX, EBX, ECX, EDX). */
+void cpuid( uint32_t __far cpu_id[4], uint32_t leaf );
+#pragma aux cpuid = \
+ ".586" \
+ "shl edx, 16" \
+ "mov dx, ax" \
+ "mov eax, edx" \
+ "cpuid" \
+ "mov es:[di+0], eax" \
+ "mov es:[di+4], ebx" \
+ "mov es:[di+8], ecx" \
+ "mov es:[di+12], edx" \
+ parm [es di] [dx ax] modify [bx cx dx]
+
+#endif
+
+#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_inlines_h */
+
diff --git a/src/VBox/Devices/PC/BIOS/invop.c b/src/VBox/Devices/PC/BIOS/invop.c
new file mode 100644
index 00000000..85667cd9
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/invop.c
@@ -0,0 +1,350 @@
+/* $Id: invop.c $ */
+/** @file
+ * Real mode invalid opcode handler.
+ */
+
+/*
+ * Copyright (C) 2013-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+//#define EMU_386_LOADALL
+
+/* The layout of 286 LOADALL descriptors. */
+typedef struct tag_ldall_desc {
+ uint16_t base_lo; /* Bits 0-15 of segment base. */
+ uint8_t base_hi; /* Bits 16-13 of segment base. */
+ uint8_t attr; /* Segment attributes. */
+ uint16_t limit; /* Segment limit. */
+} ldall_desc;
+
+/* The 286 LOADALL memory buffer at physical address 800h. From
+ * The Undocumented PC.
+ */
+typedef struct tag_ldall_286 {
+ uint16_t unused1[3];
+ uint16_t msw; /* 806h */
+ uint16_t unused2[7];
+ uint16_t tr; /* 816h */
+ uint16_t flags; /* 818h */
+ uint16_t ip; /* 81Ah */
+ uint16_t ldt; /* 81Ch */
+ uint16_t ds; /* 81Eh */
+ uint16_t ss; /* 820h */
+ uint16_t cs; /* 822h */
+ uint16_t es; /* 824h */
+ uint16_t di; /* 826h */
+ uint16_t si; /* 828h */
+ uint16_t bp; /* 82Ah */
+ uint16_t sp; /* 82Ch */
+ uint16_t bx; /* 82Eh */
+ uint16_t dx; /* 830h */
+ uint16_t cx; /* 832h */
+ uint16_t ax; /* 834h */
+ ldall_desc es_desc; /* 836h */
+ ldall_desc cs_desc; /* 83Ch */
+ ldall_desc ss_desc; /* 842h */
+ ldall_desc ds_desc; /* 848h */
+ ldall_desc gdt_desc; /* 84Eh */
+ ldall_desc ldt_desc; /* 854h */
+ ldall_desc idt_desc; /* 85Ah */
+ ldall_desc tss_desc; /* 860h */
+} ldall_286_s;
+ct_assert(sizeof(ldall_286_s) == 0x66);
+
+#ifdef EMU_386_LOADALL
+
+/* The layout of 386 LOADALL descriptors. */
+typedef struct tag_ldal3_desc {
+ uint32_t attr; /* Segment attributes. */
+ uint32_t base; /* Expanded segment base. */
+ uint32_t limit; /* Expanded segment limit. */
+} ldal3_desc;
+
+/* The 386 LOADALL memory buffer pointed to by ES:EDI.
+ */
+typedef struct tag_ldall_386 {
+ uint32_t cr0; /* 00h */
+ uint32_t eflags; /* 04h */
+ uint32_t eip; /* 08h */
+ uint32_t edi; /* 0Ch */
+ uint32_t esi; /* 10h */
+ uint32_t ebp; /* 14h */
+ uint32_t esp; /* 18h */
+ uint32_t ebx; /* 1Ch */
+ uint32_t edx; /* 20h */
+ uint32_t ecx; /* 24h */
+ uint32_t eax; /* 28h */
+ uint32_t dr6; /* 2Ch */
+ uint32_t dr7; /* 30h */
+ uint32_t tr; /* 34h */
+ uint32_t ldt; /* 38h */
+ uint32_t gs; /* 3Ch */
+ uint32_t fs; /* 40h */
+ uint32_t ds; /* 44h */
+ uint32_t ss; /* 4Ch */
+ uint32_t cs; /* 48h */
+ uint32_t es; /* 50h */
+ ldal3_desc tss_desc; /* 54h */
+ ldal3_desc idt_desc; /* 60h */
+ ldal3_desc gdt_desc; /* 6Ch */
+ ldal3_desc ldt_desc; /* 78h */
+ ldal3_desc gs_desc; /* 84h */
+ ldal3_desc fs_desc; /* 90h */
+ ldal3_desc ds_desc; /* 9Ch */
+ ldal3_desc ss_desc; /* A8h */
+ ldal3_desc cs_desc; /* B4h */
+ ldal3_desc es_desc; /* C0h */
+} ldall_386_s;
+ct_assert(sizeof(ldall_386_s) == 0xCC);
+
+#endif
+
+/*
+ * LOADALL emulation assumptions:
+ * - MSW indicates real mode
+ * - Standard real mode CS and SS is to be used
+ * - Segment values of non-RM segments (if any) do not matter
+ * - Standard segment attributes are used
+ */
+
+/* A wrapper for LIDT. */
+void load_idtr(uint32_t base, uint16_t limit);
+#pragma aux load_idtr = \
+ ".286p" \
+ "mov bx, sp" \
+ "lidt fword ptr ss:[bx]"\
+ parm caller reverse [] modify [bx] exact;
+
+/* A wrapper for LGDT. */
+void load_gdtr(uint32_t base, uint16_t limit);
+#pragma aux load_gdtr = \
+ ".286p" \
+ "mov bx, sp" \
+ "lgdt fword ptr ss:[bx]"\
+ parm caller reverse [] modify [bx] exact;
+
+/* Load DS/ES as real-mode segments. May be overwritten later.
+ * NB: Loads SS with 80h to address the LOADALL buffer. Must
+ * not touch CX!
+ */
+void load_rm_segs(int seg_flags);
+#pragma aux load_rm_segs = \
+ "mov ax, 80h" \
+ "mov ss, ax" \
+ "mov ax, ss:[1Eh]" \
+ "mov ds, ax" \
+ "mov ax, ss:[24h]" \
+ "mov es, ax" \
+ parm [cx] nomemory modify nomemory;
+
+/* Briefly switch to protected mode and load ES and/or DS if necessary.
+ * NB: Trashes high bits of EAX, but that should be safe. Expects flags
+ * in CX.
+ */
+void load_pm_segs(void);
+#pragma aux load_pm_segs = \
+ ".386p" \
+ "smsw ax" \
+ "inc ax" \
+ "lmsw ax" \
+ "mov ax, 8" \
+ "test cx, 1" \
+ "jz skip_es" \
+ "mov es, ax" \
+ "skip_es:" \
+ "test cx, 2" \
+ "jz skip_ds" \
+ "mov bx,ss:[00h]" \
+ "mov ss:[08h], bx" \
+ "mov bx,ss:[02h]" \
+ "mov ss:[0Ah], bx" \
+ "mov bx,ss:[04h]" \
+ "mov ss:[0Ch], bx" \
+ "mov ds, ax" \
+ "skip_ds:" \
+ "mov eax, cr0" \
+ "dec ax" \
+ "mov cr0, eax" \
+ parm nomemory modify nomemory;
+
+/* Complete LOADALL emulation: Restore general-purpose registers, stack
+ * pointer, and CS:IP. NB: The LOADALL instruction stores registers in
+ * the same order as PUSHA. Surprise, surprise!
+ */
+void ldall_finish(void);
+#pragma aux ldall_finish = \
+ ".286" \
+ "mov sp, 26h" \
+ "popa" \
+ "mov sp, ss:[2Ch]" \
+ "sub sp, 6" \
+ "mov ss, ss:[20h]" \
+ "iret" \
+ parm nomemory modify nomemory aborts;
+
+#ifdef EMU_386_LOADALL
+
+/* 386 version of the above. */
+void ldal3_finish(void);
+#pragma aux ldal3_finish = \
+ ".386" \
+ "mov sp, 28h" \
+ "popad" \
+ "mov sp, ss:[18h]" \
+ "sub sp, 6" \
+ "mov ss, ss:[48h]" \
+ "iret" \
+ parm nomemory modify nomemory aborts;
+
+/* 386 version of load_rm_segs.
+ * NB: Must not touch CX!
+ */
+void load_rm_seg3(int seg_flags, uint16_t ss_base);
+#pragma aux load_rm_seg3 = \
+ "mov ss, ax" \
+ "mov ax, ss:[44h]" \
+ "mov ds, ax" \
+ "mov ax, ss:[50h]" \
+ "mov es, ax" \
+ parm [ax] [cx] nomemory modify nomemory;
+
+#endif
+
+#define LOAD_ES 0x01 /* ES needs to be loaded in protected mode. */
+#define LOAD_DS 0x02 /* DS needs to be loaded in protected mode. */
+
+/*
+ * The invalid opcode handler exists to work around fishy application
+ * code and paper over CPU generation differences:
+ *
+ * - Skip redundant LOCK prefixes (allowed on 8086, #UD on 286+).
+ * - Emulate just enough of 286 LOADALL.
+ *
+ */
+void BIOSCALL inv_op_handler(uint16_t ds, uint16_t es, pusha_regs_t gr, volatile iret_addr_t ra)
+{
+ void __far *ins = ra.cs :> ra.ip;
+
+ if (*(uint8_t __far *)ins == 0xF0) {
+ /* LOCK prefix - skip over it and try again. */
+ ++ra.ip;
+ } else if (*(uint16_t __far *)ins == 0x050F) {
+ /* 286 LOADALL. NB: Same opcode as SYSCALL. */
+ ldall_286_s __far *ldbuf = 0 :> 0x800;
+ iret_addr_t __far *ret_addr;
+ uint32_t seg_base;
+ int seg_flags = 0;
+
+ /* One of the challenges is that we must restore SS:SP as well
+ * as CS:IP and FLAGS from the LOADALL buffer. We copy CS/IP/FLAGS
+ * from the buffer just below the SS:SP values from the buffer so
+ * that we can eventually IRET to the desired CS/IP/FLAGS/SS/SP
+ * values in one go.
+ */
+ ret_addr = ldbuf->ss :> (ldbuf->sp - sizeof(iret_addr_t));
+ ret_addr->ip = ldbuf->ip;
+ ret_addr->cs = ldbuf->cs;
+ ret_addr->flags.u.r16.flags = ldbuf->flags;
+
+ /* Examine ES/DS. */
+ seg_base = ldbuf->es_desc.base_lo | (uint32_t)ldbuf->es_desc.base_hi << 16;
+ if (seg_base != (uint32_t)ldbuf->es << 4)
+ seg_flags |= LOAD_ES;
+ seg_base = ldbuf->ds_desc.base_lo | (uint32_t)ldbuf->ds_desc.base_hi << 16;
+ if (seg_base != (uint32_t)ldbuf->ds << 4)
+ seg_flags |= LOAD_DS;
+
+ /* The LOADALL buffer doubles as a tiny GDT. */
+ load_gdtr(0x800, 4 * 8 - 1);
+
+ /* Store the ES base/limit/attributes in the unused words (GDT selector 8). */
+ ldbuf->unused2[0] = ldbuf->es_desc.limit;
+ ldbuf->unused2[1] = ldbuf->es_desc.base_lo;
+ ldbuf->unused2[2] = (ldbuf->es_desc.attr << 8) | ldbuf->es_desc.base_hi;
+ ldbuf->unused2[3] = 0;
+
+ /* Store the DS base/limit/attributes in other unused words. */
+ ldbuf->unused1[0] = ldbuf->ds_desc.limit;
+ ldbuf->unused1[1] = ldbuf->ds_desc.base_lo;
+ ldbuf->unused1[2] = (ldbuf->ds_desc.attr << 8) | ldbuf->ds_desc.base_hi;
+
+ /* Load the IDTR as specified. */
+ seg_base = ldbuf->idt_desc.base_lo | (uint32_t)ldbuf->idt_desc.base_hi << 16;
+ load_idtr(seg_base, ldbuf->idt_desc.limit);
+
+ /* Do the tricky bits now. */
+ load_rm_segs(seg_flags);
+ load_pm_segs();
+ ldall_finish();
+#ifdef EMU_386_LOADALL
+ } else if (*(uint16_t __far *)ins == 0x070F) {
+ /* 386 LOADALL. NB: Same opcode as SYSRET. */
+ ldall_386_s __far *ldbuf = (void __far *)es :> gr.u.r16.di; /* Assume 16-bit value in EDI. */
+ ldall_286_s __far *ldbuf2 = 0 :> 0x800;
+ iret_addr_t __far *ret_addr;
+ uint32_t seg_base;
+ int seg_flags = 0;
+
+ /* NB: BIG FAT ASSUMPTION! Users of 386 LOADALL are assumed to also
+ * have a 286 LOADALL buffer at physical address 800h. We use unused fields
+ * in that buffer for temporary storage.
+ */
+
+ /* Set up return stack. */
+ ret_addr = ldbuf->ss :> (ldbuf->esp - sizeof(iret_addr_t));
+ ret_addr->ip = ldbuf->eip;
+ ret_addr->cs = ldbuf->cs;
+ ret_addr->flags.u.r16.flags = ldbuf->eflags;
+
+ /* Examine ES/DS. */
+ seg_base = ldbuf->es_desc.base;
+ if (seg_base != (uint32_t)ldbuf->es << 4)
+ seg_flags |= LOAD_ES;
+ seg_base = ldbuf->ds_desc.base;
+ if (seg_base != (uint32_t)ldbuf->ds << 4)
+ seg_flags |= LOAD_DS;
+
+ /* The LOADALL buffer doubles as a tiny GDT. */
+ load_gdtr(0x800, 4 * 8 - 1);
+
+ /* Store the ES base/limit/attributes in the unused words (GDT selector 8). */
+ ldbuf2->unused2[0] = ldbuf->es_desc.limit;
+ ldbuf2->unused2[1] = (uint16_t)ldbuf->es_desc.base;
+ ldbuf2->unused2[2] = (ldbuf->es_desc.attr & 0xFF00) | (ldbuf->es_desc.base >> 16);
+ ldbuf2->unused2[3] = 0;
+
+ /* Store the DS base/limit/attributes in other unused words. */
+ ldbuf2->unused1[0] = ldbuf->ds_desc.limit;
+ ldbuf2->unused1[1] = (uint16_t)ldbuf->ds_desc.base;
+ ldbuf2->unused1[2] = (ldbuf->ds_desc.attr & 0xFF00) | (ldbuf->ds_desc.base >> 16);
+
+ /* Load the IDTR as specified. */
+ seg_base = ldbuf->idt_desc.base;
+ load_idtr(seg_base, ldbuf->idt_desc.limit);
+
+ /* Do the tricky bits now. */
+ load_rm_seg3(es, seg_flags);
+ load_pm_segs();
+ ldal3_finish();
+#endif
+ } else {
+ /* There isn't much point in executing the invalid opcode handler
+ * in an endless loop, so halt right here.
+ */
+ int_enable();
+ halt_forever();
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/keyboard.c b/src/VBox/Devices/PC/BIOS/keyboard.c
new file mode 100644
index 00000000..36867322
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/keyboard.c
@@ -0,0 +1,822 @@
+/* $Id: keyboard.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "inlines.h"
+#include "biosint.h"
+
+#if DEBUG_INT16
+# define BX_DEBUG_INT16(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT16(...)
+#endif
+
+extern void post(void);
+#pragma aux post "*";
+
+void jmp_post(void);
+#pragma aux jmp_post = "jmp far ptr post" aborts;
+
+extern void eoi_master_pic(void); /* in assembly code */
+#pragma aux eoi_master_pic "*";
+
+/* Manually save/restore BP around invoking user Ctrl-Break handler.
+ * The handler could conceivably clobber BP and the compiler does not
+ * believe us when we say 'modify [bp]' (BP is considered unalterable).
+ */
+void int_1b(void);
+#pragma aux int_1b = \
+ "push bp" \
+ "int 1Bh" \
+ "pop bp" \
+ value [bp] modify [bp];
+
+
+#define none 0
+#define MAX_SCAN_CODE 0x58
+
+struct {
+ uint16_t normal;
+ uint16_t shift;
+ uint16_t control;
+ uint16_t alt;
+ uint8_t lock_flags;
+} static const scan_to_scanascii[MAX_SCAN_CODE + 1] = {
+ { none, none, none, none, none },
+ { 0x011b, 0x011b, 0x011b, 0x0100, none }, /* escape */
+ { 0x0231, 0x0221, none, 0x7800, none }, /* 1! */
+ { 0x0332, 0x0340, 0x0300, 0x7900, none }, /* 2@ */
+ { 0x0433, 0x0423, none, 0x7a00, none }, /* 3# */
+ { 0x0534, 0x0524, none, 0x7b00, none }, /* 4$ */
+ { 0x0635, 0x0625, none, 0x7c00, none }, /* 5% */
+ { 0x0736, 0x075e, 0x071e, 0x7d00, none }, /* 6^ */
+ { 0x0837, 0x0826, none, 0x7e00, none }, /* 7& */
+ { 0x0938, 0x092a, none, 0x7f00, none }, /* 8* */
+ { 0x0a39, 0x0a28, none, 0x8000, none }, /* 9( */
+ { 0x0b30, 0x0b29, none, 0x8100, none }, /* 0) */
+ { 0x0c2d, 0x0c5f, 0x0c1f, 0x8200, none }, /* -_ */
+ { 0x0d3d, 0x0d2b, none, 0x8300, none }, /* =+ */
+ { 0x0e08, 0x0e08, 0x0e7f, none, none }, /* backspace */
+ { 0x0f09, 0x0f00, none, none, none }, /* tab */
+ { 0x1071, 0x1051, 0x1011, 0x1000, 0x40 }, /* Q */
+ { 0x1177, 0x1157, 0x1117, 0x1100, 0x40 }, /* W */
+ { 0x1265, 0x1245, 0x1205, 0x1200, 0x40 }, /* E */
+ { 0x1372, 0x1352, 0x1312, 0x1300, 0x40 }, /* R */
+ { 0x1474, 0x1454, 0x1414, 0x1400, 0x40 }, /* T */
+ { 0x1579, 0x1559, 0x1519, 0x1500, 0x40 }, /* Y */
+ { 0x1675, 0x1655, 0x1615, 0x1600, 0x40 }, /* U */
+ { 0x1769, 0x1749, 0x1709, 0x1700, 0x40 }, /* I */
+ { 0x186f, 0x184f, 0x180f, 0x1800, 0x40 }, /* O */
+ { 0x1970, 0x1950, 0x1910, 0x1900, 0x40 }, /* P */
+ { 0x1a5b, 0x1a7b, 0x1a1b, none, none }, /* [{ */
+ { 0x1b5d, 0x1b7d, 0x1b1d, none, none }, /* ]} */
+ { 0x1c0d, 0x1c0d, 0x1c0a, none, none }, /* Enter */
+ { none, none, none, none, none }, /* L Ctrl */
+ { 0x1e61, 0x1e41, 0x1e01, 0x1e00, 0x40 }, /* A */
+ { 0x1f73, 0x1f53, 0x1f13, 0x1f00, 0x40 }, /* S */
+ { 0x2064, 0x2044, 0x2004, 0x2000, 0x40 }, /* D */
+ { 0x2166, 0x2146, 0x2106, 0x2100, 0x40 }, /* F */
+ { 0x2267, 0x2247, 0x2207, 0x2200, 0x40 }, /* G */
+ { 0x2368, 0x2348, 0x2308, 0x2300, 0x40 }, /* H */
+ { 0x246a, 0x244a, 0x240a, 0x2400, 0x40 }, /* J */
+ { 0x256b, 0x254b, 0x250b, 0x2500, 0x40 }, /* K */
+ { 0x266c, 0x264c, 0x260c, 0x2600, 0x40 }, /* L */
+ { 0x273b, 0x273a, none, none, none }, /* ;: */
+ { 0x2827, 0x2822, none, none, none }, /* '" */
+ { 0x2960, 0x297e, none, none, none }, /* `~ */
+ { none, none, none, none, none }, /* L shift */
+ { 0x2b5c, 0x2b7c, 0x2b1c, none, none }, /* |\ */
+ { 0x2c7a, 0x2c5a, 0x2c1a, 0x2c00, 0x40 }, /* Z */
+ { 0x2d78, 0x2d58, 0x2d18, 0x2d00, 0x40 }, /* X */
+ { 0x2e63, 0x2e43, 0x2e03, 0x2e00, 0x40 }, /* C */
+ { 0x2f76, 0x2f56, 0x2f16, 0x2f00, 0x40 }, /* V */
+ { 0x3062, 0x3042, 0x3002, 0x3000, 0x40 }, /* B */
+ { 0x316e, 0x314e, 0x310e, 0x3100, 0x40 }, /* N */
+ { 0x326d, 0x324d, 0x320d, 0x3200, 0x40 }, /* M */
+ { 0x332c, 0x333c, none, none, none }, /* ,< */
+ { 0x342e, 0x343e, none, none, none }, /* .> */
+ { 0x352f, 0x353f, none, none, none }, /* /? */
+ { none, none, none, none, none }, /* R Shift */
+ { 0x372a, 0x372a, none, none, none }, /* * */
+ { none, none, none, none, none }, /* L Alt */
+ { 0x3920, 0x3920, 0x3920, 0x3920, none }, /* space */
+ { none, none, none, none, none }, /* caps lock */
+ { 0x3b00, 0x5400, 0x5e00, 0x6800, none }, /* F1 */
+ { 0x3c00, 0x5500, 0x5f00, 0x6900, none }, /* F2 */
+ { 0x3d00, 0x5600, 0x6000, 0x6a00, none }, /* F3 */
+ { 0x3e00, 0x5700, 0x6100, 0x6b00, none }, /* F4 */
+ { 0x3f00, 0x5800, 0x6200, 0x6c00, none }, /* F5 */
+ { 0x4000, 0x5900, 0x6300, 0x6d00, none }, /* F6 */
+ { 0x4100, 0x5a00, 0x6400, 0x6e00, none }, /* F7 */
+ { 0x4200, 0x5b00, 0x6500, 0x6f00, none }, /* F8 */
+ { 0x4300, 0x5c00, 0x6600, 0x7000, none }, /* F9 */
+ { 0x4400, 0x5d00, 0x6700, 0x7100, none }, /* F10 */
+ { none, none, none, none, none }, /* Num Lock */
+ { none, none, none, none, none }, /* Scroll Lock */
+ { 0x4700, 0x4737, 0x7700, none, 0x20 }, /* 7 Home */
+ { 0x4800, 0x4838, none, none, 0x20 }, /* 8 UP */
+ { 0x4900, 0x4939, 0x8400, none, 0x20 }, /* 9 PgUp */
+ { 0x4a2d, 0x4a2d, none, none, none }, /* - */
+ { 0x4b00, 0x4b34, 0x7300, none, 0x20 }, /* 4 Left */
+ { 0x4c00, 0x4c35, none, none, 0x20 }, /* 5 */
+ { 0x4d00, 0x4d36, 0x7400, none, 0x20 }, /* 6 Right */
+ { 0x4e2b, 0x4e2b, none, none, none }, /* + */
+ { 0x4f00, 0x4f31, 0x7500, none, 0x20 }, /* 1 End */
+ { 0x5000, 0x5032, none, none, 0x20 }, /* 2 Down */
+ { 0x5100, 0x5133, 0x7600, none, 0x20 }, /* 3 PgDn */
+ { 0x5200, 0x5230, none, none, 0x20 }, /* 0 Ins */
+ { 0x5300, 0x532e, none, none, 0x20 }, /* Del */
+ { none, none, none, none, none },
+ { none, none, none, none, none },
+ { 0x565c, 0x567c, none, none, none }, /* \| */
+ { 0x8500, 0x8700, 0x8900, 0x8b00, none }, /* F11 */
+ { 0x8600, 0x8800, 0x8a00, 0x8c00, none } /* F12 */
+};
+
+
+/* Keyboard initialization. */
+
+//--------------------------------------------------------------------------
+// keyboard_panic
+//--------------------------------------------------------------------------
+void keyboard_panic(uint16_t status)
+{
+ // If you're getting a 993 keyboard panic here,
+ // please see the comment in keyboard_init
+
+ BX_PANIC("Keyboard error:%u\n",status);
+}
+
+
+//--------------------------------------------------------------------------
+// keyboard_init
+//--------------------------------------------------------------------------
+// this file is based on LinuxBIOS implementation of keyboard.c
+// could convert to #asm to gain space
+void BIOSCALL keyboard_init(void)
+{
+ uint16_t max;
+
+ /* ------------------- controller side ----------------------*/
+ /* send cmd = 0xAA, self test 8042 */
+ outb(0x64, 0xaa);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ( (inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x00);
+ if (max==0x0) keyboard_panic(00);
+
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x01);
+ if (max==0x0) keyboard_panic(01);
+
+ /* read self-test result, 0x55 should be returned from 0x60 */
+ if ((inb(0x60) != 0x55)){
+ keyboard_panic(991);
+ }
+
+ /* send cmd = 0xAB, keyboard interface test */
+ outb(0x64,0xab);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x10);
+ if (max==0x0) keyboard_panic(10);
+
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x11);
+ if (max==0x0) keyboard_panic(11);
+
+ /* read keyboard interface test result, */
+ /* 0x00 should be returned form 0x60 */
+ if ((inb(0x60) != 0x00)) {
+ keyboard_panic(992);
+ }
+
+ /* ------------------- keyboard side ------------------------*/
+ /* reset keyboard and self test (keyboard side) */
+ /* also enables the keyboard interface */
+ outb(0x60, 0xff);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x20);
+ if (max==0x0) keyboard_panic(20);
+
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x21);
+ if (max==0x0) keyboard_panic(21);
+
+ /* keyboard should return ACK */
+ if ((inb(0x60) != 0xfa)) {
+ keyboard_panic(993);
+ }
+
+ /* Wait for reset to complete */
+ while ( (inb(0x64) & 0x01) == 0 ) outb(0x80, 0x31);
+
+ if ((inb(0x60) != 0xaa && inb(0x60) != 0xaa)) {
+ keyboard_panic(994);
+ }
+
+ /* Disable keyboard */
+ outb(0x60, 0xf5);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x40);
+ if (max==0x0) keyboard_panic(40);
+
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x41);
+ if (max==0x0) keyboard_panic(41);
+
+ /* keyboard should return ACK */
+ if ((inb(0x60) != 0xfa)) {
+ keyboard_panic(995);
+ }
+
+ /* Write Keyboard Mode */
+ outb(0x64, 0x60);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x50);
+ if (max==0x0) keyboard_panic(50);
+
+ /* send cmd: scan code convert, disable mouse, enable IRQ 1 */
+ outb(0x60, 0x65);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x60);
+ if (max==0x0) keyboard_panic(60);
+
+ /* Enable keyboard */
+ outb(0x60, 0xf4);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x70);
+ if (max==0x0) keyboard_panic(70);
+
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x71);
+ if (max==0x0) keyboard_panic(70);
+
+ /* keyboard should return ACK */
+ if ((inb(0x60) != 0xfa)) {
+ keyboard_panic(996);
+ }
+
+ /* Enable aux interface */
+ outb(0x64,0xa8);
+
+ /* While we're here, disable the A20 gate. Required for
+ * compatibility with the IBM PC and DOS.
+ */
+ set_enable_a20(0);
+}
+
+
+unsigned int enqueue_key(uint8_t scan_code, uint8_t ascii_code)
+{
+ uint16_t buffer_start, buffer_end, buffer_head, buffer_tail, temp_tail;
+
+#if VBOX_BIOS_CPU >= 80286
+ buffer_start = read_word(0x0040, 0x0080);
+ buffer_end = read_word(0x0040, 0x0082);
+#else
+ buffer_start = 0x001E;
+ buffer_end = 0x003E;
+#endif
+
+ buffer_head = read_word(0x0040, 0x001A);
+ buffer_tail = read_word(0x0040, 0x001C);
+
+ temp_tail = buffer_tail;
+ buffer_tail += 2;
+ if (buffer_tail >= buffer_end)
+ buffer_tail = buffer_start;
+
+ if (buffer_tail == buffer_head)
+ return(0);
+
+ write_byte(0x0040, temp_tail, ascii_code);
+ write_byte(0x0040, temp_tail+1, scan_code);
+ write_word(0x0040, 0x001C, buffer_tail);
+ return(1);
+}
+
+
+/* Keyboard hardware interrupt handler. */
+/// @todo should this be declared as taking arguments at all?
+void BIOSCALL int09_function(uint16_t ES, uint16_t DI, uint16_t SI, uint16_t BP, uint16_t SP,
+ uint16_t BX, uint16_t DX, uint16_t CX, uint16_t AX)
+{
+ uint8_t scancode, asciicode, shift_flags;
+ uint8_t mf2_flags, mf2_state, flag;
+
+ //
+ // DS has been set to F000 before call
+ //
+
+
+ scancode = GET_AL();
+
+ if (scancode == 0) {
+ BX_INFO("KBD: int09 handler: AL=0\n");
+ return;
+ }
+
+ mf2_flags = read_byte(0x0040, 0x18);
+ mf2_state = read_byte(0x0040, 0x96);
+ shift_flags = read_byte(0x0040, 0x17);
+ asciicode = 0;
+
+ switch (scancode) {
+ case 0x3a: /* Caps Lock press */
+ shift_flags ^= 0x40;
+ write_byte(0x0040, 0x17, shift_flags);
+ mf2_flags |= 0x40;
+ write_byte(0x0040, 0x18, mf2_flags);
+ break;
+ case 0xba: /* Caps Lock release */
+ mf2_flags &= ~0x40;
+ write_byte(0x0040, 0x18, mf2_flags);
+ break;
+
+ case 0x2a: /* L Shift press */
+ case 0xaa: /* L Shift release */
+ case 0x36: /* R Shift press */
+ case 0xb6: /* R Shift release */
+ /* If this was an extended (i.e. faked) key, leave flags alone. */
+ if (!(mf2_state & 0x02)) {
+ flag = (scancode & 0x7f) == 0x2a ? 0x02 : 0x01;
+ if (scancode & 0x80)
+ shift_flags &= ~flag;
+ else
+ shift_flags |= flag;
+ write_byte(0x0040, 0x17, shift_flags);
+ }
+ break;
+
+ case 0x1d: /* Ctrl press */
+ if ((mf2_state & 0x01) == 0) {
+ shift_flags |= 0x04;
+ write_byte(0x0040, 0x17, shift_flags);
+ if (mf2_state & 0x02) {
+ mf2_state |= 0x04;
+ write_byte(0x0040, 0x96, mf2_state);
+ } else {
+ mf2_flags |= 0x01;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ }
+ break;
+ case 0x9d: /* Ctrl release */
+ if ((mf2_state & 0x01) == 0) {
+ shift_flags &= ~0x04;
+ write_byte(0x0040, 0x17, shift_flags);
+ if (mf2_state & 0x02) {
+ mf2_state &= ~0x04;
+ write_byte(0x0040, 0x96, mf2_state);
+ } else {
+ mf2_flags &= ~0x01;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ }
+ break;
+
+ case 0x38: /* Alt press */
+ shift_flags |= 0x08;
+ write_byte(0x0040, 0x17, shift_flags);
+ if (mf2_state & 0x02) {
+ mf2_state |= 0x08;
+ write_byte(0x0040, 0x96, mf2_state);
+ } else {
+ mf2_flags |= 0x02;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ break;
+ case 0xb8: /* Alt release */
+ shift_flags &= ~0x08;
+ write_byte(0x0040, 0x17, shift_flags);
+ if (mf2_state & 0x02) {
+ mf2_state &= ~0x08;
+ write_byte(0x0040, 0x96, mf2_state);
+ } else {
+ mf2_flags &= ~0x02;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ break;
+
+ case 0x45: /* Num Lock/Pause press */
+ if ((mf2_state & 0x03) == 0) {
+ /* Num Lock */
+ mf2_flags |= 0x20;
+ write_byte(0x0040, 0x18, mf2_flags);
+ shift_flags ^= 0x20;
+ write_byte(0x0040, 0x17, shift_flags);
+ } else {
+ /* Pause */
+ mf2_flags |= 0x08; /* Set the suspend flag */
+ write_byte(0x0040, 0x18, mf2_flags);
+
+ /* Enable keyboard and send EOI. */
+ outp(0x64, 0xae);
+ eoi_master_pic();
+
+ while (read_byte(0x0040, 0x18) & 0x08)
+ ; /* Hold on and wait... */
+
+ /// @todo We will send EOI again (and enable keyboard) on the way out; we shouldn't
+ }
+ break;
+ case 0xc5: /* Num Lock/Pause release */
+ if ((mf2_state & 0x03) == 0) {
+ mf2_flags &= ~0x20;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ break;
+
+ case 0x46: /* Scroll Lock/Break press */
+ if (mf2_state & 0x02) { /* E0 prefix? */
+ /* Zap the keyboard buffer. */
+ write_word(0x0040, 0x001c, read_word(0x0040, 0x001a));
+
+ write_byte(0x0040, 0x71, 0x80); /* Set break flag */
+ outp(0x64, 0xae); /* Enable keyboard */
+ int_1b(); /* Invoke user handler */
+ enqueue_key(0, 0); /* Dummy key press*/
+ } else {
+ mf2_flags |= 0x10;
+ write_byte(0x0040, 0x18, mf2_flags);
+ shift_flags ^= 0x10;
+ write_byte(0x0040, 0x17, shift_flags);
+ }
+ break;
+
+ case 0xc6: /* Scroll Lock/Break release */
+ if (!(mf2_state & 0x02)) { /* Only if no E0 prefix */
+ mf2_flags &= ~0x10;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ break;
+
+ case 0x54: /* SysRq press */
+ if (!(mf2_flags & 0x04)) { /* If not already down */
+ mf2_flags |= 0x04;
+ write_byte(0x0040, 0x18, mf2_flags);
+ /// @todo EOI/enable kbd/enable interrupts/call INT 15h/8500h
+ }
+ break;
+
+ case 0xd4: /* SysRq release */
+ mf2_flags &= ~0x04;
+ write_byte(0x0040, 0x18, mf2_flags);
+ /// @todo EOI/enable kbd/enable interrupts/call INT 15h/8501h
+ break;
+
+ case 0x53: /* Del press */
+ if ((shift_flags & 0x0c) == 0x0c) {
+ /* Indicate a warm boot. */
+ write_word(0x0040,0x0072, 0x1234);
+ jmp_post();
+ }
+ /* fall through */
+
+ default:
+ /* Check if suspend flag set. */
+ if (mf2_flags & 0x08) {
+ /* Pause had been pressed. Clear suspend flag and do nothing. */
+ mf2_flags &= ~0x08;
+ write_byte(0x0040, 0x18, mf2_flags);
+ return;
+ }
+
+ if (scancode & 0x80) {
+ /* Set ack/resend flags if appropriate. */
+ if (scancode == 0xFA) {
+ flag = read_byte(0x0040, 0x97) | 0x10;
+ write_byte(0x0040, 0x97, flag);
+ } else if (scancode == 0xFE) {
+ flag = read_byte(0x0040, 0x97) | 0x20;
+ write_byte(0x0040, 0x97, flag);
+ }
+ break; /* toss key releases ... */
+ }
+ if (scancode > MAX_SCAN_CODE) {
+ BX_INFO("KBD: int09h_handler(): unknown scancode read: 0x%02x!\n", scancode);
+ return;
+ }
+ if (shift_flags & 0x08) { /* ALT */
+ asciicode = scan_to_scanascii[scancode].alt;
+ scancode = scan_to_scanascii[scancode].alt >> 8;
+ } else if (shift_flags & 0x04) { /* CONTROL */
+ asciicode = scan_to_scanascii[scancode].control;
+ scancode = scan_to_scanascii[scancode].control >> 8;
+ } else if (((mf2_state & 0x02) > 0) && ((scancode >= 0x47) && (scancode <= 0x53))) {
+ /* extended keys handling */
+ asciicode = 0xe0;
+ scancode = scan_to_scanascii[scancode].normal >> 8;
+ } else if (shift_flags & 0x03) { /* LSHIFT + RSHIFT */
+ /* check if lock state should be ignored
+ * because a SHIFT key are pressed */
+
+ if (shift_flags & scan_to_scanascii[scancode].lock_flags) {
+ asciicode = scan_to_scanascii[scancode].normal;
+ scancode = scan_to_scanascii[scancode].normal >> 8;
+ } else {
+ asciicode = scan_to_scanascii[scancode].shift;
+ scancode = scan_to_scanascii[scancode].shift >> 8;
+ }
+ } else {
+ /* check if lock is on */
+ if (shift_flags & scan_to_scanascii[scancode].lock_flags) {
+ asciicode = scan_to_scanascii[scancode].shift;
+ scancode = scan_to_scanascii[scancode].shift >> 8;
+ } else {
+ asciicode = scan_to_scanascii[scancode].normal;
+ scancode = scan_to_scanascii[scancode].normal >> 8;
+ }
+ }
+ if (scancode==0 && asciicode==0) {
+ BX_INFO("KBD: int09h_handler(): scancode & asciicode are zero?\n");
+ }
+ enqueue_key(scancode, asciicode);
+ break;
+ }
+ if ((scancode & 0x7f) != 0x1d) {
+ mf2_state &= ~0x01;
+ }
+ mf2_state &= ~0x02;
+ write_byte(0x0040, 0x96, mf2_state);
+}
+
+unsigned int dequeue_key(uint8_t __far *scan_code, uint8_t __far *ascii_code, unsigned incr)
+{
+ uint16_t buffer_start, buffer_end, buffer_head, buffer_tail;
+ uint8_t acode, scode;
+
+#if VBOX_BIOS_CPU >= 80286
+ buffer_start = read_word(0x0040, 0x0080);
+ buffer_end = read_word(0x0040, 0x0082);
+#else
+ buffer_start = 0x001E;
+ buffer_end = 0x003E;
+#endif
+
+ buffer_head = read_word(0x0040, 0x001a);
+ buffer_tail = read_word(0x0040, 0x001c);
+
+ if (buffer_head != buffer_tail) {
+ acode = read_byte(0x0040, buffer_head);
+ scode = read_byte(0x0040, buffer_head+1);
+ *ascii_code = acode;
+ *scan_code = scode;
+ BX_DEBUG_INT16("dequeue_key: ascii=%02x scan=%02x \n", acode, scode);
+
+ if (incr) {
+ buffer_head += 2;
+ if (buffer_head >= buffer_end)
+ buffer_head = buffer_start;
+ write_word(0x0040, 0x001a, buffer_head);
+ }
+ return(1);
+ }
+ else {
+ return(0);
+ }
+}
+
+
+/// @todo move somewhere else?
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define SP r.gr.u.r16.sp
+#define FLAGS r.ra.flags.u.r16.flags
+#define IFLGS r.ifl
+
+/* Interrupt 16h service implementation. */
+
+void BIOSCALL int16_function(volatile kbd_regs_t r)
+{
+ uint8_t scan_code, ascii_code, shift_flags, led_flags, count;
+ uint16_t kbd_code, max;
+
+ BX_DEBUG_INT16("int16: AX=%04x BX=%04x CX=%04x DX=%04x \n", AX, BX, CX, DX);
+
+ shift_flags = read_byte(0x0040, 0x17);
+ led_flags = read_byte(0x0040, 0x97);
+ if ((((shift_flags >> 4) & 0x07) ^ (led_flags & 0x07)) != 0) {
+ int_disable(); /// @todo interrupts should be disabled already??
+ outb(0x60, 0xed);
+ while ((inb(0x64) & 0x01) == 0) outb(0x80, 0x21);
+ if ((inb(0x60) == 0xfa)) {
+ led_flags &= 0xc8;
+ led_flags |= ((shift_flags >> 4) & 0x07);
+ outb(0x60, led_flags & 0x07);
+ while ((inb(0x64) & 0x01) == 0)
+ outb(0x80, 0x21);
+ inb(0x60);
+ write_byte(0x0040, 0x97, led_flags);
+ }
+ int_enable();
+ }
+
+ switch (GET_AH()) {
+ case 0x00: /* read keyboard input */
+ if ( !dequeue_key(&scan_code, &ascii_code, 1) ) {
+ BX_PANIC("KBD: int16h: out of keyboard input\n");
+ }
+ if (scan_code !=0 && ascii_code == 0xF0)
+ ascii_code = 0;
+ else if (ascii_code == 0xE0)
+ ascii_code = 0;
+ AX = (scan_code << 8) | ascii_code;
+ break;
+
+ case 0x01: /* check keyboard status */
+ /* Enable interrupts, preserve most flags. Some callers depend on that! */
+ FLAGS = IFLGS;
+ if ( !dequeue_key(&scan_code, &ascii_code, 0) ) {
+ SET_ZF();
+ return;
+ }
+ if (scan_code !=0 && ascii_code == 0xF0)
+ ascii_code = 0;
+ else if (ascii_code == 0xE0)
+ ascii_code = 0;
+ AX = (scan_code << 8) | ascii_code;
+ CLEAR_ZF();
+ break;
+
+ case 0x02: /* get shift flag status */
+ shift_flags = read_byte(0x0040, 0x17);
+ SET_AL(shift_flags);
+ break;
+
+ case 0x05: /* store key-stroke into buffer */
+ if ( !enqueue_key(GET_CH(), GET_CL()) ) {
+ SET_AL(1);
+ }
+ else {
+ SET_AL(0);
+ }
+ break;
+
+ case 0x09: /* GET KEYBOARD FUNCTIONALITY */
+ // bit Bochs Description
+ // 7 0 reserved
+ // 6 0 INT 16/AH=20h-22h supported (122-key keyboard support)
+ // 5 1 INT 16/AH=10h-12h supported (enhanced keyboard support)
+ // 4 1 INT 16/AH=0Ah supported
+ // 3 0 INT 16/AX=0306h supported
+ // 2 0 INT 16/AX=0305h supported
+ // 1 0 INT 16/AX=0304h supported
+ // 0 0 INT 16/AX=0300h supported
+ //
+ SET_AL(0x30);
+ break;
+
+ case 0x0A: /* GET KEYBOARD ID */
+ count = 2;
+ kbd_code = 0x0;
+ /// @todo Might be better to just mask the KB interrupt
+ int_disable();
+ outb(0x60, 0xf2);
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) )
+ inb(0x80);
+ if (max>0x0) {
+ if ((inb(0x60) == 0xfa)) {
+ do {
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) )
+ inb(0x80);
+ if (max>0x0) {
+ kbd_code >>= 8;
+ kbd_code |= (inb(0x60) << 8);
+ }
+ } while (--count>0);
+ }
+ }
+ BX=kbd_code;
+ break;
+
+ case 0x10: /* read MF-II keyboard input */
+ if ( !dequeue_key(&scan_code, &ascii_code, 1) ) {
+ BX_PANIC("KBD: int16h: out of keyboard input\n");
+ }
+ if (scan_code !=0 && ascii_code == 0xF0)
+ ascii_code = 0;
+ AX = (scan_code << 8) | ascii_code;
+ break;
+
+ case 0x11: /* check MF-II keyboard status */
+ /* Enable interrupts, preserve most flags. Some callers depend on that! */
+ FLAGS = IFLGS;
+ if ( !dequeue_key(&scan_code, &ascii_code, 0) ) {
+ SET_ZF();
+ return;
+ }
+ if (scan_code !=0 && ascii_code == 0xF0)
+ ascii_code = 0;
+ AX = (scan_code << 8) | ascii_code;
+ CLEAR_ZF();
+ break;
+
+ case 0x12: /* get extended keyboard status */
+ shift_flags = read_byte(0x0040, 0x17);
+ SET_AL(shift_flags);
+ shift_flags = read_byte(0x0040, 0x18) & 0x73;
+ shift_flags |= read_byte(0x0040, 0x96) & 0x0c;
+ SET_AH(shift_flags);
+ BX_DEBUG_INT16("int16: func 12 sending %04x\n",AX);
+ break;
+
+ case 0x92: /* keyboard capability check called by DOS 5.0+ keyb */
+ SET_AH(0x80); // function int16 ah=0x10-0x12 supported
+ break;
+
+ case 0xA2: /* 122 keys capability check called by DOS 5.0+ keyb */
+ // don't change AH : function int16 ah=0x20-0x22 NOT supported
+ break;
+
+ /// @todo what's the point of handling this??
+#if 0
+ case 0x6F:
+ if (GET_AL() == 0x08)
+ SET_AH(0x02); // unsupported, aka normal keyboard
+#endif
+
+ default:
+ BX_INFO("KBD: unsupported int 16h function %02x\n", GET_AH());
+ BX_INFO("AX=%04x BX=%04x CX=%04x DX=%04x \n", AX, BX, CX, DX);
+ }
+ BX_DEBUG_INT16("int16ex: AX=%04x BX=%04x CX=%04x DX=%04x \n", AX, BX, CX, DX);
+}
diff --git a/src/VBox/Devices/PC/BIOS/logo.c b/src/VBox/Devices/PC/BIOS/logo.c
new file mode 100644
index 00000000..35638455
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/logo.c
@@ -0,0 +1,558 @@
+/* $Id: logo.c $ */
+/** @file
+ * Stuff for drawing the BIOS logo.
+ */
+
+/*
+ * Copyright (C) 2004-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+#include "ebda.h"
+
+#define WAIT_HZ 64
+#define WAIT_MS 16
+
+#define F12_SCAN_CODE 0x86
+#define F12_WAIT_TIME (3 * WAIT_HZ) /* 3 seconds. Used only if logo disabled. */
+
+#include <VBox/bioslogo.h>
+
+/**
+ * Set video mode (VGA).
+ * @param mode New video mode.
+ */
+void set_mode(uint8_t mode);
+#pragma aux set_mode = \
+ "mov ah, 0" \
+ "int 10h" \
+ parm [al] modify [ax] nomemory;
+
+
+/**
+ * Set VESA video mode.
+ * @param mode New video mode.
+ */
+uint16_t vesa_set_mode(uint16_t mode);
+#pragma aux vesa_set_mode = \
+ "mov ax, 4F02h" \
+ "int 10h" \
+ parm [bx] modify [ax] nomemory;
+
+/**
+ * Get current VESA video mode.
+ * @param mode New video mode.
+ */
+uint16_t vesa_get_mode(uint16_t __far *mode);
+#pragma aux vesa_get_mode = \
+ "mov ax, 4F03h" \
+ "int 10h" \
+ "mov es:[di], bx" \
+ parm [es di] modify [ax bx] nomemory;
+
+
+/**
+ * Set custom video mode.
+ * @param xres Requested width
+ * @param yres Requested height
+ * @param bpp Requested bits per pixel
+ */
+uint16_t custom_set_mode(uint16_t xres, uint16_t yres, uint8_t bpp);
+#pragma aux custom_set_mode = \
+ "mov ax, 5642h" \
+ "mov bl, 0" \
+ "int 10h" \
+ parm [cx] [dx] [bh] modify [ax] nomemory;
+
+/**
+ * Check for keystroke.
+ * @returns True if keystroke available, False if not.
+ */
+/// @todo INT 16h should already be returning the right value in al; could also use setz
+uint8_t check_for_keystroke(void);
+#pragma aux check_for_keystroke = \
+ "mov ax, 100h" \
+ "int 16h" \
+ "jz no_key" \
+ "mov al, 1" \
+ "jmp done" \
+ "no_key:" \
+ "xor al, al" \
+ "done:" \
+ modify [ax] nomemory;
+
+
+/**
+ * Get keystroke.
+ * @returns BIOS scan code.
+ */
+uint8_t get_keystroke(void);
+#pragma aux get_keystroke = \
+ "xor ax, ax" \
+ "int 16h" \
+ "xchg ah, al" \
+ modify [ax] nomemory;
+
+
+/// @todo This whole business with reprogramming the PIT is rather suspect.
+// The BIOS already has waiting facilities in INT 15h (fn 83h, 86h) which
+// should be utilized instead.
+
+// Set the timer to 16ms ticks (64K / (Hz / (PIT_HZ / 64K)) = count).
+void wait_init(void);
+#pragma aux wait_init = \
+ "mov al, 34h" \
+ "out 43h, al" \
+ "mov al, 0D3h" \
+ "out 40h, al" \
+ "mov al, 048h" \
+ "out 40h, al" \
+ modify [ax] nomemory;
+
+/// @todo using this private interface is not great
+extern void rtc_post(void);
+#pragma aux rtc_post "*";
+
+/* Restore the timer to the default 18.2Hz. Reinitialize the tick
+ * and rollover counts since we've screwed them up by running the
+ * timer at WAIT_HZ for a while.
+ */
+void wait_uninit(void);
+#if VBOX_BIOS_CPU >= 80386
+# pragma aux wait_uninit = \
+ ".386" \
+ "mov al, 34h" \
+ "out 43h, al" \
+ "xor ax, ax" \
+ "out 40h, al" \
+ "out 40h, al" \
+ "pushad" \
+ "push ds" \
+ "mov ds, ax" \
+ "call rtc_post" \
+ "pop ds" \
+ "popad" \
+ modify [ax] nomemory;
+#else
+# pragma aux wait_uninit = \
+ "mov al, 34h" \
+ "out 43h, al" \
+ "xor ax, ax" \
+ "out 40h, al" \
+ "out 40h, al" \
+ "push bp" \
+ "push ds" \
+ "mov ds, ax" \
+ "call rtc_post" \
+ "pop ds" \
+ "pop bp" \
+ modify [ax bx cx dx si di];
+#endif
+
+
+/**
+ * Waits (sleeps) for the given number of ticks.
+ * Checks for keystroke.
+ *
+ * @returns BIOS scan code if available, 0 if not.
+ * @param ticks Number of ticks to sleep.
+ * @param stop_on_key Whether to stop immediately upon keypress.
+ */
+uint8_t wait(uint16_t ticks, uint8_t stop_on_key)
+{
+ long ticks_to_wait, delta;
+ uint16_t old_flags;
+ uint32_t prev_ticks, t;
+ uint8_t scan_code = 0;
+
+ /*
+ * We may or may not be called with interrupts disabled. For the duration
+ * of this function, interrupts must be enabled.
+ */
+ old_flags = int_query();
+ int_enable();
+
+ /*
+ * The 0:046c wraps around at 'midnight' according to a 18.2Hz clock.
+ * We also have to be careful about interrupt storms.
+ */
+ ticks_to_wait = ticks;
+ prev_ticks = read_dword(0x0, 0x46c);
+ do
+ {
+ halt();
+ t = read_dword(0x0, 0x46c);
+ if (t > prev_ticks)
+ {
+ delta = t - prev_ticks; /* The temp var is required or bcc screws up. */
+ ticks_to_wait -= delta;
+ }
+ else if (t < prev_ticks)
+ ticks_to_wait -= t; /* wrapped */
+ prev_ticks = t;
+
+ if (check_for_keystroke())
+ {
+ scan_code = get_keystroke();
+ bios_printf(BIOS_PRINTF_INFO, "Key pressed: %x\n", scan_code);
+ if (stop_on_key)
+ return scan_code;
+ }
+ } while (ticks_to_wait > 0);
+ int_restore(old_flags);
+ return scan_code;
+}
+
+uint8_t read_logo_byte(uint8_t offset)
+{
+ outw(LOGO_IO_PORT, LOGO_CMD_SET_OFFSET | offset);
+ return inb(LOGO_IO_PORT);
+}
+
+uint16_t read_logo_word(uint8_t offset)
+{
+ outw(LOGO_IO_PORT, LOGO_CMD_SET_OFFSET | offset);
+ return inw(LOGO_IO_PORT);
+}
+
+// Hide cursor, clear screen and move cursor to starting position
+void clear_screen(void);
+#pragma aux clear_screen = \
+ "mov ax, 100h" \
+ "mov cx, 1000h" \
+ "int 10h" \
+ "mov ax, 700h" \
+ "mov bh, 7" \
+ "xor cx, cx" \
+ "mov dx, 184Fh" \
+ "int 10h" \
+ "mov ax, 200h" \
+ "xor bx, bx" \
+ "xor dx, dx" \
+ "int 10h" \
+ modify [ax bx cx dx] nomemory;
+
+void print_detected_harddisks(void)
+{
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint8_t hd_count;
+ uint8_t hd_curr = 0;
+ uint8_t ide_ctrl_printed = 0;
+ uint8_t sata_ctrl_printed = 0;
+ uint8_t scsi_ctrl_printed = 0;
+ uint8_t device;
+
+ hd_count = read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdcount);
+
+ for (hd_curr = 0; hd_curr < hd_count; hd_curr++)
+ {
+ device = read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdidmap[hd_curr]);
+
+#ifdef VBOX_WITH_AHCI
+ if (VBOX_IS_AHCI_DEVICE(device))
+ {
+ if (sata_ctrl_printed == 0)
+ {
+ printf("\n\n AHCI controller:");
+ sata_ctrl_printed = 1;
+ }
+
+ printf("\n %d) Hard disk", hd_curr+1);
+
+ }
+ else
+#endif
+#ifdef VBOX_WITH_SCSI
+ if (VBOX_IS_SCSI_DEVICE(device))
+ {
+ if (scsi_ctrl_printed == 0)
+ {
+ printf("\n\n SCSI controller:");
+ scsi_ctrl_printed = 1;
+ }
+
+ printf("\n %d) Hard disk", hd_curr+1);
+
+ }
+ else
+#endif
+ {
+
+ if ((device < 4) && (ide_ctrl_printed == 0))
+ {
+ printf(" IDE controller:");
+ ide_ctrl_printed = 1;
+ }
+ else if ((device >= 4) && (sata_ctrl_printed == 0))
+ {
+ printf("\n\nAHCI controller:\n");
+ sata_ctrl_printed = 1;
+ }
+
+ printf("\n %d) ", hd_curr+1);
+
+ /*
+ * If actual_device is bigger than or equal 4
+ * this is the next controller and
+ * the positions start at the beginning.
+ */
+ if (device >= 4)
+ device -= 4;
+
+ if (device / 2)
+ printf("Secondary ");
+ else
+ printf("Primary ");
+
+ if (device % 2)
+ printf("Slave");
+ else
+ printf("Master");
+ }
+ }
+
+ if ( (ide_ctrl_printed == 0)
+ && (sata_ctrl_printed == 0)
+ && (scsi_ctrl_printed == 0))
+ printf("No hard disks found");
+
+ printf("\n");
+}
+
+uint8_t get_boot_drive(uint8_t scode)
+{
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+
+ /* Check that the scan code is in the range of detected hard disks. */
+ uint8_t hd_count = read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdcount);
+
+ /* The key '1' has scancode 0x02 which represents the first disk */
+ scode -= 2;
+
+ if (scode < hd_count)
+ return scode;
+
+ /* Scancode is higher than number of available devices */
+ return 0xff;
+}
+
+void show_logo(void)
+{
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+ uint8_t f12_pressed = 0;
+ uint8_t scode;
+ uint16_t tmp, i;
+
+ LOGOHDR *logo_hdr = 0;
+ uint8_t is_fade_in, is_fade_out, uBootMenu;
+ uint16_t logo_time;
+ uint16_t old_mode;
+
+
+ // Set PIT to 64hz.
+ wait_init();
+
+ // Get main signature
+ tmp = read_logo_word((uint8_t)&logo_hdr->u16Signature);
+ if (tmp != 0x66BB)
+ goto done;
+
+ // If there is no VBE, just skip this
+ if (vesa_get_mode(&old_mode) != 0x004f )
+ goto done;
+
+ // Get options
+ is_fade_in = read_logo_byte((uint8_t)&logo_hdr->fu8FadeIn);
+ is_fade_out = read_logo_byte((uint8_t)&logo_hdr->fu8FadeOut);
+ logo_time = read_logo_word((uint8_t)&logo_hdr->u16LogoMillies);
+ uBootMenu = read_logo_byte((uint8_t)&logo_hdr->fu8ShowBootMenu);
+
+ // Is Logo disabled?
+ if (!is_fade_in && !is_fade_out && !logo_time)
+ goto done;
+
+ /* Set video mode using private video BIOS interface. */
+ tmp = custom_set_mode(640, 480, 32);
+ /* If custom mode set failed, fall back to VBE. */
+ if (tmp != 0x4F)
+ vesa_set_mode(0x142);
+
+ if (is_fade_in)
+ {
+ for (i = 0; i <= LOGO_SHOW_STEPS; i++)
+ {
+ outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | i);
+ scode = wait(16 / WAIT_MS, 0);
+ if (scode == F12_SCAN_CODE)
+ {
+ f12_pressed = 1;
+ break;
+ }
+ }
+ }
+ else
+ outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | LOGO_SHOW_STEPS);
+
+ // Wait (interval in milliseconds)
+ if (!f12_pressed)
+ {
+ scode = wait(logo_time / WAIT_MS, 1);
+ if (scode == F12_SCAN_CODE)
+ f12_pressed = 1;
+ }
+
+ // Fade out (only if F12 was not pressed)
+ if (is_fade_out && !f12_pressed)
+ {
+ for (i = LOGO_SHOW_STEPS; i > 0 ; i--)
+ {
+ outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | i);
+ scode = wait(16 / WAIT_MS, 0);
+ if (scode == F12_SCAN_CODE)
+ {
+ f12_pressed = 1;
+ break;
+ }
+ }
+ }
+ else if (!f12_pressed)
+ outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | 0);
+
+done:
+ // Clear forced boot drive setting.
+ write_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice, 0);
+
+ // Don't restore previous video mode
+ // The default text mode should be set up. (defect @bugref{1235})
+ set_mode(0x0003);
+
+ // If Setup menu enabled
+ if (uBootMenu)
+ {
+ // If the graphics logo disabled
+ if (!is_fade_in && !is_fade_out && !logo_time)
+ {
+ if (uBootMenu == 2)
+ printf("Press F12 to select boot device.\n");
+
+ // if the user has pressed F12 don't wait here
+ if (!f12_pressed)
+ {
+ // Wait for timeout or keystroke
+ scode = wait(F12_WAIT_TIME, 1);
+ if (scode == F12_SCAN_CODE)
+ f12_pressed = 1;
+ }
+ }
+
+ // If F12 pressed, show boot menu
+ if (f12_pressed)
+ {
+ uint8_t boot_device = 0;
+ uint8_t boot_drive = 0;
+
+ clear_screen();
+
+ // Show menu. Note that some versions of bcc freak out if we split these strings.
+ printf("\nVirtualBox temporary boot device selection\n\nDetected Hard disks:\n\n");
+ print_detected_harddisks();
+ printf("\nOther boot devices:\n f) Floppy\n c) CD-ROM\n l) LAN\n\n b) Continue booting\n");
+
+
+
+ // Wait for keystroke
+ for (;;)
+ {
+ do
+ {
+ scode = wait(WAIT_HZ, 1);
+ } while (scode == 0);
+
+ if (scode == 0x30)
+ {
+ // 'b' ... continue
+ break;
+ }
+
+ // Check if hard disk was selected
+ if ((scode >= 0x02) && (scode <= 0x09))
+ {
+ boot_drive = get_boot_drive(scode);
+
+ /*
+ * 0xff indicates that there is no mapping
+ * from the scan code to a hard drive.
+ * Wait for next keystroke.
+ */
+ if (boot_drive == 0xff)
+ continue;
+
+ write_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDrive, boot_drive);
+ boot_device = 0x02;
+ break;
+ }
+
+ switch (scode)
+ {
+ case 0x21:
+ // Floppy
+ boot_device = 0x01;
+ break;
+ case 0x2e:
+ // CD-ROM
+ boot_device = 0x03;
+ break;
+ case 0x26:
+ // LAN
+ boot_device = 0x04;
+ break;
+ }
+
+ if (boot_device != 0)
+ break;
+ }
+
+ write_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice, boot_device);
+
+ // Switch to text mode. Clears screen and enables cursor again.
+ set_mode(0x0003);
+ }
+ }
+
+ // Restore PIT ticks
+ wait_uninit();
+
+ return;
+}
+
+
+void delay_boot(uint16_t secs)
+{
+ uint16_t i;
+
+ if (!secs)
+ return;
+
+ // Set PIT to 1ms ticks
+ wait_init();
+
+ printf("Delaying boot for %d seconds:", secs);
+ for (i = secs; i > 0; i--)
+ {
+ printf(" %d", i);
+ wait(WAIT_HZ, 0);
+ }
+ printf("\n");
+ // Restore PIT ticks
+ wait_uninit();
+}
diff --git a/src/VBox/Devices/PC/BIOS/makefile b/src/VBox/Devices/PC/BIOS/makefile
new file mode 100644
index 00000000..40d0f4ad
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/makefile
@@ -0,0 +1,72 @@
+# Compiler flags:
+# -q no banner
+# -wx max warnings
+# -0 generate 8086 code
+# -ms force small model (default)
+# -s remove runtime stack checks (required)
+# -os optimize for size
+# -zu assume that SS != DS (required)
+# -ecc default to __cdecl calling convention (bad idea)
+#
+!ifdef __UNIX__
+Q=\"
+!else
+Q="
+!endif
+
+CPU = 386
+
+CFLAGS = -q -0 -wx -zu -s -oas -d1+ -ms
+CFLAGS32 = -q -wx -zu -s -oas -d1+ -ms -nt=BIOS32 -nd=BIOS32
+# -oat seems to prevent ENTER/LEAVE generation
+#CFLAGS32 = -q -wx -zu -s -oat -d1+ -ms -nt=BIOS32 -nd=BIOS32
+
+DEFS = -DVBOX -DVBOX_LANBOOT_SEG=0xE200 -DVBOX_VERSION_STRING=$(Q)0.9$(Q) &
+ -DVBOX_WITH_SCSI -DVBOX_BIOS_CPU=80386
+
+AFLAGS = -q -0 -wx
+
+INCLS = -I$(Q)../../../../../include$(Q) -I$(Q) ../../BiosCommonCode$(Q)
+
+OBJS = bios.obj post.obj ata.obj floppy.obj floppyt.obj eltorito.obj &
+ boot.obj keyboard.obj disk.obj serial.obj system.obj invop.obj &
+ timepci.obj logo.obj ps2mouse.obj parallel.obj scsi.obj &
+ apm.obj apm_pm.obj pcibios.obj pciutil.obj vds.obj &
+ print.obj pcibio32.obj pci32.obj orgs.obj
+
+!if $(CPU) > 286
+OBJS += ahci.obj
+DEFS += -DVBOX_WITH_AHCI
+!endif
+
+.c.obj : .autodepend
+ wcc -fo=.obj $(CFLAGS) $(DEFS) $(INCLS) $<
+
+.asm.obj : .autodepend
+ wasm -fo=.obj $(AFLAGS) $(DEFS) $(INCLS) $<
+
+vbxbios.rom : vbxbios.bin
+ biossums $< $@
+
+vbxbios.bin : $(OBJS) $(__MAKEFILES__)
+ wlink name $@ system dos debug all option quiet &
+ option nofarcalls, map, verbose, statics, symfile &
+ output raw offset=0xF0000 order &
+ clname DATA segaddr=0xF000 segment _DATA &
+ clname CODE &
+ segment _TEXT segaddr=0xF000 offset=0x1C00 &
+ segment BIOS32 segaddr=0xF000 offset=0xDB00 &
+ segment BIOSSEG segaddr=0xF000 offset=0xE000 &
+ file { $(OBJS) } &
+ library clibs.lib &
+ disable 1014, 1023, 2120
+
+logo.obj : logo.c .autodepend
+ wcc -fo=.obj $(INCLS) $(CFLAGS) $(DEFS) -DVBOX_PC_BIOS $<
+
+pci32.obj : pci32.c .autodepend
+ wcc386 -fo=.obj $(INCLS) $(DEFS) $(CFLAGS32) $<
+
+clean : .symbolic
+ @rm -f *.obj *.err
+ @rm -f vbxbios.bin vbxbios.rom vbxbios.map vbxbios.sym
diff --git a/src/VBox/Devices/PC/BIOS/notes.txt b/src/VBox/Devices/PC/BIOS/notes.txt
new file mode 100644
index 00000000..69a115ba
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/notes.txt
@@ -0,0 +1,206 @@
+
+ Notes on BIOS usage
+ -------------------
+
+- DOS (including 6.22/7.1) does not need INT 15h or INT 1Ah. Most other
+ operating systems require INT 15h to detect installed memory.
+
+- OS/2 (WSeB/MCP/ACP) and Windows 98 SE are some of the very few operating
+ systems which use the El Torito floppy emulation.
+
+- NetWare 5.1 is one of the *extremely* few users of El Torito hard disk
+ emulation.
+
+- Keystroke check (INT 16h, fn 01h/11h) always enables interrupts on return.
+ DOS POWER.EXE depends on that in some situations.
+
+- IBM DOS J5.00/V is even worse and does a far jump into INT 16h/11h after
+ pushing garbage on the stack. Using IRET directly may change IOPL, set
+ TF, change direction flag, etc. We have to use or simulate RETF 2 instead.
+
+- MS-DOS 5.0/V setup assumes that INT 13h always returns with interrupts
+ enabled.
+
+- INT 15h also always returns with interrupts enabled (even for unsupported
+ functions).
+
+- MS-DOS 6.2/V is a rare user of the INT 15h keyboard intercept routines.
+
+- Some software uses the model byte at F000:FFFE to determine the system
+ type (PC-DOS 3.0, Norton Utilities 8). Other software first tries INT 15h,
+ fn C0h instead (PC-DOS 3.1, MSD).
+
+- DOS 4.01 (both IBM and Microsoft) calls INT 13h to read from disk with less
+ than 100 bytes of stack space early in the boot sequence. This tends to be
+ a problem especially for the SATA and SCSI code paths.
+
+- Very few guests use the 32-bit PCI BIOS interface. One is OS/2 (but falls
+ back), another is Etherboot.
+
+- OS/2 is the only known guest which can run the 16-bit PCI BIOS in protected
+ mode (but only if the 32-bit PCI BIOS is unavailable).
+
+- NetWare 6.x is the only known guest which uses the PCI BIOS service to read
+ the IRQ routing table.
+
+- Any disk reads which use bus-master DMA (AHCI, IDE BM) must use VDS
+ (Virtual DMA Services) when present. Otherwise any reads/writes when the
+ real mode addresses don't map directly to physical addresses will fail
+ horribly. DOS 6.x with EMM386 is a good testcase (esp. loading drivers
+ into UMBs).
+
+- Many older OSes (especially UNIX based) require the FDPT to contain
+ physical ATA disk geometry; for that reason, disks smaller than ~500MB are
+ easiest to use. Otherwise a "large" BIOS disk option would be required.
+
+- 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..e82bf8f2
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/orgs.asm
@@ -0,0 +1,2077 @@
+; $Id: orgs.asm $
+;; @file
+; ???
+;
+
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+; other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+; a choice of LGPL license versions is made available with the language indicating
+; that LGPLv2 or any later version may be used, or where a choice of which version
+; of the LGPL is applied is otherwise unspecified.
+
+
+include commondefs.inc
+
+EBDA_SEG equ 09FC0h ; starts at 639K
+EBDA_SIZE equ 1 ; 1K
+BASE_MEM_IN_K equ (640 - EBDA_SIZE)
+
+CMOS_ADDR equ 070h
+CMOS_DATA equ 071h
+
+
+PIC_CMD_EOI equ 020h
+PIC_MASTER equ 020h
+PIC_SLAVE equ 0A0h
+
+BIOS_FIX_BASE equ 0E000h
+
+if VBOX_BIOS_CPU ge 80286
+SYS_MODEL_ID equ 0FCh ; PC/AT
+else
+SYS_MODEL_ID equ 0FBh ; PC/XT
+endif
+SYS_SUBMODEL_ID equ 0
+BIOS_REVISION equ 1
+
+BIOS_BUILD_DATE equ '06/23/99'
+BIOS_COPYRIGHT equ 'Oracle VM VirtualBox BIOS'
+
+BX_ROMBIOS32 equ 0
+BX_CALL_INT15_4F equ 1
+
+;; Set a fixed BIOS location, with a marker for verification
+BIOSORG macro addr, addr_minus_two
+.errnz (addr - 2 - addr_minus_two) ;; Couldn't convince wasm to accept $ here. Would've save us a lot of bother and ugly SED.
+ BIOSORG_CHECK_BEFORE addr_minus_two
+ org addr - BIOS_FIX_BASE - 2
+ db 'XM'
+ BIOSORG_CHECK addr
+ endm
+
+;; Set an interrupt vector (not very efficient if multiple vectors are
+;; programmed in one go)
+SET_INT_VECTOR macro vec, segm, offs
+ mov ax, offs
+ mov ds:[vec*4], ax
+ mov ax, segm
+ mov ds:[vec*4+2], ax
+endm
+
+; Set up an environment C code expects. DS must point to the BIOS segment
+; and the direction flag must be cleared(!)
+C_SETUP macro
+ push cs
+ pop ds
+ cld
+endm
+
+
+;; External function in separate modules
+extrn _dummy_isr_function:near
+extrn _log_bios_start:near
+extrn _nmi_handler_msg:near
+extrn _int18_panic_msg:near
+extrn _int09_function:near
+extrn _int13_diskette_function:near
+extrn _int13_eltorito:near
+extrn _int13_cdemu:near
+extrn _int13_cdrom:near
+extrn _cdemu_isactive:near
+extrn _cdemu_emulated_drive:near
+extrn _int13_harddisk:near
+extrn _int13_harddisk_ext:near
+extrn _int14_function:near
+extrn _int15_function:near
+extrn _int15_function_mouse:near
+extrn _int16_function:near
+extrn _int17_function:near
+extrn _int19_function:near
+extrn _int1a_function:near
+extrn _pci16_function:near
+extrn _int70_function:near
+extrn _int74_function:near
+extrn _apm_function:near
+extrn _ata_init:near
+extrn _scsi_init:near
+extrn _ata_detect:near
+extrn _cdemu_init:near
+extrn _keyboard_init:near
+extrn _print_bios_banner:near
+extrn _inv_op_handler:near
+extrn rom_scan_:near
+ifdef VBOX_WITH_AHCI
+extrn _ahci_init:near
+endif
+ifdef VBOX_WITH_VIRTIO_SCSI
+extrn _virtio_scsi_init:near
+endif
+if VBOX_BIOS_CPU ge 80286
+extrn _int15_blkmove:near
+endif
+if VBOX_BIOS_CPU ge 80386
+extrn _int15_function32:near
+extrn _apic_setup:near
+endif
+
+
+;; Symbols referenced from C code
+public _diskette_param_table
+public _pmode_IDT
+public _rmode_IDT
+public post
+public eoi_both_pics
+public rtc_post
+
+;; Additional publics for easier disassembly and debugging
+ifndef DEBUG
+ DEBUG equ 1
+endif
+ifdef DEBUG
+
+public int08_handler
+public int0e_handler
+public int11_handler
+public int12_handler
+public int13_handler
+public int13_relocated
+if VBOX_BIOS_CPU eq 8086
+public jmp_call_ret_int13_out
+endif
+public int15_handler
+public int17_handler
+public int19_handler
+public int19_relocated
+public dummy_iret
+public nmi
+public rom_fdpt
+public cpu_reset
+public normal_post
+public eoi_jmp_post
+public no_eoi_jmp_post
+public eoi_master_pic
+public ebda_post
+public seg_40_value
+public hard_drive_post
+public int13_legacy
+public int70_handler
+public int75_handler
+public int15_handler32
+public int15_handler_mouse
+public iret_modify_cf
+public init_pic
+public floppy_post
+public int13_out
+public int13_disk
+public int13_notfloppy
+public int13_legacy
+public int13_noeltorito
+public int1c_handler
+public int10_handler
+public int74_handler
+public int76_handler
+public detect_parport
+public detect_serial
+public font8x8
+
+endif
+
+;; Keyboard related constants
+KBDC_DISABLE EQU 0ADh
+KBDC_ENABLE EQU 0AEh
+KBC_CMD EQU 64h
+KBC_DATA EQU 60h
+
+
+;; NOTE: The last 8K of the ROM BIOS are peppered with fixed locations which
+;; must be retained for compatibility. As a consequence, some of the space is
+;; going to be wasted, but the gaps should be filled with miscellaneous code
+;; and data when possible.
+
+SET_DEFAULT_CPU_286
+
+BIOSSEG segment 'CODE'
+ assume cs:BIOSSEG
+
+;;
+;; Start of fixed code - eoi_jmp_post is kept near here to allow short jumps.
+;;
+ BIOSORG 0E030h, 0E02Eh
+eoi_both_pics:
+ mov al, PIC_CMD_EOI
+ out PIC_SLAVE, al
+eoi_master_pic:
+ mov al, PIC_CMD_EOI
+ out PIC_MASTER, al
+ ret
+
+ ;; routine to write the pointer in DX:AX to memory starting
+ ;; at DS:BX (repeat CX times)
+ ;; - modifies BX, CX
+set_int_vects proc near
+
+ mov [bx], ax
+ mov [bx+2], dx
+ add bx, 4
+ loop set_int_vects
+ ret
+
+set_int_vects endp
+
+eoi_jmp_post:
+;; Calling eoi_both_pics can't be done because it writes to stack, potentially
+;; corrupting memory. AT BIOS also only clears the master PIC, not both.
+ ;; clear keyboard buffer (and possible interrupt)
+ in al, KBC_DATA
+ mov al, PIC_CMD_EOI
+ out PIC_MASTER, al
+
+no_eoi_jmp_post:
+ mov ax, 40h
+ mov ds, ax
+ jmp dword ptr ds:[67h]
+
+seg_40_value: dw 40h ;; Replaces a push 40; pop ds.
+
+;; --------------------------------------------------------
+;; POST entry point
+;; --------------------------------------------------------
+ BIOSORG 0E05Bh, 0E059h
+post:
+ cli
+
+if VBOX_BIOS_CPU ge 80286
+ ;; Check if in protected (V86) mode. If so, the CPU needs
+ ;; to be reset.
+ .286p
+ smsw ax
+ test ax, 1
+ jz in_real_mode
+ SET_DEFAULT_CPU_286
+else
+ jmp in_real_mode
+endif
+
+ ;; Reset processor to get out of protected mode. Use system
+ ;; port instead of KBC.
+reset_sys:
+ mov al, 1
+ out 92h, al
+ jmp $ ; not strictly necessary in a VM
+
+
+in_real_mode:
+ ;; read the CMOS shutdown status
+ mov al, 0Fh
+ out CMOS_ADDR, al
+ in al, CMOS_DATA
+
+ ;; save status
+ xchg ah, al
+
+ ;; Check KBC self-test/shutdown flag. If it is set, we need
+ ;; to check for a reboot attempt.
+ in al, 64h
+ test al, 4 ; clear flag indicates cold boot
+ jz cont_post
+
+ ;; Warm boot, check the shutdown byte.
+ mov al, ah
+ or al, al
+ jnz cont_post
+
+ ;; Warm boot but shutdown byte is zero. This is either a warm
+ ;; boot request or an attempt to reset the system via triple
+ ;; faulting the CPU or similar. Check reboot flag.
+ ;; NB: At this point, registers need not be preserved.
+ mov ds, cs:[seg_40_value]
+ cmp word ptr ds:[72h], 1234h
+ jnz reset_sys ; trigger system reset
+
+cont_post:
+ ;; reset the shutdown status in CMOS
+ mov al, 0Fh
+ out CMOS_ADDR, al
+ mov al, 0
+ out CMOS_DATA, al
+
+ ;; pre-check the shutdown status - shutdown codes 9/A leave
+ ;; the hardware alone
+ mov al, ah
+ cmp al, 09h
+ jz check_shutdown
+ cmp al, 0Ah
+ jz check_shutdown
+
+ xor al, al
+
+ ;; reset the DMA controllers
+ out 00Dh, al
+ out 0DAh, al
+
+ ;; then initialize the DMA controllers
+ mov al, 0C0h
+ out 0D6h, al ; enable channel 4 cascade
+ mov al, 0
+ out 0D4h, al ; unmask channel 4
+
+check_shutdown:
+ ;; examine the shutdown status code
+ mov al, ah
+ cmp al, 0
+ jz normal_post
+
+ cmp al, 0Dh
+ jae normal_post
+ cmp al, 9
+ jne check_next_std
+ jmp return_blkmove
+check_next_std:
+
+ mov sp, 400h
+ ;; 05h = EOI + jump through 40:67
+ cmp al, 5
+ je eoi_jmp_post
+ ;; 0ah = jump through 40:67 (no EOI) ;ba x 1 %fe05b ; ba x 1 %18b81
+ cmp al, 0ah
+ je no_eoi_jmp_post
+
+ ;; any other shutdown status values are ignored
+ ;; OpenSolaris sets the status to 0Ah in some cases?
+ jmp normal_post
+
+normal_post:
+ ;; shutdown code 0: normal startup
+
+ ;; Set up the stack top at 0:7800h. The stack should not be
+ ;; located above 0:7C00h; that conflicts with PXE, which
+ ;; considers anything above that address to be fair game.
+ ;; The traditional locations are 30:100 (PC) or 0:400 (PC/AT).
+ mov ax, 7800h
+ mov sp, ax
+ xor ax, ax
+ mov ds, ax
+ mov ss, ax
+
+ ;; clear the bottom of memory except for the word at 40:72
+ ;; TODO: Why not clear all of it? What's the point?
+ mov es, ax
+ xor di, di
+ cld
+ mov cx, 0472h / 2
+ rep stosw
+ inc di
+ inc di
+ mov cx, (1000h - 0472h - 2) / 2
+ rep stosw
+
+ ;; clear the remaining base memory except for the top
+ ;; of the EBDA (the MP table is planted there)
+ xor bx, bx
+memory_zero_loop:
+ add bx, 1000h
+ cmp bx, 9000h
+ jae memory_cleared
+ mov es, bx
+ xor di, di
+ mov cx, 8000h ; 32K words
+ rep stosw
+ jmp memory_zero_loop
+memory_cleared:
+ mov es, bx
+ xor di, di
+ mov cx, 7FF8h ; all but the last 16 bytes
+ rep stosw
+ xor bx, bx
+
+
+ C_SETUP
+ call _log_bios_start
+
+if VBOX_BIOS_CPU ge 80386
+ call pmode_setup
+endif
+
+ ;; set all interrupts in 00h-5Fh range to default handler
+ xor bx, bx
+ mov ds, bx
+ mov cx, 60h ; leave the rest as zeros
+ mov ax, dummy_iret
+ mov dx, BIOSSEG
+ call set_int_vects
+
+ ;; also set 68h-77h to default handler; note that the
+ ;; 60h-67h range must contain zeros for certain programs
+ ;; to function correctly
+ mov bx, 68h * 4
+ mov cx, 10h
+ call set_int_vects
+
+ ;; base memory in K to 40:13
+ mov ax, BASE_MEM_IN_K
+ mov ds:[413h], ax
+
+ ;; manufacturing test at 40:12
+ ;; zeroed out above
+
+ ;; set up various service vectors
+ ;; TODO: This should use the table at FEF3h instead
+ SET_INT_VECTOR 06h, BIOSSEG, int06_handler
+ SET_INT_VECTOR 11h, BIOSSEG, int11_handler
+ SET_INT_VECTOR 12h, BIOSSEG, int12_handler
+ SET_INT_VECTOR 15h, BIOSSEG, int15_handler
+ SET_INT_VECTOR 17h, BIOSSEG, int17_handler
+ SET_INT_VECTOR 18h, BIOSSEG, int18_handler
+ SET_INT_VECTOR 19h, BIOSSEG, int19_handler
+ SET_INT_VECTOR 1Ch, BIOSSEG, int1c_handler
+
+ call ebda_post
+
+ ;; Initialize PCI devices. This can and should be done early.
+if VBOX_BIOS_CPU ge 80386 ; (Impossible to do on 16-bit CPUs.)
+ call pcibios_init_iomem_bases
+ call pcibios_init_irqs
+endif
+ SET_INT_VECTOR 1Ah, BIOSSEG, int1a_handler
+
+ ;; PIT setup
+ SET_INT_VECTOR 08h, BIOSSEG, int08_handler
+ mov al, 34h ; timer 0, binary, 16-bit, mode 2
+ out 43h, al
+ mov al, 0 ; max count -> ~18.2 Hz
+ out 40h, al
+ out 40h, al
+
+ ;; video setup - must be done before POSTing VGA ROM
+ SET_INT_VECTOR 10h, BIOSSEG, int10_handler
+
+ ;; keyboard setup
+ SET_INT_VECTOR 09h, BIOSSEG, int09_handler
+ SET_INT_VECTOR 16h, BIOSSEG, int16_handler
+
+ xor ax, ax
+ mov ds, ax
+ ;; TODO: What's the point? The BDA is zeroed already?!
+ mov ds:[417h], al ; keyboard shift flags, set 1
+ mov ds:[418h], al ; keyboard shift flags, set 2
+ mov ds:[419h], al ; keyboard Alt-numpad work area
+ mov ds:[471h], al ; keyboard Ctrl-Break flag
+ mov ds:[497h], al ; keyboard status flags 4
+ mov al, 10h
+ mov ds:[496h], al ; keyboard status flags 3
+
+ mov bx, 1Eh
+ mov ds:[41Ah], bx ; keyboard buffer head
+ mov ds:[41Ch], bx ; keyboard buffer tail
+ mov ds:[480h], bx ; keyboard buffer start
+ mov bx, 3Eh
+ mov ds:[482h], bx ; keyboard buffer end
+
+ ;; store CMOS equipment byte in BDA
+ mov al, 14h
+ out CMOS_ADDR, al
+ in al, CMOS_DATA
+ mov ds:[410h], al
+
+ push ds
+ C_SETUP
+
+ ;; Scan for video ROMs in the C000-C800 range. This is done
+ ;; early so that errors are displayed on the screen.
+ mov ax, 0C000h
+ mov dx, 0C800h
+ call rom_scan_
+
+ ;; Initialize the keyboard
+ call _keyboard_init
+ pop ds
+
+ ;; parallel setup
+ SET_INT_VECTOR 0Fh, BIOSSEG, dummy_iret
+ xor ax, ax
+ mov ds, ax
+ xor bx, bx
+ mov cl, 14h ; timeout value
+ mov dx, 378h ; parallel port 1
+ call detect_parport
+ mov dx, 278h ; parallel port 2
+ call detect_parport
+ DO_shl bx, 0Eh
+ mov ax, ds:[410h] ; equipment word
+ and ax, 3FFFh
+ or ax, bx ; set number of parallel ports
+ mov ds:[410h], ax ; store in BDA
+
+ ;; Serial setup
+ SET_INT_VECTOR 0Bh, BIOSSEG, dummy_isr ; IRQ 3
+ SET_INT_VECTOR 0Ch, BIOSSEG, dummy_isr ; IRQ 4
+ SET_INT_VECTOR 14h, BIOSSEG, int14_handler
+ xor bx, bx
+ mov cl, 0Ah ; timeout value
+ mov dx, 3F8h ; first serial address
+ call detect_serial
+ mov dx, 2F8h ; second serial address
+ call detect_serial
+ mov dx, 3E8h ; third serial address
+ call detect_serial
+ mov dx, 2E8h ; fourth serial address
+ call detect_serial
+ DO_shl bx, 9
+ mov ax, ds:[410h] ; equipment word
+ and ax, 0F1FFh ; bits 9-11 determine serial ports
+ or ax, bx
+ mov ds:[410h], ax
+
+ ;; CMOS RTC
+ SET_INT_VECTOR 4Ah, BIOSSEG, dummy_iret ; TODO: redundant?
+ SET_INT_VECTOR 70h, BIOSSEG, int70_handler
+ ;; BIOS DATA AREA 4CEh ???
+ call rtc_post
+
+ jmp norm_post_cont
+
+
+;; --------------------------------------------------------
+;; NMI handler
+;; --------------------------------------------------------
+ BIOSORG 0E2C3h, 0E2C1h
+nmi:
+ C_SETUP
+ call _nmi_handler_msg
+ iret
+
+int75_handler:
+ out 0F0h, al ; clear IRQ13
+ call eoi_both_pics
+ int 2 ; emulate legacy NMI
+ iret
+
+
+hard_drive_post proc near
+
+ xor ax, ax
+ mov ds, ax
+ ;; TODO: Didn't we just clear the entire EBDA?
+ mov ds:[474h], al ; last HD operation status
+ mov ds:[477h], al ; HD port offset (XT only???)
+ mov ds:[48Ch], al ; HD status register
+ mov ds:[48Dh], al ; HD error register
+ mov ds:[48Eh], al ; HD task complete flag
+ mov al, 0C0h
+ mov ds:[476h], al ; HD control byte
+ ;; set up hard disk interrupt vectors
+ SET_INT_VECTOR 13h, BIOSSEG, int13_handler
+ SET_INT_VECTOR 76h, BIOSSEG, int76_handler
+ ;; The ATA init code sets up INT 41h/46h FDPT pointers
+ ret
+
+hard_drive_post endp
+
+
+norm_post_cont:
+ ;; PS/2 mouse setup
+ SET_INT_VECTOR 74h, BIOSSEG, int74_handler
+
+ ;; IRQ 13h (FPU exception) setup
+ SET_INT_VECTOR 75h, BIOSSEG, int75_handler
+
+ call init_pic
+
+ C_SETUP
+
+if VBOX_BIOS_CPU ge 80386
+ ;; Set up local APIC
+ .386
+ pushad
+ call _apic_setup
+ popad
+ SET_DEFAULT_CPU_286
+endif
+
+ ;; ATA/ATAPI driver setup
+ call _ata_init
+ call _ata_detect
+
+ifdef VBOX_WITH_AHCI
+ ; AHCI driver setup
+ ;; TODO: AHCI initialization needs timer, but enabling
+ ;; interrupts elsewhere may be risky. Just do it around
+ ;; the AHCI init.
+ sti
+ call _ahci_init
+ cli
+endif
+
+ifdef VBOX_WITH_SCSI
+ ; SCSI driver setup
+ call _scsi_init
+endif
+
+ifdef VBOX_WITH_VIRTIO_SCSI
+ ; VirtIO-SCSI driver setup
+ call _virtio_scsi_init
+endif
+
+ ;; floppy setup
+ call floppy_post
+
+ ;; hard drive setup
+ call hard_drive_post
+
+ C_SETUP ; in case assembly code changed things
+ ;; Scan for additional ROMs in the C800-EFFF range
+ mov ax, 0C800h
+ mov dx, 0F000h
+ call rom_scan_
+
+if VBOX_BIOS_CPU ge 80386
+ ;; The POST code does not bother preserving high bits of the
+ ;; 32-bit registers. Now is a good time to clear them so that
+ ;; there's no garbage left in high bits.
+ .386
+ xor eax, eax
+ xor ebx, ebx
+ xor ecx, ecx
+ xor edx, edx
+ .286
+endif
+
+ call _print_bios_banner
+
+ ;; El Torito floppy/hard disk emulation
+ call _cdemu_init
+
+ ; TODO: what's the point of enabling interrupts here??
+ sti ; enable interrupts
+ int 19h
+ ;; does not return here
+ sti
+wait_forever:
+ hlt
+ jmp wait_forever
+ cli
+ hlt
+
+
+;;
+;; Return from block move (shutdown code 09h). Care must be taken to disturb
+;; register and memory state as little as possible.
+;;
+return_blkmove:
+ .286p
+ mov ax, 40h
+ mov ds, ax
+ ;; restore user stack
+ mov ss, ds:[69h]
+ mov sp, ds:[67h]
+ ;; reset A20 gate
+ in al, 92h
+ and al, 0FDh
+ out 92h, al
+ ;; ensure proper real mode IDT
+ lidt fword ptr cs:_rmode_IDT
+ ;; restore user segments
+ pop ds
+ pop es
+ ;; set up BP
+ mov bp, sp
+ ;; restore status code
+ in al, 80h
+ mov [bp+15], al
+ ;; set ZF/CF
+ cmp ah,al ; AH is zero here!
+ ;; restore registers and return
+ popa
+ sti
+ retf 2
+ SET_DEFAULT_CPU_286
+
+
+;; --------------------------------------------------------
+;; INT 13h handler - Disk services
+;; --------------------------------------------------------
+ BIOSORG 0E3FEh, 0E3FCh
+
+int13_handler:
+ jmp int13_relocated
+
+
+;; --------------------------------------------------------
+;; Fixed Disk Parameter Table
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0E401h ; fixed wrt preceding
+
+rom_fdpt:
+
+;; --------------------------------------------------------
+;; INT 19h handler - Boot load service
+;; --------------------------------------------------------
+ BIOSORG 0E6F2h, 0E6F0h
+
+int19_handler:
+ jmp int19_relocated
+
+
+
+;; --------------------------------------------------------
+;; System BIOS Configuration Table
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0E6F5h ; fixed wrt preceding
+; must match BIOS_CONFIG_TABLE
+bios_cfg_table:
+ dw 9 ; table size in bytes
+ db SYS_MODEL_ID
+ db SYS_SUBMODEL_ID
+ db BIOS_REVISION
+ ; Feature byte 1
+ ; b7: 1=DMA channel 3 used by hard disk
+ ; b6: 1=2 interrupt controllers present
+ ; b5: 1=RTC present
+ ; b4: 1=BIOS calls int 15h/4Fh for every key
+ ; b3: 1=wait for extern event supported (Int 15h/41h)
+ ; b2: 1=extended BIOS data area used
+ ; b1: 0=AT or ESDI bus, 1=MicroChannel
+ ; b0: 1=Dual bus (MicroChannel + ISA)
+ifdef BX_CALL_INT15_4F
+ db 74h; or USE_EBDA
+else
+ db 64h; or USE_EBDA
+endif
+ ; Feature byte 2
+ ; b7: 1=32-bit DMA supported
+ ; b6: 1=int16h, function 9 supported
+ ; b5: 1=int15h/C6h (get POS data) supported
+ ; b4: 1=int15h/C7h (get mem map info) supported
+ ; b3: 1=int15h/C8h (en/dis CPU) supported
+ ; b2: 1=non-8042 kb controller
+ ; b1: 1=data streaming supported
+ ; b0: reserved
+ db 40h
+ ; Feature byte 3
+ ; b7: not used
+ ; b6: reserved
+ ; b5: reserved
+ ; b4: POST supports ROM-to-RAM enable/disable
+ ; b3: SCSI on system board
+ ; b2: info panel installed
+ ; b1: Initial Machine Load (IML) system - BIOS on disk
+ ; b0: SCSI supported in IML
+ db 0
+ ; Feature byte 4
+ ; b7: IBM private
+ ; b6: EEPROM present
+ ; b5-3: ABIOS presence (011 = not supported)
+ ; b2: private
+ ; b1: memory split above 16Mb supported
+ ; b0: POSTEXT directly supported by POST
+ db 0
+ ; Feature byte 5 (IBM)
+ ; b1: enhanced mouse
+ ; b0: flash EPROM
+ db 0
+
+
+;; --------------------------------------------------------
+;; Baud Rate Generator Table
+;; --------------------------------------------------------
+ BIOSORG 0E729h, 0E727h
+
+
+;; --------------------------------------------------------
+;; INT 14h handler - Serial Communication Service
+;; --------------------------------------------------------
+ BIOSORG 0E739h, 0E737h
+int14_handler:
+ push ds
+ push es
+ DO_pusha
+ C_SETUP
+ call _int14_function
+ DO_popa
+ pop es
+ pop ds
+ iret
+
+
+
+;;
+;; Handler for unexpected hardware interrupts
+;;
+dummy_isr:
+ push ds
+ push es
+ DO_pusha
+ C_SETUP
+ call _dummy_isr_function
+ DO_popa
+ pop es
+ pop ds
+ iret
+
+
+init_pic proc near
+
+ mov al, 11h ; send init commands
+ out PIC_MASTER, al
+ out PIC_SLAVE, al
+ mov al, 08h ; base 08h
+ out PIC_MASTER+1, al
+ mov al, 70h ; base 70h
+ out PIC_SLAVE+1, al
+ mov al, 04h ; master PIC
+ out PIC_MASTER+1, al
+ mov al, 02h ; slave PIC
+ out PIC_SLAVE+1, al
+ mov al, 01h
+ out PIC_MASTER+1, al
+ out PIC_SLAVE+1, al
+ mov al, 0B8h ; unmask IRQs 0/1/2/6
+ out PIC_MASTER+1, al
+ mov al, 08Fh
+ out PIC_SLAVE+1, al ; unmask IRQs 12/13/14
+ ret
+
+init_pic endp
+
+ebda_post proc near
+
+ SET_INT_VECTOR 0Dh, BIOSSEG, dummy_isr ; IRQ 5
+ SET_INT_VECTOR 0Fh, BIOSSEG, dummy_isr ; IRQ 7
+ SET_INT_VECTOR 72h, BIOSSEG, dummy_isr ; IRQ 10
+ SET_INT_VECTOR 73h, BIOSSEG, dummy_isr ; IRQ 11
+ SET_INT_VECTOR 77h, BIOSSEG, dummy_isr ; IRQ 15
+
+ mov ax, EBDA_SEG
+ mov ds, ax
+ mov byte ptr ds:[0], EBDA_SIZE
+ ;; store EBDA seg in 40:0E
+ xor ax, ax
+ mov ds, ax
+ mov word ptr ds:[40Eh], EBDA_SEG
+ ret
+
+ebda_post endp
+
+
+
+;; --------------------------------------------------------
+;; INT 16h handler - Keyboard service
+;; --------------------------------------------------------
+ BIOSORG 0E82Eh, 0E82Ch
+int16_handler:
+ sti
+ ;; Flags are saved *after* enabling interrupts, and with
+ ;; implicitly cleared TF. Software may depend on that.
+ pushf
+ push es
+ push ds
+ DO_pusha
+
+ cmp ah, 0
+ je int16_F00
+
+ cmp ah, 10h
+ je int16_F00
+
+ C_SETUP
+ call _int16_function
+ DO_popa
+ pop ds
+ pop es
+ add sp, 2 ; Skip saved flags
+ iret
+
+int16_F00:
+ mov bx, 40h ; TODO: why 40h here and 0 elsewhere?
+ mov ds, bx
+int16_wait_for_key:
+ cli
+ mov bx, ds:[1Ah]
+ cmp bx, ds:[1Ch]
+ jne int16_key_found
+ sti
+ nop
+; TODO: review/enable?
+if 0
+ push ax
+ mov ax, 9002h
+ int 15h
+ pop ax
+endif
+ jmp int16_wait_for_key
+
+int16_key_found:
+ C_SETUP
+ call _int16_function
+ DO_popa
+ pop ds
+ pop es
+ add sp, 2 ; Skip saved flags
+; TODO: review/enable? If so, flags should be restored here?
+if 0
+ push ax
+ mov ax, 9202h
+ int 15h
+ pop ax
+endif
+ iret
+
+
+if VBOX_BIOS_CPU ge 80386
+;; Quick and dirty protected mode entry/exit routines
+include pmode.inc
+
+;; Initialization code which needs to run in protected mode (LAPIC etc.)
+include pmsetup.inc
+endif
+
+
+;; --------------------------------------------------------
+;; INT 09h handler - Keyboard ISR (IRQ 1)
+;; --------------------------------------------------------
+ BIOSORG 0E987h, 0E985h
+int09_handler:
+ cli ; TODO: why? they're off already!
+ push ax
+ mov al, KBDC_DISABLE
+ out KBC_CMD, al
+
+ in al, KBC_DATA
+ push ds
+ DO_pusha
+ cld ; Before INT 15h (and any C code)
+ifdef BX_CALL_INT15_4F
+ mov ah, 4Fh
+ stc
+ int 15h ; keyboard intercept
+ jnc int09_done
+endif
+ sti ; Only after calling INT 15h
+
+ ;; check for extended key
+ cmp al, 0E0h
+ jne int09_check_pause
+ xor ax, ax
+ mov ds, ax
+ or byte ptr ds:[496h], 2 ; mf2_state |= 0x02
+ jmp int09_done
+
+int09_check_pause:
+ cmp al, 0E1h ; pause key?
+ jne int09_process_key
+ xor ax, ax
+ mov ds, ax
+ or byte ptr ds:[496h], 1 ; mf2_state | 0x01
+ jmp int09_done
+
+int09_process_key:
+ push es
+ C_SETUP
+ call _int09_function
+ pop es
+
+int09_done:
+ DO_popa
+ pop ds
+ cli
+ call eoi_master_pic
+
+ mov al, KBDC_ENABLE
+ out KBC_CMD, al
+ pop ax
+ iret
+
+
+;; --------------------------------------------------------
+;; INT 06h handler - Invalid Opcode Exception
+;; --------------------------------------------------------
+
+int06_handler:
+ DO_pusha
+ push es
+ push ds
+ C_SETUP
+ call _inv_op_handler
+ pop ds
+ pop es
+ DO_popa
+ iret
+
+;; --------------------------------------------------------
+;; INT 13h handler - Diskette service
+;; --------------------------------------------------------
+ BIOSORG 0EC59h, 0EC57h
+int13_diskette:
+ jmp int13_noeltorito
+
+
+
+;; --------------------------------------------------------
+;; INT 13h handler - Disk service
+;; --------------------------------------------------------
+int13_relocated:
+ ;; check for an El-Torito function
+ cmp ah, 4Ah
+ jb int13_not_eltorito
+
+ cmp ah, 4Dh
+ ja int13_not_eltorito
+
+ DO_pusha
+ push es
+ push ds
+ C_SETUP ; TODO: setup C envrionment only once?
+ DO_JMP_CALL_EX _int13_eltorito, int13_out, jmp_call_ret_int13_out ; ELDX not used
+if VBOX_BIOS_CPU eq 8086
+jmp_call_ret_int13_out: dw offset int13_out
+endif
+
+int13_not_eltorito:
+ push es
+ push ax ; TODO: better register save/restore
+ push bx
+ push cx
+ push dx
+
+ ;; check if emulation is active
+ call _cdemu_isactive
+ cmp al, 0
+ je int13_cdemu_inactive
+
+ ;; check if access to the emulated drive
+ call _cdemu_emulated_drive
+ pop dx ; recover dx (destroyed by C code)
+ push dx
+ cmp al, dl ; INT 13h on emulated drive
+ jne int13_nocdemu
+
+ pop dx
+ pop cx
+ pop bx
+ pop ax
+ pop es
+
+ DO_pusha
+ push es
+ push ds
+ C_SETUP ; TODO: setup environment only once?
+
+ DO_JMP_CALL_EX _int13_cdemu, int13_out, jmp_call_ret_int13_out ; ELDX not used
+
+int13_nocdemu:
+ and dl, 0E0h ; mask to get device class
+ cmp al, dl
+ jne int13_cdemu_inactive
+
+ pop dx
+ pop cx
+ pop bx
+ pop ax
+ pop es
+
+ push ax
+ push cx
+ push dx
+ push bx
+
+ dec dl ; real drive is dl - 1
+ jmp int13_legacy
+
+int13_cdemu_inactive:
+ pop dx
+ pop cx
+ pop bx
+ pop ax
+ pop es
+
+int13_noeltorito:
+ push ax
+ push cx
+ push dx
+ push bx
+int13_legacy:
+ push dx ; push eltorito dx in place of sp
+ push bp
+ push si
+ push di
+ push es
+ push ds
+ C_SETUP ; TODO: setup environment only once?
+
+ ;; now the registers can be restored with
+ ;; pop ds; pop es; DO_popa; iret
+ test dl, 80h ; non-removable?
+ jnz int13_notfloppy
+
+ DO_JMP_CALL_EX _int13_diskette_function, int13_out, jmp_call_ret_int13_out
+
+int13_notfloppy:
+ cmp dl, 0E0h
+ jb int13_notcdrom
+
+ ;; ebx may be modified, save here
+ ;; TODO: check/review 32-bit register use
+ ;; @todo figure if 80286/8086 variant is applicable.
+ .386
+ shr ebx, 16
+ push bx
+ call _int13_cdrom
+ pop bx
+ shl ebx, 16
+ SET_DEFAULT_CPU_286
+ jmp int13_out
+
+int13_notcdrom:
+int13_disk:
+ cmp ah,40h
+ ja int13x
+ call _int13_harddisk
+ jmp int13_out
+
+int13x:
+ call _int13_harddisk_ext
+
+int13_out:
+ pop ds
+ pop es
+ DO_popa
+ iret
+
+
+
+; parallel port detection: port in dx, index in bx, timeout in cl
+detect_parport proc near
+
+ push dx
+ inc dx
+ inc dx
+ in al, dx
+ and al, 0DFh ; clear input mode
+ out dx, al
+ pop dx
+ mov al, 0AAh
+ out dx, al
+ in al, dx
+ cmp al, 0AAh
+ jne no_parport
+
+ push bx
+ shl bx, 1
+ mov [bx+408h], dx ; parallel I/O address
+ pop bx
+ mov [bx+478h], cl ; parallel printer timeout
+ inc bx
+no_parport:
+ ret
+
+detect_parport endp
+
+; setial port detection: port in dx, index in bx, timeout in cl
+detect_serial proc near
+
+ push dx
+ inc dx
+ mov al, 2
+ out dx, al
+ in al, dx
+ cmp al, 2
+ jne no_serial
+
+ inc dx
+ in al, dx
+ cmp al, 2
+ jne no_serial
+
+ dec dx
+ xor al, al
+ pop dx
+ push bx
+ shl bx, 1
+ mov [bx+400h], dx ; serial I/O address
+ pop bx
+ mov [bx+47Ch], cl ; serial timeout
+ inc bx
+ ret
+
+no_serial:
+ pop dx
+ ret
+
+detect_serial endp
+
+
+;;
+;; POST: Floppy drive
+;;
+floppy_post proc near
+
+ xor ax, ax
+ mov ds, ax
+
+ ;; TODO: This code is really stupid. Zeroing the BDA byte
+ ;; by byte is dumb, and it's been already zeroed elsewhere!
+ mov al, 0
+ mov ds:[43Eh], al ; drive 0/1 uncalibrated, no IRQ
+ mov ds:[43Fh], al ; motor status
+ mov ds:[440h], al ; motor timeout counter
+ mov ds:[441h], al ; controller status return code
+ mov ds:[442h], al ; hd/floppy ctlr status register
+ mov ds:[443h], al ; controller status register 1
+ mov ds:[444h], al ; controller status register 2
+ mov ds:[445h], al ; cylinder number
+ mov ds:[446h], al ; head number
+ mov ds:[447h], al ; sector number
+ mov ds:[448h], al ; bytes written
+
+ mov ds:[48Bh], al ; configuration data
+
+ mov al, 10h ; floppy drive type
+ out CMOS_ADDR, al
+ in al, CMOS_DATA
+ mov ah, al ; save drive type byte
+
+look_drive0:
+ ; TODO: pre-init bl to reduce jumps
+ DO_shr al, 4 ; drive 0 in high nibble
+ jz f0_missing ; jump if no drive
+ mov bl, 7 ; drv0 determined, multi-rate, chgline
+ jmp look_drive1
+
+f0_missing:
+ mov bl, 0 ; no drive 0
+
+look_drive1:
+ mov al, ah ; restore CMOS data
+ and al, 0Fh ; drive 1 in low nibble
+ jz f1_missing
+ or bl, 70h ; drv1 determined, multi-rate, chgline
+f1_missing:
+ mov ds:[48Fh], bl ; store in BDA
+
+ ;; TODO: See above. Dumb *and* redundant!
+ mov al, 0
+ mov ds:[490h], al ; drv0 media state
+ mov ds:[491h], al ; drv1 media state
+ mov ds:[492h], al ; drv0 operational state
+ mov ds:[493h], al ; drv1 operational state
+ mov ds:[494h], al ; drv0 current cylinder
+ mov ds:[495h], al ; drv1 current cylinder
+
+ mov al, 2
+ out 0Ah, al ; unmask DMA channel 2
+
+ SET_INT_VECTOR 1Eh, BIOSSEG, _diskette_param_table
+ SET_INT_VECTOR 40h, BIOSSEG, int13_diskette
+ SET_INT_VECTOR 0Eh, BIOSSEG, int0e_handler ; IRQ 6
+
+ ret
+
+floppy_post endp
+
+
+bcd_to_bin proc near
+
+ ;; in : AL in packed BCD format
+ ;; out: AL in binary, AH always 0
+if VBOX_BIOS_CPU ge 80186
+ shl ax, 4
+ shr al, 4
+else
+ push cx
+ mov cl, 4
+ shl ax, cl
+ shr al, cl
+ pop cx
+endif
+ aad
+ ret
+
+bcd_to_bin endp
+
+rtc_post proc near
+
+if VBOX_BIOS_CPU lt 80386 ;; @todo fix loopy code below
+ ;; get RTC seconds
+ mov al, 0
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC seconds, in BCD
+ call bcd_to_bin ; ax now has seconds in binary
+ test al, al
+ xor ah, ah
+ mov dx, 0x1234 ; 18206507*0x100/1000000 = 0x1234 (4660.865792)
+ mul dx
+ mov cx, ax ; tick count in dx:cx
+
+ ;; get RTC minutes
+ mov al, 2
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC minutes, in BCD
+ call bcd_to_bin ; eax now has minutes in binary
+ test al, al
+ jz rtc_post_hours
+rtc_pos_min_loop: ; 18206507*60*0x100/1000000 = 0x44463 (279651.94752)
+ add cx, 0x4463
+ adc dx, 0x0004
+ dec al
+ jnz rtc_pos_min_loop
+
+ ;; get RTC hours
+rtc_post_hours:
+ mov al, 4
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC hours, in BCD
+ call bcd_to_bin ; eax now has hours in binary
+ test al, al
+ jz rtc_pos_shift
+rtc_pos_hour_loop: ; 18206507*3600*0x100/1000000 = 0x100076C (16779116.8512)
+ add cx, 0x076C
+ adc dx, 0x0100
+ dec al
+ jnz rtc_pos_hour_loop
+
+rtc_pos_shift:
+ mov cl, ch
+ mov ch, dl
+ mov dl, dh
+ xor dh, dh
+ mov ds:[46Ch], cx ; timer tick count
+ mov ds:[46Ch+2], dx ; timer tick count
+ mov ds:[470h], dh ; rollover flag
+
+else
+ .386
+ ;; get RTC seconds
+ xor eax, eax
+ mov al, 0
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC seconds, in BCD
+ call bcd_to_bin ; eax now has seconds in binary
+ mov edx, 18206507
+ mul edx
+ mov ebx, 1000000
+ xor edx, edx
+ div ebx
+ mov ecx, eax ; total ticks in ecx
+
+ ;; get RTC minutes
+ xor eax, eax
+ mov al, 2
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC minutes, in BCD
+ call bcd_to_bin ; eax now has minutes in binary
+ mov edx, 10923904
+ mul edx
+ mov ebx, 10000
+ xor edx, edx
+ div ebx
+ add ecx, eax ; add to total ticks
+
+ ;; get RTC hours
+ xor eax, eax
+ mov al, 4
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC hours, in BCD
+ call bcd_to_bin ; eax now has hours in binary
+ mov edx, 65543427
+ mul edx
+ mov ebx, 1000
+ xor edx, edx
+ div ebx
+ add ecx, eax ; add to total ticks
+
+ mov ds:[46Ch], ecx ; timer tick count
+ xor al, al ; TODO: redundant?
+ mov ds:[470h], al ; rollover flag
+ .286
+endif
+ ret
+
+rtc_post endp
+
+
+
+;; --------------------------------------------------------
+;; INT 0Eh handler - Diskette IRQ 6 ISR
+;; --------------------------------------------------------
+ BIOSORG 0EF57h, 0EF55h
+int0e_handler:
+ push ax
+ push dx
+ mov dx, 3F4h
+ in al, dx
+ and al, 0C0h
+ cmp al, 0C0h
+ je int0e_normal
+ mov dx, 3F5h
+ mov al, 08h ; sense interrupt
+ out dx, al
+int0e_loop1:
+ mov dx, 3F4h ; TODO: move out of the loop?
+ in al, dx
+ and al, 0C0h
+ cmp al, 0C0h
+ jne int0e_loop1
+
+int0e_loop2:
+ mov dx, 3F5h ; TODO: inc/dec dx instead
+ in al, dx
+ mov dx, 3F4h
+ in al, dx
+ and al, 0C0h
+ cmp al, 0C0h
+ je int0e_loop2
+
+int0e_normal:
+ push ds
+ xor ax, ax
+ mov ds, ax
+ call eoi_master_pic
+ ; indicate that an interrupt occurred
+ or byte ptr ds:[43Eh], 80h
+ pop ds
+ pop dx
+ pop ax
+ iret
+
+
+;; --------------------------------------------------------
+;; Diskette Parameter Table
+;; --------------------------------------------------------
+ BIOSORG 0EFC7h, 0EFC5h
+_diskette_param_table:
+ db 0AFh
+ db 2 ; HLT=1, DMA mode
+ db 025h
+ db 2
+ db 18 ; SPT (good for 1.44MB media)
+ db 01Bh
+ db 0FFh
+ db 06Ch
+ db 0F6h ; format filler
+ db 15
+ db 8
+
+
+
+;; --------------------------------------------------------
+;; INT 17h handler - Printer service
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0EFD2h ; fixed WRT preceding code
+
+ jmp int17_handler ; NT floppy boot workaround
+ ; see @bugref{6481}
+int17_handler:
+ push ds
+ push es
+ DO_pusha
+ C_SETUP
+ call _int17_function
+ DO_popa
+ pop es
+ pop ds
+ iret
+
+
+
+;; Protected mode IDT descriptor
+;;
+;; The limit is 0 to cause a shutdown if an exception occurs
+;; in protected mode. TODO: Is that what we really want?
+;;
+;; Set base to F0000 to correspond to beginning of BIOS,
+;; in case an IDT is defined later.
+
+_pmode_IDT:
+ dw 0 ; limit 15:0
+ dw 0 ; base 15:0
+ dw 0Fh ; base 23:16
+
+
+;; Real mode IDT descriptor
+;;
+;; Set to typical real-mode values.
+;; base = 000000
+;; limit = 03ff
+
+_rmode_IDT:
+ dw 3FFh ; limit 15:00
+ dw 0 ; base 15:00
+ dw 0 ; base 23:16
+
+
+;;
+;; INT 1Ch
+;;
+;; TODO: Why does this need a special handler?
+int1c_handler: ;; user timer tick
+ iret
+
+
+
+;; --------------------------------------------------------
+;; INT 10h functions 0-Fh entry point
+;; --------------------------------------------------------
+ BIOSORG 0F045h, 0F043h
+i10f0f_entry:
+ iret
+
+
+;; --------------------------------------------------------
+;; INT 10h handler - MDA/CGA video
+;; --------------------------------------------------------
+ BIOSORG 0F065h, 0F063h
+int10_handler:
+ ;; do nothing - assumes VGA
+ iret
+
+
+;; --------------------------------------------------------
+;; MDA/CGA Video Parameter Table (INT 1Dh)
+;; --------------------------------------------------------
+ BIOSORG 0F0A4h, 0F0A2h
+mdacga_vpt:
+
+
+;;
+;; INT 18h - boot failure
+;;
+int18_handler:
+ C_SETUP
+ call _int18_panic_msg
+ ;; TODO: handle failure better?
+ hlt
+ iret
+
+;;
+;; INT 19h - boot service - relocated
+;;
+int19_relocated:
+; If an already booted OS calls int 0x19 to reboot, it is not sufficient
+; just to try booting from the configured drives. All BIOS variables and
+; interrupt vectors need to be reset, otherwise strange things may happen.
+; The approach used is faking a warm reboot (which just skips showing the
+; logo), which is a bit more than what we need, but hey, it's fast.
+ mov bp, sp
+ mov ax, [bp+2] ; TODO: redundant? address via sp?
+ cmp ax, BIOSSEG ; check caller's segment
+ jz bios_initiated_boot
+
+ xor ax, ax
+ mov ds, ax
+ mov ax, 1234h
+ mov ds:[472], ax
+ jmp post
+
+bios_initiated_boot:
+ ;; The C worker function returns the boot drive in bl and
+ ;; the boot segment in ax. In case of failure, the boot
+ ;; segment will be zero.
+ C_SETUP ; TODO: Here? Now?
+ push bp
+ mov bp, sp
+
+ ;; 1st boot device
+ mov ax, 1
+ push ax
+ call _int19_function
+ inc sp
+ inc sp
+ test ax, ax ; if 0, try next device
+ jnz boot_setup
+
+ ;; 2nd boot device
+ mov ax, 2
+ push ax
+ call _int19_function
+ inc sp
+ inc sp
+ test ax, ax ; if 0, try next device
+ jnz boot_setup
+
+ ; 3rd boot device
+ mov ax, 3
+ push ax
+ call _int19_function
+ inc sp
+ inc sp
+ test ax, ax ; if 0, try next device
+ jnz boot_setup
+
+ ; 4th boot device
+ mov ax, 4
+ push ax
+ call _int19_function
+ inc sp
+ inc sp
+ test ax, ax ; if 0, invoke INT 18h
+ jz int18_handler
+
+boot_setup:
+; TODO: the drive should be in dl already??
+;; mov dl, bl ; tell guest OS what boot drive is
+if VBOX_BIOS_CPU lt 80386
+ mov [bp], ax
+ DO_shl ax, 4
+ mov [bp+2], ax ; set ip
+ mov ax, [bp]
+else
+ .386 ; NB: We're getting garbage into high eax bits
+ shl eax, 4 ; convert seg to ip
+ mov [bp+2], ax ; set ip
+
+ shr eax, 4 ; get cs back
+ .286
+endif
+ and ax, BIOSSEG ; remove what went in ip
+ mov [bp+4], ax ; set cs
+ xor ax, ax
+ mov ds, ax
+ mov es, ax
+ mov [bp], ax ; TODO: what's this?!
+ mov ax, 0AA55h ; set ok flag ; TODO: and this?
+
+ pop bp ; TODO: why'd we just zero it??
+ iret ; beam me up scotty
+
+;; PCI BIOS
+
+include pcibios.inc
+include pirq.inc
+
+
+;; --------------------------------------------------------
+;; INT 12h handler - Memory size
+;; --------------------------------------------------------
+ BIOSORG 0F841h, 0F83Fh
+int12_handler:
+ ;; Don't touch - fixed size!
+ sti
+ push ds
+ mov ax, 40h
+ mov ds, ax
+ mov ax, ds:[13h]
+ pop ds
+ iret
+
+
+;; --------------------------------------------------------
+;; INT 11h handler - Equipment list service
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0F84Dh ; fixed wrt preceding code
+int11_handler:
+ ;; Don't touch - fixed size!
+ sti
+ push ds
+ mov ax, 40h
+ mov ds, ax
+ mov ax, ds:[10h]
+ pop ds
+ iret
+
+
+;; --------------------------------------------------------
+;; INT 15h handler - System services
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0F859h ; fixed wrt preceding code
+int15_handler:
+
+if VBOX_BIOS_CPU ge 80286
+ cmp ah, 87h
+ jne not_blkmove
+
+ ;; INT 15h/87h has semi-public interface because software
+ ;; may use CMOS shutdown status code 9 for its own purposes.
+ ;; The stack layout has to match.
+ pusha
+ push es
+ push ds
+ C_SETUP
+ call _int15_blkmove
+ pop ds
+ pop es
+ popa
+ iret
+not_blkmove:
+
+endif
+
+ pushf
+ push ds
+ push es
+ C_SETUP
+if VBOX_BIOS_CPU ge 80386
+ ;; int15_function32 exists in 386+ BIOS only, but INT 15h is
+ ;; not 386-specific
+ cmp ah, 0E8h
+ je int15_handler32
+ cmp ah, 0d0h
+ je int15_handler32
+endif
+ DO_pusha
+ cmp ah, 53h ; APM function?
+ je apm_call
+ cmp ah, 0C2h ; PS/2 mouse function?
+ je int15_handler_mouse
+
+ call _int15_function
+int15_handler_popa_ret:
+ DO_popa
+if VBOX_BIOS_CPU ge 80386
+int15_handler32_ret:
+endif
+ pop es
+ pop ds
+ popf
+ jmp iret_modify_cf
+
+apm_call:
+ call _apm_function
+ jmp int15_handler_popa_ret
+
+int15_handler_mouse:
+ call _int15_function_mouse
+ jmp int15_handler_popa_ret
+
+if VBOX_BIOS_CPU ge 80386
+int15_handler32:
+ ;; need to save/restore 32-bit registers
+ .386
+ pushad
+ call _int15_function32
+ popad
+ .286
+ jmp int15_handler32_ret
+endif
+
+;;
+;; Perform an IRET but retain the current carry flag value
+;;
+iret_modify_cf:
+ jc carry_set
+ push bp
+ mov bp, sp
+ and byte ptr [bp + 6], 0FEh
+ or word ptr [bp + 6], 0200h
+ pop bp
+ iret
+carry_set:
+ push bp
+ mov bp, sp
+ or word ptr [bp + 6], 0201h
+ pop bp
+ iret
+
+;;
+;; INT 74h handler - PS/2 mouse (IRQ 12)
+;;
+int74_handler proc
+
+ sti
+ DO_pusha
+ push es
+ push ds
+ xor ax, ax
+ push ax ; placeholder for status
+ push ax ; placeholder for X
+ push ax ; placeholder for Y
+ push ax ; placeholder for Z
+ push ax ; placeholder for make_far_call bool
+ C_SETUP
+ call _int74_function
+ pop cx ; pop make_far_call flag
+ jcxz int74_done
+
+ ;; make far call to EBDA:0022
+if VBOX_BIOS_CPU ge 80186
+ push 0
+else
+ xor ax, ax
+ push ax
+endif
+ pop ds
+ push ds:[40Eh]
+ pop ds
+ call far ptr ds:[22h]
+int74_done:
+ cli
+ call eoi_both_pics
+ add sp, 8 ; remove status, X, Y, Z
+ pop ds
+ pop es
+ DO_popa
+ iret
+
+int74_handler endp
+
+int76_handler proc
+
+ ;; record completion in BIOS task complete flag
+ push ax
+ push ds
+ mov ax, 40h
+ mov ds, ax
+ mov byte ptr ds:[8Eh], 0FFh
+ call eoi_both_pics
+ pop ds
+ pop ax
+ iret
+
+int76_handler endp
+
+
+;;
+;; IRQ 8 handler (RTC)
+;;
+int70_handler:
+ push es
+ push ds
+ DO_pusha
+ C_SETUP
+ call _int70_function
+ DO_popa
+ pop ds
+ pop es
+ iret
+
+
+
+if VBOX_BIOS_CPU lt 80386
+;
+; We're tight on space down below in the int08_handler, so put
+; the 16-bit rollover code here.
+;
+int08_maybe_rollover:
+ ja int08_rollover
+ cmp ax, 00B0h
+ jb int08_rollover_store
+ ;; there has been a midnight rollover
+int08_rollover:
+ xor dx, dx
+ xor ax, ax
+
+ inc byte ptr ds:[70h] ; increment rollover flag
+int08_rollover_store:
+ jmp int08_store_ticks
+endif
+
+
+;; --------------------------------------------------------
+;; 8x8 font (first 128 characters)
+;; --------------------------------------------------------
+ BIOSORG 0FA6Eh, 0FA6Ch
+include font8x8.inc
+
+
+;; --------------------------------------------------------
+;; INT 1Ah handler - Time of the day + PCI BIOS
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0FE6Eh ; fixed wrt preceding table
+int1a_handler:
+if VBOX_BIOS_CPU ge 80386
+ cmp ah, 0B1h
+ jne int1a_normal
+
+ push es
+ push ds
+ C_SETUP
+ .386
+ pushad
+ call _pci16_function
+ popad
+ .286
+ pop ds
+ pop es
+ iret
+endif
+
+int1a_normal:
+ push es
+ push ds
+ DO_pusha
+ C_SETUP
+int1a_callfunction:
+ call _int1a_function
+ DO_popa
+ pop ds
+ pop es
+ iret
+
+
+;; --------------------------------------------------------
+;; Timer tick - IRQ 0 handler
+;; --------------------------------------------------------
+ BIOSORG 0FEA5h, 0FEA3h
+int08_handler:
+if VBOX_BIOS_CPU ge 80386
+ .386
+ sti
+ push eax
+else
+ sti
+ push ax
+endif
+ push ds
+ push dx
+ mov ax, 40h
+ mov ds, ax
+
+if VBOX_BIOS_CPU ge 80386
+ mov eax, ds:[6Ch] ; get ticks dword
+ inc eax
+else
+ mov ax, ds:[6Ch] ; get ticks dword
+ mov dx, ds:[6Ch+2]
+ inc ax ; inc+jz+inc saves two bytes over add+adc.
+ jnz int08_compare
+ inc dx
+int08_compare:
+endif
+
+ ;; compare eax to one day's worth of ticks (at 18.2 Hz)
+if VBOX_BIOS_CPU ge 80386
+ cmp eax, 1800B0h
+ jb int08_store_ticks
+else
+ cmp dx, 18h
+ jb int08_store_ticks
+ jmp int08_maybe_rollover
+endif
+
+if VBOX_BIOS_CPU ge 80386
+ ;; there has been a midnight rollover
+ xor eax, eax
+ inc byte ptr ds:[70h] ; increment rollover flag
+
+int08_store_ticks:
+ mov ds:[6Ch], eax
+else
+int08_store_ticks:
+ mov ds:[6Ch], ax
+ mov ds:[6Ch+2], dx
+endif
+
+ ;; time to turn off floppy drive motor(s)?
+ mov al, ds:[40h]
+ or al, al
+ jz int08_floppy_off
+ dec al
+ mov ds:[40h], al
+ jnz int08_floppy_off
+ ;; turn motor(s) off
+ mov dx, 03F2h
+ in al, dx
+ and al, 0CFh
+ out dx, al
+int08_floppy_off:
+
+ int 1Ch ; call the user timer handler
+
+ cli
+ call eoi_master_pic
+ pop dx
+ pop ds
+if VBOX_BIOS_CPU ge 80386
+ pop eax
+ .286
+else
+ pop ax
+endif
+ iret
+
+
+;; --------------------------------------------------------
+;; Initial interrupt vector offsets for POST
+;; --------------------------------------------------------
+ BIOSORG 0FEF3h, 0FEF1h
+vector_table:
+
+
+
+;; --------------------------------------------------------
+;; BIOS copyright string
+;; --------------------------------------------------------
+ BIOSORG 0FF00h, 0FEFEh
+bios_string:
+ db BIOS_COPYRIGHT
+
+
+;; --------------------------------------------------------
+;; IRET - default interrupt handler
+;; --------------------------------------------------------
+ BIOSORG 0FF53h, 0FF51h
+
+dummy_iret:
+ iret
+
+
+;; --------------------------------------------------------
+;; INT 05h - Print Screen service
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0FF54h ; fixed wrt preceding
+int05_handler:
+ ;; Not implemented
+ iret
+
+include smidmi.inc
+
+;; --------------------------------------------------------
+;; Processor reset entry point
+;; --------------------------------------------------------
+ BIOSORG 0FFF0h, 0FFEEh
+cpu_reset:
+ ;; This is where the CPU starts executing after a reset
+ jmp far ptr post
+
+ ;; BIOS build date
+ db BIOS_BUILD_DATE
+ db 0 ; padding
+ ;; System model ID
+ db SYS_MODEL_ID
+ ;; Checksum byte
+ db 0FFh
+
+
+BIOSSEG ends
+
+ end
+
diff --git a/src/VBox/Devices/PC/BIOS/parallel.c b/src/VBox/Devices/PC/BIOS/parallel.c
new file mode 100644
index 00000000..31354121
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/parallel.c
@@ -0,0 +1,91 @@
+/* $Id: parallel.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+
+void BIOSCALL int17_function(pusha_regs_t regs, uint16_t es, uint16_t ds, volatile iret_addr_t iret_addr)
+{
+ uint16_t addr,timeout;
+ uint8_t val8;
+
+ int_enable();
+
+ addr = read_word(0x0040, (regs.u.r16.dx << 1) + 8);
+ if ((regs.u.r8.ah < 3) && (regs.u.r16.dx < 3) && (addr > 0)) {
+ timeout = read_byte(0x0040, 0x0078 + regs.u.r16.dx) << 8;
+ if (regs.u.r8.ah == 0) {
+ outb(addr, regs.u.r8.al);
+ val8 = inb(addr+2);
+ outb(addr+2, val8 | 0x01); // send strobe
+ outb(addr+2, val8 & ~0x01);
+ while (((inb(addr+1) & 0x40) == 0x40) && (timeout)) {
+ timeout--;
+ }
+ }
+ if (regs.u.r8.ah == 1) {
+ val8 = inb(addr+2);
+ outb(addr+2, val8 & ~0x04); // send init
+ outb(addr+2, val8 | 0x04);
+ }
+ val8 = inb(addr+1);
+ regs.u.r8.ah = (val8 ^ 0x48);
+ if (!timeout) regs.u.r8.ah |= 0x01;
+ ClearCF(iret_addr.flags);
+ } else {
+ SetCF(iret_addr.flags); // Unsupported
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/pci32.c b/src/VBox/Devices/PC/BIOS/pci32.c
new file mode 100644
index 00000000..34009ce1
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pci32.c
@@ -0,0 +1,22 @@
+/* $Id: pci32.c $ */
+/** @file
+ * 32-bit PCI BIOS wrapper.
+ */
+
+/*
+ * Copyright (C) 2004-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef __386__
+#error This file must be compiled as 32-bit!
+#endif
+
+#include "pcibios.c"
diff --git a/src/VBox/Devices/PC/BIOS/pcibio32.asm b/src/VBox/Devices/PC/BIOS/pcibio32.asm
new file mode 100644
index 00000000..6a2232e3
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcibio32.asm
@@ -0,0 +1,98 @@
+; $Id: pcibio32.asm $
+;; @file
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+
+
+; Public symbols for debugging only
+public pcibios32_entry
+public bios32_service
+
+; The BIOS32 service directory header must be located in the E0000h-FFFF0h
+; range on a paragraph boundary. Note that the actual 32-bit code need not
+; be located below 1MB at all.
+
+_DATA segment public 'DATA'
+
+align 16
+bios32_directory:
+ db '_32_' ; ASCII signature
+ dw bios32_service ; Entry point address...
+ dw 000Fh ; ...hardcoded to F000 segment
+ db 0 ; Revision
+ db 1 ; Length in paras - must be 1
+ db 0 ; Checksum calculated later
+ db 5 dup(0) ; Unused, must be zero
+
+_DATA ends
+
+.386
+
+extrn _pci32_function:near
+
+BIOS32 segment public 'CODE' use32
+
+;
+; The BIOS32 Service Directory - must be less than 4K in size (easy!).
+;
+bios32_service proc far
+
+ pushfd
+
+ cmp bl, 0 ; Only function 0 supported
+ jnz b32_bad_func
+
+ cmp eax, 'ICP$' ; "$PCI"
+ mov al, 80h ; Unknown service
+ jnz b32_done
+
+ mov ebx, 000f0000h ; Base address (linear)
+ mov ecx, 0f000h ; Length of service
+ mov edx, pcibios32_entry ; Entry point offset from base
+ xor al, al ; Indicate success
+b32_done:
+ popfd
+ retf
+
+b32_bad_func:
+ mov al, 81h ; Unsupported function
+ jmp b32_done
+
+bios32_service endp
+
+;
+; The 32-bit PCI BIOS entry point - simply calls into C code.
+;
+pcibios32_entry proc far
+
+ pushfd ; Preserve flags
+ cld ; Just in case...
+
+ push es ; Call into C implementation
+ pushad
+ call _pci32_function
+ popad
+ pop es
+
+ popfd ; Restore flags and return
+ retf
+
+pcibios32_entry endp
+
+
+BIOS32 ends
+
+ end
+
diff --git a/src/VBox/Devices/PC/BIOS/pcibios.c b/src/VBox/Devices/PC/BIOS/pcibios.c
new file mode 100644
index 00000000..a58a23fb
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcibios.c
@@ -0,0 +1,413 @@
+/* $Id: pcibios.c $ */
+/** @file
+ * PCI BIOS support.
+ */
+
+/*
+ * Copyright (C) 2004-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+#if DEBUG_PCI
+# define BX_DEBUG_PCI(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_PCI(...)
+#endif
+
+/* PCI function codes. */
+enum pci_func {
+ PCI_BIOS_PRESENT = 0x01, /* PCI BIOS presence check. */
+ FIND_PCI_DEVICE = 0x02, /* Find PCI device by ID. */
+ FIND_PCI_CLASS_CODE = 0x03, /* Find PCI device by class. */
+ GEN_SPECIAL_CYCLE = 0x06, /* Generate special cycle. */
+ READ_CONFIG_BYTE = 0x08, /* Read a byte from PCI config space. */
+ READ_CONFIG_WORD = 0x09, /* Read a word from PCI config space. */
+ READ_CONFIG_DWORD = 0x0A, /* Read a dword from PCI config space. */
+ WRITE_CONFIG_BYTE = 0x0B, /* Write a byte to PCI config space. */
+ WRITE_CONFIG_WORD = 0x0C, /* Write a word to PCI config space. */
+ WRITE_CONFIG_DWORD = 0x0D, /* Write a dword to PCI config space. */
+ GET_IRQ_ROUTING = 0x0E, /* Get IRQ routing table. */
+ SET_PCI_HW_INT = 0x0F, /* Set PCI hardware interrupt. */
+};
+
+enum pci_error {
+ SUCCESSFUL = 0x00, /* Success. */
+ FUNC_NOT_SUPPORTED = 0x81, /* Unsupported function. */
+ BAD_VENDOR_ID = 0x83, /* Bad vendor ID (all bits set) passed. */
+ DEVICE_NOT_FOUND = 0x86, /* No matching device found. */
+ BAD_REGISTER_NUMBER = 0x87, /* Register number out of range. */
+ SET_FAILED = 0x88, /* Failed to set PCI interrupt. */
+ BUFFER_TOO_SMALL = 0x89 /* Routing table buffer insufficient. */
+};
+
+/// @todo merge with system.c
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define SP r.gr.u.r16.sp
+#define EAX r.gr.u.r32.eax
+#define EBX r.gr.u.r32.ebx
+#define ECX r.gr.u.r32.ecx
+#define EDX r.gr.u.r32.edx
+#define ES r.es
+
+/* The 16-bit PCI BIOS service must be callable from both real and protected
+ * mode. In protected mode, the caller must set the CS selector base to F0000h
+ * (but the CS selector value is not specified!). The caller does not always
+ * provide a DS which covers the BIOS segment.
+ *
+ * Unlike APM, there are no provisions for the 32-bit PCI BIOS interface
+ * calling the 16-bit implementation.
+ *
+ * The PCI Firmware Specification requires that the PCI BIOS service is called
+ * with at least 1,024 bytes of stack space available, that interrupts are not
+ * enabled during execution, and that the routines are re-entrant.
+ *
+ * Implementation notes:
+ * - The PCI BIOS interface already uses certain 32-bit registers even in
+ * 16-bit mode. To simplify matters, all 32-bit GPRs are saved/restored and
+ * may be used by helper routines (notably for 32-bit port I/O).
+ */
+
+#define PCI_CFG_ADDR 0xCF8
+#define PCI_CFG_DATA 0xCFC
+
+#ifdef __386__
+
+#define PCIxx(x) pci32_##x
+
+/* The stack layout is different in 32-bit mode. */
+typedef struct {
+ pushad_regs_t gr;
+ uint32_t es;
+ uint32_t flags;
+} pci_regs_t;
+
+#define FLAGS r.flags
+
+/* In 32-bit mode, don't do any output; not technically impossible but needs
+ * a lot of extra code.
+ */
+#undef BX_INFO
+#define BX_INFO(...)
+#undef BX_DEBUG_PCI
+#define BX_DEBUG_PCI(...)
+
+#else
+
+#define PCIxx(x) pci16_##x
+
+typedef struct {
+ pushad_regs_t gr;
+ uint16_t ds;
+ uint16_t es;
+ iret_addr_t ra;
+} pci_regs_t;
+
+#define FLAGS r.ra.flags.u.r16.flags
+
+#endif
+
+#ifdef __386__
+
+/* 32-bit code can just use the compiler intrinsics. */
+extern unsigned inpd(unsigned port);
+extern unsigned outpd(unsigned port, unsigned value);
+#pragma intrinsic(inpd,outpd)
+
+#else
+
+/// @todo merge with AHCI code
+
+/* Warning: Destroys high bits of EAX. */
+uint32_t inpd(uint16_t port);
+#pragma aux inpd = \
+ ".386" \
+ "in eax, dx" \
+ "mov dx, ax" \
+ "shr eax, 16" \
+ "xchg ax, dx" \
+ parm [dx] value [dx ax] modify nomemory;
+
+/* Warning: Destroys high bits of EAX. */
+void outpd(uint16_t port, uint32_t val);
+#pragma aux outpd = \
+ ".386" \
+ "xchg ax, cx" \
+ "shl eax, 16" \
+ "mov ax, cx" \
+ "out dx, eax" \
+ parm [dx] [cx ax] modify nomemory;
+
+#endif
+
+/* PCI IRQ routing expansion buffer descriptor. */
+typedef struct {
+ uint16_t buf_size;
+ uint8_t __far *buf_ptr;
+} pci_route_buf;
+
+/* Defined in assembler module .*/
+extern char pci_routing_table[];
+extern uint16_t pci_routing_table_size;
+
+/* Write the CONFIG_ADDRESS register to prepare for data access. Requires
+ * the register offset to be DWORD aligned (low two bits clear). Warning:
+ * destroys high bits of EAX.
+ */
+void pci16_w_addr(uint16_t bus_dev_fn, uint16_t ofs, uint16_t cfg_addr);
+#pragma aux pci16_w_addr = \
+ ".386" \
+ "movzx eax, ax" \
+ "shl eax, 8" \
+ "or eax, 80000000h" \
+ "mov al, bl" \
+ "out dx, eax" \
+ parm [ax] [bx] [dx] modify exact [ax] nomemory;
+
+
+/* Select a PCI configuration register given its offset and bus/dev/fn.
+ * This is largely a wrapper to avoid excessive inlining.
+ */
+void PCIxx(select_reg)(uint16_t bus_dev_fn, uint16_t ofs)
+{
+ pci16_w_addr(bus_dev_fn, ofs & ~3, PCI_CFG_ADDR);
+}
+
+/* Selected configuration space offsets. */
+#define PCI_VEN_ID 0x00
+#define PCI_DEV_ID 0x02
+#define PCI_REV_ID 0x08
+#define PCI_CLASS_CODE 0x09
+#define PCI_HEADER_TYPE 0x0E
+#define PCI_BRIDGE_SUBORD 0x1A
+
+/* To avoid problems with 16-bit code, we reserve the last possible
+ * bus/dev/fn combination (65,535). Upon reaching this location, the
+ * probing will end.
+ */
+#define BUSDEVFN_NOT_FOUND 0xFFFF
+
+/* In the search algorithm, we decrement the device index every time
+ * a matching device is found. If the requested device is indeed found,
+ * the index will have decremented down to -1/0xFFFF.
+ */
+#define INDEX_DEV_FOUND 0xFFFF
+
+/* Find a specified PCI device, either by vendor+device ID or class.
+ * If index is non-zero, the n-th device will be located. 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..13891db5
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcibios.inc
@@ -0,0 +1,362 @@
+; $Id: pcibios.inc $
+;; @file
+; ???
+;
+
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+; other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+; a choice of LGPL license versions is made available with the language indicating
+; that LGPLv2 or any later version may be used, or where a choice of which version
+; of the LGPL is applied is otherwise unspecified.
+
+
+include pcicfg.inc
+
+if BX_PCIBIOS
+
+ifdef DEBUG
+
+; Publics for easier debugging and disassembly
+
+public pcibios_init_iomem_bases
+public pci_init_io_loop1
+public pci_init_io_loop2
+public init_io_base
+public next_pci_base
+public enable_iomem_space
+public next_pci_dev
+public pcibios_init_set_elcr
+public is_master_pic
+public pcibios_init_irqs
+public pci_init_irq_loop1
+public pci_init_irq_loop2
+public pci_test_int_pin
+public pirq_found
+public next_pci_func
+public next_pir_entry
+public pci_init_end
+
+endif
+
+.386
+
+if not BX_ROMBIOS32
+pci_irq_list:
+ db 11, 10, 9, 11
+
+pcibios_init_sel_reg:
+ push eax
+ mov eax, 800000h
+ mov ax, bx
+ shl eax, 8
+ and dl, 0FCh
+ or al, dl
+ mov dx, PCI_CFG1
+ out dx, eax
+ pop eax
+ ret
+
+pcibios_init_iomem_bases:
+ push bp
+ mov bp, sp
+ifdef VBOX
+ mov eax,19200509
+ mov dx,410h
+ out dx, eax
+else
+; This incomplete PCI resource setup code is less functional than the PCI
+; resource assignment created by the fake PCI BIOS and is therefore disabled.
+; Blindly enabling everything on the root bus (including bus mastering!) can
+; only be called buggy. It causes the trouble with AMD PCNet which it then
+; tries to work around, but that still contains a race.
+ mov eax, 0E0000000h ; base for memory init
+ push eax
+ mov ax, 0D000h ; base for i/o init
+ push ax
+ mov ax, 010h ; start at base address #0
+ push ax
+ mov bx, 8
+pci_init_io_loop1:
+ mov dl, 0
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in ax, dx
+ cmp ax, 0FFFFh
+ jz next_pci_dev
+
+ifndef VBOX ; This currently breaks restoring a previously saved state.
+ mov dl, 4 ; disable i/o and memory space access
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in al, dx
+ and al, 0FCh
+ out dx, al
+pci_init_io_loop2:
+ mov dl, [bp-8]
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in eax, dx
+ test al, 1
+ jnz init_io_base
+
+ mov ecx, eax
+ mov eax, 0FFFFFFFFh
+ out dx, eax
+ in eax, dx
+ cmp eax, ecx
+ je next_pci_base
+ xor eax, 0FFFFFFFFh
+ mov ecx, eax
+ mov eax, [bp-4]
+ out dx, eax
+ add eax, ecx ; calculate next free mem base
+ add eax, 01000000h
+ and eax, 0FF000000h
+ mov [bp-4], eax
+ jmp next_pci_base
+
+init_io_base:
+ mov cx, ax
+ mov ax, 0FFFFh
+ out dx, eax
+ in eax, dx
+ cmp ax, cx
+ je next_pci_base
+
+ xor ax, 0FFFEh
+ mov cx, ax
+ mov ax, [bp-6]
+ out dx, eax
+ add ax, cx ; calculate next free i/o base
+ add ax, 00100h
+ and ax, 0FF00h
+ mov [bp-6], ax
+next_pci_base:
+ mov al, [bp-8]
+ add al, 4
+ cmp al, 28h
+ je enable_iomem_space
+
+ mov byte ptr[bp-8], al
+ jmp pci_init_io_loop2
+endif ; !VBOX
+
+enable_iomem_space:
+ mov dl, 4 ;; enable i/o and memory space access if available
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in al, dx
+ or al, 7
+ out dx, al
+ifdef VBOX
+ mov dl, 0 ; check if PCI device is AMD PCNet
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in eax, dx
+ cmp eax, 020001022h
+ jne next_pci_dev
+
+ mov dl, 10h ; get I/O address
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in ax, dx
+ and ax, 0FFFCh
+ mov cx, ax
+ mov dx, cx
+ add dx, 14h ; reset register if PCNet is in word I/O mode
+ in ax, dx ; reset is performed by reading the reset register
+ mov dx, cx
+ add dx, 18h ; reset register if PCNet is in word I/O mode
+ in eax, dx ; reset is performed by reading the reset register
+endif ; VBOX
+next_pci_dev:
+ mov byte ptr[bp-8], 10h
+ inc bx
+ cmp bx, 0100h
+ jne pci_init_io_loop1
+endif ; !VBOX
+ mov sp, bp
+ pop bp
+ ret
+
+pcibios_init_set_elcr:
+ push ax
+ push cx
+ mov dx, 04D0h
+ test al, 8
+ jz is_master_pic
+
+ inc dx
+ and al, 7
+is_master_pic:
+ mov cl, al
+ mov bl, 1
+ shl bl, cl
+ in al, dx
+ or al, bl
+ out dx, al
+ pop cx
+ pop ax
+ ret
+
+pcibios_init_irqs:
+ push ds
+ push bp
+ mov ax, 0F000h
+ mov ds, ax
+ifndef VBOX
+; this code works OK, but it's unnecessary effort since the fake PCI BIOS
+; already configured the IRQ lines and the ELCR correctly
+ mov dx, 04D0h ;; reset ELCR1 + ELCR2
+ mov al, 0
+ out dx, al
+ inc dx
+ out dx, al
+ mov si, pci_routing_table_structure
+ mov bh, [si+8]
+ mov bl, [si+9]
+ mov dl, 0
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in eax, dx
+ cmp eax, [si+12] ;; check irq router
+ jne pci_init_end
+
+ mov dl, [si+34]
+ call pcibios_init_sel_reg
+ push bx ;; save irq router bus + devfunc
+ mov dx, PCI_CFG2
+ mov ax, 8080h
+ out dx, ax ;; reset PIRQ route control
+ add dx, 2
+ out dx, ax
+ mov ax, [si+6]
+ sub ax, 20h
+ shr ax, 4
+ mov cx, ax
+ add si, 20h ;; set pointer to 1st entry
+ mov bp, sp
+ mov ax, pci_irq_list
+ push ax
+ xor ax, ax
+ push ax
+pci_init_irq_loop1:
+ mov bh, [si]
+ mov bl, [si+1]
+pci_init_irq_loop2:
+ mov dl, 0
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in ax, dx
+ cmp ax, 0FFFFh
+ jnz pci_test_int_pin
+
+ test bl, 7
+ jz next_pir_entry
+
+ jmp next_pci_func
+
+pci_test_int_pin:
+ mov dl, 3Ch
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2 + 1 ; access config space at 3Dh
+ in al, dx
+ and al, 7
+ jz next_pci_func
+
+ dec al ;; determine pirq reg
+ mov dl, 3
+ mul dl
+ add al, 2
+ xor ah, ah
+ mov bx, ax
+ mov al, [si+bx]
+ mov dl, al
+ mov bx, [bp]
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ and al, 3
+ add dl, al
+ in al, dx
+ cmp al, 80h
+ jb pirq_found
+
+ mov bx, [bp-2] ;; pci irq list pointer
+ mov al, [bx]
+ out dx, al
+ inc bx
+ mov [bp-2], bx
+ call pcibios_init_set_elcr
+pirq_found:
+ mov bh, [si]
+ mov bl, [si+1]
+ add bl, [bp-3] ;; pci function number
+ mov dl, 3Ch
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ out dx, al
+next_pci_func:
+ inc byte ptr[bp-3]
+ inc bl
+ test bl, 7
+ jnz pci_init_irq_loop2
+
+next_pir_entry:
+ add si, 10h
+ mov byte ptr[bp-3], 0
+ loop pci_init_irq_loop1
+
+ mov sp, bp
+ pop bx
+pci_init_end:
+endif
+ pop bp
+ pop ds
+ ret
+
+endif ; !BX_ROMBIOS32
+
+endif ; BX_PCIBIOS
+
+SET_DEFAULT_CPU_286
+
diff --git a/src/VBox/Devices/PC/BIOS/pcicfg.inc b/src/VBox/Devices/PC/BIOS/pcicfg.inc
new file mode 100644
index 00000000..83e2c2d5
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcicfg.inc
@@ -0,0 +1,6 @@
+
+BX_PCIBIOS equ 1 ; Enable PCI BIOS
+
+PCI_CFG1 equ 0CF8h
+PCI_CFG2 equ 0CFCh
+
diff --git a/src/VBox/Devices/PC/BIOS/pciutil.c b/src/VBox/Devices/PC/BIOS/pciutil.c
new file mode 100644
index 00000000..efc0279d
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pciutil.c
@@ -0,0 +1,210 @@
+/* $Id: pciutil.c $ */
+/** @file
+ * Utility routines for calling the PCI BIOS.
+ */
+
+/*
+ * Copyright (C) 2011-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+/** PCI BIOS functions. */
+#define PCIBIOS_ID 0xb1
+#define PCIBIOS_PCI_BIOS_PRESENT 0x01
+#define PCIBIOS_FIND_PCI_DEVICE 0x02
+#define PCIBIOS_FIND_CLASS_CODE 0x03
+#define PCIBIOS_GENERATE_SPECIAL_CYCLE 0x06
+#define PCIBIOS_READ_CONFIG_BYTE 0x08
+#define PCIBIOS_READ_CONFIG_WORD 0x09
+#define PCIBIOS_READ_CONFIG_DWORD 0x0a
+#define PCIBIOS_WRITE_CONFIG_BYTE 0x0b
+#define PCIBIOS_WRITE_CONFIG_WORD 0x0c
+#define PCIBIOS_WRITE_CONFIG_DWORD 0x0d
+#define PCIBIOS_GET_IRQ_ROUTING_OPTIONS 0x0e
+#define PCIBIOS_SET_PCI_IRQ 0x0f
+
+/** Status codes. */
+#define SUCCESSFUL 0x00
+#define FUNC_NOT_SUPPORTED 0x81
+#define BAD_VENDOR_ID 0x83
+#define DEVICE_NOT_FOUND 0x86
+#define BAD_REGISTER_NUMBER 0x87
+#define SET_FAILED 0x88
+#define BUFFER_TOO_SMALL 0x89
+
+
+#if VBOX_BIOS_CPU >= 80386
+/* Warning: Destroys high bits of ECX. */
+uint16_t pci_find_class(uint16_t op, uint32_t dev_class, uint16_t index);
+# pragma aux pci_find_class = \
+ ".386" \
+ "shl ecx, 16" \
+ "mov cx, dx" \
+ "int 0x1a" \
+ "cmp ah, 0" \
+ "je found" \
+ "mov bx, 0xffff" \
+ "found:" \
+ parm [ax] [cx dx] [si] value [bx];
+#endif
+
+uint16_t pci_find_dev(uint16_t op, uint16_t dev_id, uint16_t ven_id, uint16_t index);
+#pragma aux pci_find_dev = \
+ "int 0x1a" \
+ "cmp ah, 0" \
+ "je found" \
+ "mov bx, 0xffff" \
+ "found:" \
+ parm [ax] [cx] [dx] [si] value [bx];
+
+uint8_t pci_read_cfgb(uint16_t op, uint16_t bus_dev_fn, uint16_t reg);
+#pragma aux pci_read_cfgb = \
+ "int 0x1a" \
+ parm [ax] [bx] [di] value [cl];
+
+uint16_t pci_read_cfgw(uint16_t op, uint16_t bus_dev_fn, uint16_t reg);
+#pragma aux pci_read_cfgw = \
+ "int 0x1a" \
+ parm [ax] [bx] [di] value [cx];
+
+#if VBOX_BIOS_CPU >= 80386
+/* Warning: Destroys high bits of ECX. */
+uint32_t pci_read_cfgd(uint16_t op, uint16_t bus_dev_fn, uint16_t reg);
+# pragma aux pci_read_cfgd = \
+ ".386" \
+ "int 0x1a" \
+ "mov ax, cx" \
+ "shr ecx, 16" \
+ parm [ax] [bx] [di] value [cx ax];
+#endif
+
+uint8_t pci_write_cfgb(uint16_t op, uint16_t bus_dev_fn, uint16_t reg, uint8_t val);
+#pragma aux pci_write_cfgb = \
+ "int 0x1a" \
+ parm [ax] [bx] [di] [cl];
+
+uint8_t pci_write_cfgw(uint16_t op, uint16_t bus_dev_fn, uint16_t reg, uint16_t val);
+#pragma aux pci_write_cfgw = \
+ "int 0x1a" \
+ parm [ax] [bx] [di] [cx];
+
+#if VBOX_BIOS_CPU >= 80386
+/* Warning: Destroys high bits of ECX. */
+uint8_t pci_write_cfgd(uint16_t op, uint16_t bus_dev_fn, uint16_t reg, uint32_t val);
+# pragma aux pci_write_cfgd = \
+ ".386" \
+ "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..940c3f93
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pciutil.h
@@ -0,0 +1,38 @@
+/* $Id: pciutil.h $ */
+/** @file
+ * Utility routines for calling the PCI BIOS.
+ */
+
+/*
+ * Copyright (C) 2011-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_pciutil_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_pciutil_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+extern uint16_t pci_find_device(uint16_t v_id, uint16_t d_id);
+/* Warning: pci_find_classcode destroys the high bits of ECX. */
+extern uint16_t pci_find_classcode(uint32_t dev_class);
+extern uint32_t pci_read_config_byte(uint8_t bus, uint8_t dev_fn, uint8_t reg);
+extern uint32_t pci_read_config_word(uint8_t bus, uint8_t dev_fn, uint8_t reg);
+/* Warning: pci_read_config_dword destroys the high bits of ECX. */
+extern uint32_t pci_read_config_dword(uint8_t bus, uint8_t dev_fn, uint8_t reg);
+extern void pci_write_config_byte(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint8_t val);
+extern void pci_write_config_word(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint16_t val);
+/* Warning: pci_write_config_dword destroys the high bits of ECX. */
+extern void pci_write_config_dword(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint32_t val);
+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..0a7bf67c
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pirq.inc
@@ -0,0 +1,477 @@
+; $Id: pirq.inc $
+;; @file
+; ???
+;
+
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+;
+
+; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+; other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+; a choice of LGPL license versions is made available with the language indicating
+; that LGPLv2 or any later version may be used, or where a choice of which version
+; of the LGPL is applied is otherwise unspecified.
+
+
+if BX_PCIBIOS
+public _pci_routing_table
+public _pci_routing_table_size
+
+align 16
+pci_routing_table_structure:
+ db '$PIR' ;; "$PIR" signature
+ db 0, 1 ;; version
+ifdef VBOX
+ dw 32 + (30 * 16) ;; table size
+else ; !VBOX
+ dw 32 + (6 * 16) ;; table size
+endif ; !VBOX
+ db 0 ;; PCI interrupt router bus
+ db 8 ;; PCI interrupt router DevFunc
+ dw 0000h ;; PCI exclusive IRQs
+ dw 8086h ;; compatible PCI interrupt router vendor ID
+ dw 7000h ;; compatible PCI interrupt router device ID
+ dw 0,0 ;; Miniport data
+ db 0,0,0,0,0,0,0,0,0,0,0 ;; reserved
+ifdef VBOX
+ db 0 ;; checksum (set by biossums)
+else ; !VBOX
+ db 7 ;; checksum
+endif ; !VBOX
+_pci_routing_table:
+pci_routing_table:
+ ;; first slot entry PCI-to-ISA (embedded)
+ db 0 ;; pci bus number
+ db 008h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#: pointer into PCI2ISA config space
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 0 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; second slot entry: 1st PCI slot
+ db 0 ;; pci bus number
+ db 010h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 1 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; third slot entry: 2nd PCI slot
+ db 0 ;; pci bus number
+ db 018h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 2 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 4th slot entry: 3rd PCI slot
+ db 0 ;; pci bus number
+ db 020h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 3 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 5th slot entry: 4th PCI slot
+ db 0 ;; pci bus number
+ db 028h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 4 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 6th slot entry: 5th PCI slot
+ db 0 ;; pci bus number
+ db 030h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 5 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ifdef VBOX
+ ;; 7th slot entry: 6th PCI slot
+ db 0 ;; pci bus number
+ db 038h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 6 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 8th slot entry: 7th PCI slot
+ db 0 ;; pci bus number
+ db 040h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 7 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 9th slot entry: 8th PCI slot
+ db 0 ;; pci bus number
+ db 048h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 8 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 10th slot entry: 9th PCI slot
+ db 0 ;; pci bus number
+ db 050h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 9 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 11th slot entry: 10th PCI slot
+ db 0 ;; pci bus number
+ db 058h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 10 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 12th slot entry: 11th PCI slot
+ db 0 ;; pci bus number
+ db 60h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 11 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 13th slot entry: 12th PCI slot
+ db 0 ;; pci bus number
+ db 068h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 12 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 14th slot entry: 13th PCI slot
+ db 0 ;; pci bus number
+ db 070h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 13 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 15th slot entry: 14th PCI slot
+ db 0 ;; pci bus number
+ db 078h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 14 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 16th slot entry: 15th PCI slot
+ db 0 ;; pci bus number
+ db 080h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 15 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 17th slot entry: 16th PCI slot
+ db 0 ;; pci bus number
+ db 088h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 16 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 18th slot entry: 17th PCI slot
+ db 0 ;; pci bus number
+ db 090h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 17 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 19th slot entry: 18th PCI slot
+ db 0 ;; pci bus number
+ db 098h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 18 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 20th slot entry: 19th PCI slot
+ db 0 ;; pci bus number
+ db 0A0h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 19 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 21st slot entry: 20th PCI slot
+ db 0 ;; pci bus number
+ db 0A8h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 20 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 22nd slot entry: 21st PCI slot
+ db 0 ;; pci bus number
+ db 0B0h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 21 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 23rd slot entry: 22nd PCI slot
+ db 0 ;; pci bus number
+ db 0B8h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 22 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 24th slot entry: 23rd PCI slot
+ db 0 ;; pci bus number
+ db 0C0h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 23 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 25th slot entry: 24th PCI slot
+ db 0 ;; pci bus number
+ db 0C8h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 24 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 26th slot entry: 25th PCI slot
+ db 0 ;; pci bus number
+ db 0D0h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 25 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 27th slot entry: 26th PCI slot
+ db 0 ;; pci bus number
+ db 0D8h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 26 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 28th slot entry: 27th PCI slot
+ db 0 ;; pci bus number
+ db 0E0h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 27 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 29th slot entry: 28th PCI slot
+ db 0 ;; pci bus number
+ db 0E8h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 28 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 30th slot entry: 29th PCI slot
+ db 0 ;; pci bus number
+ db 0F0h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 29 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+endif ; VBOX
+pci_routing_table_end:
+;; Size of the table
+_pci_routing_table_size dw pci_routing_table_end - pci_routing_table
+
+endif ; BX_PCIBIOS
diff --git a/src/VBox/Devices/PC/BIOS/pmode.inc b/src/VBox/Devices/PC/BIOS/pmode.inc
new file mode 100644
index 00000000..db96a074
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pmode.inc
@@ -0,0 +1,81 @@
+; $Id: pmode.inc $
+;; @file
+; Enter and exit a minimal protected-mode environment.
+;
+
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;; Caveats: May only be called from the F000 segment (16-bit). Does not
+;; switch stacks. Must be run with disabled interrupts(!), any exceptions
+;; will cause a crash. On return from pmode_enter, DS contains a selector
+;; which can address the entire 4GB address space.
+
+public pmode_enter
+public pmode_exit
+public pmbios_gdt_desc
+public pmbios_gdt
+
+pmode_enter proc near
+
+ push cs
+ pop ds
+ .386p
+ lgdt fword ptr [pmbios_gdt_desc]
+ mov eax, cr0
+ or al, 1
+ mov cr0, eax
+; jmp far ptr 20h:really_enter_pm
+ db 0EAh
+ dw really_enter_pm
+ dw 20h
+really_enter_pm:
+ mov ax, 18h
+ mov ds, ax
+ ret
+
+pmode_enter endp
+
+
+pmode_exit proc near
+
+ mov ax, 40h ; Ensure RM limit/attributes
+ mov ds, ax ; (where base = selector << 4)
+
+ mov eax, cr0
+ and al, 0FEh
+ mov cr0, eax
+ SET_DEFAULT_CPU_286
+ jmp far ptr really_exit_pm
+really_exit_pm:
+ ret
+
+pmode_exit endp
+
+
+
+pmbios_gdt_desc:
+ dw 40h + 7 ; last selector plus 8 - 1
+ dw pmbios_gdt
+ dw 000Fh
+
+pmbios_gdt:
+ dw 0, 0, 0, 0
+ dw 0, 0, 0, 0
+ dw 0ffffh, 0, 9b00h, 00cfh ; 32-bit code (0x10)
+ dw 0ffffh, 0, 9300h, 00cfh ; 32-bit data (0x18)
+ dw 0ffffh, 0, 9b0fh, 0000h ; 16-bit code, base=0xf0000
+ dw 0ffffh, 0, 9300h, 0000h ; 16-bit data, base=0x0
+ dw 0, 0, 0, 0
+ dw 0, 0, 0, 0
+ dw 0ffffh, 400h, 9300h, 0000h ; 16-bit data, base=0x40
+
diff --git a/src/VBox/Devices/PC/BIOS/pmsetup.inc b/src/VBox/Devices/PC/BIOS/pmsetup.inc
new file mode 100644
index 00000000..775b9d4b
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pmsetup.inc
@@ -0,0 +1,65 @@
+; $Id: pmsetup.inc $
+;; @file
+; Initial system setup which needs to run in protected mode.
+;
+
+;
+; Copyright (C) 2004-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+SVR equ 0FEE000F0h
+LVT_LINT0 equ 0FEE00350h
+LVT_LINT1 equ 0FEE00360h
+
+public pmode_setup
+
+;; Enable the local APIC and program LINT0/LINT1 entries. Without that,
+;; virtual wire interrupts could not be delivered. Note that the APIC must
+;; be enabled first because when disabled, all LVTs are forced masked.
+
+pmode_setup proc near
+
+ .386
+ push eax
+ push esi
+ pushf
+ cli ; Interrupts would kill us!
+ call pmode_enter
+
+ mov eax, cr0 ; Clear CR0.CD and CR0.NW
+ and eax, 09FFFFFFFh
+ mov cr0, eax
+
+ mov esi, SVR ; Program the SVR -- enable the APIC,
+ mov eax, 010Fh ; set spurious interrupt vector to 15
+ mov [esi], eax
+
+ mov esi, LVT_LINT0 ; Program LINT0 to ExtINT and unmask
+ mov eax, [esi]
+ and eax, 0FFFE00FFh
+ or ah, 7
+ mov [esi], eax
+
+ mov esi, LVT_LINT1 ; Program LINT1 to NMI and unmask
+ mov eax, [esi]
+ and eax, 0FFFE00FFh
+ or ah, 4
+ mov [esi], eax
+
+ call pmode_exit
+ popf
+ pop esi
+ pop eax
+ SET_DEFAULT_CPU_286
+ ret
+
+pmode_setup endp
+
diff --git a/src/VBox/Devices/PC/BIOS/post.c b/src/VBox/Devices/PC/BIOS/post.c
new file mode 100644
index 00000000..d7e7d5df
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/post.c
@@ -0,0 +1,187 @@
+/* $Id: post.c $ */
+/** @file
+ * BIOS POST routines. Used only during initialization.
+ */
+
+/*
+ * Copyright (C) 2004-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+#if DEBUG_POST
+# define DPRINT(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define DPRINT(...)
+#endif
+
+/* In general, checksumming ROMs in a VM just wastes time. */
+//#define CHECKSUM_ROMS
+
+/* The format of a ROM is as follows:
+ *
+ * ------------------------------
+ * 0 | AA55h signature (word) |
+ * ------------------------------
+ * 2 | Size in 512B blocks (byte) |
+ * ------------------------------
+ * 3 | Start of executable code |
+ * | ....... |
+ * end | |
+ * ------------------------------
+ */
+
+typedef struct rom_hdr_tag {
+ uint16_t signature;
+ uint8_t num_blks;
+ uint8_t code;
+} rom_hdr;
+
+
+/* Calculate the checksum of a ROM. Note that the ROM might be
+ * larger than 64K.
+ */
+static inline uint8_t rom_checksum(uint8_t __far *rom, uint8_t blocks)
+{
+ uint8_t sum = 0;
+
+#ifdef CHECKSUM_ROMS
+ while (blocks--) {
+ int i;
+
+ for (i = 0; i < 512; ++i)
+ sum += rom[i];
+ /* Add 512 bytes (32 paragraphs) to segment. */
+ rom = MK_FP(FP_SEG(rom) + (512 >> 4), 0);
+ }
+#endif
+ return sum;
+}
+
+/* The ROM init routine might trash register. Give the compiler a heads-up. */
+typedef void (rom_init_rtn)(void);
+#pragma aux rom_init_rtn modify [ax bx cx dx si di es] loadds;
+
+/* 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 __far *rom_init;
+
+ /* Checksum good, initialize ROM. */
+ rom_init = (void __far *)&rom->code;
+ rom_init();
+ int_disable();
+ DPRINT("ROM initialized\n");
+
+ /* Continue scanning past the end of this ROM. */
+ rom_blks = (rom->num_blks + 3) & ~3; /* 4 blocks = 2K */
+ start_seg += rom_blks / 4;
+ }
+ } else {
+ /* Scanning is done in 2K steps. */
+ start_seg += 2048 >> 4;
+ }
+ }
+}
+
+#if VBOX_BIOS_CPU >= 80386
+
+/* NB: The CPUID detection is generic but currently not used elsewhere. */
+
+/* Check CPUID availability. */
+int is_cpuid_supported( void )
+{
+ uint32_t old_flags, new_flags;
+
+ old_flags = eflags_read();
+ new_flags = old_flags ^ (1L << 21); /* Toggle CPUID bit. */
+ eflags_write( new_flags );
+ new_flags = eflags_read();
+ return( old_flags != new_flags ); /* Supported if bit changed. */
+}
+
+#define APICMODE_DISABLED 0
+#define APICMODE_APIC 1
+#define APICMODE_X2APIC 2
+
+#define APIC_BASE_MSR 0x1B
+#define APICBASE_X2APIC 0x400 /* bit 10 */
+#define APICBASE_ENABLE 0x800 /* bit 11 */
+
+/*
+ * Set up APIC/x2APIC. See also DevPcBios.cpp.
+ *
+ * NB: Virtual wire compatibility is set up earlier in 32-bit protected
+ * mode assembler (because it needs to access MMIO just under 4GB).
+ * Switching to x2APIC mode or disabling the APIC is done through an MSR
+ * and needs no 32-bit addressing. Going to x2APIC mode does not lose the
+ * existing virtual wire setup.
+ *
+ * NB: This code does not assume that there is a local APIC. It is necessary
+ * to check CPUID whether APIC is present; the CPUID instruction might not be
+ * available either.
+ *
+ * NB: Destroys high bits of 32-bit registers.
+ */
+void BIOSCALL apic_setup(void)
+{
+ uint64_t base_msr;
+ uint16_t mask_set;
+ uint16_t mask_clr;
+ uint8_t apic_mode;
+ uint32_t cpu_id[4];
+
+ /* If there's no CPUID, there's certainly no APIC. */
+ if (!is_cpuid_supported()) {
+ return;
+ }
+
+ /* Check EDX bit 9 */
+ cpuid(&cpu_id, 1);
+ BX_DEBUG("CPUID EDX: 0x%lx\n", cpu_id[3]);
+ if ((cpu_id[3] & (1 << 9)) == 0) {
+ return; /* No local APIC, nothing to do. */
+ }
+
+ /* APIC mode at offset 78h in CMOS NVRAM. */
+ apic_mode = inb_cmos(0x78);
+
+ mask_set = mask_clr = 0;
+ if (apic_mode == APICMODE_X2APIC)
+ mask_set = APICBASE_X2APIC;
+ else if (apic_mode == APICMODE_DISABLED)
+ mask_clr = APICBASE_ENABLE;
+ else
+ ; /* Any other setting leaves things alone. */
+
+ if (mask_set || mask_clr) {
+ base_msr = msr_read(APIC_BASE_MSR);
+ base_msr &= ~(uint64_t)mask_clr;
+ base_msr |= mask_set;
+ msr_write(base_msr, APIC_BASE_MSR);
+ }
+}
+
+#endif
diff --git a/src/VBox/Devices/PC/BIOS/print.c b/src/VBox/Devices/PC/BIOS/print.c
new file mode 100644
index 00000000..18611b5d
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/print.c
@@ -0,0 +1,296 @@
+/* $Id: print.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include <stdarg.h>
+#include "inlines.h"
+#include "biosint.h"
+
+// Debug printf support
+
+/* Redirect INFO output to backdoor logging port. */
+#define INFO_PORT 0x504
+#define DEBUG_PORT 0x403
+
+const char bios_prefix_string[] = "BIOS: ";
+
+void wrch(uint8_t c);
+#pragma aux wrch = "mov ah, 0eh" "int 10h" parm [al] modify exact [ax bx];
+
+void send(uint16_t action, uint8_t c)
+{
+#if BX_DEBUG_SERIAL
+ if (c == '\n')
+ uart_tx_byte(BX_DEBUG_PORT, '\r');
+ uart_tx_byte(BX_DEBUG_PORT, c);
+#endif
+#if BX_VIRTUAL_PORTS
+ if (action & BIOS_PRINTF_DEBUG)
+ outb(DEBUG_PORT, c);
+ if (action & BIOS_PRINTF_INFO)
+ outb(INFO_PORT, c);
+#endif
+ if (action & BIOS_PRINTF_SCREEN) {
+ if (c == '\n')
+ wrch('\r');
+ wrch(c);
+ }
+}
+
+void put_int(uint16_t action, short val, short width, bx_bool neg)
+{
+ short nval = val / 10;
+ if (nval)
+ put_int(action, nval, width - 1, neg);
+ else {
+ while (--width > 0)
+ send(action, ' ');
+ if (neg)
+ send(action, '-');
+ }
+ send(action, val - (nval * 10) + '0');
+}
+
+void put_uint(uint16_t action, unsigned short val, short width, bx_bool neg)
+{
+ unsigned short nval = val / 10;
+ if (nval)
+ put_uint(action, nval, width - 1, neg);
+ else {
+ while (--width > 0)
+ send(action, ' ');
+ if (neg)
+ send(action, '-');
+ }
+ send(action, val - (nval * 10) + '0');
+}
+
+void put_luint(uint16_t action, unsigned long val, short width, bx_bool neg)
+{
+ unsigned long nval = val / 10;
+ if (nval)
+ put_luint(action, nval, width - 1, neg);
+ else {
+ while (--width > 0)
+ send(action, ' ');
+ if (neg)
+ send(action, '-');
+ }
+ send(action, val - (nval * 10) + '0');
+}
+
+void put_str(uint16_t action, const char __far *s)
+{
+ uint8_t c;
+
+ while (c = *s) {
+ send(action, c);
+ s++;
+ }
+}
+
+void put_str_near(uint16_t action, const char __near *s)
+{
+ uint8_t c;
+
+ while (c = *s) {
+ send(action, c);
+ s++;
+ }
+}
+
+
+//--------------------------------------------------------------------------
+// bios_printf()
+// A compact variable argument printf function.
+//
+// Supports %[format_width][length]format
+// where format can be x,X,u,d,s,S,c
+// and the optional length modifier is l (ell, long 32-bit) or ll
+// (long long, 64-bit).
+// Only x,X work with ll
+//--------------------------------------------------------------------------
+void bios_printf(uint16_t action, const char *s, ...)
+{
+ uint8_t c;
+ bx_bool in_format;
+ int i;
+ uint16_t arg, nibble, hibyte, format_width, hexadd;
+ va_list args;
+
+ va_start( args, s );
+
+ in_format = 0;
+ format_width = 0;
+
+ if ((action & BIOS_PRINTF_DEBHALT) == BIOS_PRINTF_DEBHALT) {
+ bios_printf (BIOS_PRINTF_SCREEN, "FATAL: ");
+ }
+
+ while (c = *s) {
+ if ( c == '%' ) {
+ in_format = 1;
+ format_width = 0;
+ }
+ else if (in_format) {
+ if ( (c>='0') && (c<='9') ) {
+ format_width = (format_width * 10) + (c - '0');
+ }
+ else {
+ arg = va_arg( args, uint16_t );
+ if (c == 'x' || c == 'X') {
+ if (format_width == 0)
+ format_width = 4;
+ if (c == 'x')
+ hexadd = 'a';
+ else
+ hexadd = 'A';
+ for (i=format_width-1; i>=0; i--) {
+ nibble = (arg >> (4 * i)) & 0x000f;
+ send (action, (nibble<=9)? (nibble+'0') : (nibble-10+hexadd));
+ }
+ }
+ else if (c == 'u') {
+ put_uint(action, arg, format_width, 0);
+ }
+ else if (c == 'l' && s[1] == 'l') {
+ uint64_t llval;
+ uint16_t __far *cp16;
+
+ s += 2;
+ c = *s;
+ cp16 = (uint16_t __far *)&llval;
+ cp16[0] = arg;
+ cp16[1] = va_arg( args, uint16_t );
+ cp16[2] = va_arg( args, uint16_t );
+ cp16[3] = va_arg( args, uint16_t );
+ if (c == 'x' || c == 'X') {
+ if (format_width == 0)
+ format_width = 16;
+ if (c == 'x')
+ hexadd = 'a';
+ else
+ hexadd = 'A';
+ for (i=format_width-1; i>=0; i--) {
+ nibble = (llval >> (i * 4)) & 0x000f;
+ send (action, (nibble<=9)? (nibble+'0') : (nibble-10+hexadd));
+ }
+ } else {
+ BX_PANIC("bios_printf: unknown %ll format\n");
+ }
+ }
+ else if (c == 'l') {
+ s++;
+ c = *s; /* is it ld,lx,lu? */
+ hibyte = va_arg( args, uint16_t );
+ if (c == 'd') {
+ if (hibyte & 0x8000)
+ put_luint(action, 0L-(((uint32_t) hibyte << 16) | arg), format_width-1, 1);
+ else
+ put_luint(action, ((uint32_t) hibyte << 16) | arg, format_width, 0);
+ }
+ else if (c == 'u') {
+ put_luint(action, ((uint32_t) hibyte << 16) | arg, format_width, 0);
+ }
+ else if (c == 'x' || c == 'X')
+ {
+ if (format_width == 0)
+ format_width = 8;
+ if (c == 'x')
+ hexadd = 'a';
+ else
+ hexadd = 'A';
+ for (i=format_width-1; i>=0; i--) {
+ nibble = ((((uint32_t)hibyte << 16) | arg) >> (4 * i)) & 0x000f;
+ send (action, (nibble<=9)? (nibble+'0') : (nibble-10+hexadd));
+ }
+ }
+ }
+ else if (c == 'd') {
+ if (arg & 0x8000)
+ put_int(action, -arg, format_width - 1, 1);
+ else
+ put_int(action, arg, format_width, 0);
+ }
+ else if (c == 's') {
+ put_str(action, (char *)arg);
+ }
+ else if (c == 'S') {
+ hibyte = arg;
+ arg = va_arg( args, uint16_t );
+ put_str(action, hibyte :> (char *)arg);
+ }
+ else if (c == 'c') {
+ send(action, arg);
+ }
+ else
+ BX_PANIC("bios_printf: unknown format\n");
+ in_format = 0;
+ }
+ }
+ else {
+ send(action, c);
+ }
+ ++s;
+ }
+ va_end( args );
+ if (action & BIOS_PRINTF_HALT) {
+ // freeze in a busy loop.
+ int_disable();
+ halt_forever();
+ }
+}
+
+// End of printf support
diff --git a/src/VBox/Devices/PC/BIOS/ps2mouse.c b/src/VBox/Devices/PC/BIOS/ps2mouse.c
new file mode 100644
index 00000000..37ed0a7d
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ps2mouse.c
@@ -0,0 +1,452 @@
+/* $Id: ps2mouse.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+
+
+#if DEBUG_INT15_MS
+# define BX_DEBUG_INT15_MS(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT15_MS(...)
+#endif
+
+#if DEBUG_INT74
+# define BX_DEBUG_INT74(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT74(...)
+#endif
+
+#if BX_USE_PS2_MOUSE
+
+static const char panic_msg_keyb_buffer_full[] = "%s: keyboard input buffer full\n";
+
+uint8_t send_to_mouse_ctrl(uint8_t sendbyte)
+{
+ BX_DEBUG_INT15_MS("send %02x to mouse:\n", sendbyte);
+ // wait for chance to write to ctrl
+ if (inb(0x64) & 0x02)
+ BX_PANIC(panic_msg_keyb_buffer_full,"sendmouse");
+ outb(0x64, 0xD4);
+ outb(0x60, sendbyte);
+ return(0);
+}
+
+
+uint8_t get_mouse_data(uint8_t __far *data)
+{
+ int retries = 10000; /* ~150ms timeout */
+ uint8_t response;
+
+ while ((inb(0x64) & 0x21) != 0x21 && retries)
+ {
+ /* Wait until the 15us refresh counter toggles. */
+ response = inb(0x61) & 0x10;
+ while((inb(0x61) & 0x10) == response)
+ ;
+ --retries;
+ }
+
+ if (!retries)
+ return(1);
+
+ response = inb(0x60);
+ *data = response;
+ return(0);
+}
+
+void set_kbd_command_byte(uint8_t command_byte)
+{
+ if (inb(0x64) & 0x02)
+ BX_PANIC(panic_msg_keyb_buffer_full,"setkbdcomm");
+
+ outb(0x64, 0x60); // write command byte
+ outb(0x60, command_byte);
+}
+
+
+void BIOSCALL int74_function(volatile uint16_t make_farcall, volatile uint16_t Z,
+ volatile uint16_t Y, volatile uint16_t X, volatile uint16_t status)
+{
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint8_t in_byte, index, package_count;
+ uint8_t mouse_flags_1, mouse_flags_2;
+
+ BX_DEBUG_INT74("entering int74_function\n");
+ make_farcall = 0;
+
+ in_byte = inb(0x64);
+ if ( (in_byte & 0x21) != 0x21 ) {
+ return;
+ }
+ in_byte = inb(0x60);
+ BX_DEBUG_INT74("int74: read byte %02x\n", in_byte);
+
+ mouse_flags_1 = read_byte(ebda_seg, 0x0026);
+ mouse_flags_2 = read_byte(ebda_seg, 0x0027);
+
+ if ( (mouse_flags_2 & 0x80) != 0x80 ) {
+ return;
+ }
+
+ package_count = mouse_flags_2 & 0x07;
+ index = mouse_flags_1 & 0x07;
+ write_byte(ebda_seg, 0x28 + index, in_byte);
+
+ if ( index >= package_count ) {
+ BX_DEBUG_INT74("int74_function: make_farcall=1\n");
+ status = read_byte(ebda_seg, 0x0028 + 0);
+ X = read_byte(ebda_seg, 0x0028 + 1);
+ Y = read_byte(ebda_seg, 0x0028 + 2);
+ Z = 0;
+ mouse_flags_1 = 0;
+ // check if far call handler installed
+ if (mouse_flags_2 & 0x80)
+ make_farcall = 1;
+ }
+ else {
+ mouse_flags_1++;
+ }
+ write_byte(ebda_seg, 0x0026, mouse_flags_1);
+}
+
+void BIOSCALL int15_function_mouse(pusha_regs_t regs, uint16_t ES, uint16_t DS, volatile uint16_t FLAGS)
+{
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint8_t mouse_flags_1, mouse_flags_2;
+ uint16_t mouse_driver_seg;
+ uint16_t mouse_driver_offset;
+ uint8_t mouse_cmd;
+ uint8_t ret, mouse_data1, mouse_data2, mouse_data3;
+
+ BX_DEBUG_INT15_MS("int15 AX=%04x\n",regs.u.r16.ax);
+
+ // Return Codes status in AH
+ // =========================
+ // 00: success
+ // 01: invalid subfunction (AL > 7)
+ // 02: invalid input value (out of allowable range)
+ // 03: interface error
+ // 04: resend command received from mouse controller,
+ // device driver should attempt command again
+ // 05: cannot enable mouse, since no far call has been installed
+ // 80/86: mouse service not implemented
+
+ if (regs.u.r8.al > 7) {
+ BX_DEBUG_INT15_MS("unsupported subfn\n");
+ // invalid function
+ SET_CF();
+ regs.u.r8.ah = 1;
+ return;
+ }
+
+ // Valid subfn; disable AUX input and IRQ12, assume no error
+ set_kbd_command_byte(0x65);
+ CLEAR_CF();
+ regs.u.r8.ah = 0;
+
+ switch (regs.u.r8.al) {
+ case 0: // Disable/Enable Mouse
+ BX_DEBUG_INT15_MS("case 0: ");
+ if (regs.u.r8.bh > 1) {
+ BX_DEBUG_INT15_MS("INT 15h C2 AL=0, BH=%02x\n", (unsigned) regs.u.r8.bh);
+ // invalid subfunction
+ SET_CF();
+ regs.u.r8.ah = 1;
+ break;
+ }
+ mouse_flags_2 = read_byte(ebda_seg, 0x0027);
+ if ( (mouse_flags_2 & 0x80) == 0 ) {
+ BX_DEBUG_INT15_MS("INT 15h C2 Enable/Disable Mouse, no far call handler\n");
+ SET_CF();
+ regs.u.r8.ah = 5; // no far call installed
+ break;
+ }
+ if (regs.u.r8.bh == 0) {
+ BX_DEBUG_INT15_MS("Disable Mouse\n");
+ mouse_cmd = 0xF5; // disable mouse command
+ } else {
+ BX_DEBUG_INT15_MS("Enable Mouse\n");
+ mouse_cmd = 0xF4; // enable mouse command
+ }
+
+ ret = send_to_mouse_ctrl(mouse_cmd); // disable mouse command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data1);
+ if ( (ret == 0) || (mouse_data1 == 0xFA) ) {
+ // success
+ break;
+ }
+ }
+
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ break;
+
+ case 5: // Initialize Mouse
+ // Valid package sizes are 1 to 8
+ if ( (regs.u.r8.bh < 1) || (regs.u.r8.bh > 8) ) {
+ SET_CF();
+ regs.u.r8.ah = 2; // invalid input
+ break;
+ }
+ mouse_flags_2 = read_byte(ebda_seg, 0x0027);
+ mouse_flags_2 = (mouse_flags_2 & 0xf8) | (regs.u.r8.bh - 1);
+ write_byte(ebda_seg, 0x0027, mouse_flags_2);
+ // fall through!
+
+ case 1: // Reset Mouse
+ BX_DEBUG_INT15_MS("case 1 or 5:\n");
+ // clear current package byte index
+ mouse_flags_1 = read_byte(ebda_seg, 0x0026);
+ mouse_flags_1 = mouse_flags_1 & 0xf8;
+ write_byte(ebda_seg, 0x0026, mouse_flags_1);
+ ret = send_to_mouse_ctrl(0xFF); // reset mouse command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data3);
+ // if no mouse attached, it will return RESEND
+ if (mouse_data3 == 0xfe) {
+ SET_CF();
+ regs.u.r8.ah = 4; // resend
+ break;
+ }
+ if (mouse_data3 != 0xfa)
+ BX_PANIC("Mouse reset returned %02x (should be ack)\n", (unsigned)mouse_data3);
+ if ( ret == 0 ) {
+ ret = get_mouse_data(&mouse_data1);
+ if ( ret == 0 ) {
+ ret = get_mouse_data(&mouse_data2);
+ if ( ret == 0 ) {
+ // success
+ regs.u.r8.bl = mouse_data1;
+ regs.u.r8.bh = mouse_data2;
+ break;
+ }
+ }
+ }
+ }
+
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ break;
+
+ case 2: // Set Sample Rate
+ BX_DEBUG_INT15_MS("case 2:\n");
+ switch (regs.u.r8.bh) {
+ case 0: mouse_data1 = 10; break; // 10 reports/sec
+ case 1: mouse_data1 = 20; break; // 20 reports/sec
+ case 2: mouse_data1 = 40; break; // 40 reports/sec
+ case 3: mouse_data1 = 60; break; // 60 reports/sec
+ case 4: mouse_data1 = 80; break; // 80 reports/sec
+ case 5: mouse_data1 = 100; break; // 100 reports/sec (default)
+ case 6: mouse_data1 = 200; break; // 200 reports/sec
+ default: mouse_data1 = 0;
+ }
+ if (mouse_data1 > 0) {
+ ret = send_to_mouse_ctrl(0xF3); // set sample rate command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data2);
+ ret = send_to_mouse_ctrl(mouse_data1);
+ ret = get_mouse_data(&mouse_data2);
+ // success
+ } else {
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ }
+ } else {
+ // invalid input
+ SET_CF();
+ regs.u.r8.ah = 2;
+ }
+ break;
+
+ case 3: // Set Resolution
+ BX_DEBUG_INT15_MS("case 3:\n");
+ // BX:
+ // 0 = 25 dpi, 1 count per millimeter
+ // 1 = 50 dpi, 2 counts per millimeter
+ // 2 = 100 dpi, 4 counts per millimeter
+ // 3 = 200 dpi, 8 counts per millimeter
+ if (regs.u.r8.bh < 4) {
+ ret = send_to_mouse_ctrl(0xE8); // set resolution command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data1);
+ if (mouse_data1 != 0xfa)
+ BX_PANIC("Mouse status returned %02x (should be ack)\n", (unsigned)mouse_data1);
+ ret = send_to_mouse_ctrl(regs.u.r8.bh);
+ ret = get_mouse_data(&mouse_data1);
+ if (mouse_data1 != 0xfa)
+ BX_PANIC("Mouse status returned %02x (should be ack)\n", (unsigned)mouse_data1);
+ // success
+ } else {
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ }
+ } else {
+ // invalid input
+ SET_CF();
+ regs.u.r8.ah = 2;
+ }
+ break;
+
+ case 4: // Get Device ID
+ BX_DEBUG_INT15_MS("case 4:\n");
+ ret = send_to_mouse_ctrl(0xF2); // get mouse ID command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data1);
+ ret = get_mouse_data(&mouse_data2);
+ regs.u.r8.bh = mouse_data2;
+ // success
+ } else {
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ }
+ break;
+
+ case 6: // Return Status & Set Scaling Factor...
+ BX_DEBUG_INT15_MS("case 6:\n");
+ switch (regs.u.r8.bh) {
+ case 0: // Return Status
+ ret = send_to_mouse_ctrl(0xE9); // get mouse info command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data1);
+ if (mouse_data1 != 0xfa)
+ BX_PANIC("Mouse status returned %02x (should be ack)\n", (unsigned)mouse_data1);
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data1);
+ if ( ret == 0 ) {
+ ret = get_mouse_data(&mouse_data2);
+ if ( ret == 0 ) {
+ ret = get_mouse_data(&mouse_data3);
+ if ( ret == 0 ) {
+ regs.u.r8.bl = mouse_data1;
+ regs.u.r8.cl = mouse_data2;
+ regs.u.r8.dl = mouse_data3;
+ // success
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ break;
+
+ case 1: // Set Scaling Factor to 1:1
+ case 2: // Set Scaling Factor to 2:1
+ if (regs.u.r8.bh == 1) {
+ ret = send_to_mouse_ctrl(0xE6);
+ } else {
+ ret = send_to_mouse_ctrl(0xE7);
+ }
+ if (ret == 0) {
+ get_mouse_data(&mouse_data1);
+ ret = (mouse_data1 != 0xFA);
+ }
+ if (ret != 0) {
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ }
+ break;
+
+ default:
+ BX_PANIC("INT 15h C2 AL=6, BH=%02x\n", (unsigned) regs.u.r8.bh);
+ // invalid subfunction
+ SET_CF();
+ regs.u.r8.ah = 1;
+ }
+ break;
+
+ case 7: // Set Mouse Handler Address
+ BX_DEBUG_INT15_MS("case 7:\n");
+ mouse_driver_seg = ES;
+ mouse_driver_offset = regs.u.r16.bx;
+ write_word(ebda_seg, 0x0022, mouse_driver_offset);
+ write_word(ebda_seg, 0x0024, mouse_driver_seg);
+ mouse_flags_2 = read_byte(ebda_seg, 0x0027);
+ if (mouse_driver_offset == 0 && mouse_driver_seg == 0) {
+ /* remove handler */
+ if ( (mouse_flags_2 & 0x80) != 0 ) {
+ mouse_flags_2 &= ~0x80;
+ }
+ }
+ else {
+ /* install handler */
+ mouse_flags_2 |= 0x80;
+ }
+ write_byte(ebda_seg, 0x0027, mouse_flags_2);
+ break;
+
+ default:
+ BX_PANIC("INT 15h C2 default case entered\n");
+ // invalid subfunction
+ SET_CF();
+ regs.u.r8.ah = 1;
+ }
+ BX_DEBUG_INT15_MS("returning cf = %u, ah = %02x\n", (unsigned)GET_CF(), (unsigned)regs.u.r8.ah);
+ // Re-enable AUX input and IRQ12
+ set_kbd_command_byte(0x47);
+}
+#endif // BX_USE_PS2_MOUSE
diff --git a/src/VBox/Devices/PC/BIOS/scsi.c b/src/VBox/Devices/PC/BIOS/scsi.c
new file mode 100644
index 00000000..a59b8e78
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/scsi.c
@@ -0,0 +1,666 @@
+/* $Id: scsi.c $ */
+/** @file
+ * SCSI host adapter driver to boot from SCSI disks
+ */
+
+/*
+ * Copyright (C) 2004-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+#include "pciutil.h"
+#include "ebda.h"
+#include "scsi.h"
+
+
+#if DEBUG_SCSI
+# define DBG_SCSI(...) BX_INFO(__VA_ARGS__)
+#else
+# define DBG_SCSI(...)
+#endif
+
+#define VBSCSI_BUSY (1 << 0)
+#define VBSCSI_ERROR (1 << 1)
+
+/* The I/O port of the BusLogic SCSI adapter. */
+#define BUSLOGIC_BIOS_IO_PORT 0x430
+/* The I/O port of the LsiLogic SCSI adapter. */
+#define LSILOGIC_BIOS_IO_PORT 0x434
+/* The I/O port of the LsiLogic SAS adapter. */
+#define LSILOGIC_SAS_BIOS_IO_PORT 0x438
+
+#define VBSCSI_REGISTER_STATUS 0
+#define VBSCSI_REGISTER_COMMAND 0
+#define VBSCSI_REGISTER_DATA_IN 1
+#define VBSCSI_REGISTER_IDENTIFY 2
+#define VBSCSI_REGISTER_RESET 3
+#define VBSCSI_REGISTER_DEVSTAT 3
+
+#define VBSCSI_MAX_DEVICES 16 /* Maximum number of devices a SCSI device can have. */
+
+/* Data transfer direction. */
+#define SCSI_TXDIR_FROM_DEVICE 0
+#define SCSI_TXDIR_TO_DEVICE 1
+
+void insb_discard(unsigned nbytes, unsigned port);
+#pragma aux insb_discard = \
+ ".286" \
+ "again:" \
+ "in al,dx" \
+ "loop again" \
+ parm [cx] [dx] modify exact [cx ax] nomemory;
+
+
+int scsi_cmd_data_in(uint16_t io_base, uint8_t target_id, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ /* Check that the adapter is ready. */
+ uint8_t status, sizes;
+ uint16_t i;
+
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+ sizes = ((length >> 12) & 0xF0) | ((cbCDB == 16) ? 0 : cbCDB);
+ outb(io_base + VBSCSI_REGISTER_COMMAND, target_id); /* Write the target ID. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, SCSI_TXDIR_FROM_DEVICE); /* Write the transfer direction. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, sizes); /* Write CDB size and top bufsize bits. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, length); /* Write the buffer size. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, (length >> 8));
+ for (i = 0; i < cbCDB; i++) /* Write the CDB. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, aCDB[i]);
+
+ /* Now wait for the command to complete. */
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+ /* If any error occurred, inform the caller and don't bother reading the data. */
+ if (status & VBSCSI_ERROR) {
+ outb(io_base + VBSCSI_REGISTER_RESET, 0);
+
+ status = inb(io_base + VBSCSI_REGISTER_DEVSTAT);
+ DBG_SCSI("%s: read failed, device status %02X\n", __func__, status);
+ return 4; /* Sector not found */
+ }
+
+ /* Read in the data. The transfer length may be exactly 64K or more,
+ * which needs a bit of care when we're using 16-bit 'rep ins'.
+ */
+ while (length > 32768) {
+ DBG_SCSI("%s: reading 32K to %X:%X\n", __func__, FP_SEG(buffer), FP_OFF(buffer));
+ rep_insb(buffer, 32768, io_base + VBSCSI_REGISTER_DATA_IN);
+ length -= 32768;
+ buffer = (FP_SEG(buffer) + (32768 >> 4)) :> FP_OFF(buffer);
+ }
+
+ DBG_SCSI("%s: reading %ld bytes to %X:%X\n", __func__, length, FP_SEG(buffer), FP_OFF(buffer));
+ rep_insb(buffer, length, io_base + VBSCSI_REGISTER_DATA_IN);
+
+ return 0;
+}
+
+int scsi_cmd_data_out(uint16_t io_base, uint8_t target_id, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ /* Check that the adapter is ready. */
+ uint8_t status, sizes;
+ uint16_t i;
+
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+
+ sizes = ((length >> 12) & 0xF0) | ((cbCDB == 16) ? 0 : cbCDB);
+ outb(io_base + VBSCSI_REGISTER_COMMAND, target_id); /* Write the target ID. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, SCSI_TXDIR_TO_DEVICE); /* Write the transfer direction. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, sizes); /* Write CDB size and top bufsize bits. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, length); /* Write the buffer size. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, (length >> 8));
+ for (i = 0; i < cbCDB; i++) /* Write the CDB. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, aCDB[i]);
+
+ /* Write out the data. The transfer length may be exactly 64K or more,
+ * which needs a bit of care when we're using 16-bit 'rep outs'.
+ */
+ while (length > 32768) {
+ DBG_SCSI("%s: writing 32K from %X:%X\n", __func__, FP_SEG(buffer), FP_OFF(buffer));
+ rep_outsb(buffer, 32768, io_base + VBSCSI_REGISTER_DATA_IN);
+ length -= 32768;
+ buffer = (FP_SEG(buffer) + (32768 >> 4)) :> FP_OFF(buffer);
+ }
+
+ DBG_SCSI("%s: writing %ld bytes from %X:%X\n", __func__, length, FP_SEG(buffer), FP_OFF(buffer));
+ rep_outsb(buffer, length, io_base + VBSCSI_REGISTER_DATA_IN);
+
+ /* Now wait for the command to complete. */
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+ /* If any error occurred, inform the caller. */
+ if (status & VBSCSI_ERROR) {
+ outb(io_base + VBSCSI_REGISTER_RESET, 0);
+
+ status = inb(io_base + VBSCSI_REGISTER_DEVSTAT);
+ DBG_SCSI("%s: write failed, device status %02X\n", __func__, status);
+ return 4; /* Sector not found */
+ }
+
+ return 0;
+}
+
+/**
+ * Read sectors from an attached SCSI device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int scsi_read_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint8_t rc;
+ cdb_rw16 cdb;
+ uint32_t count;
+ uint16_t io_base;
+ uint8_t target_id;
+ uint8_t device_id;
+
+ device_id = VBOX_GET_SCSI_DEVICE(bios_dsk->drqp.dev_id);
+ if (device_id > BX_MAX_SCSI_DEVICES)
+ BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
+
+ count = bios_dsk->drqp.nsect;
+
+ /* Prepare a CDB. */
+ cdb.command = SCSI_READ_16;
+ cdb.lba = swap_64(bios_dsk->drqp.lba);
+ cdb.pad1 = 0;
+ cdb.nsect32 = swap_32(count);
+ cdb.pad2 = 0;
+
+
+ io_base = bios_dsk->scsidev[device_id].io_base;
+ target_id = bios_dsk->scsidev[device_id].target_id;
+
+ DBG_SCSI("%s: reading %u sectors, device %d, target %d\n", __func__,
+ count, device_id, bios_dsk->scsidev[device_id].target_id);
+
+ rc = scsi_cmd_data_in(io_base, target_id, (void __far *)&cdb, 16,
+ bios_dsk->drqp.buffer, (count * 512L));
+
+ if (!rc)
+ {
+ bios_dsk->drqp.trsfsectors = count;
+ bios_dsk->drqp.trsfbytes = count * 512L;
+ }
+ DBG_SCSI("%s: transferred %u sectors\n", __func__, bios_dsk->drqp.nsect);
+
+ return rc;
+}
+
+/**
+ * Write sectors to an attached SCSI device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int scsi_write_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint8_t rc;
+ cdb_rw16 cdb;
+ uint32_t count;
+ uint16_t io_base;
+ uint8_t target_id;
+ uint8_t device_id;
+
+ device_id = VBOX_GET_SCSI_DEVICE(bios_dsk->drqp.dev_id);
+ if (device_id > BX_MAX_SCSI_DEVICES)
+ BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
+
+ count = bios_dsk->drqp.nsect;
+
+ /* Prepare a CDB. */
+ cdb.command = SCSI_WRITE_16;
+ cdb.lba = swap_64(bios_dsk->drqp.lba);
+ cdb.pad1 = 0;
+ cdb.nsect32 = swap_32(count);
+ cdb.pad2 = 0;
+
+ io_base = bios_dsk->scsidev[device_id].io_base;
+ target_id = bios_dsk->scsidev[device_id].target_id;
+
+ DBG_SCSI("%s: writing %u sectors, device %d, target %d\n", __func__,
+ count, device_id, bios_dsk->scsidev[device_id].target_id);
+
+ rc = scsi_cmd_data_out(io_base, target_id, (void __far *)&cdb, 16,
+ bios_dsk->drqp.buffer, (count * 512L));
+
+ if (!rc)
+ {
+ bios_dsk->drqp.trsfsectors = count;
+ bios_dsk->drqp.trsfbytes = (count * 512L);
+ }
+ DBG_SCSI("%s: transferred %u sectors\n", __func__, bios_dsk->drqp.nsect);
+
+ return rc;
+}
+
+
+/// @todo move
+#define ATA_DATA_NO 0x00
+#define ATA_DATA_IN 0x01
+#define ATA_DATA_OUT 0x02
+
+/**
+ * Perform a "packet style" read with supplied CDB.
+ *
+ * @returns status code.
+ * @param device_id ID of the device to access.
+ * @param cmdlen Length of the CDB.
+ * @param cmdbuf The CDB buffer.
+ * @param before How much to skip before reading into the provided data buffer.
+ * @param length How much to transfer.
+ * @param inout Read/Write direction indicator.
+ * @param buffer Data buffer to store the data from the device in.
+ */
+uint16_t scsi_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t before, uint32_t length, uint8_t inout, char __far *buffer)
+{
+ bio_dsk_t __far *bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+ uint32_t read_len;
+ uint8_t status, sizes;
+ uint16_t i;
+ uint16_t io_base;
+ uint8_t target_id;
+
+ /* Data out is currently not supported. */
+ if (inout == ATA_DATA_OUT) {
+ BX_INFO("%s: DATA_OUT not supported yet\n", __func__);
+ return 1;
+ }
+
+ /* Convert to SCSI specific device number. */
+ device_id = VBOX_GET_SCSI_DEVICE(device_id);
+
+ DBG_SCSI("%s: reading %lu bytes, skip %u/%u, device %d, target %d\n", __func__,
+ length, bios_dsk->drqp.skip_b, bios_dsk->drqp.skip_a,
+ device_id, bios_dsk->scsidev[device_id].target_id);
+ DBG_SCSI("%s: reading %u %u-byte sectors\n", __func__,
+ bios_dsk->drqp.nsect, bios_dsk->drqp.sect_sz);
+
+ cmdlen -= 2; /* ATAPI uses 12-byte command packets for a READ 10. */
+
+ io_base = bios_dsk->scsidev[device_id].io_base;
+ target_id = bios_dsk->scsidev[device_id].target_id;
+
+ /* Wait until the adapter is ready. */
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+ /* On the SCSI level, we have to transfer whole sectors. */
+ /* NB: With proper residual length support, this should not be necessary; we should
+ * be able to avoid transferring the 'after' part of the sector.
+ */
+ read_len = length + before + bios_dsk->drqp.skip_a;
+
+ sizes = (((read_len) >> 12) & 0xF0) | cmdlen;
+ outb(io_base + VBSCSI_REGISTER_COMMAND, target_id); /* Write the target ID. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, SCSI_TXDIR_FROM_DEVICE); /* Write the transfer direction. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, sizes); /* Write the CDB size. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, read_len); /* Write the buffer size. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, (read_len) >> 8);
+ for (i = 0; i < cmdlen; i++) /* Write the CDB. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, cmdbuf[i]);
+
+ /* Now wait for the command to complete. */
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+ /* If any error occurred, inform the caller and don't bother reading the data. */
+ if (status & VBSCSI_ERROR) {
+ outb(io_base + VBSCSI_REGISTER_RESET, 0);
+
+ status = inb(io_base + VBSCSI_REGISTER_DEVSTAT);
+ DBG_SCSI("%s: read failed, device status %02X\n", __func__, status);
+ return 3;
+ }
+
+ /* Transfer the data read from the device. */
+
+ if (before) /* If necessary, throw away data which needs to be skipped. */
+ insb_discard(before, io_base + VBSCSI_REGISTER_DATA_IN);
+
+ bios_dsk->drqp.trsfbytes = length;
+
+ /* The requested length may be exactly 64K or more, which needs
+ * a bit of care when we're using 16-bit 'rep ins'.
+ */
+ while (length > 32768) {
+ DBG_SCSI("%s: reading 32K to %X:%X\n", __func__, FP_SEG(buffer), FP_OFF(buffer));
+ rep_insb(buffer, 32768, io_base + VBSCSI_REGISTER_DATA_IN);
+ length -= 32768;
+ buffer = (FP_SEG(buffer) + (32768 >> 4)) :> FP_OFF(buffer);
+ }
+
+ DBG_SCSI("%s: reading %ld bytes to %X:%X\n", __func__, length, FP_SEG(buffer), FP_OFF(buffer));
+ rep_insb(buffer, length, io_base + VBSCSI_REGISTER_DATA_IN);
+
+ if (bios_dsk->drqp.skip_a) /* If necessary, throw away more data. */
+ insb_discard(bios_dsk->drqp.skip_a, io_base + VBSCSI_REGISTER_DATA_IN);
+
+ return 0;
+}
+
+/**
+ * Enumerate attached devices.
+ *
+ * @returns nothing.
+ * @param io_base The I/O base port of the controller.
+ */
+void scsi_enumerate_attached_devices(uint16_t io_base)
+{
+ int i;
+ uint8_t buffer[0x0200];
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ /* Go through target devices. */
+ for (i = 0; i < VBSCSI_MAX_DEVICES; i++)
+ {
+ uint8_t rc;
+ uint8_t aCDB[16];
+ uint8_t hd_index, devcount_scsi;
+
+ aCDB[0] = SCSI_INQUIRY;
+ aCDB[1] = 0;
+ aCDB[2] = 0;
+ aCDB[3] = 0;
+ aCDB[4] = 5; /* Allocation length. */
+ aCDB[5] = 0;
+
+ rc = scsi_cmd_data_in(io_base, i, aCDB, 6, buffer, 5);
+ if (rc != 0)
+ BX_PANIC("%s: SCSI_INQUIRY failed\n", __func__);
+
+ devcount_scsi = bios_dsk->scsi_devcount;
+
+ /* Check the attached device. */
+ if ( ((buffer[0] & 0xe0) == 0)
+ && ((buffer[0] & 0x1f) == 0x00))
+ {
+ DBG_SCSI("%s: Disk detected at %d\n", __func__, i);
+
+ /* We add the disk only if the maximum is not reached yet. */
+ if (devcount_scsi < BX_MAX_SCSI_DEVICES)
+ {
+ uint64_t sectors, t;
+ uint32_t sector_size, cylinders;
+ uint16_t heads, sectors_per_track;
+ uint8_t hdcount;
+ uint8_t cmos_base;
+
+ /* Issue a read capacity command now. */
+ _fmemset(aCDB, 0, sizeof(aCDB));
+ aCDB[0] = SCSI_SERVICE_ACT;
+ aCDB[1] = SCSI_READ_CAP_16;
+ aCDB[13] = 32; /* Allocation length. */
+
+ rc = scsi_cmd_data_in(io_base, i, aCDB, 16, buffer, 32);
+ if (rc != 0)
+ BX_PANIC("%s: SCSI_READ_CAPACITY failed\n", __func__);
+
+ /* The value returned is the last addressable LBA, not
+ * the size, which what "+ 1" is for.
+ */
+ sectors = swap_64(*(uint64_t *)buffer) + 1;
+
+ sector_size = ((uint32_t)buffer[8] << 24)
+ | ((uint32_t)buffer[9] << 16)
+ | ((uint32_t)buffer[10] << 8)
+ | ((uint32_t)buffer[11]);
+
+ /* We only support the disk if sector size is 512 bytes. */
+ if (sector_size != 512)
+ {
+ /* Leave a log entry. */
+ BX_INFO("Disk %d has an unsupported sector size of %u\n", i, sector_size);
+ continue;
+ }
+
+ /* Get logical CHS geometry. */
+ switch (devcount_scsi)
+ {
+ case 0:
+ cmos_base = 0x90;
+ break;
+ case 1:
+ cmos_base = 0x98;
+ break;
+ case 2:
+ cmos_base = 0xA0;
+ break;
+ case 3:
+ cmos_base = 0xA8;
+ break;
+ default:
+ cmos_base = 0;
+ }
+
+ if (cmos_base && inb_cmos(cmos_base + 7))
+ {
+ /* If provided, grab the logical geometry from CMOS. */
+ cylinders = inb_cmos(cmos_base + 0) + (inb_cmos(cmos_base + 1) << 8);
+ heads = inb_cmos(cmos_base + 2);
+ sectors_per_track = inb_cmos(cmos_base + 7);
+ }
+ else
+ {
+ /* Calculate default logical geometry. NB: Very different
+ * from default ATA/SATA logical geometry!
+ */
+ if (sectors >= (uint32_t)4 * 1024 * 1024)
+ {
+ heads = 255;
+ sectors_per_track = 63;
+ /* Approximate x / (255 * 63) using shifts */
+ t = (sectors >> 6) + (sectors >> 12);
+ cylinders = (t >> 8) + (t >> 16);
+ }
+ else if (sectors >= (uint32_t)2 * 1024 * 1024)
+ {
+ heads = 128;
+ sectors_per_track = 32;
+ cylinders = sectors >> 12;
+ }
+ else
+ {
+ heads = 64;
+ sectors_per_track = 32;
+ cylinders = sectors >> 11;
+ }
+ }
+
+ /* Calculate index into the generic disk table. */
+ hd_index = devcount_scsi + BX_MAX_ATA_DEVICES;
+
+ bios_dsk->scsidev[devcount_scsi].io_base = io_base;
+ bios_dsk->scsidev[devcount_scsi].target_id = i;
+ bios_dsk->devices[hd_index].type = DSK_TYPE_SCSI;
+ bios_dsk->devices[hd_index].device = DSK_DEVICE_HD;
+ bios_dsk->devices[hd_index].removable = 0;
+ bios_dsk->devices[hd_index].lock = 0;
+ bios_dsk->devices[hd_index].blksize = sector_size;
+ bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_LBA;
+
+ /* Write LCHS/PCHS values. */
+ bios_dsk->devices[hd_index].lchs.heads = heads;
+ bios_dsk->devices[hd_index].lchs.spt = sectors_per_track;
+ bios_dsk->devices[hd_index].pchs.heads = heads;
+ bios_dsk->devices[hd_index].pchs.spt = sectors_per_track;
+
+ if (cylinders > 1024) {
+ bios_dsk->devices[hd_index].lchs.cylinders = 1024;
+ bios_dsk->devices[hd_index].pchs.cylinders = 1024;
+ } else {
+ bios_dsk->devices[hd_index].lchs.cylinders = (uint16_t)cylinders;
+ bios_dsk->devices[hd_index].pchs.cylinders = (uint16_t)cylinders;
+ }
+
+ BX_INFO("SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors\n", devcount_scsi,
+ i, (uint32_t)cylinders, heads, sectors_per_track, sectors);
+
+ bios_dsk->devices[hd_index].sectors = sectors;
+
+ /* Store the id of the disk in the ata hdidmap. */
+ hdcount = bios_dsk->hdcount;
+ bios_dsk->hdidmap[hdcount] = devcount_scsi + BX_MAX_ATA_DEVICES;
+ hdcount++;
+ bios_dsk->hdcount = hdcount;
+
+ /* Update hdcount in the BDA. */
+ hdcount = read_byte(0x40, 0x75);
+ hdcount++;
+ write_byte(0x40, 0x75, hdcount);
+
+ devcount_scsi++;
+ }
+ else
+ {
+ /* We reached the maximum of SCSI disks we can boot from. We can quit detecting. */
+ break;
+ }
+ }
+ else if ( ((buffer[0] & 0xe0) == 0)
+ && ((buffer[0] & 0x1f) == 0x05))
+ {
+ uint8_t cdcount;
+ uint8_t removable;
+
+ BX_INFO("SCSI %d-ID#%d: CD/DVD-ROM\n", devcount_scsi, i);
+
+ /* Calculate index into the generic device table. */
+ hd_index = devcount_scsi + BX_MAX_ATA_DEVICES;
+
+ removable = buffer[1] & 0x80 ? 1 : 0;
+
+ bios_dsk->scsidev[devcount_scsi].io_base = io_base;
+ bios_dsk->scsidev[devcount_scsi].target_id = i;
+ bios_dsk->devices[hd_index].type = DSK_TYPE_SCSI;
+ bios_dsk->devices[hd_index].device = DSK_DEVICE_CDROM;
+ bios_dsk->devices[hd_index].removable = removable;
+ bios_dsk->devices[hd_index].blksize = 2048;
+ bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_NONE;
+
+ /* Store the ID of the device in the BIOS cdidmap. */
+ cdcount = bios_dsk->cdcount;
+ bios_dsk->cdidmap[cdcount] = devcount_scsi + BX_MAX_ATA_DEVICES;
+ cdcount++;
+ bios_dsk->cdcount = cdcount;
+
+ devcount_scsi++;
+ }
+ else
+ DBG_SCSI("%s: No supported device detected at %d\n", __func__, i);
+
+ bios_dsk->scsi_devcount = devcount_scsi;
+ }
+}
+
+void scsi_pci_init(uint16_t vendor_id, uint16_t device_id)
+{
+ uint16_t bus_dev_fn;
+
+ bus_dev_fn = pci_find_device(vendor_id, device_id);
+ if (bus_dev_fn == -1) {
+ DBG_SCSI("%s: Adapter %x:%x not found, how come?!\n", __func__, vendor_id, device_id);
+ return;
+ }
+
+ DBG_SCSI("%s: Adapter %x:%x found at %x, enabling BM\n", __func__, vendor_id, device_id, bus_dev_fn);
+ /* Enable PCI memory, I/O, bus mastering access in command register. */
+ pci_write_config_word(bus_dev_fn >> 8, (uint8_t)bus_dev_fn, 4, 0x7);
+}
+
+/**
+ * Init the SCSI driver and detect attached disks.
+ */
+void BIOSCALL scsi_init(void)
+{
+ uint8_t identifier;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ bios_dsk->scsi_devcount = 0;
+
+ identifier = 0;
+
+ /* Detect the BusLogic adapter. */
+ outb(BUSLOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY, 0x55);
+ identifier = inb(BUSLOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY);
+
+ if (identifier == 0x55)
+ {
+ /* Detected - Enumerate attached devices. */
+ DBG_SCSI("%s: BusLogic SCSI adapter detected\n", __func__);
+ outb(BUSLOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_RESET, 0);
+ scsi_enumerate_attached_devices(BUSLOGIC_BIOS_IO_PORT);
+ scsi_pci_init(0x104B, 0x1040);
+ }
+ else
+ {
+ DBG_SCSI("%s: BusLogic SCSI adapter not detected\n", __func__);
+ }
+
+ /* Detect the LSI Logic parallel SCSI adapter. */
+ outb(LSILOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY, 0x55);
+ identifier = inb(LSILOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY);
+
+ if (identifier == 0x55)
+ {
+ /* Detected - Enumerate attached devices. */
+ DBG_SCSI("%s: LSI Logic SCSI adapter detected\n", __func__);
+ outb(LSILOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_RESET, 0);
+ scsi_enumerate_attached_devices(LSILOGIC_BIOS_IO_PORT);
+ scsi_pci_init(0x1000, 0x0030);
+ }
+ else
+ {
+ DBG_SCSI("%s: LSI Logic SCSI adapter not detected\n", __func__);
+ }
+
+ /* Detect the LSI Logic SAS adapter. */
+ outb(LSILOGIC_SAS_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY, 0x55);
+ identifier = inb(LSILOGIC_SAS_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY);
+
+ if (identifier == 0x55)
+ {
+ /* Detected - Enumerate attached devices. */
+ DBG_SCSI("%s: LSI Logic SAS adapter detected\n", __func__);
+ outb(LSILOGIC_SAS_BIOS_IO_PORT+VBSCSI_REGISTER_RESET, 0);
+ scsi_enumerate_attached_devices(LSILOGIC_SAS_BIOS_IO_PORT);
+ scsi_pci_init(0x1000, 0x0054);
+ }
+ else
+ {
+ DBG_SCSI("%s: LSI Logic SAS adapter not detected\n", __func__);
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/scsi.h b/src/VBox/Devices/PC/BIOS/scsi.h
new file mode 100644
index 00000000..868168db
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/scsi.h
@@ -0,0 +1,60 @@
+/* $Id: scsi.h $ */
+/** @file
+ * PC BIOS - SCSI definitions.
+ */
+
+/*
+ * Copyright (C) 2019-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_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);
+
+#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..64b2a5e2
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/serial.c
@@ -0,0 +1,128 @@
+/* $Id: serial.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "inlines.h"
+#include "biosint.h"
+
+void BIOSCALL int14_function(pusha_regs_t regs, uint16_t es, uint16_t ds, volatile iret_addr_t iret_addr)
+{
+ uint16_t addr, timer, val16;
+ uint8_t timeout;
+
+ int_enable();
+
+ addr = read_word(0x0040, (regs.u.r16.dx << 1));
+ timeout = read_byte(0x0040, 0x007C + regs.u.r16.dx);
+ if ((regs.u.r16.dx < 4) && (addr > 0)) {
+ switch (regs.u.r8.ah) {
+ case 0:
+ outb(addr+3, inb(addr+3) | 0x80);
+ if ((regs.u.r8.al & 0xE0) == 0) {
+ outb(addr, 0x17);
+ outb(addr+1, 0x04);
+ } else {
+ val16 = 0x600 >> ((regs.u.r8.al & 0xE0) >> 5);
+ outb(addr, val16 & 0xFF);
+ outb(addr+1, val16 >> 8);
+ }
+ outb(addr+3, regs.u.r8.al & 0x1F);
+ regs.u.r8.ah = inb(addr+5);
+ regs.u.r8.al = inb(addr+6);
+ ClearCF(iret_addr.flags);
+ break;
+ case 1:
+ timer = read_word(0x0040, 0x006C);
+ while (((inb(addr+5) & 0x60) != 0x60) && (timeout)) {
+ val16 = read_word(0x0040, 0x006C);
+ if (val16 != timer) {
+ timer = val16;
+ timeout--;
+ }
+ }
+ if (timeout) outb(addr, regs.u.r8.al);
+ regs.u.r8.ah = inb(addr+5);
+ if (!timeout) regs.u.r8.ah |= 0x80;
+ ClearCF(iret_addr.flags);
+ break;
+ case 2:
+ timer = read_word(0x0040, 0x006C);
+ while (((inb(addr+5) & 0x01) == 0) && (timeout)) {
+ val16 = read_word(0x0040, 0x006C);
+ if (val16 != timer) {
+ timer = val16;
+ timeout--;
+ }
+ }
+ if (timeout) {
+ regs.u.r8.ah = 0;
+ regs.u.r8.al = inb(addr);
+ } else {
+ regs.u.r8.ah = inb(addr+5);
+ }
+ ClearCF(iret_addr.flags);
+ break;
+ case 3:
+ regs.u.r8.ah = inb(addr+5);
+ regs.u.r8.al = inb(addr+6);
+ ClearCF(iret_addr.flags);
+ break;
+ default:
+ SetCF(iret_addr.flags); // Unsupported
+ }
+ } else {
+ SetCF(iret_addr.flags); // Unsupported
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/smidmi.inc b/src/VBox/Devices/PC/BIOS/smidmi.inc
new file mode 100644
index 00000000..98d5b0c3
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/smidmi.inc
@@ -0,0 +1,74 @@
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+;
+
+; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+; other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+; a choice of LGPL license versions is made available with the language indicating
+; that LGPLv2 or any later version may be used, or where a choice of which version
+; of the LGPL is applied is otherwise unspecified.
+
+include vbdmismi.inc
+
+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..1f092af2
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/system.c
@@ -0,0 +1,901 @@
+/* $Id: system.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+
+#if DEBUG_INT15
+# define BX_DEBUG_INT15(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT15(...)
+#endif
+
+
+#define UNSUPPORTED_FUNCTION 0x86 /* Specific to INT 15h. */
+
+#define BIOS_CONFIG_TABLE 0xe6f5 /** @todo configurable? put elsewhere? */
+
+#define ACPI_DATA_SIZE 0x00010000L /** @todo configurable? put elsewhere? */
+
+extern int pmode_IDT;
+extern int rmode_IDT;
+
+uint16_t read_ss(void);
+#pragma aux read_ss = "mov ax, ss" modify exact [ax] nomemory;
+
+#if VBOX_BIOS_CPU >= 80386
+
+/* The 386+ code uses CR0 to switch to/from protected mode.
+ * Quite straightforward.
+ */
+
+void pm_stack_save(uint16_t cx, uint16_t es, uint16_t si);
+#pragma aux pm_stack_save = \
+ ".386" \
+ "push ds" \
+ "push eax" \
+ "xor ax, ax" \
+ "mov ds, ax" \
+ "mov ds:[467h], sp" \
+ "mov ds:[469h], ss" \
+ parm [cx] [es] [si] modify nomemory;
+
+/* Uses position independent code to build a far return... because it was
+ * too hard to figure out how to code the far call in inline assembler.
+ *
+ * NB: It would be lovely to do 'add [sp],N' instead of 'pop ax; add ax,M;
+ * push ax'. Unfortunately the former cannot be encoded, though 'add [esp],N'
+ * can be on 386 and later -- but it may be unwise to assume that the high
+ * bits of ESP are all zero.
+ */
+void pm_enter(void);
+#pragma aux pm_enter = \
+ ".386p" \
+ "lgdt fword ptr es:[si+8]" \
+ "lidt fword ptr cs:pmode_IDT" \
+ "push 20h" \
+ "call pentry" \
+ "pentry:" \
+ "pop ax" \
+ "add ax, 0Eh" \
+ "push ax" \
+ "mov eax, cr0" \
+ "or al, 1" \
+ "mov cr0, eax" \
+ "retf" \
+ "pm_pm:" \
+ "mov ax, 10h" \
+ "mov ds, ax" \
+ "add al, 08h" \
+ "mov es, ax" \
+ "add al, 10h" \
+ "mov ss, ax" \
+ modify nomemory;
+
+/* Restore segment limits to real mode compatible values and
+ * return to real mode.
+ */
+void pm_exit(void);
+#pragma aux pm_exit = \
+ ".386p" \
+ "mov ax, 28h" \
+ "mov ds, ax" \
+ "mov es, ax" \
+ "push 0F000h" \
+ "call pexit" \
+ "pexit:" \
+ "pop ax" \
+ "add ax, 0Eh" \
+ "push ax" \
+ "mov eax, cr0" \
+ "and al, 0FEh" \
+ "mov cr0, eax" \
+ "retf" \
+ "real_mode:" \
+ "lidt fword ptr cs:rmode_IDT" \
+ modify nomemory;
+
+/* Restore stack and reload segment registers in real mode to ensure
+ * real mode compatible selector+base.
+ */
+void pm_stack_restore(void);
+#pragma aux pm_stack_restore = \
+ ".386" \
+ "xor ax, ax" \
+ "mov ds, ax" \
+ "mov es, ax" \
+ "lss sp, ds:[467h]" \
+ "pop eax" \
+ "pop ds" \
+ modify nomemory;
+
+#elif VBOX_BIOS_CPU >= 80286
+
+/* The 286 code uses LMSW to switch to protected mode but it has to reset
+ * the CPU to get back to real mode. Ugly! See return_blkmove in orgs.asm
+ * for the other matching half.
+ */
+void pm_stack_save(uint16_t cx, uint16_t es, uint16_t si, uint16_t frame);
+#pragma aux pm_stack_save = \
+ "xor ax, ax" \
+ "mov ds, ax" \
+ "mov ds:[467h], bx" \
+ "mov ds:[469h], ss" \
+ parm [cx] [es] [si] [bx] modify nomemory;
+
+/* Uses position independent code... because it was too hard to figure
+ * out how to code the far call in inline assembler.
+ */
+void pm_enter(void);
+#pragma aux pm_enter = \
+ ".286p" \
+ "lgdt fword ptr es:[si+8]" \
+ "lidt fword ptr cs:pmode_IDT" \
+ "push 20h" \
+ "call pentry" \
+ "pentry:" \
+ "pop ax" \
+ "add ax, 0Eh" \
+ "push ax" \
+ "smsw ax" \
+ "or al, 1" \
+ "lmsw ax" \
+ "retf" \
+ "pm_pm:" \
+ "mov ax, 10h" \
+ "mov ds, ax" \
+ "add al, 08h" \
+ "mov es, ax" \
+ "add al, 10h" \
+ "mov ss, ax" \
+ modify nomemory;
+
+/* Set up shutdown status and reset the CPU. The POST code
+ * will regain control. Port 80h is written with status.
+ * Code 9 is written to CMOS shutdown status byte (0Fh).
+ * CPU is triple faulted. .
+ */
+void pm_exit(void);
+#pragma aux pm_exit = \
+ "xor ax, ax" \
+ "out 80h, al" \
+ "mov al, 0Fh" \
+ "out 70h, al" \
+ "mov al, 09h" \
+ "out 71h, al" \
+ ".286p" \
+ "lidt fword ptr cs:pmode_IDT" \
+ "int 3" \
+ modify nomemory;
+
+/* Dummy. Actually done in return_blkmove. */
+void pm_stack_restore(void);
+#pragma aux pm_stack_restore = \
+ "rm_return:" \
+ modify nomemory;
+
+#endif
+
+/* NB: CX is set earlier in pm_stack_save */
+void pm_copy(void);
+#pragma aux pm_copy = \
+ "xor si, si" \
+ "xor di, di" \
+ "cld" \
+ "rep movsw" \
+ modify [si di cx] nomemory;
+
+/* The pm_switch has a few crucial differences from pm_enter, hence
+ * it is replicated here. Uses LMSW to avoid trashing high word of eax.
+ */
+void pm_switch(uint16_t reg_si);
+#pragma aux pm_switch = \
+ ".286p" \
+ "lgdt fword ptr es:[si+08h]" \
+ "lidt fword ptr es:[si+10h]" \
+ "push 38h" \
+ "call pentry" \
+ "pentry:" \
+ "pop ax" \
+ "add ax, 0Eh" \
+ "push ax" \
+ "smsw ax" \
+ "or al, 1" \
+ "lmsw ax" \
+ "retf" \
+ "pm_pm:" \
+ "mov ax, 18h" \
+ "mov ds, ax" \
+ "add al, 08h" \
+ "mov es, ax" \
+ "add al, 08h" \
+ "mov ss, ax" \
+ parm [si] modify nomemory;
+
+/* Return to caller - we do not use IRET because we should not enable
+ * interrupts. Note that AH must be zero on exit.
+ * WARNING: Needs to be adapted if calling sequence is modified!
+ */
+void pm_unwind(uint16_t args);
+#pragma aux pm_unwind = \
+ ".286" \
+ "mov sp, ax" \
+ "popa" \
+ "add sp, 6" \
+ "pop cx" \
+ "pop ax" \
+ "pop ax" \
+ "mov ax, 30h" \
+ "push ax" \
+ "push cx" \
+ "retf" \
+ parm [ax] modify nomemory aborts;
+
+/// @todo This method is silly. The RTC should be programmed to fire an interrupt
+// instead of hogging the CPU with inaccurate code.
+void timer_wait(uint32_t usec_wait)
+{
+ uint32_t cycles;
+ uint8_t old_val;
+ uint8_t cur_val;
+
+ /* We wait in 15 usec increments. */
+ cycles = usec_wait / 15;
+
+ old_val = inp(0x61) & 0x10;
+ while (cycles--) {
+ /* Wait 15us. */
+ do {
+ cur_val = inp(0x61) & 0x10;
+ } while (cur_val != old_val);
+ old_val = cur_val;
+ }
+}
+
+bx_bool set_enable_a20(bx_bool val)
+{
+ uint8_t oldval;
+
+ // Use PS/2 System Control port A to set A20 enable
+
+ // get current setting first
+ oldval = inb(0x92);
+
+ // change A20 status
+ if (val)
+ outb(0x92, oldval | 0x02);
+ else
+ outb(0x92, oldval & 0xfd);
+
+ return((oldval & 0x02) != 0);
+}
+
+/// @todo move elsewhere?
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define SP r.gr.u.r16.sp
+#define FLAGS r.fl.u.r16.flags
+#define EAX r.gr.u.r32.eax
+#define EBX r.gr.u.r32.ebx
+#define ECX r.gr.u.r32.ecx
+#define EDX r.gr.u.r32.edx
+#define ESI r.gr.u.r32.esi
+#define EDI r.gr.u.r32.edi
+#define ES r.es
+
+
+void BIOSCALL int15_function(sys_regs_t r)
+{
+ uint16_t bRegister;
+ uint8_t irqDisable;
+
+ BX_DEBUG_INT15("int15 AX=%04x\n",AX);
+
+ switch (GET_AH()) {
+ case 0x00: /* assorted functions */
+ if (GET_AL() != 0xc0)
+ goto undecoded;
+ /* GRUB calls int15 with ax=0x00c0 to get the ROM configuration table,
+ * which we don't support, but logging that event is annoying. In fact
+ * it is likely that they just misread some specs, because there is a
+ * int15 BIOS function AH=0xc0 which sounds quite similar to what GRUB
+ * wants to achieve. */
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+ case 0x24: /* A20 Control */
+ switch (GET_AL()) {
+ case 0x00:
+ set_enable_a20(0);
+ CLEAR_CF();
+ SET_AH(0);
+ break;
+ case 0x01:
+ set_enable_a20(1);
+ CLEAR_CF();
+ SET_AH(0);
+ break;
+ case 0x02:
+ SET_AL( (inb(0x92) >> 1) & 0x01 );
+ CLEAR_CF();
+ SET_AH(0);
+ break;
+ case 0x03:
+ CLEAR_CF();
+ SET_AH(0);
+ BX = 3;
+ break;
+ default:
+ BX_INFO("int15: Func 24h, subfunc %02xh, A20 gate control not supported\n", (unsigned) GET_AL());
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ }
+ break;
+
+ /* These are here just to avoid warnings being logged. */
+ case 0x22: /* Locate ROM BASIC (tough when we don't have any.) */
+ case 0x41: /* PC Convertible, wait for external events. */
+ case 0xC7: /* PS/2, get memory map. */
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+
+ /// @todo Why does this need special handling? All we need is to set CF
+ // but not handle this as an unknown function (regardless of CPU type).
+ case 0x4f:
+ /* keyboard intercept */
+#if VBOX_BIOS_CPU >= 80286
+ // nop
+#else
+ SET_AH(UNSUPPORTED_FUNCTION);
+#endif
+ SET_CF();
+ break;
+
+ case 0x52: // removable media eject
+ CLEAR_CF();
+ SET_AH(0); // "ok ejection may proceed"
+ break;
+
+ case 0x83: {
+ if( GET_AL() == 0 ) {
+ // Set Interval requested.
+ if( ( read_byte( 0x40, 0xA0 ) & 1 ) == 0 ) {
+ // Interval not already set.
+ write_byte( 0x40, 0xA0, 1 ); // Set status byte.
+ write_word( 0x40, 0x98, ES ); // Byte location, segment
+ write_word( 0x40, 0x9A, BX ); // Byte location, offset
+ write_word( 0x40, 0x9C, DX ); // Low word, delay
+ write_word( 0x40, 0x9E, CX ); // High word, delay.
+ CLEAR_CF( );
+ irqDisable = inb( 0xA1 );
+ outb( 0xA1, irqDisable & 0xFE );
+ bRegister = inb_cmos( 0xB ); // Unmask IRQ8 so INT70 will get through.
+ outb_cmos( 0xB, bRegister | 0x40 ); // Turn on the Periodic Interrupt timer
+ } else {
+ // Interval already set.
+ BX_DEBUG_INT15("int15: Func 83h, failed, already waiting.\n" );
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ }
+ } else if( GET_AL() == 1 ) {
+ // Clear Interval requested
+ write_byte( 0x40, 0xA0, 0 ); // Clear status byte
+ CLEAR_CF( );
+ bRegister = inb_cmos( 0xB );
+ outb_cmos( 0xB, bRegister & ~0x40 ); // Turn off the Periodic Interrupt timer
+ } else {
+ BX_DEBUG_INT15("int15: Func 83h, failed.\n" );
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ SET_AL(GET_AL() - 1);
+ }
+
+ break;
+ }
+
+ case 0x86:
+ // Wait for CX:DX microseconds. currently using the
+ // refresh request port 0x61 bit4, toggling every 15usec
+ int_enable();
+ timer_wait(((uint32_t)CX << 16) | DX);
+ break;
+
+ case 0x88:
+ // Get the amount of extended memory (above 1M)
+#if VBOX_BIOS_CPU >= 80286
+ AX = (inb_cmos(0x31) << 8) | inb_cmos(0x30);
+
+#if VBOX_BIOS_CPU >= 80386
+ // According to Ralf Brown's interrupt the limit should be 15M,
+ // but real machines mostly return max. 63M.
+ if(AX > 0xffc0)
+ AX = 0xffc0;
+#else
+ // An AT compatible cannot have more than 15M extended memory.
+ // If more is reported, some software (e.g. Windows 3.1) gets
+ // quite upset.
+ if(AX > 0x3c00)
+ AX = 0x3c00;
+#endif
+
+ CLEAR_CF();
+#else
+ SET_AH(UNSUPPORTED_FUNCTION);
+ SET_CF();
+#endif
+ break;
+
+ case 0x89:
+ // Switch to Protected Mode.
+ // ES:DI points to user-supplied GDT
+ // BH/BL contains starting interrupt numbers for PIC0/PIC1
+ // This subfunction does not return!
+
+ // turn off interrupts
+ int_disable(); /// @todo aren't they off already?
+
+ set_enable_a20(1); // enable A20 line; we're supposed to fail if that fails
+
+ // Initialize CS descriptor for BIOS
+ write_word(ES, SI+0x38+0, 0xffff);// limit 15:00 = normal 64K limit
+ write_word(ES, SI+0x38+2, 0x0000);// base 15:00
+ write_byte(ES, SI+0x38+4, 0x000f);// base 23:16 (hardcoded to f000:0000)
+ write_byte(ES, SI+0x38+5, 0x9b); // access
+ write_word(ES, SI+0x38+6, 0x0000);// base 31:24/reserved/limit 19:16
+
+ /* Reprogram the PICs. */
+ outb(PIC_MASTER, PIC_CMD_INIT);
+ outb(PIC_SLAVE, PIC_CMD_INIT);
+ outb(PIC_MASTER + 1, GET_BH());
+ outb(PIC_SLAVE + 1, GET_BL());
+ outb(PIC_MASTER + 1, 4);
+ outb(PIC_SLAVE + 1, 2);
+ outb(PIC_MASTER + 1, 1);
+ outb(PIC_SLAVE + 1, 1);
+ /* Mask all IRQs, user must re-enable. */
+ outb(PIC_MASTER_MASK, 0xff);
+ outb(PIC_SLAVE_MASK, 0xff);
+
+ pm_switch(SI);
+ pm_unwind((uint16_t)&r);
+
+ break;
+
+ case 0x90:
+ /* Device busy interrupt. Called by Int 16h when no key available */
+ break;
+
+ case 0x91:
+ /* Interrupt complete. Called by Int 16h when key becomes available */
+ break;
+
+ case 0xbf:
+ BX_INFO("*** int 15h function AH=bf not yet supported!\n");
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+
+ case 0xC0:
+ CLEAR_CF();
+ SET_AH(0);
+ BX = BIOS_CONFIG_TABLE;
+ ES = 0xF000;
+ break;
+
+ case 0xc1:
+ ES = read_word(0x0040, 0x000E);
+ CLEAR_CF();
+ break;
+
+ case 0xd8:
+ bios_printf(BIOS_PRINTF_DEBUG, "EISA BIOS not present\n");
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+
+ /* Make the BIOS warning for pretty much every Linux kernel start
+ * disappear - it calls with ax=0xe980 to figure out SMI info. */
+ case 0xe9: /* SMI functions (SpeedStep and similar things) */
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+ case 0xec: /* AMD64 target operating mode callback */
+ if (GET_AL() != 0)
+ goto undecoded;
+ SET_AH(0);
+ if (GET_BL() >= 1 && GET_BL() <= 3)
+ CLEAR_CF(); /* Accepted value. */
+ else
+ SET_CF(); /* Reserved, error. */
+ break;
+undecoded:
+ default:
+ BX_INFO("*** int 15h function AX=%04x, BX=%04x not yet supported!\n",
+ (unsigned) AX, (unsigned) BX);
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+ }
+}
+
+#if VBOX_BIOS_CPU >= 80386
+
+typedef struct {
+ uint32_t start;
+ uint32_t xstart;
+ uint32_t len;
+ uint32_t xlen;
+ uint32_t type;
+} mem_range_t;
+
+void set_e820_range(uint16_t reg_ES, uint16_t reg_DI, uint32_t start, uint32_t end,
+ uint8_t extra_start, uint8_t extra_end, uint16_t type)
+{
+ mem_range_t __far *range;
+
+ range = reg_ES :> (mem_range_t *)reg_DI;
+ range->start = start;
+ range->xstart = extra_start;
+ end -= start;
+ extra_end -= extra_start;
+ range->len = end;
+ range->xlen = extra_end;
+ range->type = type;
+}
+
+void BIOSCALL int15_function32(sys32_regs_t r)
+{
+ uint32_t extended_memory_size=0; // 64bits long
+ uint32_t extra_lowbits_memory_size=0;
+ uint8_t extra_highbits_memory_size=0;
+ uint32_t mcfgStart, mcfgSize;
+
+ BX_DEBUG_INT15("int15 AX=%04x\n",AX);
+
+ switch (GET_AH()) {
+ case 0xd0:
+ if (GET_AL() != 0x4f)
+ goto int15_unimplemented;
+ if (EBX == 0x50524f43 && ECX == 0x4d4f4445 && ESI == 0 && EDI == 0)
+ {
+ CLEAR_CF();
+ ESI = EBX;
+ EDI = ECX;
+ EAX = 0x49413332;
+ }
+ else
+ goto int15_unimplemented;
+ break;
+
+ case 0xe8:
+ switch(GET_AL()) {
+ case 0x20: // coded by osmaker aka K.J.
+ if(EDX == 0x534D4150) {
+ extended_memory_size = inb_cmos(0x35);
+ extended_memory_size <<= 8;
+ extended_memory_size |= inb_cmos(0x34);
+ extended_memory_size *= 64;
+#ifndef VBOX /* The following excludes 0xf0000000 thru 0xffffffff. Trust DevPcBios.cpp to get this right. */
+ // greater than EFF00000???
+ if(extended_memory_size > 0x3bc000) {
+ extended_memory_size = 0x3bc000; // everything after this is reserved memory until we get to 0x100000000
+ }
+#endif /* !VBOX */
+ extended_memory_size *= 1024;
+ extended_memory_size += (16L * 1024 * 1024);
+
+ if(extended_memory_size <= (16L * 1024 * 1024)) {
+ extended_memory_size = inb_cmos(0x31);
+ extended_memory_size <<= 8;
+ extended_memory_size |= inb_cmos(0x30);
+ extended_memory_size *= 1024;
+ extended_memory_size += (1L * 1024 * 1024);
+ }
+
+ /* This is the amount of memory above 4GB measured in 64KB units. */
+ extra_lowbits_memory_size = inb_cmos(0x62);
+ extra_lowbits_memory_size <<= 8;
+ extra_lowbits_memory_size |= inb_cmos(0x61);
+ extra_lowbits_memory_size <<= 16;
+ extra_highbits_memory_size = inb_cmos(0x63);
+ /* 0x64 and 0x65 can be used if we need to dig 1 TB or more at a later point. */
+
+ mcfgStart = 0;
+ mcfgSize = 0;
+
+ switch(BX)
+ {
+ case 0:
+ set_e820_range(ES, DI,
+ 0x0000000L, 0x0009fc00L, 0, 0, 1);
+ EBX = 1;
+ break;
+ case 1:
+ set_e820_range(ES, DI,
+ 0x0009fc00L, 0x000a0000L, 0, 0, 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(ES, DI,
+ 0x000f0000L, 0x00100000L, 0, 0, 2);
+ EBX = 3;
+ break;
+ case 3:
+ set_e820_range(ES, DI,
+ 0x00100000L,
+ extended_memory_size - ACPI_DATA_SIZE, 0, 0, 1);
+ EBX = 4;
+ break;
+ case 4:
+ set_e820_range(ES, DI,
+ extended_memory_size - ACPI_DATA_SIZE,
+ extended_memory_size, 0, 0, 3); // ACPI RAM
+ EBX = 5;
+ break;
+ case 5:
+ set_e820_range(ES, DI,
+ 0xfec00000,
+ 0xfec00000 + 0x1000, 0, 0, 2); // I/O APIC
+ EBX = 6;
+ break;
+ case 6:
+ set_e820_range(ES, DI,
+ 0xfee00000,
+ 0xfee00000 + 0x1000, 0, 0, 2); // Local APIC
+ EBX = 7;
+ break;
+ case 7:
+ /* 256KB BIOS area at the end of 4 GB */
+ /* We don't set the end to 1GB here and rely on the 32-bit
+ unsigned wrap around effect (0-0xfffc0000L). */
+ set_e820_range(ES, DI,
+ 0xfffc0000L, 0x00000000L, 0, 0, 2);
+ if (mcfgStart != 0)
+ EBX = 8;
+ else
+ {
+ if (extra_highbits_memory_size || extra_lowbits_memory_size)
+ EBX = 9;
+ else
+ EBX = 0;
+ }
+ break;
+ case 8:
+ /* PCI MMIO config space (MCFG) */
+ set_e820_range(ES, DI,
+ mcfgStart, mcfgStart + mcfgSize, 0, 0, 2);
+
+ if (extra_highbits_memory_size || extra_lowbits_memory_size)
+ EBX = 9;
+ else
+ EBX = 0;
+ break;
+ case 9:
+ /* Mapping of memory above 4 GB if present.
+ Note1: set_e820_range needs do no borrowing in the
+ subtraction because of the nice numbers.
+ Note2* works only up to 1TB because of uint8_t for
+ the upper bits!*/
+ if (extra_highbits_memory_size || extra_lowbits_memory_size)
+ {
+ set_e820_range(ES, DI,
+ 0x00000000L, extra_lowbits_memory_size,
+ 1 /*x4GB*/, extra_highbits_memory_size + 1 /*x4GB*/, 1);
+ EBX = 0;
+ break;
+ }
+ /* fall thru */
+ default: /* AX=E820, DX=534D4150, BX unrecognized */
+ goto int15_unimplemented;
+ break;
+ }
+ EAX = 0x534D4150;
+ ECX = 0x14;
+ CLEAR_CF();
+ } else {
+ // if DX != 0x534D4150)
+ goto int15_unimplemented;
+ }
+ break;
+
+ case 0x01:
+ // do we have any reason to fail here ?
+ CLEAR_CF();
+
+ // my real system sets ax and bx to 0
+ // this is confirmed by Ralph Brown list
+ // but syslinux v1.48 is known to behave
+ // strangely if ax is set to 0
+ // regs.u.r16.ax = 0;
+ // regs.u.r16.bx = 0;
+
+ // Get the amount of extended memory (above 1M)
+ CX = (inb_cmos(0x31) << 8) | inb_cmos(0x30);
+
+ // limit to 15M
+ if(CX > 0x3c00)
+ CX = 0x3c00;
+
+ // Get the amount of extended memory above 16M in 64k blocks
+ DX = (inb_cmos(0x35) << 8) | inb_cmos(0x34);
+
+ // Set configured memory equal to extended memory
+ AX = CX;
+ BX = DX;
+ break;
+ default: /* AH=0xE8?? but not implemented */
+ goto int15_unimplemented;
+ }
+ break;
+ int15_unimplemented:
+ // fall into the default case
+ default:
+ BX_INFO("*** int 15h function AX=%04x, BX=%04x not yet supported!\n",
+ (unsigned) AX, (unsigned) BX);
+ SET_CF();
+ SET_AL(UNSUPPORTED_FUNCTION);
+ break;
+ }
+}
+#endif /* VBOX_BIOS_CPU >= 80386 */
+
+#if VBOX_BIOS_CPU >= 80286
+
+#undef FLAGS
+#define FLAGS r.ra.flags.u.r16.flags
+
+/* Function 0x87 handled separately due to specific stack layout requirements. */
+void BIOSCALL int15_blkmove(disk_regs_t r)
+{
+ uint16_t base15_00;
+ uint8_t base23_16;
+ uint16_t ss;
+
+ // +++ should probably have descriptor checks
+ // +++ should have exception handlers
+
+ // turn off interrupts
+ int_disable(); /// @todo aren't they disabled already?
+
+ set_enable_a20(1); // enable A20 line
+
+ // 128K max of transfer on 386+ ???
+ // source == destination ???
+
+ // ES:SI points to descriptor table
+ // offset use initially comments
+ // ==============================================
+ // 00..07 Unused zeros Null descriptor
+ // 08..0f scratch zeros work area used by BIOS
+ // 10..17 source ssssssss source of data
+ // 18..1f dest dddddddd destination of data
+ // 20..27 CS zeros filled in by BIOS
+ // 28..2f SS zeros filled in by BIOS
+
+ //es:si
+ //eeee0
+ //0ssss
+ //-----
+
+ // check for access rights of source & dest here
+
+ // Initialize GDT descriptor
+ base15_00 = (ES << 4) + SI;
+ base23_16 = ES >> 12;
+ if (base15_00 < (ES<<4))
+ base23_16++;
+ write_word(ES, SI+0x08+0, 47); // limit 15:00 = 6 * 8bytes/descriptor
+ write_word(ES, SI+0x08+2, base15_00);// base 15:00
+ write_byte(ES, SI+0x08+4, base23_16);// base 23:16
+ write_byte(ES, SI+0x08+5, 0x93); // access
+ write_word(ES, SI+0x08+6, 0x0000); // base 31:24/reserved/limit 19:16
+
+ // Initialize CS descriptor
+ write_word(ES, SI+0x20+0, 0xffff);// limit 15:00 = normal 64K limit
+ write_word(ES, SI+0x20+2, 0x0000);// base 15:00
+ write_byte(ES, SI+0x20+4, 0x000f);// base 23:16
+ write_byte(ES, SI+0x20+5, 0x9b); // access
+ write_word(ES, SI+0x20+6, 0x0000);// base 31:24/reserved/limit 19:16
+
+ // Initialize SS descriptor
+ ss = read_ss();
+ base15_00 = ss << 4;
+ base23_16 = ss >> 12;
+ write_word(ES, SI+0x28+0, 0xffff); // limit 15:00 = normal 64K limit
+ write_word(ES, SI+0x28+2, base15_00);// base 15:00
+ write_byte(ES, SI+0x28+4, base23_16);// base 23:16
+ write_byte(ES, SI+0x28+5, 0x93); // access
+ write_word(ES, SI+0x28+6, 0x0000); // base 31:24/reserved/limit 19:16
+
+#if VBOX_BIOS_CPU >= 80386
+ /* Not taking the address of the parameter allows the code generator
+ * produce slightly better code for some unknown reason.
+ */
+ pm_stack_save(CX, ES, SI);
+#else
+ pm_stack_save(CX, ES, SI, FP_OFF(&r));
+#endif
+ pm_enter();
+ pm_copy();
+ pm_exit();
+ pm_stack_restore();
+
+ set_enable_a20(0); // unconditionally disable A20 line
+
+ // turn interrupts back on
+ int_enable();
+
+ SET_AH(0);
+ CLEAR_CF();
+}
+#endif /* VBOX_BIOS_CPU >= 80286 */
diff --git a/src/VBox/Devices/PC/BIOS/timepci.c b/src/VBox/Devices/PC/BIOS/timepci.c
new file mode 100644
index 00000000..5a737b56
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/timepci.c
@@ -0,0 +1,324 @@
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+
+#if DEBUG_INT1A
+# define BX_DEBUG_INT1A(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT1A(...)
+#endif
+
+// for access to RAM area which is used by interrupt vectors
+// and BIOS Data Area
+
+typedef struct {
+ uint8_t filler1[0x400];
+ uint8_t filler2[0x6c];
+ uint16_t ticks_low;
+ uint16_t ticks_high;
+ uint8_t midnight_flag;
+} bios_data_t;
+
+#define BiosData ((bios_data_t __far *) 0)
+
+void init_rtc(void)
+{
+ outb_cmos(0x0a, 0x26);
+ outb_cmos(0x0b, 0x02);
+ inb_cmos(0x0c);
+ inb_cmos(0x0d);
+}
+
+bx_bool rtc_updating(void)
+{
+ // This function checks to see if the update-in-progress bit
+ // is set in CMOS Status Register A. If not, it returns 0.
+ // If it is set, it tries to wait until there is a transition
+ // to 0, and will return 0 if such a transition occurs. A 1
+ // is returned only after timing out. The maximum period
+ // that this bit should be set is constrained to 244useconds.
+ // The count I use below guarantees coverage or more than
+ // this time, with any reasonable IPS setting.
+
+ uint16_t iter;
+
+ iter = 25000;
+ while (--iter != 0) {
+ if ( (inb_cmos(0x0a) & 0x80) == 0 )
+ return 0;
+ }
+ return 1; // update-in-progress never transitioned to 0
+}
+
+
+extern void eoi_both_pics(void); /* in assembly code */
+#pragma aux eoi_both_pics "*";
+
+void call_int_4a(void);
+#pragma aux call_int_4a = "int 4Ah";
+
+void BIOSCALL int70_function(pusha_regs_t regs, uint16_t ds, uint16_t es, iret_addr_t iret_addr)
+{
+ // INT 70h: IRQ 8 - CMOS RTC interrupt from periodic or alarm modes
+ uint8_t registerB = 0, registerC = 0;
+
+ // Check which modes are enabled and have occurred.
+ registerB = inb_cmos( 0xB );
+ registerC = inb_cmos( 0xC );
+
+ if( ( registerB & 0x60 ) != 0 ) {
+ if( ( registerC & 0x20 ) != 0 ) {
+ // Handle Alarm Interrupt.
+ int_enable();
+ call_int_4a();
+ int_disable();
+ }
+ if( ( registerC & 0x40 ) != 0 ) {
+ // Handle Periodic Interrupt.
+
+ if( read_byte( 0x40, 0xA0 ) != 0 ) {
+ // Wait Interval (Int 15, AH=83) active.
+ uint32_t time;
+
+ time = read_dword( 0x40, 0x9C ); // Time left in microseconds.
+ if( time < 0x3D1 ) {
+ // Done waiting.
+ uint16_t segment, offset;
+
+ segment = read_word( 0x40, 0x98 );
+ offset = read_word( 0x40, 0x9A );
+ write_byte( 0x40, 0xA0, 0 ); // Turn of status byte.
+ outb_cmos( 0xB, registerB & 0x37 ); // Clear the Periodic Interrupt.
+ write_byte( segment, offset, read_byte(segment, offset) | 0x80 ); // Write to specified flag byte.
+ } else {
+ // Continue waiting.
+ time -= 0x3D1;
+ write_dword( 0x40, 0x9C, time );
+ }
+ }
+ }
+ }
+ eoi_both_pics();
+}
+
+/// @todo the coding style WRT register access is totally inconsistent
+// in the following routines
+
+void BIOSCALL int1a_function(pusha_regs_t regs, uint16_t ds, uint16_t es, iret_addr_t iret_addr)
+{
+ uint8_t val8;
+
+ BX_DEBUG_INT1A("int1a: AX=%04x BX=%04x CX=%04x DX=%04x DS=%04x\n",
+ regs.u.r16.ax, regs.u.r16.bx, regs.u.r16.cx, regs.u.r16.dx, ds);
+ int_enable();
+
+ switch (regs.u.r8.ah) {
+ case 0: // get current clock count
+ int_disable();
+ regs.u.r16.cx = BiosData->ticks_high;
+ regs.u.r16.dx = BiosData->ticks_low;
+ regs.u.r8.al = BiosData->midnight_flag;
+ BiosData->midnight_flag = 0; // reset flag
+ int_enable();
+ // AH already 0
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 1: // Set Current Clock Count
+ int_disable();
+ BiosData->ticks_high = regs.u.r16.cx;
+ BiosData->ticks_low = regs.u.r16.dx;
+ BiosData->midnight_flag = 0; // reset flag
+ int_enable();
+ regs.u.r8.ah = 0;
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 2: // Read CMOS Time
+ if (rtc_updating()) {
+ SetCF(iret_addr.flags);
+ break;
+ }
+
+ regs.u.r8.dh = inb_cmos(0x00); // Seconds
+ regs.u.r8.cl = inb_cmos(0x02); // Minutes
+ regs.u.r8.ch = inb_cmos(0x04); // Hours
+ regs.u.r8.dl = inb_cmos(0x0b) & 0x01; // Stat Reg B
+ regs.u.r8.ah = 0;
+ regs.u.r8.al = regs.u.r8.ch;
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 3: // Set CMOS Time
+ // Using a debugger, I notice the following masking/setting
+ // of bits in Status Register B, by setting Reg B to
+ // a few values and getting its value after INT 1A was called.
+ //
+ // try#1 try#2 try#3
+ // before 1111 1101 0111 1101 0000 0000
+ // after 0110 0010 0110 0010 0000 0010
+ //
+ // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1
+ // My assumption: RegB = ((RegB & 01100000b) | 00000010b)
+ if (rtc_updating()) {
+ init_rtc();
+ // fall through as if an update were not in progress
+ }
+ outb_cmos(0x00, regs.u.r8.dh); // Seconds
+ outb_cmos(0x02, regs.u.r8.cl); // Minutes
+ outb_cmos(0x04, regs.u.r8.ch); // Hours
+ // Set Daylight Savings time enabled bit to requested value
+ val8 = (inb_cmos(0x0b) & 0x60) | 0x02 | (regs.u.r8.dl & 0x01);
+ // (reg B already selected)
+ outb_cmos(0x0b, val8);
+ regs.u.r8.ah = 0;
+ regs.u.r8.al = val8; // val last written to Reg B
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 4: // Read CMOS Date
+ regs.u.r8.ah = 0;
+ if (rtc_updating()) {
+ SetCF(iret_addr.flags);
+ break;
+ }
+ regs.u.r8.cl = inb_cmos(0x09); // Year
+ regs.u.r8.dh = inb_cmos(0x08); // Month
+ regs.u.r8.dl = inb_cmos(0x07); // Day of Month
+ regs.u.r8.ch = inb_cmos(0x32); // Century
+ regs.u.r8.al = regs.u.r8.ch;
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 5: // Set CMOS Date
+ // Using a debugger, I notice the following masking/setting
+ // of bits in Status Register B, by setting Reg B to
+ // a few values and getting its value after INT 1A was called.
+ //
+ // try#1 try#2 try#3 try#4
+ // before 1111 1101 0111 1101 0000 0010 0000 0000
+ // after 0110 1101 0111 1101 0000 0010 0000 0000
+ //
+ // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1
+ // My assumption: RegB = (RegB & 01111111b)
+ if (rtc_updating()) {
+ init_rtc();
+ SetCF(iret_addr.flags);
+ break;
+ }
+ outb_cmos(0x09, regs.u.r8.cl); // Year
+ outb_cmos(0x08, regs.u.r8.dh); // Month
+ outb_cmos(0x07, regs.u.r8.dl); // Day of Month
+ outb_cmos(0x32, regs.u.r8.ch); // Century
+ val8 = inb_cmos(0x0b) & 0x7f; // clear halt-clock bit
+ outb_cmos(0x0b, val8);
+ regs.u.r8.ah = 0;
+ regs.u.r8.al = val8; // AL = val last written to Reg B
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 6: // Set Alarm Time in CMOS
+ // Using a debugger, I notice the following masking/setting
+ // of bits in Status Register B, by setting Reg B to
+ // a few values and getting its value after INT 1A was called.
+ //
+ // try#1 try#2 try#3
+ // before 1101 1111 0101 1111 0000 0000
+ // after 0110 1111 0111 1111 0010 0000
+ //
+ // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1
+ // My assumption: RegB = ((RegB & 01111111b) | 00100000b)
+ val8 = inb_cmos(0x0b); // Get Status Reg B
+ regs.u.r16.ax = 0;
+ if (val8 & 0x20) {
+ // Alarm interrupt enabled already
+ SetCF(iret_addr.flags); // Error: alarm in use
+ break;
+ }
+ if (rtc_updating()) {
+ init_rtc();
+ // fall through as if an update were not in progress
+ }
+ outb_cmos(0x01, regs.u.r8.dh); // Seconds alarm
+ outb_cmos(0x03, regs.u.r8.cl); // Minutes alarm
+ outb_cmos(0x05, regs.u.r8.ch); // Hours alarm
+ outb(0xa1, inb(0xa1) & 0xfe); // enable IRQ 8
+ // enable Status Reg B alarm bit, clear halt clock bit
+ outb_cmos(0x0b, (val8 & 0x7f) | 0x20);
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 7: // Turn off Alarm
+ // Using a debugger, I notice the following masking/setting
+ // of bits in Status Register B, by setting Reg B to
+ // a few values and getting its value after INT 1A was called.
+ //
+ // try#1 try#2 try#3 try#4
+ // before 1111 1101 0111 1101 0010 0000 0010 0010
+ // after 0100 0101 0101 0101 0000 0000 0000 0010
+ //
+ // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1
+ // My assumption: RegB = (RegB & 01010111b)
+ val8 = inb_cmos(0x0b); // Get Status Reg B
+ // clear clock-halt bit, disable alarm bit
+ outb_cmos(0x0b, val8 & 0x57); // disable alarm bit
+ regs.u.r8.ah = 0;
+ regs.u.r8.al = val8; // val last written to Reg B
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ default:
+ BX_DEBUG_INT1A("int1a: AX=%04x unsupported\n", regs.u.r16.ax);
+ SetCF(iret_addr.flags); // Unsupported
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/vbdmismi.inc b/src/VBox/Devices/PC/BIOS/vbdmismi.inc
new file mode 100644
index 00000000..3581bed9
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/vbdmismi.inc
@@ -0,0 +1,27 @@
+; $Id: vbdmismi.inc $
+;; @file
+; DMI and SMBIOS definitions for VBox.
+;
+
+;
+; Copyright (C) 2006-2020 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;; TODO: make dynamic
+
+VBOX_DMI_TABLE_BASE equ 0E1000h
+VBOX_DMI_TABLE_VER equ 25h
+VBOX_DMI_TABLE_SIZE equ 352
+
+VBOX_SMBIOS_MAJOR_VER equ 2
+VBOX_SMBIOS_MINOR_VER equ 5
+VBOX_SMBIOS_MAXSS equ 0FFh
+
diff --git a/src/VBox/Devices/PC/BIOS/vds.c b/src/VBox/Devices/PC/BIOS/vds.c
new file mode 100644
index 00000000..1d8b95cc
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/vds.c
@@ -0,0 +1,118 @@
+/* $Id: vds.c $ */
+/** @file
+ * Utility routines for calling the Virtual DMA Services.
+ */
+
+/*
+ * Copyright (C) 2011-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "vds.h"
+
+typedef struct {
+ uint8_t major; /* VDS spec major version number. */
+ uint8_t minor; /* VDS spec minor version number. */
+ uint16_t flags; /* Capabilities/status flags. */
+ uint16_t prod_no; /* Product number. */
+ uint16_t prod_rev; /* Product revision number. */
+ uint32_t max_buf; /* Maximum buffer size supported. */
+} vds_ver;
+
+int vds_is_present( void )
+{
+ uint8_t __far *vds_flags;
+
+ vds_flags = MK_FP( 0x40, VDS_FLAGS_OFS );
+ return( !!(*vds_flags & VDS_PRESENT) );
+}
+
+int vds_lock_sg( vds_edds __far *edds );
+#pragma aux vds_lock_sg = \
+ "mov ax, 8105h" \
+ "mov dx, 0" \
+ "int 4Bh" \
+ "jc error" \
+ "xor al, al" \
+ "error:" \
+ "cbw" \
+ parm [es di] value [ax];
+
+int vds_unlock_sg( vds_edds __far *edds );
+#pragma aux vds_unlock_sg = \
+ "mov ax, 8106h" \
+ "mov dx, 0" \
+ "int 4Bh" \
+ "jc error" \
+ "xor al, al" \
+ "error:" \
+ "cbw" \
+ parm [es di] value [ax];
+
+
+/*
+ * Convert a real mode 16:16 segmented address to a simple 32-bit
+ * linear address.
+ */
+uint32_t vds_real_to_lin( void __far *ptr )
+{
+ return( ((uint32_t)FP_SEG( ptr ) << 4) + FP_OFF( ptr ) );
+}
+
+/*
+ * Build a VDS-style scatter/gather list, regardless of whether VDS is
+ * present or not. This routine either calls VDS to do the work or
+ * trivially creates the list if no remapping is needed.
+ */
+int vds_build_sg_list( vds_edds __far *edds, void __far *buf, uint32_t len )
+{
+ int rc;
+
+ /* NB: The num_avail field in the EDDS must be set correctly! */
+ edds->region_size = len;
+ edds->offset = vds_real_to_lin( buf );
+ edds->seg_sel = 0; /* Indicates a linear address. */
+ if( vds_is_present() ) {
+ /* VDS is present, use it. */
+ rc = vds_lock_sg( edds );
+ } else {
+ /* No VDS, do it ourselves with one S/G entry. */
+ edds->num_used = 1;
+ edds->u.sg[0].phys_addr = edds->offset;
+ edds->u.sg[0].size = len;
+ rc = VDS_SUCCESS;
+ }
+ return( rc );
+}
+
+/*
+ * Free a VDS-style scatter/gather list, regardless of whether VDS
+ * is present or not.
+ */
+int vds_free_sg_list( vds_edds __far *edds )
+{
+ int rc;
+
+ if( vds_is_present() ) {
+ /* VDS is present, use it. */
+ rc = vds_unlock_sg( edds );
+ } else {
+ /* No VDS, not much to do. */
+ /* We could check here if the EDDS had in fact been built by us.
+ * But if VDS really went away, what can we do about it anyway?
+ */
+ rc = VDS_SUCCESS;
+ }
+ edds->num_used = 0;
+ return( rc );
+}
diff --git a/src/VBox/Devices/PC/BIOS/vds.h b/src/VBox/Devices/PC/BIOS/vds.h
new file mode 100644
index 00000000..32c9ba65
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/vds.h
@@ -0,0 +1,122 @@
+/* $Id: vds.h $ */
+/** @file
+ * Utility routines for calling the Virtual DMA Services.
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_vds_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_vds_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+/* Virtual DMA Services (VDS) */
+
+#define VDS_FLAGS_OFS 0x7B /* Offset of VDS flag byte in BDA. */
+#define VDS_PRESENT 0x20 /* The VDS present bit. */
+
+/** The DMA descriptor data structure. */
+typedef struct
+{
+ uint32_t region_size; /* Region size in bytes. */
+ uint32_t offset; /* Offset. */
+ uint16_t seg_sel; /* Segment selector. */
+ uint16_t buf_id; /* Buffer ID. */
+ uint32_t phys_addr; /* Physical address. */
+} vds_dds;
+
+
+/** Scatter/gather descriptor entry. */
+typedef struct
+{
+ uint32_t phys_addr; /* Physical address. */
+ uint32_t size; /* Entry size. */
+} vds_sg;
+
+/** The extended DDS for scatter/gather.
+ * Note that the EDDS contains either S/G descriptors or x86-style PTEs.
+ */
+typedef struct
+{
+ uint32_t region_size; /* Region size in bytes. */
+ uint32_t offset; /* Offset. */
+ uint16_t seg_sel; /* Segment or selector. */
+ uint16_t resvd; /* Reserved. */
+ uint16_t num_avail; /* Number of entries available. */
+ uint16_t num_used; /* Number of entries used. */
+ union
+ {
+ vds_sg sg[1]; /* S/G entry array. */
+ uint32_t pte[1]; /* Page table entry array. */
+ } u;
+} vds_edds;
+
+
+/* VDS services */
+
+#define VDS_SERVICE 0x81
+
+#define VDS_GET_VERSION 0x02 /* Get version */
+#define VDS_LOCK_BUFFER 0x03 /* Lock DMA buffer region */
+#define VDS_UNLOCK_BUFFER 0x04 /* Unlock DMA buffer region */
+#define VDS_SG_LOCK 0x05 /* Scatter/gather lock region */
+#define VDS_SG_UNLOCK 0x06 /* Scatter/gather unlock region */
+#define VDS_REQUEST_BUFFER 0x07 /* Request DMA buffer */
+#define VDS_RELEASE_BUFFER 0x08 /* Release DMA buffer */
+#define VDS_BUFFER_COPYIN 0x09 /* Copy into DMA buffer */
+#define VDS_BUFFER_COPYOUT 0x0A /* Copy out of DMA buffer */
+#define VDS_DISABLE_DMA_XLAT 0x0B /* Disable DMA translation */
+#define VDS_ENABLE_DMA_XLAT 0x0C /* Enable DMA translation */
+
+/* VDS error codes */
+
+#define VDS_SUCCESS 0x00 /* No error */
+#define VDS_ERR_NOT_CONTIG 0x01 /* Region not contiguous */
+#define VDS_ERR_BOUNDRY_CROSS 0x02 /* Rgn crossed phys align boundary */
+#define VDS_ERR_CANT_LOCK 0x03 /* Unable to lock pages */
+#define VDS_ERR_NO_BUF 0x04 /* No buffer available */
+#define VDS_ERR_RGN_TOO_BIG 0x05 /* Region too large for buffer */
+#define VDS_ERR_BUF_IN_USE 0x06 /* Buffer currently in use */
+#define VDS_ERR_RGN_INVALID 0x07 /* Invalid memory region */
+#define VDS_ERR_RGN_NOT_LOCKED 0x08 /* Region was not locked */
+#define VDS_ERR_TOO_MANY_PAGES 0x09 /* Num pages greater than table len */
+#define VDS_ERR_INVALID_ID 0x0A /* Invalid buffer ID */
+#define VDS_ERR_BNDRY_VIOL 0x0B /* Buffer boundary violated */
+#define VDS_ERR_INVAL_DMACHN 0x0C /* Invalid DMA channel number */
+#define VDS_ERR_COUNT_OVRFLO 0x0D /* Disable count overflow */
+#define VDS_ERR_COUNT_UNDRFLO 0x0E /* Disable count underflow */
+#define VDS_ERR_UNSUPP_FUNC 0x0F /* Function not supported */
+#define VDS_ERR_BAD_FLAG 0x10 /* Reserved flag bits set in DX */
+
+/* VDS option flags */
+
+#define VDSF_AUTOCOPY 0x02 /* Automatic copy to/from buffer */
+#define VDSF_NOALLOC 0x04 /* Disable auto buffer allocation */
+#define VDSF_NOREMAP 0x08 /* Disable auto remap feature */
+#define VDSF_NO64K 0x10 /* Region can't cross 64K boundary */
+#define VDSF_NO128K 0x20 /* Region can't cross 128K boundary */
+#define VDSF_COPYTBL 0x40 /* Copy page table for S/G remap */
+#define VDSF_NPOK 0x80 /* Allow non-present pages for S/G */
+
+/* Higher level routines for utilizing VDS. */
+
+int vds_build_sg_list( vds_edds __far *edds, void __far *buf, uint32_t len );
+int vds_free_sg_list( vds_edds __far *edds );
+
+/* Helper for translating 16:16 real mode addresses to 32-bit linear. */
+
+uint32_t vds_real_to_lin( void __far *ptr );
+
+#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_vds_h */
+
diff --git a/src/VBox/Devices/PC/BIOS/virtio.c b/src/VBox/Devices/PC/BIOS/virtio.c
new file mode 100644
index 00000000..94123644
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/virtio.c
@@ -0,0 +1,1184 @@
+/* $Id: virtio.c $ */
+/** @file
+ * VirtIO-SCSI host adapter driver to boot from disks.
+ */
+
+/*
+ * Copyright (C) 2019-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "ebda.h"
+#include "inlines.h"
+#include "pciutil.h"
+#include "vds.h"
+#include "scsi.h"
+
+//#define DEBUG_VIRTIO 1
+#if DEBUG_VIRTIO
+# define DBG_VIRTIO(...) BX_INFO(__VA_ARGS__)
+#else
+# define DBG_VIRTIO(...)
+#endif
+
+#define VBSCSI_MAX_DEVICES 16 /* Maximum number of devices a SCSI device currently supported. */
+
+/* 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 5 max. */
+ virtio_q_desc_t aDescTbl[5];
+ /** 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;
+ /** Saved high bits of EAX. */
+ uint16_t saved_eax_hi;
+ /** 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_NO_DEVICE 0xffff
+
+#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
+
+/* 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(virtio_t __far *virtio)
+{
+ virtio->saved_eax_hi = eax_hi_rd();
+}
+
+void inline high_bits_restore(virtio_t __far *virtio)
+{
+ eax_hi_wr(virtio->saved_eax_hi);
+}
+
+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));
+}
+
+/**
+ * Allocates 1K of conventional memory.
+ */
+static uint16_t virtio_mem_alloc(void)
+{
+ uint16_t base_mem_kb;
+ uint16_t virtio_seg;
+
+ base_mem_kb = read_word(0x00, 0x0413);
+
+ DBG_VIRTIO("VirtIO: %dK of base mem\n", base_mem_kb);
+
+ if (base_mem_kb == 0)
+ return 0;
+
+ base_mem_kb--; /* Allocate one block. */
+ virtio_seg = (((uint32_t)base_mem_kb * 1024) >> 4); /* Calculate start segment. */
+
+ write_word(0x00, 0x0413, base_mem_kb);
+
+ return virtio_seg;
+}
+
+/**
+ * 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(virtio_t __far *virtio, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ 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(virtio_t __far *virtio, uint8_t idTgt, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length, uint16_t skip_a,
+ uint16_t skip_b)
+{
+ uint16_t idxUsedOld = virtio->Queue.UsedRing.idxNextUsed;
+ uint8_t idxDesc = 0;
+
+ _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[idxDesc].GCPhysBufLow = virtio_addr_to_phys(&virtio->ScsiReqHdr);
+ virtio->Queue.aDescTbl[idxDesc].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[idxDesc].cbBuf = sizeof(virtio->ScsiReqHdr);
+ virtio->Queue.aDescTbl[idxDesc].fFlags = VIRTIO_Q_DESC_F_NEXT;
+ virtio->Queue.aDescTbl[idxDesc].idxNext = 1;
+ idxDesc++;
+
+ /* No data out buffer, the status comes right after this in the next descriptor. */
+ virtio->Queue.aDescTbl[idxDesc].GCPhysBufLow = virtio_addr_to_phys(&virtio->ScsiReqSts);
+ virtio->Queue.aDescTbl[idxDesc].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[idxDesc].cbBuf = sizeof(virtio->ScsiReqSts);
+ virtio->Queue.aDescTbl[idxDesc].fFlags = VIRTIO_Q_DESC_F_WRITE | VIRTIO_Q_DESC_F_NEXT;
+ virtio->Queue.aDescTbl[idxDesc].idxNext = 2;
+ idxDesc++;
+
+ /* Prepend a sinkhole if data is skipped upfront. */
+ if (skip_b)
+ {
+ virtio->Queue.aDescTbl[idxDesc].GCPhysBufLow = 0; /* See ahci.c:sink_buf_phys */
+ virtio->Queue.aDescTbl[idxDesc].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[idxDesc].cbBuf = skip_b;
+ virtio->Queue.aDescTbl[idxDesc].fFlags = VIRTIO_Q_DESC_F_WRITE | VIRTIO_Q_DESC_F_NEXT;
+ virtio->Queue.aDescTbl[idxDesc].idxNext = idxDesc + 1;
+ idxDesc++;
+ }
+
+ virtio->Queue.aDescTbl[idxDesc].GCPhysBufLow = virtio_addr_to_phys(buffer);
+ virtio->Queue.aDescTbl[idxDesc].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[idxDesc].cbBuf = length;
+ virtio->Queue.aDescTbl[idxDesc].fFlags = VIRTIO_Q_DESC_F_WRITE; /* End of chain. */
+ virtio->Queue.aDescTbl[idxDesc].idxNext = skip_a ? idxDesc + 1 : 0;
+ idxDesc++;
+
+ /* Append a sinkhole if data is skipped at the end. */
+ if (skip_a)
+ {
+ virtio->Queue.aDescTbl[idxDesc - 1].fFlags |= VIRTIO_Q_DESC_F_NEXT;
+ virtio->Queue.aDescTbl[idxDesc - 1].idxNext = idxDesc;
+
+ virtio->Queue.aDescTbl[idxDesc].GCPhysBufLow = 0; /* See ahci.c:sink_buf_phys */
+ virtio->Queue.aDescTbl[idxDesc].GCPhysBufHigh = 0;
+ virtio->Queue.aDescTbl[idxDesc].cbBuf = skip_a;
+ virtio->Queue.aDescTbl[idxDesc].fFlags = VIRTIO_Q_DESC_F_WRITE; /* End of chain. */
+ virtio->Queue.aDescTbl[idxDesc].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;
+}
+
+/**
+ * Read sectors from an attached VirtIO SCSI device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int virtio_scsi_read_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint8_t rc;
+ cdb_rw16 cdb;
+ uint32_t count;
+ uint8_t target_id;
+ uint8_t device_id;
+
+ device_id = VBOX_GET_SCSI_DEVICE(bios_dsk->drqp.dev_id);
+ if (device_id > BX_MAX_SCSI_DEVICES)
+ BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
+
+ count = bios_dsk->drqp.nsect;
+
+ high_bits_save(bios_dsk->virtio_seg :> 0);
+ /* 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;
+
+
+ target_id = bios_dsk->scsidev[device_id].target_id;
+
+ DBG_VIRTIO("%s: reading %u sectors, device %d, target %d\n", __func__,
+ count, device_id, bios_dsk->scsidev[device_id].target_id);
+
+ rc = virtio_scsi_cmd_data_in(bios_dsk->virtio_seg :> 0, target_id, (void __far *)&cdb, 16,
+ bios_dsk->drqp.buffer, (count * 512L), 0, 0);
+
+ if (!rc)
+ {
+ bios_dsk->drqp.trsfsectors = count;
+ bios_dsk->drqp.trsfbytes = count * 512L;
+ }
+ DBG_VIRTIO("%s: transferred %u sectors\n", __func__, bios_dsk->drqp.nsect);
+ high_bits_restore(bios_dsk->virtio_seg :> 0);
+
+ return rc;
+}
+
+/**
+ * Write sectors to an attached VirtIO SCSI device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int virtio_scsi_write_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint8_t rc;
+ cdb_rw16 cdb;
+ uint32_t count;
+ uint8_t target_id;
+ uint8_t device_id;
+
+ device_id = VBOX_GET_SCSI_DEVICE(bios_dsk->drqp.dev_id);
+ if (device_id > BX_MAX_SCSI_DEVICES)
+ BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
+
+ count = bios_dsk->drqp.nsect;
+
+ high_bits_save(bios_dsk->virtio_seg :> 0);
+
+ /* 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;
+
+ target_id = bios_dsk->scsidev[device_id].target_id;
+
+ DBG_VIRTIO("%s: writing %u sectors, device %d, target %d\n", __func__,
+ count, device_id, bios_dsk->scsidev[device_id].target_id);
+
+ rc = virtio_scsi_cmd_data_out(bios_dsk->virtio_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_VIRTIO("%s: transferred %u sectors\n", __func__, bios_dsk->drqp.nsect);
+ high_bits_restore(bios_dsk->virtio_seg :> 0);
+
+ return rc;
+}
+
+#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 skip_b How much to skip before reading into the provided data buffer.
+ * @param length How much to transfer.
+ * @param inout Read/Write direction indicator.
+ * @param buffer Data buffer to store the data from the device in.
+ */
+uint16_t virtio_scsi_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t skip_b, uint32_t length, uint8_t inout, char __far *buffer)
+{
+ bio_dsk_t __far *bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+ uint8_t rc;
+ uint8_t target_id;
+
+ /* Data out is currently not supported. */
+ if (inout == ATA_DATA_OUT) {
+ BX_INFO("%s: DATA_OUT not supported yet\n", __func__);
+ return 1;
+ }
+
+ /* The skip length must be even. */
+ if (skip_b & 1) {
+ DBG_VIRTIO("%s: skip must be even (%04x)\n", __func__, skip_b);
+ return 1;
+ }
+
+ /* Convert to SCSI specific device number. */
+ device_id = VBOX_GET_SCSI_DEVICE(device_id);
+
+ DBG_VIRTIO("%s: reading %lu bytes, skip %u/%u, device %d, target %d\n", __func__,
+ length, bios_dsk->drqp.skip_b, bios_dsk->drqp.skip_a,
+ device_id, bios_dsk->scsidev[device_id].target_id);
+ DBG_VIRTIO("%s: reading %u %u-byte sectors\n", __func__,
+ bios_dsk->drqp.nsect, bios_dsk->drqp.sect_sz);
+
+ high_bits_save(bios_dsk->virtio_seg :> 0);
+ 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_VIRTIO("%s: reading %u bytes, device %d, target %d\n", __func__,
+ length, device_id, bios_dsk->scsidev[device_id].target_id);
+
+ rc = virtio_scsi_cmd_data_in(bios_dsk->virtio_seg :> 0, target_id, (void __far *)cmdbuf, cmdlen,
+ bios_dsk->drqp.buffer, length, skip_b, bios_dsk->drqp.skip_a);
+ if (!rc)
+ bios_dsk->drqp.trsfbytes = length;
+
+ DBG_VIRTIO("%s: transferred %u bytes\n", __func__, length);
+ high_bits_restore(bios_dsk->virtio_seg :> 0);
+
+ return rc;
+}
+
+static int virtio_scsi_detect_devices(virtio_t __far *virtio)
+{
+ 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;
+
+ _fmemset(buffer, 0, sizeof(buffer));
+
+ rc = virtio_scsi_cmd_data_in(virtio, i, aCDB, 6, buffer, 5, 0, 0);
+ if (!rc)
+ {
+ devcount_scsi = bios_dsk->scsi_devcount;
+
+ /* Check the attached device. */
+ if ( ((buffer[0] & 0xe0) == 0)
+ && ((buffer[0] & 0x1f) == 0x00))
+ {
+ DBG_VIRTIO("%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 = virtio_scsi_cmd_data_in(virtio, i, aCDB, 16, buffer, 32, 0, 0);
+ if (rc != 0)
+ BX_PANIC("%s: SCSI_READ_CAPACITY failed\n", __func__);
+
+ /* The value returned is the last addressable LBA, not
+ * the size, which what "+ 1" is for.
+ */
+ sectors = swap_64(*(uint64_t *)buffer) + 1;
+
+ sector_size = ((uint32_t)buffer[8] << 24)
+ | ((uint32_t)buffer[9] << 16)
+ | ((uint32_t)buffer[10] << 8)
+ | ((uint32_t)buffer[11]);
+
+ /* We only support the disk if sector size is 512 bytes. */
+ if (sector_size != 512)
+ {
+ /* Leave a log entry. */
+ BX_INFO("Disk %d has an unsupported sector size of %u\n", i, sector_size);
+ continue;
+ }
+
+ /* Get logical CHS geometry. */
+ switch (devcount_scsi)
+ {
+ case 0:
+ cmos_base = 0x90;
+ break;
+ case 1:
+ cmos_base = 0x98;
+ break;
+ case 2:
+ cmos_base = 0xA0;
+ break;
+ case 3:
+ cmos_base = 0xA8;
+ break;
+ default:
+ cmos_base = 0;
+ }
+
+ if (cmos_base && inb_cmos(cmos_base + 7))
+ {
+ /* If provided, grab the logical geometry from CMOS. */
+ cylinders = inb_cmos(cmos_base + 0) + (inb_cmos(cmos_base + 1) << 8);
+ heads = inb_cmos(cmos_base + 2);
+ sectors_per_track = inb_cmos(cmos_base + 7);
+ }
+ else
+ {
+ /* Calculate default logical geometry. NB: Very different
+ * from default ATA/SATA logical geometry!
+ */
+ if (sectors >= (uint32_t)4 * 1024 * 1024)
+ {
+ heads = 255;
+ sectors_per_track = 63;
+ /* Approximate x / (255 * 63) using shifts */
+ t = (sectors >> 6) + (sectors >> 12);
+ cylinders = (t >> 8) + (t >> 16);
+ }
+ else if (sectors >= (uint32_t)2 * 1024 * 1024)
+ {
+ heads = 128;
+ sectors_per_track = 32;
+ cylinders = sectors >> 12;
+ }
+ else
+ {
+ heads = 64;
+ sectors_per_track = 32;
+ cylinders = sectors >> 11;
+ }
+ }
+
+ /* Calculate index into the generic disk table. */
+ hd_index = devcount_scsi + BX_MAX_ATA_DEVICES;
+
+ bios_dsk->scsidev[devcount_scsi].target_id = i;
+ bios_dsk->devices[hd_index].type = DSK_TYPE_VIRTIO_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].target_id = i;
+ bios_dsk->devices[hd_index].type = DSK_TYPE_VIRTIO_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_VIRTIO("%s: No supported device detected at %d\n", __func__, i);
+ }
+ else
+ DBG_VIRTIO("%s: INQUIRY failed with %u\n", __func__, rc);
+
+ bios_dsk->scsi_devcount = devcount_scsi;
+ }
+
+ return 0;
+}
+
+/**
+ * Initializes the VirtIO SCSI HBA and detects attached devices.
+ */
+static int virtio_scsi_hba_init(uint8_t u8Bus, uint8_t u8DevFn, uint8_t u8PciCapOffVirtIo)
+{
+ uint8_t u8PciCapOff;
+ uint16_t ebda_seg;
+ uint16_t virtio_seg;
+ uint8_t u8DevStat;
+ bio_dsk_t __far *bios_dsk;
+ virtio_t __far *virtio;
+
+ ebda_seg = read_word(0x0040, 0x000E);
+ bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+ /* Allocate 1K of base memory. */
+ virtio_seg = virtio_mem_alloc();
+ if (virtio_seg == 0)
+ {
+ DBG_VIRTIO("VirtIO: Could not allocate 1K of memory, can't boot from controller\n");
+ return 0;
+ }
+ DBG_VIRTIO("VirtIO: virtio_seg=%04x, size=%04x, pointer at EBDA:%04x (EBDA size=%04x)\n",
+ virtio_seg, sizeof(virtio_t), (uint16_t)&EbdaData->bdisk.virtio_seg, sizeof(ebda_data_t));
+
+ bios_dsk->virtio_seg = virtio_seg;
+
+ virtio = virtio_seg :> 0;
+ 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 0;
+ }
+
+ 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 0;
+ }
+
+ /* 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 virtio_scsi_detect_devices(virtio);
+}
+
+/**
+ * Init the VirtIO SCSI driver and detect attached disks.
+ */
+void BIOSCALL virtio_scsi_init(void)
+{
+ uint16_t busdevfn;
+
+ busdevfn = pci_find_device(0x1af4, 0x1048);
+ if (busdevfn != VBOX_VIRTIO_NO_DEVICE)
+ {
+ uint8_t u8Bus, u8DevFn;
+ uint8_t u8PciCapOff;
+ uint8_t u8PciCapOffVirtIo = VBOX_VIRTIO_NIL_CFG;
+ uint8_t u8PciCapVirtioSeen = 0;
+
+ u8Bus = (busdevfn & 0xff00) >> 8;
+ u8DevFn = busdevfn & 0x00ff;
+
+ DBG_VIRTIO("VirtIO SCSI HBA at Bus %u DevFn 0x%x (raw 0x%x)\n", u8Bus, u8DevFn, busdevfn);
+
+ /* 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)
+ {
+ int rc;
+
+ 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);
+
+ rc = virtio_scsi_hba_init(u8Bus, u8DevFn, u8PciCapOffVirtIo);
+ }
+ else
+ DBG_VIRTIO("VirtIO SCSI HBA with no usable PCI config access!\n");
+ }
+ else
+ DBG_VIRTIO("No VirtIO SCSI HBA!\n");
+}