diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 14:19:18 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 14:19:18 +0000 |
commit | 4035b1bfb1e5843a539a8b624d21952b756974d1 (patch) | |
tree | f1e9cd5bf548cbc57ff2fddfb2b4aa9ae95587e2 /src/VBox/Devices/PC/BIOS | |
parent | Initial commit. (diff) | |
download | virtualbox-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')
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"); +} |